EMU618社区

 找回密码
 立即注册
帖子
查看: 658|回复: 0

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

[复制链接]

签到天数: 2002 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
3 e3 _& a5 A% X, f+ b( C4 t6 o
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档: q) O; |1 {+ @6 V' O

. l$ s# N" F2 k4 F7 s: C8 l这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧0 b( a4 E4 H. X% t  R

1 u+ s$ \- r: f  {4 Q& @(一)准备工具:4 F% ~- m! F' d; q' @& L) W
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
! s; @  E6 p% r% g" B8 t8 m& g+ F/ c2 S$ r
ARMIPS作者是Kingcom6 j0 M8 L1 V/ y4 |; _
ARMIPS源代码github页面:https://github.com/Kingcom/armips- t- a$ j- q9 h& `
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips, B! L2 R- _9 N7 }9 D- n+ M

* d( L7 o! c# s9 a4 r2 [$ \2.一个将图片转换为二进制bin文件的工具bimbo 1.3
! J4 \" ?8 v  r4 m; F$ ~9 m5 h
bimbo 1.3作者是Aleksi Eeben4 Y3 T  Q- X. F1 e
5 ]* J' J  _6 P7 S* O2 \
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
7 R7 A& \6 L  ^! R# ]
# U0 v9 G4 m. U3 f! w  _3.一个windows自带的画图或其他图形编辑工具+ ~" k2 Q  r! G+ ~5 K

9 Q) S* f( x0 Y- N$ _0 `; x4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)7 M" J. T: q# h1 X
5 S& T: P+ M: C& F4 h- P. S% ^
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
5 X; B/ M% i) r. u9 n( F+ G+ ?& H# ^! N
1 Y- p0 j% T9 w+ l" S5 H5 M

; T* m8 m  f- Q( Q0 s9 R(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
5 v& S! d( b7 ~7 J# f; {- }: c8 B) ?+ X6 ~, h0 d8 f
  o1 _/ ^6 s' a! u. @' n+ \, L

% T3 ^! U0 A. l(4)新建一个文本,我起名为16pic.asm,文本内容如下:
; ~# p; Y( ]) f7 {
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000$ K/ z! d4 k% ]# J$ t$ G
  2. .create "16pic_demo.gba",0x08000000. p5 w- m% x+ O2 J0 h3 O6 r
  3. ;设置为GBA架构& [  E+ D; g! K3 u( l3 q
  4. .gba
    3 q+ r" _1 f( [4 B+ P1 `: X1 ^
  5. ;设置为ARM模式
    8 d. I7 I; {5 Q( p' q3 @9 S& `
  6. .arm
    5 c$ N, [" [+ }8 R3 w. v
  7. ;设置起始地址是0x080000003 g. b6 a8 a' M) b$ M2 q2 E
  8. .org 0x08000000' y- o- ]7 G5 d, b, W
  9. ;创建长度为0xC0文件头数据区域
    ) h4 J/ C8 c& i0 W1 h+ v; ^9 O2 N
  10. .area 0xC0
    4 f6 x1 L9 B5 W# g3 {# x8 A7 m5 G
  11. ;填充文件头数据
    ; F$ y7 _0 Y4 s9 D  z+ h$ V; u
  12. .fill 0xC0,0x00( |( J. h- C- J/ h! M; k+ F
  13. ;区域结束3 @* R/ b4 }& e# ?& }9 k  ^) e
  14. .endarea3 q: V  }- Y# X9 G) O/ \  n
  15. ;主程序  j2 d9 {/ c* {9 n, t
  16. main:: P; j" o. K' v' C8 A5 I* @
  17. ;设置屏幕模式3,BG2开启
    ) H) D7 ?% W3 d& @$ X' ^9 ?6 z
  18.         mov r0,0x040000005 u! q* y$ d0 {8 R- @# @6 e
  19.         mov r1,0x0400: }8 ^3 P( a4 |
  20.         add r1,r1,0x3
    0 H/ |' u  v) D, B
  21.         strh r1,[r0]
    0 t3 {4 h0 Z, g! w) I0 k- l. f
  22. ;设置VRAM起始地址
    4 S. u9 }! E8 [" S+ y
  23.         mov r0,0x06000000
    7 H: Q8 z9 V! x# L
  24. ;设置图片地址
    ; C5 f& n; E- O( T* O
  25.         ldr r1,=pic
    ! T' k5 F8 F/ ~' E4 t( O9 b
  26. ;设置数据长度为0x9600
    $ v" M/ h8 C% o4 N$ _$ q
  27.         mov r2,0x9600
    " U% v; s# i2 n& T5 c6 {1 E! ?$ @
  28. ;传送图片数据到VRAM
    ! E0 q# q: I1 ~7 z6 T% b
  29. loopl:
    - V/ b1 J% D& M" ~3 [0 o* v: u
  30.         ldrh r3,[r1],0x23 b+ {6 l, V! y& r  u5 g3 U
  31.         strh r3,[r0],0x2
    % B* G/ F" v; o0 _8 R1 |' d, k
  32.         subs r2,r2,0x1
    . b- R3 y8 ^: g6 B/ h. Z- }  h1 @
  33.         bne loopl
    1 r0 o! t1 e* ]" V6 J
  34. ;进入死循环
    5 Z# m: _2 }4 G# j) R9 C; A: W
  35. infin:0 k. z" q( a0 u; w3 C1 w. r
  36.         b infin
    6 M) G3 O% s  A/ I3 E4 K
  37. .pool
    , {( V8 {% u5 D0 Z6 x+ O
  38. ;导入图片二进制数据
    ) W7 G; ~: W0 ]; @, j
  39. pic:
    4 D' O# ]' R0 d' J
  40. .incbin "16pic.bin"9 R0 v8 ~1 z8 z- _5 z
  41. ;在0x08000000地址设置跳转到主程序入口- ?8 S" a  z" c
  42. .org 0x08000000, i( A3 D# \$ ]# _) i
  43.         b main$ m) [7 y/ H% Y: R* I4 B( K! D
  44. ;关闭文件4 }- {/ t5 u) D4 Y! x0 A# S
  45. .close
    . f7 I* a/ D; k7 e, D& l& `
复制代码
) r. c+ F: A+ Z
保存!- K7 w8 u) U9 x1 q* E8 Z' b
4 E+ u# m6 {& I+ f  [) F1 w# T
(5)把16pic.asm和16pic.bin复制到armips目录下
5 C, z' y  r+ u$ V  s+ \! E4 j! y1 d4 k: @* l' ]# a
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件7 C* b; w# V' h/ ~5 b. M7 p
+ U% w5 S' j7 P' Q! d: }
(7)用GBA模拟器打开16pic_demo.gba观看效果% }* Z) [1 C' u5 ]  h7 u

# x6 f. _! L/ R  T3 c: D3 @
3 j- U  A5 H9 a& w5 G# y7 y) n6 E7 W5 V: t
( C9 M/ ?7 f& O: R. Y' E关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
$ r) Z; s( C/ Z0 N7 o  }  [" W

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-8 17:30 , Processed in 1.072266 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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