设为首页收藏本站

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

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

[复制链接]

签到天数: 1914 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
) Q5 t. H6 ?8 e- M0 r( B& v
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
2 @& {4 M8 W3 F& S$ n
; d& K. u) F5 v( P! D1 u这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧5 J* W+ a& k7 w: B4 S' Q

' {4 G9 W0 v- Q' U+ }" A* A(一)准备工具:
1 i: h: R& h- y1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
% o8 O4 ^2 I: K. ~; G  E' M+ \( a4 M+ L8 [$ r) o* c
ARMIPS作者是Kingcom9 _3 e6 H( {2 {4 x& D
ARMIPS源代码github页面:https://github.com/Kingcom/armips; }  ^! }2 ^. c6 B  q
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips+ y6 j0 {8 g! {0 }$ f- j

- s6 F* L1 [; t0 z3 @9 U! u- h2.一个将图片转换为二进制bin文件的工具bimbo 1.3
) s# A; G& {+ I0 X
: {: R9 y2 T' O, F& abimbo 1.3作者是Aleksi Eeben" }' o- }2 @& k, D/ }( s# l

3 N( R. U$ H! v) s, s6 q/ l. mbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1670 z; O0 U6 F* \( W1 }
4 s9 _& N+ i1 R! v& R; ?
3.一个windows自带的画图或其他图形编辑工具
- N/ j. O* h3 l& u. J5 k
( c) Z' j  }! o' M2 T9 K5 b: N% {4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
" u& `1 e* C1 V) A/ O3 {3 R
0 h5 R! h- D: h3 A8 E% Q(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP# W( q9 \& U- X2 ]* o0 r. H

% }. @. G( ^, r& [$ C
1 P! S$ h2 f4 a  p& I/ P/ c/ E3 t# t+ P( M% H
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin0 R- g. F/ U6 A
) d& _, T5 W" _3 U6 j) N2 q

4 [2 w. `) ?2 y' E" w% \, b1 a/ d, U8 Z: D8 Q+ a! v
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
; f) f: M, W7 y, P9 }5 t& l
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000000 x; x: q" x4 T( s9 x6 e8 M) R, |2 z
  2. .create "16pic_demo.gba",0x08000000
    - N# E- l' n0 Z: a: U; T
  3. ;设置为GBA架构
    ' K( L$ x! y: G$ `6 }. z/ |
  4. .gba$ ~5 O* i8 _1 |: T7 p
  5. ;设置为ARM模式' V+ p6 J. S0 K3 c/ d  ?) o; V7 g; W+ N: N
  6. .arm; ~8 F. v9 i/ e* i8 H. @; M0 X
  7. ;设置起始地址是0x08000000" \/ }2 f3 ~. O
  8. .org 0x08000000
    9 m8 G# f! h' b" }
  9. ;创建长度为0xC0文件头数据区域- P) s' A( z& M! M# F" i
  10. .area 0xC0
    + e* i! b+ k* S6 F6 v/ p
  11. ;填充文件头数据
    . d7 K' _/ K2 ~" X( s
  12. .fill 0xC0,0x006 j8 L* T) X. U8 ~; g8 B% {- [
  13. ;区域结束2 m& J; [) e5 }
  14. .endarea. u2 d) g- c0 N2 f5 s: M
  15. ;主程序
    ) ~; F! k, f2 \7 g/ I, Q8 W
  16. main:! F8 w, T) V7 |# O& f
  17. ;设置屏幕模式3,BG2开启
    7 G. n! @. y  E2 W9 u0 q
  18.         mov r0,0x04000000
    / W$ B- K1 m* V9 o* t
  19.         mov r1,0x0400
    ; v4 F( Q: L3 {2 ]/ I8 b
  20.         add r1,r1,0x3# o/ L6 _  n2 U! Y" i6 J/ Q" o7 ]
  21.         strh r1,[r0]
    8 ~0 a; o: t0 c" l4 s. y
  22. ;设置VRAM起始地址
    + Z0 B4 h( ?$ ?* y" x) K
  23.         mov r0,0x06000000
    ( K9 R9 r# `* s
  24. ;设置图片地址
      M% n2 e  ^2 ?
  25.         ldr r1,=pic
    * x# P+ B- J: V$ d
  26. ;设置数据长度为0x9600  c5 f! i6 i3 C: g
  27.         mov r2,0x9600
    2 D5 s3 \* I8 _  t, v" ~& G
  28. ;传送图片数据到VRAM$ |$ E' o0 ]  t, a
  29. loopl:# Q! s8 [+ p& s& _
  30.         ldrh r3,[r1],0x2% Z! U* l1 T1 R8 R& j
  31.         strh r3,[r0],0x2! c5 \# }4 o0 c
  32.         subs r2,r2,0x10 K) \" M! s6 @$ E: e
  33.         bne loopl9 i" P( Z7 N4 z. C  q6 C
  34. ;进入死循环
    0 P9 b0 f: `+ ^) L( {7 P; q. g
  35. infin:
    ) M5 A8 b& T% {9 d$ a
  36.         b infin) |7 [4 g# W/ R4 g2 ~: Q0 ]
  37. .pool
    : n. b7 g. n8 `; @& C3 m- m
  38. ;导入图片二进制数据
    : R$ v% q* T* N  T" `
  39. pic:
    7 l* q! [% P/ A& s) g) L
  40. .incbin "16pic.bin". B6 O/ V) o' D' n: N7 L
  41. ;在0x08000000地址设置跳转到主程序入口
    1 k/ u8 V/ i8 N/ r
  42. .org 0x080000007 n3 E6 V# |4 O) q2 h: q4 c9 B
  43.         b main
    9 U# k# [' F; \0 c
  44. ;关闭文件
    % g, e5 p. I2 a/ ^" [$ M; O% d
  45. .close
    5 t: X- U2 {. @( {* j7 x; j
复制代码
, b8 [& z6 {& T$ m3 [1 c/ V' W
保存!4 n- V  s  @5 @. D; ~

2 q7 i$ t1 I* j! c+ e(5)把16pic.asm和16pic.bin复制到armips目录下; n( g' Y& {) e) Z
3 b: c& c5 d& R) O, Y7 q8 e. E
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件7 C, Q4 J" L" @
4 n7 _' O; h' ^2 {4 i8 h+ A  b
(7)用GBA模拟器打开16pic_demo.gba观看效果( m+ D. c/ L& X6 @
3 p' J& N& d9 m. O: a. K* G
( R( a  \( b- g; `. @/ V# r

1 E1 ^- I* J+ v关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)7 O+ n6 d2 m& L% Z9 [' b

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-4-6 14:49

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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