Tool for Master System

1.0027 Mar (61KB) (includes source)

Competition Entry

This was a competition entry in 2015





This is a small, one-screen tool that lets you experiment with the FM sounds out of the YM2413 sound source in the Japanese Mark III and Master System.

The 9 voices (channels) of the YM are presented for you in the top half of the screen, and you can adjust each of their keying (note on), volume, pitch, and instrument settings individually.

Below that is the rhythm section, which provides 5 percussion instruments, at the expense (when activated) of FM channels 7,8,9. It is "not recommended" to change ch. 7-9 settings when rhythm tones are activated. :-D

The lower half of the screen allows you to change the settings for the custom instrument in various ways. Perhaps read up on FM synthesis before you approach it, but for starters, you'll need to make the A/D settings (in the ADSR section) non-zero in order to hear anything when you key the custom instrument on.

Use and Controls

This tool was programmed for and tested on Japanese SMS hardware. So, I'm sorry if it doesn't work properly on an unofficial setup (US/Euro SMS / MD with PBC...)

I recommend using Japanese paddle controllers, since you can adjust various level settings (like pitch) smoothly and naturally. However, a regular SMS joypad will work.

With a Paddle

Moving the paddle moves the green cursor up/down at the left side of the screen. Press the trigger and the cursor will change to red, now moving left/right. If you press the trigger again on a "checkmark" space, you will check/uncheck that setting. If you press the trigger on a numerical value, the cursor will change to blue, and the paddle will now adjust this value until you press the trigger again.

With a SMS Joypad

You should be able to move the red cursor anywhere on the screen simply by pressing a direction on the joypad. If you press button 1 on a changeable value, you can decrease and increase its value by holding Left/Right. Up/Down changes this value much faster.

Changing modes

Ordinarily, the paddle trigger or joypad button 1 selects/activates a cursor choice. Pressing the Pause button on the SMS (and also the 2 button on the joypad) changes this mode so that the trigger/1 button acts as an "all channel key on/off" button instead. This is useful when you want to move the cursor to a value like note frequency, select it, then change the pitch of a channel while also (re)keying the note.

Once you select a value to change, press Pause, and the mode will change to rekey or key on/off. "Rekey" means it will key and hold a note ON. "Key on/off" means it will key when you press the trigger, but then release the key when you release the trigger.

Or, if you hold the trigger/1 button, then tap Pause/2, it will go into a special mode where the Pause button (and also 2 button on the joypad) is locked to rekey every time you press it. Due to the momentary nature of the Pause button, this button ONLY rekeys ON, whereas the joypad 2 button acts as a key on/off button.

Press this button combination again to get out of this locked mode.

Changing between all these modes is how you can select note settings, then play various sounds almost like a "live" performance (not just setting static variables).


You should be able to swap a paddle with a joypad at any time if you so desire... Certain emulators <ahem> may not emulate all these different combinations of paddle and joypad, but ideally it should work on the real hardware without fail.

I've uploaded an audio sample / slideshow on YouTube demonstrating the basic and custom instruments of the YM2413, so you can check that out for ideas.

I've included the source code to this tool. Please, please go easy on me, as I haven't programmed Z80 code in 10 years, and this shows in my inefficient opcode choices. :-/

Have fun!

Chris Covell

Return to top