签到天数: 1885 天 [LV.Master]伴坛终老
|
- Q2 V! a/ y; ?7 }7 w- n
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
% d' p8 z5 }" s/ x5 [6 F, P; m/ c+ N( o
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
& O5 _6 @4 O) k3 d7 k$ w
9 W Z( d- I \3 l(一)准备工具:
6 X; @( F3 ?2 g+ ~& K, K1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例2 ?) E+ R0 d6 t% L
( r% a- Y0 [" b: E/ Q
ARMIPS作者是Kingcom
7 y \0 C) M& S- L) @) p2 f' I2 X9 UARMIPS源代码github页面:https://github.com/Kingcom/armips" d/ o, Y a+ N/ g
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
& F3 v3 F5 A2 [& P" W. c |: V" i
/ Z0 a4 e8 b/ O2.一个将图片转换为二进制bin文件的工具bimbo 1.34 `( W) r- e5 D4 Q, k* E1 o
/ ?) s m- q; D/ [! m
bimbo 1.3作者是Aleksi Eeben
6 g- ]+ h6 w4 V& ]# [) v4 { C4 e8 {, y1 h$ L# P T& H
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167$ o7 r: v4 E- |0 T2 ^# e, m
- ~# M" M o) R+ Z9 J3 v3 R3.一个windows自带的画图或其他图形编辑工具5 m3 [# ?; O, l5 P1 q5 E
- K) Z3 C4 n; \+ e% K4 }& C. k+ a
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)1 N# ]5 x1 c' O
; g, }# D& F) ~' \" {
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP, q5 ?- H" G: K. Y3 k& U/ b' q3 s
0 E( E+ A' l8 c! [, N* a# w* u2 ~
: m; j2 i, o6 k. ?+ _$ i" B, Z+ D
6 ?: G$ N" p: \' H% d
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
& Q- F1 y/ F) X }
* u! v/ U+ u$ h1 `
( T- q2 H+ I* \
* V- d3 k! p3 e9 f9 q I(4)新建一个文本,我起名为16pic.asm,文本内容如下:8 j) h( c' b, E& C0 s
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
* c- |9 @3 K9 X! b3 Z* C u" @ - .create "16pic_demo.gba",0x08000000
" S" }0 R+ Q' k }5 T - ;设置为GBA架构
; {- I. w L& I- {6 ` - .gba
. J S2 X, U& Y" m& [ - ;设置为ARM模式! d$ B1 _" N' V: c: T, i& L
- .arm$ w( G- J, T0 v1 I. s( s/ }0 _
- ;设置起始地址是0x08000000
# a4 o8 X) W' X1 h! w0 `6 O3 t+ B8 x% n - .org 0x08000000
5 b( Y+ v4 w, s0 C - ;创建长度为0xC0文件头数据区域
o1 J' Z5 `0 h; G - .area 0xC0
( Z3 N- J0 a9 O - ;填充文件头数据
. H/ ]: k$ O& _1 }. e5 ] - .fill 0xC0,0x00% d1 p) O% t. O
- ;区域结束
0 b. y4 m8 ]" G/ p$ y) j - .endarea& f: b0 j$ M% n5 z5 t& U
- ;主程序4 Z/ [7 S7 A- u r! X
- main:
, ` K0 F/ ~" C G- ? - ;设置屏幕模式3,BG2开启" j. o: }1 G% ?5 i" p3 ^$ p. g: I
- mov r0,0x040000001 Q& g8 V, D. `
- mov r1,0x0400% S# `- S' Y3 C% A. @2 d6 s
- add r1,r1,0x32 X$ U5 ^$ R8 k2 c d
- strh r1,[r0]
1 L# _5 G ^7 K5 H/ j - ;设置VRAM起始地址
4 y- i! K- \0 |! _6 I9 }- v - mov r0,0x06000000
3 M; @$ g; \5 P* a# _6 k) A - ;设置图片地址# S8 J, z" \) ?- X/ n' g
- ldr r1,=pic1 L3 {1 b/ W- @% c1 I( J
- ;设置数据长度为0x9600' q% H3 ?! L: y6 f3 [ _; w {5 g
- mov r2,0x9600$ z5 e5 R: K. {4 Y& m) M3 }
- ;传送图片数据到VRAM/ x/ K! D( m. w1 R# @2 l
- loopl:
6 r/ [( H( o! n2 R, r5 s - ldrh r3,[r1],0x2
) K8 q. q" }! f. d& }1 E9 S - strh r3,[r0],0x2; V& D# t# l1 Y, R
- subs r2,r2,0x1
" V4 j! [$ |1 E6 }! L: t8 z - bne loopl
1 v& W; @& D' X! R% v: r3 Z - ;进入死循环% L% C: C9 @* H' `% r
- infin:
4 E- C( m7 @' _ - b infin G! p- V5 u9 Y4 R" a& A
- .pool" M1 ~# H7 k. h) _2 A
- ;导入图片二进制数据' r$ X9 k3 t6 ~# K9 ^$ @ R& U
- pic:" `- p+ `/ j- [4 d$ C
- .incbin "16pic.bin"
# S% r( R& n5 k- j5 x - ;在0x08000000地址设置跳转到主程序入口" x) Y J% C! E% T% k' u: T) t
- .org 0x08000000
7 o: s9 \% s6 E8 P; O3 q - b main" z# s4 V0 Q5 S) _! s
- ;关闭文件5 H* U p4 h- X) u$ K: |
- .close
8 S' k1 {7 G5 K ~! D2 P
复制代码 2 S1 J( X" c' F
保存!+ Z+ U- w9 M# x7 z. W: n7 Y
3 h d* O( p; G" M. {$ L( l+ {, o
(5)把16pic.asm和16pic.bin复制到armips目录下# Z" A! I1 w p U6 h* S
. Y( |0 D% T! h$ ^. t3 E3 Q
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
Y$ b6 G. n$ {! q$ I- Y+ M* N2 h W8 I; ^5 n
(7)用GBA模拟器打开16pic_demo.gba观看效果
5 S. e8 F1 O( [# P; ~9 E( {( p. j* Z7 h# {
' y- I- j4 j" C) g+ D5 Y9 U
$ X& L$ N4 h" m. X; h. J关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)5 W6 a/ Q5 E9 }8 c& ]; c w
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|