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++;  } |