签到天数: 1949 天 [LV.Master]伴坛终老
|
7 E5 ?6 M* n: |) x) l当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
7 @6 Y" [% D* V+ T8 j1 ]7 `/ p+ p
* ?! @5 K0 r; w. U$ D A这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧1 d2 N/ e1 x& L+ M$ e) y+ m
( \. B, l* q: D; b
(一)准备工具:( c9 [. l1 h' [) P4 G, I9 W" t
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例0 J6 p7 `& s( l
7 L! |$ X" F8 `" s0 ~0 D# a5 @( i
ARMIPS作者是Kingcom
: s, z3 z' k0 @$ h9 pARMIPS源代码github页面:https://github.com/Kingcom/armips
) h8 d l, F, p/ k* Y! |ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
! ?2 @( i5 k9 k/ N3 j, d- F& K. V% m" o% h. k) x/ K' l6 G+ M
2.一个将图片转换为二进制bin文件的工具bimbo 1.3" ]( u, t$ t6 l6 ^
3 D n2 W! m) R; @" F
bimbo 1.3作者是Aleksi Eeben
3 c6 g, l$ w. L( D) R4 y# p# x x# l
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
0 L+ C" G- E$ K/ C
* p$ a, t; @% a9 {+ `" C" q- l3.一个windows自带的画图或其他图形编辑工具, V- p# ~& o. s/ r7 E/ D5 X( e
: O7 \2 W' Z5 U I
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
6 A v! Z1 W3 K" b/ {5 U8 t/ ?9 G0 {; T
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP% d k) g# h: }. p
0 S. f7 T$ \$ T
" @/ S/ H5 |) K2 }5 ]/ ^2 R0 Z) S$ z) x! Q5 y
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
! T) |4 i$ K" d8 c, a; X" F* C1 T5 L8 ^$ J0 r( c5 S# B( J
* T' p" h6 m5 x9 u* [$ {
% J/ ^( J+ m/ z- X* a* C% O! C/ a(4)新建一个文本,我起名为16pic.asm,文本内容如下:
2 X+ g7 n' z1 X; ^* e* |7 G- ;创建新文件16pic_demo.gba,文件起始地址是0x080000001 I6 B7 j1 ^. X- `
- .create "16pic_demo.gba",0x08000000
! E% ~$ ?# j! k" M5 m - ;设置为GBA架构2 h& t5 V8 a9 |7 m' W% Z$ a4 i- f
- .gba
% P/ M: J0 E9 w% g& q5 P' v - ;设置为ARM模式' j3 ?0 u. }5 t4 p, ~! [0 L: v6 Z
- .arm- M$ k8 k# [- g" B$ s3 b0 i
- ;设置起始地址是0x08000000
- w; X$ Y9 J# T! b' U& a U - .org 0x080000007 x$ Y" S/ p, g2 l$ w! C
- ;创建长度为0xC0文件头数据区域2 K5 g( M7 F: c7 J, ? Z
- .area 0xC05 v" A& g. v/ h% {" ~
- ;填充文件头数据
0 A; _$ `& ~8 k' q e1 L5 n6 o8 K - .fill 0xC0,0x00
% [# A1 }4 W- E% O2 V7 t - ;区域结束
( Y m. M: ^6 C - .endarea4 c, r+ k4 B) i. E6 F! X
- ;主程序. o3 K" Z) b' q
- main:
3 F; K# {; v( l# [7 \) t - ;设置屏幕模式3,BG2开启
0 X% q1 Q# C) R* e- A1 z - mov r0,0x040000004 y( u# P; n5 H- \1 w: A. |# x
- mov r1,0x0400
6 W, i5 z) M. p+ S& y- S - add r1,r1,0x3
: d% O* U$ Q2 h) B! ~2 k$ H- _ - strh r1,[r0]$ L, c, |% w; v1 P e% j
- ;设置VRAM起始地址& I% g. t+ s0 _3 s6 R- j) e
- mov r0,0x06000000
7 S- N2 f5 A9 }! d4 T, I - ;设置图片地址, U; e# R( H( G" G) Q" T
- ldr r1,=pic
/ R* U/ _7 S! I) Y5 { - ;设置数据长度为0x9600
- ? ~ ^* \5 e- _6 p2 G7 {' f - mov r2,0x96006 t# h$ L( ?. C6 g0 P7 T8 L3 c
- ;传送图片数据到VRAM; p) x+ E+ V+ V; M6 w: H
- loopl:2 D; K6 \' o- J6 _! x% z. y
- ldrh r3,[r1],0x2
2 T, \) B1 E, n9 k8 k7 h+ f - strh r3,[r0],0x2! E# |4 q2 ]3 O: m
- subs r2,r2,0x1
3 t' `! ~' K/ b; I, j* Y - bne loopl/ _/ C: b3 C2 ]- ?' T, m) Q/ i
- ;进入死循环
& d$ ~9 h3 @: Q" S/ W - infin:
+ X9 y% {% @/ C# R - b infin
9 X$ Z" U [9 _+ O3 { - .pool2 `( b) t, `: F6 [
- ;导入图片二进制数据0 |' Q; w, y ]& m) _
- pic:# v* T& S& W" O' S8 [$ X
- .incbin "16pic.bin") i* g5 N' [6 N0 t- \6 K
- ;在0x08000000地址设置跳转到主程序入口4 R5 M J2 Q5 [; B) h
- .org 0x080000002 S/ u& E% m, L* y2 H
- b main, q/ F$ e1 S, Y) G
- ;关闭文件0 i* d+ n/ }0 Z7 p0 M
- .close) o' N' s& A9 ]% t4 }; G% {2 @1 v8 a
复制代码 + |% @( s( ~9 W# Z9 Y
保存!
% v# |* d9 e' d! E0 z! c" V1 g6 [( g: ]: g5 ?! S1 C6 ~* y4 @: ]
(5)把16pic.asm和16pic.bin复制到armips目录下
% j3 V" b( F2 q" ^2 U
/ m4 O8 T3 ~. S7 Q" f" p(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
# {# d& d& P1 {
4 y7 n) R5 ]. C(7)用GBA模拟器打开16pic_demo.gba观看效果2 e4 Y, k, d7 c
" k S9 h% \" @* M; P% c) i7 i& b" z! A+ f
, O( g( G# ?( e, s
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
" c# Y, G+ w1 m6 L9 G% j |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|