summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEero Tamminen <oak@helsinkinet.fi>2020-11-10 23:24:50 (GMT)
committerEero Tamminen <oak@helsinkinet.fi>2021-01-01 20:56:46 (GMT)
commit6c827e5cb90332914323d11e6cbf15f4dfccc00d (patch)
treed937ee5c25a717fd9ee2dd1b92dc54016dab80fa
parentee23b7899c3b06daeb8a089f1f1030fc6c7516e4 (diff)
downloadhatari-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.c51
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;
}