some fixes

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@398 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2008-03-27 19:04:05 +00:00
parent a5f80ce405
commit d6114368e1
7 changed files with 25 additions and 18 deletions

View file

@ -20,6 +20,8 @@ void (*PicoCartUnloadHook)(void) = NULL;
void (*PicoCartLoadProgressCB)(int percent) = NULL;
void (*PicoCDLoadProgressCB)(int percent) = NULL; // handled in Pico/cd/cd_file.c
static void PicoCartDetect(void);
/* cso struct */
typedef struct _cso_struct
{
@ -201,6 +203,7 @@ cso_failed:
file->size = ftell(f);
file->type = PMT_UNCOMPRESSED;
fseek(f, 0, SEEK_SET);
return file;
}
@ -489,12 +492,17 @@ int PicoCartInsert(unsigned char *rom,unsigned int romsize)
// notaz: add a 68k "jump one op back" opcode to the end of ROM.
// This will hang the emu, but will prevent nasty crashes.
// note: 4 bytes are padded to every ROM
if(rom != NULL)
if (rom != NULL)
*(unsigned long *)(rom+romsize) = 0xFFFE4EFA; // 4EFA FFFE byteswapped
Pico.rom=rom;
Pico.romsize=romsize;
if (SRam.data) {
free(SRam.data);
SRam.data = NULL;
}
if (PicoCartUnloadHook != NULL) {
PicoCartUnloadHook();
PicoCartUnloadHook = NULL;
@ -550,10 +558,9 @@ static int name_cmp(const char *name)
* various cart-specific things, which can't be handled by generic code
* (maybe I should start using CRC for this stuff?)
*/
void PicoCartDetect(void)
static void PicoCartDetect(void)
{
int sram_size = 0, csum;
if(SRam.data) free(SRam.data); SRam.data=0;
Pico.m.sram_reg = 0;
csum = PicoRead32(0x18c) & 0xffff;
@ -590,7 +597,7 @@ void PicoCartDetect(void)
if (sram_size)
{
SRam.data = (unsigned char *) calloc(sram_size, 1);
if(!SRam.data) return;
if (SRam.data == NULL) return;
}
SRam.changed = 0;

View file

@ -377,7 +377,6 @@ extern carthw_state_chunk *carthw_chunks;
#define CHUNK_CARTHW 64
// Cart.c
PICO_INTERNAL void PicoCartDetect(void);
extern void (*PicoCartUnloadHook)(void);
// Debug.c

View file

@ -75,10 +75,14 @@ PICO_INTERNAL int PicoResetMCD(int hard)
#endif
// use SRam.data for RAM cart
if (SRam.data) free(SRam.data);
SRam.data = NULL;
if (PicoOpt&0x8000)
SRam.data = calloc(1, 0x12000);
if (PicoOpt&0x8000) {
if (SRam.data == NULL)
SRam.data = calloc(1, 0x12000);
}
else if (SRam.data != NULL) {
free(SRam.data);
SRam.data = NULL;
}
SRam.start = SRam.end = 0; // unused
return 0;

View file

@ -642,9 +642,10 @@ Changelog
* Changed config file format, files are now human-readable. Game specific
configs are now held in single file (but old game config files are still
read).
* Fixed a bug where some key combos didn't work.
* Fixed a regression in renderer (rare graphic glitches).
* Fixed a bug where some key combos didn't work as expected.
* Fixed a regression in renderer (some graphic glitches in rare cases).
* Adjusted fast rernderer to work with more games, including VR.
* Fixed a problem where SegaCD RAM cart data was getting lost on reset.
1.35b
* PSP: mp3 code should no longer fail on 1.5 firmware.

View file

@ -353,7 +353,7 @@ int config_writelrom(const char *fname)
int size;
FILE *f;
if (strlen(lastRomFile) == 0) return 0;
if (strlen(lastRomFile) == 0) return -1;
f = fopen(fname, "r");
if (f != NULL)
@ -694,7 +694,7 @@ int config_readsect(const char *fname, const char *section)
FILE *f;
f = fopen(fname, "r");
if (f == NULL) return 0;
if (f == NULL) return -1;
if (section != NULL)
{

View file

@ -11,7 +11,6 @@
#include <linux/limits.h>
#include <ctype.h>
#include <unistd.h>
#include <sched.h>
#include <stdarg.h>
@ -653,9 +652,6 @@ static void simpleWait(int thissec, int lim_time)
gettimeofday(&tval, 0);
if (thissec != tval.tv_sec) tval.tv_usec+=1000000;
if (tval.tv_usec < lim_time)
sched_yield();
while (tval.tv_usec < lim_time)
{
spend_cycles(1024);

View file

@ -66,7 +66,7 @@ void parse_cmd_line(int argc, char *argv[])
}
if (unrecognized) {
printf("\n\n\nPicoDrive v" VERSION " (c) notaz, 2006-2007\n");
printf("\n\n\nPicoDrive v" VERSION " (c) notaz, 2006-2008\n");
printf("usage: %s [options] [romfile]\n", argv[0]);
printf( "options:\n"
"-menu <menu_path> launch a custom program on exit instead of default gp2xmenu\n"