// // Created by william on 6/14/24. // #include #include "pattern_window.h" #define PW_SCALE 2 void pattern_window_init(NesPatternWindow *window, byte *pattern_memory) { 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->pattern_memory = pattern_memory; 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) { pattern_display_uninit(&window->pattern_display); window_uninit(window->sdl_context); } static byte *pattern_window_read_byte(address addr, void *data) { assert(data != NULL); assert(addr < 0x2000); NesPatternWindow *window = (NesPatternWindow *) data; return &window->pattern_memory[addr]; } void pattern_window_build_table(NesPatternWindow *window) { pattern_display_build(&window->pattern_display, &pattern_window_read_byte, window); } void pattern_window_render(NesPatternWindow *window) { SDL_RenderClear(window->sdl_context.renderer); pattern_display_render(&window->pattern_display, window->sdl_context.renderer); } void pattern_window_present(NesPatternWindow *window) { SDL_RenderPresent(window->sdl_context.renderer); }