美文网首页
kof97 逆向分析_内存关系映射

kof97 逆向分析_内存关系映射

作者: LiuJP | 来源:发表于2020-03-11 14:45 被阅读0次

68k memory map

https://wiki.neogeodev.org/index.php?title=68k_memory_map
维基百科关于内存映射的详细资料

68k memory map image.png
  • 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
image.png

相关文章

网友评论

      本文标题:kof97 逆向分析_内存关系映射

      本文链接:https://www.haomeiwen.com/subject/vyrcjhtx.html