static void asmcpu_update(int32 cycles)
{
// timestamp..
- timestamp += ((cycles >> 4) * 43) >> 7; // aproximating /= 48
+ //timestamp += ((cycles >> 4) * 43) >> 7; // aproximating /= 48
// some code from x6502.c
fhcnt-=cycles;
X6502_Rebase_a();
nes_registers[4] = X.S << 24;
nes_registers[4]|= X.IRQlow << 8;
- nes_registers[7] = (uint32)X.count;
+ nes_registers[7] = (uint32)X.count << 16;
// NVUB DIZC
nes_registers[4]|= X.P & 0x5d;
X.PC= nes_registers[3] - pc_base;
X.S = nes_registers[4] >> 24;
X.IRQlow = nes_registers[4] >> 8;
- X.count = (int32) nes_registers[7];
+ X.count = (int32) nes_registers[7] >> 16;
// NVUB DIZC
X.P = nes_registers[4] & 0x5d;
else if(VBlankON)
TriggerNMI();
- X6502_Run(256+85-12);
- for(scanline=242+1;scanline<scanlines_per_frame;scanline++)
- X6502_Run(256+85);
+ // Note: this is needed for asm core
+ // Warning: using 'scanline' var here breaks Castlevania III
+ {
+ int lines;
+ X6502_Run(256+85-12);
+ for (lines=scanlines_per_frame-242-1;lines;lines--)
+ X6502_Run(256+85);
+ }
+ // X6502_Run((scanlines_per_frame-242)*(256+85)-12);
PPU_status&=0x1f;