aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/main.c b/src/main.c
index 0676dd6..37a8719 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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++;
}