1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-10 12:29:01 +00:00

Fixed: mistake was failure to count ready cycles.

This commit is contained in:
Thomas Harte 2017-03-20 20:44:03 -04:00
parent 4c3cc42c91
commit a26b87f348
2 changed files with 6 additions and 1 deletions

View File

@ -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 set_reset_line(bool state) { CPU6502::Processor<Cartridge<T>>::set_reset_line(state); }
void advance_cycles(unsigned int cycles) {}
// to satisfy CPU6502::Processor
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_video_update_ += cycles_run_for;
cycles_since_6532_update_ += (cycles_run_for / 3);
static_cast<T *>(this)->advance_cycles(cycles_run_for / 3);
if(operation != CPU6502::BusOperation::Ready) {
// give the cartridge a chance to respond to the bus access

View File

@ -22,8 +22,11 @@ class CartridgePitfall2: public Cartridge<CartridgePitfall2> {
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) {
cycles_since_audio_update_++;
address &= 0x1fff;
if(!(address & 0x1000)) return;