diff options
author | aliaspider | 2015-11-04 17:41:52 +0100 |
---|---|---|
committer | aliaspider | 2015-11-04 17:41:52 +0100 |
commit | 47d0f0c4a19a0566912ca293ff29abd32e6d01a9 (patch) | |
tree | c01e5fd0ae859ee4848b2cb0b251d3fd3486105a /libretro | |
parent | a289acf4862feb298a47f37713fdbdae3a1c52fa (diff) | |
download | snes9x2002-47d0f0c4a19a0566912ca293ff29abd32e6d01a9.tar.gz snes9x2002-47d0f0c4a19a0566912ca293ff29abd32e6d01a9.tar.bz2 snes9x2002-47d0f0c4a19a0566912ca293ff29abd32e6d01a9.zip |
add ctr/3ds target.
Diffstat (limited to 'libretro')
-rw-r--r-- | libretro/libretro.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index f1f6757..64f5e19 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -24,6 +24,11 @@ #include "../src/cheats.h" #include "../src/display.h" +#ifdef _3DS +extern "C" void* linearMemAlign(size_t size, size_t alignment); +extern "C" void linearFree(void* mem); +#endif + #define MAP_BUTTON(id, name) S9xMapButton((id), S9xGetCommandT((name)), false) #define MAKE_BUTTON(pad, btn) (((pad)<<4)|(btn)) @@ -293,7 +298,12 @@ static void snes_init (void) GFX.Pitch = use_overscan ? 1024 : 2048; // hack to make sure GFX.Delta is always (2048 * 512 * 2) >> 1, needed for tile16_t.h +#ifdef _3DS + GFX.Screen = (uint8 *) linearMemAlign(2048 * 512 * 2 * 2, 0x80); + memset(GFX.Screen, 0x0, 2048 * 512 * 2 * 2); +#else GFX.Screen = (uint8 *) calloc(1, 2048 * 512 * 2 * 2); +#endif GFX.SubScreen = GFX.Screen + 2048 * 512 * 2; GFX.ZBuffer = (uint8 *) calloc(1, GFX.Pitch * 512 * sizeof(uint16)); GFX.SubZBuffer = (uint8 *) calloc(1, GFX.Pitch * 512 * sizeof(uint16)); @@ -337,6 +347,14 @@ void retro_deinit(void) Memory.Deinit(); S9xGraphicsDeinit(); //S9xUnmapAllControls(); + if(GFX.Screen) +#ifdef _3DS + linearFree(GFX.Screen); +#else + free(GFX.Screen); +#endif + GFX.Screen = NULL; + } void retro_reset (void) |