Multiple memory mappers in MSX system

Página 2/2
1 |

Por flyguille

Prophet (3031)

Imagen del flyguille

05-05-2010, 00:39

How knows the soft if it is a mapped memory and not just plain RAM? , just testing RAM values on each switching.
I do not understand, sorry.

PD: the sub-slot selector (aka FFFFh) has nothing to do with mappers, it is just part of the MSX engine that is the sub-slot selector, it has nothing to do with the mapper/ram module in cartridge, so, you only want to watch the SLTSEL signal of the msx cartridge's bus.
Thus writing to FC-FF will change values of all the mappers. In case of two mappers used by two programs (for example, one is in "foreground" and another in interrupt background), interrupt code, after changing FC-FF values, should return them back and only then return execution to the foreground code. That's not possible without reading the port, however can use current mirror FC-FF values stored in some memory.

And amen, that is the reason that "Interrupt routine" DO NOT touchs the mapper selectors!, it works only with page3 for variables and page 0 for code, that is system memory all the time and ROM respectively, indeed if you changes the page3 or page0 with ints enabled in your foreground application, you are out of the standard.

In reverse way, if you do a int user routine that touch memory mapper selector, you are out of the standard, so If you are doing a GAME that needs (as all) the int service for clocking music and gameplay, you will make sure to:

1) not to touch mapper registers in INT service. And if you changes the slot/sslot you will restore it.


2) touch anything at INT service, but make sure to dominate the system, it means fuck off ROMs, and msx standard.

or a work around, make sure that your game saves in page3 (system ram), a copy of the current values of the slot selector page1 & 2.

So at the INT service, you will be able to known the mapper selectors value and to restore it at exit.

And bec

Página 2/2
1 |