签到天数: 2122 天 [LV.Master]伴坛终老
|
, t0 E4 K$ u; W% T0 J" F8 [
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档0 R7 ]5 O+ U7 E. z G6 K7 {* j
# b( I8 }) c4 {: a+ ?. ?' s& y7 v
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
1 M6 _7 Q2 D) p/ l1 ]
, w7 a2 w* q. U' |# w# T, o+ G, L(一)准备工具:
' I1 t7 x' i, L" `7 l8 ^1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
% n# G0 f; u) J+ a- a. w
/ E. Q: E% u/ f RARMIPS作者是Kingcom) K @4 H9 F! I; z8 a$ Q2 d- R( g
ARMIPS源代码github页面:https://github.com/Kingcom/armips* M- N+ a) V5 Y. V
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
9 ^# H }3 z$ v ~. p1 U8 ]( n* b+ C9 n
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
0 y' Z7 z! H6 @* k* f6 X* X8 c( [" a
3 h; k8 N* K% l! mbimbo 1.3作者是Aleksi Eeben
1 \& o' O/ H- T3 K$ d
. ]' u" p+ p; o8 \8 F+ ^bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
& p) u7 j" @" w; s! R4 V. S- t; m$ @6 \1 m5 I8 D; e. k8 O3 z
3.一个windows自带的画图或其他图形编辑工具
' }/ F8 g+ {7 S
3 p2 `' \7 `$ F; A1 S- P6 t* O3 i7 u& b4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
' p0 H! F) b6 S. \: w* u$ w$ x- Q/ }3 X- m- B, H( f$ T
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP9 \3 x- |' B- ~3 q* K) N( [- ~- W
2 S6 V. ~+ M* w/ t5 b4 ]" p( G7 |* }/ `" i# \8 S W
8 J! p, O3 E5 T' N(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ k0 r" _& C2 f% t. G
$ I' A! o. I# d" F$ z# _ W8 X# k+ L) x+ V, p* d- r
7 s% v% u- `- }3 |
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
& O+ K0 ^- E- t$ Y: w- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
7 p$ X( d# [. _/ K - .create "16pic_demo.gba",0x08000000
. c; t; z3 l: n* j0 O - ;设置为GBA架构, f$ c% V+ ~5 C8 X+ j# J" p% T; u5 B8 r
- .gba( `! g4 p3 R& d0 m" i. ^! T0 ]
- ;设置为ARM模式/ F7 ]. w% {' R- \" k9 z
- .arm S/ n' }. g! z# j3 k- ?
- ;设置起始地址是0x08000000
( E; ^4 ?7 f7 C- l: t - .org 0x08000000% l4 m. r5 k% U+ K @+ j8 @
- ;创建长度为0xC0文件头数据区域
" X2 P9 s( ]. [' F - .area 0xC0+ i/ L0 O, I0 I
- ;填充文件头数据1 {% ?) q! @3 P/ o
- .fill 0xC0,0x00
# {4 b/ h( f- C! t/ K, d - ;区域结束
# r, [. h S& O( s: I2 \2 F& |: y9 C* w0 E2 j - .endarea7 p. ?# e( p/ i( y; y& t
- ;主程序! f0 {' d l7 @- U. Y0 T/ U8 b7 M
- main:- l1 E% t4 k3 l! D; p
- ;设置屏幕模式3,BG2开启
- A0 ^) ?; E& \0 L9 J+ m0 ^ - mov r0,0x04000000
- R8 [& U* H( j. k& ~ r8 K - mov r1,0x04008 W1 i" w9 } s5 Z
- add r1,r1,0x39 Y' x$ u0 J2 K8 P1 v
- strh r1,[r0]
& i* M6 Q" B! h" k - ;设置VRAM起始地址5 c- W8 p ~' l" J# a/ q9 d" H1 z( X0 \
- mov r0,0x06000000+ T, u/ O" P) s' b9 j/ \
- ;设置图片地址
* _: a& \. y4 b& P/ K - ldr r1,=pic" m0 O0 d& n6 V
- ;设置数据长度为0x9600+ b# n! }- u. T2 w6 H0 m9 X2 F0 {
- mov r2,0x9600
5 N. P8 X4 C r - ;传送图片数据到VRAM
! T+ X9 K0 B5 ]! V5 m1 V' Q. s: j+ o& E - loopl:
0 L( V7 a; V6 w! ^* ~* c* l - ldrh r3,[r1],0x23 X( R( A9 u: x) r5 V
- strh r3,[r0],0x2
4 @" Q# G; |( k- p: o - subs r2,r2,0x1/ I' r* I! s% a- k' @" k6 k6 z
- bne loopl
! o; v% R. H) b! ~ - ;进入死循环( R% Y: ]% c! {/ d, C
- infin:
5 ~' z5 m9 H6 X* u( @, f' c - b infin
7 `% r2 B& S. m. }- C- S% ~ - .pool3 X/ q( V1 M3 F7 q! E0 V6 E0 v% ^
- ;导入图片二进制数据
5 F& H% W0 S6 k1 {" y8 Q3 c - pic:
0 Y3 I& J- I. [2 s. i - .incbin "16pic.bin"
# i$ x l- _, J& o - ;在0x08000000地址设置跳转到主程序入口
4 R+ ~2 D: E; J! c/ { w$ e7 @ - .org 0x08000000( f/ l" Z2 u" H4 n
- b main
) j* }, H6 r! A( z( f, z; w. d - ;关闭文件+ F* J% T5 \0 Y: A
- .close& E4 y, w; c }* [
复制代码 1 H/ X' ^" X/ u( U8 U
保存!
2 u( T+ _, |4 l, O
9 G- e% c! Q1 T4 o5 w(5)把16pic.asm和16pic.bin复制到armips目录下
. Y4 O2 d: O- O9 g* y7 \- ?* z* ]. K6 n3 _; x3 g3 C6 g; t+ |5 p
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
- c4 \) f$ B2 @& r& l, o5 c7 Y! |$ v* b$ r1 S
(7)用GBA模拟器打开16pic_demo.gba观看效果
3 a& I+ w0 {3 j: n/ ?2 a
* J! T/ _3 E7 N% S4 R( }7 w& ?" B) r' b% x5 C7 x
, g- I' `0 y8 |3 }; m
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)" |" `4 Q; T; |! d- V
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|