签到天数: 2032 天 [LV.Master]伴坛终老
|
0 Y: i7 G+ f% Y( b! S9 f
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
8 Y' s. ?# p' B, s
9 i# A3 I! t; a- l1 i. c3 o这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
/ R3 X' L0 \ K9 U/ V" l( }
9 d* c1 Q) t, E# n$ o* M6 E! n(一)准备工具:
: q$ c* F" g+ z9 M u ~1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
. `# x: O9 ^1 ~+ z
% Y# ~1 R! [# b, C: |# |1 Q+ T8 A. ZARMIPS作者是Kingcom
- N& F/ d1 _8 Y: Z( x1 }ARMIPS源代码github页面:https://github.com/Kingcom/armips' u" P8 m: X2 B1 R7 L
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
% V: U( \# B; R1 ?+ V
% d7 z5 q/ o' z! b1 |1 W2.一个将图片转换为二进制bin文件的工具bimbo 1.3
: o p# V; F. e
6 W' ?/ O! Z2 u+ K" ^0 B, Xbimbo 1.3作者是Aleksi Eeben, w* n* o" x. S1 h6 y1 P
* _( b' _1 [: @) u$ N: T: ~
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167" {9 }& P8 O; A; M
7 c* u- O+ b6 n' f
3.一个windows自带的画图或其他图形编辑工具( o! Y- d! \5 B: a5 X% C
4 O* R+ X2 O7 O: Q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
, h0 \4 Y% [5 f* ~8 C* t* s8 D) x7 ]9 b* }- O6 k' B3 ^
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP* E5 [# I; d. e7 G; S o4 J- u
# B2 p: `% R ^( D
( l. k$ K7 G& f1 o" [8 U8 ]+ F) s! t: `% ]: ~6 G$ k
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
8 g4 W/ n3 ]4 k6 K
5 `' a* `1 X8 S! l
N( f6 d# L; |+ [9 w- j9 I% m; p4 E9 K
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
[6 [4 g, y) A8 S# T- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000! F0 b9 T5 b5 Z3 S9 Y
- .create "16pic_demo.gba",0x08000000
( h' z% g, I1 _3 N - ;设置为GBA架构* D$ q7 C' x, |: W0 Z6 ^7 b
- .gba x! [) o6 J! P6 j7 u; X
- ;设置为ARM模式
^7 C; w1 O9 X) l7 a2 M - .arm1 F6 u5 [$ k' h6 K3 |. P
- ;设置起始地址是0x08000000
9 R" G8 j' M7 o; | Z - .org 0x080000006 j. P0 [+ n r6 U0 J" O: C( m4 T. j
- ;创建长度为0xC0文件头数据区域
3 v# C6 o* m! ~8 { - .area 0xC08 J) m% [+ {. W- O- o
- ;填充文件头数据
6 ?7 b. a1 Q* A9 w7 t7 B - .fill 0xC0,0x003 B4 d4 l/ E# S% V* C* p
- ;区域结束( ^' J! m& a+ g- |. |3 x) y
- .endarea# X/ \8 B* `2 U& e) N
- ;主程序
, E+ z8 r! w) q4 D) }! O - main:
' n0 Q" s/ L7 [+ Z4 {% s% R - ;设置屏幕模式3,BG2开启
/ b9 _, Z) S/ D$ \& ?2 X - mov r0,0x04000000
, ]2 k/ Q8 z, I0 T9 l& p0 J* G - mov r1,0x0400
' H: ^' V- q# u+ x( ^- D - add r1,r1,0x32 R, ~1 h* d b" {: n& Y& r
- strh r1,[r0]% `7 g5 `$ \# Q6 m0 k% \
- ;设置VRAM起始地址
0 u) }) e( v W" Q# f2 v* v - mov r0,0x060000007 w6 H. b& `9 L) ?! w2 F
- ;设置图片地址
) J; `" ~7 j- }5 _; s - ldr r1,=pic5 F6 ~6 d( f: W
- ;设置数据长度为0x9600
# g4 x0 g& Y: \8 h# W5 n - mov r2,0x96003 [1 w4 ~6 X6 Q1 o) }. s' S! K6 @5 Q
- ;传送图片数据到VRAM
' ^9 t. a% ~. [ - loopl:
0 l7 C2 q+ j; ~% f2 o8 I - ldrh r3,[r1],0x2
9 X3 j V; _2 e* H L - strh r3,[r0],0x23 ?* p% i0 K# p9 O4 n
- subs r2,r2,0x1. k j L7 L/ ]5 B
- bne loopl
( N% o6 M# b. [/ g: j3 u* i# T - ;进入死循环- a) g: L' W+ H7 H
- infin:
# J/ ]) N. ]1 Z7 O - b infin" y- f$ H$ a' ]! i9 h+ f/ M
- .pool
; x. B& y+ r/ y - ;导入图片二进制数据! r. v$ }6 l& j# p# B9 F
- pic:# y% M) Q6 t6 Z. v# V
- .incbin "16pic.bin"
& [$ a) l8 w4 n: O" \ - ;在0x08000000地址设置跳转到主程序入口
7 ]! x9 Q+ O; ^( w5 X - .org 0x08000000
+ G9 S ~( @$ ^* _* G# ^# X) h - b main
- c: I: Y# {0 q# C7 L - ;关闭文件: u; }5 j1 ?! S; o+ F
- .close
5 t# d, ]0 X1 n6 p$ C
复制代码
% A; b: M3 p, `9 g7 D保存!% r9 c2 B1 z+ M- u
" H9 L: Y6 c m6 n8 r6 X8 V2 m! k
(5)把16pic.asm和16pic.bin复制到armips目录下' |7 W% ^4 v% A- i \
4 T3 p4 {+ H' P5 K2 k$ }( O& b(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
; F- P+ F& M1 m# u% X& B) I% ~# T; ]# r' u6 h1 [' M
(7)用GBA模拟器打开16pic_demo.gba观看效果
! M8 L- B* g9 K" [9 t$ {$ R2 J& i0 i( R( L# U6 b5 y) C9 T$ {
' e+ c% a9 G7 r. f: u
- f+ L' }' x" R4 a
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
6 b( \" L, Q* T |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|