EMU618社区

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

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

[复制链接]

签到天数: 1974 天

[LV.Master]伴坛终老

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

' O, s& R: F( O" B! B3 j1 j当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
, ~! O, x! x: c
) P! Z* |) u, S( `7 t9 g这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
6 l; {0 g3 ?( `3 D2 l% J% W
+ s+ [5 k4 x5 ]7 y4 {(一)准备工具:
/ v6 {6 l- X( S% m. Z1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例& [( a8 c7 e! R& U- s" B2 B
7 ]' e# p+ b+ r/ ]: r4 `% E- O
ARMIPS作者是Kingcom
1 P/ g' G+ `9 B$ x( H: f. r2 S# L6 hARMIPS源代码github页面:https://github.com/Kingcom/armips
5 ?8 q$ v  ~( m7 Q' t) R* yARMIPS Automated builds页面: http://buildbot.orphis.net/armips
5 o0 B4 u1 u$ a# J! Y0 y
/ m. X+ e/ u! l5 F) [9 m, a6 b2.一个将图片转换为二进制bin文件的工具bimbo 1.36 }4 Y2 b4 i& o$ I# {
# U( V$ j6 y' A# E3 L5 l
bimbo 1.3作者是Aleksi Eeben
5 X, x1 `& {: X; s. Y) B0 a  P4 s* D. H' B2 ^# Q. X
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1673 p, h8 H+ r! H+ `
# T( T% Q; W2 q$ B9 Y7 ^
3.一个windows自带的画图或其他图形编辑工具
# v3 I2 i0 ^9 b+ B+ E/ V
$ w, Z# f0 s/ D4 w$ {' Z4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)4 s7 }1 v8 f+ o
& r* O' R/ D, m' v
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
3 x0 h- f% [! C6 T" O  u6 s5 `
/ ~  s0 \# Y5 e; q/ b& ~0 k+ N  f: T! ?& a

4 A1 ~" A( A: [, w* ?" X# m# h(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
$ ^8 Z/ k# c7 @( `! e  ]7 W; q% ^/ J/ J% m$ B
4 f) y  j6 D1 t1 s  y' x$ M
0 P7 V6 j# O; \  ~4 Z0 Y( j
(4)新建一个文本,我起名为16pic.asm,文本内容如下:9 h! A- t# W2 i+ h
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000  @2 a% }# j7 M1 Z. R* ~
  2. .create "16pic_demo.gba",0x08000000% H3 j  [4 e4 R1 e- {$ T( s
  3. ;设置为GBA架构
    $ `3 O& S5 w9 z7 j3 ?
  4. .gba7 D5 u) `; z2 [1 H
  5. ;设置为ARM模式
    , n" h% l" m, S. W8 H
  6. .arm6 @5 v# k0 O9 I! x
  7. ;设置起始地址是0x08000000
    9 k  ], \9 z) g+ m) F9 e0 j% m. I' n
  8. .org 0x08000000  T' D- M7 {! l1 p$ Y
  9. ;创建长度为0xC0文件头数据区域
    & r# N# o7 f3 z7 N' G9 e! E
  10. .area 0xC0+ ~9 M5 V- D1 U, f3 d
  11. ;填充文件头数据
    : _; ]+ A& K0 ?+ q' v/ J# {
  12. .fill 0xC0,0x00( `4 d, q. G, Y. e* L% g' }2 u6 s
  13. ;区域结束
    7 a  d5 y' |8 m( {5 D0 @( S  _9 O* ?
  14. .endarea
    ) t  `6 h- R% u, c5 c
  15. ;主程序. v, M! \' c/ L; a; [
  16. main:
    . x$ U7 [% I5 ^. z1 E3 Y9 Z
  17. ;设置屏幕模式3,BG2开启0 I( {4 q1 {. C6 y! z. V
  18.         mov r0,0x04000000- W; U5 F8 H* w$ v- @7 `- n
  19.         mov r1,0x0400
    1 g* `/ x& q1 A( h" ?
  20.         add r1,r1,0x3+ u4 z5 R: d) W0 @, d! }
  21.         strh r1,[r0]
    0 W8 N, x- y. q4 r2 O
  22. ;设置VRAM起始地址
    0 U3 ~- g# p3 u# h
  23.         mov r0,0x06000000
    # v  K/ j! N6 r1 n# J& z6 Z% @' @
  24. ;设置图片地址
    1 n0 B- U( i& l/ @- ~' `3 o: a
  25.         ldr r1,=pic! g) J% W. u  v3 V0 E
  26. ;设置数据长度为0x9600& P6 a1 @2 m' D) p4 @
  27.         mov r2,0x9600) j  ]% W  Y4 z) k7 C3 Z
  28. ;传送图片数据到VRAM
    * H9 X, W5 j: T  S) A
  29. loopl:
    ) G' a' E/ D4 a0 q6 c- J& m
  30.         ldrh r3,[r1],0x2+ {( u) F5 M$ m4 n4 a6 W
  31.         strh r3,[r0],0x2
    + `) q. Z1 v, b
  32.         subs r2,r2,0x1! Z  T0 c" f/ F" z
  33.         bne loopl
    3 y/ l! \7 Z$ t" V
  34. ;进入死循环
    8 I: k% S9 p/ O4 H8 [( Z
  35. infin:
    2 X  g) u5 d0 F: l2 k/ o
  36.         b infin
    0 n. h' g/ g# a6 h# O
  37. .pool
    0 S3 f1 Y0 V- @5 a
  38. ;导入图片二进制数据
    & {' G6 e: ]; c. M; @6 E9 S) ~
  39. pic:% X1 t5 E! ?1 Z7 l
  40. .incbin "16pic.bin"
    7 a* c9 i2 |+ {" f' ]+ B
  41. ;在0x08000000地址设置跳转到主程序入口
    2 m; x% E* |; m0 S: ^8 s/ c) Y
  42. .org 0x08000000) X/ \0 W  ^- q& Z
  43.         b main
      M; q- n" E0 P! V  N
  44. ;关闭文件
    # C- [# j, P4 }; e. `$ M# F
  45. .close7 b2 o( U% s* m
复制代码

! ]* B/ r6 M3 i1 D3 Q& _+ Z保存!
3 {# {& z' ]3 h% b1 @7 ~- d
  `0 ^# r9 Y3 l! H" f# R+ d(5)把16pic.asm和16pic.bin复制到armips目录下
2 [, g+ |0 |! i$ T. }- S+ I8 ?- b6 j) L/ }- U2 c9 [
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
7 H( e5 Y1 ]& r$ E/ O# w9 s6 x6 z: S9 n7 O% X! i
(7)用GBA模拟器打开16pic_demo.gba观看效果1 X0 y2 F! S( {+ ]
6 d' m7 G+ ?" s# j4 d, \/ d
" L0 ~. A1 i4 w* J/ u9 r% J
+ Z0 ]+ X$ t6 |$ o: @# l5 d; _
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)( p1 ?2 F4 ?: g

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-10 09:39 , Processed in 1.070312 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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