Yes, that was considered. The "Flash" or "RAM" decision was a very difficult one, and that took a lot of thinking, as each one has its pros and cons.
Let me elaborate on it (Warning, long message ahead). I know the people from the "other forum" will read this and use it to throw some shit at us, hello pals
.
First some numbers (feel free to correct me if some are wrong):
The largest neogeo game is kof2003, with 89MBytes (712MEGA in SNK size count), that is 1(P1)+7(P2)+64(C)+16(V)+0.5(S)+0.5(M)
The SD card interface of the STM32 runs at a maximum of 25MHz, when using 4 bit SD protocol that means 12.5MBytes per sec, so it takes around 7 secs to read the biggest rom SD, assumming zero CPU and filesystem overhead, and having the data contiguously stored in the SD so there is no SD commands overhead. That's pretty unrealistic as adding a filesystem (FAT32 for example) would cause this time to probably double as you must go back to the FAT each cluster, and this adds CPU, reading and SD commands overhead.
Writting 90MBytes in a 70ns PSRAM, assumming the write speed is also 70ns (it's usually lower) it's about 14MB/s, so it takes about 7 seconds to write
Writting the game to Flash memory is a value that we know from the NeoSD, and it's about 3:00 (+/- 10%) minus the time it takes to read from SD, but it's the total time what matters. Don't try to compute this value by adding the time it takes to erase + write each flash, as you'll get a much higher number, the NeoSD uses the large flash wait times to program another one, so the CPU is waiting for the flashing to end as little as possible, by issuing several flash operations in parallel.
So there are 2 main choices (the times there are for the largest games):
Use Flash roms (NeoSD):
Pros:
Instant boot time once flashed (just check a NeoSD on an AES with stock bios to see what instant means
)
The BIOS can't tell it apart from a real cart, there is no extra code being run or trickery involved.
You can boot straight to the BIOS test menu and it will see the cart as a real one.
Once a game is loaded, you don't need the SD card in anymore, so you can have (expensive) single game carts, especially when using the "arcade mode" in NeoSD.
Cons:
Slow game change, as it needs to erase and rewrite the flash roms.
Limited graphics for the frontend, as they must be stored in a reserved area in the flash.
So this version gives a more "real" cart experience, and favors people that don't switch games often. Booting to the same game has 0 delay.
Use RAM (PSRAM):
Pros:
Very fast game change, as with the values computed above, and giving some room for overhead, it would take 20/25 seconds to rewrite the largest game (we will use this time as a base from now on)
More graphics for the frontend menus, as you can rewrite them every time you enter the menu
Cons:
You must wait up to 20/25 seconds every time the Neogeo boots. So boot to kof2003 10 times and you already waited the same time than flashing it.
You must write the game (or at least the P data) before the bios boots, otherwise it will show cross hatch so you have 2 options: either keep the board reset while you do that (having a ugly random colored squares screen, and it also won't work on all boards) or always boot to a small bootstrap that shows a "loading" screen (this will cause its own kind of issues with the BIOS though, especially with the test mode).
This version has a less "real" experience as you either wait, or see an interim screen before the game boots. This favors people that switchs games a lot. And booting to the same game several times in a row quickly approaches to the time taken to flash it. Also it might have some issues with BIOS as you aren't booting straight to the game code.
Then you have the hybrid version, mixing flash and RAM (for example P, S and M in flash, and V and C in RAM):
Pros:
As the P roms are in flash, the BIOS can't tell it apart from a real cart.
You can boot straight to the BIOS test menu and it will see the cart as a real one.
Flash times, although present, are shorter than the full flash version.
More graphics for the frontend menus, as you can rewrite them every time you enter the menu.
Cons:
When switching games, you must wait up to around 1 minute till the P, M and S flashes are written.
Every time the machine boots, you must wait for the C and V data to be written, that's 15/20s
Unless you want to show glitches, you must ensure C and V data is written before the game is actually ran so a small bootstrap and a "loading" screen will be needed.
You get the worst from the previous solutions, have to wait for the data to be flashed when switching games, and then again when booting the machine, and you can't boot straight to the game without a bootstrap screen.
So you can improve that mode a bit by making it "multislot", it's a bit misleading calling it that way, as it's very different on how the actual MVS multislot works so we may call it "multicart" better (or x-in-1), and I think this is the way DS & co cart works (I think, as noone has seen it apart from prototype images):
Pros:
As the P roms are in flash, the BIOS can't tell it apart from a real cart.
You can boot straight to the BIOS test menu and it will see the cart as a real one.
If you switch between the same set of games, you get zero flashing time.
You can quickly switch games in loaded set.
More graphics for the frontend menus, as you can rewrite them every time you enter the menu.
Cons:
You need space to hold all the games (at least the flash), adding more chips increases price and space and complicate the design.
When switching to games not in the loaded set, you must wait up to around 1 minute till the P, M and S flashes are written.
Switching to a different game in the loaded set is not the same experience than a real multislot board (probably reset when switching)
Every time the machine boots, you must wait for the C and V data to be written, that's 15/20s (more on this below)
Unless you want to show glitches, you must ensure C and V data is written before the game is actually ran so a small bootstrap and a "loading" screen will be needed (or hold the neogeo in reset)
So, this version is better than the plain hybrid version as long as you play the same x games, that is, it's good for somebody that likes to play the same set of games. Still it's not the real cart experience, it doesn't have instant loading as an actual cart does. It needs either reset or bootstrap loading (which could mess some BIOS routines). Switching games is not the real multislot thing either.
Also this adds more questions to the design:
It's clear that you need at least x times the flash size for the data that is stored in flash, but hoy much RAM should you add?
Enough for a game and then rewrite it when switching games? that would cause a game switch delay if you can't fit all the loaded games in RAM as the new C and V data load (say you have kof2003, samsho5, svc and mslug5 loaded, that would have a 20s delay when switching games).
Big enough to store the x games? say, if you have a 4-in-1 cart, you'll need a 2GBit RAM to store the C roms,and a 512MBit one to store V roms, then you can't use single chip PSRAMs, as they aren't that big, you'll need to either separate it in several chips (adding cost and size to the board) or use plain DRAM (that adds complexity to the fpga design, as it will need to handle DRAM quirks. All fpga manufacturers provide DRAM control blocks though).
Also, if you have RAM big enough for all games, do you load all games when booting? That would be up to 20 secs per loaded game, 1 minute if you have 4 big games loaded. If you decide to load just the first game, and then another one when switching to it the first time, this will not be better than the "only space for a game" version unless you decide to switch to a new game and then back to a previously played one.
tl;dr; The flash version was chosen because it gives the closer to original cart experience, with minor code interferences, zero boot time, although it has a higher game switch cost (that you can use to go to the fridge for a beer, so that's not bad
). If you enable Arcade mode, and remove the SD card so NeoSD no longer runs (you can't enter the menu that way), there is really no way to tell that game apart from an original running in ROM carts software wise.