签到天数: 1865 天 [LV.Master]伴坛终老
|
5 s$ `, E- c, S9 a) |- ]
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
/ H% f2 ]* M0 _: D/ E8 Y: g( s0 r, s' R+ c
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧, c( v |$ G/ a; Q
/ p. q4 a$ N! A- k(一)准备工具:
6 B0 v7 J9 W$ Q7 m* p1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例% Y8 S" T% x- L
) o# e. Y: T1 b5 ZARMIPS作者是Kingcom8 T9 x5 M ?4 S) c
ARMIPS源代码github页面:https://github.com/Kingcom/armips
1 [4 `5 S) \ V- L0 h9 mARMIPS Automated builds页面: http://buildbot.orphis.net/armips( c) ^6 E4 T0 b$ G' U N3 S
: m4 o/ U0 Y o5 y s2.一个将图片转换为二进制bin文件的工具bimbo 1.3( w+ i4 {5 Q/ O" Q8 |: |$ t$ C- ]
: n3 Q& d9 R1 ~1 Qbimbo 1.3作者是Aleksi Eeben
. |& A E5 M5 y) W. v
+ G: | A. o& @$ Kbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167% `3 s4 c: F3 `, X9 J
! D7 I7 u0 k% h. x; h: B* M
3.一个windows自带的画图或其他图形编辑工具
# G, o. U# a: R6 u$ x$ P% T; D6 |. m, g" q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
" o2 t9 s( u6 ~3 t; a
1 g: V+ Y6 L4 h- t(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP; p3 S* I9 \1 j) G+ U% f
# J3 G7 U3 F% n7 K: \1 v% r& A2 c8 z: e
% y* A) q" @: A/ ~# S
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
! {8 @4 I# V$ j# V8 ?- p2 Z
, ^# W, B4 v/ x: ]1 c, O$ N( K: }' |
' @% w+ b5 p4 ?& Z# n3 w
(4)新建一个文本,我起名为16pic.asm,文本内容如下:8 l/ }' B7 p1 _7 D( @* E
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
9 I+ J" T! W; D& B' I - .create "16pic_demo.gba",0x08000000
* N8 _6 h. ?7 j4 z5 F - ;设置为GBA架构3 `) t) f/ s v
- .gba c2 b7 Q a- s! A) E4 U7 B
- ;设置为ARM模式
; v1 K: G( Y$ Z C9 U8 o% n - .arm1 `/ F5 h' O k; s* @
- ;设置起始地址是0x08000000
& H. F' \2 d, p0 q5 L% ^. b - .org 0x08000000
* h, m7 t6 M ~8 @: Q - ;创建长度为0xC0文件头数据区域* S- O2 M3 x+ ]* z
- .area 0xC0. A# t& G" S# |" r Q+ u
- ;填充文件头数据8 K! j ~9 O7 u; j% G5 O) l
- .fill 0xC0,0x00( ? a* H4 g" D8 k! K( t+ V$ K
- ;区域结束
5 c2 h: L' ]4 y: F2 j5 |* o: ? - .endarea+ O" ]* p5 h& F( O2 a! o( ~
- ;主程序3 m% z/ Y9 J- e3 l; M
- main:
4 Q. y( R' L- T0 c0 ?7 s - ;设置屏幕模式3,BG2开启1 L8 b* |( S& B% J) A3 I! p
- mov r0,0x040000001 P- ^& J7 m) A3 b1 v0 f1 G
- mov r1,0x0400, {) \ G0 M+ B' X/ S
- add r1,r1,0x36 m* k& B# g! ^4 i
- strh r1,[r0]' I: P0 k+ t* k1 C8 d3 a
- ;设置VRAM起始地址
" A8 p- ]1 ?7 f' I$ o - mov r0,0x06000000; n- `1 e+ s) v
- ;设置图片地址* w" F! T# Y0 Y8 X0 F( T# ?
- ldr r1,=pic
. W* t6 {2 {2 z - ;设置数据长度为0x9600
+ l/ J( n/ p. u - mov r2,0x9600
$ }/ R. j# R" W: H( Z2 {0 R - ;传送图片数据到VRAM: k& u: _5 o0 D+ o
- loopl:! W9 t1 A u }! _: a1 }: @* x
- ldrh r3,[r1],0x2) k6 u/ V+ q; ^! t! Q6 @& \
- strh r3,[r0],0x2
. o5 G7 l' _$ W; b+ n+ Y - subs r2,r2,0x1
, s- N6 Y1 ?' c - bne loopl9 C, h* @% @0 X2 U0 H! t
- ;进入死循环
3 J7 \1 X. L* @; f- T! `/ x - infin:
( f1 K- o% G b. A2 [3 | - b infin
" e6 u% f, i( a8 q6 h1 [, l - .pool! H' C/ W3 b2 B6 T
- ;导入图片二进制数据6 d0 `/ |( q5 ]
- pic:
' t. @; a) L, W1 |, M3 \ - .incbin "16pic.bin" X( `+ @* H( ]( ?
- ;在0x08000000地址设置跳转到主程序入口5 O/ Z( F% _6 a% _9 f2 u! X2 E. ]
- .org 0x08000000
2 W0 _& D1 j+ i+ x1 h - b main2 {! D. r4 m# W7 U% \0 v
- ;关闭文件5 }- n6 G3 M; i0 x# Q" \
- .close* S6 M5 K- U9 I9 S% M
复制代码
9 V( z( f- J6 T* W& n& O% m: j保存!+ e, n: O% Y$ X; z
$ O8 O a( N& O* O- X5 E' q6 S* u
(5)把16pic.asm和16pic.bin复制到armips目录下1 Z: E% _ E' V0 Y: t
8 z/ N! P3 {: k( B( {' L( k) O(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
4 z8 p. h0 {- C! D. E$ n0 b( m. l
4 _" C; c- G1 z: `' z1 {(7)用GBA模拟器打开16pic_demo.gba观看效果
& m5 Q2 h7 a2 W- k: H7 u# R0 A" C, T- g' V2 X9 L! X! ]
! X* ?6 ?' g, k9 w( ~1 k5 m8 F( ?9 ^- m
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)0 b, U, v; k- a
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|