EMU618社区

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

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

[复制链接]

签到天数: 1865 天

[LV.Master]伴坛终老

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

8 ?% A$ b" n2 D  P% {/ D: B( e当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
/ N; @3 R* s9 s- Z6 t1 [, b& m5 H1 h
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 t# v: D5 O* Q: ?2 l) E( }9 w  x0 o% X$ N5 }. k4 \
(一)准备工具:2 A0 I& M! a- I/ M: d
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
9 [, c, v8 P! {
" T4 l* ?' p: p3 ~ARMIPS作者是Kingcom" S: D; ~* @- V* j; Z
ARMIPS源代码github页面:https://github.com/Kingcom/armips) Y1 z! p% V3 z2 j/ _$ l  q
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips: e  M4 O. U1 ]6 w% V2 t/ P& J

. l) G( h$ z5 u* R/ x/ {2.一个将图片转换为二进制bin文件的工具bimbo 1.3
; Q0 l! ?2 M/ _& @+ h- W( G0 b: E' i5 z$ I1 D1 i6 g- q* ?
bimbo 1.3作者是Aleksi Eeben% Q  J3 Q" O+ @1 @- X: I- Q
8 a9 S1 n) C3 Y; J, V  m) \
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
/ L) E. l! {! k& A0 s6 m
' u7 e' {) Q4 [1 A; {3.一个windows自带的画图或其他图形编辑工具
# z% ?  ^& @3 ^. {$ L/ N- u7 I5 D; m% H6 h- [
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)' F: }4 Z+ p% E* o# c" F( ^5 C

3 l# m4 q* U8 w- I, ^. T(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP2 L: o- Z3 |" L9 a0 i
' v9 o( u$ T, y( t! E5 n# ]

5 V0 z+ V2 j- m$ n
" ~4 g5 L! b2 X! Q- R2 n5 a(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 F, P" |/ e0 q: |" s5 a4 ?; r5 ~

/ l: D( |- P5 m6 @; f
' ]  A. M9 B5 }9 k  w1 e6 Y) l/ r0 Z- H; |% N
(4)新建一个文本,我起名为16pic.asm,文本内容如下:* f* D- ]1 }) w( j; O1 y8 v" w
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    ( r! `% `! K  v& ~" n0 f
  2. .create "16pic_demo.gba",0x08000000
    5 O8 n: s; ?- U, M5 a: t
  3. ;设置为GBA架构
    4 V- r! e( ]: \
  4. .gba
    $ E$ K0 h$ Z3 x
  5. ;设置为ARM模式, Y! o3 l' a4 c  T1 _: p3 y  @+ c+ [
  6. .arm
    + q% |0 h* U" ~" @
  7. ;设置起始地址是0x08000000
    - p1 q7 `8 ^4 D1 b
  8. .org 0x08000000
    # P: m2 F7 E! S) }3 w, _, S+ b
  9. ;创建长度为0xC0文件头数据区域
      r* W, g2 q2 N! k; M
  10. .area 0xC0& r% w. f9 ]# Q' q
  11. ;填充文件头数据( [; T! @: v1 I6 Z+ p3 Q# T: q! e$ q
  12. .fill 0xC0,0x00
    . e  O3 v+ k$ D$ h# h- ]
  13. ;区域结束. b$ f! d$ a8 ]* x; k$ Z; u' [$ ]
  14. .endarea
    . L  {" R' ^$ t0 y/ A! e" ?* Z
  15. ;主程序
    $ n$ b9 l* P% t" E
  16. main:! q: H2 J# A1 Q  m9 a
  17. ;设置屏幕模式3,BG2开启9 x( L: j0 X, m! s
  18.         mov r0,0x04000000
    1 @' l  t; k" f: R2 ]6 R0 d2 f' S
  19.         mov r1,0x0400) @6 _! Q. Y7 V' s- M6 n
  20.         add r1,r1,0x3
    4 \# t1 v0 i4 u* Z0 y
  21.         strh r1,[r0]
    ( i) [/ ^  d* s+ N/ r6 i
  22. ;设置VRAM起始地址
    ' S9 \- t  }+ z2 J9 J$ o3 i
  23.         mov r0,0x06000000
    5 h6 R3 F+ S2 E# |; h1 D" R
  24. ;设置图片地址
    ' C. E* Q2 P+ y; y
  25.         ldr r1,=pic( H7 q2 q' c' d3 ?: ^# i! o4 ?9 u' I4 p
  26. ;设置数据长度为0x9600- a+ b! R- y" r8 [
  27.         mov r2,0x9600/ \' b. W, ?; Z  ^6 ]
  28. ;传送图片数据到VRAM4 \% M2 l/ p) h& R6 w
  29. loopl:( {# z- Z  i/ z" v; \* f* E) e& E0 w' R
  30.         ldrh r3,[r1],0x2( _$ r- j3 ~% X+ j4 e
  31.         strh r3,[r0],0x2
    # A2 {8 X- g. G# Y- X
  32.         subs r2,r2,0x1  u9 w$ @$ j6 i  T' }9 P2 u
  33.         bne loopl
    + y0 i' Y5 X! R& V- U! n( [! U. E' _
  34. ;进入死循环
    3 T, u, P' k6 t/ S
  35. infin:" a+ z3 J5 L9 ^  \2 s* }! x
  36.         b infin
    7 n- D  B3 d- v" ]* W, H
  37. .pool
    & E# o- z& e) `0 m4 [" W& t' u
  38. ;导入图片二进制数据& Q" I; f! W% h7 v/ x
  39. pic:) t$ H, G" M6 [- i+ z2 C
  40. .incbin "16pic.bin") ?- P6 a$ k& k
  41. ;在0x08000000地址设置跳转到主程序入口& Y# P. ^, o7 K/ m
  42. .org 0x08000000
      K; z0 r/ [3 v# N9 V* r
  43.         b main
    7 J* @! |0 |4 R7 v2 t. K/ q
  44. ;关闭文件
    + `! y: W) t# B* d4 T
  45. .close
    : C- v: H2 G7 j' \! i
复制代码
, E3 y7 U7 Y9 ]1 T& o0 A, x
保存!
7 G2 @" \# j5 }+ J) r) G% k  A
& n  r- |6 z) f0 D6 c+ U% y2 T(5)把16pic.asm和16pic.bin复制到armips目录下
3 |3 Q. W3 Z* s# \
* a& p( `$ h" A* k8 o(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
/ y6 w2 T& n; K% P3 U9 E0 y/ ?6 v
(7)用GBA模拟器打开16pic_demo.gba观看效果
6 w$ l& ]9 f7 z" f! I' w5 v8 d# s" V

6 \) C( M# y& k2 K2 e6 ~$ N3 c: Y% R; s
- ~0 @- p0 r# o' z关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
2 w% m; q+ @( A/ x+ u

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-2-19 06:35 , Processed in 1.108398 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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