Stworzyłem proste implementacje klasy Timer, która jest kluczowa do działania większości programów - chodzi o obsługę przerwania VBlank i jej synchronizacji z timerem zliczającym HBlanki.
Niestety kod pisany "na teraz" kopie mnie teraz po tyłku - trzeba usiąść i rozplanować zarządzanie timingami i synchronizację poszczególnych modułów. Obecnie panuje założenie, że x cyklów GPU to y cyklów CPU. Metody aktualizujące liczniki wywoływane są praktycznie co cykl GPU. Ułatwiało to napisanie kodu, ale ucierpi na tym wydajność i bardzo utrudni zmianę częstotliwości bazowej (zmiana z NTSC na PAL). Prawidłowa implementacja powinna pozwalać na uruchomienie timera dla x cyklów systemu, nadgonić straty, wywołać przerwania. To samo tyczy się GPU - aktualizacja stanu powinna być robiona tylko wtedy, gdy jest taka potrzeba a nie w każdym cyklu.
Przy symulacji działania modulu CDROM (który nie jest jeszcze napisany) BIOS renderuje menu: