EMU618社区

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

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

[复制链接]

签到天数: 1973 天

[LV.Master]伴坛终老

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

/ H# Z& a7 d5 k& _/ _! G) @: z当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
. [. k) W  a+ |' c! }  e8 o- `- p" i* @# A* v4 W* @. Q
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧# v0 J6 l. X/ u8 b% g# y

: E# |7 t  ]' h% U' v' s( O$ K' S(一)准备工具:
, q% s% w9 `2 N5 q* J0 m1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
8 b- c# @  x; O% S- M! a
  f9 `. x0 c; _ARMIPS作者是Kingcom5 }. ]) q: Q* D( f! o
ARMIPS源代码github页面:https://github.com/Kingcom/armips3 t" f; w! ]: E* m6 }6 S& W& d
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
. ?- L# W% n# }% z. L8 L5 Y
5 \; o9 k4 r# o7 j2.一个将图片转换为二进制bin文件的工具bimbo 1.3
( H; H1 ~3 p# m" a. E7 C' U( O3 R% H
bimbo 1.3作者是Aleksi Eeben7 `, y6 t% W& Y) ~* D

1 U& ]' `4 C* R$ r- v* rbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=1670 x) N7 T9 L! y" K$ c  i/ A

+ H* j* b, {! Q/ o; m  w9 ^3.一个windows自带的画图或其他图形编辑工具; x/ g2 w4 f7 r, `
8 g. z2 t: ^; a: \" G9 J- c
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)( A. U- ^, u. f+ J, f

2 ^3 t+ a: R' a, @/ c! ~(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
7 {! P/ {0 X, C7 l, i2 b9 G# j1 M+ U& h

( O9 A! M  f9 x8 G4 Z% w( ^4 E# n( ?. W/ _0 o& k0 I) Q
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
7 h, N' f: Q$ T7 L- r) u* t) a" V
# }$ ~, E* F0 r1 A$ u" u. x, E: V5 Y4 j) Z3 ?& @- ]- v2 [

4 q% h3 N& n; @4 b2 N8 I7 X(4)新建一个文本,我起名为16pic.asm,文本内容如下:: C* F5 t* }0 c) R
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    ! K9 B. J% d$ v& u
  2. .create "16pic_demo.gba",0x08000000
    % C: @) e: r; t8 s: x. O
  3. ;设置为GBA架构
    : j2 W& B4 }9 |7 t0 I2 F
  4. .gba: J. i+ F0 p+ O; }: r* O3 {+ n* v
  5. ;设置为ARM模式
    3 g! s- J5 D6 N4 y1 Y$ }: h
  6. .arm
    & {% I* O/ A5 m% K- s9 L2 w- D
  7. ;设置起始地址是0x08000000
      d0 _7 P; @  ~6 N% o
  8. .org 0x08000000
    4 y" X* {% V# Z2 z' K2 r0 a
  9. ;创建长度为0xC0文件头数据区域5 K( t  S, `7 Y+ }( I
  10. .area 0xC0
    0 h- i8 u9 q3 v4 c3 [
  11. ;填充文件头数据
    $ A$ z( x! y& v6 a
  12. .fill 0xC0,0x00
    ; M7 x$ U1 k2 A$ a$ {( q: \
  13. ;区域结束
    8 U# F1 @% A& u1 f* A& E
  14. .endarea! d6 H- a2 f  U- _) Y8 N- c$ K
  15. ;主程序6 y0 Y6 Q/ w( o  \& |& {
  16. main:
    9 @( c7 c) s3 G" v; B* P% a
  17. ;设置屏幕模式3,BG2开启, K% I5 X" d1 K: A$ g8 }. i8 H
  18.         mov r0,0x04000000
    ( t. y! v/ U# B* j; y9 F
  19.         mov r1,0x0400
    * A0 {! `9 G1 `( J+ J; P
  20.         add r1,r1,0x3
    : a$ x+ u" `' x, ^
  21.         strh r1,[r0]
    # E4 W; Q9 z' ~( t/ n
  22. ;设置VRAM起始地址- z! p+ v- [3 m$ S
  23.         mov r0,0x060000000 e# z: d) v: t. R$ n
  24. ;设置图片地址
    5 j8 I+ f) Z) l7 W
  25.         ldr r1,=pic1 y2 T% O1 H  |2 J/ D  r/ J
  26. ;设置数据长度为0x9600
    : E9 y/ c1 E' {  k; u
  27.         mov r2,0x9600% E3 @3 B9 o! ?2 B1 u& E" \
  28. ;传送图片数据到VRAM4 Y5 e9 Q8 A, z! P- i
  29. loopl:
    6 W/ v$ l# ~+ Z1 b" c! L
  30.         ldrh r3,[r1],0x2
    8 ~' b' o& x1 U2 O
  31.         strh r3,[r0],0x2' U) A: l0 j4 [/ }' N; D  s$ n. c
  32.         subs r2,r2,0x1, }! _7 G5 O! M3 b, ~8 q! j
  33.         bne loopl3 J. H/ {7 U  {  C+ v  |9 Y" s9 C' X8 l
  34. ;进入死循环
    ; M, o- e( I+ f5 s+ Y" V
  35. infin:
      L8 A1 o' D+ W/ Q4 _4 _& a* G
  36.         b infin, N1 M. J: v2 A7 a0 b" b( _; E4 L
  37. .pool
    - v/ X7 r8 x6 z! m, U- s8 k0 U8 g
  38. ;导入图片二进制数据0 ]7 d: x9 l' U; [( w8 l2 e4 `. {
  39. pic:! Q$ y& ^9 `) Q! E0 c! N) o3 n; ?9 c' T9 F& h
  40. .incbin "16pic.bin"1 Z3 x6 X( P# p$ C
  41. ;在0x08000000地址设置跳转到主程序入口
    ' S% ^9 Q  ]6 z) [$ _% Z
  42. .org 0x080000004 g5 ?0 P' q& m- V- g9 W
  43.         b main
    . `' t4 b/ p/ `
  44. ;关闭文件
    , P" n9 m2 Y' V
  45. .close
    ' ~2 c+ @# D+ F  a6 B! p! E9 u
复制代码

& C9 o: }7 h6 n0 t# u+ P( _保存!5 d. f! t# B+ b" x

! i+ v% ~) F+ O4 A: W0 }3 b(5)把16pic.asm和16pic.bin复制到armips目录下
& Y& d  i0 z, Z5 e- i8 B+ c) t# }% s* Z! [
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
3 [/ L. ~& C6 x3 [& l' F3 M4 [0 A3 j% {
(7)用GBA模拟器打开16pic_demo.gba观看效果
; n( S8 H) Z1 _2 [$ s5 i* Z9 h+ n6 V8 e. x/ k9 A9 M
9 F" n9 j8 i/ O: k
- V/ h  X/ Z( [
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
: k6 V/ H, W4 |9 W6 l

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-9 06:54 , Processed in 1.093750 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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