From: David H. <dav...@si...> - 2002-09-30 07:00:13
|
On Mon, Sep 30, 2002 at 03:18:37AM +0200, Maarten ter Huurne wrote: > On Sunday 29 September 2002 17:18, David Heremans wrote: > > On Sun, Sep 29, 2002 at 04:03:11PM +0200, Manuel Bilderbeek wrote: > > > BTW, he also said that MESS can emulate Super Lode Runner... :-) > > > > It's not about emulating Super Lode Runner, it is about CORRECTLY > > emulating Super Lode Runner. > > > > If you put in a supper lode runner cartridge in openMSX it will run, the > > problem is that if you put the cartrdige in a turned on MSX computer, > > the bankswitching is triggered if the addrress on the bus is 'corect' > > but the cartridge doesn't check if it is actually selected to write to > > or not. it simply ignores the slotselect signals,a nd thus reacts as if > > the bankswitch logic resides in every slot/subslot. > > It won't run, because it actually needs the fact that the cartridge monitors > wirtes to #0000 even though it is not slot selected there. > Dang, that means that I onec tested hacked rom image :-( (Or a wrongly named one) but it ran. > Although it is perfectly valid from a technical point of view to say "this > cart violates the MSX spec, we won't emulate it", users will just notice that > it doesn't run. So if we can make it run without messing up openMSX code and > performance, we should try to do so. > > One option would be to make a proxy device which monitors a specified address > or set of addresses and register that proxy in every slot. The proxy forwards > all writes to the actual device in that slot and if the address matches its > monitoring address(es), it also forwards the write to a specified device (for > example, the Super Lode Runner mapper). > > The proxy would degrade performance, but only if the proxy is used. In other > words, any hardware conforming to the MSX spec would not need a proxy and > would therefore not suffer a performance penalty. Hardware that does need the > proxy does get a performance penalty, but that is a lighter penalty for > violation the MSX spec than not being able to run at all. The memory mapper already used the same idea as the proxy you are describing here although it evolved in a master-slave thingy. > > - in pages which contain monitor addresses (page 0 only for Super Lode Runner, > AFAIK), register a proxy in front of the actual device in that slot. This > happens for all existing slots, for example in an NMS8250 it would happen in > slot 0, 1, 2, 3.0, 3.1, 3.2 and 3.3. as implementation note: I would simply use al slot/subslot combinations. If a certain one doesn't exist (0.2 fi in the NMS8250) it simply isn't called, and it would simplify the code . David -- openMSX - the open source MSX emulator that aims for perfection http://openmsx.sf.net/ -- The sendmail effect: It learns us that any complex technology which doesn't come with documentation must be the best available. |