EMU618社区

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

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

[复制链接]

签到天数: 2073 天

[LV.Master]伴坛终老

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

7 r/ M4 x3 [$ a8 w: k9 W3 X" y当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档2 w1 X: D7 D" v% h$ O9 E' {2 I

- h0 {& p  |& R6 d% ]& ?这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧  M6 Q1 i/ Z0 u# b& s3 H
$ z9 z9 }- Y2 c! R3 b$ u$ V
(一)准备工具:
5 ]' J/ D: r) [" o' S- E, B1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例: p2 x" @6 H0 f
- y% |8 a1 p  g7 o
ARMIPS作者是Kingcom
  H2 v2 a& Y8 U7 s7 {ARMIPS源代码github页面:https://github.com/Kingcom/armips3 u3 `1 n$ V' k- x
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
0 f  [/ g1 s! z" P/ t' G7 z
& d- ~7 ^& q; N! X) Q2.一个将图片转换为二进制bin文件的工具bimbo 1.3
1 A- s+ E, A3 k/ y. G$ t8 [% J* i7 ]: y1 ]7 Z( @7 I
bimbo 1.3作者是Aleksi Eeben
+ D$ b: r* d. k6 j) A- ]
8 y2 }4 t4 K2 N$ r0 Abimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
* G: o* J7 I2 U% g
- L% K+ a9 E/ w* {3.一个windows自带的画图或其他图形编辑工具
, u9 M: v3 z4 |/ m9 H. g/ T- B
' W+ g" H; T1 ]9 C4 w4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
& I% i9 ~0 _: |& B7 K8 T4 s% V4 u% G4 e. u5 C7 ]8 q
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
9 U+ J% b. X7 d# o' \# m  {
! N, F. g- K7 u3 H) ?
& O- z/ n* C) D. _, F
7 t; d# b" f/ u- T7 W8 Q(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
3 w7 }' P; b2 ]8 y# C# }, U
6 Z+ H; ]% i- N0 V3 Y4 C5 m$ w
( t" B% t$ k+ [& V1 v4 x5 J8 u+ u# t1 Q4 P; Y
$ ~. O5 c$ @( b/ {/ m& B' J(4)新建一个文本,我起名为16pic.asm,文本内容如下:
, L8 o1 V8 |5 T% @% d) k
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    9 q3 c+ @# z( a. T2 |0 U& W3 q# T4 v% |& j
  2. .create "16pic_demo.gba",0x08000000
    6 p$ ?8 h% O. i6 a. A0 g; J6 h4 X
  3. ;设置为GBA架构
    6 ?9 t' P1 e! ^
  4. .gba' V. \& E( |( f* Y, J/ ~: w
  5. ;设置为ARM模式
    ( M1 p( F# c6 z4 y0 c$ ^
  6. .arm) t5 @- v# ^1 v2 w
  7. ;设置起始地址是0x08000000
    & U( g# I4 V. A$ l/ U  r
  8. .org 0x08000000. I  c& Y) J3 Q3 ~) d- y, \
  9. ;创建长度为0xC0文件头数据区域* n  T4 n; k, b; A0 D/ A: p5 A; b
  10. .area 0xC0' S+ F2 c5 }- @3 J
  11. ;填充文件头数据
    - F8 I4 t% [6 U& O2 l0 ?( v8 U
  12. .fill 0xC0,0x006 i4 S; D/ ^: O9 r
  13. ;区域结束
    + T$ i% v8 Y' `! s4 T7 \$ z; |0 F
  14. .endarea
    1 H- P4 I, j+ x, z  _
  15. ;主程序. g( U2 {5 L) q. U) q
  16. main:
    & E# r! h# S4 n% q* r! m' }2 [$ p
  17. ;设置屏幕模式3,BG2开启
    & J5 x9 T- s( v' V/ H) w& p  b
  18.         mov r0,0x04000000$ F, _% R3 f. n3 c+ f5 z" p5 U1 J
  19.         mov r1,0x0400
    ( v- W9 }- B; p, ~
  20.         add r1,r1,0x3$ g1 C; i* U1 A8 b% ~
  21.         strh r1,[r0]
    + Z% T8 Y- f, e1 n; T
  22. ;设置VRAM起始地址& Q+ B4 t+ f* }( y6 W
  23.         mov r0,0x06000000
    ! [! h9 @( }" m5 Z! g  f
  24. ;设置图片地址- ^8 S& o, ^6 j" p% U7 i- V
  25.         ldr r1,=pic8 T5 u7 x$ M) E  [( \" P) b
  26. ;设置数据长度为0x9600
    . l6 X7 H+ `$ b  H, C8 L  N
  27.         mov r2,0x9600
    1 d3 q# y3 |1 I$ C
  28. ;传送图片数据到VRAM0 G4 X6 m+ Z( m
  29. loopl:
    / S9 y3 j8 e* c& e
  30.         ldrh r3,[r1],0x2
    ; y2 C3 d; C: a. `
  31.         strh r3,[r0],0x2
    7 f$ a$ }2 _: w% t* ?
  32.         subs r2,r2,0x1
    . y/ ]/ H3 D" a- X
  33.         bne loopl
    + K8 \" m# R0 ^* \! Q' u
  34. ;进入死循环
    $ X6 |5 p8 R: y0 N5 G
  35. infin:/ V+ B/ E# y+ W" [7 U: z
  36.         b infin
    % C8 Y  k0 a- `9 p
  37. .pool
    . L4 L. J- _  j0 l
  38. ;导入图片二进制数据
    + }9 L9 H9 k' u& Q
  39. pic:5 w6 ~! N  I6 z& Y, c6 Q; [
  40. .incbin "16pic.bin"
    * s& t7 X  A/ k  ^( E8 ~* ]
  41. ;在0x08000000地址设置跳转到主程序入口
    ! q: ~9 F& x1 Q. s
  42. .org 0x08000000  O1 Q) w0 Q) W
  43.         b main, O% Z+ s  B$ h+ g
  44. ;关闭文件5 t  n7 t" e- a! n* q
  45. .close. e: C8 {- y2 j7 e' A7 m
复制代码
3 {" }4 n$ t7 f5 a8 m  F* q+ A* [
保存!" p" u# a- R! P$ ^

. e# d  ^. y3 _) i(5)把16pic.asm和16pic.bin复制到armips目录下5 z# j2 s# z$ J& b- ~7 H) D

  e' |7 U/ k7 P* D(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件7 ~8 R7 ^3 ]: n0 E
6 y: y2 |) C; S
(7)用GBA模拟器打开16pic_demo.gba观看效果
0 o5 f/ e* N" ?' y  o/ S4 N% q1 T. j/ l! b2 }" O/ ?" f: Y

9 {* m7 \/ e( P: F9 K- L* G0 @- f
0 s; \+ l0 f( F$ m& ^1 g! p关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)( w: M& o4 w. D7 Y% X

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-9-17 17:36 , Processed in 1.062500 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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