summaryrefslogtreecommitdiff
path: root/mknes.c
diff options
context:
space:
mode:
Diffstat (limited to 'mknes.c')
-rw-r--r--mknes.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/mknes.c b/mknes.c
index 0ca6749..9a91376 100644
--- a/mknes.c
+++ b/mknes.c
@@ -13,6 +13,9 @@
#define WINDOW_WIDTH 320 * 3
#define WINDOW_HEIGHT 240 * 3
+#define LIKELY(x) __builtin_expect(!!(x), 1)
+#define UNLIKELY(x) __builtin_expect(!!(x), 0)
+
#ifndef restrict
# if defined(__cplusplus)
# define restrict __restrict
@@ -113,7 +116,7 @@ int main(int argc, char **argv) {
// ines2_load(&nstate, "data/nrom/Excitebike (Japan, USA).nes");
// ines2_load(&nstate, "data/nrom/Ice Climber (USA, Europe, Korea).nes");
// ines2_load(&nstate, "data/nrom/Kung Fu (Japan, USA).nes");
- ines2_load(&nstate, "data/nrom/Super Mario Bros. (World) (HVC-SM).nes");
+ // ines2_load(&nstate, "data/nrom/Super Mario Bros. (World) (HVC-SM).nes");
// ines2_load(&nstate, "data/nrom/Urban Champion (World).nes");
// ines2_load(&nstate, "data/nrom/Wrecking Crew (World).nes");
// ines2_load(&nstate, "data/nrom/scanline.nes");
@@ -128,6 +131,9 @@ int main(int argc, char **argv) {
// ines2_load(&nstate, "data/nrom/raster_demos/RasterTest3d.NES");
// ines2_load(&nstate, "data/nrom/raster_demos/RasterTest3e.NES");
// ines2_load(&nstate, "data/nrom/NEStress.NES");
+ // ines2_load(&nstate, "data/tv.nes");
+ ines2_load(&nstate, "data/Super Mario Bros. (World) (HVC-SM).zip");
+ // ines2_load(&nstate, "data/Super Mario Bros. + Duck Hunt (USA).zip");
mapper_setup(&nstate);
uint32_t lo = nstate.mapper.prg_read(&nstate, 0xfffc);
@@ -172,7 +178,7 @@ int main(int argc, char **argv) {
timer_start(timer);
while(!glfwWindowShouldClose(window)) {
- // timer_wait(timer);
+ timer_wait(timer);
glfwPollEvents();
// //
@@ -183,21 +189,21 @@ int main(int argc, char **argv) {
nstate.ppu.frame_ready = 0;
frames++;
- // uint32_t * restrict dst = buffer;
- // uint8_t * restrict src = nstate.ppu.pixels;
- // for(uint32_t y = 0; y < 240; ++y) {
- // for(uint32_t x = 0; x < 256; ++x) {
- // uint8_t val = *src++;
- // if(val >= 64) val = 0;
- // dst[x] = nes_palette[val];
- // }
- // dst += BUFFER_WIDTH;
- // }
- // apply_phosphor_decay();
- // render_frame();
+ uint32_t * restrict dst = buffer;
+ uint8_t * restrict src = nstate.ppu.pixels;
+ for(uint32_t y = 0; y < 240; ++y) {
+ for(uint32_t x = 0; x < 256; ++x) {
+ uint8_t val = *src++;
+ if(val >= 64) val = 0;
+ dst[x] = nes_palette[val];
+ }
+ dst += BUFFER_WIDTH;
+ }
+ apply_phosphor_decay();
+ render_frame();
glfwSwapBuffers(window);
}
-printf("%d\n", frames);
+printf("total frames: %6.6d total cycles: %ld\n", frames, nstate.cycles);
glfwDestroyWindow(window);
} else {
fprintf(stderr, "Failed to create window\n");