签到天数: 2093 天 [LV.Master]伴坛终老
|
/ ~* G- v! q' Z/ ?, G! c W当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
- n& u; v% f2 H! R7 T4 S8 A- q8 ~! |/ p' V- |2 U! s
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
9 L6 d. u. A: s0 c) K
0 w2 `7 q' \1 S+ q+ H( B(一)准备工具:) j3 V3 R- H* t0 L
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例, s( |8 u5 n2 F3 p& a' c( _& @
( b5 p1 A/ J8 L' j! d0 u) d
ARMIPS作者是Kingcom' @- d' X$ H' U4 }
ARMIPS源代码github页面:https://github.com/Kingcom/armips3 G& V2 R* L, L8 m- ?: m9 G2 C% t
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips8 L% ] ?& [7 l$ b5 ?
- E7 H/ D: a! F! p0 @$ _2.一个将图片转换为二进制bin文件的工具bimbo 1.3
4 I& ^1 A- _) Z: c& n$ n& u' q4 h
bimbo 1.3作者是Aleksi Eeben z1 p9 p, S* F: B; i" e. w
5 l7 W/ R1 K. Y2 b6 u
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
0 I* p0 b0 K3 [5 A5 H/ S% y7 \) p" W0 A& |2 Q1 n$ |( G
3.一个windows自带的画图或其他图形编辑工具
9 V8 R3 O/ R$ P6 _7 a4 b5 R, P, G% H5 Y8 R$ D }2 {' ?' \
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
{, P c) I; _/ Q3 H* }9 ~ j! Z) \3 ~, F5 R- y! i, x' Z/ \9 e
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP" t- M, x4 W9 v$ X$ p7 ]0 `
4 N* `! j9 e9 O8 H L$ t# A( f) h U; c t9 s$ q$ s4 {
N% k3 K5 I9 u2 S# D
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
2 y' n1 G# P |% ?/ N
, l% l' o' ?1 v3 ^" Y
; {4 o) k. x" V8 y4 S+ w2 Y
0 C4 f4 O* l, Z8 y(4)新建一个文本,我起名为16pic.asm,文本内容如下:0 f3 F( R5 X N* e7 {; C! x
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000 x& [1 j+ M/ m3 l7 p
- .create "16pic_demo.gba",0x08000000( }- B( s' @: v/ l: y+ y1 O3 C
- ;设置为GBA架构+ {3 ^1 H. z3 q* n O. [
- .gba
6 y% D9 M6 D" G) ?/ `6 [- x - ;设置为ARM模式
+ C! [) q( }# |6 I/ _ - .arm1 t8 r0 A4 w$ u% J% H
- ;设置起始地址是0x08000000; D/ h7 }+ Z2 @( G6 M4 ?! q/ O9 K
- .org 0x08000000
- W: Q$ S# ]$ l3 |) N5 h - ;创建长度为0xC0文件头数据区域" h! X/ s: ]* J' J7 L7 C* }) q* y
- .area 0xC0; d. i: y. v* f+ i' C
- ;填充文件头数据
, r$ C: X0 R! z2 S" j - .fill 0xC0,0x00
. q* J" j* i1 B - ;区域结束% O9 v+ n4 q% C2 V# D; Q
- .endarea
: u: y6 M$ ^. ]! y - ;主程序
' d# O' c) B* \5 G - main:
, q/ g" l* R3 I2 f& w7 X - ;设置屏幕模式3,BG2开启
- b( [/ d/ i" E) C2 h - mov r0,0x04000000
! l% c; p* w+ K1 R7 t - mov r1,0x04009 A l) C3 U ~
- add r1,r1,0x31 b( y1 B4 j. A( i f
- strh r1,[r0]
8 n1 ]5 g; p3 T - ;设置VRAM起始地址+ p% o& k+ f" w6 t# X$ E2 F
- mov r0,0x06000000
, K3 M) }0 _; @ X0 h - ;设置图片地址: M5 O& L- l9 P5 Y# _" |
- ldr r1,=pic
0 j) O A, p1 \2 z$ [' g - ;设置数据长度为0x9600
Y( Y, n* j0 F m* T - mov r2,0x9600
p& b6 n% ?" S, Z - ;传送图片数据到VRAM! j1 ]1 j9 z. `
- loopl:
& n" u5 [4 x0 }. J+ Q: d. S - ldrh r3,[r1],0x2 X1 w5 E; y1 y9 N+ a4 Y) V
- strh r3,[r0],0x2
* v; F4 ^* ~ @; b+ w/ i: y - subs r2,r2,0x1
4 z/ o7 j, p5 v9 b, c - bne loopl
1 y/ |& R' Z, s n1 I - ;进入死循环: [0 D' a1 e4 T9 j5 I( j/ B1 D% j2 z
- infin:- ]3 D! J& r4 J; d; e% X
- b infin$ @! ^$ T' G7 k6 x
- .pool4 y( N" f7 [( v! ` c
- ;导入图片二进制数据9 [; T1 u& x) w( C- ?7 b' K+ K
- pic:
: |3 V* ^& N; z" D - .incbin "16pic.bin"2 t! S8 n& Q9 L( Z
- ;在0x08000000地址设置跳转到主程序入口
$ f! [- G. N) ] x/ x - .org 0x08000000* I3 A: |2 A" }- j& _
- b main4 y* x) x# }, a( m# z0 ?
- ;关闭文件
% T3 l2 T0 l! ?# |4 V: F' X g - .close6 g% ]& g4 y, w: c0 ]+ u( F
复制代码
$ L6 S0 l& M: o; `保存!
- Y' m( e! R1 {) [: ^1 t p2 t9 W% V4 ~' u" S( `; I. M6 f; f
(5)把16pic.asm和16pic.bin复制到armips目录下% ~& D0 v N% C1 S$ R* O9 B# z
3 \* L3 [3 `" \6 ]. [ b0 n5 c. g
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
: b0 V |1 p/ G/ i) S' B$ z0 u# d; ?2 m4 Q6 K( I& E" X, r% z
(7)用GBA模拟器打开16pic_demo.gba观看效果
1 ?: B/ k! o- W5 o
. ~7 ?: g* i; H
3 L( u2 X8 K3 R9 k+ {
- ^6 _) N* N( v7 V6 g$ ]关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)" q5 x: l, L; z: J' w" Y' H
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|