签到天数: 1934 天 [LV.Master]伴坛终老
|
, V* F7 O( y' b9 a( n1 S
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
1 K( A6 q' m/ ?: A- G T' p0 E" R
0 U9 |$ }8 l% _" I) b这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
f( K" s8 M. Y/ B, @% i. I" a1 v0 u+ T
(一)准备工具:- z6 L, v- J# ^* X9 G
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
4 [/ ]3 p8 X% r. Z+ u/ S
4 |. P# x0 D/ C0 w" N# |. t. TARMIPS作者是Kingcom
7 e) B& n1 G2 r5 BARMIPS源代码github页面:https://github.com/Kingcom/armips
0 |( `& X5 s- h! cARMIPS Automated builds页面: http://buildbot.orphis.net/armips {7 l$ {7 _; `
( }" H0 b) [! B' z: O2.一个将图片转换为二进制bin文件的工具bimbo 1.3% ]0 W2 {) V) K2 |/ H* ^& G
5 G( [$ l# _; O/ \bimbo 1.3作者是Aleksi Eeben
0 n o3 Z5 D/ f+ _ n! L1 |. Y
4 `" Q* C7 `% a: A; Zbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
3 ?' x& C. w5 O" S" }! Z: H
9 D* e7 o% g$ f/ l8 a" m4 t" a4 T% Y3.一个windows自带的画图或其他图形编辑工具) |6 \9 F; _6 E1 g
9 J$ L3 t# v3 x3 n- {5 j. \4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
5 i' V7 W; q7 }5 K0 U+ k, L* s
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
& |7 c& i3 ], l, r# x' }# ]5 k4 r$ R: D5 \; T
8 O$ ^7 R! P0 s+ z
0 F3 t' g# w) H2 T' h1 R. _(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
! T u1 M# y0 W# M! Z
! H/ v- |3 o1 a% }# Y$ P' }# O4 w4 F2 J, ^( e n
0 a e& b$ s% ~(4)新建一个文本,我起名为16pic.asm,文本内容如下:& I8 n( `( l# d$ Y* Z
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
$ b. b* V& K3 D( E, {8 G/ ]* z - .create "16pic_demo.gba",0x080000007 f; I+ F9 Q. {3 y. o6 g& m
- ;设置为GBA架构& ~1 w# C; @1 `5 Q& @: r
- .gba
- U j/ t- S, b$ ~' z9 j }0 I - ;设置为ARM模式
& @4 f0 F& `: V$ c - .arm
7 B4 J3 U" |3 F% c1 m - ;设置起始地址是0x080000000 U1 V+ J. H( [8 C) X. R
- .org 0x08000000
/ E4 j* e" s7 T: _, ~ A - ;创建长度为0xC0文件头数据区域
8 U' \4 n& U7 P/ b; b- { - .area 0xC0
0 N" ~5 u& [% m5 m, P7 H4 l% I9 V( ` - ;填充文件头数据
0 \: }/ o8 q: }. H& u, { - .fill 0xC0,0x00" f8 T/ N O( W( P6 Z
- ;区域结束0 C, v' D, }/ \* P4 X$ S3 G. X( L
- .endarea
; l. s& V1 @5 w9 [# ] - ;主程序! x' c& b8 T) {
- main:& l+ H" n: l& w' P- r/ d
- ;设置屏幕模式3,BG2开启
: m7 L& @0 f/ m. Y" n5 N/ \ - mov r0,0x04000000
l0 |; W' g) C& B - mov r1,0x0400' c7 U* L9 [' R( c2 s' J2 u
- add r1,r1,0x3' p& a* ]# Q# j2 a ?! B+ W" F
- strh r1,[r0]' B5 L( o6 V# Q5 b4 n" k
- ;设置VRAM起始地址2 w9 W+ j" w) `$ y
- mov r0,0x06000000
/ C2 H4 M, F! { - ;设置图片地址
# `" s, T( f1 H h/ n4 U - ldr r1,=pic
$ l: }6 C/ ?7 H - ;设置数据长度为0x9600% z1 ?; D+ Z5 r' j+ z j
- mov r2,0x9600
& R5 x" e7 Q0 U1 E6 f - ;传送图片数据到VRAM! ?( z$ Z0 h# [( m
- loopl:
; E$ Q `, D6 M4 D - ldrh r3,[r1],0x2
: K$ T: p( e1 U; X) U - strh r3,[r0],0x2' \9 ~1 ]# E! r% R# L* U
- subs r2,r2,0x1
) U" k* [1 ~9 M7 Z - bne loopl
/ j) U5 F0 c. E& O. c - ;进入死循环 d. o/ g4 ^$ P2 A( G
- infin:
" c* G3 A7 D; ^0 n, F - b infin
W4 R+ R: H( R8 i1 Y/ l - .pool
/ Q$ i% v$ j+ L% x" f) e - ;导入图片二进制数据
- o s1 m, [, _' s - pic:8 G* c. b0 _ L
- .incbin "16pic.bin"
* T# G" R4 @ _$ u5 B - ;在0x08000000地址设置跳转到主程序入口+ t5 p5 V! b- o _; b3 U
- .org 0x080000002 K& k6 T8 i6 Y0 x9 u
- b main
* N- ~+ ]( @% I - ;关闭文件9 h/ @2 G; ?7 p& A8 c% U1 y$ D
- .close& S7 u T; S, {
复制代码 ; G: J" }( r" Y7 n- j* ^
保存!
8 d: y/ b+ ^8 e% _) ~- u' }' ?
5 w8 l' S6 }9 M& J3 j# c(5)把16pic.asm和16pic.bin复制到armips目录下
3 N- l2 Z2 }5 d+ d& o8 m" m! h9 j3 t: h
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件) i9 B* x* V y0 _
* Q2 \% `( V' E, U; g
(7)用GBA模拟器打开16pic_demo.gba观看效果4 G% ^) O( ?( l+ S
% k* `- A' g& m% f1 y9 U
: G0 \+ q1 |( h) h% o0 w
: [4 h' N- N$ e" @关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
* B# @, m! U: W2 B0 j& w |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|