/*
* libretro core glue for PicoDrive
* (C) notaz, 2013
+ * (C) aliaspider, 2016
+ * (C) Daniel De Matteis, 2013
*
* This work is licensed under the terms of MAME license.
* See COPYING file in the top-level directory.
void linearFree(void* mem);
static int ctr_svchack_successful = 0;
+
+#elif defined(VITA)
+#define TARGET_SIZE_2 24 // 2^24 = 16 megabytes
+
+#include <psp2/kernel/sysmem.h>
+static int sceBlock;
+int getVMBlock();
+int _newlib_vm_size_user = 1 << TARGET_SIZE_2;
+
#endif
#include <pico/pico_int.h>
void cache_flush_d_inval_i(void *start, void *end)
{
#ifdef __arm__
+ size_t len = (char *)end - (char *)start;
#if defined(__BLACKBERRY_QNX__)
msync(start, end - start, MS_SYNC | MS_CACHE_ONLY | MS_INVALIDATE_ICACHE);
#elif defined(__MACH__)
- size_t len = (char *)end - (char *)start;
sys_dcache_flush(start, len);
sys_icache_invalidate(start, len);
#elif defined(_3DS)
ctr_flush_invalidate_cache();
+#elif defined(VITA)
+ sceKernelSyncVMDomain(sceBlock, start, len);
#else
__clear_cache(start, end);
#endif
exit(1);
}
-
+#elif defined(VITA)
+ int ret = sceKernelOpenVMDomain();
#else
int ret = mprotect(ptr, size, PROT_READ | PROT_WRITE | PROT_EXEC);
if (ret != 0 && log_cb)
{
memset(info, 0, sizeof(*info));
info->library_name = "PicoDrive";
- info->library_version = VERSION;
+#ifndef GIT_VERSION
+#define GIT_VERSION ""
+#endif
+ info->library_version = VERSION GIT_VERSION;
info->valid_extensions = "bin|gen|smd|md|32x|cue|iso|sms";
info->need_fullpath = true;
}
return NULL;
}
+static void sram_reset()
+{
+ SRam.data = NULL;
+ SRam.start = 0;
+ SRam.end = 0;
+ SRam.flags = '\0';
+ SRam.unused2 = '\0';
+ SRam.changed = '\0' ;
+ SRam.eeprom_type = '\0';
+ SRam.unused3 = '\0';
+ SRam.eeprom_bit_cl = '\0';
+ SRam.eeprom_bit_in = '\0';
+ SRam.eeprom_bit_out = '\0';
+ SRam.size = 0;
+}
+
bool retro_load_game(const struct retro_game_info *info)
{
enum media_type_e media_type;
{ 0 },
};
+ sram_reset();
+
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) {
if (log_cb)
#ifdef _3DS
ctr_svchack_successful = ctr_svchack_init();
+#elif defined(VITA)
+ sceBlock = getVMBlock();
#endif
PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80