签到天数: 1927 天 [LV.Master]伴坛终老
|
- S4 H# I Z+ K8 d N
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 L, s/ v0 ?7 d
; a4 n# m) B) l! C( b( [% Z: J6 W这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧; f! r9 X1 m% l
! Q% e v6 f1 j
(一)准备工具:
% B2 i; _" I% B# w# i0 d( f1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
4 k( M+ U# X1 i. k4 b, m9 K* H" r* l
ARMIPS作者是Kingcom
2 A% P: `0 ?3 j* ]4 T7 u/ D1 qARMIPS源代码github页面:https://github.com/Kingcom/armips
7 X# y4 b/ e" S+ k' Y1 Q' l4 wARMIPS Automated builds页面: http://buildbot.orphis.net/armips i* [( I& l( X u
4 @6 q7 j* h% ^( R- x2.一个将图片转换为二进制bin文件的工具bimbo 1.3
' O2 ^7 o. G& I2 U$ H8 j
' {4 d+ I! i- c* J, i4 {bimbo 1.3作者是Aleksi Eeben
; y' a5 E/ {) \8 b; }; X( y4 `: C5 Q, M+ T& B' H' T2 n0 W( q
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167# u: N3 ?4 m1 \4 G: Y9 F9 w/ R
, k- `& \- |2 F1 I4 R9 o+ X5 E. W
3.一个windows自带的画图或其他图形编辑工具
3 F3 p" r1 k+ \# ]" w3 f
/ z8 c i y: O) G& x/ l4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
' S3 S5 j) r w) a6 h- h m4 o7 _! X; K' \; X) p/ J3 y* C
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP F. x+ l [) n7 c0 W
/ [" Z- n* l1 O' Q5 f+ b- ^
% n! G5 }: r( X8 r$ C
! f! }# q4 F! D+ O' e(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* Z; f4 e ] b+ o3 w* C4 I( _
( Y: I' u9 `$ {' q- N; e" u9 n B) A1 v( R/ K
( t' d& \* g- m6 w" e2 V
(4)新建一个文本,我起名为16pic.asm,文本内容如下:; a1 g0 _5 P' t: L) `
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000. G% b. e: m% l7 u2 C6 y
- .create "16pic_demo.gba",0x08000000
0 u! Z5 ~- \/ ?$ a. `9 N - ;设置为GBA架构
+ _$ b5 u" G0 G e0 e5 i% f - .gba
* f( W" ]$ b8 J$ |- Q - ;设置为ARM模式
6 K5 o. Y* \7 a8 [ - .arm
2 R1 Z- R; E8 M3 z - ;设置起始地址是0x08000000
+ [4 p- {" S6 v0 H: z o& B2 b7 O/ ] - .org 0x08000000
0 m4 f* g! C8 g9 J$ j8 t( {: a8 Q - ;创建长度为0xC0文件头数据区域2 d1 Q* |9 i8 a( i0 p
- .area 0xC04 {7 G( I4 a( n8 p* J' _3 i
- ;填充文件头数据
7 n9 U# v/ ^$ a8 t3 P0 {+ r2 z - .fill 0xC0,0x00. `. n3 M8 i+ n5 ^3 K3 P, z0 `
- ;区域结束( [8 T4 U2 G- U' _5 V ?
- .endarea) B0 E% M2 c' F
- ;主程序0 M9 s9 D6 w" h2 K' W- Y% T
- main:
7 x' j# P2 F" o4 c ]# T - ;设置屏幕模式3,BG2开启
3 e4 |0 \. O! J2 ?7 m0 ] - mov r0,0x040000008 q& c/ @' a) t0 n) k
- mov r1,0x0400
$ v6 e, T5 V7 H - add r1,r1,0x30 n2 `- D9 a6 d! b2 y" L9 z2 D
- strh r1,[r0]
0 d N" R$ ]( U/ g& X! T - ;设置VRAM起始地址/ \0 k2 A$ A( G+ k( `/ Z' F7 D3 z
- mov r0,0x06000000; |' ~& T; b: K1 n, q
- ;设置图片地址# i. q1 r5 M8 F! T
- ldr r1,=pic
: Q- _- ^ ^! g+ j9 }5 T/ w; E) e - ;设置数据长度为0x9600
; ?# M1 X5 h. d. G$ E$ r - mov r2,0x9600! W2 Y4 v/ s, q8 l7 `, g
- ;传送图片数据到VRAM% |: g r& m8 ]3 Q; Y5 c# g4 v5 ]
- loopl:/ Q6 ?0 ]' v! C& _
- ldrh r3,[r1],0x2
; l- v9 x& j# m j0 d: b ~ - strh r3,[r0],0x2; d' [, i& {1 c
- subs r2,r2,0x1% T/ M3 N% H( n, W
- bne loopl8 b% _/ y4 J. I$ F
- ;进入死循环
) O9 ~8 e0 b' ?! O; W - infin:
/ t* U( q/ Y3 n& I3 X& M6 u - b infin# n2 E: v8 D k4 j) M) h
- .pool
* |, k1 i8 f" ?% {2 j b0 S( X - ;导入图片二进制数据
9 x1 Y* e! G$ |+ m8 M* c$ o - pic:
0 y& j# K7 D: @) _6 b4 r$ w - .incbin "16pic.bin"
: u0 [4 [# H6 r; ~( f. e - ;在0x08000000地址设置跳转到主程序入口
) f7 n5 T. @) N: V - .org 0x08000000
- H! w7 D9 E8 @: D3 ~ - b main$ c& C9 W8 H; O/ U* U( B
- ;关闭文件' f- p8 Y6 B+ Z7 h( c% w* z
- .close* Z! D, h x; _' ]6 l
复制代码
7 H& \* h2 K( k, D+ s保存!
, _4 S2 W* S: A9 h9 B; l. c8 o' `8 Z' D* T/ z8 l
(5)把16pic.asm和16pic.bin复制到armips目录下
6 R( G/ U4 X8 w" |/ H7 }8 ]
% r* V) t5 P, F% G9 C; y6 T(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
& s3 B7 l, Q8 @! z$ n" B, `$ t# k/ c: P( \
(7)用GBA模拟器打开16pic_demo.gba观看效果
0 C6 t7 j8 F8 m" T u) n4 m' a) [9 ~$ V
5 c4 | T# y* s" t1 j g
7 Z/ B1 b1 c. x" `/ F3 E
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
( C0 d0 a* p$ G% M/ \5 v |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|