签到天数: 1980 天 [LV.Master]伴坛终老
|
+ a* c* {/ I S) x$ Y当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档/ A$ _7 ]% V$ W/ b8 ~
- h& g( B% x) c' z3 Q# P- J2 |; }这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧4 \/ e4 p# ` I8 }7 G
3 ]" w& [! B# F. g7 L/ ?; d(一)准备工具:6 K4 ^1 h# Z5 T$ d" Q
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例5 g8 X6 c3 N! c$ Z5 h& F4 B1 Z) `' l
% b+ t4 l9 `. J+ BARMIPS作者是Kingcom, P/ d4 }! L/ I
ARMIPS源代码github页面:https://github.com/Kingcom/armips+ D- G5 g' k$ {" _6 ^2 e
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
, c. d$ Y2 q0 ]) M4 Z2 L/ f$ V- @+ S( l" Z6 ^4 M7 _! q
2.一个将图片转换为二进制bin文件的工具bimbo 1.3. ~' f' l& j" x
- K$ ~: I# z- R4 h+ n# C! Z4 x3 pbimbo 1.3作者是Aleksi Eeben
1 [+ d( b8 d0 E1 \3 V" j8 U9 A8 J$ [9 S% `4 i0 B: r; a" x& v" X
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
# q. Y+ n; E( w1 ~; ]5 ?- ~, }( a' W0 \
3.一个windows自带的画图或其他图形编辑工具9 Q4 u' r) ]7 L, ~& @% g
. P$ |& u% N! m* t! o4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
3 c: w/ Q7 m M9 O
: f3 L. n/ c7 {2 A: G(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
& B+ t# d2 }7 B) R' ?9 Q: H& m7 m7 O& i+ F6 r4 Z4 V
9 J" g* k9 R0 f& N& C! d
9 c; ] S* Y3 p% D3 g1 m(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 h; A+ }$ u8 ^% g
3 ^, I6 n4 D0 x8 D1 o s! X. `$ E: R& Z: K
! q: T; n2 o7 h/ A0 h1 o8 H# v(4)新建一个文本,我起名为16pic.asm,文本内容如下:. D0 h+ o1 {7 i2 x. A
- ;创建新文件16pic_demo.gba,文件起始地址是0x080000002 n5 h2 }* c# `6 Y
- .create "16pic_demo.gba",0x08000000
! @, ]+ \/ v$ c3 J% \1 E4 W2 N8 c - ;设置为GBA架构) H% `" s2 C" \
- .gba
# I+ M9 t- \- q% T0 [$ ~ - ;设置为ARM模式
0 b y, s7 R6 s - .arm' N5 f, \& M b% I! T, b
- ;设置起始地址是0x08000000
) M+ g8 |; ]" K/ Y - .org 0x08000000
! s, ^( f/ l" u - ;创建长度为0xC0文件头数据区域
& d% j( y" Z/ l' n - .area 0xC0
9 w- P! t, m4 I. ?9 I' S8 G - ;填充文件头数据3 y6 M- h+ W$ T2 j H' X
- .fill 0xC0,0x00
+ m' Y/ ?5 d4 z2 _3 D - ;区域结束
5 r; k% o. H4 a% Q+ T; ?! X. U5 M - .endarea
0 k( y3 O2 w7 G/ d - ;主程序
0 ?' s* M, F7 W# n* _ u4 _ - main:+ D( {' `% m; ]" S6 W7 {( ~& u; k
- ;设置屏幕模式3,BG2开启
$ Y( O4 A$ y2 q2 A! _ - mov r0,0x040000007 a2 F$ A2 E$ E4 G, v, q( I
- mov r1,0x0400" P6 V+ D9 ?4 M0 O! C1 [6 |# v
- add r1,r1,0x3
0 `% S* {5 Y n' {4 R0 R6 n - strh r1,[r0]
e2 P# j' l+ U$ I4 ?1 k - ;设置VRAM起始地址+ h; A; \- `: R$ P
- mov r0,0x06000000* `. H, N* K, k- L
- ;设置图片地址! X- N8 Z1 X/ t0 x
- ldr r1,=pic, g% {3 @0 q, M3 b' w0 {
- ;设置数据长度为0x9600
) T# o" ]7 L9 n( R1 F% L7 A# U: Z - mov r2,0x9600
4 ~# {: @1 }8 Y% I) t, W1 b) @ - ;传送图片数据到VRAM+ Z1 a d G* _: E9 Y. ^9 b
- loopl:7 T# x. h- a; B
- ldrh r3,[r1],0x2
L( A! {4 N: o( d8 {: _+ b; b- c" r - strh r3,[r0],0x2
: S7 p+ }/ C; c+ t/ d9 K# D3 b% g - subs r2,r2,0x1% y1 a4 `4 L% V: c9 @
- bne loopl
1 F: b, H! U5 i0 U- _; d6 i - ;进入死循环
# n6 d1 N F" w( R, V- s - infin:
3 K& c0 t, Q" z/ }, _. u, z! B - b infin9 K' {. x) F: P1 B$ j7 K# f
- .pool
! m" A2 S2 T2 F% v+ _; ? - ;导入图片二进制数据2 u" ^9 a, x( }, g
- pic:: @: H/ p7 v+ X/ h: V5 z: D
- .incbin "16pic.bin"
4 N& N' x( ]7 B4 \1 `* {2 o - ;在0x08000000地址设置跳转到主程序入口# y) N" b9 S- `5 [: b
- .org 0x080000002 Y& v) y4 C1 s' a: o9 i; q4 c
- b main
- E( C/ T0 ?, i& {/ w - ;关闭文件% Y& ^( q+ Q5 Q; o# n9 T( D9 `
- .close
) E4 {. n0 h$ f0 S3 Y
复制代码
5 J6 t# V: W0 @# ?, Q2 A" e1 G保存!# \0 \ x) c1 h) ?
& v, X" C" m6 Q" y(5)把16pic.asm和16pic.bin复制到armips目录下
& i; k; l$ D7 y* D. t! O9 T) H4 d/ u. f ]5 l/ G: F4 F {/ P& Y
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件- ^4 v0 Q) m/ B2 E
2 w+ G' [# ^5 i. c/ r(7)用GBA模拟器打开16pic_demo.gba观看效果
1 h( M; A! e J/ ^# [, c, G+ e
_' r" k/ w$ ^ E Z" N3 b: T
3 {0 S7 f; X. B* M8 ?
- i& v4 K1 a: O1 B关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
! ~6 x0 d o* L, d |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|