EMU618社区

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

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

[复制链接]

签到天数: 2093 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式

/ ~* G- v! q' Z/ ?, G! c  W当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
- n& u; v% f2 H! R7 T4 S8 A- q8 ~! |/ p' V- |2 U! s
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
9 L6 d. u. A: s0 c) K
0 w2 `7 q' \1 S+ q+ H( B(一)准备工具:) j3 V3 R- H* t0 L
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例, s( |8 u5 n2 F3 p& a' c( _& @
( b5 p1 A/ J8 L' j! d0 u) d
ARMIPS作者是Kingcom' @- d' X$ H' U4 }
ARMIPS源代码github页面:https://github.com/Kingcom/armips3 G& V2 R* L, L8 m- ?: m9 G2 C% t
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips8 L% ]  ?& [7 l$ b5 ?

- E7 H/ D: a! F! p0 @$ _2.一个将图片转换为二进制bin文件的工具bimbo 1.3
4 I& ^1 A- _) Z: c& n$ n& u' q4 h
bimbo 1.3作者是Aleksi Eeben  z1 p9 p, S* F: B; i" e. w
5 l7 W/ R1 K. Y2 b6 u
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
0 I* p0 b0 K3 [5 A5 H/ S% y7 \) p" W0 A& |2 Q1 n$ |( G
3.一个windows自带的画图或其他图形编辑工具
9 V8 R3 O/ R$ P6 _7 a4 b5 R, P, G% H5 Y8 R$ D  }2 {' ?' \
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
  {, P  c) I; _/ Q3 H* }9 ~  j! Z) \3 ~, F5 R- y! i, x' Z/ \9 e
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP" t- M, x4 W9 v$ X$ p7 ]0 `

4 N* `! j9 e9 O8 H  L$ t# A( f) h  U; c  t9 s$ q$ s4 {
  N% k3 K5 I9 u2 S# D
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
2 y' n1 G# P  |% ?/ N
, l% l' o' ?1 v3 ^" Y
; {4 o) k. x" V8 y4 S+ w2 Y
0 C4 f4 O* l, Z8 y(4)新建一个文本,我起名为16pic.asm,文本内容如下:0 f3 F( R5 X  N* e7 {; C! x
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000  x& [1 j+ M/ m3 l7 p
  2. .create "16pic_demo.gba",0x08000000( }- B( s' @: v/ l: y+ y1 O3 C
  3. ;设置为GBA架构+ {3 ^1 H. z3 q* n  O. [
  4. .gba
    6 y% D9 M6 D" G) ?/ `6 [- x
  5. ;设置为ARM模式
    + C! [) q( }# |6 I/ _
  6. .arm1 t8 r0 A4 w$ u% J% H
  7. ;设置起始地址是0x08000000; D/ h7 }+ Z2 @( G6 M4 ?! q/ O9 K
  8. .org 0x08000000
    - W: Q$ S# ]$ l3 |) N5 h
  9. ;创建长度为0xC0文件头数据区域" h! X/ s: ]* J' J7 L7 C* }) q* y
  10. .area 0xC0; d. i: y. v* f+ i' C
  11. ;填充文件头数据
    , r$ C: X0 R! z2 S" j
  12. .fill 0xC0,0x00
    . q* J" j* i1 B
  13. ;区域结束% O9 v+ n4 q% C2 V# D; Q
  14. .endarea
    : u: y6 M$ ^. ]! y
  15. ;主程序
    ' d# O' c) B* \5 G
  16. main:
    , q/ g" l* R3 I2 f& w7 X
  17. ;设置屏幕模式3,BG2开启
    - b( [/ d/ i" E) C2 h
  18.         mov r0,0x04000000
    ! l% c; p* w+ K1 R7 t
  19.         mov r1,0x04009 A  l) C3 U  ~
  20.         add r1,r1,0x31 b( y1 B4 j. A( i  f
  21.         strh r1,[r0]
    8 n1 ]5 g; p3 T
  22. ;设置VRAM起始地址+ p% o& k+ f" w6 t# X$ E2 F
  23.         mov r0,0x06000000
    , K3 M) }0 _; @  X0 h
  24. ;设置图片地址: M5 O& L- l9 P5 Y# _" |
  25.         ldr r1,=pic
    0 j) O  A, p1 \2 z$ [' g
  26. ;设置数据长度为0x9600
      Y( Y, n* j0 F  m* T
  27.         mov r2,0x9600
      p& b6 n% ?" S, Z
  28. ;传送图片数据到VRAM! j1 ]1 j9 z. `
  29. loopl:
    & n" u5 [4 x0 }. J+ Q: d. S
  30.         ldrh r3,[r1],0x2  X1 w5 E; y1 y9 N+ a4 Y) V
  31.         strh r3,[r0],0x2
    * v; F4 ^* ~  @; b+ w/ i: y
  32.         subs r2,r2,0x1
    4 z/ o7 j, p5 v9 b, c
  33.         bne loopl
    1 y/ |& R' Z, s  n1 I
  34. ;进入死循环: [0 D' a1 e4 T9 j5 I( j/ B1 D% j2 z
  35. infin:- ]3 D! J& r4 J; d; e% X
  36.         b infin$ @! ^$ T' G7 k6 x
  37. .pool4 y( N" f7 [( v! `  c
  38. ;导入图片二进制数据9 [; T1 u& x) w( C- ?7 b' K+ K
  39. pic:
    : |3 V* ^& N; z" D
  40. .incbin "16pic.bin"2 t! S8 n& Q9 L( Z
  41. ;在0x08000000地址设置跳转到主程序入口
    $ f! [- G. N) ]  x/ x
  42. .org 0x08000000* I3 A: |2 A" }- j& _
  43.         b main4 y* x) x# }, a( m# z0 ?
  44. ;关闭文件
    % T3 l2 T0 l! ?# |4 V: F' X  g
  45. .close6 g% ]& g4 y, w: c0 ]+ u( F
复制代码

$ L6 S0 l& M: o; `保存!
- Y' m( e! R1 {) [: ^1 t  p2 t9 W% V4 ~' u" S( `; I. M6 f; f
(5)把16pic.asm和16pic.bin复制到armips目录下% ~& D0 v  N% C1 S$ R* O9 B# z
3 \* L3 [3 `" \6 ]. [  b0 n5 c. g
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
: b0 V  |1 p/ G/ i) S' B$ z0 u# d; ?2 m4 Q6 K( I& E" X, r% z
(7)用GBA模拟器打开16pic_demo.gba观看效果
1 ?: B/ k! o- W5 o
. ~7 ?: g* i; H
3 L( u2 X8 K3 R9 k+ {
- ^6 _) N* N( v7 V6 g$ ]关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)" q5 x: l, L; z: J' w" Y' H

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-10-7 09:47 , Processed in 1.062500 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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