N-SPC Player (also referred to as Kankichi-kun by most developers, SQ & DBOOT by some developers and BMus by American developers) is a common SPC player included in many SNES games. The actual player N-SPC itself seems to vary slightly from game to game. Secret of Mana's internal music format can be thought of as a counterpart to N-SPC, as can Seiken Densetsu 3. The N-SPC format was limited in terms of the sample size available. Other developers created their own formats to really push the SPC700's power.

Rare's format for the Donkey Kong Country and Battletoads games and Square's SPC format made use of longer/higher quality samples, and better use of the 8 channels (for example, using a wide range of instrument samples in one single channel). HAL Labs made good use of a wide range of effects that the SPC chip offered too - the music in Kirby Super Star is a wonderful example.

See the Super Mario World Music Format for more information specific to that engine.

Nintendo programmer Y.K. (Yukio Kaneoka) created a N-SPC player "Kankichi-kun" and decided to let the composers to create instrument samples called the "Tako Sample".

Howard Phillips, who was a producer on Nintendo of America created an Americanized N-SPC player called "BMus"(the 'B' possibly standing for "Berlioz"), which was used by American developers. Some time after, another sequencer named "Wolfgang" was developed. It apparently had support for direct SNES playback, like GEMS allowed for the Genesis.

Several N-SPC players, especially those manufactured by Opus will call it "SQ & DBOOT", based on the ROM text header of the game.

N-SPC Games

NOTE: For a more complete list, see its section on GDRI. Also, some of these games may not use the N-SPC at all.

These games use some variant of the N-SPC system.

Game N-SPC Version Engine Offset
BS Special Tee Shot
3x3 Eyes - Seima Kourinden
4 Nin Shogi
Act Raiser
Albert Oddysey
Albert Oddysey 2
Alice's Paint Adventure
Arkanoid: Doh It Again
Astérix & Obelix
Battle Commander
Benkai Gaiden
Bishin Densetsu Zoku
Bubsy in Claws Encounters of the Furred Kind
Bulls vs. Blazers 0xE1D86 US
Captain Tsubasa 3
Captain Tsubasa 4
Captain Tsubasa 5
Casper (JPN)
Clock Tower
Cosmo Gang: The Puzzle
Daze Before Christmas
Donald Duck - Mahou no Boushi
Doraemon 2
Doukyuusei 2
Dragon Ball Z - RPG
Dragon Ball Z - Super Butouden
Dragon Ball Z - Super Butouden 2
F1 Pole Position
F-Zero Common (0xE0 Instrument Command)
Fire Emblem - Monshou no Nazo Extended Version
Ganbare Goemon
Ginga Eiyuu Densetsu
Gradius 3
Hashire Hebereke
Hebereke no Popun
Hyper Zone
Inspector Gadget
Joe & Mac
Kiki Kaikai
Kiki Kaikai 3
Kirby Super Star
Kirby's Dream Course
Kirby's Dream Land 3
Kirby's Kira Kira Kids
Last Bible III
Last Fighter Twin
The Lawnmower Man
Lupin Sansei - Densetsu no Hihou o Oe
Magical Drop Common (0xE0 Instrument Command)
Magical Taruruto Kun
Mario Paint
Marvelous - Mouhitotsu no Takarajima Extended Version
Mouryou Senki Madara 2
Mr. Nutz
Newman/Haas IndyCar featuring Nigel Mansell
Nigel Mansell's World Championship Racing
Nintendo Campus Challenge 1992
Nintendo PowerFest '94
NFL Football
O-Chan no Oekaki Logic
Pac Man 2
Panel de Pon Altered Beta / Old Version
Pilotwings Beta / Old Version
Pipe Dream
Pirates of Dark Water
Pocky & Rocky 2
Pocky & Rocky
Power Rangers
The Ren & Stimpy Show - Fire Dogs
Revolution X
Sailor Moon S - Kurukkurin
Sailor Moon Super S - Zenin Sanka - Shuyaku Soudatsusen
Satellaview BIOS 0xF1560
SD Great Battle
SD Gundam Gaiden
SD Gundam Gaiden 2
SD Gundam X - Super Gachapon World
SD Hiryu No Ken
SD Kidou Senshi Gundam V
Shigesato Itoi no Bass Tsuri No.1
Sim City
Smash Tennis
The Smurfs
SNES Test Program
Snoopy Conecrt
Soul Blazer
Star Fox
Star Fox 2
Stunt Race FX
Sugoi Hebereke
Super Adventure Island
Super Baseball 2020
Super Bases Loaded
Super Bases Loaded 2
Super Game Boy 0x3019A v1.1
Super Famista
Super Famista 2
Super Famista 3
Super Mario All-Stars Common (0xE0 Instrument Command)
Super Mario Kart
Super Mario World Beta / Old Version (0xDA Instrument Command)
Super Mario World 2 - Yoshi's Island Basic Version
Super Metroid
Super Off-Road: The Baja
Super Punch-Out
Super Scope 6
Super Soukoban
Super Tetris 2 + Bombliss
Super Wagan Land
Super Wagan Land 2
Sutte Hakkun
Tadaima Yusya Bosyutyu Okawari
Tecmo Super Bowl
Tenchi Muyo RPG
Tetris & Dr. Mario
Tetris Attack Beta / Old Version (0xDA Instrument Command)
The Smurfs
Tom & Jerry
Top Gear
The Untouchables
Ushio No Tora
Waku Waku Ski Wonder Shoot
Yadamon Wonderland Dreams
Yoshi's Cookie
Yoshi's Safari
Ys 3
Yuu Yuu Hakusho
Yuuyu no Quiz de Go! Go!
Zelda: A Link to the Past Common (0xE0 Instrument Command)



