签到天数: 1773 天 [LV.Master]伴坛终老
|
* W, O; _, N ^* H: E% _当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
. _6 V8 w G, x4 I/ e3 f
# n+ o) j! P' j( W. R这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
+ ?9 ?& r3 V& f; y! y
( L7 ~! B2 o: c9 H" b/ d(一)准备工具:
: f/ i O2 ~! v1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例8 z, w. {" A+ I; C0 o1 ^7 r
7 d& R9 \/ ?! b) xARMIPS作者是Kingcom
; v! ?. T% U' FARMIPS源代码github页面:https://github.com/Kingcom/armips
& `! Y9 x6 v/ v, E+ wARMIPS Automated builds页面: http://buildbot.orphis.net/armips, F8 g% C/ A# ^
" O/ w" m! y- F& j s2.一个将图片转换为二进制bin文件的工具bimbo 1.3
V# ~! b }8 v7 P- V1 X. J& y8 ]
2 d4 n& o% B& Gbimbo 1.3作者是Aleksi Eeben: Z/ D( A9 _! b! E
& k# B8 o9 e& a: G
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167! x0 Z" m* J7 v' F, m. q
7 B9 u9 Q: v: z6 N% S* q# p3 w. K
3.一个windows自带的画图或其他图形编辑工具
: Y, R/ p# t+ J
( u1 B8 k( K1 B6 _4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
1 B$ y1 L0 G$ ~5 \$ X
1 ?; F" } {' K% W$ L(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
3 A9 k" D' z; d! Q
3 i) Y) G8 a# c4 Z1 y
, a0 B- D2 M2 o/ @! d- P9 q Q, n% Q9 w+ c
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
9 z+ \( c: H2 [4 m8 |3 L% Q. U
+ k" `# k I0 y* D) e% G; S/ X0 u5 b) R8 D/ S( n" ?
8 D. t, c& Y9 g+ [8 L
(4)新建一个文本,我起名为16pic.asm,文本内容如下:- c5 g( e1 z4 w* l) x
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000( g) P; [7 N. G; @' ^9 {
- .create "16pic_demo.gba",0x08000000
; D7 O. r2 g. h1 M9 K& o, x - ;设置为GBA架构0 i* u: M0 b* l; s* m! c( y
- .gba
. j& X2 G& z2 H! s7 R% M+ m - ;设置为ARM模式
" w& x7 U% h, d. y. d9 q! C - .arm
9 [! G( O# c% o% [% [ - ;设置起始地址是0x08000000
* H3 K. [% {0 e7 E6 w0 U' Y - .org 0x08000000& Q6 u% D6 i' ?6 A1 @* o0 h
- ;创建长度为0xC0文件头数据区域% z; B+ |4 C. {7 ^# a
- .area 0xC01 R0 M0 e, r1 F
- ;填充文件头数据
! F, O8 Y9 w$ C$ D - .fill 0xC0,0x00. c2 f0 P* f: H# V! f2 [
- ;区域结束9 r; j3 U3 a5 w! o, a4 Z
- .endarea
' K3 N. c; ^9 t+ w5 [$ e- Z - ;主程序
4 s1 a, k+ d6 n; r2 l - main:
- U! O+ J6 V4 w* t! F - ;设置屏幕模式3,BG2开启8 t. s" l. w7 d" [
- mov r0,0x040000009 n g8 n" o- h& j* d# _5 S
- mov r1,0x0400# l, ^% c- [) c8 K& O
- add r1,r1,0x3
4 ]4 ]' J3 Q3 `4 o3 [4 m - strh r1,[r0]; p. p) e0 L3 O+ b ` n( w
- ;设置VRAM起始地址1 Z: p5 `; }3 y: R1 ^8 p! w
- mov r0,0x06000000! ^4 |( s6 y& `/ Q$ n
- ;设置图片地址
' B+ G* I' E- ?, E+ X) h$ ?3 p- y - ldr r1,=pic
! `+ E! j) @1 G7 O% C - ;设置数据长度为0x9600
) Y2 |$ ~7 [0 _6 J( K2 B7 B - mov r2,0x9600
8 s0 B/ |5 G- A3 W( k - ;传送图片数据到VRAM
( H3 x" g7 v, s* O1 F3 G6 E - loopl:* V* w0 [, x& _; V" ?5 ^
- ldrh r3,[r1],0x2
' j- R, C' l0 T6 l8 h8 @8 F8 k - strh r3,[r0],0x2' @* a; i- `: W+ n; |
- subs r2,r2,0x1
. }& q" A( y7 _! G! D5 S, x - bne loopl
, g% D- p' g' | - ;进入死循环# d" K4 n+ `( m$ |% Q: f
- infin:
# F0 x$ F9 [9 @) d - b infin+ @% w6 X; I) |, O+ O/ q
- .pool: G* |. n+ L6 g! v3 u0 j" I
- ;导入图片二进制数据$ G6 Z7 f/ b# [7 s7 `0 V
- pic:: e7 _$ ^! n i% K, q f0 f
- .incbin "16pic.bin": b v3 l5 v# b$ f: e( B
- ;在0x08000000地址设置跳转到主程序入口
2 y3 |& ~/ w" n& h0 v - .org 0x08000000. s# N9 V& Z$ D$ h2 i
- b main
/ V2 q& f9 v7 \6 Q* l - ;关闭文件
& f! R7 p% Z: e - .close
: y1 A4 _ v) c: I8 i$ r
复制代码 ( J8 Z1 N5 i% m3 a( H. M
保存!: f1 N+ C0 ]+ B- X' [2 I, f: e
$ o* r4 ^; K0 H" {! A, e$ G(5)把16pic.asm和16pic.bin复制到armips目录下
% b% i' v* T3 T) s- q
* n9 P/ D' G/ {$ ]& t: m/ S5 }(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
$ s2 _: J1 K7 Q$ e9 `0 W7 x- O
(7)用GBA模拟器打开16pic_demo.gba观看效果
, h9 T+ O$ p& b6 M" N# K
% R8 o$ f1 r" W; O( W' \$ N; \0 x. S, m" @$ D8 K. a
/ t- g) o4 e1 P0 ~' h' x关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
0 i! @5 a6 D- D! t |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|