EMU618社区

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

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

[复制链接]

签到天数: 2073 天

[LV.Master]伴坛终老

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

! [, W- \+ w/ L# c; u当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
! i; ?" V% ?) b- ^& Z% }
2 d1 S1 k( n3 n0 v$ Q1 y7 Q+ J2 M这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧
4 P! M2 d, W# Z, x  L+ y0 z( Q: q6 f0 [! Q* \; _" M7 E6 v6 w5 D
(一)准备工具:
! l' \% ~+ J3 Y) l9 x; n2 m$ z1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例' E+ D+ t" x- T0 U
7 W6 m; K' H+ \
ARMIPS作者是Kingcom
2 }# L0 j+ i. _ARMIPS源代码github页面:https://github.com/Kingcom/armips& K0 x- H. g6 Z* N- s8 f
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips0 q7 |) X! W+ T, q+ x. V
% z) v! x- z; m9 d
2.一个将图片转换为二进制bin文件的工具bimbo 1.3
2 R3 W" v3 @- w1 ]$ R- k. S* c
$ {  w2 k- |4 pbimbo 1.3作者是Aleksi Eeben
( m' W( a1 z4 G1 [% \- F; M+ E: O; v* {
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167
6 s. E8 x% {4 z0 d, M1 V5 M6 K3 ?. O& D4 T6 S5 I1 s+ s8 p
3.一个windows自带的画图或其他图形编辑工具* J" W7 G9 y, d# V- \  r
  k$ R) |2 ?$ `" w( x& c
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
9 N' i' T7 h, x* T8 \. X  {# ]- [* g1 I8 O9 v# a) N3 J
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
; z& }9 F  ?8 A; `: G$ z; h: F! A; U3 j& m8 }2 [& u& f1 `
4 Q$ U7 O/ y4 l3 L3 H4 @: e9 [1 f9 Q

& h% m0 W0 O- L5 b1 u& s$ p2 ~(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin
  j+ q/ Z4 T/ f( K2 H6 G
5 Z9 B; W" S- Y# d; T) {
) G& N0 t8 k( [0 Y& _- h  U8 l
# a2 K3 k( h8 A! r; o(4)新建一个文本,我起名为16pic.asm,文本内容如下:; S- {8 |& b; D- W* |( H' u
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x080000003 t- `5 [1 G# {
  2. .create "16pic_demo.gba",0x08000000
    1 V5 s; z$ F1 I: |& ^9 Z6 y8 W
  3. ;设置为GBA架构
    5 E. J6 W+ ~& b$ l  ?8 S3 w6 Z: U8 h
  4. .gba- \3 f% A/ ^5 f4 l) C1 P
  5. ;设置为ARM模式
    ! S7 Z5 k! z( y+ Y* C& p$ c: H& h9 q
  6. .arm8 s' M6 Z! m! {! q; i
  7. ;设置起始地址是0x08000000$ y- Q1 u$ p  r
  8. .org 0x080000001 V0 b8 `7 e; C# c* ]  V
  9. ;创建长度为0xC0文件头数据区域( M9 C' k& Y$ H9 r$ H
  10. .area 0xC0! {. K: `& w5 A
  11. ;填充文件头数据( k6 X2 J* z0 ]
  12. .fill 0xC0,0x00
    ' [5 f+ ?( b5 C& ^4 H
  13. ;区域结束- J  Z" i0 U) s/ d2 T0 f7 y
  14. .endarea
    / B) C9 W9 ?4 d! d' U
  15. ;主程序
    1 ?2 R6 z' y7 I  i+ P
  16. main:
    - C* \  m" M2 p
  17. ;设置屏幕模式3,BG2开启
    % C) }" X, C, g/ _. U
  18.         mov r0,0x04000000
    " x3 H$ X2 m* r* O8 q* r% `
  19.         mov r1,0x0400- O; F) W, v) ~% a" L
  20.         add r1,r1,0x3
    ' v6 B  ^: @5 B: [8 v( A
  21.         strh r1,[r0]. x% C* P, n( S: {4 k2 `
  22. ;设置VRAM起始地址6 a9 }3 V6 W1 u6 D- B8 d
  23.         mov r0,0x06000000: B9 {; j# ~& w
  24. ;设置图片地址; F4 O8 U) a; M1 }( q
  25.         ldr r1,=pic
    . Z" a7 K" @$ _( N( V
  26. ;设置数据长度为0x9600
    : E3 ~: _* o: o8 @, B
  27.         mov r2,0x9600' N4 A4 @& E  q' r3 }" q
  28. ;传送图片数据到VRAM
    , @, ^. x7 L0 l
  29. loopl:
    ! {. o5 _! ^) a: t+ F5 Q
  30.         ldrh r3,[r1],0x2: \6 H* t) M7 w# ]
  31.         strh r3,[r0],0x2$ l  f0 F/ l2 Q: r! k
  32.         subs r2,r2,0x1
    - n  k" {! {8 _5 Q& I) S/ {
  33.         bne loopl
    6 |: a, U# ]5 R. j0 ^( |" o
  34. ;进入死循环
    $ j0 T5 a& B3 Q8 m6 g! S
  35. infin:. I1 s5 g$ m& u. Q8 g' J4 a
  36.         b infin
    : E" G, D+ ~+ O2 r
  37. .pool6 b' [! s4 e" M+ ^& Y7 D) s
  38. ;导入图片二进制数据) e2 |2 `4 v0 M; F0 q
  39. pic:
    3 D' A" q% k/ c6 K
  40. .incbin "16pic.bin"
    : ]4 U/ z# p$ S0 G/ y
  41. ;在0x08000000地址设置跳转到主程序入口
    6 a6 z2 Y8 E7 M1 ]) g7 X( |
  42. .org 0x080000008 ]9 _7 j6 Q# Q& {
  43.         b main! C1 @# }* G$ L' U$ J% F9 T' e
  44. ;关闭文件8 U- x1 ^2 P; O% T& j
  45. .close
    8 n2 ?5 Z! `, X
复制代码

+ }; U2 g0 Z- C9 L- B, ^, F保存!- y+ }) M$ [. H/ L% t) U" K5 p
6 \! F% D% g. c* }% X
(5)把16pic.asm和16pic.bin复制到armips目录下' Z! g; D: \3 ]- X6 r. u$ l) }* j

3 b  G' O, f2 c1 N( x(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件* P2 m) y$ g. t- Q

: O& {- @, E" @+ A, q( {8 }(7)用GBA模拟器打开16pic_demo.gba观看效果+ e4 I3 \3 Q( g' w* J( @
; }/ `1 ~( G3 a9 r/ T

* Y. N( H% K2 Z# {) u! q9 E9 \$ G0 W4 C) l8 P1 z9 l7 e; r2 \. X
关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)5 K" J! t: G  k  B0 T

本帖子中包含更多资源

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

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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