签到天数: 1973 天 [LV.Master]伴坛终老
|
/ H# Z& a7 d5 k& _/ _! G) @: z当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
. [. k) W a+ |' c! } e8 o- `- p" i* @# A* v4 W* @. Q
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧# v0 J6 l. X/ u8 b% g# y
: E# |7 t ]' h% U' v' s( O$ K' S(一)准备工具:
, q% s% w9 `2 N5 q* J0 m1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
8 b- c# @ x; O% S- M! a
f9 `. x0 c; _ARMIPS作者是Kingcom5 }. ]) q: Q* D( f! o
ARMIPS源代码github页面:https://github.com/Kingcom/armips3 t" f; w! ]: E* m6 }6 S& W& d
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
. ?- L# W% n# }% z. L8 L5 Y
5 \; o9 k4 r# o7 j2.一个将图片转换为二进制bin文件的工具bimbo 1.3
( H; H1 ~3 p# m" a. E7 C' U( O3 R% H
bimbo 1.3作者是Aleksi Eeben7 `, y6 t% W& Y) ~* D
1 U& ]' `4 C* R$ r- v* rbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1670 x) N7 T9 L! y" K$ c i/ A
+ H* j* b, {! Q/ o; m w9 ^3.一个windows自带的画图或其他图形编辑工具; x/ g2 w4 f7 r, `
8 g. z2 t: ^; a: \" G9 J- c
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)( A. U- ^, u. f+ J, f
2 ^3 t+ a: R' a, @/ c! ~(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
7 {! P/ {0 X, C7 l, i2 b9 G# j1 M+ U& h
( O9 A! M f9 x8 G4 Z% w( ^4 E# n( ?. W/ _0 o& k0 I) Q
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
7 h, N' f: Q$ T7 L- r) u* t) a" V
# }$ ~, E* F0 r1 A$ u" u. x, E: V5 Y4 j) Z3 ?& @- ]- v2 [
4 q% h3 N& n; @4 b2 N8 I7 X(4)新建一个文本,我起名为16pic.asm,文本内容如下:: C* F5 t* }0 c) R
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
! K9 B. J% d$ v& u - .create "16pic_demo.gba",0x08000000
% C: @) e: r; t8 s: x. O - ;设置为GBA架构
: j2 W& B4 }9 |7 t0 I2 F - .gba: J. i+ F0 p+ O; }: r* O3 {+ n* v
- ;设置为ARM模式
3 g! s- J5 D6 N4 y1 Y$ }: h - .arm
& {% I* O/ A5 m% K- s9 L2 w- D - ;设置起始地址是0x08000000
d0 _7 P; @ ~6 N% o - .org 0x08000000
4 y" X* {% V# Z2 z' K2 r0 a - ;创建长度为0xC0文件头数据区域5 K( t S, `7 Y+ }( I
- .area 0xC0
0 h- i8 u9 q3 v4 c3 [ - ;填充文件头数据
$ A$ z( x! y& v6 a - .fill 0xC0,0x00
; M7 x$ U1 k2 A$ a$ {( q: \ - ;区域结束
8 U# F1 @% A& u1 f* A& E - .endarea! d6 H- a2 f U- _) Y8 N- c$ K
- ;主程序6 y0 Y6 Q/ w( o \& |& {
- main:
9 @( c7 c) s3 G" v; B* P% a - ;设置屏幕模式3,BG2开启, K% I5 X" d1 K: A$ g8 }. i8 H
- mov r0,0x04000000
( t. y! v/ U# B* j; y9 F - mov r1,0x0400
* A0 {! `9 G1 `( J+ J; P - add r1,r1,0x3
: a$ x+ u" `' x, ^ - strh r1,[r0]
# E4 W; Q9 z' ~( t/ n - ;设置VRAM起始地址- z! p+ v- [3 m$ S
- mov r0,0x060000000 e# z: d) v: t. R$ n
- ;设置图片地址
5 j8 I+ f) Z) l7 W - ldr r1,=pic1 y2 T% O1 H |2 J/ D r/ J
- ;设置数据长度为0x9600
: E9 y/ c1 E' { k; u - mov r2,0x9600% E3 @3 B9 o! ?2 B1 u& E" \
- ;传送图片数据到VRAM4 Y5 e9 Q8 A, z! P- i
- loopl:
6 W/ v$ l# ~+ Z1 b" c! L - ldrh r3,[r1],0x2
8 ~' b' o& x1 U2 O - strh r3,[r0],0x2' U) A: l0 j4 [/ }' N; D s$ n. c
- subs r2,r2,0x1, }! _7 G5 O! M3 b, ~8 q! j
- bne loopl3 J. H/ {7 U { C+ v |9 Y" s9 C' X8 l
- ;进入死循环
; M, o- e( I+ f5 s+ Y" V - infin:
L8 A1 o' D+ W/ Q4 _4 _& a* G - b infin, N1 M. J: v2 A7 a0 b" b( _; E4 L
- .pool
- v/ X7 r8 x6 z! m, U- s8 k0 U8 g - ;导入图片二进制数据0 ]7 d: x9 l' U; [( w8 l2 e4 `. {
- pic:! Q$ y& ^9 `) Q! E0 c! N) o3 n; ?9 c' T9 F& h
- .incbin "16pic.bin"1 Z3 x6 X( P# p$ C
- ;在0x08000000地址设置跳转到主程序入口
' S% ^9 Q ]6 z) [$ _% Z - .org 0x080000004 g5 ?0 P' q& m- V- g9 W
- b main
. `' t4 b/ p/ ` - ;关闭文件
, P" n9 m2 Y' V - .close
' ~2 c+ @# D+ F a6 B! p! E9 u
复制代码
& C9 o: }7 h6 n0 t# u+ P( _保存!5 d. f! t# B+ b" x
! i+ v% ~) F+ O4 A: W0 }3 b(5)把16pic.asm和16pic.bin复制到armips目录下
& Y& d i0 z, Z5 e- i8 B+ c) t# }% s* Z! [
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
3 [/ L. ~& C6 x3 [& l' F3 M4 [0 A3 j% {
(7)用GBA模拟器打开16pic_demo.gba观看效果
; n( S8 H) Z1 _2 [$ s5 i* Z9 h+ n6 V8 e. x/ k9 A9 M
9 F" n9 j8 i/ O: k
- V/ h X/ Z( [
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
: k6 V/ H, W4 |9 W6 l |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|