签到天数: 1982 天 [LV.Master]伴坛终老
|
/ Q+ V" |; j8 Q
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
9 ^( l% p/ f& V; U, n/ M& f) [! v- ]% @' A
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧2 g2 l7 i# p. L: W
8 D. x, I, h1 V+ E. c(一)准备工具:! c( x# r0 m) j; h
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例, v' h3 v# r' P
6 E! u* L7 ?0 Z7 lARMIPS作者是Kingcom
3 K4 ^5 V. z& l, g- {( cARMIPS源代码github页面:https://github.com/Kingcom/armips1 a% W! {2 J! `
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
( x5 m+ B l9 K" g. i1 D+ J3 j8 p3 T
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
C: b. }- q0 W8 K6 R7 n
) Q. | L& }+ ?. ~# ~8 Abimbo 1.3作者是Aleksi Eeben
4 _( J! K" E, {& x @ |9 F# c; S# {
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167* p% C% V8 f Q/ e" d# \# j
3 N! G; N4 ^# m3 N5 b" Q* T! b
3.一个windows自带的画图或其他图形编辑工具
3 w I# h( F& i0 t2 y' e+ T0 {% t- z$ r! [
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
. F3 y& q. Z4 s' @4 {) {1 E
3 n" O- l/ ?! u5 |% f5 G, c3 Q(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP _/ {- p5 r) F
5 _ o# _$ V. z" b N+ Z" X7 w
& i% S5 b8 f/ u9 C( o+ i3 @
1 n! K8 A9 e7 ^: |- K(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin d4 ~: N6 x Z& Q* _+ |$ C3 w x
9 X* E( x5 \" b5 q" C# X. p* A9 p, u4 ?
! m1 L6 ~% a+ h2 ]# D. _8 k(4)新建一个文本,我起名为16pic.asm,文本内容如下:6 G% G& M. ~" `+ Q- v
- ;创建新文件16pic_demo.gba,文件起始地址是0x080000004 q6 O1 R& G; j+ a7 @
- .create "16pic_demo.gba",0x08000000/ P- ]; Q! A; Z* k2 J3 p
- ;设置为GBA架构
3 j" C8 o; y8 s3 S4 T+ T - .gba' D" K3 y+ L8 J9 `7 J3 h: X
- ;设置为ARM模式1 ^' P; J& Q( M* }4 J5 H5 z+ s ~
- .arm
$ H H: Q( I8 i! U6 L0 f: s6 p - ;设置起始地址是0x08000000
) z$ U. A8 e [ @: w" B3 t - .org 0x080000008 ]. Z9 A- a7 w/ V) j. i
- ;创建长度为0xC0文件头数据区域
) p( f+ X/ C( p7 e6 U. W8 z - .area 0xC0' ]* E9 P7 C* O3 N/ Z: ~. ]
- ;填充文件头数据
5 h) b+ m0 @: n: S8 @- F - .fill 0xC0,0x00
5 E* R" K) \% w- a9 f2 ^( y* l - ;区域结束* r8 @5 r( v& g A9 ~, H
- .endarea* [ _; s. |$ Z" ^! s0 x8 t
- ;主程序% R/ Z# `. l- c. c1 G! j
- main:4 o( f4 N. N+ ^$ C5 i. L) @
- ;设置屏幕模式3,BG2开启6 w6 N5 D$ v9 Q$ w$ ^7 ~" o" _
- mov r0,0x04000000( n4 s3 c) y, Q: z* T& ~+ L
- mov r1,0x0400( ?/ X2 H( D5 i
- add r1,r1,0x3
) u+ I6 U8 t; X( O - strh r1,[r0]. |8 `0 N9 B) L7 v* y( m
- ;设置VRAM起始地址
/ l& u# M; c' X/ s R0 | - mov r0,0x060000007 r" g0 ^$ ^5 A0 c8 X( C' _6 p
- ;设置图片地址. Y- Y( h- }" P/ S+ _, |
- ldr r1,=pic
: |4 b# a1 s }. Q A X - ;设置数据长度为0x9600% l- A1 F/ B$ |# u% H2 [4 U
- mov r2,0x9600: d* h3 M2 W" f x5 { M
- ;传送图片数据到VRAM0 k: y2 S( M/ L* J/ X
- loopl: p3 n C; h# R! C
- ldrh r3,[r1],0x2$ s- P* b$ [" H5 g* C! L$ c1 R2 _
- strh r3,[r0],0x2
7 J' P$ v. [- K9 v: Z3 i - subs r2,r2,0x1
4 _/ I3 z8 M# F3 Z - bne loopl
5 K9 Y; ^$ E) y# i - ;进入死循环
9 [6 r) b! z8 W9 H' V. N - infin:
8 r6 `0 [4 g' K - b infin0 D0 T7 B$ Z" K/ ?2 f5 F3 Q
- .pool
1 [$ E, d" G9 ]- H0 z3 i4 |$ X' E - ;导入图片二进制数据
* c4 A/ w4 d- m. t) j$ j2 f - pic:
; [1 E; G. I* _% v5 @" W6 g7 x5 V - .incbin "16pic.bin"
0 o$ E4 L' M; `9 a4 ^! w& U9 c - ;在0x08000000地址设置跳转到主程序入口
( N* n: d* t5 _) E( i7 K8 Q3 M1 W R - .org 0x08000000$ k% T# Y$ j4 P
- b main2 U% j5 Z( s& K8 |5 p. ~
- ;关闭文件" h. R8 t. k* ~
- .close
- d2 j) M3 k/ G, h4 K- `
复制代码 g+ }5 P+ e" F& ^
保存!
- o! U2 k# J8 C2 N+ @
4 p3 t* @0 A8 R0 k7 }! N(5)把16pic.asm和16pic.bin复制到armips目录下
* z; C) F$ }& Q* k6 U( K" ~+ O' h7 ?% l0 M
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
+ a' X1 g8 \) l& I
3 Y F2 v; l, T(7)用GBA模拟器打开16pic_demo.gba观看效果
, L6 l8 i9 ^5 {% p! p+ H
3 p% p2 E+ t; S7 {. q) R- W) M" M
( j1 ]: a" ?7 ^( j+ d; E6 }' ~- {5 f0 [
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
% p. i4 M: {& s& a |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|