EMU618社区

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

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

[复制链接]

签到天数: 2136 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
; t- q( q" A7 }9 e6 {% X2 E
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档7 x' x$ ^5 ^( h5 j" e

" s0 }; W& a- i% }这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧+ T  X) ?( T/ u0 ~% t7 f4 @1 r0 E% R
* b5 ]9 X* |3 [' S4 O  S0 Y
(一)准备工具:
* f1 o$ T& r& B' U1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
3 i% ]2 A4 g2 \# M
) ~! Y" `; B2 a% b! kARMIPS作者是Kingcom" D: c: K6 u0 s
ARMIPS源代码github页面:https://github.com/Kingcom/armips, I8 S+ K2 l; D5 b
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
& w/ K3 T2 f6 G+ l1 V8 E7 h0 u/ z+ l5 M# l: O& Q
2.一个将图片转换为二进制bin文件的工具bimbo 1.3' f  b# ~' I" l1 `* e+ N) N

) l6 G; c6 ~) n* F) k& O- v0 gbimbo 1.3作者是Aleksi Eeben
& b# `  k. `" z+ U1 m' v5 q- ?0 r% L2 C( F8 [
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167+ |& X2 b% C2 a
; A( i& v, B- k0 [6 v
3.一个windows自带的画图或其他图形编辑工具
6 x/ P4 m% ~# W& l# F5 y' \1 U# F! M" R; U6 U: m
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)8 w% @6 V7 H1 m! I

1 @: {9 w2 B: ?; i" z) i3 u! g(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP( @+ o7 B) ?0 g" v& w. F

0 }& g' @4 `8 T5 z) ^1 X: r) N$ X, @, y5 R; `+ B. b# _: R4 |) d

% U1 F! ~; w- P6 i: ~+ {(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin' a  |) l4 L( v9 i. @9 l

, ?& H( T% |! k9 Q
! C  }, M' O& h% V5 Z; X; ~% m8 Q- E; p8 J: [" j  f3 K5 I
(4)新建一个文本,我起名为16pic.asm,文本内容如下:& ?! _5 ~+ [# M9 J0 c  r8 M0 ^
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    $ l: h8 B# d7 C
  2. .create "16pic_demo.gba",0x08000000
    & X' _6 J. G3 C
  3. ;设置为GBA架构
      S+ o1 r; r) M# y6 m( Q- R
  4. .gba3 w% ]5 A. a6 g, A& b5 i4 J0 K
  5. ;设置为ARM模式
    9 D; n) F0 ?" E
  6. .arm
    , m6 O) F5 |% s& \/ c
  7. ;设置起始地址是0x08000000
    - p+ E$ T2 M: T# [- u: m9 A6 q* L7 _$ D
  8. .org 0x08000000
    9 K- L: k$ a8 a3 C
  9. ;创建长度为0xC0文件头数据区域+ r! T2 \) n+ {3 D* B
  10. .area 0xC0) }, A7 E# ~8 y2 O
  11. ;填充文件头数据) I6 c% Y4 y7 \$ a- W2 f7 Q
  12. .fill 0xC0,0x00
    8 Y1 i7 e+ i/ l: {4 L  C  ]* k
  13. ;区域结束5 H% M7 p7 V! @
  14. .endarea
    * V: ^5 z$ G3 S" n
  15. ;主程序, [1 F6 |/ g2 _/ F
  16. main:
    - u' R& H3 i) k9 C7 ?4 K; r1 w0 b
  17. ;设置屏幕模式3,BG2开启+ e, G9 P$ c8 E4 z% M+ j% M
  18.         mov r0,0x04000000
    # s% M5 a6 _1 l
  19.         mov r1,0x04005 k4 v4 ^- x+ E3 I. |: y5 ?* K
  20.         add r1,r1,0x3/ r1 f* Q6 c$ R, v4 f6 X
  21.         strh r1,[r0]
    $ K/ \- g( O! b- |  F3 a6 {% @
  22. ;设置VRAM起始地址. _2 m* |, x* F$ Y. P
  23.         mov r0,0x06000000
    $ K5 z, Z- M# n/ N
  24. ;设置图片地址
    + O# R& {7 W( ~7 F
  25.         ldr r1,=pic# j; p; W$ G) Y* D
  26. ;设置数据长度为0x9600
    ) C5 K- K  L+ x' b) K
  27.         mov r2,0x96004 P$ W6 O. ?) ~- R6 G0 L
  28. ;传送图片数据到VRAM: V/ b$ s$ n+ s+ O; V' a: U7 E
  29. loopl:
      L* j5 Q7 e' V* h
  30.         ldrh r3,[r1],0x2) p; |+ Y: x7 b9 _5 [% j; p
  31.         strh r3,[r0],0x2
    ! h& i( ~- X# X: ^( {$ A" g2 N
  32.         subs r2,r2,0x1
    ( a! _5 L. Y  B
  33.         bne loopl
    ) B$ L* m, c3 b" J- I
  34. ;进入死循环$ z4 ?" l: Z6 O
  35. infin:6 L9 t5 Q' D5 ]6 s  j0 |- Z5 L( r
  36.         b infin0 B$ R; ^, ]/ w4 i
  37. .pool. i; C. w) g/ s9 [% B. p& d6 ]
  38. ;导入图片二进制数据
    4 v$ E5 y6 y5 V
  39. pic:! T" G1 y6 Y6 h
  40. .incbin "16pic.bin"
    . E; j' P; L1 `; C  Z7 s; B8 i' K
  41. ;在0x08000000地址设置跳转到主程序入口* \# C& l* L0 T: D" e1 M( Y- n
  42. .org 0x080000008 r2 G3 [0 _/ H2 ]& X* X: p' V
  43.         b main
    0 X1 @6 P/ U/ l8 e# S. v
  44. ;关闭文件
    ' V! p6 M1 e6 C: R/ \. V, d
  45. .close
    1 ]; t' U! e; C6 _8 H. w$ y1 ?% e3 Q
复制代码
. F) v' U1 D- V$ D, U
保存!5 m$ I- T0 y  j, r, q& P

$ b0 D  R+ v/ O' h' r(5)把16pic.asm和16pic.bin复制到armips目录下+ B/ h/ K: ^8 ~" l7 K% l+ R8 K
( i4 V+ P; }, r/ K4 D
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件- v8 ^% g" X# M# ]/ F: k/ Y
; |# m: p8 P5 o8 l* F( a' u
(7)用GBA模拟器打开16pic_demo.gba观看效果; _* B# y3 o* n  ]5 b( y  G

6 ~' F, O/ ?7 c+ [) P. @, E5 ]2 M

# r. P3 q' m- n6 h8 c关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)) T9 W/ K% J6 ?

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-11-19 02:51 , Processed in 1.066406 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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