EMU618社区

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

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

[复制链接]

签到天数: 2152 天

[LV.Master]伴坛终老

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

( L5 Z  e: D" C- L# Y2 L: H当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
0 b  K% `3 r+ h- D" [* v+ `$ G, J3 g$ }9 v9 }/ k. y0 i
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
+ f- ^% o3 g& n" g: o
. B+ Z: Z$ q1 P5 i# t, W3 [: ]$ P4 R$ R(一)准备工具:& O8 _  w; n$ D- j2 V" A
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例& D( F. Z8 G' {7 r2 f' ?' t
8 ]; [$ X+ `- ~6 w3 @9 ^( [
ARMIPS作者是Kingcom
+ e/ b! n+ ~& `/ R: }$ xARMIPS源代码github页面:https://github.com/Kingcom/armips
- o; t, Z3 v$ [- ^# ~! I0 iARMIPS Automated builds页面: http://buildbot.orphis.net/armips4 \% ?/ N: z0 n! \. E

2 O7 b: r' ~" ]7 \. X2.一个将图片转换为二进制bin文件的工具bimbo 1.30 `/ G" S' q) I) w
( F1 T7 m1 l8 S% Z& W/ c+ J
bimbo 1.3作者是Aleksi Eeben# y& c: W# \0 k7 `& g$ M' O

+ T7 D" F$ H9 m! H* b0 Sbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
3 G$ z1 e) |+ c3 a4 {
+ z; E* d$ j! {$ V( j7 n9 |6 s, m3.一个windows自带的画图或其他图形编辑工具3 B) ~4 V* F) b4 C+ u
( ?9 i% X' I" |! h  T
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
, V+ }+ Q/ Y# v
6 y" h5 S) K# A(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP4 K8 Z1 U1 M: }0 g1 x2 G, j6 `
9 g; V8 l( [( b, Y' h4 I0 v2 W& D

! n- _  m+ d% M' R& y; t: X. S
, X  d- b4 @8 w2 e+ A8 Z+ x% b(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
/ J* L& h9 s9 E8 q: ?
# }4 @4 U' k9 Y" Y* F0 }5 J
2 a! U; X: i8 c/ O+ A- Q" i; t
. Q, T8 N' \* L- M& J3 j; [(4)新建一个文本,我起名为16pic.asm,文本内容如下:2 D8 {( ]# X/ }, p  V' u( H' U/ R
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000  v. @7 |, Q& ~  c5 J3 ^
  2. .create "16pic_demo.gba",0x080000000 Z$ ]( I  `0 A  v
  3. ;设置为GBA架构
      Q# n% o0 p8 C% z9 `. J
  4. .gba
    6 `8 r( \+ ?; Z& ?% R; v' n
  5. ;设置为ARM模式8 p) Q* a$ F) z1 l2 D$ U/ _) h
  6. .arm
    6 z; Y' I2 H% s' }- G1 z
  7. ;设置起始地址是0x080000001 y/ s( r: P( a: ]
  8. .org 0x08000000
    " q. ~7 H+ }" |  h; J$ ~
  9. ;创建长度为0xC0文件头数据区域3 O) q+ ]( @" q7 @* c
  10. .area 0xC04 r6 M% `4 [5 J& g) F/ Q
  11. ;填充文件头数据4 F1 q4 M& b/ q: C4 h# D
  12. .fill 0xC0,0x00! F$ P0 |. {5 b. T9 @/ h  h
  13. ;区域结束- f7 Y2 J* j# U9 d
  14. .endarea
    4 }8 M! y) ?. c5 L4 n6 E
  15. ;主程序
    ) L* m' Q* I4 J
  16. main:4 _- z( E4 Y" ^* S
  17. ;设置屏幕模式3,BG2开启
    3 I0 g+ D7 Z0 N! ~$ t( ]6 A. J4 l8 y( l
  18.         mov r0,0x04000000" n2 p2 W7 @7 n% p
  19.         mov r1,0x0400
    ( y; r2 \/ T/ }% U1 i; A4 c
  20.         add r1,r1,0x3
    5 P4 }* a8 W5 t1 h8 R( k0 ?/ E
  21.         strh r1,[r0]$ R, f+ G. v' }2 r  [0 P  a
  22. ;设置VRAM起始地址
    7 d+ u, X' F- U7 N+ K9 F, d2 p
  23.         mov r0,0x06000000
    # q3 z% r, l6 O& k5 V  ^, w$ @
  24. ;设置图片地址' H) T1 M5 U" b
  25.         ldr r1,=pic3 L+ e: `7 c9 D/ _
  26. ;设置数据长度为0x9600
    . T2 G* ]. p; S6 f
  27.         mov r2,0x9600
    3 H& k' a- u3 @5 O* l
  28. ;传送图片数据到VRAM# g8 Q3 j; Y# `+ r" }9 V
  29. loopl:; t1 B3 r/ J2 ?+ _* Y
  30.         ldrh r3,[r1],0x23 ^* ?, U4 u# E
  31.         strh r3,[r0],0x2
    , H1 x9 {! j. f* r5 E  S$ V8 v8 X
  32.         subs r2,r2,0x14 Z7 P# G- _& u8 r5 i" U2 S
  33.         bne loopl2 [! j# W3 M' w) D9 L
  34. ;进入死循环
    5 r1 l& N/ h) `( o! c) u0 k
  35. infin:
    : o/ X8 t1 r6 O8 }; y* X, F# N
  36.         b infin* e/ g" V! E5 Q4 y
  37. .pool# B9 M6 [" W9 [6 z- h+ t
  38. ;导入图片二进制数据  ]! u3 o; z: m) r
  39. pic:
    5 M* a% K$ Q& U" Y- T) n- O
  40. .incbin "16pic.bin"
    ; d2 [: `, ^$ G, I5 }
  41. ;在0x08000000地址设置跳转到主程序入口1 C: k, K, N3 L& |, |/ c, A
  42. .org 0x08000000
    / W- j( a" o% F  i% `+ c9 ]1 Y
  43.         b main
    : ~3 ]" \4 L" |% `: t6 b  g
  44. ;关闭文件
    , F& Y0 }* k9 J) J% @) Y9 l
  45. .close4 t) m/ F8 R: c
复制代码
! @. v  x1 j+ {, W" i- X& E' D
保存!! d2 J6 d# t# Y5 b) S! K
" u/ P4 o+ Q# c4 y. w
(5)把16pic.asm和16pic.bin复制到armips目录下  z) ?/ H" H2 r6 s5 s

5 P; B2 {6 E0 P5 v: }+ T(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件4 L8 U1 y9 \% a; w: C  m

9 Y* O7 x9 s$ k2 p) a/ T(7)用GBA模拟器打开16pic_demo.gba观看效果3 l! X8 W/ H8 m/ o9 W

8 _# u; m, r. ]+ r" [/ Y; S
8 ?1 X  e3 r5 J
% h, i, r( r! g  f关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
4 x9 H: U8 a+ t+ `( J1 H

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-12-6 08:16 , Processed in 1.073243 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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