PCem

changeset 27:7f6eb2f86a87

Fixed DMA bug introduced with memory mapping changes - SB games should no longer crash.
author TomW
date Tue Oct 22 19:52:46 2013 +0100
parents 6238be7915d1
children 22e575515a51
files src/mem.c
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line diff
     1.1 --- a/src/mem.c	Tue Oct 22 19:42:20 2013 +0100
     1.2 +++ b/src/mem.c	Tue Oct 22 19:52:46 2013 +0100
     1.3 @@ -870,6 +870,9 @@
     1.4  {
     1.5  //        return;
     1.6  //        printf("Addreadlookup %08X %08X %08X %08X %08X %08X %02X %08X\n",virt,phys,cs,ds,es,ss,opcode,pc);
     1.7 +        if (virt == 0xffffffff)
     1.8 +                return;
     1.9 +                
    1.10          if (readlookup2[virt>>12]!=0xFFFFFFFF) 
    1.11          {
    1.12  /*                if (readlookup2[virt>>12] != phys&~0xfff)
    1.13 @@ -908,6 +911,9 @@
    1.14  {
    1.15  //        return;
    1.16  //        printf("Addwritelookup %08X %08X\n",virt,phys);
    1.17 +        if (virt == 0xffffffff)
    1.18 +                return;
    1.19 +
    1.20          if (writelookup2[virt>>12]!=0xFFFFFFFF)
    1.21          {
    1.22  /*                if (writelookup2[virt>>12] != phys&~0xfff)
    1.23 @@ -1258,6 +1264,8 @@
    1.24  
    1.25  uint8_t mem_readb_phys(uint32_t addr)
    1.26  {
    1.27 +        mem_logical_addr = 0xffffffff;
    1.28 +        
    1.29          if (_mem_read_b[addr >> 14]) 
    1.30                  return _mem_read_b[addr >> 14](addr, _mem_priv[addr >> 14]);
    1.31                  
    1.32 @@ -1266,6 +1274,8 @@
    1.33  
    1.34  void mem_writeb_phys(uint32_t addr, uint8_t val)
    1.35  {
    1.36 +        mem_logical_addr = 0xffffffff;
    1.37 +        
    1.38          if (_mem_write_b[addr >> 14]) 
    1.39                  _mem_write_b[addr >> 14](addr, val, _mem_priv[addr >> 14]);
    1.40  }