8bitworkshop/presets/vcs/vcslib/frameloop.c

52 lines
832 B
C

#include "vcslib.h"
#pragma warn (const-comparison, off)
void kernel_1(void) {
// Vertical Sync signal
TIA.vsync = START_VERT_SYNC;
TIA.wsync = 0x00;
// Test reset switch
if (SW_RESET()) {
asm("brk");
}
TIA.wsync = 0x00;
TIA.wsync = 0x00;
TIA.vsync = STOP_VERT_SYNC;
// Vertical Blank (preframe)
RIOT.tim64t = VBLANK_TIM64;
}
void kernel_2(void) {
while (RIOT.intim != 0) {}
// Turn on beam
TIA.wsync = 0x00;
TIA.vblank = ENABLE_TIA;
// Display frame (doframe)
#ifdef PAL
RIOT.t1024t = KERNAL_T1024;
#else
RIOT.tim64t = KERNAL_TIM64;
#endif
}
void kernel_3(void) {
while (RIOT.intim != 0) {}
// Turn off beam
TIA.wsync = 0x00;
TIA.vblank = DISABLE_TIA;
// Overscan (postframe)
RIOT.tim64t = OVERSCAN_TIM64;
}
void kernel_4(void) {
while (RIOT.intim != 0) {}
}