]> git.sesse.net Git - pistorm/blobdiff - platforms/amiga/rtg/rtg.h
Add iRTG implementation for BlitTemplate, clean up BlitTemplate RTG code
[pistorm] / platforms / amiga / rtg / rtg.h
index 6a4f625df6b0961ee84e37d3ff0b120a7f99a700..5875e1418578898ce8ae0c79aa55ff9199cc7d47 100644 (file)
@@ -9,7 +9,7 @@
 
 #define CARD_OFFSET 0
 
-#include "rtg_driver_amiga/rtg_enums.h"
+#include "rtg_enums.h"
 
 void rtg_write(uint32_t address, uint32_t value, uint8_t mode);
 unsigned int rtg_read(uint32_t address, uint8_t mode);
@@ -23,6 +23,9 @@ void rtg_set_mouse_cursor_pos(int16_t x, int16_t y);
 void rtg_set_cursor_clut_entry(uint8_t r, uint8_t g, uint8_t b, uint8_t idx);
 void rtg_set_mouse_cursor_image(uint8_t *src, uint8_t w, uint8_t h);
 
+void rtg_show_fps(uint8_t enable);
+void rtg_palette_debug(uint8_t enable);
+
 int init_rtg_data(struct emulator_config *cfg);
 void shutdown_rtg();
 
@@ -53,11 +56,14 @@ void rtg_p2d (int16_t sx, int16_t sy, int16_t dx, int16_t dy, int16_t w, int16_t
        dptr += pitch;
 
 #define TEMPLATE_LOOPX \
-    tmpl_x++; \
-    cur_byte = (invert) ? sptr[tmpl_x] ^ 0xFF : sptr[tmpl_x]; \
+    if (sptr)   { cur_byte = sptr[tmpl_x]; } \
+    else        { cur_byte = ps_read_8(src_addr + tmpl_x); } \
+    if (invert) { cur_byte ^= 0xFF; } \
+    tmpl_x++;
 
 #define TEMPLATE_LOOPY \
     sptr += t_pitch; \
+    src_addr += t_pitch; \
     dptr += pitch; \
     tmpl_x = offset_x / 8; \
     cur_bit = base_bit;