I knew you would port Magic Floor. I knew it. Welp. Gotta wait for NO$SNS update now.nocash wrote:Okay, got the thing emulated & documented. Booting from CDROM works fine, and even the Tray eject button is emulated as extra gimmick. Documentation should cover about everything, from component list, memory and I/O map, and volume/bootsector info and specs for the BIOS functions at 00h:Exxxh.
For the CDROM emulation part, I'll still need to add something that avoids problems with zerofilled SRAM (that makes the BIOS think that the checksum is good, and 0 files exist... and 0 bytes are free). And, I've a few other CDROM-unrelated details on my todo-list (like adding some final notes to the NSS and Nintendo power specs). I hope to get a no$sns update released next some days.
Anyways, before somebody else releases the first SNES CD game, here's one: http://problemkaputt.de/magicflr.htm (with binary and source code included). For the records: That is the first-ever SNES CD / Super Disc game released ever! The image is in burnable CUE/BIN format, although no$sns is simply ignoring the CUE file's content (supports only MODE1 .bin with 800h-byte sectors). Alternately, ISO will be also supported, allowing to use MODE1/MODE2 discs with 920h-byte sectors, that would also support ADPCM discs (haven't emulated ADPCM or CD-DA playback yet though).
Just for curiosity, here's the mechacon command log from no$sns TTY debug message window, recorded when booting the above game:Code: Select all
Mechacon: D51F01234F --> FFFF10B00F (Status Request) Mechacon: D51F01234F --> FFFF10B00F (Status Request) Mechacon: D01F --> FFFF (Stop) Mechacon: D51F01234F --> FFFF10100F (Status Request) Mechacon: D51F01234F --> FFFF10100F (Status Request) Mechacon: D51F01234F --> FFFF10100F (Status Request) Mechacon: D51F01234F --> FFFF10100F (Status Request) Mechacon: D51F01234F --> FFFF10100F (Status Request) Mechacon: B000216F --> FFFFFFFF (Access MM/SS/FF) Mechacon: D02F --> FFFF (Play) Mechacon: D51F01234F --> FFFF10200F (Status Request) Mechacon: D03F --> FFFF (Pause) Mechacon: B000200F --> FFFFFFFF (Access MM/SS/FF) Mechacon: D02F --> FFFF (Play) Mechacon: D51F01234F --> FFFF10200F (Status Request) Mechacon: D03F --> FFFF (Pause) Mechacon: B000217F --> FFFFFFFF (Access MM/SS/FF) Mechacon: D02F --> FFFF (Play) Mechacon: D51F01234F --> FFFF10200F (Status Request) Mechacon: D51F01234F --> FFFF10200F (Status Request) Mechacon: D03F --> FFFF (Pause) Mechacon: D01F --> FFFF (Stop)
Anyway because I actually checked the source code, here's a picture of the Backup RAM Manager:

It can be accessed by pressing Select ONLY if the CD-ROM System is detected.