// // Created by william on 6/14/24. // #include "pattern_window.h" #include "dbg_pattern_table.h" #define PW_SCALE 2 #define PW_WIDTH (PW_ROW_TILE_COUNT * PATTERN_DRAW_SIZE) #define PW_HEIGHT (PW_WIDTH * 2) #define PW_BUFFER_SIZE (PW_WIDTH * PW_HEIGHT) void pattern_window_init(NesPatternWindow *window) { int win_width = pattern_display_get_size(PW_ROW_TILE_COUNT); window->sdl_context = window_init("Pattern Table", win_width, win_width * 2, PW_SCALE); window->texture = SDL_CreateTexture(window->sdl_context.renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, PW_WIDTH, PW_HEIGHT); // pattern_display_init(&window->pattern_display, window->sdl_context.renderer, PW_ROW_TILE_COUNT, // PW_ROW_TILE_COUNT * 2, PATTERN_DISPLAY_STATIC); } void pattern_window_uninit(NesPatternWindow *window) { SDL_DestroyTexture(window->texture); // pattern_display_uninit(&window->pattern_display); window_uninit(window->sdl_context); } void pattern_window_build_table(NesPatternWindow *window) { pixel buffer[PW_BUFFER_SIZE] = {0}; dbg_pattern_draw_bank(PATTERN_BANK_0, buffer); dbg_pattern_draw_bank(PATTERN_BANK_1, &buffer[PW_WIDTH * (PW_HEIGHT / 2)]); SDL_UpdateTexture(window->texture, NULL, buffer, PW_WIDTH * sizeof(pixel)); } void pattern_window_render(NesPatternWindow *window) { SDL_RenderClear(window->sdl_context.renderer); SDL_RenderCopy(window->sdl_context.renderer, window->texture, NULL, NULL); // pattern_display_render(&window->pattern_display, window->sdl_context.renderer); } void pattern_window_present(NesPatternWindow *window) { SDL_RenderPresent(window->sdl_context.renderer); }