EMU618社区

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

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

[复制链接]

签到天数: 1927 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
& R0 _4 S, I. N3 ~6 B2 C
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档) b) H+ i5 Y% c! u6 K4 z1 E
- A. n6 g$ U# \  l* e3 Y
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧/ C! \: U: P) N) c  J

( r$ D  R  W7 G) N0 Q! x(一)准备工具:8 H$ e! A: o  N8 t/ Z
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
7 [& j2 v, t9 l% z( l  l+ T; _. F( y  o
ARMIPS作者是Kingcom
0 O; ~' j) J) ?$ A( E! C3 w+ t' PARMIPS源代码github页面:https://github.com/Kingcom/armips0 [% F1 h2 O$ C/ D" E
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
/ l3 m( f# ^3 i- i
) i/ a5 e" u5 e4 E. A: G2.一个将图片转换为二进制bin文件的工具bimbo 1.35 r/ U/ v2 B' `
* ~; a$ F/ m9 X4 h9 b) F( g; H" a
bimbo 1.3作者是Aleksi Eeben
: v1 C5 D4 U9 H5 R' Q
5 T; H8 @$ f9 Wbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
# D7 Z& l2 l* Z/ r1 e4 Z) o, J  ^( @. v3 B
3.一个windows自带的画图或其他图形编辑工具
; n8 u( M6 H) }9 ~5 m5 @  X
- l4 [& M/ R, R4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)7 {6 V* V, V/ {
( Z% E  K% m2 ?+ U3 I
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
* O2 ^2 e7 v' v( Z& k, \9 }
/ J- ^& ]6 B* @% X! F
" D3 t% n! i* u6 b. {% S: a& @- N1 C0 A7 T. b. c
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin" C, I+ B2 i7 N7 F0 C+ A) E
( ]: ~, a6 F7 D
6 c$ _* H$ _) A) W2 c

6 Q3 p$ ^3 M; W/ Z- ?2 G(4)新建一个文本,我起名为16pic.asm,文本内容如下:8 C  @: t- \0 M& \6 A! g7 t
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    / u3 n9 f! ]0 L1 M% v: M
  2. .create "16pic_demo.gba",0x08000000
    8 }' ]4 x4 t& U* i) }# w
  3. ;设置为GBA架构
    ! S. f( }1 z, C4 g4 J* ^
  4. .gba2 D9 Z$ P2 D6 a2 S! Z0 T
  5. ;设置为ARM模式
    * v3 m5 ^! N* H5 R5 r
  6. .arm6 K) D% D3 a: R% K& K/ n+ s
  7. ;设置起始地址是0x08000000( o( A  C/ U3 w& W! n" x9 a* g
  8. .org 0x08000000/ ]' e/ T$ z0 I
  9. ;创建长度为0xC0文件头数据区域
    $ ~" R, S  u6 x) ], Y# f
  10. .area 0xC0
    6 d0 O* |% k1 ]* q0 N# R; W2 c  Z8 M
  11. ;填充文件头数据- p. }3 n3 b; \+ x- @
  12. .fill 0xC0,0x00
    7 @9 C  d# B" O0 I7 M8 b. k
  13. ;区域结束7 f8 ^) X% E% [$ k
  14. .endarea" y5 T: m$ Q  ^8 z$ d4 x
  15. ;主程序" p; H: n1 T6 o! L9 S" n
  16. main:
    0 H) s# S& d( }6 I
  17. ;设置屏幕模式3,BG2开启' N6 F% n) N" ]& P7 V
  18.         mov r0,0x04000000
    ' y  h5 l" H* U* \7 S# O
  19.         mov r1,0x0400
    ' ~  f& {& \+ Y* {3 }) l
  20.         add r1,r1,0x3/ U+ H5 i; m) L1 D1 [& ?! b8 E: s
  21.         strh r1,[r0]
    3 z& j* |& }+ J! g) q7 Q  D
  22. ;设置VRAM起始地址
    ; {8 |- X; W% @( e) p$ _0 l
  23.         mov r0,0x06000000
    : t0 U$ I0 Z% _" ^3 g) H6 y" F2 s
  24. ;设置图片地址
    8 \) ^* w/ V# x* \) J5 e
  25.         ldr r1,=pic) f3 @# ~7 v: F! j: ~' Q% J
  26. ;设置数据长度为0x9600
    % x% ?9 {( P/ R) H6 ?: E
  27.         mov r2,0x9600
    / Z$ M3 Z7 ^+ S# x' h$ M, I- b* `
  28. ;传送图片数据到VRAM  h. N+ k4 s$ _7 S1 ?* C) N5 a
  29. loopl:( Z. [0 {; ~8 X$ T! _6 w& K* t7 e/ E
  30.         ldrh r3,[r1],0x2* N1 y, f; e& q: G( i: G6 X  ~
  31.         strh r3,[r0],0x2/ ]( B0 q+ }7 ~, t! g
  32.         subs r2,r2,0x1& x; M- b* R! `  w
  33.         bne loopl& O' D+ x* X' g
  34. ;进入死循环+ }! ~$ R0 B4 j$ C! |
  35. infin:
    4 f! ~* @( [4 S( J
  36.         b infin: g: {: `, F  n1 x7 G  W9 K
  37. .pool+ V2 g8 ]6 f# D! d4 C1 t
  38. ;导入图片二进制数据
    3 d' @" p; \' P/ {/ R$ v; u
  39. pic:
    7 A& F$ ]; i) K
  40. .incbin "16pic.bin"( y# `# {* c! K8 J% V) |
  41. ;在0x08000000地址设置跳转到主程序入口
      a  r0 y" S4 R' l# L1 J; @, l9 e
  42. .org 0x08000000! ^. g. `' S" z
  43.         b main' @$ c. A9 B8 K# ]( f/ Q5 ]
  44. ;关闭文件  \! d- V' ~" U5 K  `' E
  45. .close
    ! k2 {0 g, `; `. k( ~. [
复制代码

4 z5 R1 s* |3 _' r1 Z保存!7 g5 Z8 ^- G9 ~- K
- N$ C! h, ~8 T( a( W0 B( l
(5)把16pic.asm和16pic.bin复制到armips目录下+ a9 T! \' a' B* }5 R
% L( g% D4 \+ A0 @
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
) A. q- g: v2 v6 t# ~
: e+ s9 Y3 Z; B: u$ c! ~7 R, m(7)用GBA模拟器打开16pic_demo.gba观看效果' ~/ ?5 ^  M4 W+ E/ ?$ ]+ p  c
4 {& H2 A  U7 ~
5 W3 h/ D: j' Y

5 a5 a; ]4 Z" k# }关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)! X" t. ?5 H7 H2 S

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-4-22 09:40 , Processed in 1.107422 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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