; song list
feff: dw $ffff,$a000,$a200,$a400,...
; block list of song $01
a000: dw $b000
a002: dw $b010
a004: dw $0003,$b020 ; $0001-$007f - play for 4 (3+1) times
a006: dw $00ff,$a002 ; $0080-$00ff - goto $a002 (loop)
a008: dw $0000       ; end of song (shouldn't come here, though)
; block - starting point for each track ($00xx for null)
b000: dw $c000,$c100,$c200,$c300,$0000,$0000,$0000,$0000
; sequence
c000: ; voice cmds to playback...


なお、通常は繰り返し回数がマイナスであれば goto なのですが、ゲームによっては $80,$81 のあたりを特別扱いしている感じも見られました。このあたりに関してはまだよく調べていません。



Will it be played on any form of data representation, assembly reveals a pseudo-I. Many games are standard MIDI as a file after you specify the beginning of the data first, but I think I only played earnestly, this game represents the music data in the form of bundle performance data small section on top. There has been described by a simple control structure is also repeated. Block at the end of the performance data shown. See below.

Normally, if the number of repetitions is negative, it is goto, but depending on the game, it seems that around $80, $81 is treated specially. I haven't investigated this area yet.

My nintspc outputs these performance control information at the beginning of the html output.

Version / Variation of the Format

  • Old Version (has 24 VCMDs ($DA-F2), used by Super Mario World & Pilotwings).
  • Basic Version (has 27 VCMDs (usually $E0-FA, used by a lot of games, Yoshi's Island for example).
  • Extended Version (based on Basic Version).
  • • May have additional VCMDs (Super Metroid, Marvelous, Intelligent Systems games, etc.).
  • • VCMDs may start from not $E0 (Intelligent Systems games, Fire Emblem for example).
  • • Some of its vbytes may work differently from Basic Version (Intelligent Systems games, Lemmings).

$e0-fa の27コマンドを持っているものが基本的です。Super Mario World と Pilotwings に使われている初期のエンジンは少しコマンドが少ないですが、内容は対応します。その他、いくらか標準のものをベースにコマンド追加、あるいはそれ以上の拡張をしているものがあります。ちなみに、拡張コマンドの中には可変長のものもありました。



Basically, it has 27 commands of $E0-$FA. The early engines used in Super Mario World & Pilotwings have a few commands, but they do. Others are based on some standard ones with additional commands or further extensions. By the way, some extended commands were variable length.

Whatever you deal with, you just have to know the basic type of configuration. In the rest of this article, I'll explain the basic types of commands and then touch on some examples of extensions.

VCMD Map (Basic Version)

VCMD Description Arguments
$00 End / Return
$01-7F Note Parameters [xy]
$80-C7 Notes
$C8 Tie
$C9 Rest
$CA-DF Percussion Note
$E0 Set Instrument [xx]
$E1 Pan [xx]
$E2 Pan Fade [xx yy]
$E3 Vibrato On [xx yy zz]
$E4 Vibrato Off
$E5 Main Volume [xx]
$E6 Main Volume Fade [xx yy]
$E7 Tempo [xx]
$E8 Tempo Fade [xx yy]
$E9 Global Transpose [xx]
$EA Per-Voice Transpose [xx]
$EB Tremolo On [xx yy zz]
$EC Tremolo Off
$ED Volume [xx]
$EE Volume Fade [xx yy]
$EF Call Subroutine [xx yy zz]
$F0 Vibrato Fade [xx]
$F1 Pitch Envelope To [xx yy zz]
$F2 Pitch Envelope From [xx yy zz]
$F3 Pitch Envelope Off
$F4 Tuning [xx]
$F5 Echo VBits / Volume [xx yy zz]
$F6 Echo Off
$F7 Echo Parameters [xx yy zz]
$F8 Echo Volume Fade [xx yy zz]
$F9 Pitch Slide [xx yy zz]
$FA Percussion Patch Base [xx]
$FB-FF Undefined (Out of Table)

VCMD Map (Old Version)

VCMD Description
$00 End / Return
$01-7F Note Parameters
$80-C5 Note
$C6 Tie
$C7 Rest
$C8-CF Unused (May Work As a Rest?)
$D0-D9 Percussion Note
$DA Set Instrument
$DB Pan
$DC Pan Fade
$DD Pitch Slide
$DE Vibrato On
$DF Vibrato Off
$E0 Main Volume
$E1 Main Volume Fade
$E2 Tempo
$E3 Tempo Fade
$E4 Global Transpose
$E5 Tremolo On (Buggy)
$E6 Tremolo Off
$E7 Volume
$E8 Volume Fade
$E9 Call Subroutine
$EA Vibrato Fade
$EB Pitch Envelope To
$EC Pitch Envelope From
$ED (Undefined) Pitch Envelope Off (Code Exists, but Never Reached)
$EE Tuning
$EF Echo VBits / Volume
$F0 Echo Off
$F1 Echo Parameters
$F2 Echo Volume Fade
$F3-FF Undefined (Out of Table)

Voice Bytes

End/Return ($00)

  • "End" of block, or "Return" from subroutine. See also: $EF.
  • When a voice reaches "End", all voices end up then go to next block. "Return" works independently per voice.




It means the end of performance data. If it is called by a subroutine command, it means the end of the subroutine, otherwise it means the end of the block.

When the end of a block is reached, the other blocks stop playing at the same timing and move to the next block (unless specified repeatedly). In contrast, the return from the subroutine is done independently for each channel.

Note Parameters ($01-$7F)

When $xy < $80
  $x = Duration Rate (0-7)
  $y = Velocity Rate (0-15)
  • VByte itself means the length of the following note (48 = quarter note, usually).
  • Some games (Fire Emblem, Lemmings) takes Duration / Velocity info in different manner, be careful.




The command byte itself represents the length of the note. It is said that 48 is a quarter note, but you don't have to worry too much about it.

If the following byte (let's say $xy) is less than $80, it will be processed as well. Use $x to specify the length of the sound (quantize), and $y to specify the loudness in stages. Look at the table inside to see what ratios are assigned to the numbers (my nintspc automatically searches for the table position).

Notes ($80-$C7)

Tone Map (Some instruments might be tuned differently):

C C+ D D+ E F F+ G G+ A A+ B
Oc1 80 81 82 83 84 85 86 87 88 89 8A 8B
Oc2 8C 8D 8E 8F 90 91 92 93 94 95 96 97
Oc3 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3
Oc4 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
Oc5 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB
Oc6 BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7



Means a note with a pitch. Set the length and strength with $01-$7F.

Tie ($C8)

Rest stops sound, Tie keeps.

Rest ($C9)

Rest stops sound, Tie keeps.

Percussion Note ($CA-DF)

  • VByte itself means percussion note (#). Relations between percussion note and SRCN depends on $FA.

Set Instrument ($E0)

  • xx = voice number (SRCN and ADSR is stored in a table, xx is index for it.)
  • • When SRCN >= $80, the music engine sets "noise sound" VBit on, then uses lower-5bit for its clock.




Set the tone. The SRCN and ADSR information that is actually set for the sound source is stored in an internal table, and the index of that table is specified by this command.

If the SRCN information inside the table is more than $80, set the noise flag to the sound source and set the lower 5 bits to that clock (older versions do not have such a function).

Pan ($E1)



Set the left and right position of the sound. The range of values is as narrow as 0 to 20 (the actual setting ratio is defined in the internal table). Depending on the version, it depends on whether the large value is left or right. The upper 2 bits are used for phase inversion.

Pan Fade ($E2)

xx = Length
yy = Destination. (yy <= 20?)



The position of the sound fades from the current value to yy over xx time.

Vibrato On ($E3)

xx = Delay
yy = Rate
zz = Depth



Enables vibrato (pitch fluctuation / pitch swing). Set zz-sized vibrato at yy speed after xx time.

Vibrato Off ($E4)

Disable vibrato. Specifically set the Vibrato Depth to 0.

Main Volume ($E5)

The volume of the entire song set to $xx. The initial value is somewhat lower than the maximum.

Main Volume Fade ($E6)

xx = Length
yy = Destination



The volume of the entire song fades from the current value to yy over xx time.

Tempo ($E7)

x = Speed (about 24/60 of beat per minutes)



Specifies the playing speed of the song. I'm not sure about the exact correspondence with bpm, but the value of about 24/60 is written.

Tempo Fade ($E8)

xx = Length
yy = Destination



The playing speed of the song fades from the current value to yy over xx time.

Global Transpose ($E9)

xx = Semitones (Signed)



Raises the playing pitch of all channels by xx (negative numbers can be specified).

Per-Voice Transpose ($EA)

xx = Semitones (Signed)



Raises the playing pitch of a single channel by xx (negative numbers can also be specified).

Tremolo On ($EB)

xx = Delay
yy = Rate
zz = Depth

As far as I know, Super Mario World cannot handle tremolo correctly.



Enable tremolo (volume fluctuation). Set the tremolo of the size of zz to be applied at the speed of yy after xx time.

Tremolo Off ($EC)

Disable the tremolo.

Volume ($ED)

xx = Length
yy = Destination

The volume of the channel. The initial value is $FF, the maximum.

Volume Fade ($EE)



Fade the channel volume from the current value to yy over xx time.

Call Subroutine ($EF)

  • Play block $yyxx for $zz+1 times.
  • Subroutine call cannot be nested.
  • See also $00



The block $yyxx is played zz + 1 times. Subroutines cannot be nested.

Vibrato Fade ($F0)

xx = Length, Fade Vibrato depth from 0 to current value.



After temporarily setting the vibrato depth to 0, it will smoothly return to the original value over xx time.

Pitch Envelope To ($F1)

xx = Delay
yy = Length
zz = Key (Signed)
  • Sort of "do pitch slide for all of the following notes" vcmd.
  • Utter a note normally, wait for xx ticks, then fade the key to zz semitones higher (lower, when it's a minus number) for yy ticks.



Specifies that subsequent sounds will be "higher by zz over yy time after xx time." zz is a semitone unit, and you can specify a negative number.

Pitch Envelope From ($F2)

xx = Delay
yy = Length
zz = Key (Signed)
  • Sort of "do pitch slide for all of the following notes" VCMD.
  • Utter a note from higher (lower, when it's a minus number) than zz semitones, wait for xx ticks, then fade the key to normal pitch for yy ticks.



Specifies that subsequent notes will be "played at a pitch that is zz higher than normal, and will return to normal pitch over yy time after xx time." zz is a semitone unit, and you can specify a negative number.

Pitch Envelope Off ($F3)

Disables the effect of the Pitch Envelope.

Tuning ($F4)

xx = Unsigned. Make the pitch xx/256 semitones higher.



Change the pitch slightly. Only positive numbers can be specified, so the pitch cannot be lowered.

Echo VBits / Volume ($F5)

xx = Echo Switch (EON)
yy = Echo Left Volume (EVOL (L))
zz = Echo Right Volume (EVOL (R))



Specifies the channel and volume at which echo is enabled. The value set in the register remains the same.

Echo Off ($F6)

Disable the echo.

Echo Parameters (Delay, Feedback, FIR Filter) ($F7)

xx = Echo Delay (EDL)
yy = Echo Feedback (EFB)
zz = Echo Filter (Index for table, 0-3 in most cases)



Set the echo details. xx and yy are the register values, and zz is the type of FIR filter, which is specified in the range of 0 to 3.

Echo Volume Fade ($F8)

xx = Length
yy = Left Volume Destination
zz = Right Volume Destination



The volume of the echo fades from the current value to the specified value over xx time. Specify the values separately for left and right with yy and zz.

Pitch Slide ($F9)

xx = Delay
yy = Length
zz = Note VByte
  • This VCMD works only for current note, not for all of the following notes.
  • Old version doesn't have this VCMD in address table, but it's certainly handled specially.

This VCMD is handled at different timing than other VCMDs.

; utter note $90, (wait), set instrument to $01, utter note $92
$90, $e0 $01, $92
; utter note $90 then change the key immediately to note $91, (wait),
; utter note $92.
$90, $f9 $00 $01 $91, $92
; utter note $90 then change the key immediately to note $91, (wait),
; set instrument to $01, utter note $92.
$90, $f9 $00 $01 $91, $e0 01, $92
; <weird example> utter note $90, (wait), set instrument to $01,
; (pitch slide vcmd appears but note $90 has been end), utter note $92.
$90, $e0 01, $f9 $00 $01 $91, $92




Smoothly changes the pitch of the sound being pronounced. After xx time from play, it will be changed to the zz pitch (absolute designation) over yy time. If you want to raise or lower the sound in the middle of one note, write this command continuously. If the pronunciation time is long, you can write it with Thai.

Normally, after one Note, it waits for the length of the note and then processes the next byte, but only this command is read and processed immediately. Due to its special handling, this command is completely processed outside the processing table in Super Mario World.

Percussion Patch Base ($FA)

xx = Instrument Number

Kirby Super Star has $FA, but it does nothing.



Determines the correspondence between the percussion value and the sound you hear.

About Extended Versions


  • Super Metroid, Earthbound 等は同種の拡張コマンド4つを持っている(Zelda にもコードはあるようだが、テーブルに書かれていないため使えない)。
  • Intelligent Systems開発のゲームは可変長のコマンドを持っていたりする。ちょっとコンバータ泣かせ。
  • Fire Emblem などは、通常とは異なる方法でのクオンタイズ・ベロシティ指定がある。
  • Lemmings も同様(規則は異なる)。
  • Marvelous にはADSRを設定するコマンドがあった。
  • Gradius 3のようなコナミの初期のタイトルは、若干改変されたこのサウンドエンジンが用いられている。
  • Hebeereke's Popoonのようなサンソフトの初期のタイトルは、新着エコーコマンドがあった。


As for expansion, I can't write much because I haven't researched much.

  • Super Metroid, Earthbound seem to share code with (Zelda, which has four similar extension commands, but it can't be used because it's not written in the table.
  • Games developed by Intelligent Systems may have variable length commands. Makes the converter cry a little. 😢
  • Fire Emblem and others have unusual quantize velocity designations.
  • Lemmings similar to Fire Emblem (different regulations.)
  • Marvelous has a command to set the ADSR.
  • Early titles from Konami, such as Gradius 3, use this slightly modified sound engine.
    • Normal, timer0 the period has been set to $10, Gradius 3 or $20 if you have set.
  • Early titles from Sunsoft, such as Hebeereke's Popoon have new echo commands.
    • These commands are $FCand $FD.

Marvelous: Set Instrument with ADSR ($FB)


xx = Voice Number
yy = ADSR(1)
zz = ADSR(2)
  • Overwrites ADSR parameter in instrument table, therefore default ADSR will be changed, perhaps.



Set the tone while rewriting the ADSR of the instrument xx written on the table. Since the contents of the table will be rewritten, it is expected that the default ADSR when specifying the tone color will change.

Lemmings: Note Parameters ($01-7F)


(When xx <$ 80) xx = Duration Rate. Actual rate seems to be "(byte) ((xx << 1) + (xx >> 1))", weird...
(When yy <$ 80) yy = Velocity Rate. Actual rate = yy << 1.



The concepts are similar, but the quantize and velocity information is set separately and directly. There can be differences in the number of arguments.

Fire Emblem: Note Parameters ($01-7F)

Fire Emblem

(xx < $40 && xx < $80) : lower 6-bits for duration rate (index)
(yy >= $40 && yy < $80) : lower 6-bits for velocity rate (index)

To know how to handle this vcmd more precisely, see nintspc source code.


では、たとえば $30 $40 $50 と3つ値が続いてしまった場合はどうなるのでしょうか。この答えはちょっと示すのが面倒なので、割愛します。


When the value continues, it sets the quantize if it is less than $40 and the velocity if it is more than $40 from the lower 6 bits. You may want to set both at once.

But what if, for example, $30 $40 $50 and three values follow? This answer is a bit cumbersome to give, so I'll omit it.

Translated and expanded upon from LoveEMU, previously: http://d.hatena.ne.jp/loveemu/20081208/snes_nintendo_music_spec

Some game usage provided by Mattrizzle.

Sunsoft games

(Not present on Benkei Gaiden - Suna no Shou and Xak: The Art of Visual Stage)

$FB enables echo for a channel.
$FC disables echo for a channel.
$FD sets up ADSR.
$FE is a dummy read, having been moved from VCMD $FB.

Albert Odyssey 2 and Hissatsu Pachinko Collection 4 have a different function for VCMD $FE. Namely, it appears to be a de-facto global song volume VCMD (on top of the classic Main Volume VCMD already in use).

Info provided by KungFuFurby.

Metal Combat: Falcon's Revenge

Note Parameters ($01-7F) First byte is the length of a quarter note, like normal. It is followed by an optional Velocity if the next byte is between $40 and $7f, or by an optional Duration value if the value is between $00 and $3f. The optional Duration byte can also be followed by an optional Velocity value if the following byte is between $00 and $7f.

Percussion ($CA-$D5)

Change Instrument ($D6) Followed by one byte, which specifies the instrument to use for this channel. This value does not use the Load Instruments table below.

Tempo ($DD) Followed by one byte.

Call Subroutine ($E5) Followed by 2 byte address of first event of subroutine, and 1 byte repeat count.

Load Instruments ($FA) Followed by 1 byte instrument count, and 4 bytes per instrument.

Find Instrument ($FB) Followed by 1 byte index into instrument list previously loaded by ($FA).

The remaining events are currently unknown, but have the following number of additional bytes:

  • 0 bytes: $DA, $E2, $E9, $EC, $F1-F4
  • 1 byte: $D7, $DB, $DF, $E0, $E3, $E6, $EA, $F0, $F5-F8
  • 2 bytes: $D8, $DC, $DE, $E4, $FC, $FD
  • 3 bytes: $D9, $E1, $E7, $E8, $EB, $ED, $EE, $EF


The initial block of data loaded to the APU (code, tables, instruments, samples, etc.) is uncompressed, and loaded normally using the built-in loader routine on the SPC firmware. However, all of the songs in the game are stored on the rom in compressed format, and must first be decompressed using routines that are executed on the SuperFX chip. (The decompression routine is identical to the one used by Star Fox to decompress background images and tiles). The decompressed song data is stored in shared RAM by the decompression routine, and then the CPU copies this data from RAM to the APU using a custom loader. (The custom loader is similar to the built in loader routine, except that it does not jump to the final address sent by the CPU. Instead, it copies this address to internal RAM as a pointer to the beginning of the loaded song.)

The decompressed song data appears to have a similar layout (song, sequence, channel, subroutine, etc.) as other N-SPC formats, but uses a custom set of VCMDs.

  • $00 Stop
  • $01-7F Parameters: 1 byte standard parameter layout with optional second byte for duration and velocity.
  • $80-BF Note
  • $C8 Tie
  • $C9 Rest
  • $CE Instrument: 1 byte
  • $D5 Tempo: 1 byte
  • $D8 Transpose: 1 byte (signed) channel transpose
  • $DB Volume: 1 byte
  • $DD Call Subroutine: Followed by 2 byte address of first event of subroutine, and 1 byte repeat count.
  • $DF Pitch Slide From: 3 bytes, see above.
  • $E0 Pitch Slide To: 3 bytes, see above.
  • $E1 Pitch Slide Off

The remaining events are currently unknown, but have the following number of additional bytes:

  • 0 bytes: $C5, $D2, $E4, $EA-EC, $F0
  • 1 byte: $C0, $CF, $D3, $D7, $D9, $DA, $DE, $E2, $E8, $E9, $ED-EF
  • 2 bytes: $D0, $D4, $D6, $DC
  • 3 bytes: $D1, $E3, $E5-E7