|
|
(14 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| Go back to [[N-SPC Engine]]<br> | | Go back to [[N-SPC Engine]]<br> |
| If you're looking for Super Mario World or Pilotwings, see the [[N-SPC Engine/Prototype|Prototype]] variant instead.
| |
|
| |
| '''NOTE: The following page is a stub, and is under construction.'''
| |
|
| |
|
| __TOC__ | | __TOC__ |
|
| |
|
| Nintendo is the first user of the N-SPC engine, both at launch and with the prototype variant. There are a variety of game-specific or programmer-specific cases in here, and thus have been sorted accordingly. | | Nintendo is the first user of the N-SPC engine, both at launch and with the prototype variant. There are a variety of game-specific or programmer-specific cases in here, and thus have been sorted accordingly for disambiguation reasons. |
|
| |
|
| The raw build sorting notes can be found [[N-SPC Engine/Nintendo/Build Sorting|here]] for all variants by Nintendo. | | The raw build sorting notes can be found [[N-SPC Engine/Nintendo/Build Sorting|here]] for all variants by Nintendo. |
|
| |
|
| ''TODO most other Nintendo games''
| | ==Unique Cases== |
| | * [[N-SPC Engine/Nintendo/F-Zero|F-Zero]] |
| | * [[N-SPC Engine/Nintendo/Sound Module and Burn-In Test|Sound Module and Burn-In Test]] |
| | * [[N-SPC Engine/Nintendo/Mario Paint|Mario Paint]] |
| | * [[N-SPC Engine/Nintendo/Super Metroid|Super Metroid]] |
| | * [[N-SPC Engine/Nintendo/Tetris and Dr. Mario|Tetris and Dr. Mario]] |
| | * [[N-SPC Engine/Nintendo/Nintendo Power Menu Program|Nintendo Power Menu Program]] |
| | * [[N-SPC Engine/Nintendo/Special Tee Shot|Special Tee Shot]] |
| | * [[N-SPC Engine/Nintendo/Super Scope 6 (Blastris)|Super Scope 6 (Blastris)]] |
|
| |
|
| ==F-Zero== | | ==Multi-Game Cases== |
| This is the first released game to use the standard N-SPC VCMD set starting at $E0. VCMDs $FB-$FF don't exist, though, and the fast forward phrase commands also don't exist here.
| | * [[N-SPC Engine/Nintendo/Akito Nakatsuka|Akito Nakatsuka]] |
| | * [[N-SPC Engine/Nintendo/Hirokazu Tanaka|Hirokazu Tanaka]] |
| | * [[N-SPC Engine/Nintendo/Koji Kondo|Koji Kondo]] |
| | ** [[N-SPC Engine/Nintendo/Koji Kondo/Prototype|Prototype]] |
| | * [[N-SPC Engine/Nintendo/Taro Bando|Taro Bando]] |
|
| |
|
| {| class="wikitable"
| | The raw build sorting notes can be found [[N-SPC Engine/Nintendo/Build Sorting|here]] for all variants by Nintendo. |
| |-
| |
| ! Game Name !! VCMD Table Location ($E0 and up) !! ROM Offset
| |
| |-
| |
| | F-Zero || <tt>0x0EE9</tt>, relative to <tt>0x0E29</tt> || <tt>0x01E538</tt> (US & Japanese versions)<br><tt>0x01841E</tt> (European version)
| |
| |}
| |
| | |
| ===Communication with the SNES===
| |
| Each CPUIO register has its own individual usage.
| |
| | |
| ====CPUIO0 ($2140/$F4)====
| |
| Loads new data when set to <tt>$FF</tt>. See [[N-SPC_Engine#Load_New_Data_.28Command_.24FF.29|the source build's Load New Data command]] for the loading protocol, as it is identical binary-wise to the copy used in this one minus the *Ver S1.20* string. Otherwise, it controls music and a few other sound effects.
| |
| | |
| <u>Input</u> <pre>%xyyyzaaa</pre>
| |
| <u>Output</u> <pre>%00000aaa</pre>
| |
| * <tt>x</tt>, when set, fades out the music over 84 tempo ticks. It causes music VCMD <tt>$F5</tt> (echo enable bits and volume) to effectively act as a NOP when this happens.
| |
| * <tt>yyy</tt> is a looping SFX ID for channel 6, with a range of <tt>%001($1)</tt>-<tt>%100($4)</tt>, and looping back to <tt>$1</tt> after <tt>$4</tt>. Except for <tt>$3</tt>, they also don't restore the instrument ID after playing them.
| |
| * <tt>z</tt>, when set, causes the BRR engine noise generator from $2143/$F7 to output on channels 4-7.
| |
| * <tt>aaa</tt> is a music ID that is output to the SNES. <tt>%110($6)</tt> is a special case, as it utilizes an ID that is defined via loading a single byte to a specific memory location, rather than its own (the ID itself is illegal if forced due to a zero pointer). Music data does not actually need to be loaded in this particular case, as it is all stored in one go.
| |
| | |
| ====CPUIO1 ($2141/$F5)====
| |
| <u>Input</u> <pre>%xyzzzzzz</pre>
| |
| <u>Output</u> <pre>%00zzzzzz</pre>
| |
| * <tt>x</tt> increases the overall BRR engine noise generator frequency on channel 8. The BRR engine noise generator frequency is designed to hiccup like a gearshift when activating.
| |
| * <tt>y</tt> plays a continuous beeping tone on channel 6... unless the music that's currently playing is <tt>$11</tt>, which means a different SFX plays on channels 6 and 8.
| |
| * <tt>zzzzzz</tt> controls the BRR engine noise generator frequency on channel 8. Disable with zero. This value is what is output to the SNES.
| |
| | |
| ====CPUIO2 ($2142/$F6)====
| |
| <pre>%xyzzaaaa</pre>
| |
| The value output to the SNES is which bits are being utilized to play the SFX. Higher bits have more priority, but CPUIO0's channel 6 SFX has higher priority, which in turn is out-prioritized by CPUIO1's channel 6 SFX.
| |
| * <tt>x</tt> stops the music and goes '''BOOM!''' Channels 3-8 are used, with 5-8 being continuously used afterwards.
| |
| * <tt>y</tt> plays a UFO-like SFX on channel 6.
| |
| * <tt>zz</tt> controls the BRR engine noise with vibrato on channel 6.
| |
| * <tt>aaaa</tt> controls incidental SFX on channel 6. <tt>$4</tt> doesn't play anthing, and the values wrap around to <tt>$1</tt> after <tt>$8</tt>, except for $C, which plays <tt>$8</tt>.
| |
| | |
| ====CPUIO3 ($2143/$F7)====
| |
| <u>Input</u> <pre>%xxxxyyyy</pre>
| |
| <u>Output</u> <pre>%0000xxxx</pre>
| |
| *<tt>xxxx</tt> controls the panning of the second vehicle on channel 7, with zero representing left and $E representing right. Sets up a whole bunch of vehicle noises on channels 4-7 if set to $F instead that are not pitch-controllable. These bits are output to the SNES as the lowest four bits.
| |
| *<tt>yyyy</tt> controls the BRR engine noise generator frequency (and volume) of the second vehicle on channel 7, or several at once on channels 1-5 and 7 if bit <tt>z</tt> on $2140/$F4 is set.
| |
| | |
| ====SFX Sequence Format====
| |
| Most of the SFX is hard-coded and the instrument format, when utilized outside of the actual instrument table, is identical to a music instrument's. The only SFX that actually uses a SFX sequence format beyond an array of notes is CPUIO0's bit <tt>yyy</tt> ID <tt>%010 ($2)</tt> (there's actually a second one defined, but it appears to never have been used).
| |
| | |
| ''TODO SFX sequence format (roughly the same as the Prototype variant, except with different supported VCMDs and with VCMD $FF doing the same thing as Pilotwings: restarting the SFX)''
| |
| | |
| ==Aging Cassette/Sound Module and Burn-In Test==
| |
| {| class="wikitable"
| |
| |-
| |
| ! Game Name !! VCMD Table Location ($E0 and up) !! ROM Offset
| |
| |-
| |
| | Aging Cassette/Sound Module and Burn-In Test || <tt>0x0EE9</tt>, relative to <tt>0x0E29</tt> || <tt>0x0380BA</tt> (Aging Cassette)<br><tt>0x038792</tt> (SNES Burn-In Test Cartridge)
| |
| |}
| |
| | |
| ===Voice Command Format===
| |
| ''TODO new music VCMDs (the standard set is offset backwards by two IDs, and three new VCMDs are added on)''
| |
| | |
| ===Communication with the SNES===
| |
| ''TODO identical to standard Kankichi/N-SPC except for new commands at $80, $90-$93, of which $80 does $90-$93's commands as well as provide output''
| |
| <br><br><br>
| |
| ''TODO all other Nintendo variant games (that aren't known to be associated with other Nintendo variant games and likely have sound driver command differences between each other)''
| |
|
| |
|
| [[Category:SPC Sound Engines]] | | [[Category:SPC Sound Engines]] |
| [[Category:N-SPC Variants]] | | [[Category:N-SPC Variants]] |