EMU618社区

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

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

[复制链接]

签到天数: 1804 天

[LV.Master]伴坛终老

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

6 h. |: A* M* i当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档3 y% S/ M) M) F; E) `

% {% k- k! ^9 H这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧. c0 l  o' Q8 X+ Y# n
% ]& h+ z' Q/ Z( {( B  p
(一)准备工具:) n( r; U) _( J& v+ z
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
+ h. |2 O" B+ v% ]: M+ X3 B9 X( G# I& S; W* c9 p0 [
ARMIPS作者是Kingcom) }1 d6 [: y& T6 J  [. f
ARMIPS源代码github页面:https://github.com/Kingcom/armips+ f6 w" S! O6 H: g' `5 P# w
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips: r; r4 i! C- o8 @  D2 h2 c, w  y

/ Z' I: \7 K1 V+ {" B- e* ~2.一个将图片转换为二进制bin文件的工具bimbo 1.3
! v5 z, h+ H( t  |/ h+ M/ q8 J
. I" H$ [5 h, L) W* Kbimbo 1.3作者是Aleksi Eeben: w; \4 u) |0 b' o$ P
. D+ y" z2 K* @8 G% ]
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
& N* x2 }# g: q
9 s0 _& v- s/ C" ~. ]# [4 h$ ?3.一个windows自带的画图或其他图形编辑工具
! g; e* L! X; C% H% @4 ^% z/ D; v/ {' W
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)3 X! V& `7 ~! r% k

' d. H$ |7 T5 U! o: C6 V(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
5 y3 W: X3 E& y+ p* u1 A' _, Q+ O2 _, U
) a3 R' s: k/ T1 I" A* x5 c

9 K. q5 d) ^. r, p! H& h; E(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin: g3 V# p. T7 [& Y% S8 S

0 M8 J3 y( C9 Z: [; P
. g  u' F; \5 C
; N6 O1 u, u2 D( D5 R* Q2 G' O(4)新建一个文本,我起名为16pic.asm,文本内容如下:
: _8 `( w+ u! ^; I* ~- O! X
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000) Z4 t$ c+ Y* e
  2. .create "16pic_demo.gba",0x08000000
    , l5 J5 L5 G4 ^- L" q$ A6 V( X
  3. ;设置为GBA架构/ y- W+ u7 F/ L7 A( A  u
  4. .gba
    * \( ]/ D) c4 [. T/ V. o
  5. ;设置为ARM模式
    3 Z5 A2 `& _5 y& L2 c
  6. .arm' N: }" ~/ ?# ?7 v+ b1 y' X5 Q5 ~
  7. ;设置起始地址是0x08000000" ]! d- L# L' L: N
  8. .org 0x08000000
    . P) g: a7 z3 _8 H" M8 [
  9. ;创建长度为0xC0文件头数据区域
    $ Q. p3 w, U$ E, H
  10. .area 0xC0, P- a* p0 j  S$ z% G6 i  U
  11. ;填充文件头数据
    6 [1 B3 T9 M( R0 G7 Y5 l: i
  12. .fill 0xC0,0x00
      y1 o8 A8 Z! R2 C" @
  13. ;区域结束5 k; g6 X8 s2 h  B
  14. .endarea, a2 q: Q/ K: }# |4 g
  15. ;主程序
    ) G% q7 \9 F% c; t
  16. main:4 ^3 Y# w! m' g' g, [1 ^& T8 }
  17. ;设置屏幕模式3,BG2开启
    # g5 r+ B# l/ z; c/ ]
  18.         mov r0,0x04000000
    ; P! T9 T: t2 n( Z$ w( P+ S# b6 g% \
  19.         mov r1,0x04002 t. O  ?1 K' `
  20.         add r1,r1,0x36 ?. l0 l. a' ~1 [+ V3 V
  21.         strh r1,[r0]" j- c2 B- a9 B; }& t, c* E
  22. ;设置VRAM起始地址
    / B& b1 W& W" z! }4 k
  23.         mov r0,0x06000000. f& j2 @" v# I) D3 e
  24. ;设置图片地址
    ; S. B3 b# S0 j* x; w  \' ]' R) J6 [
  25.         ldr r1,=pic
    4 C0 z: h5 k1 ]( n
  26. ;设置数据长度为0x9600  O+ Z$ o- _: C5 n9 q! g
  27.         mov r2,0x9600/ h  @( b$ {- P# ~& e: n6 w, x
  28. ;传送图片数据到VRAM
    * W4 v$ P2 N# ^" S7 ~. J/ t
  29. loopl:
    & t  N8 T' P7 b6 E: x2 s5 _9 Y
  30.         ldrh r3,[r1],0x2
    1 r0 U# ]: j4 G- ?0 z! M1 p; u
  31.         strh r3,[r0],0x2
    ; m; J1 E% ]% v4 ~- `4 g
  32.         subs r2,r2,0x1( N% q) N! v9 e( C$ F: y8 a7 N0 O
  33.         bne loopl. z- q. X( U/ A8 ^
  34. ;进入死循环: [3 ~$ e/ d0 Z0 k. b! ?
  35. infin:
    $ i2 k' }  A' @3 h8 |4 F" b
  36.         b infin
    1 z% E: M( r$ S/ `& W: l5 V
  37. .pool* I7 j9 v  f8 M8 U( L
  38. ;导入图片二进制数据$ q* x1 O" \( t/ N. [# g
  39. pic:  w6 `/ }! g; [$ }0 J3 I$ Q
  40. .incbin "16pic.bin"
    8 q' I& [: f' F! _% ?# p6 z4 M
  41. ;在0x08000000地址设置跳转到主程序入口
      b* n- k6 m& r3 T
  42. .org 0x080000000 v1 \/ _9 g8 e- D+ K6 ~# k
  43.         b main
    " m$ k1 @! {$ I% F/ [% D
  44. ;关闭文件1 ?: \* d! g  H4 G( X. I( v* e
  45. .close
    1 R7 l6 C2 U8 [5 G& q6 K1 h
复制代码

: \) L; r: h5 o8 {! n8 E7 y1 ]保存!
5 n) P9 M- e8 y* O8 G0 @4 M& c( ~7 [  Z% {4 p
(5)把16pic.asm和16pic.bin复制到armips目录下+ Q6 D" G0 d. U" z
( _5 h/ N( s) J* V* D# E3 q
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
3 r, [  i3 c' e* T5 W
; j/ W% [; |5 b; P  u* g3 x(7)用GBA模拟器打开16pic_demo.gba观看效果$ l4 C' o$ P1 b9 `9 R

3 O( }* k2 ]# c7 H$ g
  u5 I' L$ h) i: O
) L) S) j! T) B关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)/ @; p1 p% c, r+ u

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-12-20 01:56 , Processed in 1.178711 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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