签到天数: 1973 天 [LV.Master]伴坛终老
|
2 V" p" {8 @* p# K* L当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档+ G2 [$ L+ q# }3 {2 L9 j9 g
( `0 D+ k, U9 N1 f% d8 }这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
2 S. |8 o% i$ i% g; |: u8 S" A1 V; b4 v T9 f3 K
(一)准备工具:( h( Y9 C9 L \
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
- z* X3 S# w: D! i9 \6 H& Q7 {% r8 I2 [9 Q; _
ARMIPS作者是Kingcom% O# p" l+ ^$ s/ N# S. Q2 b/ u% k
ARMIPS源代码github页面:https://github.com/Kingcom/armips/ ^+ T5 S8 b, m H1 N
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips6 g: @& K: c+ ~! S- _" k
( t6 p. l& b. L( t6 K, ~2.一个将图片转换为二进制bin文件的工具bimbo 1.3
- E" q7 _+ z' `# T6 @" w. Q, e8 H1 R; Y- n
bimbo 1.3作者是Aleksi Eeben
n1 X2 x, B: u6 e3 U" R" b( d# A3 P# D: E/ N3 w$ P. Q
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
% D3 @3 |! a1 p) H3 C
& k6 s( f. t5 f" H ]3.一个windows自带的画图或其他图形编辑工具. R V9 I- a1 E2 c4 B; I( N
0 X& G- \9 }, K. f7 _, l4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
, j/ L! m' j+ X( u; V( o9 h. M0 {; C. c' f( P" U0 Y
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP! Z' g- l4 t; ~( N" U4 y( L% g
% Q+ i5 t$ ^ ]8 ^! Z! v
3 m7 Y) m/ R5 r# C7 V. Z$ O# C' t
{ h `2 u7 A% c# h6 V(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin @" y/ c3 ^1 U( b4 O @; s! C
# L" @8 H0 N! t8 u o
+ r) ?" P* @" V( N }* _/ D. U- V' `1 R5 k7 P' K% y- \
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
- A) ]+ U$ o2 C0 I- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
8 L5 F: k8 M7 h1 T4 I/ Z! U - .create "16pic_demo.gba",0x080000000 E- ^, j D9 n; o- Q# l
- ;设置为GBA架构
! _. M# I% |3 N2 V/ C2 ]( D - .gba5 \* a' j- B6 U) N4 i9 ^; L
- ;设置为ARM模式8 O. L& q* X; E) g8 [
- .arm
0 ^. _6 V( [" E - ;设置起始地址是0x08000000
# r: }2 r4 M$ k, _$ G - .org 0x08000000
. p0 X& K# ?6 W( ^' ]' ~ - ;创建长度为0xC0文件头数据区域4 z0 w. R; M$ I6 U! P+ j5 b3 N
- .area 0xC0
6 |3 {' B4 _; d: K! @: D/ w- N) C - ;填充文件头数据7 n9 _ T, u1 {4 I; C& ?8 t1 L+ v1 J
- .fill 0xC0,0x007 U( P+ F7 c, L0 ?2 e; c
- ;区域结束/ I: P& B& ~& E9 F; S; [# c
- .endarea) a/ n S3 t( d( F6 z3 \
- ;主程序
+ Y: z9 I3 @* f+ c - main:
9 `& B5 y& y, n- J+ K8 ^( P - ;设置屏幕模式3,BG2开启; A/ E% t( T; S; u3 K
- mov r0,0x040000004 l) L2 I- j) K1 T i
- mov r1,0x0400% W+ _) `& b9 e* h6 A( g
- add r1,r1,0x3
- T3 } ?( L; x& m; ~ - strh r1,[r0]1 j% i& `4 O `" X3 b; f8 d4 ^# C$ n( }
- ;设置VRAM起始地址
" k2 |2 b* S- x7 N6 x1 `9 Q - mov r0,0x06000000
! h. L: }4 e" X E$ r - ;设置图片地址5 B# C! @! p2 N) j2 P
- ldr r1,=pic4 }/ A% b) D; V
- ;设置数据长度为0x9600" K! k2 A$ E' d4 u# b. S0 J F
- mov r2,0x9600! K! ~( I7 r! g0 `9 E5 A
- ;传送图片数据到VRAM( \" r1 I+ @9 ]7 _4 M
- loopl:
, P7 Y( r0 v9 @3 ?% f/ t0 N3 i - ldrh r3,[r1],0x2. Y |6 { F6 t+ t) i
- strh r3,[r0],0x2
/ L ]7 g; ] a4 b+ t - subs r2,r2,0x1
8 A+ X- H& m1 p) J$ e! M! M - bne loopl0 q: |4 P1 V% r5 x' ~+ s1 e
- ;进入死循环 y+ W7 s4 P2 ?+ L; v( O
- infin:& s9 ^; ~$ E) M/ I- X
- b infin; z$ o+ |# G! E" D$ l$ P) J% \; [
- .pool
) C& n& B7 A: C - ;导入图片二进制数据
" E( L1 g$ x, d8 }0 r7 ~% n - pic:- j. f+ t7 s" e* K0 L0 ]
- .incbin "16pic.bin"6 Z3 m: z( S! k& ` S6 N& j3 q
- ;在0x08000000地址设置跳转到主程序入口# X- m! @( ]1 U, s. n. v( ^
- .org 0x08000000
3 q* U' r( N1 g1 @ - b main, J3 z7 ^$ t7 t) t z+ z5 x# i
- ;关闭文件! s1 ]0 u( H. l# J1 I" I9 h% I F s
- .close0 B' B5 L, I- T r
复制代码
8 a, e R3 \8 U% {保存!
; J' M6 @1 r3 |0 J/ W* c2 D
% [/ o% f4 ?% ?8 ~. X(5)把16pic.asm和16pic.bin复制到armips目录下
: J/ F8 D7 c4 ]) n
3 c+ L C" ]) @# A9 R3 g( y% w(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件 J" S3 s# X S$ n" C; l* W( M
6 ]" @! F- ~! b& z W' B(7)用GBA模拟器打开16pic_demo.gba观看效果 N8 s8 p& O2 y5 l% p( s
/ `9 j7 m1 n5 g6 i( V6 O9 F! i% v! t
, S0 r" b( D9 h8 }: Z+ O
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)5 R- G% X* S: a4 r
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|