msxnet > MSX Utilities > Creating ROM images from real cartridges Creating ROM images from real cartridges You have this really rare MSX cartridge, and you'd like to play it on an emulator and share it with the world. How do you proceed? Here I'd like to explain just how to do that. For this purpose, I've written two MSX programs, getrom.bin and saverom.com. Depending on what cartridge type you want to save, you should make your choice. SaveROM requires all the information from the user, but GetROM autodetects it for you; unfortunally this does not work for a whole lot of cartridges. GetROM.BIN GetROM.BIN is a MSX BASIC binary; you need to start if from MSX BASIC by typing BLOAD "GETROM.BIN",R. After this you'll get a list of what cartridges and other ROMs GetROM has found. Just type the number to the left and supply a filename, and the cartridge is saved. GetROM supports the following: •Main BIOS/BASIC ROM •Extended BIOS (Sub ROM) •Disk ROM •Any 8, 16 or 32 kB cartridge in page 1 and/or 2 •Konami4 and Konami5 type megaROMs up to 512 kB GetROM has some limitations: Solid Snake is not saved correctly (it is saved from memory area 8000h - 9FFFh so the last 800h bytes are garbled (SCC memory area). Only Solid Snake has this problem since it is the only 4 megabit with SCC. Also, GetROM.BIN hangs under Disk BASIC 2 while saving. SaveROM.COM SaveROM is written to be powerful and complete. I expect every cartridge can be saved using it, but the user has to supply all the information, in the form of addresses and block numbers. SaveROM has full support for page 0 and 3. It is an MSX-DOS program, you must start it from the command line typing the filename after it. After starting SaveROM it'll first ask in which primary slot it is. If this slot is expanded, the secondary slot is also asked. Next, SaveROM asks for the type. There are 6 types: Normal, ASCII 8 kB, ASCII 16 kB, Konami, Konami SCC and Custom. Cycling through them is done with cursor keys up and down. The selection is confirmed with the RETURN key. The Normal type will save a normal ROM. The start and end addresses are asked. So if you want to save the main BIOS, the addresses are 0 and 7FFF. For the Extended BIOS it is 0 and 3FFF. The Custom type will save a megaROM. The following items are required: If you select megaROM, the following items are required: •Switch Address: Actual address used to change blocks •Save Address: Start address where saving begins •Block Size: size of one block, 2000h for 8 kB for example, 0000h for 64 kB. Can be anything •First Block: first block to be saved •Last Block: last block to be saved The ASCII 8 kB, ASCII 16 kB, Konami and Konami SCC types will save their megaROM types. The switch address, save address and block size are preset, which are listed in the examples below. The following items are required: •First Block: first block to be saved •Last Block: last block to be saved The values are always hex. Actually, value of First Block to Last Block is written to Switch Address, and Block Size is saved every itteration from address Save Address. If the First Block is higher the Last Block, the itteration is done in reverse order. The current block to be saved is displayed in hex as a progress indicator. So for example: •Konami 1megabit SCC: Select Type: Konami SCC or Select Type: Custom Switch Address: B000 Save Address: A000 Block Size: 2000 First Block: 0 Last Block: F •Ascii/16K 2megabit: Select Type: ASCII 16 kB or Select Type: Custom Switch Address: 7000h Save Address: 8000 Block Size: 4000 First Block: 0 Last Block: F •Konami 1megabit without SCC (also Game Master 2): Select Type: Konami or Select Type: Custom Switch Address: A000 Save Address: A000 Block Size: 2000 First Block: 0 Last Block: F •Ascii/8K 2 megabit: Select Type: ASCII 8 kB or Select Type: Custom Switch Address: 7800 Save Address: A000 Block Size: 2000 First Block: 0 Last Block: 1F •MSX DOS 2: (Start with Select depressed) Select Type: Custom Switch Address: 6000 Save Address: 4000 Block Size: 4000 First Block: 0 Last Block: 3 •FM PAC: (Panasonic) Select Type: Custom Switch Address: 7FF7 Save Address: 4000 Block Size: 4000 First Block: 0 Last Block: 3 Well that's enough examples. If you don't have fscking clue what you should enter when saving your cartridge, ask a programmer and he'll probably know. You can also save the first 32 kB with GetROM and send it to a programmer (me for example), then she/he can find out what type it is. Changes: - full MSX-DOS2 support, which allows saving to FAT16 drives, and use sub-directories. - fixed a bug causing dumping megarom 00-FF range to get in an infinite loop. - megaROM question has become a type select. - added memory overview of pages containing something. - added display for megarom block number as a progress indicator. v1.1: - fixed a bug causing file creation to fail in MSX-DOS2. - fixed a bug which didn't restore the slot in page 1 when only page 1 was saved. -------------------------------------------------------------------------------- BiFi