Jump to content

What's the best bank sizes for a bankswitching cartridge?


Recommended Posts

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?




Link to comment
Share on other sites

my current project is 16kb permanent


and 16kb bankable


as far as i know all the current bigger than 32kb roms use this method so it would be most compatible and useful to use that standard.


i see your point as it would be nice to have a larger 24kb permanent area but you get used to it.

  • Like 1
Link to comment
Share on other sites

for me the important thing is to have an emulator that support the format. Currently BlueMSX (and i think coolCV) support the mega cart format.


Which is i think 16k permanent , 16kb switchable.


But indeed i think it would be better to have 24k permanant and 8k switchable. But if no emulator support it , i could not use it.

Link to comment
Share on other sites

I wouldn't have less than 8K banks, there's not really any point in going smaller.


But for accessing banked data from banked code, one wants two areas. If each is 8KB, that leaves only 16KB for the common area 0.




P.S.: The bank sizes are not hardwired; I intended to offer the kit with different firmware for different bank sizes. Maybe I should even look into allowing to change the bank size at runtime.

Link to comment
Share on other sites

If the window for the coleco cartridges is 32KB maybe it is better to have

16k permanent

8+8k banked

32k ram


RAM is not that easy either. The cartridge slot doesn't have a read or write line. There is no easy way to distinguish between read and write accesses. If one really wanted to add RAM, I guess one could use one of the address lines for that, i.e. map 8 KB of RAM into a 16 KB window. Then e.g. the value written at address x could be read from address x + 16384. I guess compiler support for such an architecture would be unlikely though.

Again, the expansion port makes it easy to add RAM.



Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...