疾风之狼 发表于 2020-2-3 22:16:03

制作一个图片ROM(GBA篇)


当你HACK了一个游戏,想给HACK ROM加个介绍或版权声明之类,那么你就需要这篇文档

这篇文档会说如何创建一个图片GBA ROM,之后请各位动脑子如何加入ROM吧

(一)准备工具:
1.一个汇编工具armips或goldroad,goldroad已经好久没更新了,armips是新出的汇编工具,支持arm和mips汇编,本篇资料以armips为例

ARMIPS作者是Kingcom
ARMIPS源代码github页面:https://github.com/Kingcom/armips
ARMIPS Automated builds页面: http://buildbot.orphis.net/armips

2.一个将图片转换为二进制bin文件的工具bimbo 1.3

bimbo 1.3作者是Aleksi Eeben

bimbo 1.3下载页面:https://www.gbadev.org/tools.php?showinfo=167

3.一个windows自带的画图或其他图形编辑工具

4.一个windows自带的记事本或其他文本编辑工具(例如Notepad3)

(2)使用画图制作一个单位为像素的240x160大小的图片,另存为16色或256色的BMP



(3)使用bimbo 1.3把BMP导出为mode 3的文件,文件名随意,我导出的名字是16pic.bin



(4)新建一个文本,我起名为16pic.asm,文本内容如下:
;创建新文件16pic_demo.gba,文件起始地址是0x08000000
.create "16pic_demo.gba",0x08000000
;设置为GBA架构
.gba
;设置为ARM模式
.arm
;设置起始地址是0x08000000
.org 0x08000000
;创建长度为0xC0文件头数据区域
.area 0xC0
;填充文件头数据
.fill 0xC0,0x00
;区域结束
.endarea
;主程序
main:
;设置屏幕模式3,BG2开启
        mov r0,0x04000000
        mov r1,0x0400
        add r1,r1,0x3
        strh r1,
;设置VRAM起始地址
        mov r0,0x06000000
;设置图片地址
        ldr r1,=pic
;设置数据长度为0x9600
        mov r2,0x9600
;传送图片数据到VRAM
loopl:
        ldrh r3,,0x2
        strh r3,,0x2
        subs r2,r2,0x1
        bne loopl
;进入死循环
infin:
        b infin
.pool
;导入图片二进制数据
pic:
.incbin "16pic.bin"
;在0x08000000地址设置跳转到主程序入口
.org 0x08000000
        b main
;关闭文件
.close

保存!

(5)把16pic.asm和16pic.bin复制到armips目录下

(6)打开windows的命令提示符,进入armips所在目录,输入armips 16pic.asm,按下Enter键后可看到armips目录下生成的"16pic_demo.gba"文件

(7)用GBA模拟器打开16pic_demo.gba观看效果



关于GBA各模式资料请看GBA系统参考.CHM(张晓波翻译)
页: [1]
查看完整版本: 制作一个图片ROM(GBA篇)