diff --git a/src/flashcart/ed64/ed64.c b/src/flashcart/ed64/ed64.c index 8d3abf89..a453b117 100644 --- a/src/flashcart/ed64/ed64.c +++ b/src/flashcart/ed64/ed64.c @@ -129,10 +129,11 @@ static flashcart_err_t ed64_load_rom (char *rom_path, flashcart_progress_callbac ed64_save_type_t type = ed64_ll_get_save_type(); switch (type) { case SAVE_TYPE_SRAM: - rom_size -= KiB(32) - KiB(16); + rom_size -= KiB(32); + break; case SAVE_TYPE_SRAM_128K: case SAVE_TYPE_FLASHRAM: - rom_size -= KiB(128) - KiB(16); + rom_size -= KiB(128); break; default: break; diff --git a/src/flashcart/ed64/ed64_ll.c b/src/flashcart/ed64/ed64_ll.c index 1dd5d7b9..23b2fe02 100644 --- a/src/flashcart/ed64/ed64_ll.c +++ b/src/flashcart/ed64/ed64_ll.c @@ -237,7 +237,9 @@ int ed64_ll_get_sram_128 (uint8_t *buffer, int size) { dma_wait(); - pi_dma_from_sram(buffer, -(size - KiB(16)), size) ; + // Offset Large RAM size 128KiB with a 16KiB nudge to allocate enough space + // We do this because 128Kib is not recognised and a 32KiB allocates too little + pi_dma_from_sram(buffer, -(size - KiB(16)), size); dma_wait(); @@ -324,6 +326,8 @@ int ed64_ll_set_sram_128 (uint8_t *buffer, int size) { data_cache_hit_writeback_invalidate(buffer,size); dma_wait(); + // Offset Large RAM size 128KiB with a 16KiB nudge to allocate enough space + // We do this because 128Kib is not recognised and a 32KiB allocates too little pi_dma_to_sram(buffer, -(size - KiB(16)), size); data_cache_hit_writeback_invalidate(buffer,size);