EMU618社区

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

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

[复制链接]

签到天数: 2189 天

[LV.Master]伴坛终老

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

# `9 t; S! p  u; F. T8 H) p/ s当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档! J" b/ i5 X( |- J  w

; w/ P% C# Q: Z! h0 _这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧0 ?6 @1 Y7 [$ }% k1 P: u  n
) M6 F' b- U) F5 X6 E
(一)准备工具:# ]* r2 [" X: R2 d8 v
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
: y0 A4 G3 {5 l; Q- }( O2 t; ]* s( Y  ^# A
ARMIPS作者是Kingcom' l% p$ g% S5 q. X
ARMIPS源代码github页面:https://github.com/Kingcom/armips
) I8 w$ ?! M$ j# K1 zARMIPS Automated builds页面: http://buildbot.orphis.net/armips! Y& v% I4 ]- I) f  C
) d) j+ {/ J. _
2.一个将图片转换为二进制bin文件的工具bimbo 1.3+ o# d9 s- i. U

- w9 P; M5 }, [3 K$ ~6 Tbimbo 1.3作者是Aleksi Eeben
3 f& |( B! H& ^* g# Z, K' h, k/ s4 n1 |, c
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
4 j3 R# h# F4 q3 H8 X7 J& t" n' J, h- d% w% _1 S% a) K
3.一个windows自带的画图或其他图形编辑工具
& `# g, M& i, H% q7 G8 b1 M3 _0 v4 L- X% f& Q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
1 B0 j; O. l# J, g: n. g$ _5 X4 ^2 N2 N- ]7 z9 t2 T. G2 t+ T0 T
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
1 X* n3 A3 B- T
6 `, y+ q8 j5 H# H, M" t8 _. k, I- T- T* d2 T0 O# Z7 S

; w/ E4 \2 E: y, G6 o5 B0 W! z# r(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
) @6 T, `+ X" _; D% X4 D
$ F* [( n) y& w: S, z) b
/ Q$ b6 D2 H7 [- j" L5 u- q# m
- v, U6 R9 O, v2 c# c(4)新建一个文本,我起名为16pic.asm,文本内容如下:
$ A5 i! h! x9 w
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    1 [& X# f% \, W, ]
  2. .create "16pic_demo.gba",0x08000000
    * e6 r$ h0 T9 I
  3. ;设置为GBA架构
    + s/ J6 v! Z( o. L6 T2 W
  4. .gba4 z% T: I4 _% `. k) `: l: u& Q9 ?3 Y2 {
  5. ;设置为ARM模式6 G( B5 C& T  ?6 S5 l
  6. .arm! `8 Y1 O0 s9 Q5 V
  7. ;设置起始地址是0x08000000
    ' I( I/ n2 p7 D$ o% J( K
  8. .org 0x08000000$ u0 ^4 E! _# _
  9. ;创建长度为0xC0文件头数据区域
    , J2 a- M: o6 S7 e1 z7 D- {
  10. .area 0xC0
    2 y6 j& Y6 e8 Q. o; o: P! Z
  11. ;填充文件头数据
    7 h) s  A! ?) z: q6 @
  12. .fill 0xC0,0x00) U/ \" d( Z2 O- d/ \
  13. ;区域结束( \( \6 q- [2 T( `5 {6 ~& M* J
  14. .endarea& ~$ R( b0 F% E. J
  15. ;主程序
    $ c3 x0 P* W) v8 U& m- A( o
  16. main:$ E( P+ z3 f9 X; h/ ?# S: S  P
  17. ;设置屏幕模式3,BG2开启1 d; [4 o- N% d' i) M
  18.         mov r0,0x040000006 j7 M6 U3 A0 b
  19.         mov r1,0x04009 H7 B# p% [1 {6 D' Q
  20.         add r1,r1,0x39 i- d' h& d) S- t+ k6 z: [
  21.         strh r1,[r0]
    9 h" T3 v" s0 S
  22. ;设置VRAM起始地址3 U5 Q- G' h6 M4 o$ r# ?
  23.         mov r0,0x06000000
    " Z) r) b, V1 a
  24. ;设置图片地址2 m9 l* t; ], k9 Q9 O3 F5 l
  25.         ldr r1,=pic) ]' n, {  w2 w7 T7 o
  26. ;设置数据长度为0x9600
    $ g& O1 r4 k7 c8 k( l5 W
  27.         mov r2,0x9600
    2 G$ N+ z6 P( k0 p
  28. ;传送图片数据到VRAM
    + C: j4 k9 J% t8 G
  29. loopl:
      r: A3 X/ ?  f. K/ y# Z
  30.         ldrh r3,[r1],0x2  l% J5 O6 B7 E$ V. |7 f
  31.         strh r3,[r0],0x2
    7 {/ `5 B; C; b4 t' y- d7 P" u
  32.         subs r2,r2,0x1
    ' r# q: n$ R/ [0 m$ M  R
  33.         bne loopl% l7 Q2 X! P$ b4 s
  34. ;进入死循环
    3 K" m9 L4 d+ m
  35. infin:' i8 Q& f, _0 l7 S
  36.         b infin
    6 O- n% h+ p, C3 ]1 Y) \1 t
  37. .pool
    % [( A6 f# j: v- y& C$ w
  38. ;导入图片二进制数据) \* \) c) f4 t4 t4 W3 i' q3 O; o  o. Z
  39. pic:, M. M/ o6 f2 k8 L; e3 Y
  40. .incbin "16pic.bin", J% u* \6 k0 C" F% T% ^! I6 _& s
  41. ;在0x08000000地址设置跳转到主程序入口
    . Q, g5 J" Q8 H! X  }" e
  42. .org 0x080000005 u  R# W& _0 w# W7 q
  43.         b main2 y" x3 @, f0 u' w
  44. ;关闭文件
    7 @! v2 @2 Q4 K& t# S: P
  45. .close- s' v) a' y# z# m
复制代码
' b7 ], L$ E0 ^) V
保存!
! s4 @. Q( _; c) z9 S( V. H2 u1 ]: W  m, u, s
(5)把16pic.asm和16pic.bin复制到armips目录下9 ~' p& M. o5 U+ o( s* A

3 X% P, Q" `  U8 M(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件4 Y2 w) V8 S+ f

+ v6 F& ]8 n" _. p(7)用GBA模拟器打开16pic_demo.gba观看效果
, C2 K, E, N2 z. b4 k; G# ]0 v! X  S! y# c# b# Y$ ~8 b3 {

; [) k1 M: y4 G3 H: n- o" }  F( ?
4 |% g% C1 t4 j# x' K  h关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
. a9 Z  d) j; \9 S  q! q6 b

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-1-12 18:39 , Processed in 1.090820 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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