summaryrefslogtreecommitdiff
path: root/mknes.c
diff options
context:
space:
mode:
Diffstat (limited to 'mknes.c')
-rw-r--r--mknes.c55
1 files changed, 28 insertions, 27 deletions
diff --git a/mknes.c b/mknes.c
index 37225ff..a6d224d 100644
--- a/mknes.c
+++ b/mknes.c
@@ -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;