设为首页收藏本站

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

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

[复制链接]

签到天数: 1973 天

[LV.Master]伴坛终老

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

2 V" p" {8 @* p# K* L当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档+ G2 [$ L+ q# }3 {2 L9 j9 g

( `0 D+ k, U9 N1 f% d8 }这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
2 S. |8 o% i$ i% g; |: u8 S" A1 V; b4 v  T9 f3 K
(一)准备工具:( h( Y9 C9 L  \
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
- z* X3 S# w: D! i9 \6 H& Q7 {% r8 I2 [9 Q; _
ARMIPS作者是Kingcom% O# p" l+ ^$ s/ N# S. Q2 b/ u% k
ARMIPS源代码github页面:https://github.com/Kingcom/armips/ ^+ T5 S8 b, m  H1 N
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips6 g: @& K: c+ ~! S- _" k

( t6 p. l& b. L( t6 K, ~2.一个将图片转换为二进制bin文件的工具bimbo 1.3
- E" q7 _+ z' `# T6 @" w. Q, e8 H1 R; Y- n
bimbo 1.3作者是Aleksi Eeben
  n1 X2 x, B: u6 e3 U" R" b( d# A3 P# D: E/ N3 w$ P. Q
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
% D3 @3 |! a1 p) H3 C
& k6 s( f. t5 f" H  ]3.一个windows自带的画图或其他图形编辑工具. R  V9 I- a1 E2 c4 B; I( N

0 X& G- \9 }, K. f7 _, l4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
, j/ L! m' j+ X( u; V( o9 h. M0 {; C. c' f( P" U0 Y
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP! Z' g- l4 t; ~( N" U4 y( L% g
% Q+ i5 t$ ^  ]8 ^! Z! v

3 m7 Y) m/ R5 r# C7 V. Z$ O# C' t
  {  h  `2 u7 A% c# h6 V(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin  @" y/ c3 ^1 U( b4 O  @; s! C
# L" @8 H0 N! t8 u  o

+ r) ?" P* @" V( N  }* _/ D. U- V' `1 R5 k7 P' K% y- \
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
- A) ]+ U$ o2 C0 I
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    8 L5 F: k8 M7 h1 T4 I/ Z! U
  2. .create "16pic_demo.gba",0x080000000 E- ^, j  D9 n; o- Q# l
  3. ;设置为GBA架构
    ! _. M# I% |3 N2 V/ C2 ]( D
  4. .gba5 \* a' j- B6 U) N4 i9 ^; L
  5. ;设置为ARM模式8 O. L& q* X; E) g8 [
  6. .arm
    0 ^. _6 V( [" E
  7. ;设置起始地址是0x08000000
    # r: }2 r4 M$ k, _$ G
  8. .org 0x08000000
    . p0 X& K# ?6 W( ^' ]' ~
  9. ;创建长度为0xC0文件头数据区域4 z0 w. R; M$ I6 U! P+ j5 b3 N
  10. .area 0xC0
    6 |3 {' B4 _; d: K! @: D/ w- N) C
  11. ;填充文件头数据7 n9 _  T, u1 {4 I; C& ?8 t1 L+ v1 J
  12. .fill 0xC0,0x007 U( P+ F7 c, L0 ?2 e; c
  13. ;区域结束/ I: P& B& ~& E9 F; S; [# c
  14. .endarea) a/ n  S3 t( d( F6 z3 \
  15. ;主程序
    + Y: z9 I3 @* f+ c
  16. main:
    9 `& B5 y& y, n- J+ K8 ^( P
  17. ;设置屏幕模式3,BG2开启; A/ E% t( T; S; u3 K
  18.         mov r0,0x040000004 l) L2 I- j) K1 T  i
  19.         mov r1,0x0400% W+ _) `& b9 e* h6 A( g
  20.         add r1,r1,0x3
    - T3 }  ?( L; x& m; ~
  21.         strh r1,[r0]1 j% i& `4 O  `" X3 b; f8 d4 ^# C$ n( }
  22. ;设置VRAM起始地址
    " k2 |2 b* S- x7 N6 x1 `9 Q
  23.         mov r0,0x06000000
    ! h. L: }4 e" X  E$ r
  24. ;设置图片地址5 B# C! @! p2 N) j2 P
  25.         ldr r1,=pic4 }/ A% b) D; V
  26. ;设置数据长度为0x9600" K! k2 A$ E' d4 u# b. S0 J  F
  27.         mov r2,0x9600! K! ~( I7 r! g0 `9 E5 A
  28. ;传送图片数据到VRAM( \" r1 I+ @9 ]7 _4 M
  29. loopl:
    , P7 Y( r0 v9 @3 ?% f/ t0 N3 i
  30.         ldrh r3,[r1],0x2. Y  |6 {  F6 t+ t) i
  31.         strh r3,[r0],0x2
    / L  ]7 g; ]  a4 b+ t
  32.         subs r2,r2,0x1
    8 A+ X- H& m1 p) J$ e! M! M
  33.         bne loopl0 q: |4 P1 V% r5 x' ~+ s1 e
  34. ;进入死循环  y+ W7 s4 P2 ?+ L; v( O
  35. infin:& s9 ^; ~$ E) M/ I- X
  36.         b infin; z$ o+ |# G! E" D$ l$ P) J% \; [
  37. .pool
    ) C& n& B7 A: C
  38. ;导入图片二进制数据
    " E( L1 g$ x, d8 }0 r7 ~% n
  39. pic:- j. f+ t7 s" e* K0 L0 ]
  40. .incbin "16pic.bin"6 Z3 m: z( S! k& `  S6 N& j3 q
  41. ;在0x08000000地址设置跳转到主程序入口# X- m! @( ]1 U, s. n. v( ^
  42. .org 0x08000000
    3 q* U' r( N1 g1 @
  43.         b main, J3 z7 ^$ t7 t) t  z+ z5 x# i
  44. ;关闭文件! s1 ]0 u( H. l# J1 I" I9 h% I  F  s
  45. .close0 B' B5 L, I- T  r
复制代码

8 a, e  R3 \8 U% {保存!
; J' M6 @1 r3 |0 J/ W* c2 D
% [/ o% f4 ?% ?8 ~. X(5)把16pic.asm和16pic.bin复制到armips目录下
: J/ F8 D7 c4 ]) n
3 c+ L  C" ]) @# A9 R3 g( y% w(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件  J" S3 s# X  S$ n" C; l* W( M

6 ]" @! F- ~! b& z  W' B(7)用GBA模拟器打开16pic_demo.gba观看效果  N8 s8 p& O2 y5 l% p( s

/ `9 j7 m1 n5 g6 i( V6 O9 F! i% v! t
, S0 r" b( D9 h8 }: Z+ O
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)5 R- G% X* S: a4 r

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-6-6 01:45

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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