签到天数: 1773 天 [LV.Master]伴坛终老
|
+ `$ s) Y; T; k3 h0 c' F9 W. T$ N K当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档- J: {5 a/ [$ x" }$ `& B) ]
& ^+ ]- A6 @! T8 r* K0 y这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
0 s. r: z5 O9 X7 m! F9 N8 ?8 o, C' V) W8 F7 A: k: K9 N2 ~
(一)准备工具:* U. \3 O0 s2 S+ p6 f- q9 _
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
+ W; |2 z {( ^% T
! i& b' d; l7 J; r9 u1 Q8 gARMIPS作者是Kingcom
/ a1 X+ w l- n _5 B' E( @ARMIPS源代码github页面:https://github.com/Kingcom/armips
3 v3 s1 |; X$ hARMIPS Automated builds页面: http://buildbot.orphis.net/armips3 u( @6 a B, @7 \8 P9 h x7 X
% u8 f$ B& E6 o5 F
2.一个将图片转换为二进制bin文件的工具bimbo 1.3/ L) r9 H5 f/ U. @; M+ n0 d- G3 I' i
9 W7 {. a, x8 H5 l& i7 L
bimbo 1.3作者是Aleksi Eeben
0 ?. O2 e9 E/ @. R' I; \' Y# |+ o
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
4 j- i0 f* d; m/ a' O) I. t/ l6 ]3 V. O9 L
3.一个windows自带的画图或其他图形编辑工具
1 |$ {) @' j( A l, Z/ A/ R8 p/ l3 X! }' E% D( |% ?0 v* w5 X+ o
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)& h a u% p% V; }
; L2 P3 s5 b7 C' O2 c$ \ U
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
6 ?" }- h& D4 m3 [5 u3 N
0 m2 ]- [2 H2 L) g4 c0 o* K( s, a0 f2 z3 u( X0 s
( R2 m, K* ~* U
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
) T& d6 f; g9 m3 A8 L/ ]
# v3 p+ C0 w/ v# R
% v& j9 d1 k' a a5 M" S( Q& z/ A2 v/ ~: ^8 M' m2 |
(4)新建一个文本,我起名为16pic.asm,文本内容如下:# L6 d3 w6 r* o' g
- ;创建新文件16pic_demo.gba,文件起始地址是0x080000007 h3 W K! o: i" h- s, l$ f
- .create "16pic_demo.gba",0x08000000
9 \. K$ z/ N) c6 p - ;设置为GBA架构2 ]! u1 t S' n% N* n9 a/ Q/ ^
- .gba% D J$ h1 z6 w2 _) g# k
- ;设置为ARM模式
9 U3 a, p6 A! j! {0 P - .arm
+ H4 _/ T t `0 M$ e - ;设置起始地址是0x080000009 c5 o( |4 Z: O& S
- .org 0x080000003 Y( b5 c/ c" F* B7 O6 P. j! A
- ;创建长度为0xC0文件头数据区域% j1 L4 Z' L5 I$ S/ I4 `
- .area 0xC0
' O& S/ _ {$ y - ;填充文件头数据0 H$ P+ K, @# [1 h" R
- .fill 0xC0,0x00' o+ Z; H5 x2 _+ ?) ]0 v& m+ w6 d
- ;区域结束
6 N% ]! Q u) C0 ^# J, d - .endarea* U- V- a* u, x6 y/ [ w
- ;主程序9 r+ G4 F( w1 f7 D5 B3 b+ a
- main:5 V7 x/ V3 u4 l& j2 q
- ;设置屏幕模式3,BG2开启
+ O8 L+ S: C+ U c+ w! e- K1 H1 U - mov r0,0x04000000' ~! |3 i! ~6 l" i L) ]& K
- mov r1,0x0400
. ?" s( d7 C. k - add r1,r1,0x3$ l% Q0 I% X3 e) f. C9 Z7 y! ]
- strh r1,[r0]7 f( e0 g8 T, j
- ;设置VRAM起始地址+ L& f0 g: W$ f2 t2 S
- mov r0,0x06000000
6 i1 \9 I4 m8 L" n0 S6 e - ;设置图片地址
4 T' P) q5 k% ` `/ q$ ^3 m2 F - ldr r1,=pic
: i/ R0 E/ F' x9 Q - ;设置数据长度为0x9600
/ @) z& m& J7 `9 ?- s) K' ~( @ - mov r2,0x9600
3 r* ^& |& _2 B. o4 m A - ;传送图片数据到VRAM
: L I2 z4 D5 @ - loopl:3 R/ O& a9 t* D* G" l
- ldrh r3,[r1],0x20 `* D: _6 ]6 o& s) P4 W9 { b1 Q
- strh r3,[r0],0x2
5 i' ^8 N3 Z) w. ~ - subs r2,r2,0x1
W$ S: K; j! G9 Y q - bne loopl
' a2 t0 i& W y - ;进入死循环; T- i7 k* ?' `* h2 s3 ^ w
- infin:, n, P0 Z2 [1 J# c- t" D2 p3 P$ b
- b infin0 o; Y3 z, M/ `; ?
- .pool
' G+ f+ i# j' z% w1 W - ;导入图片二进制数据+ Q- `6 X t+ K, j( n
- pic:. j8 a: h+ j' k8 l- q- ?, B! U
- .incbin "16pic.bin"/ f/ p% `+ S* u2 y/ D4 ^. x- ]
- ;在0x08000000地址设置跳转到主程序入口
7 T' j4 x W: a8 f L* J: ~ - .org 0x08000000
5 X$ b4 h7 F7 m: G - b main
3 j+ @# g8 q4 q. T5 l% U1 X - ;关闭文件2 {! W% H; ~) t9 e' a# ^( V* X8 N
- .close) K5 k1 c& W3 o3 w/ t; J
复制代码 & A) g' t5 T9 [. S% i
保存!. O1 h% _# g( n) O
5 E- L+ u$ H: H: ` I5 L(5)把16pic.asm和16pic.bin复制到armips目录下
: r' f( ` U$ p' X" C h) d0 t1 T+ a/ |( ?2 M. `, D
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件- m+ s! ]% X) {
+ j! S$ S0 n, E3 S8 {$ c
(7)用GBA模拟器打开16pic_demo.gba观看效果3 W% h( ?" T, t- J3 c
1 W" A; o& C8 @$ W9 P9 I% j" t
5 J# I* c! r4 b$ `# d, }
4 }( e/ B4 Q3 ?& R
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
" y) o" m+ O2 B+ Y |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|