MSX ripping tutorial

From vgmrips

This is an tutorial focused on ripping music from the MSX family games that has at least one music played on AY-3-8910A soundchip and / or its sound expansions. This tutorial was done by Sonic of 8! and applies for the following systems:

Introduction

This tutorial, as stated before, applies to the following systems / hardware:

  • MSX1 games (ROM, Cassette, Floppy disks);
  • MSX2 games (ROM, Cassette, Floppy disks, HDD);
  • MSX2+ games (Floppy disks, HDD);
  • MSXturboR (Floppy disks, HDD);
  • Several Arcade bootlegs that are based on MSX1 hardware;
  • Unlicensed MSX software from South Korea.

You can use openMSX or MAME with these systems, but openMSX is the recommended option.

Getting started

What you need to rip musics from MSX games is:

Emulators:

  • Very Easy method: NEZplay++ with VGM Logging (if the game has an KSS file) or:
    • Easy method: hoot with S98 Logging enabled (if the sound driver supports it and by converting to VGM with s982vgm);
    • Normal method: openMSX with VGM Logging mod for games that haven't a KSS file and / or isn't available in hoot or doesn't support S98 Logging through the game's sound driver (you also need BIOS files for it if the game is only available in Cassette, Floppy Disk or HDD);
    • Hard method: MAME / MESS with Logging mod for games that doesn't have nothing from above, which requires some knowledge in debugging;
  • A emulator with screenshot capture.

Keep in mind that neither NEZplay++ and openMSX or MAME / MESS doesn't log music played on the MSXturboR PCM soundchip into VGM, as there's no support for it on VGM format for now. It should be noticed that MAME / MESS has real time loading for cassette tapes and disk images, so, you must wait the traditional 5 minutes to load a MSX game or just fast-forward it with the button associated on your keyboard / joystick.

VGM tools:

  • vgm_cmp: For optimizing VGM files data;
  • vgm_ptch: To strip data of unused soundchips (if any);
  • vgm_trim: To make VGM files a proper loop if the music loops;
  • vgmlpfnd: To find loops in VGM files if the music loops.

Other:

  • s982vgm: To convert S98 files into VGM (hoot method only)
  • The ROM of the game you are playing to take the screenshot;
  • pngout: To optimize the PNG taken from an emulator (optional, this one is used by people who is doing VGM packs since SMS Power! days)

Ripping music with NEZplay++

Due to the nature of KSS files storing 256 entries for music / SFX / voices in general, it's better recommended to give a listen on the file before logging 256 VGM files.

To rip musics from KSS file with NEZplay++, all that you can do is drag and drop the KSS file in the program.

  • If the music loops, leave the music logging for about 10 minutes. You can change music in the KSS file by pressing left or right in your keyboard;
  • After all the music was logged, you can close the program as usual.

This method works for KSS files, many are various MSX games from the likes of Konami and Compile. It also works with SG-1000, Othello Multivision, Sega Master System, Sega Mark III and Sega Game Gear games, since some games from these systems are available as KSS files as well. However, for all stuff related to Sega 8-bit systems, please check SMSPower! VGM ripping tutorial instead.

Dealing with some errors after logging with NEZplay++

