EMU618社区

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

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

[复制链接]

签到天数: 1974 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
$ Q$ {+ B7 h& r- R9 y  g, v
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
5 B3 _0 x! D1 e
. j* X5 g  `' p0 J7 x* A" l5 M; y这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧1 W* M1 G8 }$ e, b% w' J/ V

- `2 ?9 k6 D8 a$ Q(一)准备工具:3 e) K/ s8 F2 G" G- E) ^0 O) a9 X
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
, |" A; A3 o( e1 [( d4 n+ p/ L6 g1 F, I% E1 }
ARMIPS作者是Kingcom
0 p) t: h' r3 }1 J. vARMIPS源代码github页面:https://github.com/Kingcom/armips
4 _  [; j7 ]. G  ~ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
" g8 p3 [3 o  _, ~9 \3 ]$ u( o/ G
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
' K  Z+ m# U, @, i% }: r  {& m) O4 @3 a4 {% o% L- g; u
bimbo 1.3作者是Aleksi Eeben
/ B1 e5 m+ Z: N0 V4 M
& H: I  y8 w3 \bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167) ^' N- x3 P0 \- Q5 z

0 e# D; L/ }$ p/ X7 h3.一个windows自带的画图或其他图形编辑工具/ @7 S: I1 r' h; u0 B7 x9 r1 e

$ e7 Y+ C; c7 B' g% l  \4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
. Q) ^3 t: i" @& t+ u  U: J  U' B+ f4 m+ x" v7 Y( S
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
# w" Q! t( Q5 \* S/ [+ [
! E6 R) W- v3 j, p9 ~
3 ^- @5 W6 D0 @& A
" j* N* B) o' Q4 X(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
" w8 F4 }' s. B1 y+ L
3 x. t" A$ }" |5 W3 Q
6 @& p6 `) R: j; q; D  h8 D" k
1 x( ?# V( c! m, R. n3 Q# d(4)新建一个文本,我起名为16pic.asm,文本内容如下:
! e5 t8 p2 q, g+ G; e' Z
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    ; [& ^, Y. a5 T. I
  2. .create "16pic_demo.gba",0x08000000! a+ w1 X- U1 C. {  J
  3. ;设置为GBA架构
    1 {) l$ E' r/ p! ^: ?
  4. .gba5 G  i( ~* Q$ f. E3 b5 P$ u2 t/ q
  5. ;设置为ARM模式& \3 a0 A$ I7 E- {9 Y4 k/ k
  6. .arm
    * _: |; q: m7 Z
  7. ;设置起始地址是0x08000000
      b* N$ i* C* K( Q
  8. .org 0x08000000
    ( \4 E# R2 g0 A
  9. ;创建长度为0xC0文件头数据区域
    0 S8 P+ M% k8 A, v
  10. .area 0xC0% q1 M0 @* j2 f
  11. ;填充文件头数据" i9 x' \  i" X9 N" G$ p
  12. .fill 0xC0,0x00
    & {* [' U" ^2 r$ m3 ^* r) M
  13. ;区域结束  t+ {3 p9 G* r4 N8 m0 c
  14. .endarea" {5 f% p3 `# a- H
  15. ;主程序
    . P: o5 W$ x9 _% R- ^6 o
  16. main:
    + d1 V+ o; m  E; E
  17. ;设置屏幕模式3,BG2开启9 A: d' F( H2 {# }3 K+ s( n; v
  18.         mov r0,0x04000000
    + A7 n/ H+ V/ J1 D' u
  19.         mov r1,0x0400
    ( B7 q3 U+ ]8 V' `, k8 G3 G  [; ~
  20.         add r1,r1,0x3
    0 v3 n6 ?4 J' L7 I- j& U- J* ?
  21.         strh r1,[r0]
    * R/ N1 [0 Y" q! N0 j
  22. ;设置VRAM起始地址
    2 X4 F2 O+ }( F8 a( @% _
  23.         mov r0,0x06000000& ?* K; ?( l: H3 I- I! |" Z
  24. ;设置图片地址
    + ]1 }% Z9 D; R  q* k* p3 T0 T
  25.         ldr r1,=pic
    ; X' z1 A7 O( H
  26. ;设置数据长度为0x9600
    9 I2 w; p: f  x/ l+ r
  27.         mov r2,0x9600. E4 U9 y4 D# \! `7 w- r3 G8 z
  28. ;传送图片数据到VRAM$ c$ D: w9 J6 v
  29. loopl:+ r6 v# {: U. J/ o: w- o" [' T) s
  30.         ldrh r3,[r1],0x2
    . X2 e1 e. A( n5 e
  31.         strh r3,[r0],0x2, w% M( ]$ c$ P" w# P5 V
  32.         subs r2,r2,0x1
    8 e) O- T1 ^# r. y: r! r
  33.         bne loopl
    ! j* F/ Q9 K) E  v' f8 X4 K5 t
  34. ;进入死循环
    0 S. c3 m' b/ N) m7 k) @
  35. infin:
    9 q0 U) J) f6 t" F3 R0 ^4 _
  36.         b infin
    ) i' t$ O& y0 ~0 G  m
  37. .pool' A# H* o4 d2 P' `% N% r
  38. ;导入图片二进制数据1 a3 ?2 z$ p3 @+ m# F9 I" ]7 ^
  39. pic:% K2 M& Q; n  N1 r: \' C. T
  40. .incbin "16pic.bin"; z2 L4 N  D7 g' f
  41. ;在0x08000000地址设置跳转到主程序入口
    + B( _. \9 _! T9 j
  42. .org 0x08000000
    5 z! Y. m( S4 I/ x' V
  43.         b main
    ; v7 L5 l2 `( a+ ^
  44. ;关闭文件* @) E/ Z- M5 c& F& q
  45. .close
    1 G7 J" A) `6 O) f1 V% d1 q( p
复制代码

* D5 ?1 k* c, k+ `9 U& Z% M保存!
, s! x- \. S/ r& Q$ G4 t6 k1 U; L  b  a' ~2 @& e+ c& }
(5)把16pic.asm和16pic.bin复制到armips目录下
0 C' R; U& e8 }2 p
8 D& C0 F9 E% K+ q(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
8 W1 ^: u/ O6 _; E, ~8 L
/ Q5 u; ]6 q5 w* x6 p(7)用GBA模拟器打开16pic_demo.gba观看效果+ e9 d: d" u* S5 f4 @) S! B! r

  p+ }% S" i$ [
5 T0 Q- G$ I, c8 i/ f2 d& T
% ^" X" f' m  X, [关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)3 n! i, `, V3 d

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-10 08:56 , Processed in 1.090820 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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