签到天数: 1590 天 [LV.Master]伴坛终老
|
& V2 o' X7 y) o
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
. [' K" B$ N: r3 ^2 \
& V4 L5 ]+ L1 @, c4 _# w$ H) M& y这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
" y! y8 E! R! F7 _- F' U, \5 W Y S' f# l' v' [
(一)准备工具:
; U# Y, C) T0 o' [1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例, n0 d b7 i# y4 U q! w5 |
* y2 [/ M* n) \% |1 B' KARMIPS作者是Kingcom
, f# K9 B3 F4 _0 R" b$ U) Z. vARMIPS源代码github页面:https://github.com/Kingcom/armips
% j2 g9 s/ F6 Z" f2 pARMIPS Automated builds页面: http://buildbot.orphis.net/armips1 m9 h# ?" L: ~# u! G& `
* |# {2 J8 F4 }/ y4 E9 U2.一个将图片转换为二进制bin文件的工具bimbo 1.3& g1 I2 \+ v2 U7 c" T# l) r5 w
* d6 F1 p5 f; S7 `- F+ Pbimbo 1.3作者是Aleksi Eeben; H* z8 @6 ~& U D, }8 ]) {
# O( g0 x1 N( y0 e5 b/ s
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1679 e2 r% ]8 a$ Q) `8 y
; o1 f& U0 \0 _) E& Z4 K3.一个windows自带的画图或其他图形编辑工具
- W; d3 s% D5 T: e! i( }
8 t* R& b9 M5 B. Z _; l- b4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
' L4 T, ]* B' h; l. D$ j* D4 ~
0 L: g: n% w$ W/ T5 r(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
* R3 t/ e. {- T9 q+ S8 W
' Y* n) d, i! t4 V0 e+ ~% @. F: C1 f8 D8 R2 V v
& C; i) Y' t6 w0 ]
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin3 a0 W# Z7 m% f( `. }
; U! J( J O& ]! ~' U0 ^
$ ?. C4 K# B0 F" s! w
9 y/ x' K8 a+ {(4)新建一个文本,我起名为16pic.asm,文本内容如下:
& d# z6 k$ A2 t7 V/ h4 \8 s% e- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
1 i' m+ D$ z" a1 {1 i Q. R - .create "16pic_demo.gba",0x08000000: h* ]. m7 q$ W/ C
- ;设置为GBA架构# I+ a# e3 w% c% b+ E
- .gba
2 s2 f$ z8 D7 p7 Z# Q& e. P. ` - ;设置为ARM模式% E3 f0 b) U$ g, G
- .arm3 T$ z8 O& d O) D% ~3 \
- ;设置起始地址是0x080000001 X7 u1 ~1 [) I( f+ b
- .org 0x08000000
7 c F. I" F! N' T3 U4 p# d- h$ |1 P - ;创建长度为0xC0文件头数据区域( f( q1 j; F$ B7 e
- .area 0xC0
- i) w) k& B3 z% x- b) U - ;填充文件头数据
/ l& G2 X( p" E3 G - .fill 0xC0,0x00& n, l" U* t, d0 C
- ;区域结束% k6 @! ?5 S8 n
- .endarea
' t" P* u7 z' B2 j - ;主程序
! f9 V' U( i0 C( ~9 |" T7 p: y* B - main:
2 J0 F" l6 u3 p+ D% R4 o - ;设置屏幕模式3,BG2开启
7 N4 H5 N5 O8 X! }2 ~ - mov r0,0x04000000
8 o, _7 |" b- y& c, H) H, N1 Q - mov r1,0x0400
) @3 M: C/ V" R2 |% F - add r1,r1,0x3
( U4 ?* I! y+ o8 a2 Z - strh r1,[r0]/ ?+ l% z$ _% I4 v
- ;设置VRAM起始地址; p' D! F+ z5 x) _' ~, q% a; H3 ^2 r
- mov r0,0x06000000
( p; }1 v, M" H' n: b) F+ L - ;设置图片地址
/ U- o$ j7 Y d9 h, n# k: Q - ldr r1,=pic
8 @( v2 F4 R: u# z- u - ;设置数据长度为0x9600
/ \& j' P+ F" g& `; x& x - mov r2,0x9600. B7 y# y4 k1 q
- ;传送图片数据到VRAM
0 A4 e9 D6 v" ^7 [) ^3 p6 I0 t8 l - loopl:! B9 K) h$ P# P1 ?& u
- ldrh r3,[r1],0x2
2 O, |; z6 {- Q! v. I% m6 b - strh r3,[r0],0x2
% f, F/ ~/ H" i* ` - subs r2,r2,0x13 g+ M8 L3 E, _ T
- bne loopl
- @ K9 N' a, V u - ;进入死循环
$ Q& t8 p: {4 { ]+ a" p8 }" A - infin:) F" B5 V \; z2 y
- b infin% d2 e, X) U$ b, x7 P2 A& W6 x% L
- .pool
% t$ ]+ y3 I. g% F2 z5 A - ;导入图片二进制数据
( M5 C5 l, Q; p; a. d2 X - pic:$ g# ^# T% V- a7 \1 O$ }
- .incbin "16pic.bin"* K; [+ A3 R; y. N0 R( e
- ;在0x08000000地址设置跳转到主程序入口# \+ `/ ?1 v# v# k& F
- .org 0x08000000
+ `7 j6 x5 A; S4 S* z - b main# S" F! C+ D) R9 n+ e
- ;关闭文件
3 s; ?: q* G' i' B: _+ o - .close
; m7 s" C0 n8 A6 \( h3 P
复制代码 2 @. R$ G u& n( {" U0 `- D
保存!
3 S7 S8 ~( ?, |. H( F2 H, F @* I8 z: ]; M( u
(5)把16pic.asm和16pic.bin复制到armips目录下
6 U) H+ L. Y5 }# p/ H( N
* Q0 {! }9 c, o" b# g(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件 i8 N, n/ u" S
: e7 e6 a' V! Y
(7)用GBA模拟器打开16pic_demo.gba观看效果3 X) x5 o6 ^3 N! a* m2 Z
0 R8 W* }% ?' M% E
* z3 k5 F3 P5 l5 D8 v: N! R/ w, ~
; i! q" S2 L7 c C关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)$ Z; S" `* f2 c
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|