OMFG HELP!

Sappy 2006

 
Sappy 2006: OMFG HELP!

OMFG HELP!

When I try to play a certain song, I get a generic error message. What's up with that?
The EOT command is not fully supported. A single note works fine, but full chords fail. The actual error that's supposed to appear is "Subscript out of Range", which doesn't help much either.

I'm afraid there's little to be done here but to avoid playing these songs.

Developers, if you have a song with passages like this:

.byte EOT, As2
.byte      Cs3
.byte      Fn3
...that wouldn't work. TIEs start fine, but EOTs spanning more than one note break things.

Lacking .S files, Pokémon's "Caves and Darkness" song is a bit difficult to fix but you could look, in the song data, for 0xCE and 0xCF which are EOT and TIE respectively.

My Sappy-enabled homebrew doesn't work in Sappy. The header pointers are all wrong!
Since Classic VB only supports signed Longs/DWords, certain pointer ranges translate to a negative decimal number. I had this problem myself while working on the Demo Jukebox. I fixed this by moving all SOUND_FILES to the start of the rom until the pointer was in a correctly interpreted range:
$(TARGET_ELF): $(SOUND_FILES) $(.OFILES) Makefile $(DEPENDFILE)
	@echo > $(MAPFILE)
	$(CC) -g -o $@ $(SOUND_FILES) $(.OFILES) -Wl,$(LDFLAGS)
This is caused by small programs and the music data being put at the end of the rom by default.
When using the MIDI driver, the instruments are all wrong!
That's because the games don't need to adhere to the General MIDI standard. Any given instrument or "patch" as it's often called can have any sound. It's up to the sound and music artists of the game in question how much the game patches match up to the General MIDI standard. You can remap the patches with the <midimap> XML tag. Please refer to the Sappy.XML documentation for details.
I have those media keys on my keyboard, but some don't work in Sappy like "Eject"!
As of version 1.1, Sappy only listens to Play/Pause (which doesn't pause), Stop, Next, Previous, Volume Up and Volume Down. It's ignoring of Eject is quite natural. Each key must be coded in seperately.
I'm running on a Japanese system, and the text is all garbled!
It's not easy to get Japanese text rendered properly. We're still figuring this out. In the meantime, you can get a non-localized version where you got this.