Mam kod, który liczy mi ile mogę sobie pętelek zrobić w jednej ramce
detecttv:
bit PPUSTATUS
ldx #0
ldy #0
?wait1 bit PPUSTATUS
bpl ?wait1
?wait2 inx
sne
iny
bit PPUSTATUS
bpl ?wait2
rts
W YX mam tu różne wartości zależne od systemu TV (PAL/NTSC/DENDY).
Przerwanie VBLK mam zablokowane na czas pomiaru (nmien=$FF), a IRQ w ogóle nieaktywne (i pomiar odbywa się przy zapalonym I)
nmiint bit nmien
spl
irqint rti
...
więc ta ilość pętelek nie powinna być jakoś nadmiernie zakłócana.
Okazało się jednak że zależnie od użytego mappera (testowałem dla 001 MMC1 i 030 UNROM) ilość pętelek jest różna co oznaczałoby, że mapper potrafi wpłynąć na ilość cykli dla CPU na magistrali. Czy spotkaliście się z czymś takim?
Testowałem to na emulatorach FCEUX i MESEN - obydwa zachowują się tak samo. Nie mam chwilowo jak zrobić testu na prawdziwym sprzęcie.
W przypadku gdyby ktoś chciał porobić jakieś testy, to mogę przygotować pliczki .nes dla obydwu mapperów.