comparison libblastem.c @ 1926:94f37e4b1469

Add memory hook for genesis/megadrive save and cheevos support
author negativeExponent <negativeExponent@users.noreply.github.com>
date Mon, 13 Apr 2020 21:56:00 -0700
parents 81b059e3ded6
children 9fd4bedc1a31
comparison
equal deleted inserted replaced
1925:039553703c20 1926:94f37e4b1469
267 } 267 }
268 268
269 /* Gets region of memory. */ 269 /* Gets region of memory. */
270 RETRO_API void *retro_get_memory_data(unsigned id) 270 RETRO_API void *retro_get_memory_data(unsigned id)
271 { 271 {
272 if (id == RETRO_MEMORY_SYSTEM_RAM) 272 switch (id) {
273 { 273 case RETRO_MEMORY_SYSTEM_RAM:
274 switch (stype) 274 switch (stype) {
275 { 275 case SYSTEM_GENESIS: {
276 case SYSTEM_GENESIS:
277 {
278 genesis_context *gen = (genesis_context *)current_system; 276 genesis_context *gen = (genesis_context *)current_system;
279 return (uint8_t *)gen->work_ram; 277 return (uint8_t *)gen->work_ram;
280 } 278 }
281 break;
282 #ifndef NO_Z80 279 #ifndef NO_Z80
283 case SYSTEM_SMS: 280 case SYSTEM_SMS: {
284 {
285 sms_context *sms = (sms_context *)current_system; 281 sms_context *sms = (sms_context *)current_system;
286 return sms->ram; 282 return sms->ram;
287 } 283 }
284 #endif
285 }
288 break; 286 break;
289 #endif 287 case RETRO_MEMORY_SAVE_RAM:
290 } 288 if (stype == SYSTEM_GENESIS) {
289 genesis_context *gen = (genesis_context *)current_system;
290 if (gen->save_type != SAVE_NONE)
291 return gen->save_storage;
292 }
293 break;
294 default:
295 break;
291 } 296 }
292 return NULL; 297 return NULL;
293 } 298 }
294 299
295 RETRO_API size_t retro_get_memory_size(unsigned id) 300 RETRO_API size_t retro_get_memory_size(unsigned id)
296 { 301 {
297 if (id == RETRO_MEMORY_SYSTEM_RAM) 302 switch (id) {
298 { 303 case RETRO_MEMORY_SYSTEM_RAM:
299 switch (stype) 304 switch (stype) {
300 {
301 case SYSTEM_GENESIS: 305 case SYSTEM_GENESIS:
302 return RAM_WORDS * sizeof(uint16_t); 306 return RAM_WORDS * sizeof(uint16_t);
303 #ifndef NO_Z80 307 #ifndef NO_Z80
304 case SYSTEM_SMS: 308 case SYSTEM_SMS:
305 return SMS_RAM_SIZE; 309 return SMS_RAM_SIZE;
306 #endif 310 #endif
307 } 311 }
312 break;
313 case RETRO_MEMORY_SAVE_RAM:
314 if (stype == SYSTEM_GENESIS) {
315 genesis_context *gen = (genesis_context *)current_system;
316 if (gen->save_type != SAVE_NONE)
317 return gen->save_size;
318 }
319 break;
320 default:
321 break;
308 } 322 }
309 return 0; 323 return 0;
310 } 324 }
311 325
312 //blastem render backend API implementation 326 //blastem render backend API implementation