load state ability from command line

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@564 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2008-07-25 19:53:23 +00:00
parent 58b75cc51a
commit e163b67f96
3 changed files with 62 additions and 18 deletions

View file

@ -9,6 +9,7 @@
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/soundcard.h>
#include <linux/fb.h>
#include <fcntl.h>
#include <errno.h>
@ -16,15 +17,15 @@
#include "../gp2x/usbjoy.h"
#include "../common/arm_utils.h"
static volatile unsigned int *memregs;
static volatile unsigned int *memregs = MAP_FAILED;
//static
int memdev = 0;
static int sounddev = -1, mixerdev = -1, touchdev = -1;
static int fbdev = -1, sounddev = -1, mixerdev = -1, touchdev = -1;
static int touchcal[7] = { 6203, 0, -1501397, 0, -4200, 16132680, 65536 };
//#define SCREEN_MAP_SIZE (((800*(480+11)*2)+0xfff)&~0xfff)
#define SCREEN_MAP_SIZE (800*480*2)
static void *screen;
static void *screen = MAP_FAILED;
void *gp2x_screen;
@ -197,8 +198,8 @@ void gp2x_sound_volume(int l, int r)
/* common */
void gp2x_init(void)
{
// struct fb_fix_screeninfo fbfix;
int fbdev;
struct fb_fix_screeninfo fbfix;
int ret;
printf("entering init()\n"); fflush(stdout);
@ -208,13 +209,27 @@ void gp2x_init(void)
printf("open(\"/dev/mem\") failed with %i\n", errno);
exit(1);
}
/*
memregs = mmap(0, 0x01000000, PROT_READ|PROT_WRITE, MAP_SHARED, memdev, 0x48000000);
if (memregs == MAP_FAILED)
{
printf("mmap(memregs) failed with %i\n", errno);
exit(1);
}
*/
ret = ioctl(fbdev, FBIOGET_FSCREENINFO, &fbfix);
if (ret == -1)
{
printf("ioctl(fbdev) failed with %i\n", errno);
exit(1);
}
// squidge hack
if (fbfix.line_length != 800*2)
{
gp2x_screen = malloc(800*640*2);
return;
}
fbdev = open("/dev/fb0", O_RDWR);
if (fbdev == -1)
@ -223,14 +238,6 @@ void gp2x_init(void)
exit(1);
}
/*
ret = ioctl(fbdev, FBIOGET_FSCREENINFO, &fbfix);
if (ret == -1)
{
printf("ioctl(fbdev) failed with %i\n", errno);
exit(1);
}
*/
screen = mmap(0, SCREEN_MAP_SIZE, PROT_WRITE|PROT_READ, MAP_SHARED, fbdev, 0);
if (screen == MAP_FAILED)
{
@ -269,9 +276,12 @@ void gp2x_deinit(void)
{
//gp2x_video_changemode(15);
munmap(screen, SCREEN_MAP_SIZE);
munmap((void *)memregs, 0x10000);
if (screen != MAP_FAILED)
munmap(screen, SCREEN_MAP_SIZE);
if (memregs != MAP_FAILED)
munmap((void *)memregs, 0x10000);
close(memdev);
if (fbdev >= 0) close(fbdev);
if (mixerdev >= 0) close(mixerdev);
if (sounddev >= 0) close(sounddev);
if (touchdev >= 0) close(touchdev);