2024-06-16 19:22:40 -04:00
|
|
|
//
|
|
|
|
// Created by william on 6/14/24.
|
|
|
|
//
|
|
|
|
|
2024-07-12 18:52:54 -04:00
|
|
|
#include <assert.h>
|
2024-06-16 19:22:40 -04:00
|
|
|
#include "pattern_window.h"
|
|
|
|
|
|
|
|
#define PW_SCALE 2
|
|
|
|
|
2024-07-12 18:52:54 -04:00
|
|
|
void pattern_window_init(NesPatternWindow *window, byte *pattern_memory) {
|
2024-07-12 13:07:16 -04:00
|
|
|
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);
|
2024-07-12 18:52:54 -04:00
|
|
|
window->pattern_memory = pattern_memory;
|
2024-06-16 19:22:40 -04:00
|
|
|
|
2024-07-12 13:07:16 -04:00
|
|
|
pattern_display_init(&window->pattern_display, window->sdl_context.renderer, PW_ROW_TILE_COUNT,
|
2024-07-12 18:52:54 -04:00
|
|
|
PW_ROW_TILE_COUNT * 2, PATTERN_DISPLAY_STATIC);
|
2024-06-16 19:22:40 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void pattern_window_uninit(NesPatternWindow *window) {
|
2024-07-12 13:07:16 -04:00
|
|
|
pattern_display_uninit(&window->pattern_display);
|
2024-06-16 19:22:40 -04:00
|
|
|
window_uninit(window->sdl_context);
|
|
|
|
}
|
|
|
|
|
2024-07-12 18:52:54 -04:00
|
|
|
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);
|
2024-06-16 19:22:40 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void pattern_window_render(NesPatternWindow *window) {
|
|
|
|
SDL_RenderClear(window->sdl_context.renderer);
|
2024-07-12 13:07:16 -04:00
|
|
|
pattern_display_render(&window->pattern_display, window->sdl_context.renderer);
|
2024-06-16 19:22:40 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void pattern_window_present(NesPatternWindow *window) {
|
|
|
|
SDL_RenderPresent(window->sdl_context.renderer);
|
|
|
|
}
|