mirror of
https://github.com/TomHarte/CLK.git
synced 2024-09-08 03:54:27 +00:00
Fixed: mistake was failure to count ready cycles.
This commit is contained in:
parent
4c3cc42c91
commit
a26b87f348
@ -24,6 +24,7 @@ template<class T> class Cartridge:
|
|||||||
|
|
||||||
void run_for_cycles(int number_of_cycles) { CPU6502::Processor<Cartridge<T>>::run_for_cycles(number_of_cycles); }
|
void run_for_cycles(int number_of_cycles) { CPU6502::Processor<Cartridge<T>>::run_for_cycles(number_of_cycles); }
|
||||||
void set_reset_line(bool state) { CPU6502::Processor<Cartridge<T>>::set_reset_line(state); }
|
void set_reset_line(bool state) { CPU6502::Processor<Cartridge<T>>::set_reset_line(state); }
|
||||||
|
void advance_cycles(unsigned int cycles) {}
|
||||||
|
|
||||||
// to satisfy CPU6502::Processor
|
// to satisfy CPU6502::Processor
|
||||||
unsigned int perform_bus_operation(CPU6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
unsigned int perform_bus_operation(CPU6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
||||||
@ -40,6 +41,7 @@ template<class T> class Cartridge:
|
|||||||
cycles_since_speaker_update_ += cycles_run_for;
|
cycles_since_speaker_update_ += cycles_run_for;
|
||||||
cycles_since_video_update_ += cycles_run_for;
|
cycles_since_video_update_ += cycles_run_for;
|
||||||
cycles_since_6532_update_ += (cycles_run_for / 3);
|
cycles_since_6532_update_ += (cycles_run_for / 3);
|
||||||
|
static_cast<T *>(this)->advance_cycles(cycles_run_for / 3);
|
||||||
|
|
||||||
if(operation != CPU6502::BusOperation::Ready) {
|
if(operation != CPU6502::BusOperation::Ready) {
|
||||||
// give the cartridge a chance to respond to the bus access
|
// give the cartridge a chance to respond to the bus access
|
||||||
|
@ -22,8 +22,11 @@ class CartridgePitfall2: public Cartridge<CartridgePitfall2> {
|
|||||||
rom_ptr_ = rom_.data();
|
rom_ptr_ = rom_.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void advance_cycles(unsigned int cycles) {
|
||||||
|
cycles_since_audio_update_ += cycles;
|
||||||
|
}
|
||||||
|
|
||||||
void perform_bus_operation(CPU6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
void perform_bus_operation(CPU6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
||||||
cycles_since_audio_update_++;
|
|
||||||
address &= 0x1fff;
|
address &= 0x1fff;
|
||||||
if(!(address & 0x1000)) return;
|
if(!(address & 0x1000)) return;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user