EMU618社区

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

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

[复制链接]

签到天数: 1894 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
# M( d9 a0 V/ p3 @& e$ H2 Z2 J5 d3 f
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档* `# q, u: ]6 s* m  n( c

( z7 P, ~( X: [0 ]# }' g2 Q2 i这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
. R) G  @- W4 q' I, m2 \3 o
6 A' {; u% q: G# w- c(一)准备工具:7 [  I: q9 o5 f  l) p
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
/ f2 x9 T$ W' W2 u0 c5 _/ ^* A" W  S  s6 R) t
ARMIPS作者是Kingcom
1 A2 f: ]: L8 t' e" q, N, k3 OARMIPS源代码github页面:https://github.com/Kingcom/armips
. _4 ^; d3 P  x. l; UARMIPS Automated builds页面: http://buildbot.orphis.net/armips
! i! s' g! X. h+ A- ]) t0 M  Z+ t+ i$ h
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
5 S( T9 r% `, Q: u  ?1 o& z9 P' i; f2 P& j" l7 P
bimbo 1.3作者是Aleksi Eeben  P1 F# y* v+ g. a3 u
) J! _+ t7 p- t8 S& W! p
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
' J7 k4 R7 S1 w+ T
) `+ a9 |( I7 U6 G" _- B3.一个windows自带的画图或其他图形编辑工具
3 N4 p$ j. g! ]: a  }* u. r+ N: `/ n; F9 a0 [' q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
  L( x5 i. A, V. f6 z- u
7 h, c) e* e( @3 _9 x- X$ B(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP' W- y5 ?4 T+ A2 g9 t

; o- A8 a9 s9 h, ^/ ?/ Q9 N/ V7 k6 B2 Y2 T
! f. W5 x3 A' v2 i. [2 }
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
) C' _, x- D) w; f( H1 s% j1 q& o& d, w' [6 B
  D# p1 a* F9 H4 W) A7 |$ l+ X$ I
; K6 _7 R9 D7 [# P. ]2 Y5 u( t
(4)新建一个文本,我起名为16pic.asm,文本内容如下:1 {0 ]+ @- ~4 \1 A3 t( l
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    7 T0 S+ @1 W+ s6 p2 ^) l
  2. .create "16pic_demo.gba",0x08000000; D3 k7 x1 o% V+ O0 N% q1 ~
  3. ;设置为GBA架构- }( A# z' W3 d1 s/ V
  4. .gba
    + M1 N. ^5 L, c% I' g
  5. ;设置为ARM模式
    5 X: c5 {0 ^' ^6 h
  6. .arm
    + B. Y" m" R3 {! z
  7. ;设置起始地址是0x08000000
    7 W" J/ \4 f  W( T4 ?1 W
  8. .org 0x08000000
    6 ]3 k6 [) U4 a5 I( n5 W+ ^
  9. ;创建长度为0xC0文件头数据区域1 N  b. v7 r4 A/ x) ^3 G
  10. .area 0xC0
    # b, s" f; l' V1 v6 Q  n4 q
  11. ;填充文件头数据
    3 l3 l( S7 [% f, t9 E1 T6 u; }5 h& P
  12. .fill 0xC0,0x002 }2 T" ?  D0 L! E$ X! {) `* h
  13. ;区域结束" w: h6 }" X/ U  D
  14. .endarea
    3 F2 Y, a! _0 G1 y4 G- O- j6 Z
  15. ;主程序% s5 w  E5 c* `6 |( O9 E) L( o; p
  16. main:9 y: c! {! n& a: U4 ^5 ~6 ^
  17. ;设置屏幕模式3,BG2开启
    + y" F+ \( D" \$ d$ k
  18.         mov r0,0x04000000- a. @/ }+ d+ n. O
  19.         mov r1,0x0400
    & N& {8 ]5 w* A8 c  q9 ?% c/ d* ^/ ]
  20.         add r1,r1,0x3
    / w6 o: q+ g* }) v- M$ S# N3 @
  21.         strh r1,[r0]
    ! I  Z* \0 f9 o( I/ U" [( G3 m
  22. ;设置VRAM起始地址
    + ]( r) d" E1 |6 j
  23.         mov r0,0x060000000 A: p3 g8 n2 A, t8 P  R2 }
  24. ;设置图片地址
    $ i. A. _6 p# m9 ~: N) \1 E
  25.         ldr r1,=pic
    1 K6 M8 d& i8 N+ C7 m! G
  26. ;设置数据长度为0x9600
    9 {) p/ G( m4 O4 v1 L
  27.         mov r2,0x96008 a5 V6 U' `1 c
  28. ;传送图片数据到VRAM6 ~! c) o5 B# [* y3 ?# W
  29. loopl:+ y/ b7 n* v% i: s* W# u
  30.         ldrh r3,[r1],0x2+ s: V$ O5 U: d- i, }$ h1 v
  31.         strh r3,[r0],0x22 y+ Z% U  ~0 C
  32.         subs r2,r2,0x19 W) n* k6 i7 C3 A" {
  33.         bne loopl, n/ R8 e1 N  E: n3 U1 n4 C# N- A
  34. ;进入死循环
    + @( p9 w0 ^4 [
  35. infin:1 ~2 J1 `$ s3 C+ z
  36.         b infin
    - P( Y+ u- t& k2 s/ u8 _: [
  37. .pool0 Z5 T5 @' G# h5 e
  38. ;导入图片二进制数据' P" N2 I% c3 |' Y0 m, P4 A
  39. pic:
    # R2 g( p% C+ |7 b& X  R
  40. .incbin "16pic.bin"
      W  Y0 s. T: f
  41. ;在0x08000000地址设置跳转到主程序入口1 z5 A+ g' f6 k2 f
  42. .org 0x08000000- J' D$ ^4 t4 f2 Q; |
  43.         b main# e! r- D2 h5 Q9 z* ^! a
  44. ;关闭文件
    1 @/ n! U% B6 M6 v5 I" ]7 e
  45. .close
    % k: L0 H6 h: s2 m+ t9 ]; ?/ _
复制代码
" M5 ?" f2 B0 F7 z* E, g& s5 R# W
保存!
! @9 S- \, W- m% D6 {. [# x! L( |2 I7 g9 }) }
(5)把16pic.asm和16pic.bin复制到armips目录下
+ B9 Y1 x* r  {, V8 i& @; I1 w6 Z  H* Z3 u
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件1 G& j: m! k7 C' |) S1 A5 F1 r3 M
4 E9 n& D+ z4 k4 H% z- m0 ~
(7)用GBA模拟器打开16pic_demo.gba观看效果9 R" a" y0 C/ K$ Q% m

0 _+ r; Y4 f/ ?) g" w* ?
5 C. M' l8 h) c  B' t0 A. x3 g! y# H+ t4 q9 s( ]/ [+ g
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)! D+ u9 Y* P! o* {: d

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-2-25 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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