diff --git a/src/vid_et4000w32.c b/src/vid_et4000w32.c index 8b5e5f3..680e937 100644 --- a/src/vid_et4000w32.c +++ b/src/vid_et4000w32.c @@ -379,8 +379,11 @@ void et4000w32p_mmu_write(uint32_t addr, uint8_t val, void *p) } else { - svga->vram[(addr & 0x1fff) + et4000->mmu.base[bank]] = val; - svga->changedvram[((addr & 0x1fff) + et4000->mmu.base[bank]) >> 12] = changeframecount; + if ((addr&0x1fff) + et4000->mmu.base[bank] < svga->vram_limit) + { + svga->vram[(addr & 0x1fff) + et4000->mmu.base[bank]] = val; + svga->changedvram[((addr & 0x1fff) + et4000->mmu.base[bank]) >> 12] = changeframecount; + } } break; case 0x6000: @@ -483,6 +486,8 @@ uint8_t et4000w32p_mmu_read(uint32_t addr, void *p) /*???*/ return temp; } + if ((addr&0x1fff) + et4000->mmu.base[bank] >= svga->vram_limit) + return 0xff; return svga->vram[(addr&0x1fff) + et4000->mmu.base[bank]]; case 0x6000: