68k memory map
https://wiki.neogeodev.org/index.php?title=68k_memory_map
维基百科关于内存映射的详细资料
- 0x000000 - 0x0FFFFF 代码ROM
- 0x100000 - 0x10FFFF WORKRAM
- 0x110000 - 0x1FFFFF WORKRAM mirror 镜像
寻址的时候需要镜像,地址总线最大是0xFFFF 所以100000 和 1F0000是没有区别的 - 0x200000 - 0x2FFFFF 射击bank switch
- 0x300000 - 0x3FFFFF I/O Memory mapped registers 和 GPU
ROM各个文件内容
static struct BurnRomInfo kof97RomDesc[] = {
{ "232-p1.p1", 0x100000, 0x7db81ad9, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "232-p2.sp2", 0x400000, 0x158b23f6, 1 | BRF_ESS | BRF_PRG }, // 1
{ "232-s1.s1", 0x020000, 0x8514ecf5, 2 | BRF_GRA }, // 2 Text layer tiles
{ "232-c1.c1", 0x800000, 0x5f8bf0a1, 3 | BRF_GRA }, // 3 Sprite data
{ "232-c2.c2", 0x800000, 0xe4d45c81, 3 | BRF_GRA }, // 4
{ "232-c3.c3", 0x800000, 0x581d6618, 3 | BRF_GRA }, // 5
{ "232-c4.c4", 0x800000, 0x49bb1e68, 3 | BRF_GRA }, // 6
{ "232-c5.c5", 0x400000, 0x34fc4e51, 3 | BRF_GRA }, // 7
{ "232-c6.c6", 0x400000, 0x4ff4d47b, 3 | BRF_GRA }, // 8
{ "232-m1.m1", 0x020000, 0x45348747, 4 | BRF_ESS | BRF_PRG }, // 9 Z80 code
{ "232-v1.v1", 0x400000, 0x22a2b5b5, 5 | BRF_SND }, // 10 Sound data
{ "232-v2.v2", 0x400000, 0x2304e744, 5 | BRF_SND }, // 11
{ "232-v3.v3", 0x400000, 0x759eb954, 5 | BRF_SND }, // 12
};
从上节的内容对照fba 中源码分析得出,p1rom文件是代码部分,p2rom是数据部分;
通过mame命令可以从内存中dump出真正的代码,
save test97.bin, 0,100000
为什么不直接用p1,因为大端小端的问题它的字节是反的,可用通过mame的内存查看器,对比rom的十六进制可看出来。
I/O Memory mapped registers 和 GPU
这三个寄存器是操作显存的
https://wiki.neogeodev.org/index.php?title=Memory_mapped_registers
image.png
网友评论