System 573 has precipitated something that’s actually needed to be done since the Konami GQ and GV drivers were first added: proper, flexible SCSI handling. Right now, the code to emulate a specific SCSI device (such as a CD-ROM or harddisk) is tied in with the SCSI controller we use it with (e.g. the AMD 53CF96 used by Konami). This is not correct – it prevents emulation of more than one device on a SCSI bus, or more than one instance of a device (arcade hardware exists that has dual CD-ROM drives). It also means that each new SCSI controller implemented has to include it’s own device emulation. That’s just not the way we want to do things – MESS is going to need multiple SCSI devices per controller eventually, and so will MAME if we ever emulate some of the later Bemani boards.
The proper solution is to encapsulate each type of SCSI device (harddisk, CD-ROM, scanner, whatever) in it’s own source file with a well-defined interface. A configuration struct can then be passed into the SCSI controller on startup that says “I want a CD-ROM on SCSI ID 4 using this CHD file, a second CD-ROM on ID 5 using this other CHD file, and a harddisk on ID 1 using a third CHD file” and everything will work properly unless you’re still on dial-up when that driver hits 😉 This not only improves device configuration flexibility, but it means that if a new SCSI controller is emulated it automatically has the ability to talk to already-debugged fully functional harddisk and CD-ROM devices. I’ve got that work well under way now and I should be able to submit it shortly after Aaron’s done destroying the codebase.
Incidentally, for the nitpickers out there who are going to protest that System 573 uses an IDE CD-ROM, you’re right, but there’s a “but” lurking. All IDE devices which are not harddisks (including CD and DVD-ROM drives and burners) actually use the ATAPI protocol, which means they send standard SCSI commands over an IDE bus. The devices themselves are actually SCSI, they just have an IDE connector (!) So for the purposes of this rewrite, the ATAPI controller is actually the same thing as a SCSI controller, and it’ll also be able to talk to the new generic SCSI devices.













