EMU618社区

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

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

[复制链接]

签到天数: 1867 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
& X/ T0 x$ x- j7 l
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
$ i* w; e" \( ~! C* R! O  x; L
  n! M; h4 z  ^+ h这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
, y7 Q9 |+ H6 [$ q5 c8 q" w+ r" ]! r7 t0 a9 L
(一)准备工具:
" g+ W4 g0 n- @# ~4 Z5 h1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
  b$ ?& |, |# h& L# J; h5 B) {# s+ y% S  [6 l0 x- E
ARMIPS作者是Kingcom& F$ j* W0 M" a: i1 y! L) n0 S
ARMIPS源代码github页面:https://github.com/Kingcom/armips
3 o* u2 e, s  w- ZARMIPS Automated builds页面: http://buildbot.orphis.net/armips
7 ^, r: b, z- z7 U% u( n2 J. ]2 E  E+ W
2.一个将图片转换为二进制bin文件的工具bimbo 1.32 _/ v$ [. c0 b

9 e- h+ q3 |1 D4 W$ c7 A: qbimbo 1.3作者是Aleksi Eeben
$ Y. N4 \/ t6 _
$ R" d3 J; G0 d& X8 P" Fbimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167' W( I# N. G# H" J) w7 f3 m
! X* r) l: }) _* H
3.一个windows自带的画图或其他图形编辑工具
7 j: U! n6 T5 }( m+ L* N" i0 `9 }$ l4 \3 E0 \
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)- X3 k+ w4 B0 O4 m! D) }

7 L% V, A5 E, P1 |(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
! [2 I9 {! Y" p# P% s. t$ |* _# g9 d9 ?2 \! H- I$ a7 }, b

7 o9 n! G: w" P# N7 k
4 B1 e& k3 d; U7 v; `(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin: D& E$ J1 ]$ G# @9 g

8 E+ t0 Z$ v1 {3 @/ N
3 T3 c0 N% t' W% E; G: Q8 W/ s; K2 Q% l+ a8 t& D
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
9 U5 A, m9 u- ?& C1 v% @
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000
    7 W0 J4 |& @0 R- @, L; Q
  2. .create "16pic_demo.gba",0x08000000  E9 M8 ~! Z1 |( s# r# S( u
  3. ;设置为GBA架构+ S2 X. X: \' _- l
  4. .gba; ]. q6 l4 N; H$ n0 o" h& q" r
  5. ;设置为ARM模式3 T2 u  G$ j7 p: j5 [+ t5 ^1 h
  6. .arm! Z8 a! ~% b- z! A
  7. ;设置起始地址是0x08000000
    0 U( A! \/ a9 F( g) d/ ]
  8. .org 0x08000000
    / Q+ y/ ^/ S+ o* P% E+ R1 u( w  l% X
  9. ;创建长度为0xC0文件头数据区域
    5 m5 F9 C2 x; R4 _
  10. .area 0xC06 U' V* g3 Q# y$ \
  11. ;填充文件头数据
    & T* ^  p# M5 _/ X- t
  12. .fill 0xC0,0x00& ~8 C5 s* Z" e  m
  13. ;区域结束' I3 H2 e& Q/ I7 \
  14. .endarea# v" B" _  i4 {7 M0 I$ J( M. C6 U5 W% }- O
  15. ;主程序
    & j, R4 y5 M: I0 A7 d8 b7 _8 ~
  16. main:
    . @" t$ I! s# l* ~6 b: x
  17. ;设置屏幕模式3,BG2开启: w! P+ r1 X% Y
  18.         mov r0,0x04000000: U$ \* w" `7 {( ~" m
  19.         mov r1,0x04006 X5 K$ M( ?! ?# X8 R& Z1 h
  20.         add r1,r1,0x3
    , L& m; V8 \, d4 R( U+ H: F/ y
  21.         strh r1,[r0]7 l" ?2 C& @- B2 E+ _$ w
  22. ;设置VRAM起始地址
    " G# U, W" Q9 x; c1 W5 ]2 _. P
  23.         mov r0,0x06000000; V; ~0 [! z2 m/ P" f: c3 o( B
  24. ;设置图片地址' T+ h. N: d& t$ a8 W  E- F
  25.         ldr r1,=pic  U5 n* }7 K6 U$ ]% C
  26. ;设置数据长度为0x9600
      Z+ a, S" M+ C4 D& V9 f
  27.         mov r2,0x96004 g7 a# z! g! s) y
  28. ;传送图片数据到VRAM
    ! L( g( e% {, N$ s7 v5 P+ u8 _% c& `5 S2 p
  29. loopl:8 s5 r* |1 U+ n7 w# b
  30.         ldrh r3,[r1],0x2
    ; a+ T& m. Q- {& x) y% a& m
  31.         strh r3,[r0],0x2! L9 x1 U1 K" Y# N% x& t
  32.         subs r2,r2,0x1
    * z4 L) i6 G1 ?6 g+ \! `
  33.         bne loopl6 N: m) O: I2 r5 j! a  M
  34. ;进入死循环
    2 b5 A& c  x* q  Z& M; v
  35. infin:
    9 u. ]# n6 S  g4 H( }! P
  36.         b infin
    : j* G) B8 V6 G* ]9 B9 O
  37. .pool8 P% {8 P! V$ W7 H" p8 R2 m
  38. ;导入图片二进制数据
    , Z3 c4 G) @; t1 A
  39. pic:
    6 j7 P' w# O- r9 E
  40. .incbin "16pic.bin"* z- @& D  D0 N, x
  41. ;在0x08000000地址设置跳转到主程序入口+ h: {# [1 O  ^5 }
  42. .org 0x080000003 t( s0 A  F8 H
  43.         b main) l/ d# s# Y1 ^& S  ^+ w
  44. ;关闭文件4 b. N# B" N. c* e6 l
  45. .close
    , r: Q$ t8 x. r9 L  j2 k( c2 f
复制代码
! }2 L; J, D% n4 o
保存!
3 L* p" U. H. H7 V: D% {+ ~) i9 |# W
(5)把16pic.asm和16pic.bin复制到armips目录下% G3 b. B2 X; J" G- f. I
1 l: n0 b: }# D) H* Y5 _9 H4 G
(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件( ^( _* U. P' w  F
8 H# q0 f) l# g) @) ?- _
(7)用GBA模拟器打开16pic_demo.gba观看效果
: w$ ~+ V5 t. W8 g
; x0 \5 h' U" J
! L1 G) J& E4 n! f: @# `
  V9 `. ]0 m& g  v1 a- r关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
# Y3 P9 h: C( M: K0 ~  s4 q+ ?

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-2-21 03:24 , Processed in 1.096680 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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