EMU618社区

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

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

[复制链接]

签到天数: 1980 天

[LV.Master]伴坛终老

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

+ a* c* {/ I  S) x$ Y当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档/ A$ _7 ]% V$ W/ b8 ~

- h& g( B% x) c' z3 Q# P- J2 |; }这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧4 \/ e4 p# `  I8 }7 G

3 ]" w& [! B# F. g7 L/ ?; d(一)准备工具:6 K4 ^1 h# Z5 T$ d" Q
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例5 g8 X6 c3 N! c$ Z5 h& F4 B1 Z) `' l

% b+ t4 l9 `. J+ BARMIPS作者是Kingcom, P/ d4 }! L/ I
ARMIPS源代码github页面:https://github.com/Kingcom/armips+ D- G5 g' k$ {" _6 ^2 e
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
, c. d$ Y2 q0 ]) M4 Z2 L/ f$ V- @+ S( l" Z6 ^4 M7 _! q
2.一个将图片转换为二进制bin文件的工具bimbo 1.3. ~' f' l& j" x

- K$ ~: I# z- R4 h+ n# C! Z4 x3 pbimbo 1.3作者是Aleksi Eeben
1 [+ d( b8 d0 E1 \3 V" j8 U9 A8 J$ [9 S% `4 i0 B: r; a" x& v" X
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
# q. Y+ n; E( w1 ~; ]5 ?- ~, }( a' W0 \
3.一个windows自带的画图或其他图形编辑工具9 Q4 u' r) ]7 L, ~& @% g

. P$ |& u% N! m* t! o4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
3 c: w/ Q7 m  M9 O
: f3 L. n/ c7 {2 A: G(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
& B+ t# d2 }7 B) R' ?9 Q: H& m7 m7 O& i+ F6 r4 Z4 V

9 J" g* k9 R0 f& N& C! d
9 c; ]  S* Y3 p% D3 g1 m(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 h; A+ }$ u8 ^% g

3 ^, I6 n4 D0 x8 D1 o  s! X. `$ E: R& Z: K

! q: T; n2 o7 h/ A0 h1 o8 H# v(4)新建一个文本,我起名为16pic.asm,文本内容如下:. D0 h+ o1 {7 i2 x. A
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000002 n5 h2 }* c# `6 Y
  2. .create "16pic_demo.gba",0x08000000
    ! @, ]+ \/ v$ c3 J% \1 E4 W2 N8 c
  3. ;设置为GBA架构) H% `" s2 C" \
  4. .gba
    # I+ M9 t- \- q% T0 [$ ~
  5. ;设置为ARM模式
    0 b  y, s7 R6 s
  6. .arm' N5 f, \& M  b% I! T, b
  7. ;设置起始地址是0x08000000
    ) M+ g8 |; ]" K/ Y
  8. .org 0x08000000
    ! s, ^( f/ l" u
  9. ;创建长度为0xC0文件头数据区域
    & d% j( y" Z/ l' n
  10. .area 0xC0
    9 w- P! t, m4 I. ?9 I' S8 G
  11. ;填充文件头数据3 y6 M- h+ W$ T2 j  H' X
  12. .fill 0xC0,0x00
    + m' Y/ ?5 d4 z2 _3 D
  13. ;区域结束
    5 r; k% o. H4 a% Q+ T; ?! X. U5 M
  14. .endarea
    0 k( y3 O2 w7 G/ d
  15. ;主程序
    0 ?' s* M, F7 W# n* _  u4 _
  16. main:+ D( {' `% m; ]" S6 W7 {( ~& u; k
  17. ;设置屏幕模式3,BG2开启
    $ Y( O4 A$ y2 q2 A! _
  18.         mov r0,0x040000007 a2 F$ A2 E$ E4 G, v, q( I
  19.         mov r1,0x0400" P6 V+ D9 ?4 M0 O! C1 [6 |# v
  20.         add r1,r1,0x3
    0 `% S* {5 Y  n' {4 R0 R6 n
  21.         strh r1,[r0]
      e2 P# j' l+ U$ I4 ?1 k
  22. ;设置VRAM起始地址+ h; A; \- `: R$ P
  23.         mov r0,0x06000000* `. H, N* K, k- L
  24. ;设置图片地址! X- N8 Z1 X/ t0 x
  25.         ldr r1,=pic, g% {3 @0 q, M3 b' w0 {
  26. ;设置数据长度为0x9600
    ) T# o" ]7 L9 n( R1 F% L7 A# U: Z
  27.         mov r2,0x9600
    4 ~# {: @1 }8 Y% I) t, W1 b) @
  28. ;传送图片数据到VRAM+ Z1 a  d  G* _: E9 Y. ^9 b
  29. loopl:7 T# x. h- a; B
  30.         ldrh r3,[r1],0x2
      L( A! {4 N: o( d8 {: _+ b; b- c" r
  31.         strh r3,[r0],0x2
    : S7 p+ }/ C; c+ t/ d9 K# D3 b% g
  32.         subs r2,r2,0x1% y1 a4 `4 L% V: c9 @
  33.         bne loopl
    1 F: b, H! U5 i0 U- _; d6 i
  34. ;进入死循环
    # n6 d1 N  F" w( R, V- s
  35. infin:
    3 K& c0 t, Q" z/ }, _. u, z! B
  36.         b infin9 K' {. x) F: P1 B$ j7 K# f
  37. .pool
    ! m" A2 S2 T2 F% v+ _; ?
  38. ;导入图片二进制数据2 u" ^9 a, x( }, g
  39. pic:: @: H/ p7 v+ X/ h: V5 z: D
  40. .incbin "16pic.bin"
    4 N& N' x( ]7 B4 \1 `* {2 o
  41. ;在0x08000000地址设置跳转到主程序入口# y) N" b9 S- `5 [: b
  42. .org 0x080000002 Y& v) y4 C1 s' a: o9 i; q4 c
  43.         b main
    - E( C/ T0 ?, i& {/ w
  44. ;关闭文件% Y& ^( q+ Q5 Q; o# n9 T( D9 `
  45. .close
    ) E4 {. n0 h$ f0 S3 Y
复制代码

5 J6 t# V: W0 @# ?, Q2 A" e1 G保存!# \0 \  x) c1 h) ?

& v, X" C" m6 Q" y(5)把16pic.asm和16pic.bin复制到armips目录下
& i; k; l$ D7 y* D. t! O9 T) H4 d/ u. f  ]5 l/ G: F4 F  {/ P& Y
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件- ^4 v0 Q) m/ B2 E

2 w+ G' [# ^5 i. c/ r(7)用GBA模拟器打开16pic_demo.gba观看效果
1 h( M; A! e  J/ ^# [, c, G+ e
  _' r" k/ w$ ^  E  Z" N3 b: T
3 {0 S7 f; X. B* M8 ?
- i& v4 K1 a: O1 B关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
! ~6 x0 d  o* L, d

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-16 16:24 , Processed in 1.059571 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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