EMU618社区

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

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

[复制链接]

签到天数: 2016 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
& [+ T) X4 M" f7 c
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
# E3 c8 A5 z& s; f3 Q& ]' F9 E  I% S! X, d8 u8 Q: Z
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
! [% o! q! P6 i) I" j4 x
& m# A7 O& |' h% \1 v(一)准备工具:
) Q1 J! f- E8 W% F1 {2 ~1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例! V( e2 j, n  j' Y0 _

( }' N3 t, p% x1 F6 U; ]! vARMIPS作者是Kingcom* A8 x  d+ n6 ]- l2 z4 r# [
ARMIPS源代码github页面:https://github.com/Kingcom/armips
0 H( X( y! \8 R  Q' X2 d0 vARMIPS Automated builds页面: http://buildbot.orphis.net/armips- B4 g2 R9 O; f

, a0 Z, H* u. t) z; k  ^" F2.一个将图片转换为二进制bin文件的工具bimbo 1.3) ]5 g% u: {4 C! J$ g2 D

8 }7 x' D& p( v, ?4 ubimbo 1.3作者是Aleksi Eeben4 r3 k2 I% y, n6 e

) I/ [: X$ }: o: W5 Kbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
) ]7 j! Q3 @* e) G. ~0 t2 b: @& j
3.一个windows自带的画图或其他图形编辑工具
$ r3 R+ c; O: `& L% W. Q, U$ o4 V; i$ k' k6 @- W
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
8 }! |7 J* G$ r  F7 e& m- j  \: }9 @) A7 f4 R' u% I
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP! E& ?& E$ X- d4 L2 q8 v

; @7 N# ]$ l/ z: J1 _
: d: g5 H. ]( K, @
/ V. Y* t, K" K0 ~(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
# v! }* _1 [! _- Y% g- a* C
' }; z/ M, ~: I: K4 }3 h' Q9 e' w+ x) k7 r. h  g3 ], A

0 _, w' B( @! r0 T; `2 j' Q2 t; u(4)新建一个文本,我起名为16pic.asm,文本内容如下:5 V7 F+ b5 z1 ~. i& W' s6 x, Y/ L
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000' [- r+ o8 u: f& [: Z) l
  2. .create "16pic_demo.gba",0x08000000
    5 K* `' j- O# Q6 Z# ~
  3. ;设置为GBA架构+ b7 M* ?& F9 i* _/ i
  4. .gba
    # a3 Q6 ?* E' o+ d, O
  5. ;设置为ARM模式+ s3 G( c! O$ M
  6. .arm
    ; V# e8 u6 m" R( L) K1 x6 n
  7. ;设置起始地址是0x08000000
    ' f- r- H5 [: q8 V4 ?4 O& W# i
  8. .org 0x08000000& ^5 ~8 m& s4 v  N8 {1 H# [' j
  9. ;创建长度为0xC0文件头数据区域
    ! G* ~7 N' T8 j; h
  10. .area 0xC0! T* s* M/ R9 J+ N; _
  11. ;填充文件头数据1 Z; `# W9 H1 a3 I( W# g. C/ ]* R
  12. .fill 0xC0,0x00
    - @& T( X; Y6 y) F, H% G" I
  13. ;区域结束! ~$ o- U2 L1 l) l" {
  14. .endarea
    ) {) n- ~$ `$ W& f* ?
  15. ;主程序1 ^( ~7 g5 K" ]7 \$ J# k
  16. main:% B- I, [3 K8 u' D+ a% W" _
  17. ;设置屏幕模式3,BG2开启- Q0 J9 I- s: p  Z* E
  18.         mov r0,0x04000000
    9 Z! T. S: t$ e+ q8 T0 Z4 G) `
  19.         mov r1,0x04009 [! g! x+ U* M" t: l3 m( ?+ I
  20.         add r1,r1,0x35 h: W( T' p/ u' y
  21.         strh r1,[r0]: o2 g/ b! Z, e; I) A
  22. ;设置VRAM起始地址0 r/ K& q# N+ W! P0 n1 q- k/ D
  23.         mov r0,0x06000000
    : A$ k" ]5 [) v) R, ^" [/ F- ~1 o
  24. ;设置图片地址2 N$ @. |9 p# @8 d
  25.         ldr r1,=pic$ T7 O# U/ f0 {0 m5 ]1 T, I9 j/ S3 |
  26. ;设置数据长度为0x9600
    : P) l( p3 y  \
  27.         mov r2,0x96004 `$ P% t* Q5 G  u# d/ }  S1 T
  28. ;传送图片数据到VRAM
    9 k' l9 Q' _" l
  29. loopl:
    . P6 e- w' d% U1 [
  30.         ldrh r3,[r1],0x2
    & U" f7 m, [" q4 s# x8 M. I  ?9 T
  31.         strh r3,[r0],0x2+ I/ `4 d/ |8 a. {/ W8 k8 ]
  32.         subs r2,r2,0x1; L- o( a' N3 t1 t3 J
  33.         bne loopl
    0 z* D  y8 S0 z/ A1 @
  34. ;进入死循环! Q# V' _% A, o+ v  \; u0 q- B
  35. infin:
    ) k5 d. V$ W8 n& _( x7 Y
  36.         b infin
    : f' X4 S4 N" c
  37. .pool: I  s" e  @& g* J
  38. ;导入图片二进制数据
    3 x" e& q! l' _4 G4 W1 w
  39. pic:* F+ n" |+ _8 `' m* s5 d. Z0 G( P5 p
  40. .incbin "16pic.bin"
    - ^7 T) q1 c! f& B/ J
  41. ;在0x08000000地址设置跳转到主程序入口+ d4 j8 N: o1 Q3 X4 M9 u, y5 v
  42. .org 0x08000000
    7 R+ f. w) c' G) a; @
  43.         b main
    5 P; v8 a! O6 q! C5 f3 w# l/ n
  44. ;关闭文件$ Z5 e9 q- z8 c. a  C6 g, Z
  45. .close  D* H" t& J% M& L, l) C  m$ p
复制代码

, R# R' k3 _6 C! l% h保存!6 j- I3 y  k' u9 ]9 d5 z' r& A* l
) s7 E7 Y8 v% L8 F2 }7 a" b
(5)把16pic.asm和16pic.bin复制到armips目录下
+ U. V' w& L) C+ `# O. j0 _" u* E# j
6 }/ A, P- B2 r+ ^) E5 p(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
( r. d3 O2 x4 N% C, r
7 k- a) b& |% ?& g5 `" k/ g(7)用GBA模拟器打开16pic_demo.gba观看效果
2 p9 @  p  Q1 l, o* Z9 d, e1 g! i4 Q  x! m5 c/ @3 ^, r6 ?

, E1 @) S& X$ z6 ^
5 g5 P3 }0 r8 Q关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
5 m& u; t) j- z3 v

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-22 06:37 , Processed in 1.070312 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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