EMU618社区

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

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

[复制链接]

签到天数: 1927 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
- S4 H# I  Z+ K8 d  N
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 L, s/ v0 ?7 d

; a4 n# m) B) l! C( b( [% Z: J6 W这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧; f! r9 X1 m% l
! Q% e  v6 f1 j
(一)准备工具:
% B2 i; _" I% B# w# i0 d( f1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
4 k( M+ U# X1 i. k4 b, m9 K* H" r* l
ARMIPS作者是Kingcom
2 A% P: `0 ?3 j* ]4 T7 u/ D1 qARMIPS源代码github页面:https://github.com/Kingcom/armips
7 X# y4 b/ e" S+ k' Y1 Q' l4 wARMIPS Automated builds页面: http://buildbot.orphis.net/armips  i* [( I& l( X  u

4 @6 q7 j* h% ^( R- x2.一个将图片转换为二进制bin文件的工具bimbo 1.3
' O2 ^7 o. G& I2 U$ H8 j
' {4 d+ I! i- c* J, i4 {bimbo 1.3作者是Aleksi Eeben
; y' a5 E/ {) \8 b; }; X( y4 `: C5 Q, M+ T& B' H' T2 n0 W( q
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167# u: N3 ?4 m1 \4 G: Y9 F9 w/ R
, k- `& \- |2 F1 I4 R9 o+ X5 E. W
3.一个windows自带的画图或其他图形编辑工具
3 F3 p" r1 k+ \# ]" w3 f
/ z8 c  i  y: O) G& x/ l4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
' S3 S5 j) r  w) a6 h- h  m4 o7 _! X; K' \; X) p/ J3 y* C
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP  F. x+ l  [) n7 c0 W
/ [" Z- n* l1 O' Q5 f+ b- ^
% n! G5 }: r( X8 r$ C

! f! }# q4 F! D+ O' e(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* Z; f4 e  ]  b+ o3 w* C4 I( _

( Y: I' u9 `$ {' q- N; e" u9 n  B) A1 v( R/ K
( t' d& \* g- m6 w" e2 V
(4)新建一个文本,我起名为16pic.asm,文本内容如下:; a1 g0 _5 P' t: L) `
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000. G% b. e: m% l7 u2 C6 y
  2. .create "16pic_demo.gba",0x08000000
    0 u! Z5 ~- \/ ?$ a. `9 N
  3. ;设置为GBA架构
    + _$ b5 u" G0 G  e0 e5 i% f
  4. .gba
    * f( W" ]$ b8 J$ |- Q
  5. ;设置为ARM模式
    6 K5 o. Y* \7 a8 [
  6. .arm
    2 R1 Z- R; E8 M3 z
  7. ;设置起始地址是0x08000000
    + [4 p- {" S6 v0 H: z  o& B2 b7 O/ ]
  8. .org 0x08000000
    0 m4 f* g! C8 g9 J$ j8 t( {: a8 Q
  9. ;创建长度为0xC0文件头数据区域2 d1 Q* |9 i8 a( i0 p
  10. .area 0xC04 {7 G( I4 a( n8 p* J' _3 i
  11. ;填充文件头数据
    7 n9 U# v/ ^$ a8 t3 P0 {+ r2 z
  12. .fill 0xC0,0x00. `. n3 M8 i+ n5 ^3 K3 P, z0 `
  13. ;区域结束( [8 T4 U2 G- U' _5 V  ?
  14. .endarea) B0 E% M2 c' F
  15. ;主程序0 M9 s9 D6 w" h2 K' W- Y% T
  16. main:
    7 x' j# P2 F" o4 c  ]# T
  17. ;设置屏幕模式3,BG2开启
    3 e4 |0 \. O! J2 ?7 m0 ]
  18.         mov r0,0x040000008 q& c/ @' a) t0 n) k
  19.         mov r1,0x0400
    $ v6 e, T5 V7 H
  20.         add r1,r1,0x30 n2 `- D9 a6 d! b2 y" L9 z2 D
  21.         strh r1,[r0]
    0 d  N" R$ ]( U/ g& X! T
  22. ;设置VRAM起始地址/ \0 k2 A$ A( G+ k( `/ Z' F7 D3 z
  23.         mov r0,0x06000000; |' ~& T; b: K1 n, q
  24. ;设置图片地址# i. q1 r5 M8 F! T
  25.         ldr r1,=pic
    : Q- _- ^  ^! g+ j9 }5 T/ w; E) e
  26. ;设置数据长度为0x9600
    ; ?# M1 X5 h. d. G$ E$ r
  27.         mov r2,0x9600! W2 Y4 v/ s, q8 l7 `, g
  28. ;传送图片数据到VRAM% |: g  r& m8 ]3 Q; Y5 c# g4 v5 ]
  29. loopl:/ Q6 ?0 ]' v! C& _
  30.         ldrh r3,[r1],0x2
    ; l- v9 x& j# m  j0 d: b  ~
  31.         strh r3,[r0],0x2; d' [, i& {1 c
  32.         subs r2,r2,0x1% T/ M3 N% H( n, W
  33.         bne loopl8 b% _/ y4 J. I$ F
  34. ;进入死循环
    ) O9 ~8 e0 b' ?! O; W
  35. infin:
    / t* U( q/ Y3 n& I3 X& M6 u
  36.         b infin# n2 E: v8 D  k4 j) M) h
  37. .pool
    * |, k1 i8 f" ?% {2 j  b0 S( X
  38. ;导入图片二进制数据
    9 x1 Y* e! G$ |+ m8 M* c$ o
  39. pic:
    0 y& j# K7 D: @) _6 b4 r$ w
  40. .incbin "16pic.bin"
    : u0 [4 [# H6 r; ~( f. e
  41. ;在0x08000000地址设置跳转到主程序入口
    ) f7 n5 T. @) N: V
  42. .org 0x08000000
    - H! w7 D9 E8 @: D3 ~
  43.         b main$ c& C9 W8 H; O/ U* U( B
  44. ;关闭文件' f- p8 Y6 B+ Z7 h( c% w* z
  45. .close* Z! D, h  x; _' ]6 l
复制代码

7 H& \* h2 K( k, D+ s保存!
, _4 S2 W* S: A9 h9 B; l. c8 o' `8 Z' D* T/ z8 l
(5)把16pic.asm和16pic.bin复制到armips目录下
6 R( G/ U4 X8 w" |/ H7 }8 ]
% r* V) t5 P, F% G9 C; y6 T(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
& s3 B7 l, Q8 @! z$ n" B, `$ t# k/ c: P( \
(7)用GBA模拟器打开16pic_demo.gba观看效果
0 C6 t7 j8 F8 m" T  u) n4 m' a) [9 ~$ V
5 c4 |  T# y* s" t1 j  g
7 Z/ B1 b1 c. x" `/ F3 E
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
( C0 d0 a* p$ G% M/ \5 v

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-4-22 07:46 , Processed in 1.105469 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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