]> git.sesse.net Git - pistorm/blobdiff - platforms/amiga/rtg/rtg.c
Add somewhat proper RTG vsync handling
[pistorm] / platforms / amiga / rtg / rtg.c
index 91e4e772695fbaa88ef9dfd552ae30ee218a0f74..8ec006156280b47e93dd2ab28730686afb4ad6e7 100644 (file)
@@ -41,7 +41,7 @@ static void handle_irtg_command(uint32_t cmd);
 uint8_t realtime_graphics_debug = 0;
 extern int cpu_emulation_running;
 extern struct emulator_config *cfg;
-extern uint8_t rtg_on;
+extern uint8_t rtg_on, rtg_output_in_vblank;
 
 //#define DEBUG_RTG
 
@@ -94,9 +94,6 @@ unsigned int rtg_get_fb() {
 
 unsigned int rtg_read(uint32_t address, uint8_t mode) {
     //printf("%s read from RTG: %.8X\n", op_type_names[mode], address);
-    if (address == RTG_COMMAND) {
-        return 0xFFCF;
-    }
     if (address >= PIGFX_REG_SIZE) {
         if (rtg_mem && (address - PIGFX_REG_SIZE) < PIGFX_UPPER) {
             switch (mode) {
@@ -114,6 +111,16 @@ unsigned int rtg_read(uint32_t address, uint8_t mode) {
             }
         }
     }
+    switch (address) {
+        case RTG_COMMAND:
+            return 0xFFCF;
+        case RTG_WAITVSYNC:
+            // fallthrough
+        case RTG_INVBLANK:
+            return !rtg_on || rtg_output_in_vblank;
+        default:
+            break;
+    }
 
     return 0;
 }