签到天数: 2190 天 [LV.Master]伴坛终老
|
: E* @( f& j1 ^& S$ c
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档* j0 Q3 f( A9 w
% Q/ h$ ^+ W& M1 ?# @# Q! J$ e
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 A! A: R. X) H: S8 ^2 C& ]9 {4 |- Q. c0 l/ B
(一)准备工具:
# U. E' j' I* N- X1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例: F. u$ Q: U- s7 x y" |
w' k# r+ U4 y- oARMIPS作者是Kingcom3 w4 d) }: I2 P5 f/ C
ARMIPS源代码github页面:https://github.com/Kingcom/armips
: T m) a. @- Z% l; ^ARMIPS Automated builds页面: http://buildbot.orphis.net/armips' |0 Z+ k9 C5 y% P) X
w6 Y3 Z- V5 R
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
* u: R4 d3 y$ |& c/ |: [4 {, F; c9 b( |" f# b0 h4 A) }+ E
bimbo 1.3作者是Aleksi Eeben
3 U. v9 i6 C% l' b# r
: h, X6 b5 _5 O4 t) T0 x2 y* a, Obimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167/ F$ k2 F4 b, {: _4 K. T$ b8 B
: T$ j8 Y4 M8 _4 M/ X* t& V8 N& O8 Y/ r3.一个windows自带的画图或其他图形编辑工具6 i! a& V4 Q3 B* R9 M$ ]; F0 Z
/ n2 V# C9 ^: Z4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3), k, O, d, @4 ^
4 M. Y. f; ~6 \! G1 {
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
2 u+ X' k* o5 S/ }% v" n0 E, U3 j p. f+ w
! Y1 l6 W5 i, w8 ?& ]: y! X" j, u$ x
8 \6 r1 b7 y( q& e( z(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin F" B! ?/ g& Q; r! e% ]" F0 ]1 I
5 K5 K$ {! w7 \ w; x: l6 U
2 W4 |) C, Z% p2 R0 F
6 H3 J8 ^0 w5 P& b(4)新建一个文本,我起名为16pic.asm,文本内容如下:
. H- @5 M/ [1 {; U! x- ;创建新文件16pic_demo.gba,文件起始地址是0x080000005 Z/ {$ b7 ]( ^. ^& }
- .create "16pic_demo.gba",0x08000000
% v1 K/ y. h3 v - ;设置为GBA架构
X9 F# W; D8 @( E, Y/ H- l - .gba
, N) ?/ e2 C' w$ L. h) J5 A - ;设置为ARM模式
7 v; a, g) C# {% F/ T: L - .arm& s; Q& g- ~6 _" h) [# \
- ;设置起始地址是0x08000000
' i+ m3 n# z" m5 | - .org 0x08000000
! C9 l8 q+ j' z - ;创建长度为0xC0文件头数据区域% M( ~. ~& j0 r) T9 R _
- .area 0xC0+ I9 |9 b; y0 G8 V6 e
- ;填充文件头数据- [8 p7 A# S) E' }( [
- .fill 0xC0,0x004 j( x( f n$ W3 P B& o& Q4 H
- ;区域结束
2 [8 z8 _# r3 x# ]9 `6 ]8 Y - .endarea
' k) {; q; H9 `) X5 M$ I - ;主程序
* q9 ~+ y; J: o - main:2 P: {4 W2 h7 v4 J, g0 m
- ;设置屏幕模式3,BG2开启
/ h! m# U2 L: b, s4 K+ v9 o - mov r0,0x04000000# ^1 D' c( f( E* R, D* D) I
- mov r1,0x0400
5 H/ M' a( a3 m& ^" m/ o6 T# [' M - add r1,r1,0x37 s: C; @2 C( Z3 h
- strh r1,[r0]
4 [5 j2 {. M$ z! O* a - ;设置VRAM起始地址
1 V) i" x' e. i# j- \; R1 _ - mov r0,0x06000000- V; P6 g- Q1 o- S: w4 U& J
- ;设置图片地址
$ w; g; Z! g% @) ]7 q - ldr r1,=pic% m$ Q- {1 Z; G1 {2 L, C8 n7 V6 {
- ;设置数据长度为0x9600 M2 C, G1 Z; W0 L1 z$ |- v
- mov r2,0x96000 [& _8 y3 w" j @
- ;传送图片数据到VRAM
9 m7 U$ U2 Q7 s' d% m - loopl:
8 |5 x6 K* T; b, o# M - ldrh r3,[r1],0x29 C# N& o* J9 v4 G
- strh r3,[r0],0x20 J z1 ? x/ {+ C
- subs r2,r2,0x16 `4 i1 j, ~' ^( o# @6 s4 s; t- P
- bne loopl
, b3 A. R2 P$ d0 r - ;进入死循环0 u8 J$ z/ e; |0 Z4 i) b4 D0 U
- infin:
2 m7 _% `! ~3 N" A: z/ q' U - b infin
0 v& I8 @ F) E4 g0 l( `9 ~8 M - .pool8 _5 ^7 J& T* j# K" M9 E
- ;导入图片二进制数据
1 j' |" b1 Y" K5 X1 A/ L4 c$ m( n - pic:, {! G3 N8 w# `4 U% Z& L+ [
- .incbin "16pic.bin"
5 y9 b( y) f4 c+ L! F% ^ - ;在0x08000000地址设置跳转到主程序入口
3 q; Q7 t6 p1 S% S- P& O) }; j - .org 0x08000000
* g: I. b! a) i& j4 t/ e - b main) p5 ]0 M6 ~- W1 X6 k0 l# S
- ;关闭文件% i/ G7 h2 H" S2 c2 V8 p
- .close) {+ ]% }5 {) D, r. T4 h
复制代码
; @+ T$ p* R" w1 X. L保存!' f' G+ `7 X! W9 K' h; {; J
/ p6 }; \4 L8 f6 M$ ~
(5)把16pic.asm和16pic.bin复制到armips目录下. {* m9 _3 Y9 K6 w/ i
( h; h5 k6 ^( o, |8 Q(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
* ~2 q- w& z# _% l! l" f- @, C7 x
4 }. O; s; t( g* p, Y) `! h% T(7)用GBA模拟器打开16pic_demo.gba观看效果
) U/ N8 ~( K% E
/ g5 z- c) p# T) R9 H: `9 \; C# z% r% ~: d. V8 `9 i% [$ l
1 j% y3 u( F2 a+ Z' J! X+ G8 l
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)* {; a( q8 I8 z7 N7 w: E
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|