From ae3072df23ee080aefa137fc65585804b2fd4aeb Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Tue, 16 Jan 2024 21:25:51 -0800 Subject: [PATCH 1/3] Add in cartridge RAM to SMS/GG memory maps Also changes http to https for smspower links --- src/rcheevos/consoleinfo.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/rcheevos/consoleinfo.c b/src/rcheevos/consoleinfo.c index 427db73b..d832421d 100644 --- a/src/rcheevos/consoleinfo.c +++ b/src/rcheevos/consoleinfo.c @@ -463,9 +463,17 @@ static const rc_memory_region_t _rc_memory_regions_gamecube[] = { static const rc_memory_regions_t rc_memory_regions_gamecube = { _rc_memory_regions_gamecube, 1 }; /* ===== Game Gear ===== */ -/* http://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/Mappers */ static const rc_memory_region_t _rc_memory_regions_game_gear[] = { { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" } + /* GG/SMS have various possible mappings for cartridge memory depending on the mapper used. + * However, these ultimately do not map all of their memory at once, typically requiring banking. + * Thus, the "real address" used is just a virtual address mapping all cartridge memory in one contiguous block. + * Note that this may possibly refer to non-battery backed "extended RAM" so this isn't strictly RC_MEMORY_TYPE_SAVE_RAM. + * libretro cores expose "extended RAM" as RETRO_MEMORY_SAVE_RAM regardless however. + */ + { 0x002000U, 0x009FFFU, 0x010000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" } }; static const rc_memory_regions_t rc_memory_regions_game_gear = { _rc_memory_regions_game_gear, 1 }; @@ -531,14 +539,22 @@ static const rc_memory_region_t _rc_memory_regions_magnavox_odyssey_2[] = { static const rc_memory_regions_t rc_memory_regions_magnavox_odyssey_2 = { _rc_memory_regions_magnavox_odyssey_2, 2 }; /* ===== Master System ===== */ -/* http://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/Mappers */ static const rc_memory_region_t _rc_memory_regions_master_system[] = { { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" } + /* GG/SMS have various possible mappings for cartridge memory depending on the mapper used. + * However, these ultimately do not map all of their memory at once, typically requiring banking. + * Thus, the "real address" used is just a virtual address mapping all cartridge memory in one contiguous block. + * Note that this may possibly refer to non-battery backed "extended RAM" so this isn't strictly RC_MEMORY_TYPE_SAVE_RAM. + * libretro cores expose "extended RAM" as RETRO_MEMORY_SAVE_RAM regardless however. + */ + { 0x002000U, 0x009FFFU, 0x010000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" } }; static const rc_memory_regions_t rc_memory_regions_master_system = { _rc_memory_regions_master_system, 1 }; /* ===== MegaDrive (Genesis) ===== */ -/* http://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/MemoryMap */ static const rc_memory_region_t _rc_memory_regions_megadrive[] = { { 0x000000U, 0x00FFFFU, 0xFF0000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, { 0x010000U, 0x01FFFFU, 0x000000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" } @@ -772,7 +788,7 @@ static const rc_memory_region_t _rc_memory_regions_saturn[] = { static const rc_memory_regions_t rc_memory_regions_saturn = { _rc_memory_regions_saturn, 2 }; /* ===== SG-1000 ===== */ -/* http://www.smspower.org/Development/MemoryMap */ +/* https://www.smspower.org/Development/MemoryMap */ static const rc_memory_region_t _rc_memory_regions_sg1000[] = { { 0x000000U, 0x0003FFU, 0xC000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, /* https://github.com/libretro/FBNeo/blob/697801c6262be6ca91615cf905444d3e039bc06f/src/burn/drv/sg1000/d_sg1000.cpp#L210-L237 */ From 2644e2858481076774c8fd645adf492d7e89e046 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Tue, 16 Jan 2024 21:30:07 -0800 Subject: [PATCH 2/3] add missing ,s --- src/rcheevos/consoleinfo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rcheevos/consoleinfo.c b/src/rcheevos/consoleinfo.c index d832421d..cabf307a 100644 --- a/src/rcheevos/consoleinfo.c +++ b/src/rcheevos/consoleinfo.c @@ -466,7 +466,7 @@ static const rc_memory_regions_t rc_memory_regions_gamecube = { _rc_memory_regio /* https://www.smspower.org/Development/MemoryMap */ /* https://www.smspower.org/Development/Mappers */ static const rc_memory_region_t _rc_memory_regions_game_gear[] = { - { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" } + { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, /* GG/SMS have various possible mappings for cartridge memory depending on the mapper used. * However, these ultimately do not map all of their memory at once, typically requiring banking. * Thus, the "real address" used is just a virtual address mapping all cartridge memory in one contiguous block. @@ -542,7 +542,7 @@ static const rc_memory_regions_t rc_memory_regions_magnavox_odyssey_2 = { _rc_me /* https://www.smspower.org/Development/MemoryMap */ /* https://www.smspower.org/Development/Mappers */ static const rc_memory_region_t _rc_memory_regions_master_system[] = { - { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" } + { 0x000000U, 0x001FFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, /* GG/SMS have various possible mappings for cartridge memory depending on the mapper used. * However, these ultimately do not map all of their memory at once, typically requiring banking. * Thus, the "real address" used is just a virtual address mapping all cartridge memory in one contiguous block. From e1e2183e1ce8cafe3f84e27c5f9660f701501b47 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Thu, 2 May 2024 16:56:02 -0700 Subject: [PATCH 3/3] Correct number of SMS/GG memory region, update tests --- src/rcheevos/consoleinfo.c | 4 ++-- test/rcheevos/test_consoleinfo.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rcheevos/consoleinfo.c b/src/rcheevos/consoleinfo.c index cabf307a..58c2c501 100644 --- a/src/rcheevos/consoleinfo.c +++ b/src/rcheevos/consoleinfo.c @@ -475,7 +475,7 @@ static const rc_memory_region_t _rc_memory_regions_game_gear[] = { */ { 0x002000U, 0x009FFFU, 0x010000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" } }; -static const rc_memory_regions_t rc_memory_regions_game_gear = { _rc_memory_regions_game_gear, 1 }; +static const rc_memory_regions_t rc_memory_regions_game_gear = { _rc_memory_regions_game_gear, 2 }; /* ===== Intellivision ===== */ /* http://wiki.intellivision.us/index.php/Memory_Map */ @@ -551,7 +551,7 @@ static const rc_memory_region_t _rc_memory_regions_master_system[] = { */ { 0x002000U, 0x009FFFU, 0x010000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" } }; -static const rc_memory_regions_t rc_memory_regions_master_system = { _rc_memory_regions_master_system, 1 }; +static const rc_memory_regions_t rc_memory_regions_master_system = { _rc_memory_regions_master_system, 2 }; /* ===== MegaDrive (Genesis) ===== */ /* https://www.smspower.org/Development/MemoryMap */ diff --git a/test/rcheevos/test_consoleinfo.c b/test/rcheevos/test_consoleinfo.c index 0ff928df..c465d748 100644 --- a/test/rcheevos/test_consoleinfo.c +++ b/test/rcheevos/test_consoleinfo.c @@ -148,11 +148,11 @@ void test_consoleinfo(void) { TEST_PARAMS2(test_memory, RC_CONSOLE_GAMEBOY_COLOR, 0x016000); TEST_PARAMS2(test_memory, RC_CONSOLE_GAMEBOY_ADVANCE, 0x058000); TEST_PARAMS2(test_memory, RC_CONSOLE_GAMECUBE, 0x01800000); - TEST_PARAMS2(test_memory, RC_CONSOLE_GAME_GEAR, 0x002000); + TEST_PARAMS2(test_memory, RC_CONSOLE_GAME_GEAR, 0x00A000); TEST_PARAMS2(test_memory, RC_CONSOLE_INTELLIVISION, 0x040080); TEST_PARAMS2(test_memory, RC_CONSOLE_INTERTON_VC_4000, 0x000600); TEST_PARAMS2(test_memory, RC_CONSOLE_MAGNAVOX_ODYSSEY2, 0x000140); - TEST_PARAMS2(test_memory, RC_CONSOLE_MASTER_SYSTEM, 0x002000); + TEST_PARAMS2(test_memory, RC_CONSOLE_MASTER_SYSTEM, 0x00A000); TEST_PARAMS2(test_memory, RC_CONSOLE_MEGA_DRIVE, 0x020000); TEST_PARAMS2(test_memory, RC_CONSOLE_MEGADUCK, 0x010000); TEST_PARAMS2(test_memory, RC_CONSOLE_MSX, 0x080000);