签到天数: 2072 天 [LV.Master]伴坛终老
|
4 A9 u' d/ |4 }6 I当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
; P, D8 Y5 c* F9 v+ S6 x
2 |3 j- j- J( d Z+ ^这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
; b; s( r- R/ P
7 w* U" h2 ~" a& j4 Q a(一)准备工具:
( P/ \% d0 s# G# \) _5 ]0 v' @1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例' N( {" d# R f+ G% y) u3 Z
& v* E4 v+ m4 ?/ oARMIPS作者是Kingcom T( w; u' o6 ~# C7 H
ARMIPS源代码github页面:https://github.com/Kingcom/armips4 o; v! K( s7 J1 g' y3 ^, C2 _
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
/ N* p( E F, t e) N6 Z1 f
$ j4 c' ~5 Q [. E2 t& U2.一个将图片转换为二进制bin文件的工具bimbo 1.3
1 z" o3 v0 p- h( g5 {* W1 }
( W" ? @# v1 _* Ebimbo 1.3作者是Aleksi Eeben
' K' z' I4 R* q+ h+ c4 L# A( D9 T
v- _& P+ c4 {bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
/ b: J* t5 [9 E1 t4 z
: ^6 C \& j( j) a, p6 ^- a3.一个windows自带的画图或其他图形编辑工具2 e# y- r7 |) \1 J; ]$ H% J a
* j2 d8 d6 y6 a5 W! U7 G* k
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)7 t' R2 w6 z/ o% \$ P. I* n
4 W; I. h# y5 P1 m9 f" }
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP- g: u9 ?7 [+ Q6 K# b9 `
3 z) @' o/ `* _6 U4 _
* ^ c Y% H e8 h9 _+ F2 B3 ?8 w9 y
* z7 a0 g k9 q; R
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
$ N5 k. f" U! s8 A+ D
4 Z. Q" J2 H& M Y! A j& x
7 f9 g3 u ]5 a" {7 O) l. c; d% b) n# b
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
" [+ F/ k* V! F9 V( N% t: J- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
/ G# B6 e: D" v1 F) C; f - .create "16pic_demo.gba",0x08000000+ `/ q' `4 p- K( `& u0 j% r( T
- ;设置为GBA架构
! P' B0 I" M- R& Z+ _" _3 p* A7 C" W - .gba
/ ]$ h* b& V* |: E, x - ;设置为ARM模式9 `9 m4 P8 a, x. o2 P6 c ]
- .arm
% Q( t% {" I: b0 I8 P# Z& w - ;设置起始地址是0x08000000
: A! s* \1 w4 O- ?$ G1 F* Y - .org 0x08000000
8 E- s+ i$ p1 h - ;创建长度为0xC0文件头数据区域9 z4 p# `7 v; y2 e; w5 M1 e# }; j
- .area 0xC0
6 C" D- B# o- ^* m! p# C - ;填充文件头数据& k$ j E o5 b2 X5 _+ e, }: ~
- .fill 0xC0,0x00
- c# B6 Q$ D5 b& {; M, r$ n - ;区域结束2 t* U, N% M* i8 H- m, @
- .endarea
: W/ E$ S& d) T# |% Y0 P) S0 {+ _ - ;主程序
8 [7 P6 p) y7 V! O4 H - main:
+ p& v p) O d! \2 k6 t - ;设置屏幕模式3,BG2开启( { @$ d- p* {3 F; v
- mov r0,0x04000000" S4 N0 `! }8 u, h! o
- mov r1,0x0400# r) J; ]7 q+ G' i- S B) s9 Z
- add r1,r1,0x36 c5 ]& A/ U; K' r
- strh r1,[r0]9 a, T% t* @6 D2 D Q; H
- ;设置VRAM起始地址
" Z5 \# B9 S( T1 y - mov r0,0x06000000% b$ w& R' U; j
- ;设置图片地址
; @# M$ V* N6 q2 A4 l2 H G" b - ldr r1,=pic* R3 X0 B, s( W& T' {9 i
- ;设置数据长度为0x96001 a; }2 v c; n* b& @/ D
- mov r2,0x9600
2 K, p- E; p# @' Y0 x6 r( e - ;传送图片数据到VRAM
: ~+ R8 _' E4 n1 s( F - loopl:6 z! h& F! _% E$ {8 o$ b. v2 Y: e; s
- ldrh r3,[r1],0x24 B: Q& G. O, t: H- }) R
- strh r3,[r0],0x2
1 R( y& f+ x/ I; I D - subs r2,r2,0x1
% ]9 g, m' m( i! ] H3 [ - bne loopl
- o! x' \3 }9 ~ - ;进入死循环! X7 P h$ C7 K( {
- infin:) ?& A2 F+ K4 h2 l R8 Z2 O
- b infin
6 x" ?. u5 s; u6 v! H% D - .pool7 q' O. U. z7 Z4 ]% Y+ m+ o' T5 [2 _" ]
- ;导入图片二进制数据/ {8 E5 n- [8 p" j
- pic:
1 ?" L7 c7 K/ P5 i3 D# z3 B' \ - .incbin "16pic.bin". F* K4 q% b( m5 ^* O! ^
- ;在0x08000000地址设置跳转到主程序入口1 h9 [& o/ J* j/ V. O; @- S; ~
- .org 0x08000000
8 d' ?2 c( m) E" c) V9 F - b main% H9 }- v) g$ [ p3 E' B
- ;关闭文件
& p5 W$ f2 ?) V+ [ - .close
, V2 c' B( o2 V, p3 ~! v
复制代码 9 }' d& N( F0 T: s5 k# f8 |; W
保存!
. }# a0 V* m$ R' P: W" d% M4 [; _& c. {
(5)把16pic.asm和16pic.bin复制到armips目录下
% z5 ~4 G0 ^! m* X5 V3 `$ R
0 h/ G8 f8 ?$ t% z* S9 R5 L(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件* S* q' Z1 [# P) D y9 V4 ]
; d7 [( A/ b7 w H(7)用GBA模拟器打开16pic_demo.gba观看效果1 i6 ?6 S% _7 s: i5 j2 A+ h
5 Y) B* K7 |; M0 g( l" }9 }/ B
' r* G/ t; t+ N2 ?3 g: c7 b2 |% B: X( Z
; w) h1 O& c4 R4 B- C
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)1 j; u8 L1 m0 s
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|