diff options
Diffstat (limited to 'mknes.c')
| -rw-r--r-- | mknes.c | 55 |
1 files changed, 28 insertions, 27 deletions
@@ -44,7 +44,7 @@ static void audio_callback(int16_t *data, size_t frames) { } #define FRAME_INTERVAL_NS (1000000000ULL / 60.0988) -#define DEBUG_PRINT printf +#define DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) #ifdef _WIN32 #include "win32_timer.c" #else @@ -158,7 +158,6 @@ static uint32_t frames; // debug information // #include "smb_tas.h" // REMOVE ME - // NES core #include "mknes_mapper.h" #include "mknes.h" @@ -172,7 +171,7 @@ static uint32_t frames; // debug information // struct nes_state nstate; -static void framebuffer_callback(int32_t width, int32_t height, float aspect_ratio) { +static void framebuffer_callback(struct mkfw_state *mkfw_window, int32_t width, int32_t height, float aspect_ratio) { // state.screen_width = width; // state.screen_height = height; // state.viewport.x = 0; @@ -254,7 +253,7 @@ int main(int argc, char **argv) { // ines2_load(nstate, "data/0000/raster_demos/RasterTest3.NES"); // ines2_load(nstate, "data/0000/raster_demos/RasterTest3a.NES"); // ines2_load(nstate, "data/0000/raster_demos/RasterTest3b.NES"); - // ines2_load(nstate, "data/0000/raster_demos/RasterTest3c.NES"); + ines2_load(nstate, "data/0000/raster_demos/RasterTest3c.NES"); // ines2_load(nstate, "data/0000/raster_demos/RasterTest3d.NES"); // ines2_load(nstate, "data/0000/raster_demos/RasterTest3e.NES"); // ines2_load(nstate, "data/0000/NEStress.NES"); @@ -291,7 +290,7 @@ int main(int argc, char **argv) { mapper_setup(nstate); cpu_reset(nstate); -#if 1 +#if 0 for(uint32_t i = 0; i < 0x5000; ++i) { while(!nstate->ppu.frame_ready) { // PROFILE_NAMED("nes emulator"); @@ -300,6 +299,8 @@ int main(int argc, char **argv) { nstate->ppu.frame_ready = 0; frames++; } + + // for(size_t i = 0; i < 256; ++i) { // printf("instr %2.2x: %lld\n", i, instr_count[i]); // } @@ -307,18 +308,18 @@ int main(int argc, char **argv) { #else // WINDOW SETUP - mkfw_init(WINDOW_WIDTH, WINDOW_HEIGHT); - mkfw_set_window_title("mknes"); - mkfw_set_framebuffer_size_callback(framebuffer_callback); - mkfw_set_swapinterval(0); + struct mkfw_state *window = mkfw_init(WINDOW_WIDTH, WINDOW_HEIGHT); + mkfw_set_window_title(window, "mknes"); + mkfw_set_framebuffer_size_callback(window, framebuffer_callback); + mkfw_set_swapinterval(window, 0); gl_loader(); opengl_setup(); // setup_render_targets(); change_resolution(BUFFER_WIDTH, BUFFER_HEIGHT); - mkfw_show_window(); + mkfw_show_window(window); - mkfw_set_window_min_size_and_aspect(WINDOW_WIDTH, WINDOW_HEIGHT, 4.f, 3.f); + mkfw_set_window_min_size_and_aspect(window, WINDOW_WIDTH, WINDOW_HEIGHT, 4.f, 3.f); timer_init(); @@ -326,22 +327,22 @@ int main(int argc, char **argv) { uint8_t running = true; - while(running && !mkfw_should_close()) { - mkfw_pump_messages(); + while(running && !mkfw_should_close(window)) { + mkfw_pump_messages(window); // // Check for ESC key - if(mkfw_is_key_pressed(MKS_KEY_ESCAPE)) running = false; + if(mkfw_is_key_pressed(window, MKS_KEY_ESCAPE)) running = false; // Joypad input uint8_t input = 0; - if(keyboard_state[MKS_KEY_X]) { input |= (1 << 0); } - if(keyboard_state[MKS_KEY_Z]) { input |= (1 << 1); } - if(keyboard_state[MKS_KEY_SPACE]) { input |= (1 << 2); } - if(keyboard_state[MKS_KEY_RETURN]) { input |= (1 << 3); } - if(keyboard_state[MKS_KEY_UP]) { input |= (1 << 4); } - if(keyboard_state[MKS_KEY_DOWN]) { input |= (1 << 5); } - if(keyboard_state[MKS_KEY_LEFT]) { input |= (1 << 6); } - if(keyboard_state[MKS_KEY_RIGHT]) { input |= (1 << 7); } + if(window->keyboard_state[MKS_KEY_X]) { input |= (1 << 0); } + if(window->keyboard_state[MKS_KEY_Z]) { input |= (1 << 1); } + if(window->keyboard_state[MKS_KEY_SPACE]) { input |= (1 << 2); } + if(window->keyboard_state[MKS_KEY_RETURN]) { input |= (1 << 3); } + if(window->keyboard_state[MKS_KEY_UP]) { input |= (1 << 4); } + if(window->keyboard_state[MKS_KEY_DOWN]) { input |= (1 << 5); } + if(window->keyboard_state[MKS_KEY_LEFT]) { input |= (1 << 6); } + if(window->keyboard_state[MKS_KEY_RIGHT]) { input |= (1 << 7); } nstate->ppu.input[0] = input; // Run NES emulation for one frame @@ -373,13 +374,13 @@ int main(int argc, char **argv) { dst += BUFFER_WIDTH; } - mkfw_update_keyboard_state(); - mkfw_update_modifier_state(); - mkfw_update_mouse_state(); + mkfw_update_keyboard_state(window); + mkfw_update_modifier_state(window); + mkfw_update_mouse_state(window); // Render and swap buffers render_frame(); - mkfw_swap_buffers(); + mkfw_swap_buffers(window); timer_wait(timer); } @@ -388,7 +389,7 @@ int main(int argc, char **argv) { timer_destroy(timer); // free_nes_state(&nstate); timer_shutdown(); - mkfw_cleanup(); + mkfw_cleanup(window); #endif return 0; |
