签到天数: 1825 天 [LV.Master]伴坛终老
|
9 d5 x: b# P5 u; m
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 E: n, i1 {; }, d; i' D2 T
d, v, M. D3 Z2 m这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
0 B+ V& j( r; @6 e8 B
( V$ ?! g& ]9 X9 H+ }0 j(一)准备工具:
$ d- ?( e- \* j2 i/ P& X. h. i1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例$ S6 A, [" }7 z! o$ v
: J5 ~ T( V6 d
ARMIPS作者是Kingcom/ V- o& y( T$ |; N- F% X& v. R" J
ARMIPS源代码github页面:https://github.com/Kingcom/armips
" @7 Q2 x! {9 L, O+ b- \8 S( d6 [+ yARMIPS Automated builds页面: http://buildbot.orphis.net/armips) l2 o8 C X( V4 _) G. X1 Z1 ~
) W& |8 Z3 S! j
2.一个将图片转换为二进制bin文件的工具bimbo 1.3: d' X( U- g1 }! P, X- J. |
+ u: `$ }0 V8 ]* n" ^ vbimbo 1.3作者是Aleksi Eeben
3 J1 K$ ?7 w# i2 A9 A) \
' W2 Y" `5 O3 m+ Z" i" L8 tbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
* y6 z& F: B! U# s; W& w4 T+ y7 U. E9 O1 j
3.一个windows自带的画图或其他图形编辑工具
1 k! d8 K5 U0 q& v" o/ i7 ?9 ]. {
/ x; G& {. j* M! J1 L4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
- g: F; W% t9 `4 j `' W; c# I6 N
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
3 r( Y+ I, }$ H) u' `) d
- L$ {! v T- u! Z$ B% Q" Z( L5 U1 h: k) u1 x8 B" w( l
7 R0 A" ~4 U: M: l& {. S(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* I- E% k0 q& k5 q* D& x Q
3 q9 c- w5 C4 j4 M2 ^6 M5 w" b4 c
: k, d" N$ }1 {) W! ^) E; ?
+ Y" Y4 f/ H& b' {# p(4)新建一个文本,我起名为16pic.asm,文本内容如下:
* ~) o9 @, a0 E5 \5 o9 D- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
& n* @5 Z5 s9 g# d# i - .create "16pic_demo.gba",0x080000000 F' T/ ^: }0 f! I0 I) L# I4 e9 Y
- ;设置为GBA架构' w2 y, ?+ E3 ^& x5 u s' f4 Y, t
- .gba- p6 P7 v* w: \
- ;设置为ARM模式
! [+ |6 `, c6 P - .arm
% B' ~) J# [: W' b0 q* T, ]+ @ - ;设置起始地址是0x08000000
5 x" d U3 S3 Z! _$ \* W6 L - .org 0x080000006 u/ s* q% I5 [% ]
- ;创建长度为0xC0文件头数据区域
C! W+ T9 `0 M, ~. r: G4 h2 s4 n5 ^ - .area 0xC00 P' G7 T5 {' n
- ;填充文件头数据% h& F7 M, q+ a" m
- .fill 0xC0,0x001 s! y! Z5 g( [2 S. w6 M) S9 O
- ;区域结束
6 @8 z' W9 y6 X( ^+ d - .endarea
& [2 a; t& ~, Z7 l - ;主程序
8 f7 v x; u. F/ ~& _6 [" g# ]3 T - main:: u( V2 L/ L$ T! Z! r0 @
- ;设置屏幕模式3,BG2开启
7 P3 t( r" ]& Q, f - mov r0,0x04000000
7 k$ l7 L/ y* p6 u - mov r1,0x0400+ i6 s/ e1 {* U. ^* }6 }; `# z$ R
- add r1,r1,0x3' f( m r4 m% S& [+ c
- strh r1,[r0]
, v4 A; P; h9 b - ;设置VRAM起始地址
, J& F$ ^+ L$ i2 k' _! Q - mov r0,0x06000000
8 P+ p0 E) S! w+ G - ;设置图片地址4 |; m$ K" I8 U& r3 P& A& ]; F
- ldr r1,=pic
4 K9 j/ G, k8 K! \, c' U& ?7 T1 |! N$ p - ;设置数据长度为0x9600: `+ A: D8 j3 {
- mov r2,0x9600+ }9 r; F" e4 e8 R
- ;传送图片数据到VRAM1 {4 i5 w- I2 I/ H5 ?
- loopl:
4 M0 n( f R/ s9 f! H' X8 ?$ O - ldrh r3,[r1],0x2& x; j0 h8 E! u6 l6 |+ H
- strh r3,[r0],0x29 ?: o; ?9 ?2 ]9 M; O; P
- subs r2,r2,0x1
/ R- w" I4 B) c, L" Z2 e& f - bne loopl% k, K0 E# c. G. ]* ?
- ;进入死循环5 F% T# G% S6 ]9 f+ ^6 ^& u3 N
- infin:
0 m; A) ?; [+ M8 Y( G+ } - b infin
0 f8 l4 s7 p# N3 w6 w - .pool: Y6 K/ W L- @7 J
- ;导入图片二进制数据
/ `) ^! C2 i& K4 w8 f& S - pic:
, m2 {- ?" T7 m' |* {, P - .incbin "16pic.bin"
$ J @3 r: n) k( l* z. j - ;在0x08000000地址设置跳转到主程序入口9 L! |, W3 f& b, h4 q9 [- j
- .org 0x08000000
6 V- b7 k4 k# G0 ^8 m- n' q7 s _ - b main
6 w6 J% R6 B% R$ } O' f2 v* W6 u - ;关闭文件 I% k- m: u( Q# P( J0 [
- .close
7 P* {5 [6 @' o( Y
复制代码
, l9 z6 r" Q0 @4 j1 P保存!" L6 j. i! L. \; k; R; j7 s n
5 L; w4 [: U5 r$ i% d
(5)把16pic.asm和16pic.bin复制到armips目录下
, I |& y: F: Z9 v) ]; u3 g; k# L+ J: F
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件# Z" Z: i0 Q0 M$ C( G7 }) x: a& q
/ }* w) { Q( S
(7)用GBA模拟器打开16pic_demo.gba观看效果
. y' v4 y. R) @! S8 W6 ]5 o" l- F+ R
; c) @9 L' H" O T
6 l/ G& c& t$ p# g- @; f& ~/ n关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
* u1 }. _8 O( T4 F7 S- q |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|