签到天数: 2152 天 [LV.Master]伴坛终老
|
( L5 Z e: D" C- L# Y2 L: H当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
0 b K% `3 r+ h- D" [* v+ `$ G, J3 g$ }9 v9 }/ k. y0 i
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
+ f- ^% o3 g& n" g: o
. B+ Z: Z$ q1 P5 i# t, W3 [: ]$ P4 R$ R(一)准备工具:& O8 _ w; n$ D- j2 V" A
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例& D( F. Z8 G' {7 r2 f' ?' t
8 ]; [$ X+ `- ~6 w3 @9 ^( [
ARMIPS作者是Kingcom
+ e/ b! n+ ~& `/ R: }$ xARMIPS源代码github页面:https://github.com/Kingcom/armips
- o; t, Z3 v$ [- ^# ~! I0 iARMIPS Automated builds页面: http://buildbot.orphis.net/armips4 \% ?/ N: z0 n! \. E
2 O7 b: r' ~" ]7 \. X2.一个将图片转换为二进制bin文件的工具bimbo 1.30 `/ G" S' q) I) w
( F1 T7 m1 l8 S% Z& W/ c+ J
bimbo 1.3作者是Aleksi Eeben# y& c: W# \0 k7 `& g$ M' O
+ T7 D" F$ H9 m! H* b0 Sbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
3 G$ z1 e) |+ c3 a4 {
+ z; E* d$ j! {$ V( j7 n9 |6 s, m3.一个windows自带的画图或其他图形编辑工具3 B) ~4 V* F) b4 C+ u
( ?9 i% X' I" |! h T
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
, V+ }+ Q/ Y# v
6 y" h5 S) K# A(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP4 K8 Z1 U1 M: }0 g1 x2 G, j6 `
9 g; V8 l( [( b, Y' h4 I0 v2 W& D
! n- _ m+ d% M' R& y; t: X. S
, X d- b4 @8 w2 e+ A8 Z+ x% b(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
/ J* L& h9 s9 E8 q: ?
# }4 @4 U' k9 Y" Y* F0 }5 J
2 a! U; X: i8 c/ O+ A- Q" i; t
. Q, T8 N' \* L- M& J3 j; [(4)新建一个文本,我起名为16pic.asm,文本内容如下:2 D8 {( ]# X/ }, p V' u( H' U/ R
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000 v. @7 |, Q& ~ c5 J3 ^
- .create "16pic_demo.gba",0x080000000 Z$ ]( I `0 A v
- ;设置为GBA架构
Q# n% o0 p8 C% z9 `. J - .gba
6 `8 r( \+ ?; Z& ?% R; v' n - ;设置为ARM模式8 p) Q* a$ F) z1 l2 D$ U/ _) h
- .arm
6 z; Y' I2 H% s' }- G1 z - ;设置起始地址是0x080000001 y/ s( r: P( a: ]
- .org 0x08000000
" q. ~7 H+ }" | h; J$ ~ - ;创建长度为0xC0文件头数据区域3 O) q+ ]( @" q7 @* c
- .area 0xC04 r6 M% `4 [5 J& g) F/ Q
- ;填充文件头数据4 F1 q4 M& b/ q: C4 h# D
- .fill 0xC0,0x00! F$ P0 |. {5 b. T9 @/ h h
- ;区域结束- f7 Y2 J* j# U9 d
- .endarea
4 }8 M! y) ?. c5 L4 n6 E - ;主程序
) L* m' Q* I4 J - main:4 _- z( E4 Y" ^* S
- ;设置屏幕模式3,BG2开启
3 I0 g+ D7 Z0 N! ~$ t( ]6 A. J4 l8 y( l - mov r0,0x04000000" n2 p2 W7 @7 n% p
- mov r1,0x0400
( y; r2 \/ T/ }% U1 i; A4 c - add r1,r1,0x3
5 P4 }* a8 W5 t1 h8 R( k0 ?/ E - strh r1,[r0]$ R, f+ G. v' }2 r [0 P a
- ;设置VRAM起始地址
7 d+ u, X' F- U7 N+ K9 F, d2 p - mov r0,0x06000000
# q3 z% r, l6 O& k5 V ^, w$ @ - ;设置图片地址' H) T1 M5 U" b
- ldr r1,=pic3 L+ e: `7 c9 D/ _
- ;设置数据长度为0x9600
. T2 G* ]. p; S6 f - mov r2,0x9600
3 H& k' a- u3 @5 O* l - ;传送图片数据到VRAM# g8 Q3 j; Y# `+ r" }9 V
- loopl:; t1 B3 r/ J2 ?+ _* Y
- ldrh r3,[r1],0x23 ^* ?, U4 u# E
- strh r3,[r0],0x2
, H1 x9 {! j. f* r5 E S$ V8 v8 X - subs r2,r2,0x14 Z7 P# G- _& u8 r5 i" U2 S
- bne loopl2 [! j# W3 M' w) D9 L
- ;进入死循环
5 r1 l& N/ h) `( o! c) u0 k - infin:
: o/ X8 t1 r6 O8 }; y* X, F# N - b infin* e/ g" V! E5 Q4 y
- .pool# B9 M6 [" W9 [6 z- h+ t
- ;导入图片二进制数据 ]! u3 o; z: m) r
- pic:
5 M* a% K$ Q& U" Y- T) n- O - .incbin "16pic.bin"
; d2 [: `, ^$ G, I5 } - ;在0x08000000地址设置跳转到主程序入口1 C: k, K, N3 L& |, |/ c, A
- .org 0x08000000
/ W- j( a" o% F i% `+ c9 ]1 Y - b main
: ~3 ]" \4 L" |% `: t6 b g - ;关闭文件
, F& Y0 }* k9 J) J% @) Y9 l - .close4 t) m/ F8 R: c
复制代码 ! @. v x1 j+ {, W" i- X& E' D
保存!! d2 J6 d# t# Y5 b) S! K
" u/ P4 o+ Q# c4 y. w
(5)把16pic.asm和16pic.bin复制到armips目录下 z) ?/ H" H2 r6 s5 s
5 P; B2 {6 E0 P5 v: }+ T(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件4 L8 U1 y9 \% a; w: C m
9 Y* O7 x9 s$ k2 p) a/ T(7)用GBA模拟器打开16pic_demo.gba观看效果3 l! X8 W/ H8 m/ o9 W
8 _# u; m, r. ]+ r" [/ Y; S
8 ?1 X e3 r5 J
% h, i, r( r! g f关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
4 x9 H: U8 a+ t+ `( J1 H |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|