#include "common/version.h"
#include "libretro.h"
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
static retro_video_refresh_t video_cb;
static retro_input_poll_t input_poll_cb;
static retro_input_state_t input_state_cb;
void *plat_mremap(void *ptr, size_t oldsize, size_t newsize)
{
+#ifdef __linux__
void *ret = mremap(ptr, oldsize, newsize, 0);
if (ret == MAP_FAILED)
return NULL;
return ret;
+#else
+ void *tmp, *ret;
+ size_t preserve_size;
+
+ preserve_size = oldsize;
+ if (preserve_size > newsize)
+ preserve_size = newsize;
+ tmp = malloc(preserve_size);
+ if (tmp == NULL)
+ return NULL;
+ memcpy(tmp, ptr, preserve_size);
+
+ munmap(ptr, oldsize);
+ ret = mmap(ptr, newsize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ if (ret == MAP_FAILED) {
+ free(tmp);
+ return NULL;
+ }
+ memcpy(ret, tmp, preserve_size);
+ free(tmp);
+ return ret;
+#endif
}
void plat_munmap(void *ptr, size_t size)
memset(info, 0, sizeof(*info));
info->library_name = "PicoDrive";
info->library_version = VERSION;
- info->valid_extensions = "bin|gen|smd|32x|cue|iso|sms";
+ info->valid_extensions = "bin|gen|smd|md|32x|cue|iso|sms";
info->need_fullpath = true;
}
environ_cb(RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE, &disk_control);
PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80
- | POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_SVP_DRC
- | POPT_ACC_SPRITES|POPT_EN_32X|POPT_EN_PWM
- | POPT_DIS_32C_BORDER;
+ | POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_MCD_GFX
+ | POPT_EN_32X|POPT_EN_PWM
+ | POPT_ACC_SPRITES|POPT_DIS_32C_BORDER;
+#ifdef __arm__
+ PicoOpt |= POPT_EN_SVP_DRC;
+#endif
PsndRate = 44100;
PicoAutoRgnOrder = 0x184; // US, EU, JP
PicoCDBuffers = 0;
- p32x_msh2_multiplier = MSH2_MULTI_DEFAULT;
- p32x_ssh2_multiplier = SSH2_MULTI_DEFAULT;
-
vout_width = 320;
vout_height = 240;
vout_buf = malloc(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2);