diff --git a/bsnes/Database/Super Famicom.bml b/bsnes/Database/Super Famicom.bml index 6567fc09e..3dd5a0f71 100644 --- a/bsnes/Database/Super Famicom.bml +++ b/bsnes/Database/Super Famicom.bml @@ -30,6 +30,30 @@ game size: 0x80000 content: Program +//Prototypes (USA) + +database + revision: 2022-03-14 + +game + sha256: 4362afe51da8a01a67a1c2d6c2545d9e7cbaf8c42fd8f319dd8b61fe328512e1 + name: Super FX voxel demo + title: Super FX voxel demo + label: Voxels in progress + region: USA + revision: 1.0 + board: GSU-RAM + memory + type: ROM + size: 0x60000 + content: Program + memory + type: RAM + size: 0x10000 + content: Save + oscillator + frequency: 21440000 + //Super Comboy (KOR) database diff --git a/bsnes/sfc/coprocessor/superfx/memory.cpp b/bsnes/sfc/coprocessor/superfx/memory.cpp index 01a8c8210..58a54df29 100644 --- a/bsnes/sfc/coprocessor/superfx/memory.cpp +++ b/bsnes/sfc/coprocessor/superfx/memory.cpp @@ -5,16 +5,19 @@ auto SuperFX::read(uint addr, uint8 data) -> uint8 { synchronizeCPU(); if(synchronizing()) break; } - return rom.read((((addr & 0x3f0000) >> 1) | (addr & 0x7fff)) & romMask); + addr = (((addr & 0x3f0000) >> 1) | (addr & 0x7fff)); + addr = Bus::mirror(addr, rom.size()); + return rom.read(addr); } if((addr & 0xe00000) == 0x400000) { //$40-5f:0000-ffff + addr = Bus::mirror(addr, rom.size()); while(!regs.scmr.ron) { step(6); synchronizeCPU(); if(synchronizing()) break; } - return rom.read(addr & romMask); + return rom.read(addr); } if((addr & 0xe00000) == 0x600000) { //$60-7f:0000-ffff