签到天数: 1804 天 [LV.Master]伴坛终老
|
7 P) |4 m% J0 `% R% R+ h
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
) F4 C7 D2 e( w
" N" y( J8 [0 w; V, Y- O- w9 j% Z5 V这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧# V m) j4 P \: c
, u' v, D& Y. ^# v$ D(一)准备工具:3 V4 B. h& H( k# r# ^7 {% G
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
' f( ~" P9 f2 D Q! y; j% V
* f# _( t( ^! L" {1 LARMIPS作者是Kingcom* p8 ?/ ]' S) }3 C3 V
ARMIPS源代码github页面:https://github.com/Kingcom/armips. T) j$ Q1 w* r' D
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips% O9 v0 b7 H6 l8 \1 y! ?
4 ?; p8 P0 O4 P# J% X# |' v2.一个将图片转换为二进制bin文件的工具bimbo 1.34 M# M7 G1 v- k3 P: y3 S
) L/ _& r6 C. d' S# d2 }4 _
bimbo 1.3作者是Aleksi Eeben
# W3 A) @$ _8 b/ e% R( E
8 e. \3 Y; S! e! t' |# }. fbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1671 j p; `4 e" @% T# }% {
6 V& d/ u+ n) l
3.一个windows自带的画图或其他图形编辑工具$ T! u$ f& _- k5 Q
2 R. p; ~& k7 `( h: Y5 H3 Y) t
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)* ?' \, O9 o4 J) x4 h( q6 ]
" L: f& a7 n& |' F5 L7 G9 W(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
9 R. D2 u$ A9 x* S" v: I J
( B {0 x6 n9 N
1 K5 _8 K: W+ e) f! H5 H5 B" i+ v; `- d; f0 S
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin" g: v: D8 ~# T+ ^4 h# @: Y
' V. `. o4 y* B
. E/ d0 w# n/ q& i+ c) |$ H
$ e# B _' B0 _4 n* r(4)新建一个文本,我起名为16pic.asm,文本内容如下:2 w) \5 u6 t8 F; K" y$ D# T# A
- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000' F+ } f7 J X7 t
- .create "16pic_demo.gba",0x08000000
7 V! y3 J6 l8 H* R) L - ;设置为GBA架构
& b$ |$ G( |3 w( u- ?/ \1 ?( f: P) t - .gba
. ?! z6 X* C- K) l' {: H7 d3 u - ;设置为ARM模式
6 q1 l7 r) w' O4 N: }% H4 }: Z. L - .arm
* g7 ~! @0 n. t2 p% I6 c - ;设置起始地址是0x08000000" n @; H2 O/ x$ l2 U! Z$ U
- .org 0x08000000
: z, C3 w& _+ a2 o( S - ;创建长度为0xC0文件头数据区域
2 z7 b* `/ S1 a k/ o - .area 0xC0- }1 A8 k9 k: C9 N5 j
- ;填充文件头数据' ?, E. ], D! e
- .fill 0xC0,0x000 n& E9 C4 j6 u& Y% Q7 n- ^; Y
- ;区域结束
3 H$ D% c' Q; Q+ H( ^ n - .endarea
3 f9 M6 q6 W) B* e# J - ;主程序1 |' _/ S5 H" c+ A# @
- main:
$ q$ n+ \7 Y7 Y, I - ;设置屏幕模式3,BG2开启4 V8 u: {9 {* o& B, n& l* _9 D$ o
- mov r0,0x040000009 n- y9 ?( S3 K1 @- p4 @
- mov r1,0x0400
4 W# @8 D$ L4 q# e. s# x) a - add r1,r1,0x3
/ S4 `6 t ~+ ~0 L3 P - strh r1,[r0]- A5 N; l* H6 B% O4 K. A k
- ;设置VRAM起始地址' }. Q1 O9 \1 h( R [3 K" a
- mov r0,0x06000000
4 [. ?2 M! ]) V - ;设置图片地址" R* O: L2 k( x- @ _
- ldr r1,=pic/ A2 c# r- u2 j/ N. D% ]7 J: |
- ;设置数据长度为0x9600
[8 d) s+ t; E( W3 o: q! b - mov r2,0x9600- y+ z$ C8 |. v, k6 D
- ;传送图片数据到VRAM0 F. c* o" m' P% Y5 `! p
- loopl:
! ^6 o2 H6 w# G - ldrh r3,[r1],0x24 Y. Y& R9 i" o6 I' @
- strh r3,[r0],0x2
0 ^- } ]' P8 ^2 W" ^ - subs r2,r2,0x1
! M$ O0 t5 [6 r' m: `" E2 T! P4 Y: u - bne loopl
/ W/ k0 w3 A' O - ;进入死循环
+ J/ y0 J- V! a1 ~4 [ - infin:0 u5 c9 i+ C( ~
- b infin* Z6 E% W6 O2 Z; G1 x$ H
- .pool) O# R) Z8 ~% {* Z
- ;导入图片二进制数据
8 J: f1 V' F/ ` - pic:4 C- X5 D$ x$ a2 s
- .incbin "16pic.bin". k, Y" m7 g- z
- ;在0x08000000地址设置跳转到主程序入口
* K( }) Y9 M+ @/ G" O - .org 0x08000000
: a: u4 H! E( b$ R - b main
, s [; L8 b" o6 U+ \! U0 ~3 }* T - ;关闭文件
- { Z7 \1 p/ q5 s4 {. R- i* N - .close+ _$ O" f/ z! [, B
复制代码
6 \. s6 u) ]4 ], a) a0 P" A- ? b保存!
! V; x, p- b# S i" u: D" ?; W0 j% |4 w* L# T
(5)把16pic.asm和16pic.bin复制到armips目录下: X( E" L5 R' P; c% q7 ?
% F2 E1 G. d1 U# e7 J* w h(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
2 t2 b! b- W) u0 y
( A6 S: \: `, X U2 l7 p6 ^(7)用GBA模拟器打开16pic_demo.gba观看效果8 r: _, F. H& |) j: X6 c Y
5 M( A& m$ V* M1 K0 X% \5 L7 p. r! ?4 `/ ^4 \9 f
/ l9 x. J( A; Y/ A5 w
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
7 M9 h/ [' T# T |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|