From 425794bbd3dc842091226ddc5ed40df77946701a Mon Sep 17 00:00:00 2001 From: marian Date: Tue, 23 Jul 2024 21:56:39 +0200 Subject: [PATCH 1/2] fix size for compression mapping data (requires whole 32KB for 16MB roms) --- sw/picocart64_v1/memmap_custom.ld | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sw/picocart64_v1/memmap_custom.ld b/sw/picocart64_v1/memmap_custom.ld index 5533e45..bb18a00 100644 --- a/sw/picocart64_v1/memmap_custom.ld +++ b/sw/picocart64_v1/memmap_custom.ld @@ -263,7 +263,7 @@ SECTIONS *(.n64_rom.header) . = 16; *(.n64_rom.mapping) - . = 32768; + . = (32768 + 16); *(.n64_rom) } > N64_ROM } From 1b42b4f52569825f1bd85a98a2014c9396f638b3 Mon Sep 17 00:00:00 2001 From: marian Date: Tue, 23 Jul 2024 23:19:38 +0200 Subject: [PATCH 2/2] fix mapping table length --- sw/picocart64_v1/n64_pi_task.c | 2 +- sw/picocart64_v1/rom_vars.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sw/picocart64_v1/n64_pi_task.c b/sw/picocart64_v1/n64_pi_task.c index d6d7154..2558523 100644 --- a/sw/picocart64_v1/n64_pi_task.c +++ b/sw/picocart64_v1/n64_pi_task.c @@ -94,7 +94,7 @@ void n64_pi_run(void) do { // Pre-fetch from the address #if COMPRESSED_ROM - uint32_t chunk_index = rom_mapping[(last_addr & 0xFFFFFF) >> COMPRESSION_SHIFT_AMOUNT]; + uint16_t chunk_index = rom_mapping[(last_addr & 0xFFFFFF) >> COMPRESSION_SHIFT_AMOUNT]; const uint16_t *chunk_16 = (const uint16_t *)rom_chunks[chunk_index]; next_word = swap8(chunk_16[(last_addr & COMPRESSION_MASK) >> 1]); #else diff --git a/sw/picocart64_v1/rom_vars.h b/sw/picocart64_v1/rom_vars.h index d834f01..cdf5952 100644 --- a/sw/picocart64_v1/rom_vars.h +++ b/sw/picocart64_v1/rom_vars.h @@ -1,4 +1,4 @@ -#define MAPPING_TABLE_LEN (16384 - 8) +#define MAPPING_TABLE_LEN (16384) #define COMPRESSED_ROM 1 #define COMPRESSION_SHIFT_AMOUNT 10