static bool disk_set_image_index(unsigned int index)
{
- cd_img_type cd_type;
+ enum cd_img_type cd_type;
int ret;
if (index >= sizeof(disks) / sizeof(disks[0]))
ret = -1;
cd_type = PicoCdCheck(disks[index].fname, NULL);
if (cd_type != CIT_NOT_CD)
- ret = Insert_CD(disks[index].fname, cd_type);
+ ret = cdd_load(disks[index].fname, cd_type);
if (ret != 0) {
lprintf("Load failed, invalid CD image?\n");
return 0;
size_t retro_get_memory_size(unsigned id)
{
+ unsigned int i;
+ int sum;
+
if (id != RETRO_MEMORY_SAVE_RAM)
return 0;
if (PicoAHW & PAHW_MCD)
// bram
return 0x2000;
- else
+
+ if (Pico.m.frame_count == 0)
return SRam.size;
+
+ // if game doesn't write to sram, don't report it to
+ // libretro so that RA doesn't write out zeroed .srm
+ for (i = 0, sum = 0; i < SRam.size; i++)
+ sum |= SRam.data[i];
+
+ return (sum != 0) ? SRam.size : 0;
}
void retro_reset(void)
#endif
PsndRate = 44100;
PicoAutoRgnOrder = 0x184; // US, EU, JP
- PicoCDBuffers = 0;
vout_width = 320;
vout_height = 240;