签到天数: 2073 天 [LV.Master]伴坛终老
|
7 r/ M4 x3 [$ a8 w: k9 W3 X" y当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 w1 X: D7 D" v% h$ O9 E' {2 I
- h0 {& p |& R6 d% ]& ?这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧 M6 Q1 i/ Z0 u# b& s3 H
$ z9 z9 }- Y2 c! R3 b$ u$ V
(一)准备工具:
5 ]' J/ D: r) [" o' S- E, B1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例: p2 x" @6 H0 f
- y% |8 a1 p g7 o
ARMIPS作者是Kingcom
H2 v2 a& Y8 U7 s7 {ARMIPS源代码github页面:https://github.com/Kingcom/armips3 u3 `1 n$ V' k- x
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
0 f [/ g1 s! z" P/ t' G7 z
& d- ~7 ^& q; N! X) Q2.一个将图片转换为二进制bin文件的工具bimbo 1.3
1 A- s+ E, A3 k/ y. G$ t8 [% J* i7 ]: y1 ]7 Z( @7 I
bimbo 1.3作者是Aleksi Eeben
+ D$ b: r* d. k6 j) A- ]
8 y2 }4 t4 K2 N$ r0 Abimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
* G: o* J7 I2 U% g
- L% K+ a9 E/ w* {3.一个windows自带的画图或其他图形编辑工具
, u9 M: v3 z4 |/ m9 H. g/ T- B
' W+ g" H; T1 ]9 C4 w4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
& I% i9 ~0 _: |& B7 K8 T4 s% V4 u% G4 e. u5 C7 ]8 q
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
9 U+ J% b. X7 d# o' \# m {
! N, F. g- K7 u3 H) ?
& O- z/ n* C) D. _, F
7 t; d# b" f/ u- T7 W8 Q(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
3 w7 }' P; b2 ]8 y# C# }, U
6 Z+ H; ]% i- N0 V3 Y4 C5 m$ w
( t" B% t$ k+ [& V1 v4 x5 J8 u+ u# t1 Q4 P; Y
$ ~. O5 c$ @( b/ {/ m& B' J(4)新建一个文本,我起名为16pic.asm,文本内容如下:
, L8 o1 V8 |5 T% @% d) k- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
9 q3 c+ @# z( a. T2 |0 U& W3 q# T4 v% |& j - .create "16pic_demo.gba",0x08000000
6 p$ ?8 h% O. i6 a. A0 g; J6 h4 X - ;设置为GBA架构
6 ?9 t' P1 e! ^ - .gba' V. \& E( |( f* Y, J/ ~: w
- ;设置为ARM模式
( M1 p( F# c6 z4 y0 c$ ^ - .arm) t5 @- v# ^1 v2 w
- ;设置起始地址是0x08000000
& U( g# I4 V. A$ l/ U r - .org 0x08000000. I c& Y) J3 Q3 ~) d- y, \
- ;创建长度为0xC0文件头数据区域* n T4 n; k, b; A0 D/ A: p5 A; b
- .area 0xC0' S+ F2 c5 }- @3 J
- ;填充文件头数据
- F8 I4 t% [6 U& O2 l0 ?( v8 U - .fill 0xC0,0x006 i4 S; D/ ^: O9 r
- ;区域结束
+ T$ i% v8 Y' `! s4 T7 \$ z; |0 F - .endarea
1 H- P4 I, j+ x, z _ - ;主程序. g( U2 {5 L) q. U) q
- main:
& E# r! h# S4 n% q* r! m' }2 [$ p - ;设置屏幕模式3,BG2开启
& J5 x9 T- s( v' V/ H) w& p b - mov r0,0x04000000$ F, _% R3 f. n3 c+ f5 z" p5 U1 J
- mov r1,0x0400
( v- W9 }- B; p, ~ - add r1,r1,0x3$ g1 C; i* U1 A8 b% ~
- strh r1,[r0]
+ Z% T8 Y- f, e1 n; T - ;设置VRAM起始地址& Q+ B4 t+ f* }( y6 W
- mov r0,0x06000000
! [! h9 @( }" m5 Z! g f - ;设置图片地址- ^8 S& o, ^6 j" p% U7 i- V
- ldr r1,=pic8 T5 u7 x$ M) E [( \" P) b
- ;设置数据长度为0x9600
. l6 X7 H+ `$ b H, C8 L N - mov r2,0x9600
1 d3 q# y3 |1 I$ C - ;传送图片数据到VRAM0 G4 X6 m+ Z( m
- loopl:
/ S9 y3 j8 e* c& e - ldrh r3,[r1],0x2
; y2 C3 d; C: a. ` - strh r3,[r0],0x2
7 f$ a$ }2 _: w% t* ? - subs r2,r2,0x1
. y/ ]/ H3 D" a- X - bne loopl
+ K8 \" m# R0 ^* \! Q' u - ;进入死循环
$ X6 |5 p8 R: y0 N5 G - infin:/ V+ B/ E# y+ W" [7 U: z
- b infin
% C8 Y k0 a- `9 p - .pool
. L4 L. J- _ j0 l - ;导入图片二进制数据
+ }9 L9 H9 k' u& Q - pic:5 w6 ~! N I6 z& Y, c6 Q; [
- .incbin "16pic.bin"
* s& t7 X A/ k ^( E8 ~* ] - ;在0x08000000地址设置跳转到主程序入口
! q: ~9 F& x1 Q. s - .org 0x08000000 O1 Q) w0 Q) W
- b main, O% Z+ s B$ h+ g
- ;关闭文件5 t n7 t" e- a! n* q
- .close. e: C8 {- y2 j7 e' A7 m
复制代码 3 {" }4 n$ t7 f5 a8 m F* q+ A* [
保存!" p" u# a- R! P$ ^
. e# d ^. y3 _) i(5)把16pic.asm和16pic.bin复制到armips目录下5 z# j2 s# z$ J& b- ~7 H) D
e' |7 U/ k7 P* D(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件7 ~8 R7 ^3 ]: n0 E
6 y: y2 |) C; S
(7)用GBA模拟器打开16pic_demo.gba观看效果
0 o5 f/ e* N" ?' y o/ S4 N% q1 T. j/ l! b2 }" O/ ?" f: Y
9 {* m7 \/ e( P: F9 K- L* G0 @- f
0 s; \+ l0 f( F$ m& ^1 g! p关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)( w: M& o4 w. D7 Y% X
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|