4 #include "blargg_source.h"
6 int Cpu_read( struct Hes_Emu
* this, hes_addr_t addr
)
8 check( addr
<= 0xFFFF );
9 int result
= *Cpu_get_code( &this->cpu
, addr
);
10 if ( this->cpu
.mmr
[addr
>> page_shift
] == 0xFF )
11 result
= Emu_cpu_read( this, addr
);
15 void Cpu_write( struct Hes_Emu
* this, hes_addr_t addr
, int data
)
17 check( addr
<= 0xFFFF );
18 byte
* out
= this->write_pages
[addr
>> page_shift
];
19 addr
&= page_size
- 1;
22 else if ( this->cpu
.mmr
[addr
>> page_shift
] == 0xFF )
23 Emu_cpu_write( this, addr
, data
);
26 #define CPU_READ_FAST( emu, addr, time, out ) \
27 CPU_READ_FAST_( emu, addr, time, out )
29 #define CPU_READ_FAST_( emu, addr, time, out ) \
31 out = READ_PROG( addr );\
32 if ( emu->cpu.mmr [addr >> page_shift] == 0xFF )\
35 out = Emu_cpu_read( emu, addr );\
40 #define CPU_WRITE_FAST( emu, addr, data, time ) \
41 CPU_WRITE_FAST_( emu, addr, data, time )
43 #define CPU_WRITE_FAST_( emu, addr, data, time ) \
45 byte* out = emu->write_pages [addr >> page_shift];\
46 addr &= page_size - 1;\
51 else if ( emu->cpu.mmr [addr >> page_shift] == 0xFF )\
54 Emu_cpu_write( emu, addr, data );\
59 #define CPU_READ( emu, addr, time ) \
62 #define CPU_WRITE( emu, addr, data, time ) \
63 Cpu_write( emu, addr, data )
65 #define CPU_WRITE_VDP( emu, addr, data, time ) \
66 Cpu_write_vdp( emu, addr, data )
68 #define CPU_SET_MMR( emu, page, bank ) \
69 Emu_cpu_set_mmr( emu, page, bank )
71 #define CPU_DONE( emu, time, result_out ) \
72 result_out = Cpu_done( emu )