EMU618社区

 找回密码
 立即注册
搜索
查看: 539|回复: 0

[原创HACK教程] 制作一个图片ROM(GBA篇)

[复制链接]

签到天数: 1865 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式

5 ~+ B4 h* e# M. ~) z  B当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档3 f' ^3 T. n1 {' K0 `
1 e7 c: V3 h6 V" d7 D
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
. L* X; v) F$ M% v8 w$ }" U$ ?. O  _& A
(一)准备工具:
# Y7 s, Z8 f7 s! T: M  P3 R1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
+ X+ r6 [$ I3 [8 \, R  h+ ^$ c3 O0 K
2 S" e0 F/ P) A* GARMIPS作者是Kingcom
: p; Y; N( k" Z! B  a  g/ K/ ~- xARMIPS源代码github页面:https://github.com/Kingcom/armips
1 n/ n( S( ~4 ~" l: l5 q6 }ARMIPS Automated builds页面: http://buildbot.orphis.net/armips0 B: d7 V+ R0 Z) X

! p5 h! y% u! K9 V2.一个将图片转换为二进制bin文件的工具bimbo 1.3
6 [. k8 L9 F: ?  {$ q- o: q& }
. {) {' A4 R, g( {2 R+ A! X5 d2 ]bimbo 1.3作者是Aleksi Eeben4 Y7 j; ^/ f: h* b2 ?* f
0 ^+ j  m  ]  h7 W/ B: l* ?5 A
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1677 _# m3 g; q- u% x  m
% t* O/ K7 _: `: D5 h4 ^* I5 ?
3.一个windows自带的画图或其他图形编辑工具
6 m, C7 U6 q5 W( x
4 r: n( f# Y, ~" i1 i/ ~8 Y; R7 n4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)0 z. ]: P8 }0 Y& Q8 b. D* s% D

+ W& w1 l5 Z* r+ [' i; `/ V(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP9 _' U. V8 W0 Y9 R7 p( V$ L
' N( d4 P& T1 P4 g

; b! o' h; d4 Z0 y8 m2 o
/ h! C6 n5 j7 b6 N1 N9 I(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ T% O" ^- l4 t& x( e' r

6 M: T' N6 i6 k- \3 ~$ \/ x& k$ s  J% `

: }7 c6 `& @+ X4 y(4)新建一个文本,我起名为16pic.asm,文本内容如下:
4 }1 }; i: Y" L9 A
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000+ R* o7 i  H& Q' H3 X
  2. .create "16pic_demo.gba",0x08000000
    6 Q& L) ?( F4 G& S
  3. ;设置为GBA架构
    + n- U9 a9 v  K1 ?. I
  4. .gba# H4 K' m$ \  K: u" Y. P+ q
  5. ;设置为ARM模式: [1 E6 G4 H: i3 S1 C. s
  6. .arm, j' P& v: B" R: `1 b0 b; K
  7. ;设置起始地址是0x08000000
    8 p: R/ p. i$ q4 W( A; P5 U- o
  8. .org 0x08000000
    " @+ [+ W$ l6 f! n
  9. ;创建长度为0xC0文件头数据区域
    ( @) v( `" [% ^5 ?5 @# a
  10. .area 0xC09 _  E4 M2 _% p+ @! m2 X
  11. ;填充文件头数据
    . Z  r5 g! V$ z4 n( P: z( H7 F
  12. .fill 0xC0,0x00
    & ]5 I5 n7 Z& P, D# R" h5 W
  13. ;区域结束
    0 C! U1 F0 H/ o& Q! u& q
  14. .endarea' z( R) y" Q: G' Y  C
  15. ;主程序+ y, _4 o2 s5 g4 D4 r# F; V
  16. main:+ M$ ?- ~0 a) }$ O  f& G0 T
  17. ;设置屏幕模式3,BG2开启
    & f- {" B  ]$ i. e  |
  18.         mov r0,0x04000000* h: _& g% T: J. l5 t6 n8 @
  19.         mov r1,0x0400
    $ H! l% P: P7 Y4 J3 }1 }0 n1 i' V
  20.         add r1,r1,0x3
    ! C, Q, U; G  y, v$ _( `0 L9 _
  21.         strh r1,[r0]0 H. M' e+ Y/ Z" |6 d  }
  22. ;设置VRAM起始地址5 C0 N9 s* ?( D4 `- E
  23.         mov r0,0x06000000
    5 d* P3 ]4 P6 o4 N( C
  24. ;设置图片地址* v6 G( \$ {9 `
  25.         ldr r1,=pic
    . t. V* n1 E7 w* s& ~
  26. ;设置数据长度为0x9600
    9 E& C: s5 e* A
  27.         mov r2,0x96008 b9 ^' U3 l4 J4 a( a  ]3 t0 N0 s
  28. ;传送图片数据到VRAM9 q/ p- }# N4 o  T
  29. loopl:
    4 O: m6 ~0 y+ m' p- A
  30.         ldrh r3,[r1],0x2
    # f, d2 a& U6 X9 n$ n* z. \
  31.         strh r3,[r0],0x2
    - Q3 W4 {" i. r
  32.         subs r2,r2,0x1
    6 R$ k2 G1 Z+ w+ h5 C5 G
  33.         bne loopl0 D3 y2 L: y2 [; m% T
  34. ;进入死循环9 L* d8 F1 g; W1 {) a
  35. infin:' z7 `8 T5 @) A) N7 V9 Q' d, ]
  36.         b infin0 x. {% J. z! U
  37. .pool
    5 v) R* b4 E7 ~' n; z
  38. ;导入图片二进制数据
    - ?# ~5 w# e( ?) E" Q' a
  39. pic:
    8 a5 n3 ?- d/ _  D' g
  40. .incbin "16pic.bin"
    / W8 z) u, b' m% g; }
  41. ;在0x08000000地址设置跳转到主程序入口) v: _- I! K4 J2 [( l! @0 `
  42. .org 0x08000000( e' h  w5 o+ _- h5 f% p
  43.         b main
    2 W0 K. b4 w' W. Y/ M
  44. ;关闭文件9 R; R4 u2 V) y& ]2 ^" U
  45. .close
    7 ^. h* g! T/ _& r
复制代码

2 _6 d% v( ?( N. F" t保存!
# y7 [, f# G% T/ c% T/ g* k' m8 Z" F4 T  t; l3 l
(5)把16pic.asm和16pic.bin复制到armips目录下6 U$ R4 j. r& \0 G1 u) {7 |
9 u6 Y$ F' E. g1 P) [3 W$ M9 J. Q. \
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件+ k8 A4 b: K$ e; u. _7 K- h/ {

* u: @# I" c# C(7)用GBA模拟器打开16pic_demo.gba观看效果
( D7 A! }9 b/ d1 a' T# ?6 x2 \# ?
. a' F7 f+ F2 B+ `4 [
* I) Y) |, `, w3 L
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)  Y9 B( t( ^% y( }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2025-2-19 06:40 , Processed in 1.088867 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表