签到天数: 2051 天 [LV.Master]伴坛终老
|
0 D; A1 j: J) U0 p# y" _当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档4 U8 `$ D% h" c( s0 ` @
* `# e j. X" @) n* t# x
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧! P4 w: G7 U% u% r
3 Z, [2 k G7 T. b5 l& e4 W(一)准备工具:
( F. B9 x& v b) k3 j1 a3 W, Y1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例' A7 e, p4 n. O3 U4 Z8 w
! f$ y' ~: x0 a+ \ |. s. ?
ARMIPS作者是Kingcom9 ]2 r2 k( x( j
ARMIPS源代码github页面:https://github.com/Kingcom/armips
& M% }3 O# f7 F' }4 G! VARMIPS Automated builds页面: http://buildbot.orphis.net/armips. `# k( j6 C, U% V: _9 }
( j, I& x, q. N7 m: e$ ]2 p( e
2.一个将图片转换为二进制bin文件的工具bimbo 1.3. Q& ?0 t" p2 }+ F% T% A- b& u
6 Y7 @% c1 o( }3 Z8 zbimbo 1.3作者是Aleksi Eeben5 m: M5 Q! V' p" F
1 \* R. {! @2 y4 h) A
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
/ [) ~4 f& H8 ?/ g+ S
1 d& Z, J& H* T) {$ K- }0 x4 I3.一个windows自带的画图或其他图形编辑工具& ?. | Z2 e0 w* `% d' K
6 A' u9 [; q3 E9 {4 @ x% y& ~4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
% V& J" b. P1 z6 ^. n; h: `
# p8 t9 M" C" [* \ @(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
& `0 Z' h& B% p$ F% p$ \
) [5 }/ H) c, g3 b
K' g" k4 r: n4 ]+ d% O1 q6 x& H8 B7 s! v1 k. u* a" `
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin" l# I2 N# F1 W3 _8 I
/ j& L$ z; l; Y# N2 W' k: V
' A6 x" E$ g) a
, u& v0 b0 C# d' K! p% T' O(4)新建一个文本,我起名为16pic.asm,文本内容如下:3 ~" h3 U" ~" I) m; @9 B) z; I
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000$ J5 N7 X# d5 }3 X- H
- .create "16pic_demo.gba",0x080000001 V' `. [* G* q) T* Q4 G% t5 L8 M
- ;设置为GBA架构
6 {2 A5 y, t2 t0 F! s! _ - .gba
, t: u( Q; x! V - ;设置为ARM模式! N; a4 ~+ v/ _* D
- .arm% i/ R s: @( D; p
- ;设置起始地址是0x08000000
" e' q1 w+ _+ D3 N! D7 L - .org 0x08000000- S* i$ [; u4 k" a- W* }6 I4 m
- ;创建长度为0xC0文件头数据区域
4 d7 W" a$ B2 |2 f* {. H - .area 0xC05 k9 o; m+ |8 `
- ;填充文件头数据- o( c8 Q, \5 _) |# e( |
- .fill 0xC0,0x00
`1 l; t( R& o) Z- e( j* d# h - ;区域结束6 N6 G6 }3 ]2 b3 \1 d
- .endarea
7 Q( W& K) @ M2 I - ;主程序* P0 K; p3 k0 N5 U
- main:
6 I! Z* ~, t( J- i# i - ;设置屏幕模式3,BG2开启
9 b8 H4 x! o) G& H# ]2 \! y - mov r0,0x04000000
1 r- m% [" I7 k' y5 {/ O- m - mov r1,0x0400
' B3 ~5 r4 c7 X& E6 K$ k - add r1,r1,0x3
, [9 Z$ g. i& F' U7 w3 n - strh r1,[r0]
+ H, B( q/ p2 i o6 B - ;设置VRAM起始地址; X+ I' {2 i3 H, j
- mov r0,0x06000000+ D+ D( |. }8 r* _# x7 ^' @
- ;设置图片地址
9 M4 ^4 r9 G4 E, ?8 G1 Q" D3 } - ldr r1,=pic
# E; g2 d0 g7 L - ;设置数据长度为0x9600, o0 a- A9 u3 {" P
- mov r2,0x96002 R7 ^5 D- q$ r( o
- ;传送图片数据到VRAM% b+ d% M; d4 k5 h% c
- loopl:0 f* j* d1 W2 x. a; C( q' x5 I
- ldrh r3,[r1],0x20 d n1 G! o, e* P- h" p
- strh r3,[r0],0x2# i3 ]8 G% J7 z/ D$ y
- subs r2,r2,0x1
3 T6 t7 l) _ m% _ - bne loopl+ A; p4 j$ q- t+ ]& R$ y) {* O
- ;进入死循环
) f% R( m! j1 T3 G( s" y5 E/ a8 S" j - infin:0 q0 f$ c' v% m! E
- b infin
5 N0 I$ o- J. [( G - .pool! X1 M! r+ X+ }& ?! ]
- ;导入图片二进制数据! \9 j! t3 l( m" N% ?. G( k
- pic:0 t- a7 W0 \% P/ @
- .incbin "16pic.bin"
% O7 g) J% U! j l - ;在0x08000000地址设置跳转到主程序入口
$ [3 s: r& d) W% P* C. `* s/ t) K+ C' o - .org 0x08000000
, V0 b. R/ ?, Y, S# ]1 x1 o - b main2 D' ^ G5 a) Q2 ]/ w! s" `2 ^# x
- ;关闭文件6 n: f/ H1 V* T: N2 t5 Q3 M! z$ M2 e
- .close
! A( S4 h! `) M+ Q- i- R( h
复制代码
: P+ b: d. H A" H保存!/ b; u9 f7 E9 w, g% V' L! `
# s& A3 o5 u) ]2 G" Y(5)把16pic.asm和16pic.bin复制到armips目录下
" c/ j3 i% ]3 {+ ^1 E& t( p! E+ ]8 @
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件# X* a- T( x2 {% n
* I+ E8 p9 G7 N. e" }
(7)用GBA模拟器打开16pic_demo.gba观看效果9 X0 O! _$ ?+ J3 P; Z K
/ s2 } k/ I' q1 C4 ~ A
* x( `- {* N. ]: s- E
l+ M7 ]% ^1 b- W- h. O! }; V! P关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
* |# b7 f& S; v5 @+ H |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|