签到天数: 2012 天 [LV.Master]伴坛终老
|
* _/ ]+ z+ w5 s0 i# H4 e当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
+ F! u3 H) @1 N4 y& ?* R9 V1 I O. m/ p
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧/ {9 r8 W- M2 P7 l4 p( U
x. W! Q" K- m( O. I' U w8 s, E" b
(一)准备工具:& F/ l: Z$ {/ C% Z
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例/ N7 C; {+ S, }3 H6 I. y
& ^7 @+ X/ ]% n0 a! }ARMIPS作者是Kingcom9 e, e/ c3 i. e% e3 |
ARMIPS源代码github页面:https://github.com/Kingcom/armips& d' j% i- r w3 m1 U% [
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
7 _6 B3 p9 `2 d0 M
M! [8 d: T: i5 R$ u5 m2.一个将图片转换为二进制bin文件的工具bimbo 1.3, b& V6 ^% ~4 B# A6 t: |, x
7 ^4 n1 Y' Q$ t+ B$ p# x
bimbo 1.3作者是Aleksi Eeben9 K) i' p7 i7 a. B( M) p6 I
3 ?! u m8 z' S* S3 @
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167- b; I7 t% Z( O
Q a; t# \- a& z: f4 p6 a' q. @ e& Z7 C6 w3.一个windows自带的画图或其他图形编辑工具3 a0 Y% n& _/ _, E; V- T
" x& R0 g8 p7 _
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
0 e! e, ?0 x& ]2 V; u4 N. e1 R$ s# }4 |
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
{/ [1 E* w$ z: Q5 ^4 w% S7 Q& ]* c _
6 l$ a0 `/ i$ j# d
0 p3 x: N; ]& F& M& [2 H) F(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 T9 B- t& ~5 v7 j( K
2 q; k2 s1 ?4 ]9 A: R9 ~. B
5 Z# j. Y+ i, ]% d+ j
: U3 j3 O1 { |/ G$ T6 l( e(4)新建一个文本,我起名为16pic.asm,文本内容如下:9 @5 d& W; n+ t y) p9 C* x
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
4 r& [/ E) l# X' A - .create "16pic_demo.gba",0x08000000; U9 g) O8 `+ }* x& f% X
- ;设置为GBA架构9 x9 i) W d4 P, f f2 o1 O
- .gba
* i) u ^% Z/ _) d - ;设置为ARM模式+ n+ S" ?& U! @& g W
- .arm- E' y7 B& z" ~$ x/ O7 N' m6 V) S
- ;设置起始地址是0x08000000
0 M s& R6 X0 @/ w - .org 0x08000000/ S+ U4 W, x8 i
- ;创建长度为0xC0文件头数据区域
# t( y3 G ^ d' M - .area 0xC0- W% k$ d% s! w3 U( I' g
- ;填充文件头数据7 h4 ~, U0 @& Y- w4 v
- .fill 0xC0,0x00* K0 M0 ~2 _/ H% P3 V
- ;区域结束
+ X( Q; P! D3 B* w: z4 ~9 L - .endarea, D: k( j: q, |
- ;主程序
7 n) p( y( w7 o* C& k1 L - main:3 p$ c, \4 c% S* F
- ;设置屏幕模式3,BG2开启$ t% M1 S7 V$ O, x
- mov r0,0x04000000
' b# O8 ]0 R7 B% l0 U - mov r1,0x0400% I' p/ m' C+ A. E
- add r1,r1,0x34 y+ i! ?8 q3 }% }$ [
- strh r1,[r0]
n4 o& b5 C+ ^5 K2 I - ;设置VRAM起始地址$ }( i, |( {4 g( T$ f2 P, P' W
- mov r0,0x060000006 b; g. J/ `- ~9 V/ o/ m* T
- ;设置图片地址
, ~ Q2 S* T) C& B% f# U& L4 z - ldr r1,=pic8 O& j( `' ~8 k/ n! j
- ;设置数据长度为0x9600
; U( f7 [3 O( r4 f& O v: @ - mov r2,0x9600
* k" M0 a; Q/ h. O3 X8 ?3 m+ ^ - ;传送图片数据到VRAM$ @6 u* {8 t- b/ \' E H
- loopl:
) P' a0 [0 o2 s% ? - ldrh r3,[r1],0x2
+ J6 l: V% U! ?* \* v# }% C3 l v - strh r3,[r0],0x2) d) S% \6 o" i1 Z1 S9 K) e% }3 F: z
- subs r2,r2,0x1
1 d9 x' l. v5 ]7 a" j+ @3 P - bne loopl% q5 k# m% H" ?, }5 C
- ;进入死循环
. L* V3 W8 k! \ - infin:% B3 ~) p& ~' ~# n' e5 a) o
- b infin
1 h% Y, V5 r' P; r6 j5 B4 E! l - .pool
! i2 N: H- m; L( {( n1 Y. _ - ;导入图片二进制数据7 s! P* }, M* i# \! }
- pic:
$ E# z2 p8 Y) m1 C" ^ - .incbin "16pic.bin"
8 t$ W4 ?1 P4 I( u$ Q0 V - ;在0x08000000地址设置跳转到主程序入口
7 t8 E! a) ]; k3 \$ G - .org 0x08000000 u$ Y# P. y- p
- b main+ m( q, M w/ |3 B
- ;关闭文件
1 z3 V+ Q/ i. j+ \+ [* r' V: ] - .close) c0 r/ R' F- B" S8 U* {; y* R
复制代码
! o) q8 [5 z" n保存!
( Y! |2 M/ d; B
j2 c$ q6 v4 c- u5 W/ K(5)把16pic.asm和16pic.bin复制到armips目录下
# G2 k: I3 r2 l- M+ ]
( e5 r2 ~: c/ q ?" x(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件9 ^& [& B, x/ Q0 s' J+ ^
% Q3 z1 S: p* n: t7 x! [(7)用GBA模拟器打开16pic_demo.gba观看效果. z8 m3 O" t5 E6 q; D6 V
+ n4 C' l! r2 Q- ~
; p: P0 A! }/ b/ x
8 Z- r# j; x1 N4 J关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
/ Q) Y, N, M* ~ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|