EMU618社区

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

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

[复制链接]

签到天数: 2021 天

[LV.Master]伴坛终老

发表于 2020-2-3 22:16:03 | 显示全部楼层 |阅读模式
2 ]" q' s3 c! _9 _  E. `
当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档
' @2 R! c" F3 I- Q. ^
2 \' g9 N* ?5 y, Y5 H! O这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧' G$ }0 e/ @! ^: f

/ ~; R1 w( M2 u- v/ [(一)准备工具:9 D: v. R: h* q% [0 I
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例
: z) X" y. C/ }( o
7 P4 l& m. J! I: ~, Z3 YARMIPS作者是Kingcom6 [4 s6 ]. i" {9 L; g* e( r
ARMIPS源代码github页面:https://github.com/Kingcom/armips, Y; v. r9 W3 G4 Y2 f2 X9 S9 N
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips
* m3 Q! ~- n: w, `( Q
' ^1 d; ]* [( H: r" y$ c  [2.一个将图片转换为二进制bin文件的工具bimbo 1.3, v1 _3 _8 G7 `! ]+ U. t' X7 O
- o% L# T# Q# \, H3 ~
bimbo 1.3作者是Aleksi Eeben$ {5 b! t# ^4 W$ v7 S# ]' V# U
5 x- r7 n( v3 M6 {! g
bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167, C* Z# N8 |! m$ ^$ I* A
8 f7 }; h; Y0 z3 l
3.一个windows自带的画图或其他图形编辑工具
& z& B; |8 a1 P* w4 S7 i* n; i2 A+ n' E
4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)
$ @: ~( q# Q, `) f; z: V- L, Q  F2 H% T, y# H) r; r8 [3 Y7 X9 w
(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP
. G3 |6 Y. Z7 U" ^8 Z3 r2 ]. g* w* i8 K8 x4 ^9 P8 L$ w
5 O: \3 K" h, W0 K' [
$ Y; c; o7 N+ p  G
(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin* G- ?# a! V9 o4 M5 p) u) C8 m
7 g7 {9 U1 S7 d9 \

$ T/ g4 g6 Y- ?* m" W8 Y/ |/ T! L) u' M5 k. G- [" [
(4)新建一个文本,我起名为16pic.asm,文本内容如下:
5 a2 k+ }- ~1 X- n( |, Y
  1. ;创建新文件16pic_demo.gba,文件起始地址是0x08000000$ A6 M; B$ @" A
  2. .create "16pic_demo.gba",0x08000000/ M1 g3 W/ s  y- _& k1 u' l- s3 s
  3. ;设置为GBA架构( ?$ |, i+ j- J1 D3 e
  4. .gba" ~% v& F' j4 U0 S( Z  x
  5. ;设置为ARM模式
    # k9 Z" o; g# O/ h6 O
  6. .arm
    ( |3 M1 g- ^7 _
  7. ;设置起始地址是0x08000000
    ; L  \/ o- z- W& u
  8. .org 0x08000000
    ) J0 w' |7 K' _6 M# G6 M
  9. ;创建长度为0xC0文件头数据区域3 h4 e& B/ M1 g% x, ]
  10. .area 0xC00 d: ~% m( H% p: G" _1 U
  11. ;填充文件头数据) z) S4 s; _8 C; W
  12. .fill 0xC0,0x00" J! v' W0 m8 L
  13. ;区域结束* W7 \) v& H  S6 |( M5 t3 @9 v
  14. .endarea
    # ~+ q) I* \8 W* v8 @
  15. ;主程序
    9 G5 _5 e5 ^. E: J# a
  16. main:
    % ~  J7 e3 K) M0 F4 S3 _8 }) [* z5 A
  17. ;设置屏幕模式3,BG2开启
    0 ]5 s/ X' M5 I
  18.         mov r0,0x04000000
    $ V2 e6 _$ j4 {8 ?8 I7 ]
  19.         mov r1,0x0400
    ( I( h! |, o! J: T; u
  20.         add r1,r1,0x3, h1 L8 }/ n/ A* b- l8 }' _" i
  21.         strh r1,[r0]0 b0 F4 n! I  D- G5 p4 K3 @
  22. ;设置VRAM起始地址, T* V% l9 j* p1 T; Q1 A. d. v/ I- r* X
  23.         mov r0,0x060000008 x6 Y) S& I* e. o# N- u$ o2 z
  24. ;设置图片地址' B- o# y$ S( L) n  h1 y9 A- V3 M6 M
  25.         ldr r1,=pic% s/ S% J1 ?6 G
  26. ;设置数据长度为0x9600
    0 S8 E  ?' y3 q7 ?
  27.         mov r2,0x96008 c! j9 t8 p, J* V6 W
  28. ;传送图片数据到VRAM
    ( @4 z. y3 H# j0 X
  29. loopl:* ]! `1 A/ u- d) J# g% @
  30.         ldrh r3,[r1],0x2' a0 a" E) l6 E3 S5 I" x: U* @5 d
  31.         strh r3,[r0],0x2* r3 B& ^5 A3 L; L2 R9 b
  32.         subs r2,r2,0x1/ j9 U+ \- D, E! N
  33.         bne loopl
    & U3 V' ]- s8 r+ M9 X5 C
  34. ;进入死循环
    1 v) X' }  C% J
  35. infin:
    ' R0 r3 N( Y. P2 G( {( d9 ]
  36.         b infin
    " w, M5 i5 f; j( t4 P
  37. .pool
    & E. f7 f8 g0 j
  38. ;导入图片二进制数据9 N# k9 @  h" Y
  39. pic:/ v! x; t; u1 W5 h3 c
  40. .incbin "16pic.bin"7 [1 U7 }: e( @1 r$ ]0 _; @! ~
  41. ;在0x08000000地址设置跳转到主程序入口/ T- @" p4 p: Y. K
  42. .org 0x08000000
    2 Z: x) ?0 b) D: B, A
  43.         b main
    1 A* [* G' L+ \; E/ M
  44. ;关闭文件
    4 t; D% U$ Q6 E6 D
  45. .close8 a& y% `5 _* b3 b' |/ W
复制代码

, X7 y6 [4 v& }1 @. B& @$ |保存!! r, m) l7 j- ~; s/ ~; ?# s4 V6 m
) S3 g0 {0 @* o0 b4 R' [
(5)把16pic.asm和16pic.bin复制到armips目录下6 S$ h; V" _0 `" m" z* `' C

' j5 V( _. u! a* N& k(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件
, u) {4 ?; I$ `" N
& @! Q' m! y% r' \(7)用GBA模拟器打开16pic_demo.gba观看效果
( I, R6 N0 J5 B8 |: Y' ~! {6 z, q9 l( ]5 E* G9 a% D3 L+ b8 @2 K. v
. `  d8 [3 X( d& n9 k: v; W

# t7 u) I9 Y& J/ n) x关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译), F, V" H0 ]9 C* k$ D9 E& }

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-27 06:10 , Processed in 1.078125 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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