签到天数: 1770 天 [LV.Master]伴坛终老
|
3 e- T8 @, d& c( z当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档& G* t3 v0 c6 ?9 L, Q
. r9 E, e3 ^4 I
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
, z8 h3 }# y- w; g
. v& _; Y2 K# M* ]5 ]1 B(一)准备工具:# q) ]" M8 k S/ C7 }( P1 E+ Q" Z( @
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
* |% s: S8 q2 b$ u/ f
: K- @# z }# H9 B" o5 {# FARMIPS作者是Kingcom
1 n) ?: j4 f& Y! aARMIPS源代码github页面:https://github.com/Kingcom/armips/ M+ n4 w+ ?* L' [0 B- T& O4 r2 C
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips( f' n/ Z3 [2 W* K/ A& L
0 V9 ^" D) Q H& t, R; C
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
- @. P, C" E D% z( R; P8 S' Q' S+ H0 K; E9 h
bimbo 1.3作者是Aleksi Eeben
) I/ H, b8 X. t o( }4 W
6 M( d' j' ?8 x& z# T1 gbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1679 N/ u3 S4 k n6 y- x" ]
7 [3 @* w5 [1 q! N) a! y3.一个windows自带的画图或其他图形编辑工具
0 y2 N4 I. m! K. Q) C9 D5 j) ~, V9 ~" F
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)1 J- j8 g4 i) _2 S+ v3 z/ t
`3 D$ A4 A# _$ c7 U" v8 D. J(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
Q3 H/ C- @( `
9 ?: Q' `# Y' `! z: ^, T" y
2 S/ p+ M% |! a4 z' B! L0 [* _9 v9 H: x3 T2 F* k
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ K/ K: k1 `9 x. [
. K8 G& u4 E9 z' u
! R+ s8 e; a$ |( m
& S! z* Y) ]0 M4 w/ a7 {(4)新建一个文本,我起名为16pic.asm,文本内容如下:
: {- K: E, E! q& q- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
D0 n2 J6 k; k! ~ L - .create "16pic_demo.gba",0x08000000
5 X( v* Q4 p6 v) w0 T" K% U" ? - ;设置为GBA架构2 L$ J9 a* G' g$ p
- .gba
4 R+ E2 u" Q3 U! ^2 I - ;设置为ARM模式2 |$ g- Z& U7 a, D) C! ^5 m
- .arm
& J7 @( U& d# a# i* V' P - ;设置起始地址是0x08000000* ^, {0 L& j+ M
- .org 0x08000000
* b6 K i1 v& @ - ;创建长度为0xC0文件头数据区域5 _6 a3 ~7 Q8 a: n" }
- .area 0xC0
6 W) f3 S R4 w' I- @: C - ;填充文件头数据
+ }5 e: k* M( f" I( S - .fill 0xC0,0x00
' G, c9 Y) W$ O5 w! R - ;区域结束
& u3 ?' X- i3 R8 Z' Q6 S - .endarea% C" O7 t% \ _6 l
- ;主程序
0 @ [; @) d6 {1 j3 X - main:
3 `$ c, L3 y6 O( Y o+ N; c1 b& v) N - ;设置屏幕模式3,BG2开启) b/ K; f1 N& T9 I3 m0 |2 j
- mov r0,0x040000006 X- y b+ Y! |& P8 h3 E& `9 p |7 B
- mov r1,0x0400
( M5 G5 f. E' I- q4 }& X - add r1,r1,0x3
( i! @5 w8 m$ q) l4 Q - strh r1,[r0]: |- d+ }7 v+ J; S! M+ f
- ;设置VRAM起始地址1 v, M/ ]8 u; B0 l+ I* p) T; o$ C
- mov r0,0x06000000 f; ]; ?% t6 Y/ V; U1 ]- [, p
- ;设置图片地址
5 n7 t8 M0 r- @: a8 k, l" _" f7 n - ldr r1,=pic/ }9 o% [* s& g- d- h0 u
- ;设置数据长度为0x9600
( N. r0 n& c8 g - mov r2,0x96008 e* ~' ?' Q" z; ?2 J
- ;传送图片数据到VRAM
2 ^. W7 r3 F* ^# i: L: } - loopl:
# U. a S Y: E* G {- z - ldrh r3,[r1],0x2* v- Q0 B8 `- @- }
- strh r3,[r0],0x2$ _. D8 L+ } d) v. P1 [; x
- subs r2,r2,0x1( q# r- g1 m" `. w3 _2 m3 d
- bne loopl+ h, N- H i$ U6 Y& Y
- ;进入死循环
1 m- }& ?4 O [ b3 u; N - infin:
3 Q9 ~# | V& e2 z - b infin
) \& w+ r& W; B1 Q$ j9 g$ ~' \/ V - .pool8 X; ]( L- E; M- X9 I+ k* y
- ;导入图片二进制数据, u* L1 D8 D3 _4 P5 {/ h
- pic:7 ]8 v" {$ d0 n# T7 m# g' S: X1 `$ D
- .incbin "16pic.bin"' p* r( @$ D! J3 |, C
- ;在0x08000000地址设置跳转到主程序入口
% [5 o& ^$ {, Z$ M - .org 0x08000000! K7 b: L) R" R! z7 ?
- b main3 y$ s" C6 Z4 Y! }- d
- ;关闭文件
! R. P5 v$ u9 s - .close
% ?' S( }" ]$ M8 ?6 a+ R% c; z& I
复制代码
% s- Y, L3 D' B! v1 J8 S保存!
+ c9 h" o- H$ s& n* h; r( y: E" H {: s# n7 {! D h- W
(5)把16pic.asm和16pic.bin复制到armips目录下! N6 T& y# X* L' z" U5 ]
+ y5 D( l9 H% s1 u' O2 t+ t' w7 j
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件6 g1 r4 z2 Q' V" y( B
2 H4 q5 U+ Q f. Z(7)用GBA模拟器打开16pic_demo.gba观看效果
+ j6 u1 L" G# i( j. z1 r4 J0 Y% Q! J; Y. i
1 w( `/ G3 \# g4 E' e1 x* `
6 P$ ]! w1 K0 E; _3 x$ A
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)) x& Z7 v* Y' _2 |0 {' P* W$ K
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|