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 }
