X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2FArea.c;h=dbd66cbd6a5cdafcc0f465457c0f8d2b64a155e2;hb=da42200b24749eee63cccf49d87781b861146e9f;hp=baf501f2d809ea459aec592cdf1b96ca2c6c23cb;hpb=48e8482fc2d74c9b96e581241390bade986acb22;p=picodrive.git diff --git a/Pico/cd/Area.c b/Pico/cd/Area.c index baf501f..dbd66cb 100644 --- a/Pico/cd/Area.c +++ b/Pico/cd/Area.c @@ -1,9 +1,5 @@ -// This is part of Pico Library - -// (c) Copyright 2007 notaz, All rights reserved. -// Free for non-commercial use. - -// For commercial use, separate licencing terms must be obtained. +// Savestate handling for emulated Sega/Mega CD machine. +// (c) Copyright 2007, Grazvydas "notaz" Ignotas #include "../PicoInt.h" @@ -46,6 +42,7 @@ typedef enum { static char *chunk_names[] = { + "INVALID!", "Saving.. M68K state", "Saving.. RAM", "Saving.. VRAM", @@ -92,7 +89,7 @@ static int write_chunk(chunk_name_e name, int len, void *data, void *file) if (PicoStateProgressCB) PicoStateProgressCB(chunk_names[name]); \ if (!write_chunk(name, sizeof(buff), &buff, file)) return 1; -int PicoCdSaveState(void *file) +PICO_INTERNAL int PicoCdSaveState(void *file) { unsigned char buff[0x60]; void *ym2612_regs = YM2612GetRegs(); @@ -172,7 +169,7 @@ static int g_read_offs = 0; #define CHECKED_READ_BUFF(buff) CHECKED_READ2(sizeof(buff), &buff); -int PicoCdLoadState(void *file) +PICO_INTERNAL int PicoCdLoadState(void *file) { unsigned char buff[0x60]; int ver, len; @@ -245,7 +242,8 @@ int PicoCdLoadState(void *file) wram_2M_to_1M(Pico_mcd->word_ram2M); #ifdef _ASM_CD_MEMORY_C PicoMemResetCD(Pico_mcd->s68k_regs[3]); - PicoMemResetCDdecode(Pico_mcd->s68k_regs[3]); + if (Pico_mcd->s68k_regs[3]&4) + PicoMemResetCDdecode(Pico_mcd->s68k_regs[3]); #endif if (Pico_mcd->m.audio_track > 0 && Pico_mcd->m.audio_track < Pico_mcd->TOC.Last_Track) mp3_start_play(Pico_mcd->TOC.Tracks[Pico_mcd->m.audio_track].F, Pico_mcd->m.audio_offset);