Help with ROM to WAV

Door vultureen

Supporter (4)

afbeelding van vultureen

29-05-2019, 00:02

I'm a bit oldschool and like to load games from tape. CAS to WAV is no problem with Castools. But how to convert ROM to WAV? There used to be a program called Waver 2.00 that seems to have had this functionality, but the program is no where to be found. Is there another way?

Aangemeld of registreer om reacties te plaatsen

Van Manuel

Ascended (18718)

afbeelding van Manuel

29-05-2019, 09:06

It's not a trivial conversion... a ROM game is meant to run in ROM and leave all RAM free for the game. Cassette games always load to RAM and run from there, leaving a lot less free RAM for the game. Also the ROM game must often be adjusted also for other reasons (different location in memory for example).
In the past, many people dumped ROMs and cracked them for use on tape or disk (that's the non-trivial conversion... a crack!) These cracks can be downloaded on some places and that's the best bet. Cracks for disk can be easily adjusted for tape usage if you know what you must do. (Save all parts to cassette after loading them individually... you need a tool like tapdir to know the proper addresses for the machine language program blocks.)

Van RetroTechie

Paragon (1563)

afbeelding van RetroTechie

29-05-2019, 13:26

Welcome here, vultureen! Running Naked in a Field of Flowers

Manuel, you're overlooking the obvious: there is many 16KB and 32KB ROMs that will work fine if loaded into RAM, and started appropriately. Including cracked ones. And ROMs generally use very little RAM as work memory, so if they work from RAM, the small amount of RAM left will normally do. Converting to a tape-based version & loading that, is like putting the cart before the horse. Smile2

Concerning MegaROMs: I once wrote a .rom loader, and added a bit of functionality to load MegaROMs that switch 16KB blocks (iirc, Girly Block & Andorogynus were among the MegaROMs working). Why? Basically because it was 'low hanging fruit' that was easy to get working. Only a (large enough) memory mapper required.

You'd think there'd be a tool these days for loading these things from tape.

Van CASDuino

Champion (269)

afbeelding van CASDuino

29-05-2019, 15:24

Caslink3 will convert ROMs of up to 48k to WAV.

CASDuino is a good way to load CAS files and works basically as a cassette replacement. CASTools will convert the WAV from Caslink to a cas as well.

Van vultureen

Supporter (4)

afbeelding van vultureen

30-05-2019, 00:33

Caslink3 did the job. Thanks for the tip. Amazing tool!

I did a test on a simple but awesome game: Ninja Savior by Relevo:

1. In your Caslink3 folder, paste the ROM to be converted, in my example "ninja.rom". File name must be maximum 8 characters!
2. In the Command Prompt, go to folder and enter "caslink3 /e ninja.rom"
3. Select MSX cassette I/O speed: (1200 baud)
4. Select WAV sampling rate: (8bit mono/11 khz)
5. Select waveform type: (inverted)

6. Connect to PC mic-out, maximum volume, with appropriate cable (for example: )
7. On your MSX computer, type: bload"cas:",r
8. Play the WAV on your PC

Done. Next test is to record it to a physical tape...

EDIT. Some quick tests with above settings on a SVI-728:
Malaika, Relevo (2013): Success
Night Knight, (2019): Success (it comes with an official cas-file, but still...)
Subacuatic, Relevo (2012): Success
Zen Assembler (1984): Success
Oil's Well (1985): Success
Arkanoid, Taito (1986):Success
Comic Bakery, Konami (1984): Success

Van saccopharynx

Master (171)

afbeelding van saccopharynx

30-05-2019, 01:05

Caslink3 is great for most of the ROMs up to 48KB.

Beyond that size, such as MegaROMs, you cannot directly convert from ROM to WAV. You first need to dump the ROM into bloadable BIN blocks (commonly 16KB blocks) and probably apply several patches. Then, you shoud convert from BIN to WAV, which, in other words, it is to convert the cracked versions into WAV.

Because each video game may work differently, there is no specific approach to load the BIN blocks into the memory mapper and get it to work without patching and adding a routine that switches mapper segments accordingly when required. You need to figure out a logic for each game by doing a "bit" of reverse engineering.