EMU618社区

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

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

[复制链接]

签到天数: 2190 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
: E* @( f& j1 ^& S$ c
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档* j0 Q3 f( A9 w
% Q/ h$ ^+ W& M1 ?# @# Q! J$ e
这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 A! A: R. X) H: S8 ^2 C& ]9 {4 |- Q. c0 l/ B
(一)准备工具:
# U. E' j' I* N- X1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例: F. u$ Q: U- s7 x  y" |

  w' k# r+ U4 y- oARMIPS作者是Kingcom3 w4 d) }: I2 P5 f/ C
ARMIPS源代码github页面:https://github.com/Kingcom/armips
: T  m) a. @- Z% l; ^ARMIPS Automated builds页面: http://buildbot.orphis.net/armips' |0 Z+ k9 C5 y% P) X
  w6 Y3 Z- V5 R
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
* u: R4 d3 y$ |& c/ |: [4 {, F; c9 b( |" f# b0 h4 A) }+ E
bimbo 1.3作者是Aleksi Eeben
3 U. v9 i6 C% l' b# r
: h, X6 b5 _5 O4 t) T0 x2 y* a, Obimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167/ F$ k2 F4 b, {: _4 K. T$ b8 B

: T$ j8 Y4 M8 _4 M/ X* t& V8 N& O8 Y/ r3.一个windows自带的画图或其他图形编辑工具6 i! a& V4 Q3 B* R9 M$ ]; F0 Z

/ n2 V# C9 ^: Z4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3), k, O, d, @4 ^
4 M. Y. f; ~6 \! G1 {
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
2 u+ X' k* o5 S/ }% v" n0 E, U3 j  p. f+ w
! Y1 l6 W5 i, w8 ?& ]: y! X" j, u$ x

8 \6 r1 b7 y( q& e( z(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin  F" B! ?/ g& Q; r! e% ]" F0 ]1 I

5 K5 K$ {! w7 \  w; x: l6 U
2 W4 |) C, Z% p2 R0 F
6 H3 J8 ^0 w5 P& b(4)新建一个文本,我起名为16pic.asm,文本内容如下:
. H- @5 M/ [1 {; U! x
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000005 Z/ {$ b7 ]( ^. ^& }
  2. .create "16pic_demo.gba",0x08000000
    % v1 K/ y. h3 v
  3. ;设置为GBA架构
      X9 F# W; D8 @( E, Y/ H- l
  4. .gba
    , N) ?/ e2 C' w$ L. h) J5 A
  5. ;设置为ARM模式
    7 v; a, g) C# {% F/ T: L
  6. .arm& s; Q& g- ~6 _" h) [# \
  7. ;设置起始地址是0x08000000
    ' i+ m3 n# z" m5 |
  8. .org 0x08000000
    ! C9 l8 q+ j' z
  9. ;创建长度为0xC0文件头数据区域% M( ~. ~& j0 r) T9 R  _
  10. .area 0xC0+ I9 |9 b; y0 G8 V6 e
  11. ;填充文件头数据- [8 p7 A# S) E' }( [
  12. .fill 0xC0,0x004 j( x( f  n$ W3 P  B& o& Q4 H
  13. ;区域结束
    2 [8 z8 _# r3 x# ]9 `6 ]8 Y
  14. .endarea
    ' k) {; q; H9 `) X5 M$ I
  15. ;主程序
    * q9 ~+ y; J: o
  16. main:2 P: {4 W2 h7 v4 J, g0 m
  17. ;设置屏幕模式3,BG2开启
    / h! m# U2 L: b, s4 K+ v9 o
  18.         mov r0,0x04000000# ^1 D' c( f( E* R, D* D) I
  19.         mov r1,0x0400
    5 H/ M' a( a3 m& ^" m/ o6 T# [' M
  20.         add r1,r1,0x37 s: C; @2 C( Z3 h
  21.         strh r1,[r0]
    4 [5 j2 {. M$ z! O* a
  22. ;设置VRAM起始地址
    1 V) i" x' e. i# j- \; R1 _
  23.         mov r0,0x06000000- V; P6 g- Q1 o- S: w4 U& J
  24. ;设置图片地址
    $ w; g; Z! g% @) ]7 q
  25.         ldr r1,=pic% m$ Q- {1 Z; G1 {2 L, C8 n7 V6 {
  26. ;设置数据长度为0x9600  M2 C, G1 Z; W0 L1 z$ |- v
  27.         mov r2,0x96000 [& _8 y3 w" j  @
  28. ;传送图片数据到VRAM
    9 m7 U$ U2 Q7 s' d% m
  29. loopl:
    8 |5 x6 K* T; b, o# M
  30.         ldrh r3,[r1],0x29 C# N& o* J9 v4 G
  31.         strh r3,[r0],0x20 J  z1 ?  x/ {+ C
  32.         subs r2,r2,0x16 `4 i1 j, ~' ^( o# @6 s4 s; t- P
  33.         bne loopl
    , b3 A. R2 P$ d0 r
  34. ;进入死循环0 u8 J$ z/ e; |0 Z4 i) b4 D0 U
  35. infin:
    2 m7 _% `! ~3 N" A: z/ q' U
  36.         b infin
    0 v& I8 @  F) E4 g0 l( `9 ~8 M
  37. .pool8 _5 ^7 J& T* j# K" M9 E
  38. ;导入图片二进制数据
    1 j' |" b1 Y" K5 X1 A/ L4 c$ m( n
  39. pic:, {! G3 N8 w# `4 U% Z& L+ [
  40. .incbin "16pic.bin"
    5 y9 b( y) f4 c+ L! F% ^
  41. ;在0x08000000地址设置跳转到主程序入口
    3 q; Q7 t6 p1 S% S- P& O) }; j
  42. .org 0x08000000
    * g: I. b! a) i& j4 t/ e
  43.         b main) p5 ]0 M6 ~- W1 X6 k0 l# S
  44. ;关闭文件% i/ G7 h2 H" S2 c2 V8 p
  45. .close) {+ ]% }5 {) D, r. T4 h
复制代码

; @+ T$ p* R" w1 X. L保存!' f' G+ `7 X! W9 K' h; {; J
/ p6 }; \4 L8 f6 M$ ~
(5)把16pic.asm和16pic.bin复制到armips目录下. {* m9 _3 Y9 K6 w/ i

( h; h5 k6 ^( o, |8 Q(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
* ~2 q- w& z# _% l! l" f- @, C7 x
4 }. O; s; t( g* p, Y) `! h% T(7)用GBA模拟器打开16pic_demo.gba观看效果
) U/ N8 ~( K% E
/ g5 z- c) p# T) R9 H: `9 \; C# z% r% ~: d. V8 `9 i% [$ l
1 j% y3 u( F2 a+ Z' J! X+ G8 l
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)* {; a( q8 I8 z7 N7 w: E

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-1-13 07:05 , Processed in 1.084961 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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