mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-05 14:57:46 -04:00
UIQ3 bugfixes, SVP drc indirect jumps, stuff
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@572 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
ac087c0e3a
commit
61f66fe0ab
7 changed files with 30 additions and 30 deletions
|
@ -402,7 +402,7 @@ test your BIOS.
|
||||||
The Sega/Mega CD unit had two blinking LEDs (red and green) on it. This option
|
The Sega/Mega CD unit had two blinking LEDs (red and green) on it. This option
|
||||||
will display them on top-left corner of the screen.
|
will display them on top-left corner of the screen.
|
||||||
|
|
||||||
@@2. "CDDA audio (using mp3s)"
|
@@2. "CDDA audio"
|
||||||
This option enables CD audio playback.
|
This option enables CD audio playback.
|
||||||
|
|
||||||
@@2. "PCM audio"
|
@@2. "PCM audio"
|
||||||
|
@ -497,6 +497,7 @@ both buttons for that action to happen).
|
||||||
There is also option to enable 6 button pad (will allow you to configure XYZ
|
There is also option to enable 6 button pad (will allow you to configure XYZ
|
||||||
keys), and an option to set turbo rate (in Hz) for turbo buttons.
|
keys), and an option to set turbo rate (in Hz) for turbo buttons.
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef UIQ
|
||||||
|
|
||||||
|
|
||||||
Cheat support
|
Cheat support
|
||||||
|
@ -535,6 +536,7 @@ PATCH FILE: Sonic 2.bin.pat
|
||||||
|
|
||||||
Put the file into your ROMs directory. Then load the .pat file as you would
|
Put the file into your ROMs directory. Then load the .pat file as you would
|
||||||
a ROM. Then Cheat Menu Option should appear in main menu.
|
a ROM. Then Cheat Menu Option should appear in main menu.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
What is emulated?
|
What is emulated?
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#ifdef UIQ3
|
#ifdef __EPOC32__
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
23
common/emu.c
23
common/emu.c
|
@ -44,9 +44,11 @@ extern void menu_romload_end(void);
|
||||||
|
|
||||||
|
|
||||||
// utilities
|
// utilities
|
||||||
static void strlwr_(char* string)
|
static void strlwr_(char *string)
|
||||||
{
|
{
|
||||||
while ( (*string++ = (char)tolower(*string)) );
|
char *p;
|
||||||
|
for (p = string; *p; p++)
|
||||||
|
*p = (char)tolower(*p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int try_rfn_cut(char *fname)
|
static int try_rfn_cut(char *fname)
|
||||||
|
@ -345,6 +347,7 @@ int emu_ReloadRom(char *rom_fname)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
get_ext(rom_fname, ext);
|
get_ext(rom_fname, ext);
|
||||||
|
lprintf("gmv loaded for %s\n", rom_fname);
|
||||||
}
|
}
|
||||||
else if (!strcmp(ext, ".pat"))
|
else if (!strcmp(ext, ".pat"))
|
||||||
{
|
{
|
||||||
|
@ -407,7 +410,9 @@ int emu_ReloadRom(char *rom_fname)
|
||||||
rom_loaded = 0;
|
rom_loaded = 0;
|
||||||
|
|
||||||
if ( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {
|
if ( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {
|
||||||
sprintf(menuErrorMsg, "PicoCartLoad() failed.");
|
if (ret == 2) sprintf(menuErrorMsg, "Out of memory");
|
||||||
|
else if (ret == 3) sprintf(menuErrorMsg, "Read failed");
|
||||||
|
else sprintf(menuErrorMsg, "PicoCartLoad() failed.");
|
||||||
lprintf("%s\n", menuErrorMsg);
|
lprintf("%s\n", menuErrorMsg);
|
||||||
goto fail2;
|
goto fail2;
|
||||||
}
|
}
|
||||||
|
@ -774,13 +779,13 @@ void emu_updateMovie(void)
|
||||||
} else {
|
} else {
|
||||||
// MXYZ SACB RLDU
|
// MXYZ SACB RLDU
|
||||||
PicoPad[0] = ~movie_data[offs] & 0x8f; // ! SCBA RLDU
|
PicoPad[0] = ~movie_data[offs] & 0x8f; // ! SCBA RLDU
|
||||||
if(!(movie_data[offs] & 0x10)) PicoPad[0] |= 0x40; // A
|
if(!(movie_data[offs] & 0x10)) PicoPad[0] |= 0x40; // C
|
||||||
if(!(movie_data[offs] & 0x20)) PicoPad[0] |= 0x10; // B
|
if(!(movie_data[offs] & 0x20)) PicoPad[0] |= 0x10; // A
|
||||||
if(!(movie_data[offs] & 0x40)) PicoPad[0] |= 0x20; // A
|
if(!(movie_data[offs] & 0x40)) PicoPad[0] |= 0x20; // B
|
||||||
PicoPad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU
|
PicoPad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU
|
||||||
if(!(movie_data[offs+1] & 0x10)) PicoPad[1] |= 0x40; // A
|
if(!(movie_data[offs+1] & 0x10)) PicoPad[1] |= 0x40; // C
|
||||||
if(!(movie_data[offs+1] & 0x20)) PicoPad[1] |= 0x10; // B
|
if(!(movie_data[offs+1] & 0x20)) PicoPad[1] |= 0x10; // A
|
||||||
if(!(movie_data[offs+1] & 0x40)) PicoPad[1] |= 0x20; // A
|
if(!(movie_data[offs+1] & 0x40)) PicoPad[1] |= 0x20; // B
|
||||||
PicoPad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX
|
PicoPad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX
|
||||||
if(!(movie_data[offs+2] & 0x01)) PicoPad[0] |= 0x0400; // X
|
if(!(movie_data[offs+2] & 0x01)) PicoPad[0] |= 0x0400; // X
|
||||||
if(!(movie_data[offs+2] & 0x04)) PicoPad[0] |= 0x0100; // Z
|
if(!(movie_data[offs+2] & 0x04)) PicoPad[0] |= 0x0100; // Z
|
||||||
|
|
11
gp2x/emu.c
11
gp2x/emu.c
|
@ -283,7 +283,7 @@ static void blit(const char *fps, const char *notice)
|
||||||
// 8bit accurate renderer
|
// 8bit accurate renderer
|
||||||
if (Pico.m.dirtyPal)
|
if (Pico.m.dirtyPal)
|
||||||
{
|
{
|
||||||
int pallen = 0x40;
|
int pallen = 0xc0;
|
||||||
Pico.m.dirtyPal = 0;
|
Pico.m.dirtyPal = 0;
|
||||||
if (Pico.video.reg[0xC]&8) // shadow/hilight mode
|
if (Pico.video.reg[0xC]&8) // shadow/hilight mode
|
||||||
{
|
{
|
||||||
|
@ -293,21 +293,14 @@ static void blit(const char *fps, const char *notice)
|
||||||
memcpy32(localPal+0xc0, localPal+0x40, 0x40);
|
memcpy32(localPal+0xc0, localPal+0x40, 0x40);
|
||||||
pallen = 0x100;
|
pallen = 0x100;
|
||||||
}
|
}
|
||||||
else if (rendstatus & PDRAW_ACC_SPRITES) {
|
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
|
||||||
memcpy32(localPal+0x40, localPal, 0x40);
|
|
||||||
memcpy32(localPal+0x80, localPal, 0x40);
|
|
||||||
memcpy32(localPal+0xc0, localPal, 0x40);
|
|
||||||
pallen = 0x100;
|
|
||||||
}
|
|
||||||
else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes
|
else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
||||||
vidConvCpyRGB32(localPal+0x40, HighPal, 0x40);
|
vidConvCpyRGB32(localPal+0x40, HighPal, 0x40);
|
||||||
vidConvCpyRGB32(localPal+0x80, HighPal+0x40, 0x40);
|
vidConvCpyRGB32(localPal+0x80, HighPal+0x40, 0x40);
|
||||||
pallen = 0xc0;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
||||||
|
memcpy32(localPal+0x80, localPal, 0x40); // for spr prio mess
|
||||||
}
|
}
|
||||||
if (pallen > 0xc0) {
|
if (pallen > 0xc0) {
|
||||||
localPal[0xc0] = 0x0000c000;
|
localPal[0xc0] = 0x0000c000;
|
||||||
|
|
|
@ -29,5 +29,11 @@
|
||||||
//#define dprintf(f,...) printf("%05i:%03i: " f "\n",Pico.m.frame_count,Pico.m.scanline,##__VA_ARGS__)
|
//#define dprintf(f,...) printf("%05i:%03i: " f "\n",Pico.m.frame_count,Pico.m.scanline,##__VA_ARGS__)
|
||||||
#define dprintf(x...)
|
#define dprintf(x...)
|
||||||
|
|
||||||
|
// platform
|
||||||
|
#define PLAT_MAX_KEYS 32
|
||||||
|
#define PLAT_HAVE_JOY 1
|
||||||
|
#define PATH_SEP "/"
|
||||||
|
#define PATH_SEP_C '/'
|
||||||
|
|
||||||
#endif //PORT_CONFIG_H
|
#endif //PORT_CONFIG_H
|
||||||
|
|
||||||
|
|
|
@ -350,7 +350,7 @@ static void blit(const char *fps, const char *notice)
|
||||||
// 8bit accurate renderer
|
// 8bit accurate renderer
|
||||||
if (Pico.m.dirtyPal)
|
if (Pico.m.dirtyPal)
|
||||||
{
|
{
|
||||||
int pallen = 0x40;
|
int pallen = 0xc0;
|
||||||
Pico.m.dirtyPal = 0;
|
Pico.m.dirtyPal = 0;
|
||||||
if (Pico.video.reg[0xC]&8) // shadow/hilight mode
|
if (Pico.video.reg[0xC]&8) // shadow/hilight mode
|
||||||
{
|
{
|
||||||
|
@ -360,13 +360,6 @@ static void blit(const char *fps, const char *notice)
|
||||||
memcpy32(localPal+0xc0, localPal+0x40, 0x40);
|
memcpy32(localPal+0xc0, localPal+0x40, 0x40);
|
||||||
pallen = 0x100;
|
pallen = 0x100;
|
||||||
}
|
}
|
||||||
else if (rendstatus & PDRAW_ACC_SPRITES) {
|
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
|
||||||
memcpy32(localPal+0x40, localPal, 0x40);
|
|
||||||
memcpy32(localPal+0x80, localPal, 0x40);
|
|
||||||
memcpy32(localPal+0xc0, localPal, 0x40);
|
|
||||||
pallen = 0x100;
|
|
||||||
}
|
|
||||||
else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes
|
else if (rendstatus & PDRAW_SONIC_MODE) { // mid-frame palette changes
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
||||||
vidConvCpyRGB32(localPal+0x40, HighPal, 0x40);
|
vidConvCpyRGB32(localPal+0x40, HighPal, 0x40);
|
||||||
|
@ -375,6 +368,7 @@ static void blit(const char *fps, const char *notice)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
vidConvCpyRGB32(localPal, Pico.cram, 0x40);
|
||||||
|
memcpy32(localPal+0x80, localPal, 0x40);
|
||||||
}
|
}
|
||||||
if (pallen > 0xc0) {
|
if (pallen > 0xc0) {
|
||||||
localPal[0xc0] = 0x0000c000;
|
localPal[0xc0] = 0x0000c000;
|
||||||
|
|
|
@ -263,7 +263,7 @@ static void do_pal_update(int allow_sh, int allow_as)
|
||||||
localPal[0xe0] = 0;
|
localPal[0xe0] = 0;
|
||||||
localPal[0xf0] = 0x001f;
|
localPal[0xf0] = 0x001f;
|
||||||
}
|
}
|
||||||
else if (allow_as && (rendstatus & PDRAW_ACC_SPRITES))
|
else if (allow_as && (rendstatus & PDRAW_SPR_LO_ON_HI))
|
||||||
{
|
{
|
||||||
memcpy32((int *)dpal+0x80/2, (void *)localPal, 0x40*2/4);
|
memcpy32((int *)dpal+0x80/2, (void *)localPal, 0x40*2/4);
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ static void EmuScanPrepare(void)
|
||||||
|
|
||||||
if (Pico.m.dirtyPal)
|
if (Pico.m.dirtyPal)
|
||||||
do_pal_update(1, 1);
|
do_pal_update(1, 1);
|
||||||
if ((rendstatus & PDRAW_ACC_SPRITES) && !(Pico.video.reg[0xC]&8))
|
if ((rendstatus & PDRAW_SPR_LO_ON_HI) && !(Pico.video.reg[0xC]&8))
|
||||||
amips_clut_f = amips_clut_6bit;
|
amips_clut_f = amips_clut_6bit;
|
||||||
else amips_clut_f = amips_clut;
|
else amips_clut_f = amips_clut;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue