EMU618社区

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

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

[复制链接]

签到天数: 2122 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
, t0 E4 K$ u; W% T0 J" F8 [
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档0 R7 ]5 O+ U7 E. z  G6 K7 {* j
# b( I8 }) c4 {: a+ ?. ?' s& y7 v
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
1 M6 _7 Q2 D) p/ l1 ]
, w7 a2 w* q. U' |# w# T, o+ G, L(一)准备工具:
' I1 t7 x' i, L" `7 l8 ^1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
% n# G0 f; u) J+ a- a. w
/ E. Q: E% u/ f  RARMIPS作者是Kingcom) K  @4 H9 F! I; z8 a$ Q2 d- R( g
ARMIPS源代码github页面:https://github.com/Kingcom/armips* M- N+ a) V5 Y. V
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
9 ^# H  }3 z$ v  ~. p1 U8 ]( n* b+ C9 n
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
0 y' Z7 z! H6 @* k* f6 X* X8 c( [" a
3 h; k8 N* K% l! mbimbo 1.3作者是Aleksi Eeben
1 \& o' O/ H- T3 K$ d
. ]' u" p+ p; o8 \8 F+ ^bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
& p) u7 j" @" w; s! R4 V. S- t; m$ @6 \1 m5 I8 D; e. k8 O3 z
3.一个windows自带的画图或其他图形编辑工具
' }/ F8 g+ {7 S
3 p2 `' \7 `$ F; A1 S- P6 t* O3 i7 u& b4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
' p0 H! F) b6 S. \: w* u$ w$ x- Q/ }3 X- m- B, H( f$ T
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP9 \3 x- |' B- ~3 q* K) N( [- ~- W

2 S6 V. ~+ M* w/ t5 b4 ]" p( G7 |* }/ `" i# \8 S  W

8 J! p, O3 E5 T' N(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ k0 r" _& C2 f% t. G

$ I' A! o. I# d" F$ z# _  W8 X# k+ L) x+ V, p* d- r
7 s% v% u- `- }3 |
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
& O+ K0 ^- E- t$ Y: w
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    7 p$ X( d# [. _/ K
  2. .create "16pic_demo.gba",0x08000000
    . c; t; z3 l: n* j0 O
  3. ;设置为GBA架构, f$ c% V+ ~5 C8 X+ j# J" p% T; u5 B8 r
  4. .gba( `! g4 p3 R& d0 m" i. ^! T0 ]
  5. ;设置为ARM模式/ F7 ]. w% {' R- \" k9 z
  6. .arm  S/ n' }. g! z# j3 k- ?
  7. ;设置起始地址是0x08000000
    ( E; ^4 ?7 f7 C- l: t
  8. .org 0x08000000% l4 m. r5 k% U+ K  @+ j8 @
  9. ;创建长度为0xC0文件头数据区域
    " X2 P9 s( ]. [' F
  10. .area 0xC0+ i/ L0 O, I0 I
  11. ;填充文件头数据1 {% ?) q! @3 P/ o
  12. .fill 0xC0,0x00
    # {4 b/ h( f- C! t/ K, d
  13. ;区域结束
    # r, [. h  S& O( s: I2 \2 F& |: y9 C* w0 E2 j
  14. .endarea7 p. ?# e( p/ i( y; y& t
  15. ;主程序! f0 {' d  l7 @- U. Y0 T/ U8 b7 M
  16. main:- l1 E% t4 k3 l! D; p
  17. ;设置屏幕模式3,BG2开启
    - A0 ^) ?; E& \0 L9 J+ m0 ^
  18.         mov r0,0x04000000
    - R8 [& U* H( j. k& ~  r8 K
  19.         mov r1,0x04008 W1 i" w9 }  s5 Z
  20.         add r1,r1,0x39 Y' x$ u0 J2 K8 P1 v
  21.         strh r1,[r0]
    & i* M6 Q" B! h" k
  22. ;设置VRAM起始地址5 c- W8 p  ~' l" J# a/ q9 d" H1 z( X0 \
  23.         mov r0,0x06000000+ T, u/ O" P) s' b9 j/ \
  24. ;设置图片地址
    * _: a& \. y4 b& P/ K
  25.         ldr r1,=pic" m0 O0 d& n6 V
  26. ;设置数据长度为0x9600+ b# n! }- u. T2 w6 H0 m9 X2 F0 {
  27.         mov r2,0x9600
    5 N. P8 X4 C  r
  28. ;传送图片数据到VRAM
    ! T+ X9 K0 B5 ]! V5 m1 V' Q. s: j+ o& E
  29. loopl:
    0 L( V7 a; V6 w! ^* ~* c* l
  30.         ldrh r3,[r1],0x23 X( R( A9 u: x) r5 V
  31.         strh r3,[r0],0x2
    4 @" Q# G; |( k- p: o
  32.         subs r2,r2,0x1/ I' r* I! s% a- k' @" k6 k6 z
  33.         bne loopl
    ! o; v% R. H) b! ~
  34. ;进入死循环( R% Y: ]% c! {/ d, C
  35. infin:
    5 ~' z5 m9 H6 X* u( @, f' c
  36.         b infin
    7 `% r2 B& S. m. }- C- S% ~
  37. .pool3 X/ q( V1 M3 F7 q! E0 V6 E0 v% ^
  38. ;导入图片二进制数据
    5 F& H% W0 S6 k1 {" y8 Q3 c
  39. pic:
    0 Y3 I& J- I. [2 s. i
  40. .incbin "16pic.bin"
    # i$ x  l- _, J& o
  41. ;在0x08000000地址设置跳转到主程序入口
    4 R+ ~2 D: E; J! c/ {  w$ e7 @
  42. .org 0x08000000( f/ l" Z2 u" H4 n
  43.         b main
    ) j* }, H6 r! A( z( f, z; w. d
  44. ;关闭文件+ F* J% T5 \0 Y: A
  45. .close& E4 y, w; c  }* [
复制代码
1 H/ X' ^" X/ u( U8 U
保存!
2 u( T+ _, |4 l, O
9 G- e% c! Q1 T4 o5 w(5)把16pic.asm和16pic.bin复制到armips目录下
. Y4 O2 d: O- O9 g* y7 \- ?* z* ]. K6 n3 _; x3 g3 C6 g; t+ |5 p
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
- c4 \) f$ B2 @& r& l, o5 c7 Y! |$ v* b$ r1 S
(7)用GBA模拟器打开16pic_demo.gba观看效果
3 a& I+ w0 {3 j: n/ ?2 a
* J! T/ _3 E7 N% S4 R( }7 w& ?" B) r' b% x5 C7 x
, g- I' `0 y8 |3 }; m
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)" |" `4 Q; T; |! d- V

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-11-5 16:27 , Processed in 1.062500 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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