EMU618社区

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

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

[复制链接]

签到天数: 2072 天

[LV.Master]伴坛终老

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

4 A9 u' d/ |4 }6 I当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
; P, D8 Y5 c* F9 v+ S6 x
2 |3 j- j- J( d  Z+ ^这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
; b; s( r- R/ P
7 w* U" h2 ~" a& j4 Q  a(一)准备工具:
( P/ \% d0 s# G# \) _5 ]0 v' @1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例' N( {" d# R  f+ G% y) u3 Z

& v* E4 v+ m4 ?/ oARMIPS作者是Kingcom  T( w; u' o6 ~# C7 H
ARMIPS源代码github页面:https://github.com/Kingcom/armips4 o; v! K( s7 J1 g' y3 ^, C2 _
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
/ N* p( E  F, t  e) N6 Z1 f
$ j4 c' ~5 Q  [. E2 t& U2.一个将图片转换为二进制bin文件的工具bimbo 1.3
1 z" o3 v0 p- h( g5 {* W1 }
( W" ?  @# v1 _* Ebimbo 1.3作者是Aleksi Eeben
' K' z' I4 R* q+ h+ c4 L# A( D9 T
  v- _& P+ c4 {bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
/ b: J* t5 [9 E1 t4 z
: ^6 C  \& j( j) a, p6 ^- a3.一个windows自带的画图或其他图形编辑工具2 e# y- r7 |) \1 J; ]$ H% J  a
* j2 d8 d6 y6 a5 W! U7 G* k
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)7 t' R2 w6 z/ o% \$ P. I* n
4 W; I. h# y5 P1 m9 f" }
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP- g: u9 ?7 [+ Q6 K# b9 `
3 z) @' o/ `* _6 U4 _
* ^  c  Y% H  e8 h9 _+ F2 B3 ?8 w9 y
* z7 a0 g  k9 q; R
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
$ N5 k. f" U! s8 A+ D
4 Z. Q" J2 H& M  Y! A  j& x
7 f9 g3 u  ]5 a" {7 O) l. c; d% b) n# b
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
" [+ F/ k* V! F9 V( N% t: J
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    / G# B6 e: D" v1 F) C; f
  2. .create "16pic_demo.gba",0x08000000+ `/ q' `4 p- K( `& u0 j% r( T
  3. ;设置为GBA架构
    ! P' B0 I" M- R& Z+ _" _3 p* A7 C" W
  4. .gba
    / ]$ h* b& V* |: E, x
  5. ;设置为ARM模式9 `9 m4 P8 a, x. o2 P6 c  ]
  6. .arm
    % Q( t% {" I: b0 I8 P# Z& w
  7. ;设置起始地址是0x08000000
    : A! s* \1 w4 O- ?$ G1 F* Y
  8. .org 0x08000000
    8 E- s+ i$ p1 h
  9. ;创建长度为0xC0文件头数据区域9 z4 p# `7 v; y2 e; w5 M1 e# }; j
  10. .area 0xC0
    6 C" D- B# o- ^* m! p# C
  11. ;填充文件头数据& k$ j  E  o5 b2 X5 _+ e, }: ~
  12. .fill 0xC0,0x00
    - c# B6 Q$ D5 b& {; M, r$ n
  13. ;区域结束2 t* U, N% M* i8 H- m, @
  14. .endarea
    : W/ E$ S& d) T# |% Y0 P) S0 {+ _
  15. ;主程序
    8 [7 P6 p) y7 V! O4 H
  16. main:
    + p& v  p) O  d! \2 k6 t
  17. ;设置屏幕模式3,BG2开启( {  @$ d- p* {3 F; v
  18.         mov r0,0x04000000" S4 N0 `! }8 u, h! o
  19.         mov r1,0x0400# r) J; ]7 q+ G' i- S  B) s9 Z
  20.         add r1,r1,0x36 c5 ]& A/ U; K' r
  21.         strh r1,[r0]9 a, T% t* @6 D2 D  Q; H
  22. ;设置VRAM起始地址
    " Z5 \# B9 S( T1 y
  23.         mov r0,0x06000000% b$ w& R' U; j
  24. ;设置图片地址
    ; @# M$ V* N6 q2 A4 l2 H  G" b
  25.         ldr r1,=pic* R3 X0 B, s( W& T' {9 i
  26. ;设置数据长度为0x96001 a; }2 v  c; n* b& @/ D
  27.         mov r2,0x9600
    2 K, p- E; p# @' Y0 x6 r( e
  28. ;传送图片数据到VRAM
    : ~+ R8 _' E4 n1 s( F
  29. loopl:6 z! h& F! _% E$ {8 o$ b. v2 Y: e; s
  30.         ldrh r3,[r1],0x24 B: Q& G. O, t: H- }) R
  31.         strh r3,[r0],0x2
    1 R( y& f+ x/ I; I  D
  32.         subs r2,r2,0x1
    % ]9 g, m' m( i! ]  H3 [
  33.         bne loopl
    - o! x' \3 }9 ~
  34. ;进入死循环! X7 P  h$ C7 K( {
  35. infin:) ?& A2 F+ K4 h2 l  R8 Z2 O
  36.         b infin
    6 x" ?. u5 s; u6 v! H% D
  37. .pool7 q' O. U. z7 Z4 ]% Y+ m+ o' T5 [2 _" ]
  38. ;导入图片二进制数据/ {8 E5 n- [8 p" j
  39. pic:
    1 ?" L7 c7 K/ P5 i3 D# z3 B' \
  40. .incbin "16pic.bin". F* K4 q% b( m5 ^* O! ^
  41. ;在0x08000000地址设置跳转到主程序入口1 h9 [& o/ J* j/ V. O; @- S; ~
  42. .org 0x08000000
    8 d' ?2 c( m) E" c) V9 F
  43.         b main% H9 }- v) g$ [  p3 E' B
  44. ;关闭文件
    & p5 W$ f2 ?) V+ [
  45. .close
    , V2 c' B( o2 V, p3 ~! v
复制代码
9 }' d& N( F0 T: s5 k# f8 |; W
保存!
. }# a0 V* m$ R' P: W" d% M4 [; _& c. {
(5)把16pic.asm和16pic.bin复制到armips目录下
% z5 ~4 G0 ^! m* X5 V3 `$ R
0 h/ G8 f8 ?$ t% z* S9 R5 L(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件* S* q' Z1 [# P) D  y9 V4 ]

; d7 [( A/ b7 w  H(7)用GBA模拟器打开16pic_demo.gba观看效果1 i6 ?6 S% _7 s: i5 j2 A+ h
5 Y) B* K7 |; M0 g( l" }9 }/ B
' r* G/ t; t+ N2 ?3 g: c7 b2 |% B: X( Z
; w) h1 O& c4 R4 B- C
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)1 j; u8 L1 m0 s

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-9-16 21:49 , Processed in 1.071289 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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