diff options
author | aliaspider | 2015-04-13 02:43:42 +0100 |
---|---|---|
committer | aliaspider | 2015-04-13 02:43:42 +0100 |
commit | 69b5bfc05e5736bab2e8f78e4904f9028f0ab414 (patch) | |
tree | 2d953ffa43fd54a1660d3ce7addc91342f638deb | |
parent | 5b6683bb939d5930e5cd69a5b49aa03523ce3ea3 (diff) | |
download | picogpsp-69b5bfc05e5736bab2e8f78e4904f9028f0ab414.tar.gz picogpsp-69b5bfc05e5736bab2e8f78e4904f9028f0ab414.tar.bz2 picogpsp-69b5bfc05e5736bab2e8f78e4904f9028f0ab414.zip |
allocate gba_screen_pixels on the heap.
use linearMemAlign for the 3DS target.
-rw-r--r-- | libretro.c | 17 | ||||
-rw-r--r-- | video.c | 2 | ||||
-rw-r--r-- | video.h | 2 |
3 files changed, 18 insertions, 3 deletions
@@ -8,13 +8,17 @@ #include "libretro.h" #include "memmap.h" -#if defined(_3DS) && defined(HAVE_DYNAREC) +#if defined(_3DS) +void* linearMemAlign(size_t size, size_t alignment); +void linearFree(void* mem); +#if defined(HAVE_DYNAREC) int32_t hbInit(void); void hbExit(void); int32_t HB_FlushInvalidateCache(void); int32_t HB_ReprotectMemory(void* addr, uint32_t pages, uint32_t mode, uint32_t* reprotectedPages); int hb_service_available; #endif +#endif #ifndef MAX_PATH #define MAX_PATH (512) @@ -126,6 +130,12 @@ void retro_init(void) } #endif +#ifdef _3DS + gba_screen_pixels = (uint16_t*)linearMemAlign(GBA_SCREEN_PITCH * GBA_SCREEN_HEIGHT * sizeof(uint16_t), 128); +#else + gba_screen_pixels = (uint16_t*)malloc(GBA_SCREEN_PITCH * GBA_SCREEN_HEIGHT * sizeof(uint16_t)); +#endif + } void retro_deinit(void) @@ -141,6 +151,11 @@ void retro_deinit(void) #if defined(_3DS) && defined(HAVE_DYNAREC) hbExit(); #endif +#ifdef _3DS + linearFree(gba_screen_pixels); +#else + free(gba_screen_pixels); +#endif } static retro_time_t retro_perf_dummy_get_time_usec() { return 0; } @@ -19,7 +19,7 @@ #include "common.h" -u16 gba_screen_pixels[GBA_SCREEN_PITCH * GBA_SCREEN_HEIGHT]; +u16* gba_screen_pixels; #define get_screen_pixels() gba_screen_pixels #define get_screen_pitch() GBA_SCREEN_PITCH @@ -54,6 +54,6 @@ typedef enum filter_bilinear } video_filter_type; -extern u16 gba_screen_pixels[GBA_SCREEN_PITCH * GBA_SCREEN_HEIGHT]; +extern u16* gba_screen_pixels; #endif |