// // Created by william on 6/8/24. // #include #include "main_window.h" #include "log.h" #include "char_map.h" #include "gui.h" void main_window_init(NesMainWindow *window) { window->sdl_context = window_init("NES Emulator", MAIN_WINDOW_WIDTH, MAIN_WINDOW_HEIGHT, MAIN_WINDOW_SCALE); window->texture = SDL_CreateTexture(window->sdl_context.renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, MAIN_WINDOW_WIDTH, MAIN_WINDOW_HEIGHT); } void main_window_uninit(NesMainWindow *window) { SDL_DestroyTexture(window->texture); window_uninit(window->sdl_context); } #if DEBUG void main_window_render_delay(SDL_Renderer *renderer) { Uint32 delay = gui_get_frame_delay(); char buffer[5]; buffer[0] = (char) ((delay / 10) + 48); buffer[1] = (char) ((delay % 10) + 48); buffer[2] = ' '; buffer[3] = 'm'; buffer[4] = 's'; char_map_render(renderer, buffer); } #endif void main_window_render(NesMainWindow *window, pixel *pixels) { SDL_RenderClear(window->sdl_context.renderer); SDL_UpdateTexture(window->texture, NULL, pixels, 256 * sizeof(pixel)); SDL_RenderCopy(window->sdl_context.renderer, window->texture, NULL, NULL); #if DEBUG main_window_render_delay(window->sdl_context.renderer); #endif } void main_window_present(NesMainWindow *window) { SDL_RenderPresent(window->sdl_context.renderer); }