签到天数: 2073 天 [LV.Master]伴坛终老
|
! [, W- \+ w/ L# c; u当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
! i; ?" V% ?) b- ^& Z% }
2 d1 S1 k( n3 n0 v$ Q1 y7 Q+ J2 M这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 P! M2 d, W# Z, x L+ y0 z( Q: q6 f0 [! Q* \; _" M7 E6 v6 w5 D
(一)准备工具:
! l' \% ~+ J3 Y) l9 x; n2 m$ z1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例' E+ D+ t" x- T0 U
7 W6 m; K' H+ \
ARMIPS作者是Kingcom
2 }# L0 j+ i. _ARMIPS源代码github页面:https://github.com/Kingcom/armips& K0 x- H. g6 Z* N- s8 f
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips0 q7 |) X! W+ T, q+ x. V
% z) v! x- z; m9 d
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
2 R3 W" v3 @- w1 ]$ R- k. S* c
$ { w2 k- |4 pbimbo 1.3作者是Aleksi Eeben
( m' W( a1 z4 G1 [% \- F; M+ E: O; v* {
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
6 s. E8 x% {4 z0 d, M1 V5 M6 K3 ?. O& D4 T6 S5 I1 s+ s8 p
3.一个windows自带的画图或其他图形编辑工具* J" W7 G9 y, d# V- \ r
k$ R) |2 ?$ `" w( x& c
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
9 N' i' T7 h, x* T8 \. X {# ]- [* g1 I8 O9 v# a) N3 J
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
; z& }9 F ?8 A; `: G$ z; h: F! A; U3 j& m8 }2 [& u& f1 `
4 Q$ U7 O/ y4 l3 L3 H4 @: e9 [1 f9 Q
& h% m0 W0 O- L5 b1 u& s$ p2 ~(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
j+ q/ Z4 T/ f( K2 H6 G
5 Z9 B; W" S- Y# d; T) {
) G& N0 t8 k( [0 Y& _- h U8 l
# a2 K3 k( h8 A! r; o(4)新建一个文本,我起名为16pic.asm,文本内容如下:; S- {8 |& b; D- W* |( H' u
- ;创建新文件16pic_demo.gba,文件起始地址是0x080000003 t- `5 [1 G# {
- .create "16pic_demo.gba",0x08000000
1 V5 s; z$ F1 I: |& ^9 Z6 y8 W - ;设置为GBA架构
5 E. J6 W+ ~& b$ l ?8 S3 w6 Z: U8 h - .gba- \3 f% A/ ^5 f4 l) C1 P
- ;设置为ARM模式
! S7 Z5 k! z( y+ Y* C& p$ c: H& h9 q - .arm8 s' M6 Z! m! {! q; i
- ;设置起始地址是0x08000000$ y- Q1 u$ p r
- .org 0x080000001 V0 b8 `7 e; C# c* ] V
- ;创建长度为0xC0文件头数据区域( M9 C' k& Y$ H9 r$ H
- .area 0xC0! {. K: `& w5 A
- ;填充文件头数据( k6 X2 J* z0 ]
- .fill 0xC0,0x00
' [5 f+ ?( b5 C& ^4 H - ;区域结束- J Z" i0 U) s/ d2 T0 f7 y
- .endarea
/ B) C9 W9 ?4 d! d' U - ;主程序
1 ?2 R6 z' y7 I i+ P - main:
- C* \ m" M2 p - ;设置屏幕模式3,BG2开启
% C) }" X, C, g/ _. U - mov r0,0x04000000
" x3 H$ X2 m* r* O8 q* r% ` - mov r1,0x0400- O; F) W, v) ~% a" L
- add r1,r1,0x3
' v6 B ^: @5 B: [8 v( A - strh r1,[r0]. x% C* P, n( S: {4 k2 `
- ;设置VRAM起始地址6 a9 }3 V6 W1 u6 D- B8 d
- mov r0,0x06000000: B9 {; j# ~& w
- ;设置图片地址; F4 O8 U) a; M1 }( q
- ldr r1,=pic
. Z" a7 K" @$ _( N( V - ;设置数据长度为0x9600
: E3 ~: _* o: o8 @, B - mov r2,0x9600' N4 A4 @& E q' r3 }" q
- ;传送图片数据到VRAM
, @, ^. x7 L0 l - loopl:
! {. o5 _! ^) a: t+ F5 Q - ldrh r3,[r1],0x2: \6 H* t) M7 w# ]
- strh r3,[r0],0x2$ l f0 F/ l2 Q: r! k
- subs r2,r2,0x1
- n k" {! {8 _5 Q& I) S/ { - bne loopl
6 |: a, U# ]5 R. j0 ^( |" o - ;进入死循环
$ j0 T5 a& B3 Q8 m6 g! S - infin:. I1 s5 g$ m& u. Q8 g' J4 a
- b infin
: E" G, D+ ~+ O2 r - .pool6 b' [! s4 e" M+ ^& Y7 D) s
- ;导入图片二进制数据) e2 |2 `4 v0 M; F0 q
- pic:
3 D' A" q% k/ c6 K - .incbin "16pic.bin"
: ]4 U/ z# p$ S0 G/ y - ;在0x08000000地址设置跳转到主程序入口
6 a6 z2 Y8 E7 M1 ]) g7 X( | - .org 0x080000008 ]9 _7 j6 Q# Q& {
- b main! C1 @# }* G$ L' U$ J% F9 T' e
- ;关闭文件8 U- x1 ^2 P; O% T& j
- .close
8 n2 ?5 Z! `, X
复制代码
+ }; U2 g0 Z- C9 L- B, ^, F保存!- y+ }) M$ [. H/ L% t) U" K5 p
6 \! F% D% g. c* }% X
(5)把16pic.asm和16pic.bin复制到armips目录下' Z! g; D: \3 ]- X6 r. u$ l) }* j
3 b G' O, f2 c1 N( x(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件* P2 m) y$ g. t- Q
: O& {- @, E" @+ A, q( {8 }(7)用GBA模拟器打开16pic_demo.gba观看效果+ e4 I3 \3 Q( g' w* J( @
; }/ `1 ~( G3 a9 r/ T
* Y. N( H% K2 Z# {) u! q9 E9 \$ G0 W4 C) l8 P1 z9 l7 e; r2 \. X
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)5 K" J! t: G k B0 T
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|