签到天数: 2160 天 [LV.Master]伴坛终老
|
6 {" j, B P8 e. O4 h: |/ T) P
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档, X" E, t$ a# H* R( b& L, Y
. `* U0 j" A9 O; i+ F. R这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧; L) n; G# s3 q8 u
& J' N6 Q# S* r1 I; w
(一)准备工具:% H5 h: F$ Z! p# y4 Z! M1 k8 s
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例( p2 D2 O& c/ L$ e6 |5 V7 w+ W
1 e: V, }( } Z, E* m4 p3 ?9 l) ^ARMIPS作者是Kingcom- v; ^; Q, l# [
ARMIPS源代码github页面:https://github.com/Kingcom/armips$ Y$ R$ ?% W! ~) G& n% h
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips! o8 ^2 }8 q! Y5 [9 j* U( D( P
1 c# A, _; U* h/ ^
2.一个将图片转换为二进制bin文件的工具bimbo 1.30 }& ^; h! i3 I9 B! T
% l0 r. w H/ J, v. Q
bimbo 1.3作者是Aleksi Eeben+ p. U( ` H* i. z: L
5 m: s: r4 S- Z J5 j" k; a2 U \! T' U
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167+ a4 M: d& B$ x% ^
2 d: A6 `) P$ [% K' v! q* D3.一个windows自带的画图或其他图形编辑工具( l6 N Q8 X1 z" t
. K! {* x A3 o# J! l8 a+ x/ _+ V4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)6 }5 a' X0 B3 l3 V+ p0 ^2 [3 y
9 w) _' J8 B5 U2 K(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
# y: M8 U) f. r8 d
; ^6 s, I; G! C( l. | L. @( _) o
. M4 Y7 B( \: Q3 x b2 P4 X
1 I2 G+ x& m2 B) Y(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin3 k0 W& P4 K9 p$ \& J
4 k5 [. |' H. g' D
* C/ P Y5 G: i# _
* R2 L5 L' t; _3 _5 l) P(4)新建一个文本,我起名为16pic.asm,文本内容如下:
! A- {( ]7 }, D O' P- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
" W. o( R0 C+ L: R0 i$ Q1 k& B1 N6 v - .create "16pic_demo.gba",0x08000000
( U/ r% L9 m' w - ;设置为GBA架构
, v9 i9 Y" R, ^; d - .gba: {: ^/ }9 M4 s
- ;设置为ARM模式
" |# t' T/ _) ^ - .arm
) m, m4 v' p* g - ;设置起始地址是0x08000000
4 E; z( S O6 V( }4 _6 {1 @ - .org 0x080000001 [- Z. g7 l: v: o: c
- ;创建长度为0xC0文件头数据区域6 k5 g0 c! i2 X1 X$ t% f
- .area 0xC04 M" _' k, E6 G& S+ f
- ;填充文件头数据0 R' Y9 D" B7 v8 F/ I
- .fill 0xC0,0x00
7 [; ^- q1 S1 I, ]4 C3 Z - ;区域结束" _6 X& X& T }8 ^2 p9 Y5 M
- .endarea
( ?+ n9 F% `$ } - ;主程序6 x d5 J! g4 ^5 C6 T9 l1 D
- main:
( c7 B. ^, r6 s+ _, F - ;设置屏幕模式3,BG2开启% C& q& e5 H% N6 p3 E3 f
- mov r0,0x040000002 J: B- W9 T7 s l5 ?+ P
- mov r1,0x0400. W; b( P/ f2 @. l
- add r1,r1,0x36 B$ Y. a8 l! ?
- strh r1,[r0]' e! X+ I3 {3 X/ b
- ;设置VRAM起始地址
5 A9 R* D: P9 b( h% _& m) i - mov r0,0x06000000. U9 e6 f' X/ D
- ;设置图片地址% A% `0 t+ i6 Z5 q- V- \/ V& K8 ^
- ldr r1,=pic
% A( y5 F" C; N' q& S) t, f, h, x - ;设置数据长度为0x96000 X& _. [* u- Z7 R% }& |1 I7 F" M
- mov r2,0x9600
' V9 L: F8 ?# O- [' p - ;传送图片数据到VRAM* |0 t" E- ?2 L- x T
- loopl:
! W! [% @$ ~: N4 m$ s - ldrh r3,[r1],0x2
( d$ e: O, o7 ~- `. M - strh r3,[r0],0x2
8 E9 X6 y/ H: ^$ t1 z- C - subs r2,r2,0x1% x4 T) q: {/ n+ v$ ]+ }% X
- bne loopl
% N1 d# W; C) t8 P2 N8 H - ;进入死循环
. [3 W$ `8 q0 }' J - infin:
+ H( s% F8 V* A9 X6 m, J# W - b infin3 O) I. e3 I1 V
- .pool+ _$ h [5 M4 h, p6 S" q
- ;导入图片二进制数据9 Y4 \2 T% v& |8 q/ T9 w; R
- pic:
! p% i& V, _, c' j- q8 E2 g - .incbin "16pic.bin"
7 B. f2 E2 g5 D2 u2 L& n& Z - ;在0x08000000地址设置跳转到主程序入口
& o* ~. G' p- Y - .org 0x08000000
' `% V; C7 U2 M2 m - b main
1 ~$ `. B2 `; D) y - ;关闭文件) G; w5 M: C) z* b$ W: \
- .close
- e2 |: ^: Y$ }
复制代码 3 K2 h. X# Y( _- U
保存!
! [% O8 j: x) f5 Y
9 r0 l0 I3 ?7 v: E$ Y(5)把16pic.asm和16pic.bin复制到armips目录下
7 Y( p& \+ {4 w5 \6 S* p# t* B" F o; C$ N3 Q
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
* {9 X, T! }1 [
1 n5 o' U8 O) G' j(7)用GBA模拟器打开16pic_demo.gba观看效果+ y. I$ d1 |) G( ~# g* _
! `' S6 r1 C. z/ a1 T2 u( j. ^1 k4 d/ K! F+ H/ _6 r; L
{6 A6 t4 w- z& L
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
2 {( k+ U Y6 F3 ?# ` |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|