签到天数: 2172 天 [LV.Master]伴坛终老
|
- _- L% P v0 E; Y! v5 p6 x当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档( F3 @) _2 T P/ U; H$ \# r( `4 ]
( b1 M$ R- }. o" ?! H5 [2 Y
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
$ j5 l8 s# c: E' F1 _" q3 H1 I# t" ^6 e& E% \
(一)准备工具:' A1 G ]' Y0 o' } l
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
2 Q% j- Q+ t* u1 K+ M: J% h4 C9 [/ A R2 @) y% c% G& W
ARMIPS作者是Kingcom
2 d# O) x6 h) [) B( o/ fARMIPS源代码github页面:https://github.com/Kingcom/armips* @* L6 v2 I" }5 c
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips( j4 i9 M3 f. B! X: S* b {
7 i6 I8 z; ~1 n4 {* u2.一个将图片转换为二进制bin文件的工具bimbo 1.3
) f/ O& x# r' c! n) Z" ]/ {& v4 G9 O4 W# O
bimbo 1.3作者是Aleksi Eeben
^# ]9 X- @" k4 z" H& ]6 l: q$ e9 r6 n9 X% Y
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
1 }2 I5 x; w+ N1 _
. R6 t$ F5 G& X3 r3.一个windows自带的画图或其他图形编辑工具
% e+ t% e- ^* S$ A$ x' }$ {) n' g1 p0 h. W. I$ B
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3) j+ W, ~/ m$ m' m! {
! h( V. |, z$ N9 s$ L(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP3 J4 n1 p4 M2 }
- p8 p+ J7 W3 S% z1 B
6 T# B" r9 a Q/ ~! e) o
5 r9 U5 R' s/ [1 q0 h
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ c" ^( l& T- c0 j7 t- J2 z7 M; ^
! y& ^* C% {: d9 w6 n$ k/ P
' R/ M: _' C- r$ c$ J* a) N: w
! y6 ~2 o1 }! K, U# w( J4 Y; Z(4)新建一个文本,我起名为16pic.asm,文本内容如下:+ ?' X9 |2 N' y) U( r2 ]. `
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000% S* r: F# \) \2 L u- C* }
- .create "16pic_demo.gba",0x08000000) s, E/ H9 M5 P: a0 v- n
- ;设置为GBA架构; O8 ?9 ?( s0 x! h+ f: y& D
- .gba
) d! Y- t+ _, w- ?7 w, n- I - ;设置为ARM模式
# i8 I( r8 D! l& T - .arm7 M+ O; u* x$ e' E$ g
- ;设置起始地址是0x08000000
/ A" {0 E% S" U: E+ C$ u4 S) y - .org 0x08000000' b5 o8 H0 a( B3 P7 X0 M
- ;创建长度为0xC0文件头数据区域( k% _4 v0 p5 U$ m' C
- .area 0xC0/ {& D6 D0 Z9 x2 u; [* k4 M. ^. T. w* z
- ;填充文件头数据
! c, P6 ~" ]3 e7 W) @# m" A$ m - .fill 0xC0,0x00- y0 o5 G; }1 H6 d
- ;区域结束& |: v/ u0 O, M( h7 `' Y4 n9 v
- .endarea) Z. r1 f3 }. O" v: I) J& \' a7 B
- ;主程序
, x1 F$ C L( F) d - main:( v6 h5 k6 A% ^7 d. L c% B, L
- ;设置屏幕模式3,BG2开启9 `& T% Z% X1 m* X+ _3 I' B2 H" p
- mov r0,0x04000000
; X) U, e1 F* ? - mov r1,0x0400
+ |. p! r6 o* K( m4 z4 q - add r1,r1,0x3
6 l$ J0 a5 f8 F7 c% h - strh r1,[r0]8 T& G2 r# V( w6 B* [/ |; y7 g U
- ;设置VRAM起始地址
2 u! C* \6 F6 y& l6 X - mov r0,0x06000000
! j- H# w/ Y& i- p* U, m - ;设置图片地址
( ?8 y+ v0 |) r" i3 X; R+ N2 g4 U - ldr r1,=pic3 V/ [2 h$ @" A, ]" b% ` K% H
- ;设置数据长度为0x96009 {/ l9 l* |2 N1 }4 p
- mov r2,0x9600$ k7 T) A7 ~& W3 h9 [ `& f2 j
- ;传送图片数据到VRAM5 ?+ W6 q L! d. \( C% r' A
- loopl:8 o7 s: e4 J* ]7 n# P; j8 a1 W
- ldrh r3,[r1],0x2' G0 }6 Y7 T7 ]; M% s
- strh r3,[r0],0x2; m. X3 ^* u& W% t3 M7 b# S; n
- subs r2,r2,0x10 F5 P. m) ~3 c. C, N3 Y" W- c
- bne loopl. H( t: T s+ `5 B1 d. ?
- ;进入死循环
- y' ^9 V1 k+ p1 [ - infin:
9 ]: z+ {1 }0 _ - b infin: i/ G. h; i% O: @9 V; C) X- B
- .pool' \9 R2 p S6 T) {& p+ ^
- ;导入图片二进制数据
' F& u% U v+ W; O& b2 X' H - pic:
0 v) a& C: x2 d - .incbin "16pic.bin"
' I! t' ^7 f" J; P - ;在0x08000000地址设置跳转到主程序入口& x' o% P7 w1 b
- .org 0x08000000. l n6 ~( A6 e8 L+ m3 N8 K
- b main4 y5 ?; s) C) j0 M2 I4 K Z" R
- ;关闭文件4 s* w, E/ S5 ^3 m% r$ U, X
- .close
* X9 O, {. t$ p! q: A
复制代码 $ ]# [# U. n6 }2 J1 r
保存!+ R2 ~4 v: u8 b" P9 `, P
4 J S( a" E' e4 A
(5)把16pic.asm和16pic.bin复制到armips目录下3 M6 I8 W% n" o/ W. r$ B, M5 m' B" r* U
, U# I0 K7 R3 d" S4 y8 b, [2 B
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件0 k/ y% i+ a% ]5 ^9 e
$ J' Z3 M. r; u; R3 X& E9 T# d(7)用GBA模拟器打开16pic_demo.gba观看效果
2 I: r( o, Q2 S* M4 R4 A' m" \
* i- C& w; F2 F2 l0 P# Q4 o- F. @) s5 v+ ^5 W/ G* y9 W
9 U" X5 `& A+ I2 z4 d7 z$ b
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
! K+ g! K' N% ?' L5 w0 K |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|