EMU618社区

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

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

[复制链接]

签到天数: 1835 天

[LV.Master]伴坛终老

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

' C8 u4 Y3 v! @  Y/ p- Q当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
; J9 d1 v! d: @& w# j9 d% G$ b. S. E% O: G# g3 P" b( }
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧9 Z& q6 q3 _4 ^% x) x
" h" M5 Y( a) l5 {, ~
(一)准备工具:
) H8 g* [! E6 B; @. [! Q4 D) H  }1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
/ m# [! r  `, t" X, }- ]
, u5 i+ f  [% X5 b; ?) k. r$ uARMIPS作者是Kingcom
2 z  s, Z, [  PARMIPS源代码github页面:https://github.com/Kingcom/armips. q( O. A2 w" H5 A7 H
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
0 W9 M! P! ~/ d
9 ]% S; o4 U% e: z  c- i2.一个将图片转换为二进制bin文件的工具bimbo 1.3
, [; `- G5 a. [" r! ~3 K7 B
& {8 G; y1 r' R5 U+ k( o! E- A% cbimbo 1.3作者是Aleksi Eeben
1 O: h0 b( Z7 c* p/ @/ E( a, q* o2 m& ^' k6 [0 h$ ^8 x- v
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
# ~) c5 S: E% @* @3 ~" a" i3 P, ^! K
3.一个windows自带的画图或其他图形编辑工具
3 p- U. _: v  v3 _$ a) @- X& O% G3 X; q
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)4 u9 H+ w8 k5 K' t

2 z. ?7 A0 J( ~% ]8 e7 f2 \: I( L; c(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
  h- S$ z( F, s& l2 k; ^& Y; m8 [, f4 A7 ^" ^

# O4 A( Y, ]4 G# V# w9 Z4 O- ]! x
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin0 o0 r) y1 d4 w: L

% r, w$ {" }' n. f* Q
6 l8 |/ r9 J5 F; N' K. J  b
$ {7 v: f$ K3 D7 {( k3 E7 v+ o4 }% @(4)新建一个文本,我起名为16pic.asm,文本内容如下:; w* l& P' b1 t/ a' b
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    0 U; ]% I6 c: f/ E, u/ V, o) [
  2. .create "16pic_demo.gba",0x08000000
    % ~  s3 [% i1 n! G& `5 m8 I/ C
  3. ;设置为GBA架构
    1 I" L5 z0 ]5 g' I. x0 f% Z2 n
  4. .gba
    6 d4 f: e" ^6 o6 b& q* N
  5. ;设置为ARM模式
      n$ t2 y! u1 ?% {' T
  6. .arm
    ; H5 L3 @& x- Z+ v9 I2 Z- x
  7. ;设置起始地址是0x08000000
    : q3 d, [& {4 t
  8. .org 0x08000000( m0 ]; y& y" r2 J; l/ h' w; k
  9. ;创建长度为0xC0文件头数据区域% R6 d  `. B3 g
  10. .area 0xC01 m5 E& \' ]4 N$ Z6 p  X
  11. ;填充文件头数据
    * C" O& x2 J& k) I
  12. .fill 0xC0,0x00
    0 o0 Q: J# r# M4 B: e7 A) V
  13. ;区域结束
    - Y+ d9 }) a9 @4 d
  14. .endarea: s- T  S& c1 p1 B9 t9 W
  15. ;主程序
    ) x8 f! Q/ U1 W0 X7 u
  16. main:
    " ^  E$ z9 E' s! Y
  17. ;设置屏幕模式3,BG2开启
    ' h+ ]( l! _0 o
  18.         mov r0,0x04000000
    ) U1 m( n% J1 y
  19.         mov r1,0x0400
    * a4 _2 U; F% ^; }: U  Q  }3 K0 s2 O) p
  20.         add r1,r1,0x3
    ) G. m6 u/ t( @# T& \
  21.         strh r1,[r0]; F6 F8 R& A4 ]  ^: x3 v- F
  22. ;设置VRAM起始地址& d+ h8 U( l4 g4 H7 l. l
  23.         mov r0,0x06000000! u5 z2 d5 ^0 h8 j' y; E
  24. ;设置图片地址
    * v# O- ^: e7 m8 @( R
  25.         ldr r1,=pic
    $ F; R1 v7 M. s+ ~
  26. ;设置数据长度为0x9600
    % o* \+ {% a1 ?7 D( G
  27.         mov r2,0x9600% r& c- x9 q9 d/ X& K4 T% T
  28. ;传送图片数据到VRAM) P6 d; ]6 \7 ]* ~
  29. loopl:
    1 q! ?; b- q/ e2 O( y7 l2 c9 ?
  30.         ldrh r3,[r1],0x2
    9 X( e, J: l  Q% m1 D0 t
  31.         strh r3,[r0],0x2. e6 r5 ]$ U6 O9 v6 U$ O) j
  32.         subs r2,r2,0x1
    6 h6 w4 u7 M# x2 \1 k8 M2 s1 {. \
  33.         bne loopl" z+ t3 v3 y0 K7 `+ f
  34. ;进入死循环
    " i# Q" d5 Q0 U2 j5 z; B/ a1 ~* y
  35. infin:
      c# V8 }9 a5 ^% y/ E
  36.         b infin
    ! M5 \" X- {# \5 Q& _
  37. .pool
    " J& r# \/ `" }  V" X
  38. ;导入图片二进制数据4 {+ B% W* W. {( _8 v0 e/ x1 Y$ c
  39. pic:
    4 P0 z' @% F, Q  }% z
  40. .incbin "16pic.bin"
    ; z( I' J' h8 j9 s; I
  41. ;在0x08000000地址设置跳转到主程序入口( l5 D" j6 L; m( Z; |" I' H
  42. .org 0x080000007 C5 n$ @, M4 j4 t8 Q7 j& D, R
  43.         b main
    / R1 E7 Q2 ^1 U5 W+ |7 z3 n5 @  @; Z
  44. ;关闭文件
    ( ?  L( s. @, L
  45. .close
    5 D, Y2 h; v! L0 y. N6 }/ n  \2 p
复制代码
/ c+ N0 A. v; `
保存!
4 \: h1 A; J) J' Q. w
$ F) N1 D' v8 w; q(5)把16pic.asm和16pic.bin复制到armips目录下5 b1 n- G! U( q- w3 `$ J
6 D; @4 _" o& Y! `$ a3 \# f
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
& v$ y2 k6 B3 X1 S. b" G' j7 T+ h- o0 k* @2 j' q9 x' z( c4 U* t
(7)用GBA模拟器打开16pic_demo.gba观看效果
8 ]/ n9 h; f& c  Y8 P3 M  G+ Q" O: Z, h6 {6 k+ p5 e

) e. G3 ^6 B3 l' s3 e1 X) O5 J1 E) C
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
5 m9 L8 F9 V6 ^8 {# o9 S2 U, b

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-1-20 22:50 , Processed in 1.150390 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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