EMU618社区

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

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

[复制链接]

签到天数: 2172 天

[LV.Master]伴坛终老

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

- _- L% P  v0 E; Y! v5 p6 x当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档( F3 @) _2 T  P/ U; H$ \# r( `4 ]
( b1 M$ R- }. o" ?! H5 [2 Y
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
$ j5 l8 s# c: E' F1 _" q3 H1 I# t" ^6 e& E% \
(一)准备工具:' A1 G  ]' Y0 o' }  l
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
2 Q% j- Q+ t* u1 K+ M: J% h4 C9 [/ A  R2 @) y% c% G& W
ARMIPS作者是Kingcom
2 d# O) x6 h) [) B( o/ fARMIPS源代码github页面:https://github.com/Kingcom/armips* @* L6 v2 I" }5 c
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips( j4 i9 M3 f. B! X: S* b  {

7 i6 I8 z; ~1 n4 {* u2.一个将图片转换为二进制bin文件的工具bimbo 1.3
) f/ O& x# r' c! n) Z" ]/ {& v4 G9 O4 W# O
bimbo 1.3作者是Aleksi Eeben
  ^# ]9 X- @" k4 z" H& ]6 l: q$ e9 r6 n9 X% Y
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
1 }2 I5 x; w+ N1 _
. R6 t$ F5 G& X3 r3.一个windows自带的画图或其他图形编辑工具
% e+ t% e- ^* S$ A$ x' }$ {) n' g1 p0 h. W. I$ B
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)  j+ W, ~/ m$ m' m! {

! h( V. |, z$ N9 s$ L(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP3 J4 n1 p4 M2 }
- p8 p+ J7 W3 S% z1 B
6 T# B" r9 a  Q/ ~! e) o
5 r9 U5 R' s/ [1 q0 h
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin+ c" ^( l& T- c0 j7 t- J2 z7 M; ^
! y& ^* C% {: d9 w6 n$ k/ P
' R/ M: _' C- r$ c$ J* a) N: w

! y6 ~2 o1 }! K, U# w( J4 Y; Z(4)新建一个文本,我起名为16pic.asm,文本内容如下:+ ?' X9 |2 N' y) U( r2 ]. `
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000% S* r: F# \) \2 L  u- C* }
  2. .create "16pic_demo.gba",0x08000000) s, E/ H9 M5 P: a0 v- n
  3. ;设置为GBA架构; O8 ?9 ?( s0 x! h+ f: y& D
  4. .gba
    ) d! Y- t+ _, w- ?7 w, n- I
  5. ;设置为ARM模式
    # i8 I( r8 D! l& T
  6. .arm7 M+ O; u* x$ e' E$ g
  7. ;设置起始地址是0x08000000
    / A" {0 E% S" U: E+ C$ u4 S) y
  8. .org 0x08000000' b5 o8 H0 a( B3 P7 X0 M
  9. ;创建长度为0xC0文件头数据区域( k% _4 v0 p5 U$ m' C
  10. .area 0xC0/ {& D6 D0 Z9 x2 u; [* k4 M. ^. T. w* z
  11. ;填充文件头数据
    ! c, P6 ~" ]3 e7 W) @# m" A$ m
  12. .fill 0xC0,0x00- y0 o5 G; }1 H6 d
  13. ;区域结束& |: v/ u0 O, M( h7 `' Y4 n9 v
  14. .endarea) Z. r1 f3 }. O" v: I) J& \' a7 B
  15. ;主程序
    , x1 F$ C  L( F) d
  16. main:( v6 h5 k6 A% ^7 d. L  c% B, L
  17. ;设置屏幕模式3,BG2开启9 `& T% Z% X1 m* X+ _3 I' B2 H" p
  18.         mov r0,0x04000000
    ; X) U, e1 F* ?
  19.         mov r1,0x0400
    + |. p! r6 o* K( m4 z4 q
  20.         add r1,r1,0x3
    6 l$ J0 a5 f8 F7 c% h
  21.         strh r1,[r0]8 T& G2 r# V( w6 B* [/ |; y7 g  U
  22. ;设置VRAM起始地址
    2 u! C* \6 F6 y& l6 X
  23.         mov r0,0x06000000
    ! j- H# w/ Y& i- p* U, m
  24. ;设置图片地址
    ( ?8 y+ v0 |) r" i3 X; R+ N2 g4 U
  25.         ldr r1,=pic3 V/ [2 h$ @" A, ]" b% `  K% H
  26. ;设置数据长度为0x96009 {/ l9 l* |2 N1 }4 p
  27.         mov r2,0x9600$ k7 T) A7 ~& W3 h9 [  `& f2 j
  28. ;传送图片数据到VRAM5 ?+ W6 q  L! d. \( C% r' A
  29. loopl:8 o7 s: e4 J* ]7 n# P; j8 a1 W
  30.         ldrh r3,[r1],0x2' G0 }6 Y7 T7 ]; M% s
  31.         strh r3,[r0],0x2; m. X3 ^* u& W% t3 M7 b# S; n
  32.         subs r2,r2,0x10 F5 P. m) ~3 c. C, N3 Y" W- c
  33.         bne loopl. H( t: T  s+ `5 B1 d. ?
  34. ;进入死循环
    - y' ^9 V1 k+ p1 [
  35. infin:
    9 ]: z+ {1 }0 _
  36.         b infin: i/ G. h; i% O: @9 V; C) X- B
  37. .pool' \9 R2 p  S6 T) {& p+ ^
  38. ;导入图片二进制数据
    ' F& u% U  v+ W; O& b2 X' H
  39. pic:
    0 v) a& C: x2 d
  40. .incbin "16pic.bin"
    ' I! t' ^7 f" J; P
  41. ;在0x08000000地址设置跳转到主程序入口& x' o% P7 w1 b
  42. .org 0x08000000. l  n6 ~( A6 e8 L+ m3 N8 K
  43.         b main4 y5 ?; s) C) j0 M2 I4 K  Z" R
  44. ;关闭文件4 s* w, E/ S5 ^3 m% r$ U, X
  45. .close
    * X9 O, {. t$ p! q: A
复制代码
$ ]# [# U. n6 }2 J1 r
保存!+ R2 ~4 v: u8 b" P9 `, P
4 J  S( a" E' e4 A
(5)把16pic.asm和16pic.bin复制到armips目录下3 M6 I8 W% n" o/ W. r$ B, M5 m' B" r* U
, U# I0 K7 R3 d" S4 y8 b, [2 B
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件0 k/ y% i+ a% ]5 ^9 e

$ J' Z3 M. r; u; R3 X& E9 T# d(7)用GBA模拟器打开16pic_demo.gba观看效果
2 I: r( o, Q2 S* M4 R4 A' m" \
* i- C& w; F2 F2 l0 P# Q4 o- F. @) s5 v+ ^5 W/ G* y9 W
9 U" X5 `& A+ I2 z4 d7 z$ b
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
! K+ g! K' N% ?' L5 w0 K

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-12-27 00:41 , Processed in 1.082032 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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