签到天数: 2164 天 [LV.Master]伴坛终老
|
+ P+ @% J! I* X) y当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档/ T, C3 s- z$ i- e
& ~ ]) y# V$ u* y5 e
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧5 A3 I. Q2 i- J- I
" a5 X+ B' T& [ ?. [3 s$ `3 E9 s/ M
(一)准备工具:
6 l e' r/ i1 H# c. l1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
+ R3 W2 y5 {* w7 F6 G5 x! G
; P. `; `6 J F. t8 j! FARMIPS作者是Kingcom
; H! w. o! v1 ZARMIPS源代码github页面:https://github.com/Kingcom/armips
3 @( P. X( n2 g- r- l- T5 oARMIPS Automated builds页面: http://buildbot.orphis.net/armips9 b6 q( V" k; F6 E* I0 L
9 k6 z9 |& d' H) ?
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
3 h9 }2 \7 ~7 q) A- k' ` T$ B, t
bimbo 1.3作者是Aleksi Eeben# D ]" V4 D- M% |& f( @3 _+ C
1 ] V/ L6 ^8 ?) B, M+ y( _bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167) R$ Q5 G) [3 R/ F9 n; B1 f( O
4 {9 P# n, R) c9 |- L9 e- R: C
3.一个windows自带的画图或其他图形编辑工具
! T9 E0 Q; O9 e9 q- Z2 H) t" B7 e( N! c1 |
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
) R: }# z" \: o4 }: X* m
/ C% ?6 \% F) @* w" O, \; x(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP; P3 N- x! J7 i( t
2 ~9 g% L: s( L- t4 [4 \5 v. } {0 y
D( N) B7 o5 C7 T1 Q2 T% b4 G
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
+ }2 v1 X, }- {" j9 W* r" t* q4 p& F) ^6 L7 J6 S
. l$ f0 V* a! g8 Y6 u) ^8 F" I% k2 j
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
0 `% y' q( G& P! ?' M- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
! x& q: P7 i; N - .create "16pic_demo.gba",0x080000004 `$ {& N$ r! t
- ;设置为GBA架构( ^: X" }$ j1 |8 e( d
- .gba
- @( e: u8 ?# x% c. ]# H - ;设置为ARM模式8 m' N; g4 w; n5 B/ q
- .arm; R+ X! m' [% p# O' b$ J! d8 i
- ;设置起始地址是0x080000007 F0 X7 K7 d5 h4 |
- .org 0x080000002 i& n8 `' I. y3 g( C6 R1 m% A- I
- ;创建长度为0xC0文件头数据区域. w/ }2 v8 s ^/ I8 p I
- .area 0xC0
* A/ A1 q8 E* [5 {3 [5 @ - ;填充文件头数据" M$ i2 z# _. x! M; m
- .fill 0xC0,0x00
% D v# L' l% b, ^! D- V: y6 D - ;区域结束
+ d; U( [, L. L: h/ _+ {+ D; x) p - .endarea
1 D/ l; d. }4 W) T7 O0 B - ;主程序. Y& g" }" |- o3 W5 \1 i
- main:
; B- h; [4 |# J2 ^! j - ;设置屏幕模式3,BG2开启. i5 A& ~' g: X5 n+ E) z
- mov r0,0x040000005 T, U! H6 ?+ T4 D: v# q
- mov r1,0x0400% b. r& @' J: z( }& A; K) ^$ e
- add r1,r1,0x3) R" G7 o: i; B' N% w* u& w6 a; \
- strh r1,[r0]
8 o; {& \, X) a9 O - ;设置VRAM起始地址
5 U0 X4 r. {! l/ w9 M+ u/ r# B - mov r0,0x060000009 Z, i( [ i7 f. V) N; [# }" F
- ;设置图片地址% n/ Z- T: f; c* u. ~/ k
- ldr r1,=pic6 t" a# k& ~3 Z) i5 i* t- M- \
- ;设置数据长度为0x9600
7 O. v+ C8 M+ _0 H, C - mov r2,0x9600
) H7 ^( v. E% n1 [4 G+ K/ Q - ;传送图片数据到VRAM
: ]1 n- M1 t" Y8 Z/ ? - loopl:
/ q6 V: B: `: W - ldrh r3,[r1],0x2
. d+ P! I6 g' J% J - strh r3,[r0],0x2. W( q6 I) f0 J& x
- subs r2,r2,0x1
0 w) M" O3 Z6 f e - bne loopl4 @, W$ v q8 o, Z8 U M
- ;进入死循环* `& v# e( ]' m V$ l
- infin:
7 C: O4 [+ @! J4 }% S* c - b infin) m4 O" K: S5 n* p+ {
- .pool
) z" y4 x; }+ S/ I3 x! V8 _ - ;导入图片二进制数据) k8 D6 L" T, W1 [1 W+ {9 q; m4 a9 t
- pic:
" g- `" e- {; v. M( h/ _4 c - .incbin "16pic.bin": ~- L2 M; b# h" l, e; o
- ;在0x08000000地址设置跳转到主程序入口" Q& t B* m: P4 r* `7 v
- .org 0x08000000
4 F* W1 c. T# L: K - b main0 T- L6 {: o) @" H' x3 R1 `9 }
- ;关闭文件& J E# O `; w& F9 E! ~
- .close
/ H9 D! n9 H; j0 w* Z! G* ^
复制代码 ! Y- i' x7 u$ q$ ?% R1 a* _
保存!
( |4 x5 N3 q. f/ C# e( \
; s- d2 d9 v3 \/ C- f+ n( g% u(5)把16pic.asm和16pic.bin复制到armips目录下' F6 h2 t- I+ U$ E! k- q* ^
2 F& ?) ]- [# }/ {( Z/ z V4 V
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件( N3 u N# q# g8 ~) ~9 b. \
; [ w7 ^% P7 K5 \$ U. H(7)用GBA模拟器打开16pic_demo.gba观看效果3 B# g8 N; J/ M8 o6 M
6 Y3 p" v* J T, A! p* A7 h
* {6 X# y2 y7 q9 Z+ t/ o
7 V3 G: C; t5 G2 e- ` d. }. v关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
4 `+ d/ z6 X! ]7 D, S% p |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|