签到天数: 1975 天 [LV.Master]伴坛终老
|
8 E2 j0 O& j: |" D+ u当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档+ A3 @' f m* N9 Y6 @
9 w8 Y$ ]7 B7 g. \ j0 e( c, L这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
5 K" X5 W0 h$ D
! P# L. g+ ]( ?8 v/ z- h(一)准备工具:
) ^8 L5 _. Q( h y0 F* a) _$ k1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
' a6 E& V. f* S2 o9 ]4 c$ I C& h" \$ X% p2 @4 ~( s
ARMIPS作者是Kingcom
/ F6 `! X) K% j' D+ s8 M0 b5 z, fARMIPS源代码github页面:https://github.com/Kingcom/armips' _$ Z6 `" L3 I7 J' U: u2 y4 e, M/ ]
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips* ~, Q' n( P# B; v
- a5 |+ B; P) ~% I$ ?- I3 W% v
2.一个将图片转换为二进制bin文件的工具bimbo 1.39 P+ A1 _1 y" W! ~, k( J: H! c
$ } |6 C& D3 H2 k% w" D5 C7 ybimbo 1.3作者是Aleksi Eeben8 W1 l# {0 Z& u; g5 q5 W9 L
1 ]+ e8 a0 L2 b1 I
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
9 {7 L$ v t# H! Z
$ s/ s. n# M* c4 C" G3.一个windows自带的画图或其他图形编辑工具) x+ I; X0 i8 R* s) H3 W- O3 k
! `7 [2 ^3 n, N; }
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)) \; d+ |* j, ]; k# u& e
4 j' a b; x+ J/ l5 d7 E7 ?(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP' A8 [& B2 P( k7 }/ a! F
m3 `6 M! j* w. a' E0 E+ S1 ^/ b5 u7 o0 _2 c
+ M( Y4 \. t" m- ~( \
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin. q/ ^7 ?8 y/ D, `3 E0 l9 ^/ q
8 t, K2 u1 z! n6 f+ Z/ R: V' t% r5 y
* J9 M- g# b) Y- U6 v
, z: L' k5 A( I9 T5 E, F+ n; @ S(4)新建一个文本,我起名为16pic.asm,文本内容如下:
) f2 T, L2 O6 l7 H- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000! B* V1 M3 f" M
- .create "16pic_demo.gba",0x08000000
{; X. F3 y( L. c+ v/ }6 \ - ;设置为GBA架构
" _% l2 }( T( K( E2 L0 ]8 K - .gba$ j a% ~5 i' j. B# `% D9 M
- ;设置为ARM模式9 Z6 X3 i$ @- |
- .arm
8 G' X) E x5 s; s1 Y/ q - ;设置起始地址是0x080000004 U; O5 T2 Q& [6 X5 ]. y
- .org 0x08000000
1 I D" ~7 d( Q8 z% q - ;创建长度为0xC0文件头数据区域
3 T' i, w0 R7 n7 U# C - .area 0xC0
: I% U2 I' U2 k) `# K$ B3 n - ;填充文件头数据
! ^% r$ v* U0 C& U9 d, f/ p0 ] - .fill 0xC0,0x001 K; I% ?- z6 F4 Z: f1 i' ?
- ;区域结束6 i& o5 k2 o$ ]& [" {0 `# E) h, r* o
- .endarea
$ z2 c& y0 d, Q$ I - ;主程序
2 B8 k9 p* @0 v) f ~( h4 e# A - main:
9 R b) A# f# e/ j% {* T - ;设置屏幕模式3,BG2开启$ a9 p' W6 {+ s; }
- mov r0,0x04000000( O) w# t3 e4 n9 P. w3 T" Q* Z
- mov r1,0x0400' e! E |6 v+ x( `
- add r1,r1,0x3
/ \& X6 J5 J/ u$ ~. s+ a, J - strh r1,[r0]
9 D& P) ^8 }9 ~' C( }" @! V, g - ;设置VRAM起始地址
; c4 Q9 J. Z6 [* B* q( h: ^) a& o - mov r0,0x06000000) t4 N( w7 Z4 W( d; Z3 h
- ;设置图片地址
+ P4 J- }2 Q! c- g0 d8 y - ldr r1,=pic5 N6 r5 P6 q4 w5 \- K4 K
- ;设置数据长度为0x9600
4 ]/ ?$ v$ L4 l$ C- R+ G9 n- C - mov r2,0x9600& G( p" v) ?) J
- ;传送图片数据到VRAM6 n# [1 I& H8 d+ Z/ K
- loopl:
( U& K9 L, y0 E- ]3 r1 H7 N - ldrh r3,[r1],0x2
) @ F, P* I ?+ K1 g" [ - strh r3,[r0],0x2
( y9 p; h# n% @1 d - subs r2,r2,0x1
5 E" G' a5 l% ~. \5 u - bne loopl
8 Z6 J9 t7 `) f; h8 p - ;进入死循环0 J- I5 a ~5 D, r
- infin:
x6 w: S8 \- F) R - b infin/ }( T7 O+ x9 f- t$ a3 K- G- O
- .pool
1 A7 s5 w" U4 B - ;导入图片二进制数据
) W5 Q3 |2 k6 F- k L. d4 g: d' W - pic:
, y) w$ R: ]4 y5 h# s/ Z: s4 I - .incbin "16pic.bin". M2 ?: Z7 f2 ^; r- k: I, [( c/ s+ P
- ;在0x08000000地址设置跳转到主程序入口7 ?5 t8 q' H$ n5 R7 ^& T
- .org 0x08000000
+ j- R$ w0 I" i* h - b main
5 Y) j4 ~- C% m - ;关闭文件& h ?3 a9 D7 [6 Q1 r3 Z
- .close
2 k, W8 u6 M1 h" B# l; a% g. n
复制代码
6 t1 |7 i; T& f保存!
: o! f5 O0 m/ t- N9 e0 B8 Z. A; P7 g5 V: Q0 Z- h
(5)把16pic.asm和16pic.bin复制到armips目录下
$ B1 A5 d! Z$ J' O
) v9 U8 ^: r2 c6 R+ J(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
_* g1 C3 [) X( u* d7 l! ^% \& F0 {$ B6 ~; E% `& J8 z. y
(7)用GBA模拟器打开16pic_demo.gba观看效果- T4 B& y' O$ d/ E. C
: p4 v U7 h$ W) }; J8 b4 Y0 t+ A* w/ i- A8 ?7 ]* @. ^( ?0 \1 M
3 `" b1 Q2 }" u* ?: J; `1 f关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
" A) T4 Q/ a, C3 ?" r8 e2 x. u |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|