diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 35 |
1 files changed, 15 insertions, 20 deletions
@@ -2,13 +2,13 @@ #include "main.h" #include "demo.h" +#include "ppu/internals.h" #include "ppu/ppu.h" #include "input.h" +#include "../test/ppu-stm-integration-demo/data.h" #ifdef HH_TARGET_DESKTOP #include <stdio.h> -#include "../test/ppu-stm-integration-demo/data.h" -#include "ppu/internals.h" #endif bool g_hh_run = true; @@ -17,26 +17,21 @@ volatile unsigned short g_hh_hcount; void hh_ppu_vblank_interrupt() { static unsigned long frame = 0; -#ifdef HH_TARGET_STM32 - hh_ppu_flush(); - hh_input_read(); - hh_demo_loop(frame); -#endif -#ifdef HH_TARGET_DESKTOP - static bool done = false; - //hh_ppu_vram_dwrite((uint8_t*) HH_PPUINTDEMO_ARR, HH_PPUINTDEMO_LENGTH); - for (unsigned int limit = 0; limit < 1000; limit++) { - if (frame * 4 >= HH_PPUINTDEMO_LENGTH) { - if (!done) printf("done\n"); - done = true; - return; +// #ifdef HH_TARGET_STM32 +// hh_ppu_flush(); +// hh_input_read(); +// hh_demo_loop(frame); +// #endif + // if (frame > 1) return; + for (size_t i = 0; i < HH_PPUINTDEMO_LENGTH; i += 4) { + uint8_t* d = HH_PPUINTDEMO_ARR + i; + if (d[0] == 0xff && d[1] == 0xff && d[2] == 0xff && d[3] == 0xff) { + hh_ppu_flush(); + } else { + hh_ppu_vram_buffer(d); } - hh_ppu_vram_dwrite((uint8_t*) HH_PPUINTDEMO_ARR + frame * 4, 4); - uint8_t* d = HH_PPUINTDEMO_ARR + frame * 4; - if (d[0] == 0xff && d[1] == 0xff && d[2] == 0xff && d[3] == 0xff) break; // run all commands until flush - else frame++; } -#endif + hh_ppu_flush(); frame++; } |