TL;DR: If you want memory, use MEMF_ANY. Since OS1.3, don't use the MEMF_FAST flag anywhere in application code targeting 68k+OCS/ECS/AGA Amigas!
I have Amiga knowledge. Below, "Amiga" means the original 68k architecture with AmigaOS up to 3.x (this does not use MMU features). For other Amigas, this might not apply (but it could apply for them too.)
- Amigas *can* have up to 2 types of memory, Chip RAM and Fast RAM*
- All Amigas have Chip RAM, but it could all have been allocated, while there is Fast RAM available.
- Not all Amigas have or can add Fast RAM (easily). All Fast RAM could have been allocated, while there is still Chip RAM available.
- Chip RAM needs only be specified for structures and buffers directly used by hardware DMA**
- Fast RAM does not need to be specified. The OS automatically gives Fast RAM first, if type MEMF_ANY (=0) is specified. There are no structures that must lie in Fast RAM. AmigaOS will prioritize Fast before Chip automatically, so if Fast RAM is what you want, specify MEMF_ANY.
Therefore, all (ALL) allocations of memory should use type MEMF_ANY, unless you specifically need Chip RAM for reserving a buffer for use with hardware DMA (e.g. loading or holding a sound, sprite, copper list, or raw image).
If there are many MEMF_FAST occurrences, this could stop FPC programs from running at some random-seeming run-time point and it could be difficult to find. ("I have 'memory', why?")
A search/replace from MEMF_FAST to MEMF_ANY would make the codebase more correct than wrong, and more correct than now (if there are more references, that is). You might also look for the remaining types, because usually only MEMF_ANY and MEMF_CHIP is used for virtually all software.
* The A1000 has "WOM", but this is written before the OS boots. The CD32 has NVRAM, used at low level to save game data as on other consoles.
** "Hardware" meaning the motherboard (chipset). I obviously don't know all expansion cards, but some early SCSI controllers requires Chip RAM buffers for their DMA controller. The driver takes care of copying to the actual loading destination in ANY ram.