In short, is there some risk or problem in swapping the ROM page mirrored(is this the correct word?) with ASC16 memory mapper to slot 2 maybe a dozen times in a short timespan (I guess within 3 screen refreshes' time)? I'd prefer knowing if there's a showstopper before I go deeper into adding memory mapper support to my game engine.
The situation in greater detail... I looked into updating my adventure game engine (the one I used in Jäästä) to allow the use of a memory mapper to facilitate larger games.
Currently, I store all references to locations, scripts and everything as 16-bit memory addresses in ROM. I thought that if the actual executable code fits in one page, that can stay loaded/usable/whatever-the-correct-term-is as long as the game is running, but page 2 would have to change to mirror whichever page I want to read data from.
Since I can tell what each read address is supposed to be (location, item, script, compressed string, ...), I thought I could use the two most significant bits in the "address" to tell which ROM page of that type this address refers to (say, 2nd page of graphics could be the 5th page in the ROM file, the 1st page with compressed strings the 3rd in the ROM file and so on). The actual memory address pointed to will have those bits set to 1 and 0 to point to the correct slot anyway.
However, this way when the player moved to a new location, the game would have to do roughly the following "page swaps" in quick succession:
- read the location record from one page
- read the graphics records from one page, return to location record page
- go through all item records (on one page) to find if they are at the new location; return to location record page.
- start interpreting the location entry script on one page, which usually displays the location description automatically (again, the string read from yet another page).
- return to the page of the script that caused the transition to the new location.