EMU618社区

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

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

[复制链接]

签到天数: 1574 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
  V, G7 L5 v" F5 O9 B  z5 j) V3 A8 B1 j
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档% z6 e5 O5 G: c) B1 G
8 J; N$ y" r0 {" F2 x9 _
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
+ Y1 l8 f8 r1 p! @. L8 k/ a/ s* s
(一)准备工具:4 Y7 F  N0 B4 B
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例+ X2 ?. H/ ~3 `- B( m3 ?
1 F' y5 _( |& i# d& w( a
ARMIPS作者是Kingcom
1 p4 m% G5 V" d% f5 `' N5 EARMIPS源代码github页面:https://github.com/Kingcom/armips
& A2 x; [1 t$ w1 }2 G* x) ?ARMIPS Automated builds页面: http://buildbot.orphis.net/armips& a6 j( l' X% \! j) n
8 \& R( {5 }0 @
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
, p, v+ ?, n, H0 v; b
- g: j9 w, ~% Xbimbo 1.3作者是Aleksi Eeben
+ O3 c7 d0 ]+ h! C
0 `/ Y7 d* o# q1 n: `bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
: R% A& f) v7 u% ]6 a" c
( E7 K! O- }' {) \3.一个windows自带的画图或其他图形编辑工具: G  J7 F4 E) M/ t6 U

' W2 Z# g; H6 \/ u/ `$ M4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
3 ~$ z8 d- a! ?8 M3 _! g! `4 _
+ \+ n0 C- }- I9 g; w(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP9 E, u2 X1 z6 q- c% V
) m* y; z* w! @+ o9 z, X
( q& O! t$ p. I, N! |$ \9 E
9 @& k+ b8 r5 j8 X. e0 U& Z
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
6 ]: N& p4 S7 E; a, ]! }4 j) k7 \; {% q0 p4 F, |) s* K

- {# e: i7 ~/ g6 m9 l  @2 P
8 j% @" b( z9 e9 c. K(4)新建一个文本,我起名为16pic.asm,文本内容如下:
( D+ q8 r' s* V% x, ~/ B
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000* {- S5 f# g" N: k" |0 x
  2. .create "16pic_demo.gba",0x08000000
    0 l; T% X/ d! p- h9 u$ K. m
  3. ;设置为GBA架构
      {9 |+ v% G# x( g
  4. .gba1 L- G; ~1 V  W3 [& T# h- r* ^: |- m9 a
  5. ;设置为ARM模式6 h9 U" M( ]9 g" Q, [! i  n; D; w
  6. .arm2 U% E, A8 I) v* z7 `
  7. ;设置起始地址是0x08000000$ T# V: [( s# m( Z. Z
  8. .org 0x08000000
    ) Z% W7 z. ]9 v3 H0 H
  9. ;创建长度为0xC0文件头数据区域
    & {' G3 i+ i! U0 D5 I
  10. .area 0xC05 ?$ d6 k: H! G* h: }
  11. ;填充文件头数据- r. F# b8 R, A4 C  b
  12. .fill 0xC0,0x00; x+ Q1 f; x/ y( @
  13. ;区域结束
    % j' i7 q: O# Q7 U# P. `
  14. .endarea6 D1 o- X% {- W2 e5 M8 F
  15. ;主程序* t: e4 a  P* p
  16. main:" C% `2 o0 D, L. n) e: v
  17. ;设置屏幕模式3,BG2开启
    6 X$ w: Y( D, e+ z/ a2 t
  18.         mov r0,0x040000001 Z3 a8 Z& c+ y# s- o
  19.         mov r1,0x0400
    + U( b2 A/ p0 c$ c8 e" w
  20.         add r1,r1,0x3" q/ l& D+ H, `+ U7 c8 j9 Q8 u$ ~
  21.         strh r1,[r0]0 |  g0 f$ O# u% H7 r
  22. ;设置VRAM起始地址
    ; w+ @% e2 s2 s+ U4 |& Q3 v" d
  23.         mov r0,0x06000000, R6 y$ ]" U5 t( H( s
  24. ;设置图片地址5 S/ T) Y% B- d7 v. t9 X8 j  g
  25.         ldr r1,=pic6 q2 C5 I* {9 c
  26. ;设置数据长度为0x96008 z. q7 {; @6 x3 m. f
  27.         mov r2,0x9600  p6 l# u9 J0 Q# f. M- p& ?8 P( y$ L
  28. ;传送图片数据到VRAM
      d: O: {; ]$ E* N( a8 g
  29. loopl:
    & t* [' J) s( F+ F2 t; Y1 [* i
  30.         ldrh r3,[r1],0x25 e5 W0 ^7 O6 T" n. m
  31.         strh r3,[r0],0x2
    ' r* p8 Q7 N7 r0 i2 M* r. U8 d  k
  32.         subs r2,r2,0x1
    2 s3 ]9 d' R8 C
  33.         bne loopl- _: f0 ~* n0 w, ~; d
  34. ;进入死循环" ~4 u- f8 }) b
  35. infin:3 a: g$ ?8 c7 C* t0 g8 ?- ~0 w7 |; b
  36.         b infin
    ( S9 K5 E% U; v( j/ F% O" @
  37. .pool0 q. P' v6 B4 V! w0 b. p
  38. ;导入图片二进制数据
    8 a% _! p3 W. g( y
  39. pic:$ p2 G+ u3 R0 @+ b. W& ^2 [
  40. .incbin "16pic.bin"8 a! q1 ^* }" Y
  41. ;在0x08000000地址设置跳转到主程序入口' l1 J: M6 t. H$ ?
  42. .org 0x08000000
    ( c+ y! Y% J- U: J( ^
  43.         b main* P& u6 q  h  T* l* k, B: s
  44. ;关闭文件4 i' g; N) I. h. Z/ J* |! W
  45. .close( h4 l% C4 d1 r/ ~7 i' V  ]# X
复制代码

8 \' f! W( ]9 {# n+ R. p2 ~" \8 d保存!( {. D9 @- n8 h

9 ~' N( Y! a/ j; k2 s(5)把16pic.asm和16pic.bin复制到armips目录下
* t( R( B4 L# z: K( z6 G% l8 q- P$ y! E" ?& e$ b0 P6 l& s
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件' }5 H1 u1 |1 m+ _0 O; K

- r. J9 T, X+ c: `(7)用GBA模拟器打开16pic_demo.gba观看效果
, B. ~5 s+ w7 M/ m. s! v
% ^: V1 S* k5 G  y) }; l
, `; t5 z6 c1 a) E/ O! w1 [* r& r9 d/ l, n) X4 @5 a
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
: l) d+ p$ C8 |: i/ S

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-5 09:23 , Processed in 1.078125 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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