From 9ca78a78dcf4f7bc538b0a123c165450fa71fbd2 Mon Sep 17 00:00:00 2001 From: retro-wertz Date: Sun, 18 Feb 2018 11:53:48 +0800 Subject: [PATCH] Mapper30: Update compatibility with libretro api --- src/boards/unrom512.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/boards/unrom512.c b/src/boards/unrom512.c index a303ac5..d4df1a6 100644 --- a/src/boards/unrom512.c +++ b/src/boards/unrom512.c @@ -37,10 +37,17 @@ #include "mapinc.h" #include "../ines.h" +/* Workaround for libretro api compatibility */ +#define ROM_size_max 32 +#define flashdata_size (ROM_size_max * 0x4000) +#define flash_write_count_size (ROM_size_max * 4 * sizeof(uint32)) +static uint8 fceumm_flash_buf[flashdata_size + flash_write_count_size]; +static uint32 fceumm_flash_buf_size = sizeof(fceumm_flash_buf); + static uint8 latche, latcheinit, bus_conflict, chrram_mask, software_id=0; static uint16 latcha; -static uint8 *flashdata; -static uint32 *flash_write_count; +static uint8 *flashdata = fceumm_flash_buf + flash_write_count_size; +static uint32 *flash_write_count = (uint32*)fceumm_flash_buf; static uint8 *FlashPage[32]; /* static uint32 *FlashWriteCountPage[32]; */ /* static uint8 flashloaded = 0; */ @@ -139,15 +146,8 @@ static void UNROM512LatchPower(void) { } static void UNROM512LatchClose(void) { - if (flash_write_count) - FCEU_gfree(flash_write_count); - if (flashdata) - FCEU_gfree(flashdata); - flash_write_count = NULL; - flashdata = NULL; } - static void UNROM512LSync() { int erase_a[5] = { 0x9555, 0xAAAA, 0x9555, 0x9555, 0xAAAA }; int erase_d[5] = { 0xAA, 0x55, 0x80, 0xAA, 0x55 }; @@ -210,6 +210,7 @@ static void UNROM512HSync() { } void UNROM512_Init(CartInfo *info) { + memset(fceumm_flash_buf, 0x00, fceumm_flash_buf_size); flash_state = 0; flash_bank = 0; flash_save = info->battery; @@ -231,12 +232,8 @@ void UNROM512_Init(CartInfo *info) { GameStateRestore = StateRestore; if (flash_save) { - flashdata = (uint8*)FCEU_gmalloc(ROM_size * 0x4000); - flash_write_count = (uint32*)FCEU_gmalloc(ROM_size * 4 * sizeof(uint32)); - info->SaveGame[0] = (uint8*)flash_write_count; - info->SaveGame[1] = flashdata; - info->SaveGameLen[0] = ROM_size * 4 * sizeof(uint32); - info->SaveGameLen[1] = ROM_size * 0x4000; + info->SaveGame[0] = fceumm_flash_buf; + info->SaveGameLen[0] = fceumm_flash_buf_size; AddExState(flash_write_count,ROM_size * 4 * sizeof(uint32), 0, "FLASH_WRITE_COUNT"); AddExState(flashdata,ROM_size * 0x4000, 0, "FLASH_DATA"); AddExState(&flash_state, 1, 0, "FLASH_STATE");