设为首页收藏本站

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

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

[复制链接]

签到天数: 2012 天

[LV.Master]伴坛终老

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

* _/ ]+ z+ w5 s0 i# H4 e当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
+ F! u3 H) @1 N4 y& ?* R9 V1 I  O. m/ p
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧/ {9 r8 W- M2 P7 l4 p( U
  x. W! Q" K- m( O. I' U  w8 s, E" b
(一)准备工具:& F/ l: Z$ {/ C% Z
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例/ N7 C; {+ S, }3 H6 I. y

& ^7 @+ X/ ]% n0 a! }ARMIPS作者是Kingcom9 e, e/ c3 i. e% e3 |
ARMIPS源代码github页面:https://github.com/Kingcom/armips& d' j% i- r  w3 m1 U% [
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
7 _6 B3 p9 `2 d0 M
  M! [8 d: T: i5 R$ u5 m2.一个将图片转换为二进制bin文件的工具bimbo 1.3, b& V6 ^% ~4 B# A6 t: |, x
7 ^4 n1 Y' Q$ t+ B$ p# x
bimbo 1.3作者是Aleksi Eeben9 K) i' p7 i7 a. B( M) p6 I
3 ?! u  m8 z' S* S3 @
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167- b; I7 t% Z( O

  Q  a; t# \- a& z: f4 p6 a' q. @  e& Z7 C6 w3.一个windows自带的画图或其他图形编辑工具3 a0 Y% n& _/ _, E; V- T
" x& R0 g8 p7 _
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
0 e! e, ?0 x& ]2 V; u4 N. e1 R$ s# }4 |
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
  {/ [1 E* w$ z: Q5 ^4 w% S7 Q& ]* c  _
6 l$ a0 `/ i$ j# d

0 p3 x: N; ]& F& M& [2 H) F(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 T9 B- t& ~5 v7 j( K

2 q; k2 s1 ?4 ]9 A: R9 ~. B
5 Z# j. Y+ i, ]% d+ j
: U3 j3 O1 {  |/ G$ T6 l( e(4)新建一个文本,我起名为16pic.asm,文本内容如下:9 @5 d& W; n+ t  y) p9 C* x
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    4 r& [/ E) l# X' A
  2. .create "16pic_demo.gba",0x08000000; U9 g) O8 `+ }* x& f% X
  3. ;设置为GBA架构9 x9 i) W  d4 P, f  f2 o1 O
  4. .gba
    * i) u  ^% Z/ _) d
  5. ;设置为ARM模式+ n+ S" ?& U! @& g  W
  6. .arm- E' y7 B& z" ~$ x/ O7 N' m6 V) S
  7. ;设置起始地址是0x08000000
    0 M  s& R6 X0 @/ w
  8. .org 0x08000000/ S+ U4 W, x8 i
  9. ;创建长度为0xC0文件头数据区域
    # t( y3 G  ^  d' M
  10. .area 0xC0- W% k$ d% s! w3 U( I' g
  11. ;填充文件头数据7 h4 ~, U0 @& Y- w4 v
  12. .fill 0xC0,0x00* K0 M0 ~2 _/ H% P3 V
  13. ;区域结束
    + X( Q; P! D3 B* w: z4 ~9 L
  14. .endarea, D: k( j: q, |
  15. ;主程序
    7 n) p( y( w7 o* C& k1 L
  16. main:3 p$ c, \4 c% S* F
  17. ;设置屏幕模式3,BG2开启$ t% M1 S7 V$ O, x
  18.         mov r0,0x04000000
    ' b# O8 ]0 R7 B% l0 U
  19.         mov r1,0x0400% I' p/ m' C+ A. E
  20.         add r1,r1,0x34 y+ i! ?8 q3 }% }$ [
  21.         strh r1,[r0]
      n4 o& b5 C+ ^5 K2 I
  22. ;设置VRAM起始地址$ }( i, |( {4 g( T$ f2 P, P' W
  23.         mov r0,0x060000006 b; g. J/ `- ~9 V/ o/ m* T
  24. ;设置图片地址
    , ~  Q2 S* T) C& B% f# U& L4 z
  25.         ldr r1,=pic8 O& j( `' ~8 k/ n! j
  26. ;设置数据长度为0x9600
    ; U( f7 [3 O( r4 f& O  v: @
  27.         mov r2,0x9600
    * k" M0 a; Q/ h. O3 X8 ?3 m+ ^
  28. ;传送图片数据到VRAM$ @6 u* {8 t- b/ \' E  H
  29. loopl:
    ) P' a0 [0 o2 s% ?
  30.         ldrh r3,[r1],0x2
    + J6 l: V% U! ?* \* v# }% C3 l  v
  31.         strh r3,[r0],0x2) d) S% \6 o" i1 Z1 S9 K) e% }3 F: z
  32.         subs r2,r2,0x1
    1 d9 x' l. v5 ]7 a" j+ @3 P
  33.         bne loopl% q5 k# m% H" ?, }5 C
  34. ;进入死循环
    . L* V3 W8 k! \
  35. infin:% B3 ~) p& ~' ~# n' e5 a) o
  36.         b infin
    1 h% Y, V5 r' P; r6 j5 B4 E! l
  37. .pool
    ! i2 N: H- m; L( {( n1 Y. _
  38. ;导入图片二进制数据7 s! P* }, M* i# \! }
  39. pic:
    $ E# z2 p8 Y) m1 C" ^
  40. .incbin "16pic.bin"
    8 t$ W4 ?1 P4 I( u$ Q0 V
  41. ;在0x08000000地址设置跳转到主程序入口
    7 t8 E! a) ]; k3 \$ G
  42. .org 0x08000000  u$ Y# P. y- p
  43.         b main+ m( q, M  w/ |3 B
  44. ;关闭文件
    1 z3 V+ Q/ i. j+ \+ [* r' V: ]
  45. .close) c0 r/ R' F- B" S8 U* {; y* R
复制代码

! o) q8 [5 z" n保存!
( Y! |2 M/ d; B
  j2 c$ q6 v4 c- u5 W/ K(5)把16pic.asm和16pic.bin复制到armips目录下
# G2 k: I3 r2 l- M+ ]
( e5 r2 ~: c/ q  ?" x(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件9 ^& [& B, x/ Q0 s' J+ ^

% Q3 z1 S: p* n: t7 x! [(7)用GBA模拟器打开16pic_demo.gba观看效果. z8 m3 O" t5 E6 q; D6 V
+ n4 C' l! r2 Q- ~
; p: P0 A! }/ b/ x

8 Z- r# j; x1 N4 J关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
/ Q) Y, N, M* ~

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-7-16 10:04

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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