设为首页收藏本站

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

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

[复制链接]

签到天数: 1897 天

[LV.Master]伴坛终老

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

/ _9 ^* w3 G; f2 [& m当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档( b" I# [& Q8 s. f
. W: V' \2 J3 `& Q) N
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧6 n7 a0 S  f/ M, o  e' b
) e$ m2 M9 R# U4 |5 ^* F
(一)准备工具:- F7 i8 l" Z1 y' q$ V) _
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
- s: y$ Z  S: X6 n" ?7 K) f# L5 o
ARMIPS作者是Kingcom
5 r/ \3 Z+ t, _& j( h6 lARMIPS源代码github页面:https://github.com/Kingcom/armips
( Q& l( G* O3 y/ G' `3 ?. `ARMIPS Automated builds页面: http://buildbot.orphis.net/armips- o# s+ X8 W2 p( n) w

8 ]! [2 I# a; b6 K* H" F3 P# y' X2 X2.一个将图片转换为二进制bin文件的工具bimbo 1.3
, `, `( p8 v" j8 e; ]2 _9 L  E2 N, e2 @5 P8 }
bimbo 1.3作者是Aleksi Eeben0 H' n3 @- ?- L3 Z: v3 O5 D* A

6 X  `# A5 V0 C  Ybimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167! y0 {4 \5 _9 h8 ?0 @8 U  k! n
4 `2 t+ d0 Y5 T' R; o/ m- L; }2 p
3.一个windows自带的画图或其他图形编辑工具
$ i  X- H, r' t) T4 D, G) f2 U" E3 k8 Y+ ^2 t3 e
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)6 T$ \% h) ?* T7 Z! d1 H

7 I- A9 k/ N0 g3 V) I, p(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
* K2 }- O6 ?. n6 Y: k; V
6 q6 b# D# m6 P6 e; @) @9 Q. d* m, N5 ?# l. V

2 o1 y1 |7 e# @" P2 L(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin9 K  Q( Z* N4 h8 l" L
9 B& o$ Z$ w6 S& n+ I/ F1 L

5 O: `1 A7 l0 Z9 H* I! k* B  N% b0 K+ C6 u2 L
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
+ H$ h+ y- V/ {" y  Z
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    & `  G5 I  Y9 L$ x6 u7 j% L
  2. .create "16pic_demo.gba",0x08000000
    ( X' ]. Z; r; X5 h& }
  3. ;设置为GBA架构9 ^6 d3 ?3 u- _* ^
  4. .gba- u( u; K  z# x% d( p2 i
  5. ;设置为ARM模式
    6 ~) ^2 q: p" K8 X& a1 Y
  6. .arm5 V5 `- n, O: v; t  Y
  7. ;设置起始地址是0x08000000
    % M: p: R4 I- E$ H% |3 J1 o
  8. .org 0x08000000
    2 ~1 K# E# R3 e! z) M% U$ l* m* l  Q
  9. ;创建长度为0xC0文件头数据区域" i! P8 X& r9 ]3 d# F/ y+ U# z( H
  10. .area 0xC0
    9 w, i. \' i" o, Q4 P; h5 {
  11. ;填充文件头数据
    3 O3 k4 k; X6 U/ G
  12. .fill 0xC0,0x002 m( N: C& U7 W0 A% h7 F( V
  13. ;区域结束# @& x3 S9 I% v
  14. .endarea0 C7 W' [8 B# B1 p9 T
  15. ;主程序! V6 f5 A- G$ g7 V
  16. main:. g( P/ T" y8 K0 Q
  17. ;设置屏幕模式3,BG2开启3 x( }2 E7 d- g; y/ ^" ^
  18.         mov r0,0x040000008 @1 f- l, b+ ?/ l0 X2 K6 |% y9 E  {
  19.         mov r1,0x0400
    ) k! F( D# O  J
  20.         add r1,r1,0x3* k( l0 @- [0 ~' U  S
  21.         strh r1,[r0]
    & P: ?$ \3 Y* Y3 b
  22. ;设置VRAM起始地址
    * a  Q$ p7 H0 y: _+ F
  23.         mov r0,0x06000000
    9 b5 e. \2 ~, {8 [
  24. ;设置图片地址
    / z- n2 g5 l8 A- Y" h, W2 F1 U
  25.         ldr r1,=pic! A/ l3 }- i0 L6 G" D
  26. ;设置数据长度为0x9600( R1 A) j; `5 q( Z  R- o
  27.         mov r2,0x9600  O7 x7 z/ j* P% @7 ^9 c% Z
  28. ;传送图片数据到VRAM
    ! u# A! _/ E3 U* a' v
  29. loopl:- z% q, U3 c6 A- _8 d! k4 F2 s$ }$ I
  30.         ldrh r3,[r1],0x24 g: v% t# P8 Q. c! i. y& h3 e
  31.         strh r3,[r0],0x2
    " k( w( @3 N. t2 z: f2 m; |& t  [: m
  32.         subs r2,r2,0x1+ L9 ~. N, Z1 [) C, k0 f& Y# m
  33.         bne loopl
    $ G) ?5 U* a) O+ e- B/ T
  34. ;进入死循环, t+ z5 W. p6 \. d0 j4 V
  35. infin:+ l& f% @6 m9 F3 I+ [
  36.         b infin
    $ O: {% b; G$ A/ F' Y: o
  37. .pool
    , n+ J; e8 z! R0 \
  38. ;导入图片二进制数据( P  N( e* s' e$ |; F! W2 H* q* o
  39. pic:2 T, r0 ^3 n; m! _
  40. .incbin "16pic.bin"3 W2 r" @2 M8 i6 j7 f% U3 v; B! a
  41. ;在0x08000000地址设置跳转到主程序入口- b) B( K! k! e2 Q. [7 A  x
  42. .org 0x08000000
    7 y5 j. [7 i+ j8 Y# g9 t# m# q. Y
  43.         b main/ y7 \1 A' y- o$ e  x2 x" U
  44. ;关闭文件( @/ F+ A/ d6 ]  t3 B
  45. .close
    & c6 p: K. v1 I+ H
复制代码
+ `; C6 N% q+ {5 T+ l3 B1 ?0 j. p; g5 m
保存!
6 b0 m- d, ]9 r& g5 r; `
5 m0 j" F( d+ G9 h; Z  @3 f9 i/ |5 W(5)把16pic.asm和16pic.bin复制到armips目录下
' p2 }0 ^, H; I) A; J6 \4 ^/ c
  @1 [; g5 U* w1 D3 Z. G(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件7 b$ y( x5 V+ ]( s8 N; h

- z$ r. Z0 p& c(7)用GBA模拟器打开16pic_demo.gba观看效果
7 ]0 U/ o; l; ~7 T- ~, ~" u4 S! l! C  J+ a$ {+ P

/ T6 _) u- e% H! r  w. d. Q. L% S5 A9 v  \# X3 f
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
( e, X: v* i' z

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-3-17 10:26

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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