EMU618社区

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

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

[复制链接]

签到天数: 2122 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
4 w, ]) n& N9 E3 L% M3 ~
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档% T1 K3 v7 X! Y9 q. K) `4 N
2 `5 O( ~1 o, V) |# ]( z, k% ?; K
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧6 E2 F: F( a) p& J" V& q  s

9 ~4 ^4 o$ X5 R5 q' K) h* U1 e(一)准备工具:7 D+ y0 ]/ X  q' L/ \; x( E
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
0 ]9 m. [+ {' `+ Y3 _
7 @& z; O9 j) @8 E+ H$ |ARMIPS作者是Kingcom
9 [+ O3 T) z  S) Q. G& o. a  WARMIPS源代码github页面:https://github.com/Kingcom/armips
3 y) ?1 z0 b8 K* ~( K. |7 vARMIPS Automated builds页面: http://buildbot.orphis.net/armips0 {+ V) e- K. g# n

9 t8 H) u* I. X" b0 K6 a$ ?2.一个将图片转换为二进制bin文件的工具bimbo 1.36 A" h( P/ G3 f

8 b5 a/ i% h% {8 Sbimbo 1.3作者是Aleksi Eeben
* N3 j. U. Y. z% L& H- j4 p
! `9 a( E/ \) B, wbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1677 N9 s( D1 I8 v6 c# w1 S# F1 U+ X
8 X' E  w  K2 v! a: m% B+ {
3.一个windows自带的画图或其他图形编辑工具
1 Y# O+ M: P6 B) r; U9 a: X9 F! u6 E: x1 O" f) D3 z
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
$ j1 {6 r, c+ g7 H% ^0 J. t& B( v& n7 L& E  w% @! R7 R
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP9 [) S- O; c3 B( T/ g

5 |- J2 r% [+ ~. [( K5 U1 w0 n( j$ V# a: ]
/ O! z1 Y8 o% g0 l
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
4 m) a5 n/ }- [+ {& e% @# Z8 w: n/ d2 \" A2 p- A
' c4 v0 h8 L$ @  a- A" J

( \2 j4 f2 f7 E- ^* |9 S(4)新建一个文本,我起名为16pic.asm,文本内容如下:1 ]% ]! f$ P; s% a( `/ S0 X: m5 s( m, D
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000006 H) d7 t7 m+ l* r$ Z. B
  2. .create "16pic_demo.gba",0x08000000
    9 r. E3 k% d. p) g
  3. ;设置为GBA架构3 Q7 v. X( P6 x5 L
  4. .gba9 a( @7 P5 G, v/ _# p3 B3 s
  5. ;设置为ARM模式  c) ]) {( a5 \, Q5 v4 X
  6. .arm
    3 J4 \3 c; w+ e. T& c0 }
  7. ;设置起始地址是0x08000000& {1 E& @) r+ B0 q0 ^% s: z6 i
  8. .org 0x080000001 O/ s# K9 P1 |" Z6 h& B
  9. ;创建长度为0xC0文件头数据区域
    ! [' B2 T" M, N6 U- c6 S
  10. .area 0xC0- C8 E" k4 h' \; X! J2 R$ z9 T
  11. ;填充文件头数据
    + I  e) l6 }/ z+ R
  12. .fill 0xC0,0x00
    - c1 k2 E5 ?9 J4 E, D
  13. ;区域结束
    0 q5 p4 i( A% f% w1 W
  14. .endarea
    0 G, q& G: E( c8 b
  15. ;主程序: g2 Z4 o0 W  i/ Z- L# ?- |3 p+ w
  16. main:
    , j( @, W, D( f8 ]1 T7 L
  17. ;设置屏幕模式3,BG2开启1 V# z* m$ Z" H) V) S- f
  18.         mov r0,0x04000000+ h1 t! o) b2 A) N; O
  19.         mov r1,0x0400
    5 z! l( B7 `9 R0 t/ n6 E
  20.         add r1,r1,0x3" _8 I$ l. F( m+ i  ~
  21.         strh r1,[r0]
    2 c" m/ @+ j( x, j  W" A
  22. ;设置VRAM起始地址
    7 k" i3 `; M: f( N( H1 P% b
  23.         mov r0,0x060000001 f$ V' q  J6 j. Y% p# W
  24. ;设置图片地址
    9 d# R+ `; N8 J# F  S* l0 G
  25.         ldr r1,=pic
    0 d1 I1 Y0 w8 p/ r7 q
  26. ;设置数据长度为0x9600  ^  C. W" X& V, N, V
  27.         mov r2,0x9600
    - U/ [- E8 f5 @, d; S) j, f3 p
  28. ;传送图片数据到VRAM2 u. L9 F: F9 }" ~+ d( \) E: ~$ o$ L5 T
  29. loopl:
    ( G6 e" G. M2 D7 m
  30.         ldrh r3,[r1],0x2; U0 B7 D- W* M+ V$ n" A7 n( @# t
  31.         strh r3,[r0],0x2
    : q; w$ z) X" K: P. S$ m- D% n
  32.         subs r2,r2,0x1
    : \/ ~4 J+ u9 n# l: J7 X+ t3 a
  33.         bne loopl3 j) `: S( x/ E  u. D' E
  34. ;进入死循环
    - [# f: f3 X  R) J/ \
  35. infin:& M* ]9 u: L) R: ]
  36.         b infin
    # H% \# Y) w+ k; w
  37. .pool& B8 x' R- @+ H) K+ z. u, F; n
  38. ;导入图片二进制数据5 q* a4 H8 t" C* M9 S
  39. pic:
    " B) N* @5 E' t
  40. .incbin "16pic.bin"* f1 e' {! I- u( k5 k5 u
  41. ;在0x08000000地址设置跳转到主程序入口
      a9 D/ _6 y" M9 k0 |5 m8 V2 c
  42. .org 0x08000000
    & Z* X& s1 J. u
  43.         b main
    % U) f; b/ R8 n" V1 z, o# M# ]
  44. ;关闭文件
    4 p/ S9 ?) ]- L6 K. F1 o
  45. .close6 a0 k: k* V, P* m- U
复制代码

$ [) I# t! L& U8 n1 w保存!2 }6 h; q0 K; {+ Q( z1 A
4 `/ Z4 L) i3 i* |; Q
(5)把16pic.asm和16pic.bin复制到armips目录下
# ]# A* o3 t* h! j6 n5 e# K" s  t8 Y  E1 h" j, l
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件; i* r% ~* }" `

( Y9 q5 G9 o+ }6 Q' m; `; y(7)用GBA模拟器打开16pic_demo.gba观看效果
* V: e7 l% _# Q- |# w3 f. j0 L4 P/ F( t: [) i+ I, O  e

) M* k5 A6 @1 x2 `* C$ T4 e- [
2 d3 ^" `- j  A* H8 L  Q) e1 L关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
2 X5 A- X2 f5 Y" t; F0 u/ \( d. X! K

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-11-5 18:53 , Processed in 1.063477 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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