签到天数: 2053 天 [LV.Master]伴坛终老
|
0 }8 E7 v J" ]& \& _/ }0 l' L, p
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
/ i" O0 p( Y" ~6 q+ b4 X1 @& `% Q1 C4 N+ c! F
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
3 J5 C7 y) x0 R
5 ]# m7 L' V3 w0 G) }/ p( u+ s(一)准备工具:
+ P6 d3 e U* n) D: V! i& c1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
& y6 E9 y& U! z, s7 Q. |$ ^$ W2 Q' p2 c
ARMIPS作者是Kingcom
2 {& }+ Q( p' X5 y# FARMIPS源代码github页面:https://github.com/Kingcom/armips6 X/ @1 m* Z3 S& c3 z/ N' ^
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips# g2 l2 J4 s6 ^9 B2 g, e- t
( W) s+ D7 W4 M! y% d1 u2 G g
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
) C& f* @1 f& e! K5 w+ S0 ~* J/ E V2 K4 @0 V' W2 \; o
bimbo 1.3作者是Aleksi Eeben
4 z' d# N2 }' S- t- l4 p$ x# |( c% i7 `3 A
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1675 m0 N& O1 B' Y2 \
% s9 |! F, d! C% }4 x7 L" w, T3.一个windows自带的画图或其他图形编辑工具
. X1 f) S; @, ]; n. k r( ^1 w9 u6 M) s) ^9 x: K7 M* A; F
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
) o, A. ^6 y& f) W* O0 u$ i* n9 V
' v1 L& c# W( ~(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP) w @. O. _+ J' C3 s3 t1 ?
: K" O" |4 j( F/ V
; J; \( Q! u0 j" [. Z
0 u) w; P, H) ]& [3 K% t(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin T- w- o; G+ f2 |- r! ^) G
# \+ h( P% }+ T* U
6 y' s! z* z1 @) I
$ K, D: X+ j! N4 O(4)新建一个文本,我起名为16pic.asm,文本内容如下:
6 I9 p+ X8 f$ H9 K; l- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000# s v6 e6 `/ X$ ]- X4 `9 H
- .create "16pic_demo.gba",0x080000006 G! h. a6 q1 h2 t: e1 h: q, x
- ;设置为GBA架构
0 ^6 o% V0 x3 L j) k( s - .gba
0 @3 V4 k* A7 R8 N - ;设置为ARM模式4 M' e8 l2 ^1 H# v# s2 e0 x; T
- .arm- O5 y; c& j$ q! |2 {( V
- ;设置起始地址是0x08000000! U ~7 ~9 e) v" R
- .org 0x08000000
8 ~; _1 r" ?, \ - ;创建长度为0xC0文件头数据区域
9 v2 Q) `% @; W( ^" I - .area 0xC03 j! O: z+ g6 b
- ;填充文件头数据' Z1 |4 B# ~* v$ F
- .fill 0xC0,0x00# L4 F: X# t6 l' g+ Q
- ;区域结束) T Z" }8 i) s- f. c
- .endarea" e7 B& E! t. V4 v, c4 y
- ;主程序
/ U. E+ \- c; e! ` - main:: c3 w% A3 R4 h. n# C
- ;设置屏幕模式3,BG2开启1 U; c y/ h1 J; m) B) r2 v8 f
- mov r0,0x04000000
; {; B% A* g3 p, a/ t) e - mov r1,0x04003 x0 n: I! ?3 z. l5 ?- g( U
- add r1,r1,0x3( M# k* u* P( }
- strh r1,[r0]6 G3 ]1 \% Q0 |; x" [
- ;设置VRAM起始地址
, ^& v* A, B/ ? - mov r0,0x060000009 g+ w9 c G& }
- ;设置图片地址, _) W3 X0 d6 d* N# N: [+ _; ]
- ldr r1,=pic
" i' S3 v" G1 b1 N - ;设置数据长度为0x9600; N$ U2 ~2 d7 T+ }2 B& q- K( Y
- mov r2,0x96004 ]! D4 U% n6 V9 I5 M5 G3 K! x$ [% I
- ;传送图片数据到VRAM
7 c$ D5 L" y9 @2 k! \3 W2 D4 f - loopl:! _( g0 q/ S: A4 B
- ldrh r3,[r1],0x2! z; v. H/ t3 E n: r. m
- strh r3,[r0],0x2
0 d3 U, \) o8 V - subs r2,r2,0x1
* m Y* X4 R% H2 S) n3 `# x: X. g - bne loopl6 O2 a* ]' F3 I
- ;进入死循环2 j0 ?. y0 c, e d8 n7 j
- infin:% f+ {- t6 h0 `. ^8 z
- b infin4 r9 p% q: j7 E0 z1 A. M
- .pool
( j7 d' J! ? r: q3 x) w - ;导入图片二进制数据
4 c; a1 R/ V2 w - pic:9 k% p, l- n) h/ D$ ]1 a9 x" b
- .incbin "16pic.bin"( t2 Q- U# K- V r( ~* e& A# o1 ~
- ;在0x08000000地址设置跳转到主程序入口7 r4 D4 L1 k0 o5 C$ N+ y
- .org 0x080000003 F4 z2 T# B* b6 i" U$ K
- b main) Z( H" r$ N0 ]1 Q) R
- ;关闭文件6 w- \: w" x9 Q/ }6 X3 m; V
- .close
# I3 Q) d. \1 C& d3 K3 H
复制代码 1 J) o. E) e( {* m
保存!3 D3 H+ @5 U8 Q: `. z7 e/ S
5 S/ q: u3 z" E0 K6 z" C( j(5)把16pic.asm和16pic.bin复制到armips目录下) ~# z/ P& o, T) K; Q. @6 t
2 w0 X' r2 T7 B+ M& x
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件; ^9 [ S @! ]) W! ^" a: V# k
1 [) A( i1 |4 X! `) q0 k$ u(7)用GBA模拟器打开16pic_demo.gba观看效果9 R/ J% t N3 s# X* r: c& r9 h8 d
/ K1 O0 |5 w- q, Q7 s0 v1 ~* n- f9 K
- R) B% ]# V" y# }- ]
2 r" j) Z" v$ C2 K( O; _( d
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
& q/ ]9 S9 j7 L- ? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|