diff --git a/src/devices/screen.h b/src/devices/screen.h index ead618a..70e97e5 100644 --- a/src/devices/screen.h +++ b/src/devices/screen.h @@ -23,4 +23,4 @@ void screen_redraw(void); Uint8 screen_dei(Uxn *u, Uint8 addr); void screen_deo(Uint8 *ram, Uint8 *d, Uint8 port); -#define SCALE 3 +#define SCALE 1 diff --git a/src/uxn11.c b/src/uxn11.c index 638f469..9da7a71 100644 --- a/src/uxn11.c +++ b/src/uxn11.c @@ -35,7 +35,7 @@ char *rom_path; #define WIDTH (64 * 8) #define HEIGHT (40 * 8) -#define PAD 4 +#define PAD 0 #define CONINBUFSIZE 256 Uint16 deo_mask[] = {0xff28, 0x0300, 0xc028, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x0000, 0x0000, 0xa260, 0xa260, 0x0000, 0x0000, 0x0000, 0x0000}; @@ -68,13 +68,6 @@ uxn_deo(Uxn *u, Uint8 addr) } } -static void -emu_draw(void) -{ - screen_redraw(); - XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, PAD, PAD, uxn_screen.width * SCALE, uxn_screen.height * SCALE); -} - static int emu_start(Uxn *u, char *rom) { @@ -125,7 +118,7 @@ emu_event(Uxn *u) XNextEvent(display, &ev); switch(ev.type) { case Expose: - emu_draw(); + XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, 0, 0, uxn_screen.width, uxn_screen.height); break; case ClientMessage: { XDestroyImage(ximage); @@ -237,8 +230,11 @@ main(int argc, char **argv) for(i = 0; i < n; i++) console_input(&u, coninp[i], CONSOLE_STD); } - if(uxn_screen.x2) - emu_draw(); + if(uxn_screen.x2) { + int x1 = uxn_screen.x1, y1 = uxn_screen.y1, x2 = uxn_screen.x2, y2 = uxn_screen.y2; + screen_redraw(); + XPutImage(display, window, DefaultGC(display, 0), ximage, x1, y1, x1, y1, x2 - x1, y2 - y1); + } } XDestroyImage(ximage); return 0;