EMU618社区

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

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

[复制链接]

签到天数: 1804 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
7 P) |4 m% J0 `% R% R+ h
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
) F4 C7 D2 e( w
" N" y( J8 [0 w; V, Y- O- w9 j% Z5 V这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧# V  m) j4 P  \: c

, u' v, D& Y. ^# v$ D(一)准备工具:3 V4 B. h& H( k# r# ^7 {% G
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
' f( ~" P9 f2 D  Q! y; j% V
* f# _( t( ^! L" {1 LARMIPS作者是Kingcom* p8 ?/ ]' S) }3 C3 V
ARMIPS源代码github页面:https://github.com/Kingcom/armips. T) j$ Q1 w* r' D
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips% O9 v0 b7 H6 l8 \1 y! ?

4 ?; p8 P0 O4 P# J% X# |' v2.一个将图片转换为二进制bin文件的工具bimbo 1.34 M# M7 G1 v- k3 P: y3 S
) L/ _& r6 C. d' S# d2 }4 _
bimbo 1.3作者是Aleksi Eeben
# W3 A) @$ _8 b/ e% R( E
8 e. \3 Y; S! e! t' |# }. fbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1671 j  p; `4 e" @% T# }% {
6 V& d/ u+ n) l
3.一个windows自带的画图或其他图形编辑工具$ T! u$ f& _- k5 Q
2 R. p; ~& k7 `( h: Y5 H3 Y) t
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)* ?' \, O9 o4 J) x4 h( q6 ]

" L: f& a7 n& |' F5 L7 G9 W(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
9 R. D2 u$ A9 x* S" v: I  J
( B  {0 x6 n9 N
1 K5 _8 K: W+ e) f! H5 H5 B" i+ v; `- d; f0 S
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin" g: v: D8 ~# T+ ^4 h# @: Y
' V. `. o4 y* B
. E/ d0 w# n/ q& i+ c) |$ H

$ e# B  _' B0 _4 n* r(4)新建一个文本,我起名为16pic.asm,文本内容如下:2 w) \5 u6 t8 F; K" y$ D# T# A
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000' F+ }  f7 J  X7 t
  2. .create "16pic_demo.gba",0x08000000
    7 V! y3 J6 l8 H* R) L
  3. ;设置为GBA架构
    & b$ |$ G( |3 w( u- ?/ \1 ?( f: P) t
  4. .gba
    . ?! z6 X* C- K) l' {: H7 d3 u
  5. ;设置为ARM模式
    6 q1 l7 r) w' O4 N: }% H4 }: Z. L
  6. .arm
    * g7 ~! @0 n. t2 p% I6 c
  7. ;设置起始地址是0x08000000" n  @; H2 O/ x$ l2 U! Z$ U
  8. .org 0x08000000
    : z, C3 w& _+ a2 o( S
  9. ;创建长度为0xC0文件头数据区域
    2 z7 b* `/ S1 a  k/ o
  10. .area 0xC0- }1 A8 k9 k: C9 N5 j
  11. ;填充文件头数据' ?, E. ], D! e
  12. .fill 0xC0,0x000 n& E9 C4 j6 u& Y% Q7 n- ^; Y
  13. ;区域结束
    3 H$ D% c' Q; Q+ H( ^  n
  14. .endarea
    3 f9 M6 q6 W) B* e# J
  15. ;主程序1 |' _/ S5 H" c+ A# @
  16. main:
    $ q$ n+ \7 Y7 Y, I
  17. ;设置屏幕模式3,BG2开启4 V8 u: {9 {* o& B, n& l* _9 D$ o
  18.         mov r0,0x040000009 n- y9 ?( S3 K1 @- p4 @
  19.         mov r1,0x0400
    4 W# @8 D$ L4 q# e. s# x) a
  20.         add r1,r1,0x3
    / S4 `6 t  ~+ ~0 L3 P
  21.         strh r1,[r0]- A5 N; l* H6 B% O4 K. A  k
  22. ;设置VRAM起始地址' }. Q1 O9 \1 h( R  [3 K" a
  23.         mov r0,0x06000000
    4 [. ?2 M! ]) V
  24. ;设置图片地址" R* O: L2 k( x- @  _
  25.         ldr r1,=pic/ A2 c# r- u2 j/ N. D% ]7 J: |
  26. ;设置数据长度为0x9600
      [8 d) s+ t; E( W3 o: q! b
  27.         mov r2,0x9600- y+ z$ C8 |. v, k6 D
  28. ;传送图片数据到VRAM0 F. c* o" m' P% Y5 `! p
  29. loopl:
    ! ^6 o2 H6 w# G
  30.         ldrh r3,[r1],0x24 Y. Y& R9 i" o6 I' @
  31.         strh r3,[r0],0x2
    0 ^- }  ]' P8 ^2 W" ^
  32.         subs r2,r2,0x1
    ! M$ O0 t5 [6 r' m: `" E2 T! P4 Y: u
  33.         bne loopl
    / W/ k0 w3 A' O
  34. ;进入死循环
    + J/ y0 J- V! a1 ~4 [
  35. infin:0 u5 c9 i+ C( ~
  36.         b infin* Z6 E% W6 O2 Z; G1 x$ H
  37. .pool) O# R) Z8 ~% {* Z
  38. ;导入图片二进制数据
    8 J: f1 V' F/ `
  39. pic:4 C- X5 D$ x$ a2 s
  40. .incbin "16pic.bin". k, Y" m7 g- z
  41. ;在0x08000000地址设置跳转到主程序入口
    * K( }) Y9 M+ @/ G" O
  42. .org 0x08000000
    : a: u4 H! E( b$ R
  43.         b main
    , s  [; L8 b" o6 U+ \! U0 ~3 }* T
  44. ;关闭文件
    - {  Z7 \1 p/ q5 s4 {. R- i* N
  45. .close+ _$ O" f/ z! [, B
复制代码

6 \. s6 u) ]4 ], a) a0 P" A- ?  b保存!
! V; x, p- b# S  i" u: D" ?; W0 j% |4 w* L# T
(5)把16pic.asm和16pic.bin复制到armips目录下: X( E" L5 R' P; c% q7 ?

% F2 E1 G. d1 U# e7 J* w  h(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
2 t2 b! b- W) u0 y
( A6 S: \: `, X  U2 l7 p6 ^(7)用GBA模拟器打开16pic_demo.gba观看效果8 r: _, F. H& |) j: X6 c  Y

5 M( A& m$ V* M1 K0 X% \5 L7 p. r! ?4 `/ ^4 \9 f
/ l9 x. J( A; Y/ A5 w
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
7 M9 h/ [' T# T

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-12-20 02:17 , Processed in 1.090820 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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