diff options
| author | Eero Tamminen <oak@helsinkinet.fi> | 2020-11-10 23:24:50 (GMT) |
|---|---|---|
| committer | Eero Tamminen <oak@helsinkinet.fi> | 2021-01-01 20:56:46 (GMT) |
| commit | 6c827e5cb90332914323d11e6cbf15f4dfccc00d (patch) | |
| tree | d937ee5c25a717fd9ee2dd1b92dc54016dab80fa | |
| parent | ee23b7899c3b06daeb8a089f1f1030fc6c7516e4 (diff) | |
| download | hatari-6c827e5cb90332914323d11e6cbf15f4dfccc00d.zip hatari-6c827e5cb90332914323d11e6cbf15f4dfccc00d.tar.gz | |
Improve memory checks
- Enforce corrections also for too small Falcon ST-RAM
amounts, not just for large unsupported ones
- Document memory amount check better
| -rw-r--r-- | src/stMemory.c | 51 |
1 files changed, 38 insertions, 13 deletions
diff --git a/src/stMemory.c b/src/stMemory.c index 3e07525..03fa582 100644 --- a/src/stMemory.c +++ b/src/stMemory.c @@ -463,18 +463,21 @@ int STMemory_CorrectSTRamSize(void) if (Config_IsMachineFalcon()) { - /* These values need to match ones used in STMemory_SetDefaultConfig() - * above. - * - * Check ranges which might have non-supported memory values: - * 10MB, 6MB & 2.5MB + /* Falcon ST RAM values need to match to ones used + * in STMemory_SetDefaultConfig() above. */ - if (STRamSize_KB > 8*1024 && STRamSize_KB < 14*1024) + if (STRamSize_KB > 8*1024) STRamSize_KB = 14*1024; - else if (STRamSize_KB > 4*1024 && STRamSize_KB < 8*1024) + else if (STRamSize_KB > 4*1024) STRamSize_KB = 8*1024; - else if (STRamSize_KB > 2*1024 && STRamSize_KB < 4*1024) + else if (STRamSize_KB > 2*1024) STRamSize_KB = 4*1024; + else if (STRamSize_KB > 1024) + STRamSize_KB = 2*1024; + else if (STRamSize_KB > 512) + STRamSize_KB = 1024; + else + STRamSize_KB = 512; if (STRamSize_KB != ConfigureParams.Memory.STRamSize_KB) { @@ -928,12 +931,34 @@ int STMemory_RAM_Validate_Size_KB ( int TotalMem ) if ( TotalMem <= 14 ) TotalMem *= 1024; - /* New format where ST RAM size is in KB */ - if ( ( TotalMem == 128 ) || ( TotalMem == 256 ) || ( TotalMem == 512 ) || ( TotalMem == 640 ) - || ( TotalMem == 1024 ) || ( TotalMem == 2048 ) || ( TotalMem == 2176 ) || ( TotalMem == 2560 ) - || ( TotalMem == 4096 ) || ( TotalMem == 8*1024 ) || ( TotalMem == 10*1024 ) || ( TotalMem == 14*1024 ) ) + /* New format where ST RAM size is in KB + * + * These memory amounts are accepted for all machine types, but in + * case of Falcon, rounded up later in STMemory_SetDefaultConfig(), + * to amounts Falcon mem config reg actually supports + */ + switch (TotalMem) + { + /* all ST/STE MMU chipsets */ + case 128: + case 256: + /* other than IMP ST/STE MMU chipset (mixed banks) */ + case 640: + case 2176: + case 2560: + /* (Mega)ST/STE/MegaSTE/TT/Falcon */ + case 512: + case 1024: + case 2048: + case 4096: + /* MegaSTE/TT/Falcon */ + case 8*1024: + /* MegaSTE/TT max */ + case 10*1024: + /* Falcon max */ + case 14*1024: return TotalMem; - + } return -1; } |
