签到天数: 2021 天 [LV.Master]伴坛终老
|
2 ]" q' s3 c! _9 _ E. `
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
' @2 R! c" F3 I- Q. ^
2 \' g9 N* ?5 y, Y5 H! O这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧' G$ }0 e/ @! ^: f
/ ~; R1 w( M2 u- v/ [(一)准备工具:9 D: v. R: h* q% [0 I
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
: z) X" y. C/ }( o
7 P4 l& m. J! I: ~, Z3 YARMIPS作者是Kingcom6 [4 s6 ]. i" {9 L; g* e( r
ARMIPS源代码github页面:https://github.com/Kingcom/armips, Y; v. r9 W3 G4 Y2 f2 X9 S9 N
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
* m3 Q! ~- n: w, `( Q
' ^1 d; ]* [( H: r" y$ c [2.一个将图片转换为二进制bin文件的工具bimbo 1.3, v1 _3 _8 G7 `! ]+ U. t' X7 O
- o% L# T# Q# \, H3 ~
bimbo 1.3作者是Aleksi Eeben$ {5 b! t# ^4 W$ v7 S# ]' V# U
5 x- r7 n( v3 M6 {! g
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167, C* Z# N8 |! m$ ^$ I* A
8 f7 }; h; Y0 z3 l
3.一个windows自带的画图或其他图形编辑工具
& z& B; |8 a1 P* w4 S7 i* n; i2 A+ n' E
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
$ @: ~( q# Q, `) f; z: V- L, Q F2 H% T, y# H) r; r8 [3 Y7 X9 w
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
. G3 |6 Y. Z7 U" ^8 Z3 r2 ]. g* w* i8 K8 x4 ^9 P8 L$ w
5 O: \3 K" h, W0 K' [
$ Y; c; o7 N+ p G
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* G- ?# a! V9 o4 M5 p) u) C8 m
7 g7 {9 U1 S7 d9 \
$ T/ g4 g6 Y- ?* m" W8 Y/ |/ T! L) u' M5 k. G- [" [
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
5 a2 k+ }- ~1 X- n( |, Y- ;创建新文件16pic_demo.gba,文件起始地址是0x08000000$ A6 M; B$ @" A
- .create "16pic_demo.gba",0x08000000/ M1 g3 W/ s y- _& k1 u' l- s3 s
- ;设置为GBA架构( ?$ |, i+ j- J1 D3 e
- .gba" ~% v& F' j4 U0 S( Z x
- ;设置为ARM模式
# k9 Z" o; g# O/ h6 O - .arm
( |3 M1 g- ^7 _ - ;设置起始地址是0x08000000
; L \/ o- z- W& u - .org 0x08000000
) J0 w' |7 K' _6 M# G6 M - ;创建长度为0xC0文件头数据区域3 h4 e& B/ M1 g% x, ]
- .area 0xC00 d: ~% m( H% p: G" _1 U
- ;填充文件头数据) z) S4 s; _8 C; W
- .fill 0xC0,0x00" J! v' W0 m8 L
- ;区域结束* W7 \) v& H S6 |( M5 t3 @9 v
- .endarea
# ~+ q) I* \8 W* v8 @ - ;主程序
9 G5 _5 e5 ^. E: J# a - main:
% ~ J7 e3 K) M0 F4 S3 _8 }) [* z5 A - ;设置屏幕模式3,BG2开启
0 ]5 s/ X' M5 I - mov r0,0x04000000
$ V2 e6 _$ j4 {8 ?8 I7 ] - mov r1,0x0400
( I( h! |, o! J: T; u - add r1,r1,0x3, h1 L8 }/ n/ A* b- l8 }' _" i
- strh r1,[r0]0 b0 F4 n! I D- G5 p4 K3 @
- ;设置VRAM起始地址, T* V% l9 j* p1 T; Q1 A. d. v/ I- r* X
- mov r0,0x060000008 x6 Y) S& I* e. o# N- u$ o2 z
- ;设置图片地址' B- o# y$ S( L) n h1 y9 A- V3 M6 M
- ldr r1,=pic% s/ S% J1 ?6 G
- ;设置数据长度为0x9600
0 S8 E ?' y3 q7 ? - mov r2,0x96008 c! j9 t8 p, J* V6 W
- ;传送图片数据到VRAM
( @4 z. y3 H# j0 X - loopl:* ]! `1 A/ u- d) J# g% @
- ldrh r3,[r1],0x2' a0 a" E) l6 E3 S5 I" x: U* @5 d
- strh r3,[r0],0x2* r3 B& ^5 A3 L; L2 R9 b
- subs r2,r2,0x1/ j9 U+ \- D, E! N
- bne loopl
& U3 V' ]- s8 r+ M9 X5 C - ;进入死循环
1 v) X' } C% J - infin:
' R0 r3 N( Y. P2 G( {( d9 ] - b infin
" w, M5 i5 f; j( t4 P - .pool
& E. f7 f8 g0 j - ;导入图片二进制数据9 N# k9 @ h" Y
- pic:/ v! x; t; u1 W5 h3 c
- .incbin "16pic.bin"7 [1 U7 }: e( @1 r$ ]0 _; @! ~
- ;在0x08000000地址设置跳转到主程序入口/ T- @" p4 p: Y. K
- .org 0x08000000
2 Z: x) ?0 b) D: B, A - b main
1 A* [* G' L+ \; E/ M - ;关闭文件
4 t; D% U$ Q6 E6 D - .close8 a& y% `5 _* b3 b' |/ W
复制代码
, X7 y6 [4 v& }1 @. B& @$ |保存!! r, m) l7 j- ~; s/ ~; ?# s4 V6 m
) S3 g0 {0 @* o0 b4 R' [
(5)把16pic.asm和16pic.bin复制到armips目录下6 S$ h; V" _0 `" m" z* `' C
' j5 V( _. u! a* N& k(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
, u) {4 ?; I$ `" N
& @! Q' m! y% r' \(7)用GBA模拟器打开16pic_demo.gba观看效果
( I, R6 N0 J5 B8 |: Y' ~! {6 z, q9 l( ]5 E* G9 a% D3 L+ b8 @2 K. v
. ` d8 [3 X( d& n9 k: v; W
# t7 u) I9 Y& J/ n) x关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译), F, V" H0 ]9 C* k$ D9 E& }
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|