As soon you started to manipulate with VGM files' playback, you will notice that such things are missing or odd on them. These are:

  • No tag export unlike NSF, GBS and SGC files (KSS files doesn't have tags in general);
  • Some games can have data of another soundchip (e.g.: AY8910+YM2413/Y8950) unused. These should be stripped with vgm_ptch.

So, we can deal the files with this list:

  1. In vgm_ptch, if any VGM file(s) has soundchip data that's unused, you can type the following: vgm_ptch -Strip:ChipName file.vgm With this command, it will save a few bytes or even kilobytes in the final steps;
  2. Find the loops of VGM file(s) (if any) with vgmlpfnd;
  3. Do the loops on VGM file(s) (if any) with vgm_trim;
  4. Drag & drop the VGM file(s) in vgm_cmp to optimize their data;
  5. For VGM tagging, it's better to find any accurate databases, such as Generation MSX;
  6. Take the screenshot of the game with openMSX. To get a pixel perfect screenshot, you open the console and type: screenshot -raw and press Enter.

For packaging, playlist, text file and uploading stuff, you can follow the traditional steps for every VGM pack tutorial as usual.

Ripping music with hoot

This method doesn't work with MSX games that plays data in Y8950 (MSX-AUDIO), as the soundchip itself is not supported in the S98 file specification.

This is for games that don't have a KSS file available. With hoot, a Japanese PC sound player, you can log data of several Japanese PC games into S98, which is very similar to VGM in many ways. To get music from games, you should do the following:

  1. Download the musical data of the game that you want to rip and put it in the directory that hoot is set to search the games;
  2. After opening hoot for the first time, open the hoot.ini file and search for s98enable in the file. If this options has a 0, change the 0 with a 1. It should be like this: s98enable=1
  3. Go to hoot and play the music(s) for the game you want. Not every game has S98 Logging enabled, so, you must follow the method with ripping music with openMSX or MAME / MESS instead;
  4. After finding the S98 file(s) in the outs folder, get s982vgm and drag & drop them into the executable.

Dealing with some errors after S98 to VGM conversion

As soon you started to manipulate with VGM files' playback, you will notice that such things are missing or odd on them. These are:

  • No tag export unlike NSF, GBS and SGC files (despite S98 files supporting tags);
  • Some games can have data of another soundchip (e.g.: AY8910+YM2413/Y8950) unused. These should be stripped with vgm_ptch.

So, we can deal the files with this list:

  1. In vgm_ptch, if any VGM file(s) has soundchip data that's unused, you can type the following: vgm_ptch -Strip:ChipName file.vgm With this command, it will save a few bytes or even kilobytes in the final steps;
  2. Find the loops of VGM file(s) (if any) with vgmlpfnd;
  3. Do the loops on VGM file(s) (if any) with vgm_trim;
  4. Drag & drop the VGM file(s) in vgm_cmp to optimize their data;
  5. For VGM tagging, it's better to find any accurate databases, such as Generation MSX;
  6. Take the screenshot of the game with openMSX. To get a pixel perfect screenshot, you open the console and type: screenshot -raw and press Enter.

For packaging, playlist, text file and uploading stuff, you can follow the traditional steps for every VGM pack tutorial as usual.

Ripping music with openMSX

This is for games that don't have a KSS file available or hoot doesn't support S98 Logging through the game's sounddriver. Assuming the game has a Sound Test, let's get additional steps for this method:

  1. Download the BIOS files' ROM set for the machine of your preference (C-BIOS doesn't work for Cassette, Floppy Disk or HDD games). We recommend to get Japanese and Brazilian ROM sets for MSX1, MSX2+ (MSX2 works fine with them) and MSXturboR, both for screenshot purposes (Brazilian machines runs in International mode like the European machines does, but they are always in 60Hz rather than 50Hz).
  2. If you actually own the game in a Cassette Tape, you can dump it by connecting your Data Recorder to your PC;
  3. In the emulator, load the game in MSX-BASIC through your device's method, which can vary through manufacturers;
  4. Get the music with the sound test.

After getting all the music you wanted, you still need to do following:

  1. In vgm_ptch, if any VGM file(s) has soundchip data that's unused, you can type the following: vgm_ptch -Strip:ChipName file.vgm With this command, it will save a few bytes or even kilobytes in the final steps;
  2. Find the loops of VGM file(s) (if any) with vgmlpfnd;
  3. Do the loops on VGM file(s) (if any) with vgm_trim;
  4. Drag & drop the VGM file(s) in vgm_cmp to optimize their data;
  5. For VGM tagging, it's better to find any accurate databases, such as Generation MSX;
  6. Take the screenshot of the game with openMSX. To get a pixel perfect screenshot, you open the console and type: screenshot -raw and press Enter.
    1. If the game is supported directly in a stock MSX1 machine, you can take two screenshots for the game: One of the game running in MSX1 and other for the game in a MSX2 or higher. If the game doesn't run in a MSX1, only use the MSX machine that is recommended for the game;

For packaging, playlist, text file and uploading stuff, you can follow the traditional steps for every VGM pack tutorial as usual.

Ripping music with MAME / MESS

This method is almost the same as openMSX, except that you only should use it for debugging purposes, such as finding commands for the game's sound driver. Keep in mind that not every machine listed in MAME / MESS works accurately, so, the game can not boot at all or freeze in certain parts (mainly for disk games).

FAQ

  • Where I can get KSS files?
    • KSS files can be found in various game music preservation sites. Due to the complex nature of KSS file format itself, its kinda hard to create your own KSS file for the game that you want to rip.
  • If I log music data of a game that use the TurboR PCM soundchip, it will be reserved for future use?
    • No.
  • I have a floppy disk which tons of doujin music built-in. Can I rip these into VGM format?
    • As long it was released in a commercial state, yes.
  • I want to rip my own VGM files based on my own music that I did on a tracker for MSX. It will be available in vgmrips one day?
    • As long you are the original author and it is featured in a game, yes.
  • Can I rip VGM files from games that originally played music in AY8910 and now it plays in SCC/YM2413 through a patched-ROM made with a external program?
    • No. These conversions made with these programs doesn't sound accurate at all, since all the channel mapping are user-made. It's just like if you throw a MP3 file into a MIDI converter: Slight better, but still inaccurate.

Conclusion

These methods are done by Sonic of 8! and is used on every VGM pack that he does.