Mercurial > repos > blastem
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 |