diff options
author | lonkaars <loek@pipeframe.xyz> | 2023-02-24 19:11:59 +0100 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2023-02-24 19:11:59 +0100 |
commit | f5c8ae2f2d2074d483490e857db5aef8388f06c9 (patch) | |
tree | a76e1985433216a31e112d3f4daccdf19097c06d /src/ppusim/sim.c | |
parent | 5f5c6a410cafaa917ca3ff0a2a95bb1f2db4b980 (diff) |
c interface semi-done
Diffstat (limited to 'src/ppusim/sim.c')
-rw-r--r-- | src/ppusim/sim.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/ppusim/sim.c b/src/ppusim/sim.c index 560646d..a3314e4 100644 --- a/src/ppusim/sim.c +++ b/src/ppusim/sim.c @@ -3,7 +3,9 @@ #include <math.h> #include <SDL2/SDL.h> +#include "main.h" #include "ppu/ppu.h" +#include "ppusim/mem.h" #include "ppusim/sim.h" SDL_Window *g_hh_window = NULL; @@ -24,13 +26,27 @@ void hh_ppu_init() { g_hh_window = SDL_CreateWindow("ppusim", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, HH_PPU_SCREEN_WIDTH * HH_PPUSIM_UPSCALE_FACTOR, HH_PPU_SCREEN_HEIGHT * HH_PPUSIM_UPSCALE_FACTOR, SDL_WINDOW_SHOWN); g_hh_renderer = SDL_CreateRenderer(g_hh_window, -1, SDL_RENDERER_ACCELERATED); + g_hh_ppusim_vram = malloc(sizeof(hh_ppu_data_t) * 0xffff); +} + +void hh_ppu_deinit() { + free(g_hh_ppusim_vram); + + SDL_DestroyRenderer(g_hh_renderer); + SDL_DestroyWindow(g_hh_window); + SDL_Quit(); +} + +void hh_loop() { + static unsigned long frame = 0; SDL_Event e; - unsigned long frame = 0; - while (true) { + while (g_hh_run) { uint32_t start = SDL_GetTicks(); frame++; while (SDL_PollEvent(&e)) if (e.type == SDL_QUIT) exit(0); + hh_ppu_vblank_interrupt(); + SDL_RenderClear(g_hh_renderer); for (unsigned i = 0; i < HH_PPU_SCREEN_WIDTH; i++) { @@ -47,9 +63,3 @@ void hh_ppu_init() { if (wait_for > 0) SDL_Delay(wait_for); } } - -void hh_ppu_deinit() { - SDL_DestroyRenderer(g_hh_renderer); - SDL_DestroyWindow(g_hh_window); - SDL_Quit(); -} |