EMU618社区

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

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

[复制链接]

签到天数: 1825 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
9 d5 x: b# P5 u; m
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 E: n, i1 {; }, d; i' D2 T

  d, v, M. D3 Z2 m这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
0 B+ V& j( r; @6 e8 B
( V$ ?! g& ]9 X9 H+ }0 j(一)准备工具:
$ d- ?( e- \* j2 i/ P& X. h. i1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例$ S6 A, [" }7 z! o$ v
: J5 ~  T( V6 d
ARMIPS作者是Kingcom/ V- o& y( T$ |; N- F% X& v. R" J
ARMIPS源代码github页面:https://github.com/Kingcom/armips
" @7 Q2 x! {9 L, O+ b- \8 S( d6 [+ yARMIPS Automated builds页面: http://buildbot.orphis.net/armips) l2 o8 C  X( V4 _) G. X1 Z1 ~
) W& |8 Z3 S! j
2.一个将图片转换为二进制bin文件的工具bimbo 1.3: d' X( U- g1 }! P, X- J. |

+ u: `$ }0 V8 ]* n" ^  vbimbo 1.3作者是Aleksi Eeben
3 J1 K$ ?7 w# i2 A9 A) \
' W2 Y" `5 O3 m+ Z" i" L8 tbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
* y6 z& F: B! U# s; W& w4 T+ y7 U. E9 O1 j
3.一个windows自带的画图或其他图形编辑工具
1 k! d8 K5 U0 q& v" o/ i7 ?9 ]. {
/ x; G& {. j* M! J1 L4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
- g: F; W% t9 `4 j  `' W; c# I6 N
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
3 r( Y+ I, }$ H) u' `) d
- L$ {! v  T- u! Z$ B% Q" Z( L5 U1 h: k) u1 x8 B" w( l

7 R0 A" ~4 U: M: l& {. S(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* I- E% k0 q& k5 q* D& x  Q
3 q9 c- w5 C4 j4 M2 ^6 M5 w" b4 c
: k, d" N$ }1 {) W! ^) E; ?

+ Y" Y4 f/ H& b' {# p(4)新建一个文本,我起名为16pic.asm,文本内容如下:
* ~) o9 @, a0 E5 \5 o9 D
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    & n* @5 Z5 s9 g# d# i
  2. .create "16pic_demo.gba",0x080000000 F' T/ ^: }0 f! I0 I) L# I4 e9 Y
  3. ;设置为GBA架构' w2 y, ?+ E3 ^& x5 u  s' f4 Y, t
  4. .gba- p6 P7 v* w: \
  5. ;设置为ARM模式
    ! [+ |6 `, c6 P
  6. .arm
    % B' ~) J# [: W' b0 q* T, ]+ @
  7. ;设置起始地址是0x08000000
    5 x" d  U3 S3 Z! _$ \* W6 L
  8. .org 0x080000006 u/ s* q% I5 [% ]
  9. ;创建长度为0xC0文件头数据区域
      C! W+ T9 `0 M, ~. r: G4 h2 s4 n5 ^
  10. .area 0xC00 P' G7 T5 {' n
  11. ;填充文件头数据% h& F7 M, q+ a" m
  12. .fill 0xC0,0x001 s! y! Z5 g( [2 S. w6 M) S9 O
  13. ;区域结束
    6 @8 z' W9 y6 X( ^+ d
  14. .endarea
    & [2 a; t& ~, Z7 l
  15. ;主程序
    8 f7 v  x; u. F/ ~& _6 [" g# ]3 T
  16. main:: u( V2 L/ L$ T! Z! r0 @
  17. ;设置屏幕模式3,BG2开启
    7 P3 t( r" ]& Q, f
  18.         mov r0,0x04000000
    7 k$ l7 L/ y* p6 u
  19.         mov r1,0x0400+ i6 s/ e1 {* U. ^* }6 }; `# z$ R
  20.         add r1,r1,0x3' f( m  r4 m% S& [+ c
  21.         strh r1,[r0]
    , v4 A; P; h9 b
  22. ;设置VRAM起始地址
    , J& F$ ^+ L$ i2 k' _! Q
  23.         mov r0,0x06000000
    8 P+ p0 E) S! w+ G
  24. ;设置图片地址4 |; m$ K" I8 U& r3 P& A& ]; F
  25.         ldr r1,=pic
    4 K9 j/ G, k8 K! \, c' U& ?7 T1 |! N$ p
  26. ;设置数据长度为0x9600: `+ A: D8 j3 {
  27.         mov r2,0x9600+ }9 r; F" e4 e8 R
  28. ;传送图片数据到VRAM1 {4 i5 w- I2 I/ H5 ?
  29. loopl:
    4 M0 n( f  R/ s9 f! H' X8 ?$ O
  30.         ldrh r3,[r1],0x2& x; j0 h8 E! u6 l6 |+ H
  31.         strh r3,[r0],0x29 ?: o; ?9 ?2 ]9 M; O; P
  32.         subs r2,r2,0x1
    / R- w" I4 B) c, L" Z2 e& f
  33.         bne loopl% k, K0 E# c. G. ]* ?
  34. ;进入死循环5 F% T# G% S6 ]9 f+ ^6 ^& u3 N
  35. infin:
    0 m; A) ?; [+ M8 Y( G+ }
  36.         b infin
    0 f8 l4 s7 p# N3 w6 w
  37. .pool: Y6 K/ W  L- @7 J
  38. ;导入图片二进制数据
    / `) ^! C2 i& K4 w8 f& S
  39. pic:
    , m2 {- ?" T7 m' |* {, P
  40. .incbin "16pic.bin"
    $ J  @3 r: n) k( l* z. j
  41. ;在0x08000000地址设置跳转到主程序入口9 L! |, W3 f& b, h4 q9 [- j
  42. .org 0x08000000
    6 V- b7 k4 k# G0 ^8 m- n' q7 s  _
  43.         b main
    6 w6 J% R6 B% R$ }  O' f2 v* W6 u
  44. ;关闭文件  I% k- m: u( Q# P( J0 [
  45. .close
    7 P* {5 [6 @' o( Y
复制代码

, l9 z6 r" Q0 @4 j1 P保存!" L6 j. i! L. \; k; R; j7 s  n
5 L; w4 [: U5 r$ i% d
(5)把16pic.asm和16pic.bin复制到armips目录下
, I  |& y: F: Z9 v) ]; u3 g; k# L+ J: F
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件# Z" Z: i0 Q0 M$ C( G7 }) x: a& q
/ }* w) {  Q( S
(7)用GBA模拟器打开16pic_demo.gba观看效果
. y' v4 y. R) @! S8 W6 ]5 o" l- F+ R

; c) @9 L' H" O  T
6 l/ G& c& t$ p# g- @; f& ~/ n关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
* u1 }. _8 O( T4 F7 S- q

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-1-10 12:06 , Processed in 1.114258 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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