I'm working on a bank-switching cartridge (originally intended for Tunnels & Trolls). It has 512 KB of Flash ROM.
I've decided to use a layout like this:
Common area 0: Directly mapped to the lower part of the cartridge. Meant for frequently-used code and data, standard library, etc.
Bank area: Mapped to a selectable location on the cartridge
Common area 1: Mapped to a selectable location on the cartridge
Having two mappable areas allows e.g. for code from one bank to read data from another bank. This layout and the names are inspired by the Z180.
How big should these areas be?
Personally, I prefer a large common area 0, allowing large parts of the code to be placed there. Therefore the current prototype firmware used a 24 KB common area 0, a 4 KB bank area, a 4 KB common area 1.
On the other hand, having larger mappabe areas would allow for larger arrays in mapped memory, and would allow more efficient use of mapped memroy for code (since objects in mapped memory are difficult to handle if they cross bank boundaries).
What's do you think?