#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <SDL.h>
#include "6502.h"
#include "gfx.h"
#include "sys.h"
extern int buttons, pr;
SDL_Surface* display;
void drawpixel(int x, int y, int c) {
int* p = display->pixels;
if(x >= 256 || y >= 240) return;
p[x + y * 256] = c;
}
int frames = 0;
const int key[8] = {
'a',
'b',
SDLK_TAB,
SDLK_RETURN,
SDLK_UP,
SDLK_DOWN,
SDLK_LEFT,
SDLK_RIGHT};
void updatedisplay() {
int i;
SDL_Flip(display);
frames++;
SDL_Event e;
while(SDL_PollEvent(&e)) {
switch(e.type) {
case SDL_QUIT: exit(0);
case SDL_KEYDOWN:
for(i=0;i<8;i++)
if(key[i] == e.key.keysym.sym)
buttons |= (1<<i);
if(e.key.keysym.sym == '0') pr = 1;
if(e.key.keysym.sym == 'p') save();
break;
case SDL_KEYUP: for(i=0;i<8;i++) if(key[i] == e.key.keysym.sym) buttons &= ~(1<<i); break;
}
}
}
void alhandler() {
char buf[512];
snprintf(buf, 511, "%d FPS", frames);
SDL_WM_SetCaption(buf, buf);
}
void gfxinit() {
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0)
die("can't initialize SDL: %s", SDL_GetError());
display = SDL_SetVideoMode(256, 240, 32, 0);
signal(SIGALRM, alhandler);
alarm(1);
}
|