EMU618社区

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

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

[复制链接]

签到天数: 1865 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
5 s$ `, E- c, S9 a) |- ]
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
/ H% f2 ]* M0 _: D/ E8 Y: g( s0 r, s' R+ c
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧, c( v  |$ G/ a; Q

/ p. q4 a$ N! A- k(一)准备工具:
6 B0 v7 J9 W$ Q7 m* p1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例% Y8 S" T% x- L

) o# e. Y: T1 b5 ZARMIPS作者是Kingcom8 T9 x5 M  ?4 S) c
ARMIPS源代码github页面:https://github.com/Kingcom/armips
1 [4 `5 S) \  V- L0 h9 mARMIPS Automated builds页面: http://buildbot.orphis.net/armips( c) ^6 E4 T0 b$ G' U  N3 S

: m4 o/ U0 Y  o5 y  s2.一个将图片转换为二进制bin文件的工具bimbo 1.3( w+ i4 {5 Q/ O" Q8 |: |$ t$ C- ]

: n3 Q& d9 R1 ~1 Qbimbo 1.3作者是Aleksi Eeben
. |& A  E5 M5 y) W. v
+ G: |  A. o& @$ Kbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167% `3 s4 c: F3 `, X9 J
! D7 I7 u0 k% h. x; h: B* M
3.一个windows自带的画图或其他图形编辑工具
# G, o. U# a: R6 u$ x$ P% T; D6 |. m, g" q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
" o2 t9 s( u6 ~3 t; a
1 g: V+ Y6 L4 h- t(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP; p3 S* I9 \1 j) G+ U% f

# J3 G7 U3 F% n7 K: \1 v% r& A2 c8 z: e
% y* A) q" @: A/ ~# S
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
! {8 @4 I# V$ j# V8 ?- p2 Z
, ^# W, B4 v/ x: ]1 c, O$ N( K: }' |
' @% w+ b5 p4 ?& Z# n3 w
(4)新建一个文本,我起名为16pic.asm,文本内容如下:8 l/ }' B7 p1 _7 D( @* E
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    9 I+ J" T! W; D& B' I
  2. .create "16pic_demo.gba",0x08000000
    * N8 _6 h. ?7 j4 z5 F
  3. ;设置为GBA架构3 `) t) f/ s  v
  4. .gba  c2 b7 Q  a- s! A) E4 U7 B
  5. ;设置为ARM模式
    ; v1 K: G( Y$ Z  C9 U8 o% n
  6. .arm1 `/ F5 h' O  k; s* @
  7. ;设置起始地址是0x08000000
    & H. F' \2 d, p0 q5 L% ^. b
  8. .org 0x08000000
    * h, m7 t6 M  ~8 @: Q
  9. ;创建长度为0xC0文件头数据区域* S- O2 M3 x+ ]* z
  10. .area 0xC0. A# t& G" S# |" r  Q+ u
  11. ;填充文件头数据8 K! j  ~9 O7 u; j% G5 O) l
  12. .fill 0xC0,0x00( ?  a* H4 g" D8 k! K( t+ V$ K
  13. ;区域结束
    5 c2 h: L' ]4 y: F2 j5 |* o: ?
  14. .endarea+ O" ]* p5 h& F( O2 a! o( ~
  15. ;主程序3 m% z/ Y9 J- e3 l; M
  16. main:
    4 Q. y( R' L- T0 c0 ?7 s
  17. ;设置屏幕模式3,BG2开启1 L8 b* |( S& B% J) A3 I! p
  18.         mov r0,0x040000001 P- ^& J7 m) A3 b1 v0 f1 G
  19.         mov r1,0x0400, {) \  G0 M+ B' X/ S
  20.         add r1,r1,0x36 m* k& B# g! ^4 i
  21.         strh r1,[r0]' I: P0 k+ t* k1 C8 d3 a
  22. ;设置VRAM起始地址
    " A8 p- ]1 ?7 f' I$ o
  23.         mov r0,0x06000000; n- `1 e+ s) v
  24. ;设置图片地址* w" F! T# Y0 Y8 X0 F( T# ?
  25.         ldr r1,=pic
    . W* t6 {2 {2 z
  26. ;设置数据长度为0x9600
    + l/ J( n/ p. u
  27.         mov r2,0x9600
    $ }/ R. j# R" W: H( Z2 {0 R
  28. ;传送图片数据到VRAM: k& u: _5 o0 D+ o
  29. loopl:! W9 t1 A  u  }! _: a1 }: @* x
  30.         ldrh r3,[r1],0x2) k6 u/ V+ q; ^! t! Q6 @& \
  31.         strh r3,[r0],0x2
    . o5 G7 l' _$ W; b+ n+ Y
  32.         subs r2,r2,0x1
    , s- N6 Y1 ?' c
  33.         bne loopl9 C, h* @% @0 X2 U0 H! t
  34. ;进入死循环
    3 J7 \1 X. L* @; f- T! `/ x
  35. infin:
    ( f1 K- o% G  b. A2 [3 |
  36.         b infin
    " e6 u% f, i( a8 q6 h1 [, l
  37. .pool! H' C/ W3 b2 B6 T
  38. ;导入图片二进制数据6 d0 `/ |( q5 ]
  39. pic:
    ' t. @; a) L, W1 |, M3 \
  40. .incbin "16pic.bin"  X( `+ @* H( ]( ?
  41. ;在0x08000000地址设置跳转到主程序入口5 O/ Z( F% _6 a% _9 f2 u! X2 E. ]
  42. .org 0x08000000
    2 W0 _& D1 j+ i+ x1 h
  43.         b main2 {! D. r4 m# W7 U% \0 v
  44. ;关闭文件5 }- n6 G3 M; i0 x# Q" \
  45. .close* S6 M5 K- U9 I9 S% M
复制代码

9 V( z( f- J6 T* W& n& O% m: j保存!+ e, n: O% Y$ X; z
$ O8 O  a( N& O* O- X5 E' q6 S* u
(5)把16pic.asm和16pic.bin复制到armips目录下1 Z: E% _  E' V0 Y: t

8 z/ N! P3 {: k( B( {' L( k) O(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
4 z8 p. h0 {- C! D. E$ n0 b( m. l
4 _" C; c- G1 z: `' z1 {(7)用GBA模拟器打开16pic_demo.gba观看效果
& m5 Q2 h7 a2 W- k: H7 u# R0 A" C, T- g' V2 X9 L! X! ]

! X* ?6 ?' g, k9 w( ~1 k5 m8 F( ?9 ^- m
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)0 b, U, v; k- a

本帖子中包含更多资源

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

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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