EMU618社区

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

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

[复制链接]

签到天数: 1773 天

[LV.Master]伴坛终老

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

+ `$ s) Y; T; k3 h0 c' F9 W. T$ N  K当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档- J: {5 a/ [$ x" }$ `& B) ]

& ^+ ]- A6 @! T8 r* K0 y这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
0 s. r: z5 O9 X7 m! F9 N8 ?8 o, C' V) W8 F7 A: k: K9 N2 ~
(一)准备工具:* U. \3 O0 s2 S+ p6 f- q9 _
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
+ W; |2 z  {( ^% T
! i& b' d; l7 J; r9 u1 Q8 gARMIPS作者是Kingcom
/ a1 X+ w  l- n  _5 B' E( @ARMIPS源代码github页面:https://github.com/Kingcom/armips
3 v3 s1 |; X$ hARMIPS Automated builds页面: http://buildbot.orphis.net/armips3 u( @6 a  B, @7 \8 P9 h  x7 X
% u8 f$ B& E6 o5 F
2.一个将图片转换为二进制bin文件的工具bimbo 1.3/ L) r9 H5 f/ U. @; M+ n0 d- G3 I' i
9 W7 {. a, x8 H5 l& i7 L
bimbo 1.3作者是Aleksi Eeben
0 ?. O2 e9 E/ @. R' I; \' Y# |+ o
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
4 j- i0 f* d; m/ a' O) I. t/ l6 ]3 V. O9 L
3.一个windows自带的画图或其他图形编辑工具
1 |$ {) @' j( A  l, Z/ A/ R8 p/ l3 X! }' E% D( |% ?0 v* w5 X+ o
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)& h  a  u% p% V; }
; L2 P3 s5 b7 C' O2 c$ \  U
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
6 ?" }- h& D4 m3 [5 u3 N
0 m2 ]- [2 H2 L) g4 c0 o* K( s, a0 f2 z3 u( X0 s
( R2 m, K* ~* U
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
) T& d6 f; g9 m3 A8 L/ ]
# v3 p+ C0 w/ v# R
% v& j9 d1 k' a  a5 M" S( Q& z/ A2 v/ ~: ^8 M' m2 |
(4)新建一个文本,我起名为16pic.asm,文本内容如下:# L6 d3 w6 r* o' g
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000007 h3 W  K! o: i" h- s, l$ f
  2. .create "16pic_demo.gba",0x08000000
    9 \. K$ z/ N) c6 p
  3. ;设置为GBA架构2 ]! u1 t  S' n% N* n9 a/ Q/ ^
  4. .gba% D  J$ h1 z6 w2 _) g# k
  5. ;设置为ARM模式
    9 U3 a, p6 A! j! {0 P
  6. .arm
    + H4 _/ T  t  `0 M$ e
  7. ;设置起始地址是0x080000009 c5 o( |4 Z: O& S
  8. .org 0x080000003 Y( b5 c/ c" F* B7 O6 P. j! A
  9. ;创建长度为0xC0文件头数据区域% j1 L4 Z' L5 I$ S/ I4 `
  10. .area 0xC0
    ' O& S/ _  {$ y
  11. ;填充文件头数据0 H$ P+ K, @# [1 h" R
  12. .fill 0xC0,0x00' o+ Z; H5 x2 _+ ?) ]0 v& m+ w6 d
  13. ;区域结束
    6 N% ]! Q  u) C0 ^# J, d
  14. .endarea* U- V- a* u, x6 y/ [  w
  15. ;主程序9 r+ G4 F( w1 f7 D5 B3 b+ a
  16. main:5 V7 x/ V3 u4 l& j2 q
  17. ;设置屏幕模式3,BG2开启
    + O8 L+ S: C+ U  c+ w! e- K1 H1 U
  18.         mov r0,0x04000000' ~! |3 i! ~6 l" i  L) ]& K
  19.         mov r1,0x0400
    . ?" s( d7 C. k
  20.         add r1,r1,0x3$ l% Q0 I% X3 e) f. C9 Z7 y! ]
  21.         strh r1,[r0]7 f( e0 g8 T, j
  22. ;设置VRAM起始地址+ L& f0 g: W$ f2 t2 S
  23.         mov r0,0x06000000
    6 i1 \9 I4 m8 L" n0 S6 e
  24. ;设置图片地址
    4 T' P) q5 k% `  `/ q$ ^3 m2 F
  25.         ldr r1,=pic
    : i/ R0 E/ F' x9 Q
  26. ;设置数据长度为0x9600
    / @) z& m& J7 `9 ?- s) K' ~( @
  27.         mov r2,0x9600
    3 r* ^& |& _2 B. o4 m  A
  28. ;传送图片数据到VRAM
    : L  I2 z4 D5 @
  29. loopl:3 R/ O& a9 t* D* G" l
  30.         ldrh r3,[r1],0x20 `* D: _6 ]6 o& s) P4 W9 {  b1 Q
  31.         strh r3,[r0],0x2
    5 i' ^8 N3 Z) w. ~
  32.         subs r2,r2,0x1
      W$ S: K; j! G9 Y  q
  33.         bne loopl
    ' a2 t0 i& W  y
  34. ;进入死循环; T- i7 k* ?' `* h2 s3 ^  w
  35. infin:, n, P0 Z2 [1 J# c- t" D2 p3 P$ b
  36.         b infin0 o; Y3 z, M/ `; ?
  37. .pool
    ' G+ f+ i# j' z% w1 W
  38. ;导入图片二进制数据+ Q- `6 X  t+ K, j( n
  39. pic:. j8 a: h+ j' k8 l- q- ?, B! U
  40. .incbin "16pic.bin"/ f/ p% `+ S* u2 y/ D4 ^. x- ]
  41. ;在0x08000000地址设置跳转到主程序入口
    7 T' j4 x  W: a8 f  L* J: ~
  42. .org 0x08000000
    5 X$ b4 h7 F7 m: G
  43.         b main
    3 j+ @# g8 q4 q. T5 l% U1 X
  44. ;关闭文件2 {! W% H; ~) t9 e' a# ^( V* X8 N
  45. .close) K5 k1 c& W3 o3 w/ t; J
复制代码
& A) g' t5 T9 [. S% i
保存!. O1 h% _# g( n) O

5 E- L+ u$ H: H: `  I5 L(5)把16pic.asm和16pic.bin复制到armips目录下
: r' f( `  U$ p' X" C  h) d0 t1 T+ a/ |( ?2 M. `, D
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件- m+ s! ]% X) {
+ j! S$ S0 n, E3 S8 {$ c
(7)用GBA模拟器打开16pic_demo.gba观看效果3 W% h( ?" T, t- J3 c
1 W" A; o& C8 @$ W9 P9 I% j" t
5 J# I* c! r4 b$ `# d, }
4 }( e/ B4 Q3 ?& R
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
" y) o" m+ O2 B+ Y

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-19 01:45 , Processed in 1.083008 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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