签到天数: 1895 天 [LV.Master]伴坛终老
|
, e. L: Y, N; n* ~
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
6 C% P. `- e3 E+ `, F( N, x4 P7 B' Y0 l& T% Y& v5 v
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧! ~8 B; \4 q& I5 b2 r
/ b: |- s" [6 `4 q4 Q(一)准备工具:
. H N7 q9 }2 _% s9 M5 ^( C1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例& o/ @3 S! g9 e6 [
. {2 e8 F. u- K. J7 ]
ARMIPS作者是Kingcom& f+ m, t: A' X! Z% }
ARMIPS源代码github页面:https://github.com/Kingcom/armips" u# K; v1 h' X1 h
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
- e5 c; f* i8 @2 D3 I. C
/ k6 E0 k/ n* L3 a- N, n" `$ F2.一个将图片转换为二进制bin文件的工具bimbo 1.3. y# @5 ]/ l* k, J
* m; E( H1 N( |/ [( X4 j
bimbo 1.3作者是Aleksi Eeben
- l, q3 r5 U; D; L- c4 l- R1 e6 g: R6 s4 K6 L
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167' c- o* h/ }. ]9 j) j
! f: l: Q3 u% F$ M3.一个windows自带的画图或其他图形编辑工具: o8 u$ N- ` E6 W" _6 }& g
: B; v0 T$ H @0 t* O
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)0 U c& J& L$ s( T9 W* c$ k
7 I5 ?% s9 _+ g" Z/ E" s7 }9 [0 o- O
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
_6 z& C+ [) u& z: F; g& b1 h1 L3 \$ q
4 M# ]# d: E. x0 O9 S4 Q$ e! t7 p2 v! j% H
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
1 C9 K) C5 c, I2 M9 ], Z: }$ m- f2 ^( e# u2 ?+ N/ b! J3 `
2 N/ e$ u S) ?. ~/ Q' t' {; n5 h7 E9 v3 s: b& i0 r) N: h
(4)新建一个文本,我起名为16pic.asm,文本内容如下:- I& G) S5 e% C; K# Q: U7 W
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
5 u$ o* _+ o9 \8 K. P$ a# ? - .create "16pic_demo.gba",0x08000000 \6 r, N- F( i4 C2 _
- ;设置为GBA架构0 r8 s7 H; Q; g* o
- .gba7 d" v' n7 J8 {
- ;设置为ARM模式( Z/ x3 i& W, h; r& c
- .arm
- I$ z4 C+ F- H$ ? - ;设置起始地址是0x080000009 v# c- e. C* v
- .org 0x080000005 W( J* l7 `+ L
- ;创建长度为0xC0文件头数据区域& p5 r$ u0 h! O! O7 x
- .area 0xC0
$ F" e; @1 g9 N, S( `' M - ;填充文件头数据
) n( n, M$ }: A& L7 e5 ^ - .fill 0xC0,0x003 _6 X4 |' O4 D: f
- ;区域结束
" Y" \; ?: z0 }- s, ^3 o- \8 O - .endarea4 q0 ^* t8 T3 h) y' R
- ;主程序
5 T* E! n8 j4 m6 B5 M$ ~! p9 `9 ^8 ^ - main:
; L; _% l* r2 _0 H7 \! Z2 S - ;设置屏幕模式3,BG2开启
: Y0 f% W2 y5 K, p - mov r0,0x040000004 o( m3 n0 M1 y
- mov r1,0x0400
, ?2 H) J2 a) l _. e% T - add r1,r1,0x32 o: U( e( z" T+ s+ A9 j" o* e
- strh r1,[r0]- W, U; F+ M, T7 U3 Y$ M) F! c. k
- ;设置VRAM起始地址
3 N. m2 v! u; ~: b: H - mov r0,0x060000003 G1 G0 `0 Q6 P! }7 o- R
- ;设置图片地址
2 H7 D# Y- ]$ c% ]7 J - ldr r1,=pic8 X2 g0 E4 k& A0 ~1 B( X2 @
- ;设置数据长度为0x9600% d$ n+ H$ f( ?' |7 y
- mov r2,0x96007 w, p2 c- d6 P$ Q' p/ f5 @
- ;传送图片数据到VRAM7 N! Q4 [. Q; a" A, K
- loopl:4 ^$ N5 ^, l9 o% ]$ [
- ldrh r3,[r1],0x2
0 [$ e2 R" j5 G8 S' X - strh r3,[r0],0x2# d+ j8 U4 N6 \3 h+ p/ ^0 I
- subs r2,r2,0x1
3 Z8 F; d+ w5 H2 n4 ]) g - bne loopl
+ q# p4 M: B( p - ;进入死循环" Z# q* i$ M; T4 H& Z, ~" K
- infin:0 V8 o \0 r5 s% p) [
- b infin; i) X( c+ z* H" B* o
- .pool
( u! O, q3 S2 B! C _" O - ;导入图片二进制数据
s! ]6 y1 A) s% j% j W! ] - pic:. v* \$ F2 s& [4 A
- .incbin "16pic.bin"
2 r0 Z7 i, b4 \. E' \- q - ;在0x08000000地址设置跳转到主程序入口' l S9 j& s: l5 d; T, O7 B
- .org 0x08000000) t- g! j5 Y3 }+ [9 L! a
- b main
/ k9 H& z5 j3 r! V } - ;关闭文件2 F& c1 i; X- H3 X7 G* i
- .close" L- u" C$ A3 C8 s/ w4 P' a g( ]+ ~1 Z
复制代码
& |: n& Y' Q% V: [保存!! D7 Z4 Y3 H( W: Q" y t
6 `8 g9 R; e+ X& {+ ` s(5)把16pic.asm和16pic.bin复制到armips目录下
! x, [4 O8 v$ q0 W5 `
2 Y5 K' E. s/ p9 \# k- o- k+ q( [' E4 V(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件& D$ O( L+ N* Y/ x' B& U1 E
) t. o7 k2 j% {4 ]
(7)用GBA模拟器打开16pic_demo.gba观看效果2 u; m Y, o* \: O5 O
8 M6 H6 h" V7 r+ h& x& Q# r' N& R" u
5 F, M0 k: Q; Y/ e$ F
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)+ v& _" W9 g) F: S S C m6 G8 @3 M
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|