add some asserts to identify emulator bugs as a source of incompatibility
This commit is contained in:
parent
8e97a058dc
commit
0fdebc6e69
|
@ -21,13 +21,10 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define RENDER3D
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
//#include "gl_vertex.h"
|
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "NDSSystem.h"
|
#include "NDSSystem.h"
|
||||||
|
@ -3573,12 +3570,14 @@ struct armcpu_memory_iface arm9_direct_memory_iface = {
|
||||||
|
|
||||||
u32 FASTCALL MMU_read32(u32 proc, u32 adr)
|
u32 FASTCALL MMU_read32(u32 proc, u32 adr)
|
||||||
{
|
{
|
||||||
|
assert((adr&3)==0);
|
||||||
if(proc==0) return _MMU_read32<0ul>(adr);
|
if(proc==0) return _MMU_read32<0ul>(adr);
|
||||||
else return _MMU_read32<1ul>(adr);
|
else return _MMU_read32<1ul>(adr);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 FASTCALL MMU_read16(u32 proc, u32 adr)
|
u16 FASTCALL MMU_read16(u32 proc, u32 adr)
|
||||||
{
|
{
|
||||||
|
assert((adr&1)==0);
|
||||||
if(proc==0) return _MMU_read16<0ul>(adr);
|
if(proc==0) return _MMU_read16<0ul>(adr);
|
||||||
else return _MMU_read16<1ul>(adr);
|
else return _MMU_read16<1ul>(adr);
|
||||||
}
|
}
|
||||||
|
@ -3591,12 +3590,14 @@ u8 FASTCALL MMU_read8(u32 proc, u32 adr)
|
||||||
|
|
||||||
void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val)
|
void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val)
|
||||||
{
|
{
|
||||||
|
assert((adr&3)==0);
|
||||||
if(proc==0) _MMU_write32<0ul>(adr,val);
|
if(proc==0) _MMU_write32<0ul>(adr,val);
|
||||||
else _MMU_write32<1ul>(adr,val);
|
else _MMU_write32<1ul>(adr,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FASTCALL MMU_write16(u32 proc, u32 adr, u16 val)
|
void FASTCALL MMU_write16(u32 proc, u32 adr, u16 val)
|
||||||
{
|
{
|
||||||
|
assert((adr&1)==0);
|
||||||
if(proc==0) _MMU_write16<0ul>(adr,val);
|
if(proc==0) _MMU_write16<0ul>(adr,val);
|
||||||
else _MMU_write16<1ul>(adr,val);
|
else _MMU_write16<1ul>(adr,val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,11 @@ typedef struct {
|
||||||
|
|
||||||
//Unused ram
|
//Unused ram
|
||||||
u8 UNUSED_RAM[4];
|
u8 UNUSED_RAM[4];
|
||||||
|
|
||||||
|
//this is here so that we can trap glitchy emulator code
|
||||||
|
//which is accessing offsets 5,6,7 of unused ram due to unaligned accesses
|
||||||
|
//(also since the emulator doesn't prevent unaligned accesses)
|
||||||
|
u8 MORE_UNUSED_RAM[4];
|
||||||
|
|
||||||
u8 * * MMU_MEM[2];
|
u8 * * MMU_MEM[2];
|
||||||
u32 * MMU_MASK[2];
|
u32 * MMU_MASK[2];
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
#include "arm_instructions.h"
|
#include "arm_instructions.h"
|
||||||
#include "thumb_instructions.h"
|
#include "thumb_instructions.h"
|
||||||
#include "cp15.h"
|
#include "cp15.h"
|
||||||
#include "bios.h"
|
#include "bios.h"
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
template<u32> static u32 armcpu_prefetch();
|
template<u32> static u32 armcpu_prefetch();
|
||||||
|
|
||||||
|
@ -538,6 +540,8 @@ u32 armcpu_exec()
|
||||||
{
|
{
|
||||||
u32 c = 1;
|
u32 c = 1;
|
||||||
|
|
||||||
|
assert(ARMPROC.instruct_adr!=0x00000000);
|
||||||
|
|
||||||
#ifdef GDB_STUB
|
#ifdef GDB_STUB
|
||||||
if (ARMPROC.stalled)
|
if (ARMPROC.stalled)
|
||||||
return STALLED_CYCLE_COUNT;
|
return STALLED_CYCLE_COUNT;
|
||||||
|
|
Loading…
Reference in New Issue