notaz.gp2x.de
/
fceu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
usb joys, custom pal
[fceu.git]
/
drivers
/
gp2x
/
minimal.c
diff --git
a/drivers/gp2x/minimal.c
b/drivers/gp2x/minimal.c
index
ba4ffe0
..
e11643e
100644
(file)
--- a/
drivers/gp2x/minimal.c
+++ b/
drivers/gp2x/minimal.c
@@
-40,6
+40,7
@@
volatile unsigned short *gp2x_memregs;
volatile unsigned long *gp2x_memregl;
\r
static void *gp2x_screens[4];
\r
static int screensel = 0;
\r
volatile unsigned long *gp2x_memregl;
\r
static void *gp2x_screens[4];
\r
static int screensel = 0;
\r
+static int gp2x_screen_offs = 0;
\r
//static
\r
int memdev = 0;
\r
static int sounddev = 0, mixerdev = 0;
\r
//static
\r
int memdev = 0;
\r
static int sounddev = 0, mixerdev = 0;
\r
@@
-57,20
+58,18
@@
static int gp2x_screenaddrs_use[4];
static unsigned short gp2x_screenaddr_old[4];
\r
\r
\r
static unsigned short gp2x_screenaddr_old[4];
\r
\r
\r
-// hack to simplify thing for fceu
\r
-static int scaling_enabled = 0;
\r
-
\r
/* video stuff */
\r
void gp2x_video_flip(void)
\r
{
\r
unsigned short lsw, msw;
\r
int addr = gp2x_screenaddrs_use[screensel&3];
\r
\r
/* video stuff */
\r
void gp2x_video_flip(void)
\r
{
\r
unsigned short lsw, msw;
\r
int addr = gp2x_screenaddrs_use[screensel&3];
\r
\r
-
if (scaling_enabled) addr += 32
;
\r
+
addr += gp2x_screen_offs
;
\r
\r
// since we are using the mmu hack, we must flush the cache first
\r
// (the params are most likely wrong, but they seem to work somehow)
\r
\r
// since we are using the mmu hack, we must flush the cache first
\r
// (the params are most likely wrong, but they seem to work somehow)
\r
- flushcache(addr, addr + 320*240*2, 0);
\r
+ //flushcache(addr, addr + 320*240*2, 0);
\r
+ flushcache(gp2x_screen, (char *)gp2x_screen + 320*240*2, 0);
\r
\r
lsw = (unsigned short) addr;
\r
msw = (unsigned short)(addr >> 16);
\r
\r
lsw = (unsigned short) addr;
\r
msw = (unsigned short)(addr >> 16);
\r
@@
-133,9
+132,6
@@
void gp2x_video_RGB_setscaling(int ln_offs, int W, int H)
int bpp = (gp2x_memregs[0x28DA>>1]>>9)&0x3;
\r
unsigned short scalw;
\r
\r
int bpp = (gp2x_memregs[0x28DA>>1]>>9)&0x3;
\r
unsigned short scalw;
\r
\r
- // fceu hack
\r
- scaling_enabled = (W == 320) ? 0 : 1;
\r
-
\r
// set offset
\r
gp2x_screenaddrs_use[0] = gp2x_screenaddrs[0] + ln_offs * 320 * bpp;
\r
gp2x_screenaddrs_use[1] = gp2x_screenaddrs[1] + ln_offs * 320 * bpp;
\r
// set offset
\r
gp2x_screenaddrs_use[0] = gp2x_screenaddrs[0] + ln_offs * 320 * bpp;
\r
gp2x_screenaddrs_use[1] = gp2x_screenaddrs[1] + ln_offs * 320 * bpp;
\r
@@
-163,6
+159,10
@@
void gp2x_video_RGB_setscaling(int ln_offs, int W, int H)
gp2x_memregl[0x2908>>2]=(unsigned long)((float)escalah *bpp *(H/240.0));
\r
}
\r
\r
gp2x_memregl[0x2908>>2]=(unsigned long)((float)escalah *bpp *(H/240.0));
\r
}
\r
\r
+void gp2x_video_set_offs(int offs)
\r
+{
\r
+ gp2x_screen_offs = offs;
\r
+}
\r
\r
void gp2x_memcpy_buffers(int buffers, void *data, int offset, int len)
\r
{
\r
\r
void gp2x_memcpy_buffers(int buffers, void *data, int offset, int len)
\r
{
\r
@@
-220,7
+220,10
@@
void gp2x_start_sound(int rate, int bits, int stereo)
if (sounddev > 0) close(sounddev);
\r
sounddev = open("/dev/dsp", O_WRONLY|O_ASYNC);
\r
if (sounddev == -1)
\r
if (sounddev > 0) close(sounddev);
\r
sounddev = open("/dev/dsp", O_WRONLY|O_ASYNC);
\r
if (sounddev == -1)
\r
+ {
\r
printf("open(\"/dev/dsp\") failed with %i\n", errno);
\r
printf("open(\"/dev/dsp\") failed with %i\n", errno);
\r
+ return;
\r
+ }
\r
\r
ioctl(sounddev, SNDCTL_DSP_SPEED, &rate);
\r
ioctl(sounddev, SNDCTL_DSP_SETFMT, &bits);
\r
\r
ioctl(sounddev, SNDCTL_DSP_SPEED, &rate);
\r
ioctl(sounddev, SNDCTL_DSP_SETFMT, &bits);
\r