签到天数: 1865 天 [LV.Master]伴坛终老
|
8 ?% A$ b" n2 D P% {/ D: B( e当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
/ N; @3 R* s9 s- Z6 t1 [, b& m5 H1 h
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 t# v: D5 O* Q: ?2 l) E( }9 w x0 o% X$ N5 }. k4 \
(一)准备工具:2 A0 I& M! a- I/ M: d
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
9 [, c, v8 P! {
" T4 l* ?' p: p3 ~ARMIPS作者是Kingcom" S: D; ~* @- V* j; Z
ARMIPS源代码github页面:https://github.com/Kingcom/armips) Y1 z! p% V3 z2 j/ _$ l q
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips: e M4 O. U1 ]6 w% V2 t/ P& J
. l) G( h$ z5 u* R/ x/ {2.一个将图片转换为二进制bin文件的工具bimbo 1.3
; Q0 l! ?2 M/ _& @+ h- W( G0 b: E' i5 z$ I1 D1 i6 g- q* ?
bimbo 1.3作者是Aleksi Eeben% Q J3 Q" O+ @1 @- X: I- Q
8 a9 S1 n) C3 Y; J, V m) \
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
/ L) E. l! {! k& A0 s6 m
' u7 e' {) Q4 [1 A; {3.一个windows自带的画图或其他图形编辑工具
# z% ? ^& @3 ^. {$ L/ N- u7 I5 D; m% H6 h- [
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)' F: }4 Z+ p% E* o# c" F( ^5 C
3 l# m4 q* U8 w- I, ^. T(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP2 L: o- Z3 |" L9 a0 i
' v9 o( u$ T, y( t! E5 n# ]
5 V0 z+ V2 j- m$ n
" ~4 g5 L! b2 X! Q- R2 n5 a(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 F, P" |/ e0 q: |" s5 a4 ?; r5 ~
/ l: D( |- P5 m6 @; f
' ] A. M9 B5 }9 k w1 e6 Y) l/ r0 Z- H; |% N
(4)新建一个文本,我起名为16pic.asm,文本内容如下:* f* D- ]1 }) w( j; O1 y8 v" w
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
( r! `% `! K v& ~" n0 f - .create "16pic_demo.gba",0x08000000
5 O8 n: s; ?- U, M5 a: t - ;设置为GBA架构
4 V- r! e( ]: \ - .gba
$ E$ K0 h$ Z3 x - ;设置为ARM模式, Y! o3 l' a4 c T1 _: p3 y @+ c+ [
- .arm
+ q% |0 h* U" ~" @ - ;设置起始地址是0x08000000
- p1 q7 `8 ^4 D1 b - .org 0x08000000
# P: m2 F7 E! S) }3 w, _, S+ b - ;创建长度为0xC0文件头数据区域
r* W, g2 q2 N! k; M - .area 0xC0& r% w. f9 ]# Q' q
- ;填充文件头数据( [; T! @: v1 I6 Z+ p3 Q# T: q! e$ q
- .fill 0xC0,0x00
. e O3 v+ k$ D$ h# h- ] - ;区域结束. b$ f! d$ a8 ]* x; k$ Z; u' [$ ]
- .endarea
. L {" R' ^$ t0 y/ A! e" ?* Z - ;主程序
$ n$ b9 l* P% t" E - main:! q: H2 J# A1 Q m9 a
- ;设置屏幕模式3,BG2开启9 x( L: j0 X, m! s
- mov r0,0x04000000
1 @' l t; k" f: R2 ]6 R0 d2 f' S - mov r1,0x0400) @6 _! Q. Y7 V' s- M6 n
- add r1,r1,0x3
4 \# t1 v0 i4 u* Z0 y - strh r1,[r0]
( i) [/ ^ d* s+ N/ r6 i - ;设置VRAM起始地址
' S9 \- t }+ z2 J9 J$ o3 i - mov r0,0x06000000
5 h6 R3 F+ S2 E# |; h1 D" R - ;设置图片地址
' C. E* Q2 P+ y; y - ldr r1,=pic( H7 q2 q' c' d3 ?: ^# i! o4 ?9 u' I4 p
- ;设置数据长度为0x9600- a+ b! R- y" r8 [
- mov r2,0x9600/ \' b. W, ?; Z ^6 ]
- ;传送图片数据到VRAM4 \% M2 l/ p) h& R6 w
- loopl:( {# z- Z i/ z" v; \* f* E) e& E0 w' R
- ldrh r3,[r1],0x2( _$ r- j3 ~% X+ j4 e
- strh r3,[r0],0x2
# A2 {8 X- g. G# Y- X - subs r2,r2,0x1 u9 w$ @$ j6 i T' }9 P2 u
- bne loopl
+ y0 i' Y5 X! R& V- U! n( [! U. E' _ - ;进入死循环
3 T, u, P' k6 t/ S - infin:" a+ z3 J5 L9 ^ \2 s* }! x
- b infin
7 n- D B3 d- v" ]* W, H - .pool
& E# o- z& e) `0 m4 [" W& t' u - ;导入图片二进制数据& Q" I; f! W% h7 v/ x
- pic:) t$ H, G" M6 [- i+ z2 C
- .incbin "16pic.bin") ?- P6 a$ k& k
- ;在0x08000000地址设置跳转到主程序入口& Y# P. ^, o7 K/ m
- .org 0x08000000
K; z0 r/ [3 v# N9 V* r - b main
7 J* @! |0 |4 R7 v2 t. K/ q - ;关闭文件
+ `! y: W) t# B* d4 T - .close
: C- v: H2 G7 j' \! i
复制代码 , E3 y7 U7 Y9 ]1 T& o0 A, x
保存!
7 G2 @" \# j5 }+ J) r) G% k A
& n r- |6 z) f0 D6 c+ U% y2 T(5)把16pic.asm和16pic.bin复制到armips目录下
3 |3 Q. W3 Z* s# \
* a& p( `$ h" A* k8 o(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
/ y6 w2 T& n; K% P3 U9 E0 y/ ?6 v
(7)用GBA模拟器打开16pic_demo.gba观看效果
6 w$ l& ]9 f7 z" f! I' w5 v8 d# s" V
6 \) C( M# y& k2 K2 e6 ~$ N3 c: Y% R; s
- ~0 @- p0 r# o' z关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
2 w% m; q+ @( A/ x+ u |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|