X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2FArea.c;h=1dd6fc49a11688fd42ae086af7da02d1e8a78731;hb=3aa1e148a28da9b4e10e824984f7b3a4908b1ace;hp=bfc1ffa5ca8cf3cd05d1fac4764746660dbd6f49;hpb=83bd0b76aba19ff62368cfee76089e15579e3b7c;p=picodrive.git diff --git a/Pico/cd/Area.c b/Pico/cd/Area.c index bfc1ffa..1dd6fc4 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; @@ -243,6 +240,11 @@ int PicoCdLoadState(void *file) /* after load events */ if (Pico_mcd->s68k_regs[3]&4) // 1M mode? wram_2M_to_1M(Pico_mcd->word_ram2M); + PicoMemResetCD(Pico_mcd->s68k_regs[3]); +#ifdef _ASM_CD_MEMORY_C + 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); // restore hint vector