;============================================================================ ; Faxanadu (U).nes ; ; PRG5 ($8000 - $bfff) ;============================================================================
.segment "PRG5" .ORG $8000
;============================================================================ ; Initialize sound effect playback. ; ; This is a thunking function that wraps ; SoundEffects_Init. ; ; INPUTS: ; None. ; ; OUTPUTS: ; None. ; ; CALLS: ; SoundEffects_Init ; ; XREFS: ; Game_InitScreenAndMusic ;============================================================================
[8000]thunk_SoundEffects_Init:; [$8000] [8000]JMP SoundEffects_Init
;============================================================================ ; Handle sound effects on hardware interrupt. ; ; This is a thunking function that wraps ; SoundEffects_HandleOnInterrupt. ; ; INPUTS: ; None. ; ; OUTPUTS: ; None. ; ; CALLS: ; SoundEffects_HandleOnInterrupt ; ; XREFS: ; OnInterrupt ;============================================================================
[8003]thunk_SoundEffects_HandleOnInterrupt:; [$8003] [8003]JMP SoundEffects_HandleOnInterrupt
;============================================================================ ; Initialize the playing state for music and sound effects. ; ; This is a thunking function that wraps ; Audio_InitPlayingState. ; ; INPUTS: ; None. ; ; OUTPUTS: ; None. ; ; CALLS: ; Audio_InitPlayingState ; ; XREFS: ; Game_InitScreenAndMusic ;============================================================================
[8006]thunk_Audio_InitPlayingState:; [$8006] [8006]JMP Audio_InitPlayingState
;============================================================================ ; Handle music on interrupt. ; ; This is a thunking function that wraps ; Music_HandleOnInterrupt. ; ; INPUTS: ; None. ; ; OUTPUTS: ; None. ; ; CALLS: ; Music_HandleOnInterrupt ; ; XREFS: ; OnInterrupt ;============================================================================
[8009]thunk_Music_HandleOnInterrupt:; [$8009] [8009]JMP Music_HandleOnInterrupt [800c].byte $ff; Unused padding byte.
;============================================================================ ; Handle music on interrupt. ; ; If the game is paused, no music will play. ; ; If no music or sound effects are set, audio will be reset. ; ; If music is set but not playing, the music data will be ; loaded. ; ; If music is set and playing, the next actions or notes of ; the MScripts will be invoked, playing parts of the music. ; ; INPUTS: ; Game_PausedState: ; Whether the game is paused. ; ; Music_Current: ; The currently-set music. ; ; OUTPUTS: ; None. ; ; CALLS: ; Audio_HandlePaused ; Audio_ResetIfNothingSet ; Music_Load ; Music_PlayNext ; ; XREFS: ; thunk_Music_HandleOnInterrupt ;============================================================================
[800d]Music_HandleOnInterrupt:; [$800d] [800d]LDA a:Game_PausedState; Load the paused state. [8010]BNE Audio_HandlePaused; If paused, then jump.
; ; The game is not paused. Music can be played. ;
[8012]LDA Music_Current; Load the current music to play. [8014]BEQ Audio_ResetIfNothingSet; If unset, jump to reset audio if nothing else is playing.
; ; There is music to play. ; ; If bit 0x80 is set, then it's already playing. We'll just ; continue to play it. ; ; If it's not set, load the new music. ;
[8016]BPL Music_Load; Jump to load the music.
; ; Music is currently playing. Play the next piece of the ; music. ;
[8018]JMP Music_PlayNext; Jump to play the next part of the current music.
;============================================================================ ; Initialize the music and sound effects state. ; ; This will clear out the music and sound effects ; in preparation for loading a new part of the game. ; ; INPUTS: ; None. ; ; OUTPUTS: ; Game_PausedState: ; Music_Current: ; SoundEffect_HandlerIndex: ; SND_CHN: ; SoundEffect_Current: ; SoundEffect_Unused_PriorityID: ; Cleared. ; ; XREFS: ; thunk_Audio_InitPlayingState ;============================================================================
[801b]Audio_InitPlayingState:; [$801b] [801b]LDA #$00 [801d]STA Music_Current; Clear the current music. [801f]STA SoundEffect_Current; Clear the next sound effect. [8021]STA a:SoundEffect_HandlerIndex [8024]STA a:SND_CHN; Clear the sound channel. [8027]STA a:Game_PausedState; Clear the paused flag. [802a]STA a:SoundEffect_Unused_PriorityID; Clear the ID of the highest-priority sound effect. [802d]RTS
;============================================================================ ; Pause audio when the game is paused. ; ; This will mark the audio as paused in response to the game ; being paused. ; ; If there's no music set, and no sound effects set, then ; this will also trigger a full audio reset. ; ; INPUTS: ; N: ; The game/audio paused state. ; ; See Game_PausedState for documentation. ; ; Music_Current: ; The current music to check. ; ; SoundEffect_TicksRemaining: ; The list of sound effect slots to check. ; ; OUTPUTS: ; Game_PausedState: ; The updated paused state. ; ; CALLS: ; Audio_Reset ; Audio_ResetIfNothingSet ; ; XREFS: ; Music_HandleOnInterrupt ;============================================================================
[802e]Audio_HandlePaused:; [$802e]
; ; First, check if we've already handled an audio pause state. ;
[802e]BMI Audio_ResetIfNothingSet; If the audio paused state is already set, then jump.
; ; The game is paused, but audio is not. Set that bit and ; reset audio. ;
[8030]ORA #$80; Set bit 7 (audio paused). [8032]STA a:Game_PausedState; Store it. [8035]JSR Audio_Reset; Reset audio.
; ; v-- Fall through --v ;
;============================================================================ ; Reset the audio state if no music or sounds are set. ; ; If there's no music set, and no sound effects set, then ; this will trigger a full audio reset. ; ; INPUTS: ; Music_Current: ; The current music to check. ; ; SoundEffect_TicksRemaining: ; The list of sound effect slots to check. ; ; OUTPUTS: ; None. ; ; CALLS: ; Audio_Reset ; ; XREFS: ; Audio_HandlePaused ; Music_HandleOnInterrupt ;============================================================================
[8038]Audio_ResetIfNothingSet:; [$8038] [8038]LDA Music_Current; Load the current music. [803a]BNE @_return; If it's set, return. Nothing to do.
; ; There's no music playing. Check if sound effects ; are playing. ;
[803c]LDX #$03; X = 3 (loop counter). [803e]@_checkSoundEffectLoop:; [$803e] [803e]LDA SoundEffect_TicksRemaining,X; Load the sound effect at the current index. [8041]BNE @_return; If it's set, then return. [8043]DEX; X-- (loop counter). [8044]BPL @_checkSoundEffectLoop; If >= 0, loop.
; ; This has looped through all sound effects, and none ; were set. Audio can now be reset. ;
[8046]JMP Audio_Reset; Reset the audio. [8049]@_return:; [$8049] [8049]RTS
;============================================================================ ; Reset all audio channels. ; ; Square Wave 1 Hi/Lo and Noise Volume will be set to 16. ; Everything else will be set to 0. ; ; INPUTS: ; None. ; ; OUTPUTS: ; SQ1_HI: ; SQ1_LO: ; NOISE_VOL: ; Set to 16. ; ; NOISE_HI: ; NOISE_LO: ; SQ1_SWEEP: ; SQ1_VOL: ; SQ2_HI: ; SQ2_LO: ; SQ2_SWEEP: ; SQ2_VOL: ; TRI_HI: ; TRI_LINEAR: ; TRI_LO: ; Set to 0. ; ; XREFS: ; Audio_HandlePaused ; Audio_ResetIfNothingSet ; Music_Load ; SoundEffects_Init ;============================================================================
[804a]Audio_Reset:; [$804a] [804a]LDA #$10 [804c]STA a:SQ1_VOL; Set to 16. [804f]STA a:SQ2_VOL; Set to 16. [8052]STA a:NOISE_VOL; Set to 16. [8055]LDA #$00 [8057]STA a:SQ1_SWEEP; Set to 0. [805a]STA a:SQ1_LO; Set to 0. [805d]STA a:SQ1_HI; Set to 0. [8060]STA a:SQ2_SWEEP; Set to 0. [8063]STA a:SQ2_LO; Set to 0. [8066]STA a:SQ2_HI; Set to 0. [8069]STA a:TRI_LINEAR; Set to 0. [806c]STA a:TRI_LO; Set to 0. [806f]STA a:TRI_HI; Set to 0. [8072]STA a:NOISE_LO; Set to 0. [8075]STA a:NOISE_HI; Set to 0. [8078]RTS
;============================================================================ ; Load channel and MScript state for music. ; ; XREFS: ; Music_HandleOnInterrupt ;============================================================================
[8079]Music_Load:; [$8079]
; ; Load the current music to play. ;
[8079]LDA Music_Current; Load the current music. [807b]ORA #$80; Mark as currently playing. [807d]STA Music_Current; Store that.
; ; Convert to a lookup index for the table. ; ; This will be multiplied by 8, giving us word boundaries ; across 4 channels. ;
[807f]ASL A; Convert to a word boundary. [8080]ASL A; And multiply by 4 channels. [8081]ASL A [8082]TAY; Y = result (Music lookup index).
; ; Begin loading the starting MScripts. ; ; This will load all 4 channels of MScripts for the selected ; piece of music, indexed from last channel to first. ; ; Bear in mind, the loop counter is looping over addresses, so ; it loops 8 times, or 2 bytes * 4 channels. Indexes will be ; based off the music ID, though, not the loop counter. ;
[8083]LDX #$07; X = 7 (loop counter). [8085]@_loadMusicLoop:; [$8085] [8085]LDA MSCRIPTS_LOOKUP,Y; Load the MScript channel address at Y. [8088]STA Music_CurrentScriptAddrs,X; Store it in the list of channel addresses.
; ; BUG: This tries to save the address for a return/repeat, but ; it always saves in the first channel slot, which is ; incorrect. ;
[808a]STA a:MScript_SavedAddr; Store it as the latest saved address as well, for push/pop purposes.
; ; Prepare for the next loop iteration and lookup. ;
[808d]DEY; Y-- (lookup index). [808e]DEX; X-- (loop counter). [808f]BPL @_loadMusicLoop; If X >= 0, loop.
; ; We're out of the loop. Clear a bunch of state. ;
[8091]INX; Set X back to 0 (-1 + 1 == 0). [8092]STX a:Music_Global_Transpose [8095]STX a:Music_Channel_Transpose [8098]STX a:Music_Channel_Transpose_1_ [809b]STX a:Music_Channel_Transpose_2_ [809e]STX a:Music_SQ_Fades [80a1]STX a:Music_SQ_Fades_1_ [80a4]STX a:Music_SQEnvelope_Mode [80a7]STX a:Music_SQEnvelope_Mode_1_ [80aa]STX a:Music_SQEnvelope_Phase [80ad]STX a:Music_SQEnvelope_Phase_1_ [80b0]STX a:Music_Current_SQ_Low [80b3]STX a:Music_Current_SQ_Low_1_ [80b6]STX a:Music_Note_Period_Low [80b9]STX a:Music_Note_Period_High [80bc]STX a:MScript_Unused_RawValue [80bf]STX a:Something_Music_Triangle_017e [80c2]STX a:Music_Noise_Remaining [80c5]STX a:Music_SQEffect_Delta [80c8]STX a:MScript_CurValue [80cb]STX a:Music_SQPitchDelta_Mask [80ce]STX a:Music_SQPitchDelta_Mask_1_ [80d1]STX a:Music_SQ2_TimerLowBias
; ; Set the following to 1. ;
[80d4]INX; X = 1 [80d5]STX a:Music_NoteTicksRemaining [80d8]STX a:Music_NoteTicksRemaining_1_ [80db]STX a:Music_NoteTicksRemaining_2_ [80de]STX a:Music_NoteTicksRemaining_3_
; ; Clear the repeat counts for each channel. ;
[80e1]STX a:MScript_NoteDurations [80e4]STX a:MScript_NoteDurations_1_ [80e7]STX a:MScript_NoteDurations_2_ [80ea]STX a:MScript_NoteDurations_3_
; ; Set the following to 8. ;
[80ed]LDA #$08; A = 8 [80ef]STA a:Music_SQ_Note_Lengths [80f2]STA a:Music_Note_Length_High [80f5]STA a:Music_Unused_0166 [80f8]STA a:Music_Unused_0166_1_
; ; Set the following to 144. ;
[80fb]LDA #$90; A = 144 [80fd]STA a:Music_SQ_ControlBits [8100]STA a:Music_SQ_ControlBits_1_
; ; Reset audio channels. ;
[8103]JMP Audio_Reset; Reset the audio channels.
;============================================================================ ; Play the next op in each MScript channel. ; ; This will perform the next operation for each channel, ; unsetting the music if all are complete. ; ; If a channel has a repeat set, its repeat count will ; be reduced by 1 and the current note/value will be played. ; Otherwise, the next operation in the MScript will be ; invoked. ; ; Once all channels are marked completed, the music will be ; unset. ; ; INPUTS: ; Music_NoteTicksRemaining: ; The repeat counters for each channel. ; ; OUTPUTS: ; Music_NoteTicksRemaining: ; The updated repeat counters for each channel. ; ; Music_NumChannelsCompleted: ; The number of channels completed after this run. ; ; Music_Current: ; Unset, if all channels completed. ; ; MScript_CurrentChannel: ; Clobbered. ; ; CALLS: ; MScripts_InvokeNext ; Music_PlayForChannel ; ; XREFS: ; Music_HandleOnInterrupt ;============================================================================
[8106]Music_PlayNext:; [$8106]
; ; Set the initial state for tracking per-channel playback ; for this invocation. ;
[8106]LDA #$00 [8108]STA a:Music_NumChannelsCompleted; Clear the number of completed channels. [810b]STA a:MScript_CurrentChannel; Clear the current channel index.
; ; Loop through each of the channels. ; ; For each channel, the current value will be played and ; only advanced when the repeat count for the value hits 0. ;
[810e]@_loop:; [$810e] [810e]LDX a:MScript_CurrentChannel; X = Current channel index [8111]DEC Music_NoteTicksRemaining,X [8114]BNE @_play [8116]JSR MScripts_InvokeNext [8119]@_play:; [$8119] [8119]JSR Music_PlayForChannel; Play music on this channel. [811c]INC a:MScript_CurrentChannel; Move to the next channel. [811f]LDA a:MScript_CurrentChannel; Load that channel index. [8122]CMP #$04; Is it < 4? [8124]BCC @_loop; If so, loop.
; ; Check if all channels have finished. ;
[8126]LDA a:Music_NumChannelsCompleted; Load the number of completed channels. [8129]CMP #$04; Is it 4? [812b]BNE @_return; If not, return.
; ; All channels have finished, so clear the current music. ;
[812d]LDA #$00 [812f]STA Music_Current; Unset the current music. [8131]@_return:; [$8131] [8131]RTS
;============================================================================ ; TODO: Document Music_PlayForChannel ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlayNext ;============================================================================
[8132]Music_PlayForChannel:; [$8132] [8132]LDX a:MScript_CurrentChannel; Load the current channel index. [8135]BEQ @_isSquareWave; If it's Square Wave 1, jump. [8137]DEX [8138]BEQ @_isSquareWave; If it's Square Wave 2, jump. [813a]DEX [813b]BEQ @_isTriangleWave; If it's Triangle Wave, jump. [813d]RTS; Else, return.
; ; This is the Triangle Wave channel. ;
[813e]@_isTriangleWave:; [$813e] [813e]LDX a:MScript_CurrentChannel; Load the current channel index. [8141]LDA a:Something_Music_Triangle_017e [8144]BEQ @_checkSoundEffectOnTri [8146]DEC a:Something_Music_Triangle_017e [8149]LDA #$c0 [814b]@_checkSoundEffectOnTri:; [$814b] [814b]STA a:MScript_CurValue
; ; Check if there's currently a sound effect playing ; on the Triangle Wave channel. ;
[814e]LDA SoundEffect_TicksRemaining,X; Load the current sound effect on the Triangle Wave channel. [8151]BNE @_clearTriangleWave; If one is set, jump to clear it.
; ; No sound effect is playing on the Triangle Wave channel. ;
[8153]LDA a:MScript_CurValue; Load the value to play. [8156]STA a:TRI_LINEAR; Set it on the channel. [8159]RTS; And return. [815a]@_clearTriangleWave:; [$815a] [815a]LDA #$00 [815c]STA a:TRI_LINEAR; Clear the Triangle Wave channel. [815f]RTS; And return.
; ; This is a Square Wave channel. ;
[8160]@_isSquareWave:; [$8160] [8160]LDX a:MScript_CurrentChannel [8163]LDY Music_SQEnvelope_Mode,X [8166]BEQ Music_PlaySQEnvelopeModeLinearTrailoff [8168]DEY [8169]BEQ Music_PlaySQEnvelopeModeCurveButHeld [816b]DEY [816c]BEQ Music_PlaySQEnvelopeModePluck [816e]RTS
;============================================================================ ; Play SQ envelope mode 0: Linear, trails off. ; ; This updates the Square Wave channel's volume level, ; optionally applying a square pitch effect. ; ; This is used to smoothly fade out the volume. ; ; INPUTS: ; MScript_CurrentChannel: ; The current MScript channel. ; ; Music_SQEnvelope_Value: ; The counter values for the mode, across ; SQ channels. ; ; SoundEffect_TicksRemaining: ; The currently-playing sound effects. ; ; OUTPUTS: ; Music_SQEnvelope_Value: ; The updated counter values. ; ; MScript_CurValue: ; The updated volume. ; ; CALLS: ; Music_ApplySQPitchEffectToLO: ; Music_UpdateSQVolRegister ; ; XREFS: ; Music_PlayForChannel ;============================================================================
[816f]Music_PlaySQEnvelopeModeLinearTrailoff:; [$816f] [816f]LDX a:MScript_CurrentChannel; Load the current MScript channel.
; ; Check if the counter is 0. If so, it'll stay that way ; until playback finishes. ;
[8172]LDA Music_SQEnvelope_Value,X; Load the fade-out counter value for the mode. [8175]BEQ @LAB_PRG5__817d; If it's 0, jump.
; ; The counter is a positive value. Subtract 3 and store it. ;
[8177]SEC [8178]SBC #$03; Subtract 3 from the counter. [817a]STA Music_SQEnvelope_Value,X; Store the new counter.
; ; Convert the value to a value between 0-15. ; ; This effectively shifts any value into the lower nibble. ;
[817d]@LAB_PRG5__817d:; [$817d] [817d]LSR A; Shift into the lower nibble. [817e]LSR A [817f]LSR A [8180]LSR A [8181]AND #$0f; Mask out the upper nibble. [8183]STA a:MScript_CurValue; Store as the new volume value for the Square Wave.
; ; Check if any special effects are playing on this channel. ;
[8186]LDA SoundEffect_TicksRemaining,X; Load any current special effects on this channel. [8189]BNE @_return; If set, return. [818b]JSR Music_UpdateSQVolRegister; Update the volume and flags the SQ*_VOL register. [818e]JSR Music_ApplySQPitchEffectToLO; Apply the mode's pitch effect to the SQ*_LO register. [8191]@_return:; [$8191] [8191]RTS
;============================================================================ ; TODO: Document Music_PlaySQEnvelopeModeCurveButHeld ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlayForChannel ;============================================================================
[8192]Music_PlaySQEnvelopeModeCurveButHeld:; [$8192]
; ; This is SQ Mode 1: Curve but held ;
[8192]LDX a:MScript_CurrentChannel; Load the current MScript channel. [8195]LDA Music_SQEnvelope_Value,X [8198]AND #$0f [819a]STA Music_SQEnvelope_Value,X [819d]CMP #$0d [819f]BCC @LAB_PRG5__81a7 [81a1]DEC Music_SQEnvelope_Value,X [81a4]DEC Music_SQEnvelope_Value,X [81a7]@LAB_PRG5__81a7:; [$81a7] [81a7]INC Music_SQEnvelope_Phase,X [81aa]LDA Music_SQEnvelope_Value,X [81ad]STA a:MScript_CurValue [81b0]LDA SoundEffect_TicksRemaining,X [81b3]BNE @_return [81b5]JSR Music_UpdateSQVolRegister [81b8]JSR Music_ApplySQPitchEffectToLO [81bb]@_return:; [$81bb] [81bb]RTS
;============================================================================ ; TODO: Document Music_PlaySQEnvelopeModePluck ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlayForChannel ;============================================================================
[81bc]Music_PlaySQEnvelopeModePluck:; [$81bc]
; ; This is SQ Mode 2: Table-based envelope (pluck effect) ;
[81bc]LDX a:MScript_CurrentChannel; Load the current MScript channel. [81bf]LDA Music_SQEnvelope_Phase,X [81c2]LSR A [81c3]LSR A [81c4]TAY [81c5]LDA SQ_MODE_2_PLUCK_VALUES,Y [81c8]BEQ @LAB_PRG5__81cd [81ca]INC Music_SQEnvelope_Phase,X [81cd]@LAB_PRG5__81cd:; [$81cd] [81cd]STA a:MScript_CurValue [81d0]LDA SoundEffect_TicksRemaining,X [81d3]BNE @_return [81d5]JSR Music_UpdateSQVolRegister [81d8]JSR Music_ApplySQPitchEffectToLO [81db]@_return:; [$81db] [81db]RTS
; ; XREFS: ; Music_PlaySQEnvelopeModePluck ;
[81dc]SQ_MODE_2_PLUCK_VALUES:; [$81dc] [81dc].byte $07; [0]: [81dd].byte $0a; [1]: [81de].byte $0d; [2]: [81df].byte $0f; [3]: [81e0].byte $0e; [4]: [81e1].byte $0d; [5]: [81e2].byte $0c; [6]: [81e3].byte $0b; [7]: [81e4].byte $0a; [8]: [81e5].byte $09; [9]: [81e6].byte $08; [10]: [81e7].byte $07; [11]: [81e8].byte $06; [12]: [81e9].byte $05; [13]: [81ea].byte $04; [14]: [81eb].byte $03; [15]: [81ec].byte $02; [16]: [81ed].byte $02; [17]: [81ee].byte $01; [18]: [81ef].byte $01; [19]: [81f0].byte $00; [20]:
;============================================================================ ; Update the Square Wave volume and control bits. ; ; This will load in the pending value for square wave volume ; and reduce it by any fade set by an MScript op. This will ; be the volume for the SQ1_VOL or ; SQ2_VOL channel. ; ; The control bits (duty cycle, length counter halt, ; constant volume/envelope flag) will then be applied to ; the register. ; ; See https://www.nesdev.org/wiki/APU_Pulse ; ; INPUTS: ; MScript_CurrentChannel: ; The current channel being processed (0 or 1). ; ; MScript_CurValue: ; The current volume value to use as a base. ; ; Music_SQ_Fades: ; The fade values to subtract from the volume ; (indexed by channel). ; ; Music_SQ_ControlBits: ; The control bits to set for the register. ; ; OUTPUTS: ; SQ1_VOL: ; SQ2_VOL: ; The updated Square Wave register. ; ; XREFS: ; Music_PlaySQEnvelopeModeCurveButHeld ; Music_PlaySQEnvelopeModeLinearTrailoff ; Music_PlaySQEnvelopeModePluck ;============================================================================
[81f1]Music_UpdateSQVolRegister:; [$81f1]
; ; Compute the address for the Square Wave volume register. ;
[81f1]LDX a:MScript_CurrentChannel; Load the MScript channel. [81f4]TXA; A = result. [81f5]ASL A; Convert to a word boundary. [81f6]ASL A; And double, giving us the start of either SQ channel volume addresses. [81f7]TAY; Y = resulting index.
; ; Apply any fade set. ;
[81f8]LDA a:MScript_CurValue; Load the volume to set. [81fb]SEC [81fc]SBC Music_SQ_Fades,X; Subtract any fade that was set. [81ff]BCS @_setVolume; If positive, jump.
; ; The volume went negative. Cap to 0. ;
[8201]LDA #$00; Set the volume to 0. [8203]@_setVolume:; [$8203] [8203]LDX a:MScript_CurrentChannel; Load the current SQ channel as an index. [8206]ORA Music_SQ_ControlBits,X; Apply control bits to the value to set for the register. [8209]STA SQ1_VOL,Y; And set the register. [820c]RTS
;============================================================================ ; TODO: Document Music_ApplySQPitchEffectToLO ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlaySQEnvelopeModeCurveButHeld ; Music_PlaySQEnvelopeModeLinearTrailoff ; Music_PlaySQEnvelopeModePluck ;============================================================================
[820d]Music_ApplySQPitchEffectToLO:; [$820d] [820d]LDX a:MScript_CurrentChannel; Load the current MScript channel.
; ; Make sure the phase counter reached 18 before we make any ; changes. This provides a delay. ;
[8210]LDA Music_SQEnvelope_Phase,X; Load the phase counter for the channel. [8213]CMP #$12; Is it < 18? [8215]BCC @_return; If so, end.
; ; The counter hit 18, so we can begin updating state. ; ; First we'll divide the counter by 4, giving a quarter speed. ; Then we'll AND with the depth mask, defining the range (e.g., ; $04 == 0..4 repeating). ; ; The result is a delta used later. ;
[8217]LSR A; Divide by 4, giving quarter speed. [8218]LSR A [8219]AND Music_SQPitchDelta_Mask,X; AND with our depth mask, defining the range. [821c]STA a:Music_SQEffect_Delta; Store as the delta. [821f]LDA SoundEffect_TicksRemaining,X; Check for sound effects on this channel. [8222]BNE @_return; If any are set, skip playing on this channel.
; ; No sound effects are playing, so we can continue. ;
[8224]LDA a:MScript_CurrentChannel; Load the current MScript channel. [8227]ASL A; Convert to a word boundary. [8228]ASL A; And multiply by 2 for the channel offset. [8229]TAY; Y = resulting index.
; ; Don't apply the effect if the base is too small to subtract from. ;
[822a]LDA Music_Current_SQ_Low,X; Load the low value . [822d]CMP Music_SQPitchDelta_Mask,X; Is it less than the depth mask? [8230]BCC @_return; If so, return.
; ; Subtract the delta and store it in the SQ*_LO register. ;
[8232]SEC [8233]SBC a:Music_SQEffect_Delta; Subtract the delta calculated above. [8236]STA SQ1_LO,Y; And store it in the register. [8239]@_return:; [$8239] [8239]RTS
;============================================================================ ; TODO: Document MScripts_InvokeNext ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScript_Op_BeginLoop ; MScript_Op_EndLoop ; MScript_Op_JumpSubroutine ; MScript_Op_NextLoopIfNCompleted ; MScript_Op_NoOp ; MScript_Op_RestartChannel ; MScript_Op_RestoreAddr ; MScript_Op_Return ; MScript_Op_SaveAddr ; MScript_Op_SetChannelTranspose ; MScript_Op_SetControlBits ; MScript_Op_SetGlobalTranspose ; MScript_Op_SetSQ2Detune ; MScript_Op_SetSQEnvelopeMode ; MScript_Op_SetSQPitchEffectDepth ; MScript_Op_SetSQVol ; MScripts_SetNoteLengthFromValue ; Music_PlayNext ;============================================================================
[823a]MScripts_InvokeNext:; [$823a] [823a]LDX a:MScript_CurrentChannel; X = Channel index being processed [823d]CPX #$03; Is this the noise channel? [823f]BNE @_loadNextValue; If not, jump. [8241]LDA a:Music_Noise_Remaining; Is there noise to play? [8244]BEQ @_loadNextValue; If not, process the next value in the script. [8246]JMP Music_PlayNoise; Else, play the noise. [8249]@_loadNextValue:; [$8249] [8249]JSR MScripts_GetNextValue; Get the next value from the MScript. [824c]STA a:MScript_CurValue; Store it. [824f]TAY; Y = Value [8250]BMI @_handleScriptValue; If the script value is >= 0x80, jump to handle it. [8252]JMP MScripts_PlayIfHasValue; Play if there's a value, or finish if 0.
; ; Check if this is an MScript op (>= 0xEE). ;
[8255]@_handleScriptValue:; [$8255] [8255]CMP #$ee; Is this < 0xEE? [8257]BCC MScripts_SetNoteLengthFromNext; If so, jump.
; ; Determine the op handler to invoke. ;
[8259]SEC [825a]LDA #$ff; A = 0xFF [825c]SBC a:MScript_CurValue; Subtract the opcode, giving an index into the lookup table. [825f]ASL A; Normalize to a word boundary for the lookup table. [8260]TAY; Y = A [8261]LDA MSCRIPT_OP_HANDLERS+1,Y; Load the address of the handler and push to the stack. [8264]PHA [8265]LDA MSCRIPT_OP_HANDLERS,Y [8268]PHA [8269]RTS
;============================================================================ ; Lookup table of MScript operation handlers. ; ; XREFS: ; MScripts_InvokeNext ;============================================================================
; ; XREFS: ; MScripts_InvokeNext ;
[826a]MSCRIPT_OP_HANDLERS:; [$826a] [826a].word MScript_Op_End-1; MScript_Op_End [$PRG5::826a] [826c].word MScript_Op_RestoreAddr-1; MScript_Op_RestoreAddr [$PRG5::826c] [826e].word MScript_Op_BeginLoop-1; MScript_Op_BeginLoop [$PRG5::826e] [8270].word MScript_Op_EndLoop-1; MScript_Op_EndLoop [$PRG5::8270] [8272].word MScript_Op_NextLoopIfNCompleted-1; MScript_Op_NextLoopIfNCompleted [$PRG5::8272] [8274].word MScript_Op_NoOp-1; MScript_Op_NoOp [$PRG5::8274] [8276].word MScript_Op_SaveAddr-1; MScript_Op_SaveAddr [$PRG5::8276] [8278].word MScript_Op_JumpSubroutine-1; MScript_Op_JumpSubroutine [$PRG5::8278] [827a].word MScript_Op_SetGlobalTranspose-1; MScript_Op_SetGlobalTranspose [$PRG5::827a] [827c].word MScript_Op_SetChannelTranspose-1; MScript_Op_SetChannelTranspose [$PRG5::827c] [827e].word MScript_Op_Return-1; MScript_Op_Return [$PRG5::827e] [8280].word MScript_Op_RestartChannel-1; MScript_Op_RestartChannel [$PRG5::8280] [8282].word MScript_Op_RepeatValue-1; MScript_Op_RepeatValue [$PRG5::8282] [8284].word MScript_Op_SetControlBits-1; MScript_Op_SetControlBits [$PRG5::8284] [8286].word MScript_Op_SetSQVol-1; MScript_Op_SetSQVol [$PRG5::8286] [8288].word MScript_Op_SetSQEnvelopeMode-1; MScript_Op_SetSQEnvelopeMode [$PRG5::8288] [828a].word MScript_Op_SetSQPitchEffectDepth-1; MScript_Op_SetSQPitchEffectDepth [$PRG5::828a] [828c].word MScript_Op_SetSQ2Detune-1; MScript_Op_SetSQ2Detune [$PRG5::828c]
;============================================================================ ; TODO: Document MScripts_SetNoteLengthFromNext ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScripts_InvokeNext ;============================================================================
[828e]MScripts_SetNoteLengthFromNext:; [$828e] [828e]LDA a:MScript_CurValue; Load the current script value. [8291]AND #$7f; Discard bit 7. [8293]BPL MScripts_SetNoteLengthFromValue
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document MScript_Op_RepeatValue ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8295]MScript_Op_RepeatValue:; [$8295] [8295]JSR MScripts_GetNextValue; Get the next value in the script.
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document MScripts_SetNoteLengthFromValue ; ; INPUTS: ; A ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScripts_SetNoteLengthFromNext ;============================================================================
[8298]MScripts_SetNoteLengthFromValue:; [$8298] [8298]LDX a:MScript_CurrentChannel [829b]STA MScript_NoteDurations,X [829e]STA a:MScript_CurValue [82a1]LDX a:MScript_CurrentChannel [82a4]CPX #$02 [82a6]BEQ MScripts_InvokeNext [82a8]LDA a:MScript_CurValue [82ab]PHA [82ac]LSR A [82ad]LSR A [82ae]LSR A [82af]STA a:MScript_CurValue [82b2]PLA [82b3]SEC [82b4]SBC a:MScript_CurValue [82b7]CMP #$10 [82b9]BCS @_beginCheckOffsets [82bb]ASL A [82bc]ASL A [82bd]ASL A [82be]ASL A [82bf]ORA #$08 [82c1]STA Music_SQ_Note_Lengths,X [82c4]CMP #$08 [82c6]BNE @_invokeNext [82c8]LDA #$18 [82ca]BNE @_storeLength [82cc]@_beginCheckOffsets:; [$82cc] [82cc]LDY #$00 [82ce]@_checkOffsetLoop:; [$82ce] [82ce]CMP MUSIC_CHANNEL_NOTE_OFFSETS_3_,Y [82d1]BCS @_loadLength [82d3]INY [82d4]INY [82d5]BNE @_checkOffsetLoop [82d7]@_loadLength:; [$82d7] [82d7]LDA BYTE_PRG5__8570,Y [82da]@_storeLength:; [$82da] [82da]STA Music_SQ_Note_Lengths,X [82dd]@_invokeNext:; [$82dd] [82dd]JMP MScripts_InvokeNext [82e0]JMP MScripts_InvokeNext; Unreachable?
;============================================================================ ; TODO: Document MScripts_PlayIfHasValue ; ; INPUTS: ; A ; Y ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScripts_InvokeNext ;============================================================================
[82e3]MScripts_PlayIfHasValue:; [$82e3] [82e3]CMP #$00 [82e5]BNE Music_PlayWaveOrNoise [82e7]JMP Music_StoreNoteDuration
;============================================================================ ; TODO: Document Music_PlayWaveOrNoise ; ; INPUTS: ; A ; Y ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScripts_PlayIfHasValue ;============================================================================
[82ea]Music_PlayWaveOrNoise:; [$82ea] [82ea]LDX a:MScript_CurrentChannel [82ed]CPX #$03 [82ef]BNE Music_PlayWave
; ; This is the Noise channel. ;
[82f1]PHA [82f2]AND #$0f [82f4]STA a:Music_Noise_Remaining [82f7]PLA [82f8]LSR A [82f9]LSR A [82fa]LSR A [82fb]LSR A [82fc]STA a:Music_Noise_Index
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document Music_PlayNoise ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScripts_InvokeNext ;============================================================================
[82ff]Music_PlayNoise:; [$82ff] [82ff]DEC a:Music_Noise_Remaining [8302]LDA a:SoundEffect_TicksRemaining_3_ [8305]BEQ @LAB_PRG5__830a [8307]JMP Music_StoreNoteDuration [830a]@LAB_PRG5__830a:; [$830a] [830a]LDA a:Music_Noise_Index [830d]BNE @LAB_PRG5__8312 [830f]JMP Music_StoreNoteDuration [8312]@LAB_PRG5__8312:; [$8312] [8312]ASL A [8313]ASL A [8314]TAX [8315]LDY #$00 [8317]@LAB_PRG5__8317:; [$8317] [8317]LDA MUSIC_NOISE_VALUES,X [831a]STA NOISE_VOL,Y [831d]INX [831e]INY [831f]CPY #$04 [8321]BCC @LAB_PRG5__8317 [8323]JMP Music_StoreNoteDuration
;============================================================================ ; TODO: Document Music_PlayWave ; ; INPUTS: ; Y ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlayWaveOrNoise ;============================================================================
[8326]Music_PlayWave:; [$8326] [8326]LDX a:MScript_CurrentChannel [8329]LDA SoundEffect_TicksRemaining,X [832c]BEQ @_setNote [832e]JMP Music_StoreNoteDuration [8331]@_setNote:; [$8331] [8331]LDX a:MScript_CurrentChannel [8334]BEQ @_setSquareWave1 [8336]DEX [8337]BEQ @_setSquareWave2Sweep
; ; This is the Triangle Wave channel. ;
[8339]LDA #$c0 [833b]STA a:TRI_LINEAR [833e]JSR Music_SetNote [8341]LDA a:Music_Note_Period_Low [8344]STA a:TRI_LO [8347]LDX a:MScript_CurrentChannel [834a]LDA a:Music_Note_Period_High; Load the note period to play. [834d]ORA #$f8; Set the full play length. [834f]STA a:TRI_HI; And set as the Triangle High. [8352]JMP Music_PlayTriangleWave
; ; This is the Square Wave 1 channel. ;
[8355]@_setSquareWave1:; [$8355] [8355]JSR Music_SetNote [8358]LDA #$00 [835a]STA a:SQ1_SWEEP [835d]LDA a:Music_Note_Period_Low [8360]STA a:SQ1_LO [8363]STA a:Music_Current_SQ_Low [8366]LDA a:Music_Note_Period_High [8369]ORA a:Music_SQ_Note_Lengths [836c]STA a:SQ1_HI [836f]LDA #$00 [8371]STA a:Music_SQEnvelope_Phase [8374]BEQ @_finish
; ; This is the Square Wave 2 channel. ;
[8376]@_setSquareWave2Sweep:; [$8376] [8376]JSR Music_SetNote [8379]LDA #$00 [837b]STA a:SQ2_SWEEP [837e]LDY a:MScript_CurValue [8381]LDA a:Music_Note_Period_Low [8384]CMP a:Music_SQ2_TimerLowBias [8387]BCC @_setSQ2HiLo [8389]SEC [838a]SBC a:Music_SQ2_TimerLowBias [838d]@_setSQ2HiLo:; [$838d] [838d]STA a:SQ2_LO [8390]STA a:Music_Current_SQ_Low_1_ [8393]LDA a:Music_Note_Period_High [8396]ORA a:Music_Note_Length_High [8399]STA a:SQ2_HI [839c]LDA #$00 [839e]STA a:Music_SQEnvelope_Phase_1_ [83a1]@_finish:; [$83a1] [83a1]LDX a:MScript_CurrentChannel [83a4]LDA #$ff [83a6]STA Music_SQEnvelope_Value,X [83a9]JSR Music_StoreNoteDuration [83ac]RTS
;============================================================================ ; Set the current per-channel repeat duration. ; ; MScripts maintain a per-channel "repeat count", which ; controls how many update ticks the current ; note/rest/noise value should be held before the script ; advances to the next byte. ; ; This copies MScript_NoteDurations (set by a script) into ; Music_NoteTicksRemaining (used for play back) for the ; current channel, which is decremented by the main music ; update loop to delay script advancement. ; ; INPUTS: ; MScript_CurrentChannel: ; The current MScript channel. ; ; MScript_NoteDurations: ; The per-channel repeat counts set by the script. ; ; OUTPUTS: ; Music_NoteTicksRemaining: ; The remaining tick counts for playback. ; ; XREFS: ; MScripts_PlayIfHasValue ; Music_PlayNoise ; Music_PlayTriangleWave ; Music_PlayWave ;============================================================================
[83ad]Music_StoreNoteDuration:; [$83ad] [83ad]LDX a:MScript_CurrentChannel; Load the current MScript channel. [83b0]LDA MScript_NoteDurations,X; Load the repeat counts for this channel. [83b3]STA Music_NoteTicksRemaining,X; Copy them over. [83b6]RTS
;============================================================================ ; TODO: Document Music_PlayTriangleWave ; ; INPUTS: ; A ; ; OUTPUTS: ; TODO ; ; XREFS: ; Music_PlayWave ;============================================================================
[83b7]Music_PlayTriangleWave:; [$83b7] [83b7]JSR Music_StoreNoteDuration [83ba]STA a:MScript_CurValue [83bd]LSR A [83be]LSR A [83bf]STA a:Music_SQEffect_Delta [83c2]LDA a:MScript_CurValue [83c5]SEC [83c6]SBC a:Music_SQEffect_Delta [83c9]STA a:Something_Music_Triangle_017e [83cc]RTS
;============================================================================ ; Set the note value to play. ; ; Note values are relative semitone indices, not absolute ; pitches. They are are converted into a playable frequency ; through several transformations. ; ; The final pitch depends on: ; ; 1. The channel base offset (MUSIC_CHANNEL_NOTE_OFFSETS) ; 2. The channel transposition (Music_Channel_Transpose) ; 3. The global transposition (Music_Global_Transpose) ; 4. An octave normalization loop (12 semitones per octave) ; ; A value of 0x00 represents a rest. Any other value is ; processed through the above steps. ; ; As a result, the same byte value in different MScripts ; (or on different channels) does not necessarily produce ; the same audible pitch. ; ; XREFS: ; Music_PlayWave ;============================================================================
[83cd]Music_SetNote:; [$83cd] [83cd]LDX a:MScript_CurrentChannel [83d0]LDA a:MScript_CurValue [83d3]CLC [83d4]ADC MUSIC_CHANNEL_NOTE_OFFSETS,X [83d7]CLC [83d8]ADC Music_Channel_Transpose,X [83db]CLC [83dc]ADC a:Music_Global_Transpose [83df]STY a:MScript_Unused_RawValue
; ; Loop, subtracting 12 (number of notes in our lookup ; table) each iteration, until < 0. ; ; The number of loop iterations will be used later to ; normalize the resulting note for the right octave. ;
[83e2]LDY #$01 [83e4]SEC [83e5]@_loop1:; [$83e5] [83e5]SBC #$0c [83e7]INY [83e8]BCS @_loop1
; ; TODO: Out of the loop. ;
[83ea]DEY [83eb]ADC #$0d [83ed]ASL A [83ee]TAX [83ef]LDA AUDIO_NOTES,X [83f2]STA a:Music_Note_Period_Low [83f5]LDA AUDIO_NOTES+1,X [83f8]STA a:Music_Note_Period_High
; ; Convert to the note in the right octave based on ; the starting value. ;
[83fb]@_octaveLoop:; [$83fb] [83fb]DEY [83fc]BEQ @_return [83fe]LSR a:Music_Note_Period_High [8401]ROR a:Music_Note_Period_Low [8404]JMP @_octaveLoop [8407]@_return:; [$8407] [8407]RTS
;============================================================================ ; MScript Op 0xFF: End the channel's script. ; ; XREFS: ; MSCRIPT_OP_HANDLERS [$PRG5::826a] ;============================================================================
[8408]MScript_Op_End:; [$8408] [8408]LDX a:MScript_CurrentChannel; Load the current MScript channel.
; ; Repeat this every time it's called. ; ; This ensures that this channel stays on this ; instruction until every channel has completed. ;
[840b]LDA #$01 [840d]STA Music_NoteTicksRemaining,X; Set this to repeat 1 more time (infinitely). [8410]TXA; A = MScript channel. [8411]ASL A; Convert to a word boundary for an address index. [8412]TAX; X = result.
; ; Decrement the offset into the script to keep it on this ; 0xFF operation until all channels complete. ;
[8413]LDA Music_CurrentScriptAddrs,X; Load the current script address for this channel. [8415]BNE @_setAddr; If lower byte is not 0, jump.
; ; Lower byte of the address is 0. We'll need to decrement ; the upper byte. ;
[8417]DEC Music_CurrentScriptAddrs+1,X; Decrement the upper byte of the address. [8419]@_setAddr:; [$8419] [8419]DEC Music_CurrentScriptAddrs,X; Decrement the lower byte of the address.
; ; Mark this channel as completed. ;
[841b]INC a:Music_NumChannelsCompleted; Mark the channel as complete. [841e]RTS
;============================================================================ ; MScript Op $FD: Begin Loop. ; ; Marks the start of a loop. This address will be used ; when looping. ; ; The loop will end when after it completes the specified ; number of loops, or when another operation breaks out ; of the loop. ; ; The initial loop counter is set to 1 internally. ; ; Loops cannot be nested. ; ; ARGS: ; 1. Number of iterations (1 byte) ;============================================================================
[841f]MScript_Op_BeginLoop:; [$841f]
; ; Read the number of iterations to loop from the script. ;
[841f]JSR MScripts_GetNextValue; Load the next value from the script. [8422]LDX a:MScript_CurrentChannel; Load the current MScript channel. [8425]STA MScript_LoopLength,X; Store the length of this loop to the next value.
; ; Set the starting value for the loop counter (1). ;
[8428]LDA #$01 [842a]STA MScript_LoopCounter,X; Set the starting loop counter to 1.
; ; Store the start address of the loop. ;
[842d]TXA; A = Loop length. [842e]ASL A; Convert to a word boundary for an index. [842f]TAX; X = resulting index. [8430]LDA Music_CurrentScriptAddrs,X; Load the lower byte of the current script address for the channel. [8432]STA MScript_LoopStartAddrs,X; Store as the lower byte of the starting address for the loop. [8435]LDA Music_CurrentScriptAddrs+1,X; Load the upper byte. [8437]STA MScript_LoopStartAddrs+1,X; Store that.
; ; We're done. Invoke the next op in the script. ;
[843a]JMP MScripts_InvokeNext; Invoke the next operation.
;============================================================================ ; MSCript Op $FE: Restart Loop If >= N Iterations ; ; If >= N iterations have been completed, restart the ; loop, advancing the loop iteration count. ; ; If < N iterations have been completed, proceed with ; the next operation in the script. ; ; ARGS: ; 1. Number of iterations to check (1 byte) ;============================================================================
[843d]MScript_Op_NextLoopIfNCompleted:; [$843d] [843d]JSR MScripts_GetNextValue; Load the current MScript channel. [8440]LDX a:MScript_CurrentChannel; Load the current MScript channel. [8443]CMP MScript_LoopCounter,X; Has the specified number of loops been completed? [8446]BCS @_invokeNext; If so, invoke the next operation within this loop.
; ; The specified number of loops have not been completed. ; Restart the loop. ;
[8448]TXA; A = Current channel. [8449]ASL A; Convert to a word boundary for lookup tables. [844a]TAX; X = result. [844b]LDA MScript_LoopEndAddrs,X; Load the lower byte of the loop end address. [844e]STA Music_CurrentScriptAddrs,X; Set as the lower byte of the next address. [8450]LDA MScript_LoopEndAddrs+1,X; Load the upper byte of the loop end address. [8453]STA Music_CurrentScriptAddrs+1,X; Set as the upper byte of the next address. [8455]@_invokeNext:; [$8455] [8455]JMP MScripts_InvokeNext
;============================================================================ ; MScript Op $FC: End Loop. ; ; Marks the end of the loop. ; ; If the loop counter has hit the loop length (and ; remember, the loop counter is 1-based), the loop will ; end. ; ; If it's under the loop length, the loop will restart. ;============================================================================
[8458]MScript_Op_EndLoop:; [$8458] [8458]LDX a:MScript_CurrentChannel; Load the current MScript channel. [845b]LDA MScript_LoopCounter,X; Load the current loop counter. [845e]CMP MScript_LoopLength,X; Is it >= the loop length? [8461]BCS @_invokeNext; If so, invoke the next operation after the loop.
; ; The script can continue to loop. ;
[8463]INC MScript_LoopCounter,X; Increment the loop counter. [8466]TXA; A = MScript channel. [8467]ASL A; Convert to a word boundary for lookup tables. [8468]TAX; X = resulting index.
; ; Set the current script address as the end of the loop. ;
[8469]LDA Music_CurrentScriptAddrs,X; Load the lower byte of the current script address. [846b]STA MScript_LoopEndAddrs,X; Set as the lower byte of the end of the loop. [846e]LDA Music_CurrentScriptAddrs+1,X; Load the upper byte of the current script address. [8470]STA MScript_LoopEndAddrs+1,X; Set as the upper byte of the end of the loop.
; ; Set the start of the loop as the current script address. ;
[8473]LDA MScript_LoopStartAddrs,X; Load the lower byte of the address of the start of the loop. [8476]STA Music_CurrentScriptAddrs,X; Set as the lower byte of the current script address. [8478]LDA MScript_LoopStartAddrs+1,X; Load the upper byte of the address of the start of the loop. [847b]STA Music_CurrentScriptAddrs+1,X; Set as the upper byte of the current script address.
; ; We're done. Proceed with the script, either looping or ; moving on from the loop. ;
[847d]@_invokeNext:; [$847d] [847d]JMP MScripts_InvokeNext; Invoke the next operation in the script.
;============================================================================ ; MScript Op $FA: No-Op ; ; Does nothing. Simply acts as padding to help keep ; scripts across channels in sync. ;============================================================================
[8480]MScript_Op_NoOp:; [$8480] [8480]JMP MScripts_InvokeNext; Invoke the next operation in the script.
;============================================================================ ; TODO: Document MScript_Op_SetControlBits ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8483]MScript_Op_SetControlBits:; [$8483] [8483]JSR MScripts_GetNextValue [8486]LDX a:MScript_CurrentChannel [8489]STA Music_SQ_ControlBits,X [848c]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_SaveAddr ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[848f]MScript_Op_SaveAddr:; [$848f] [848f]JSR MScript_Op_SaveAddr_Store [8492]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_SaveAddr_Store ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; MScript_Op_SaveAddr ;============================================================================
[8495]MScript_Op_SaveAddr_Store:; [$8495] [8495]LDA a:MScript_CurrentChannel [8498]ASL A [8499]TAX [849a]LDA Music_CurrentScriptAddrs,X [849c]STA MScript_SavedAddr,X [849f]LDA Music_CurrentScriptAddrs+1,X [84a1]STA MScript_SavedAddr+1,X [84a4]RTS
;============================================================================ ; TODO: Document MScript_Op_RestoreAddr ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[84a5]MScript_Op_RestoreAddr:; [$84a5] [84a5]LDA a:MScript_CurrentChannel [84a8]ASL A [84a9]TAX [84aa]LDA MScript_SavedAddr,X [84ad]STA Music_CurrentScriptAddrs,X [84af]LDA MScript_SavedAddr+1,X [84b2]STA Music_CurrentScriptAddrs+1,X [84b4]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_RestartChannel ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[84b7]MScript_Op_RestartChannel:; [$84b7] [84b7]LDA Music_Current [84b9]ASL A [84ba]ASL A [84bb]SEC [84bc]SBC #$04 [84be]ASL A [84bf]TAY [84c0]LDX #$00 [84c2]@_loop:; [$84c2] [84c2]LDA MSCRIPTS_TITLESCREEN,Y [84c5]STA Music_CurrentScriptAddrs,X [84c7]INY [84c8]INX [84c9]CPX #$08 [84cb]BNE @_loop [84cd]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_JumpSubroutine ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[84d0]MScript_Op_JumpSubroutine:; [$84d0] [84d0]JSR MScripts_GetNextValue [84d3]PHA [84d4]JSR MScripts_GetNextValue [84d7]PHA [84d8]LDA a:MScript_CurrentChannel [84db]ASL A [84dc]TAX [84dd]LDA Music_CurrentScriptAddrs,X [84df]STA MScript_PushedAddrs,X [84e2]LDA Music_CurrentScriptAddrs+1,X [84e4]STA MScript_PushedAddrs+1,X [84e7]PLA [84e8]STA Music_CurrentScriptAddrs+1,X [84ea]PLA [84eb]STA Music_CurrentScriptAddrs,X [84ed]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_Return ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[84f0]MScript_Op_Return:; [$84f0] [84f0]LDA a:MScript_CurrentChannel; Load the current channel. [84f3]ASL A; Shift to a word boundary. [84f4]TAX; X = Result. [84f5]LDA MScript_PushedAddrs,X; Load the lower byte of the pushed address. [84f8]STA Music_CurrentScriptAddrs,X; Set for the script address. [84fa]LDA MScript_PushedAddrs+1,X; Load the upper byte. [84fd]STA Music_CurrentScriptAddrs+1,X; And set that. [84ff]JMP MScripts_InvokeNext; Invoke the script there.
;============================================================================ ; TODO: Document MScript_Op_SetChannelTranspose ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8502]MScript_Op_SetChannelTranspose:; [$8502] [8502]JSR MScripts_GetNextValue [8505]LDX a:MScript_CurrentChannel [8508]STA Music_Channel_Transpose,X [850b]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_SetGlobalTranspose ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[850e]MScript_Op_SetGlobalTranspose:; [$850e] [850e]JSR MScripts_GetNextValue [8511]STA a:Music_Global_Transpose [8514]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_SetSQVol ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8517]MScript_Op_SetSQVol:; [$8517] [8517]JSR MScripts_GetNextValue [851a]LDX a:MScript_CurrentChannel [851d]STA Music_SQ_Fades,X [8520]JMP MScripts_InvokeNext
;============================================================================ ; MScript Op $F0: Set the envelope mode for the Square Wave. ; ; This supports the following values: ; ; 0: Volume decay ; ; Ramps down the volume smoothly. ; ; 1: Curve but held ; ; Clamps the envelope into a range 0..15 and then slows ; the decay. ; ; 2: Pre-built attack/decay curve ; ; Pitches up and then down in a set pattern. ;============================================================================
[8523]MScript_Op_SetSQEnvelopeMode:; [$8523] [8523]JSR MScripts_GetNextValue [8526]LDX a:MScript_CurrentChannel [8529]STA Music_SQEnvelope_Mode,X [852c]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScript_Op_SetSQPitchEffectDepth ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[852f]MScript_Op_SetSQPitchEffectDepth:; [$852f] [852f]JSR MScripts_GetNextValue [8532]LDX a:MScript_CurrentChannel [8535]STA Music_SQPitchDelta_Mask,X [8538]JMP MScripts_InvokeNext
;============================================================================ ; MScript Op $EE: Set the SQ2 pitch bias (detune). ; ; This operation applies a SQ2-only pitch adjustment by ; subtracting a small value from the low byte of the ; square wave timer period before writing to SQ2_LO. ; ; The value is compared against the computed timer low ; byte and clamped to avoid underflow. This produces a ; subtle upward pitch shift when non-zero. ; ; This is not related to note length or envelope timing. ; It is a pitch modification applied after note ; calculation, before writing to the APU. ; ; This may be used to provide a simple chorus/harmony ; effect. ; ; A value of 0 disables this effect. ;============================================================================
[853b]MScript_Op_SetSQ2Detune:; [$853b] [853b]JSR MScripts_GetNextValue [853e]STA a:Music_SQ2_TimerLowBias [8541]JMP MScripts_InvokeNext
;============================================================================ ; TODO: Document MScripts_GetNextValue ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ; ; XREFS: ; MScript_Op_BeginLoop ; MScript_Op_JumpSubroutine ; MScript_Op_NextLoopIfNCompleted ; MScript_Op_RepeatValue ; MScript_Op_SetChannelTranspose ; MScript_Op_SetControlBits ; MScript_Op_SetGlobalTranspose ; MScript_Op_SetSQ2Detune ; MScript_Op_SetSQEnvelopeMode ; MScript_Op_SetSQPitchEffectDepth ; MScript_Op_SetSQVol ; MScripts_InvokeNext ;============================================================================
[8544]MScripts_GetNextValue:; [$8544] [8544]LDA a:MScript_CurrentChannel [8547]ASL A [8548]TAX [8549]LDA (Music_CurrentScriptAddrs,X) [854b]INC Music_CurrentScriptAddrs,X [854d]BNE @_return [854f]INC Music_CurrentScriptAddrs+1,X [8551]@_return:; [$8551] [8551]RTS
;============================================================================ ; Base note lookup table for 12 semitones (C..B), used ; with octave normalization. ; ; XREFS: ; Music_SetNote ; SoundEffect_SetNote ;============================================================================
; ; XREFS: ; Music_SetNote ; SoundEffect_SetNote ;
[8552]AUDIO_NOTES:; [$8552] [8552].word $0000; [0]: Unused/padding [8554].word $06ae; [1]: C2 [8556].word $064e; [2]: C2#2 [8558].word $05f3; [3]: D2 [855a].word $059f; [4]: D2#2 [855c].word $054d; [5]: E2 [855e].word $0501; [6]: F2 [8560].word $04b9; [7]: F2#2 [8562].word $0475; [8]: G2 [8564].word $0435; [9]: G2#2 [8566].word $03f8; [10]: A2 [8568].word $03bf; [11]: A2#2 [856a].word $0389; [12]: B2
;============================================================================ ; Signed semitone offsets for pitched channels. ; ; Noise appears to be a sentinel. ; ; XREFS: ; Music_SetNote ;============================================================================
; ; XREFS: ; Music_SetNote ;
[856c]MUSIC_CHANNEL_NOTE_OFFSETS:; [$856c] [856c].byte $f4; [0]: SQ1 (one octave down) [856d].byte $f4; [1]: SQ2 (one octave down) [856e].byte $0c; [2]: Triangle (1 octave up)
; ; XREFS: ; MScripts_SetNoteLengthFromValue ;
[856f]MUSIC_CHANNEL_NOTE_OFFSETS_3_:; [$856f] [856f].byte $7f; [3]: Noise (sentinel?)
; ; XREFS: ; MScripts_SetNoteLengthFromValue ;
[8570]BYTE_PRG5__8570:; [$8570] [8570].byte $08; [$8570] byte
; ; XREFS: ; MScripts_SetNoteLengthFromValue ;
[8571]BYTE_PRG5__8571:; [$8571] [8571].byte $60; [$8571] byte
; ; XREFS: ; MScripts_SetNoteLengthFromValue ;
[8572]BYTE_PRG5__8572:; [$8572] [8572].byte $c0,$50,$40,$30,$b0,$28,$30,$24; [$8572] byte [857a].byte $d0,$1e,$50,$18,$a0; [$857a] byte
; ; XREFS: ; Music_PlayNoise ;
[857f]MUSIC_NOISE_VALUES:; [$857f] [857f].byte $14; [0]: [8580].byte $20; [1]: [8581].byte $00; [2]: [8582].byte $f0; [3]: [8583].byte $00; [0]: [8584].byte $00; [1]: [8585].byte $0f; [2]: [8586].byte $20; [3]: [8587].byte $00; [0]: [8588].byte $00; [1]: [8589].byte $0a; [2]: [858a].byte $10; [3]: [858b].byte $00; [0]: [858c].byte $00; [1]: [858d].byte $05; [2]: [858e].byte $00; [3]: [858f].byte $ff; [$858f] byte
;============================================================================ ; Table of sound effects to handler table indexes. ; ; XREFS: ; SoundEffects_HandleOnInterrupt ;============================================================================
; ; XREFS: ; SoundEffects_HandleOnInterrupt ;
[8590]SOUND_EFFECT_HANDLER_INDEXES:; [$8590] [8590].byte $00; [0]: Set up sound effects [8591].byte $2c; [1]: Message [8592].byte $60; [2]: Hit Enemy [8593].byte $5c; [3]: Enemy died [8594].byte $64; [4]: Player hit [8595].byte $70; [5]: Magic [8596].byte $38; [6]: Open door [8597].byte $40; [7]: Typing [8598].byte $4c; [8]: Item picked up [8599].byte $50; [9]: Coin touched [859a].byte $68; [10]: Magic hit by obstacle [859b].byte $30; [11]: Cursor moved [859c].byte $58; [12]: Shield hit by magic [859d].byte $34; [13]: Character inputted [859e].byte $28; [14]: Password character entered [859f].byte $3c; [15]: Pushing block [85a0].byte $54; [16]: Coin dropped [85a1].byte $48; [17]: ?? Unused [85a2].byte $44; [18]: Pakukame [85a3].byte $24; [19]: Fill HP or MP [85a4].byte $6c; [20]: Tilte magic spell [85a5].byte $1c; [21]: Step sound [85a6].byte $10; [22]: Player died [85a7].byte $14; [23]: Ladder dropped [85a8].byte $18; [24]: Show player menu [85a9].byte $20; [25]: Changed gold amount [85aa].byte $0c; [26]: Use special item 2 [85ab].byte $08; [27]: Bread touched [85ac].byte $04; [28]: Coin touched
;============================================================================ ; A jump table of sound effect handler functions. ; ; This table is in pairs of sound effect setup and on-tick ; handlers. The setup handler runs when loading a new sound ; effect, and the on-tick handler runs for any existing ; loaded sound effect. ; ; These may be separate functions, or two parts of ; essentially the same function. ; ; XREFS: ; SoundEffects_HandleOnInterrupt ;============================================================================
; ; XREFS: ; SoundEffects_HandleOnInterrupt ;
[85ad]SOUND_EFFECT_HANDLERS:; [$85ad] [85ad].word SoundEffects_Init-1; SoundEffects_Init [$PRG5::85ad] [85af].word SoundEffect_NoOp-1; SoundEffect_NoOp [$PRG5::85af] [85b1].word SoundEffect_CoinTouched_Setup-1; 0x04 [85b3].word SoundEffect_CoinTouched_OnTick-1; SoundEffect_CoinTouched_OnTick [$PRG5::85b3] [85b5].word SoundEffect_BreadTouched_Setup-1; 0x08 [85b7].word SoundEffect_BreadTouched_OnTick-1; SoundEffect_BreadTouched_OnTick [$PRG5::85b7] [85b9].word SoundEffect_Maybe_UseSpecialItem2_Setup-1; 0x0C [85bb].word SoundEffect_Maybe_UseSpecialItem2_OnTick-1; SoundEffect_Maybe_UseSpecialItem2_OnTick [$PRG5::85bb] [85bd].word SoundEffect_PlayerDied_Setup-1; 0x10 [85bf].word SoundEffect_PlayerDied_OnTick-1; SoundEffect_PlayerDied_OnTick [$PRG5::85bf] [85c1].word SoundEffect_LadderDropped_Setup-1; 0x14 [85c3].word SoundEffect_LadderDropped_OnTick-1; SoundEffect_LadderDropped_OnTick [$PRG5::85c3] [85c5].word SoundEffect_ShowPlayerMenu_Setup-1; 0x18 [85c7].word SoundEffect_ShowPlayerMenu_OnTick-1; SoundEffect_ShowPlayerMenu_OnTick [$PRG5::85c7] [85c9].word SoundEffect_Maybe_Step_Setup-1; 0x1C [85cb].word SoundEffect_Maybe_Step_OnTick-1; SoundEffect_Maybe_Step_OnTick [$PRG5::85cb] [85cd].word SoundEffect_GoldAmountChanged_Setup-1; 0x20 [85cf].word SoundEffects_DecrementCounter-1; SoundEffects_DecrementCounter [$PRG5::85cf] [85d1].word SoundEffect_FillHPOrMP_Setup-1; 0x24 [85d3].word SoundEffect_FillHPOrMP_OnTick-1; SoundEffect_FillHPOrMP_OnTick [$PRG5::85d3] [85d5].word SoundEffect_PasswordCharInput_Setup-1; 0x28 [85d7].word SoundEffects_DecrementCounter-1; SoundEffects_DecrementCounter [$PRG5::85d7] [85d9].word SoundEffect_Message_Setup-1; 0x2C [85db].word SoundEffect_Message_OnTick-1; SoundEffect_Message_OnTick [$PRG5::85db] [85dd].word SoundEffect_CursorMoved_Setup-1; 0x30 [85df].word SoundEffect_CursorMoved_OnTick-1; SoundEffect_CursorMoved_OnTick [$PRG5::85df] [85e1].word SoundEffect_CharacterInput_Setup-1; 0x34 [85e3].word SoundEffect_CharacterInput_OnTick-1; SoundEffect_CharacterInput_OnTick [$PRG5::85e3] [85e5].word SoundEffect_OpenDoor_Setup-1; 0x38 [85e7].word SoundEffect_OpenDoor_OnTick-1; SoundEffect_OpenDoor_OnTick [$PRG5::85e7] [85e9].word SoundEffect_PushBlock_Setup-1; 0x3C [85eb].word SoundEffect_PushBlock_OnTick-1; SoundEffect_PushBlock_OnTick [$PRG5::85eb] [85ed].word SoundEffect_Maybe_Typing_Setup-1; 0x40 [85ef].word SoundEffect_Maybe_Typing_OnTick-1; SoundEffect_Maybe_Typing_OnTick [$PRG5::85ef] [85f1].word SoundEffect_Pakukame_Setup-1; 0x44 [85f3].word SoundEffect_Pakukame_OnTick-1; SoundEffect_Pakukame_OnTick [$PRG5::85f3] [85f5].word SoundEffect_0x48_Setup-1; 0x48 [85f7].word SoundEffect_0x48_OnTick-1; SoundEffect_0x48_OnTick [$PRG5::85f7] [85f9].word SoundEffect_ItemPickedUp_Setup-1; 0x4C [85fb].word SoundEffect_ItemPickedUp_OnTick-1; SoundEffect_ItemPickedUp_OnTick [$PRG5::85fb] [85fd].word SoundEffect_CoinTouchedCommon_Setup-1; 0x50 [85ff].word SoundEffect_CoinTouchedCommon_OnTick-1; SoundEffect_CoinTouchedCommon_OnTick [$PRG5::85ff] [8601].word SoundEffect_CoinDropped_Setup-1; 0x54 [8603].word SoundEffect_CoinDropped_OnTick-1; SoundEffect_CoinDropped_OnTick [$PRG5::8603] [8605].word SoundEffect_ShieldHitByMagic_Setup-1; 0x58 [8607].word SoundEffect_ShieldHitByMagic_OnTick-1; SoundEffect_ShieldHitByMagic_OnTick [$PRG5::8607] [8609].word SoundEffect_EnemyDied_Setup-1; 0x5C [860b].word SoundEffect_EnemyDied_OnTick-1; SoundEffect_EnemyDied_OnTick [$PRG5::860b] [860d].word SoundEffect_HitEnemy_Setup-1; 0x60 [860f].word SoundEffect_HitEnemy_OnTick-1; SoundEffect_HitEnemy_OnTick [$PRG5::860f] [8611].word SoundEffect_HitPlayer_Setup-1; 0x64 [8613].word SoundEffect_HitPlayer_OnTick-1; SoundEffect_HitPlayer_OnTick [$PRG5::8613] [8615].word SoundEffect_MagicHitObstacle_Setup-1; 0x68 [8617].word SoundEffect_MagicHitObstacle_OnTick-1; SoundEffect_MagicHitObstacle_OnTick [$PRG5::8617] [8619].word SoundEffect_Tilte_Setup-1; 0x6C [861b].word SoundEffect_Tilte_OnTick-1; SoundEffect_Tilte_OnTick [$PRG5::861b] [861d].word SoundEffect_Magic_Setup-1; 0x70 [861f].word SoundEffect_Magic_OnTick-1; SoundEffect_Magic_OnTick [$PRG5::861f]
;============================================================================ ; TODO: Document SoundEffects_DecrementCounter ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8621]SoundEffects_DecrementCounter:; [$8621] [8621]DEC a:SoundEffect_State_Counter [8624]BNE Sound_ResetCurrentSound_Return
;============================================================================ ; TODO: Document Sound_ResetCurrentSound ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; SoundEffect_0x48_OnTick ; SoundEffect_BreadTouched_OnTick ; SoundEffect_CharacterInput_OnTick ; SoundEffect_CoinDropped_OnTick ; SoundEffect_CoinTouchedCommon_OnTick ; SoundEffect_CursorMoved_OnTick ; SoundEffect_EnemyDied_OnTick ; SoundEffect_FillHPOrMP_OnTick ; SoundEffect_HitEnemy_OnTick ; SoundEffect_HitPlayer_OnTick ; SoundEffect_ItemPickedUp_OnTick ; SoundEffect_LadderDropped_OnTick ; SoundEffect_MagicHitObstacle_OnTick ; SoundEffect_Magic_OnTick ; SoundEffect_Maybe_Step_OnTick ; SoundEffect_Maybe_Typing_OnTick ; SoundEffect_Maybe_UseSpecialItem2_OnTick ; SoundEffect_Message_OnTick ; SoundEffect_OpenDoor_OnTick ; SoundEffect_Pakukame_OnTick ; SoundEffect_PlayerDied_OnTick ; SoundEffect_PushBlock_OnTick ; SoundEffect_ShieldHitByMagic_OnTick ; SoundEffect_ShowPlayerMenu_OnTick ; SoundEffect_Tilte_OnTick ; SoundEffects_HandleOnInterrupt ;============================================================================
[8626]Sound_ResetCurrentSound:; [$8626] [8626]LDA #$00 [8628]STA a:SoundEffect_HandlerIndex [862b]STA a:SoundEffect_Unused_PriorityID
; ; XREFS: ; SoundEffects_DecrementCounter ;
[862e]Sound_ResetCurrentSound_Return:; [$862e] [862e]RTS
;============================================================================ ; TODO: Document SoundEffects_HandleOnInterrupt ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; thunk_SoundEffects_HandleOnInterrupt ;============================================================================
[862f]SoundEffects_HandleOnInterrupt:; [$862f]
; ; Loop through all channels, decrementing the sound effect ; tick count for each. ;
[862f]LDX #$03; X = 3 (channel loop counter). [8631]@_checkActiveEffectsLoop:; [$8631] [8631]LDA SoundEffect_TicksRemaining,X; Load the sound effect ticks remaining for this channel. [8634]BEQ @_prepareNextActiveEffectsLoopIter; If this channel is done, prepare for the next iteration. [8636]DEC SoundEffect_TicksRemaining,X; Reduce the ticks remaining by 1. [8639]@_prepareNextActiveEffectsLoopIter:; [$8639] [8639]DEX; X-- (loop counter). [863a]BPL @_checkActiveEffectsLoop; If >= 0, loop.
; ; Check if the current sound effect is playing or just set. ; ; Playing is indicated by bit 7 == 1. ;
[863c]LDA SoundEffect_Current; Load the ID of the sound effect that's set. [863e]BMI @_runOnTickHandler; If the sound effect is playing (bit 7 is set), jump to load the current handler.
; ; The sound effect is set but not currently playing. ; Mark it as playing. ;
[8640]TAX; X = A (sound effect ID). [8641]ORA #$80; Set the Playing state (bit 7). [8643]STA SoundEffect_Current; Update the sound effect. [8645]CPX #$1d; Is this sound ID in range? [8647]BCS @_runOnTickHandler; If so, load and run the on-tick handler.
; ; The sound effect ID is in range. Check if we have a ; computed sound effect handler for it. ;
[8649]LDA a:SoundEffect_HandlerIndex; Load the current sound effect handler index. [864c]BEQ @_newHandler; If 0 (init sound), we're ready to jump to load a new handler.
; ; There's an existing sound effect handler being used. ; Check if it matches the sound effect to play, and then ; either use it or load a new handler. ;
[864e]LDA SOUND_EFFECT_HANDLER_INDEXES,X; Load the sound effect handler index for this sound effect. [8651]CMP a:SoundEffect_HandlerIndex; Does it match the existing handler? [8654]BCC @_newHandler; If not, look for a new handler and reset for the sound. [8656]BNE @_runOnTickHandler; Else, it's a match, so just load the handler to run it.
; ; Reset the sound effect handler and state for a new sound ; effect. ;
[8658]@_newHandler:; [$8658] [8658]LDA SOUND_EFFECT_HANDLER_INDEXES,X; Load the sound effect handler index for this ID. [865b]STA a:SoundEffect_HandlerIndex; Store as the new index. [865e]TAX; X = A (index).
; ; Clear out the number of ticks remaining for the old sound ; effect. ;
[865f]LDA #$00 [8661]STA a:SoundEffect_TicksRemaining; SQ1 ticks remaining = 0 [8664]STA a:SoundEffect_TicksRemaining_1_; SQ2 ticks remaining = 0 [8667]STA a:SoundEffect_TicksRemaining_2_; TRI ticks remaining = 0 [866a]STA a:SoundEffect_TicksRemaining_3_; Noise ticks remaining = 0 [866d]BEQ @_checkAndRunHandler; Immediately jump to check and run the setup handler for the sound effect.
; ; Load the secondary, on-tick stage for the sound effect ; handler. ; ; Every sound effect handler has a setup stage and an ; on-tick stage. Pairs of each are in the sound effect ; handlers table. ;
[866f]@_runOnTickHandler:; [$866f] [866f]LDX a:SoundEffect_HandlerIndex; Load the index of the sound effect handler. [8672]INX; Advance to the next address for the on-tick handler. [8673]INX
; ; Check if the sound effect index is within bounds of the ; handlers table. ; ; Note that the last sound effect handler index is 0x70, but ; 0x72 would be the last on-tick handler. This is checking ; that this is < 0x74, with the idea being that 0x73 would ; never be set (unless there was a major programming flaw). ;
[8674]@_checkAndRunHandler:; [$8674] [8674]CPX #$74; Is this a valid sound effect within the handlers lookup table? [8676]BCS Sound_ResetCurrentSound; If not, reset the current sound effect. [8678]LDA SOUND_EFFECT_HANDLERS+1,X; Load the upper byte of the handler address. [867b]PHA; Push it to the stack. [867c]LDA SOUND_EFFECT_HANDLERS,X; Load the lower byte. [867f]PHA; Push it to the stack.
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_NoOp ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8680]SoundEffect_NoOp:; [$8680] [8680]RTS
;============================================================================ ; Initialize support for sound effects. ; ; This will clear out state, perform an audio reset, and ; then enable the SQ1, SQ2, TRI, and Noise channels. ; ; INPUTS: ; None. ; ; OUTPUTS: ; DMC_RAW: ; Set to 0. ; ; SND_CHN: ; Set to 0xF (SQ1/SQ2/TRI/Noise). ; ; SoundEffect_Unused_PriorityID: ; SoundEffect_TicksRemaining: ; SoundEffect_TicksRemaining+1: ; $0125: ; $0126: ; Set to 0. ; ; CALLS: ; Audio_Reset ; ; XREFS: ; SOUND_EFFECT_HANDLERS [$PRG5::85ad] ; thunk_SoundEffects_Init ;============================================================================
[8681]SoundEffects_Init:; [$8681] [8681]LDA #$00 [8683]STA a:DMC_RAW; Disable raw DMC.
; ; Clear the ticks remaining for all sound effect channels. ;
[8686]STA a:SoundEffect_TicksRemaining; Set SQ1 ticks remaining = 0. [8689]STA a:SoundEffect_TicksRemaining_1_; Set SQ2 ticks remaining = 0. [868c]STA a:SoundEffect_TicksRemaining_2_; Set TRI ticks remaining = 0. [868f]STA a:SoundEffect_TicksRemaining_3_; Set Noise ticks remaining = 0. [8692]STA a:SoundEffect_Unused_PriorityID; Set priority ID (unused) to 0.
; ; Perform an audio reset and then enable the SQ1/SQ2/TRI/Noise ; channels. ;
[8695]JSR Audio_Reset; Reset the audio. [8698]LDA #$0f [869a]STA a:SND_CHN; Enable channels. [869d]RTS
;============================================================================ ; TODO: Document SoundEffect_Message_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[869e]SoundEffect_Message_Setup:; [$869e] [869e]LDA #$06 [86a0]STA a:SoundEffect_TicksRemaining_3_; Set TRI ticks remaining to 6. [86a3]LDA #$00 [86a5]STA a:SoundEffect_State_Counter; Set state counter to 0.
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Message_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[86a8]SoundEffect_Message_OnTick:; [$86a8] [86a8]LDA #$1f [86aa]STA a:NOISE_VOL; Set Noise volume to 31.
; ; Load a value from the lookup table for NOISE_LO. ; ; This switches sounds every 2 ticks, producing a typing ; sound. ; ; BUG: ; And this is fascinating. The loud clack-clack typing ; sound, reminiscent of an old typewriter, appears to ; be a bug. ; ; SOUNDEFFECT_MESSAGE_NOISE_LO defines the ; typing sounds, and produces a much softer sound, one ; that feels more appropriate considering other NES ; games. ; ; That's not what's used, though. The AND #$02 instruction ; produces an offset of 0 or 2, with 2 causing an ; out-of-bounds read, pulling #$A9 out of the following ; function (an LDA instruction). This is much sharper than ; #$01, producing that sound. ; ; My guess is they originally had an AND #$01, and wanted ; to reduce the sound change from every tick to every ; other tick, but didn't update the table with a padding ; byte, so it overflowed. ; ; Maybe they were aiming for this as a hack at this ; point, or maybe they messed up but nobody really noticed ; because the sound ended up sounding so good and thus ; passed QA. In any case, the shipped behavior does not ; match the original intent of this code. ;
[86ad]LDA a:SoundEffect_State_Counter; Load the sound effect counter. [86b0]AND #$02; Keep bit 1 (on 2 ticks, off 2 ticks). [86b2]TAX; X = result. [86b3]LDA SOUNDEFFECT_MESSAGE_NOISE_LO,X; Load the NOISE_LO value for this state. [86b6]STA a:NOISE_LO [86b9]LDA #$00 [86bb]STA a:NOISE_HI [86be]INC a:SoundEffect_State_Counter [86c1]LDA a:SoundEffect_State_Counter [86c4]CMP #$04 [86c6]BCC @_return [86c8]LDA #$10 [86ca]STA a:NOISE_VOL [86cd]JMP Sound_ResetCurrentSound [86d0]@_return:; [$86d0] [86d0]RTS
; ; XREFS: ; SoundEffect_Message_OnTick ;
[86d1]SOUNDEFFECT_MESSAGE_NOISE_LO:; [$86d1] [86d1].byte $10; [0]: [86d2].byte $01; [1]:
;============================================================================ ; TODO: Document SoundEffect_HitEnemy_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[86d3]SoundEffect_HitEnemy_Setup:; [$86d3] [86d3]LDA #$14 [86d5]STA a:SoundEffect_TicksRemaining_1_ [86d8]STA a:SoundEffect_TicksRemaining_3_ [86db]LDA #$00 [86dd]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_HitEnemy_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[86e0]SoundEffect_HitEnemy_OnTick:; [$86e0] [86e0]LDX a:SoundEffect_State_Counter [86e3]LDA SOUNDEFFECT_HIT_ENEMY_NOTES,X [86e6]CMP #$ff [86e8]BNE @_play [86ea]LDA #$10 [86ec]STA a:SQ2_VOL [86ef]STA a:NOISE_VOL [86f2]JMP Sound_ResetCurrentSound [86f5]@_play:; [$86f5] [86f5]JSR SoundEffect_SetNote [86f8]LDA #$5f [86fa]STA a:SQ2_VOL [86fd]STA a:NOISE_VOL [8700]LDA a:SoundEffect_State_Counter [8703]EOR #$0f [8705]ORA #$98 [8707]STA a:SQ2_SWEEP [870a]LDA a:SoundEffect_Note_Low [870d]STA a:SQ2_LO [8710]AND #$07 [8712]STA a:NOISE_LO [8715]LDA #$00 [8717]STA a:NOISE_HI [871a]LDA a:SoundEffect_Note_High [871d]STA a:SQ2_HI [8720]INC a:SoundEffect_State_Counter [8723]RTS
; ; XREFS: ; SoundEffect_HitEnemy_OnTick ;
[8724]SOUNDEFFECT_HIT_ENEMY_NOTES:; [$8724] [8724].byte $62; [0]: [8725].byte $4e; [1]: [8726].byte $3c; [2]: [8727].byte $50; [3]: [8728].byte $48; [4]: [8729].byte $65; [5]: [872a].byte $51; [6]: [872b].byte $48; [7]: [872c].byte $56; [8]: [872d].byte $52; [9]: [872e].byte $5f; [10]: [872f].byte $58; [11]: [8730].byte $65; [12]: [8731].byte $4d; [13]: [8732].byte $55; [14]: [8733].byte $ff; [15]:
;============================================================================ ; TODO: Document SoundEffect_EnemyDied_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8734]SoundEffect_EnemyDied_Setup:; [$8734] [8734]LDA #$16 [8736]STA a:SoundEffect_TicksRemaining_3_ [8739]LDA #$14 [873b]STA a:SoundEffect_State_Counter [873e]LDA #$00 [8740]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_EnemyDied_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8743]SoundEffect_EnemyDied_OnTick:; [$8743] [8743]DEC a:SoundEffect_State_Counter [8746]BNE @_play [8748]LDA #$10 [874a]STA a:NOISE_VOL [874d]JMP Sound_ResetCurrentSound [8750]@_play:; [$8750] [8750]LDX a:SoundEffect_State_0128 [8753]LDA #$1f [8755]STA a:NOISE_VOL [8758]LDA SOUNDEFFECT_ENEMY_DIED_NOISE_LO,X [875b]STA a:NOISE_LO [875e]LDA #$00 [8760]STA a:NOISE_HI [8763]INC a:SoundEffect_State_0128 [8766]RTS
; ; XREFS: ; SoundEffect_EnemyDied_OnTick ;
[8767]SOUNDEFFECT_ENEMY_DIED_NOISE_LO:; [$8767] [8767].byte $0f; [0]: [8768].byte $0c; [1]: [8769].byte $0e; [2]: [876a].byte $0b; [3]: [876b].byte $0d; [4]: [876c].byte $09; [5]: [876d].byte $03; [6]: [876e].byte $02; [7]: [876f].byte $01; [8]: [8770].byte $00; [9]:
;============================================================================ ; TODO: Document SoundEffect_HitPlayer_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8771]SoundEffect_HitPlayer_Setup:; [$8771] [8771]LDA #$0f [8773]STA a:SoundEffect_TicksRemaining_1_ [8776]LDA #$00 [8778]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_HitPlayer_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[877b]SoundEffect_HitPlayer_OnTick:; [$877b] [877b]LDX a:SoundEffect_State_Counter [877e]LDA SOUNDEFFECT_HITPLAYER_NOTES,X [8781]CMP #$ff [8783]BNE @_play [8785]LDA #$10 [8787]STA a:SQ2_VOL [878a]JMP Sound_ResetCurrentSound [878d]@_play:; [$878d] [878d]JSR SoundEffect_SetNote [8790]LDA #$df [8792]STA a:SQ2_VOL [8795]LDA #$00 [8797]STA a:SQ2_SWEEP [879a]LDA a:SoundEffect_Note_Low [879d]STA a:SQ2_LO [87a0]LDA a:SoundEffect_Note_High [87a3]STA a:SQ2_HI [87a6]INC a:SoundEffect_State_Counter [87a9]RTS
; ; XREFS: ; SoundEffect_HitPlayer_OnTick ;
[87aa]SOUNDEFFECT_HITPLAYER_NOTES:; [$87aa] [87aa].byte $29; [0]: [87ab].byte $24; [1]: [87ac].byte $28; [2]: [87ad].byte $22; [3]: [87ae].byte $1f; [4]: [87af].byte $29; [5]: [87b0].byte $2b; [6]: [87b1].byte $2c; [7]: [87b2].byte $2d; [8]: [87b3].byte $2a; [9]: [87b4].byte $ff; [10]:
;============================================================================ ; TODO: Document SoundEffect_Magic_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[87b5]SoundEffect_Magic_Setup:; [$87b5] [87b5]LDA #$32 [87b7]STA a:SoundEffect_TicksRemaining_1_ [87ba]LDA #$00 [87bc]STA a:SoundEffect_State_Counter [87bf]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Magic_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[87c2]SoundEffect_Magic_OnTick:; [$87c2] [87c2]LDX a:SoundEffect_State_0128 [87c5]LDA SOUNDEFFECT_MAGIC_SQ2_VOL,X [87c8]BNE @_play [87ca]LDA #$10 [87cc]STA a:SQ2_VOL [87cf]JMP Sound_ResetCurrentSound [87d2]@_play:; [$87d2] [87d2]ORA #$50 [87d4]STA a:SQ2_VOL [87d7]LDA #$00 [87d9]STA a:SQ2_SWEEP [87dc]LDA a:SoundEffect_State_Counter [87df]AND #$03 [87e1]TAX [87e2]LDA SOUNDEFFECT_MAGIC_SQ2_LO,X [87e5]STA a:SQ2_LO [87e8]LDA #$00 [87ea]STA a:SQ2_HI [87ed]INC a:SoundEffect_State_Counter [87f0]LDA a:SoundEffect_State_Counter [87f3]CMP #$08 [87f5]BNE @_return [87f7]LDA #$00 [87f9]STA a:SoundEffect_State_Counter [87fc]INC a:SoundEffect_State_0128 [87ff]@_return:; [$87ff] [87ff]RTS
; ; XREFS: ; SoundEffect_Magic_OnTick ;
[8800]SOUNDEFFECT_MAGIC_SQ2_VOL:; [$8800] [8800].byte $0f,$0b,$07,$04,$01,$00; [$8800] byte
; ; XREFS: ; SoundEffect_Magic_OnTick ;
[8806]SOUNDEFFECT_MAGIC_SQ2_LO:; [$8806] [8806].byte $b0,$a0,$a8,$98; [$8806] byte
;============================================================================ ; TODO: Document SoundEffect_OpenDoor_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[880a]SoundEffect_OpenDoor_Setup:; [$880a] [880a]LDA #$3c [880c]STA a:SoundEffect_TicksRemaining_1_ [880f]STA a:SoundEffect_TicksRemaining_3_ [8812]LDA #$37 [8814]STA a:SoundEffect_State_0129 [8817]LDA #$00 [8819]STA a:SoundEffect_State_Counter [881c]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_OpenDoor_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[881f]SoundEffect_OpenDoor_OnTick:; [$881f] [881f]DEC a:SoundEffect_State_0129 [8822]BNE @_play [8824]LDA #$10 [8826]STA a:SQ2_VOL [8829]STA a:NOISE_VOL [882c]JMP Sound_ResetCurrentSound [882f]@_play:; [$882f] [882f]LDA a:SoundEffect_State_Counter [8832]LSR A [8833]LSR A [8834]EOR #$ff [8836]AND #$0f [8838]ORA #$50 [883a]STA a:NOISE_VOL [883d]STA a:SQ2_VOL [8840]LDA #$00 [8842]STA a:SQ2_SWEEP [8845]LDA a:SoundEffect_State_Counter [8848]AND #$07 [884a]TAY [884b]LDA #$60 [884d]SEC [884e]SBC SOUNDEFFECT_OPEN_DOOR_SQ2_NOISE_LO,Y [8851]STA a:SQ2_LO [8854]AND #$0f [8856]STA a:NOISE_LO [8859]LDA #$00 [885b]STA a:SQ2_HI [885e]STA a:NOISE_HI [8861]INC a:SoundEffect_State_Counter [8864]RTS
; ; XREFS: ; SoundEffect_OpenDoor_OnTick ;
[8865]SOUNDEFFECT_OPEN_DOOR_SQ2_NOISE_LO:; [$8865] [8865].byte $00,$03,$0a,$15,$25,$15,$0a,$03; [$8865] byte
;============================================================================ ; TODO: Document SoundEffect_Maybe_Typing_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[886d]SoundEffect_Maybe_Typing_Setup:; [$886d] [886d]LDA #$28 [886f]STA a:SoundEffect_TicksRemaining_1_ [8872]LDA #$00 [8874]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Maybe_Typing_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8877]SoundEffect_Maybe_Typing_OnTick:; [$8877] [8877]LDA a:SoundEffect_TicksRemaining_1_ [887a]AND #$01 [887c]BNE @_return [887e]LDX a:SoundEffect_State_Counter [8881]LDA SOUNDEFFECT_MAYBE_TYPING_NOTES,X [8884]CMP #$ff [8886]BNE @_play [8888]LDA #$10 [888a]STA a:SQ2_VOL [888d]JMP Sound_ResetCurrentSound [8890]@_play:; [$8890] [8890]JSR SoundEffect_SetNote [8893]INC a:SoundEffect_State_Counter [8896]LDA a:SoundEffect_State_Counter [8899]EOR #$ff [889b]AND #$0f [889d]ORA #$d4 [889f]STA a:SQ2_VOL [88a2]LDA #$91 [88a4]STA a:SQ2_SWEEP [88a7]LDA a:SoundEffect_Note_Low [88aa]STA a:SQ2_LO [88ad]LDA a:SoundEffect_Note_High [88b0]STA a:SQ2_HI [88b3]@_return:; [$88b3] [88b3]RTS
; ; XREFS: ; SoundEffect_Maybe_Typing_OnTick ;
[88b4]SOUNDEFFECT_MAYBE_TYPING_NOTES:; [$88b4] [88b4].byte $2b,$2d,$2f,$24,$38,$2a,$37,$39; [$88b4] byte [88bc].byte $3b,$24,$38,$42,$2b,$2d,$2f,$18; [$88bc] byte [88c4].byte $ff; [$88c4] byte
;============================================================================ ; TODO: Document SoundEffect_ItemPickedUp_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[88c5]SoundEffect_ItemPickedUp_Setup:; [$88c5] [88c5]LDA #$3c [88c7]STA a:SoundEffect_TicksRemaining_1_ [88ca]LDA #$00 [88cc]STA a:SoundEffect_State_Counter [88cf]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_ItemPickedUp_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[88d2]SoundEffect_ItemPickedUp_OnTick:; [$88d2] [88d2]LDX a:SoundEffect_State_Counter [88d5]LDA SOUNDEFFECT_ITEM_PICKED_UP_NOTES,X [88d8]CMP #$ff [88da]BNE @_playNote [88dc]INC a:SoundEffect_State_0128 [88df]LDA #$00 [88e1]STA a:SoundEffect_State_Counter [88e4]RTS [88e5]@_playNote:; [$88e5] [88e5]JSR SoundEffect_SetNote [88e8]LDX a:SoundEffect_State_0128 [88eb]LDA SOUNDEFFECT_ITEM_PICKED_UP_SQ2_VOLS,X [88ee]BNE @_playSQ2 [88f0]LDA #$10 [88f2]STA a:SQ2_VOL [88f5]JMP Sound_ResetCurrentSound [88f8]@_playSQ2:; [$88f8] [88f8]ORA #$90 [88fa]STA a:SQ2_VOL [88fd]LDA #$00 [88ff]STA a:SQ2_SWEEP [8902]LDA a:SoundEffect_Note_Low [8905]STA a:SQ2_LO [8908]LDA a:SoundEffect_Note_High [890b]STA a:SQ2_HI [890e]INC a:SoundEffect_State_Counter [8911]RTS
; ; XREFS: ; SoundEffect_ItemPickedUp_OnTick ;
[8912]SOUNDEFFECT_ITEM_PICKED_UP_SQ2_VOLS:; [$8912] [8912].byte $0f,$0c,$09,$05,$02,$00; [$8912] byte
; ; XREFS: ; SoundEffect_ItemPickedUp_OnTick ;
[8918]SOUNDEFFECT_ITEM_PICKED_UP_NOTES:; [$8918] [8918].byte $3f,$43,$4a,$55,$5b,$60,$ff; [$8918] byte
;============================================================================ ; TODO: Document SoundEffect_CoinTouchedCommon_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ; ; XREFS: ; SoundEffect_CoinTouched_Setup ;============================================================================
[891f]SoundEffect_CoinTouchedCommon_Setup:; [$891f] [891f]LDA #$1e [8921]STA a:SoundEffect_TicksRemaining_1_ [8924]LDA #$50 [8926]STA a:SoundEffect_State_Counter [8929]LDA #$00 [892b]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_CoinTouchedCommon_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ; ; XREFS: ; SoundEffect_CoinTouched_OnTick ;============================================================================
[892e]SoundEffect_CoinTouchedCommon_OnTick:; [$892e] [892e]LDX a:SoundEffect_State_0128 [8931]LDA SOUNDEFFECT_COIN_TOUCHED_SQ2_VOL,X [8934]BNE @_play [8936]LDA #$10 [8938]STA a:SQ2_VOL [893b]JMP Sound_ResetCurrentSound [893e]@_play:; [$893e] [893e]ORA #$d0 [8940]STA a:SQ2_VOL [8943]LDA #$00 [8945]STA a:SQ2_SWEEP [8948]LDA a:SoundEffect_State_Counter [894b]STA a:SQ2_LO [894e]CLC [894f]ADC #$04 [8951]STA a:SQ2_LO [8954]LDA #$00 [8956]STA a:SQ2_HI [8959]LDA a:SoundEffect_State_Counter [895c]SEC [895d]SBC #$10 [895f]STA a:SoundEffect_State_Counter [8962]BNE @_return [8964]INC a:SoundEffect_State_0128 [8967]LDA #$50 [8969]STA a:SoundEffect_State_Counter [896c]@_return:; [$896c] [896c]RTS
; ; XREFS: ; SoundEffect_CoinTouchedCommon_OnTick ;
[896d]SOUNDEFFECT_COIN_TOUCHED_SQ2_VOL:; [$896d] [896d].byte $0f,$0c,$09,$06,$03,$00; [$896d] byte
;============================================================================ ; TODO: Document SoundEffect_MagicHitObstacle_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8973]SoundEffect_MagicHitObstacle_Setup:; [$8973] [8973]LDA #$1e [8975]STA a:SoundEffect_TicksRemaining_3_ [8978]LDA #$20 [897a]STA a:SoundEffect_State_Counter [897d]LDA #$00 [897f]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_MagicHitObstacle_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8982]SoundEffect_MagicHitObstacle_OnTick:; [$8982] [8982]DEC a:SoundEffect_State_Counter [8985]BNE @_play [8987]LDA #$10 [8989]STA a:NOISE_VOL [898c]JMP Sound_ResetCurrentSound [898f]@_play:; [$898f] [898f]LDA a:SoundEffect_State_Counter [8992]LSR A [8993]AND #$0f [8995]ORA #$10 [8997]STA a:NOISE_VOL [899a]LDA a:SoundEffect_State_Counter [899d]AND #$0f [899f]STA a:NOISE_LO [89a2]LDA #$00 [89a4]STA a:NOISE_HI [89a7]RTS
;============================================================================ ; TODO: Document SoundEffect_CursorMoved_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[89a8]SoundEffect_CursorMoved_Setup:; [$89a8] [89a8]LDA #$16 [89aa]STA a:SoundEffect_TicksRemaining_1_ [89ad]LDA #$0f [89af]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_CursorMoved_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[89b2]SoundEffect_CursorMoved_OnTick:; [$89b2] [89b2]LDA a:SoundEffect_State_Counter [89b5]BNE @_play [89b7]LDA #$10 [89b9]STA a:SQ2_VOL [89bc]JMP Sound_ResetCurrentSound [89bf]@_play:; [$89bf] [89bf]LDA a:SoundEffect_State_Counter [89c2]AND #$0f [89c4]ORA #$50 [89c6]STA a:SQ2_VOL [89c9]LDA #$00 [89cb]STA a:SQ2_SWEEP [89ce]LDA a:SoundEffect_State_Counter [89d1]AND #$07 [89d3]TAY [89d4]LDA a:SoundEffect_State_Counter [89d7]AND #$02 [89d9]STA a:SoundEffect_State_0128 [89dc]LDA a:SoundEffect_State_Counter [89df]AND #$01 [89e1]CLC [89e2]ADC a:SoundEffect_State_0128 [89e5]TAX [89e6]LDA SOUNDEFFECT_CURSOR_MOVED_SQ2_LO,X [89e9]SEC [89ea]SBC SOUNDEFFECT_CURSORMOVED_SQ2_LO_DELTA,Y [89ed]STA a:SQ2_LO [89f0]LDA #$00 [89f2]STA a:SQ2_HI [89f5]DEC a:SoundEffect_State_Counter [89f8]RTS [89f9]SOUNDEFFECT_CURSOR_MOVED_SQ2_LO:; [$89f9] [89f9].byte $51,$34,$b8; [$89f9] byte
; ; XREFS: ; SoundEffect_CursorMoved_OnTick ;
[89fc]BYTE_PRG5__89fc:; [$89fc] [89fc].byte $93; [$89fc] byte [89fd]SOUNDEFFECT_CURSORMOVED_SQ2_LO_DELTA:; [$89fd] [89fd].byte $00,$01,$03,$06,$0a,$06,$03; [$89fd] byte
; ; XREFS: ; SoundEffect_CursorMoved_OnTick ;
[8a04]BYTE_PRG5__8a04:; [$8a04] [8a04].byte $01; [$8a04] byte
;============================================================================ ; TODO: Document SoundEffect_ShieldHitByMagic_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a05]SoundEffect_ShieldHitByMagic_Setup:; [$8a05] [8a05]LDA #$14 [8a07]STA a:SoundEffect_TicksRemaining_1_ [8a0a]LDA #$10 [8a0c]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_ShieldHitByMagic_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a0f]SoundEffect_ShieldHitByMagic_OnTick:; [$8a0f] [8a0f]DEC a:SoundEffect_State_Counter [8a12]BNE @_play [8a14]LDA #$10 [8a16]STA a:SQ2_VOL [8a19]JMP Sound_ResetCurrentSound [8a1c]@_play:; [$8a1c] [8a1c]LDA a:SoundEffect_State_Counter [8a1f]ORA #$90 [8a21]STA a:SQ2_VOL [8a24]LDA #$00 [8a26]STA a:SQ2_SWEEP [8a29]LDA a:SoundEffect_State_Counter [8a2c]AND #$01 [8a2e]TAX [8a2f]LDA SOUNDEFFECT_SHIELD_HIT_BY_MAGIC_SQ2_LO,X [8a32]STA a:SQ2_LO [8a35]LDA #$00 [8a37]STA a:SQ2_HI [8a3a]RTS [8a3b]SOUNDEFFECT_SHIELD_HIT_BY_MAGIC_SQ2_LO:; [$8a3b] [8a3b].byte $30; [0]:
; ; XREFS: ; SoundEffect_ShieldHitByMagic_OnTick ;
[8a3c]SOUNDEFFECT_SHIELD_HIT_BY_MAGIC_SQ2_LO_1_:; [$8a3c] [8a3c].byte $1a; [1]:
;============================================================================ ; TODO: Document SoundEffect_CharacterInput_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a3d]SoundEffect_CharacterInput_Setup:; [$8a3d] [8a3d]LDA #$1e [8a3f]STA a:SoundEffect_TicksRemaining_1_ [8a42]LDA #$00 [8a44]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_CharacterInput_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a47]SoundEffect_CharacterInput_OnTick:; [$8a47] [8a47]INC a:SoundEffect_State_Counter [8a4a]LDA a:SoundEffect_State_Counter [8a4d]LSR A [8a4e]LSR A [8a4f]TAX [8a50]LDA SOUNDEFFECT_CHAR_INPUT_NOTES,X [8a53]CMP #$ff [8a55]BNE @_play [8a57]LDA #$10 [8a59]STA a:SQ2_VOL [8a5c]JMP Sound_ResetCurrentSound [8a5f]@_play:; [$8a5f] [8a5f]JSR SoundEffect_SetNote [8a62]LDA #$bf [8a64]STA a:SQ2_VOL [8a67]LDA #$00 [8a69]STA a:SQ2_SWEEP [8a6c]LDA a:SoundEffect_Note_Low [8a6f]STA a:SQ2_LO [8a72]LDA a:SoundEffect_Note_High [8a75]STA a:SQ2_HI [8a78]RTS
; ; XREFS: ; SoundEffect_CharacterInput_OnTick ;
[8a79]SOUNDEFFECT_CHAR_INPUT_NOTES:; [$8a79] [8a79].byte $37; [0]: [8a7a].byte $39; [1]: [8a7b].byte $32; [2]: [8a7c].byte $34; [3]: [8a7d].byte $ff; [4]:
;============================================================================ ; TODO: Document SoundEffect_PasswordCharInput_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a7e]SoundEffect_PasswordCharInput_Setup:; [$8a7e] [8a7e]LDA #$0a [8a80]STA a:SoundEffect_TicksRemaining_1_ [8a83]LDA #$02 [8a85]STA a:SoundEffect_State_Counter [8a88]LDA #$81 [8a8a]STA a:SQ2_VOL [8a8d]LDA #$00 [8a8f]STA a:SQ2_SWEEP [8a92]LDA #$8e [8a94]STA a:SQ2_LO [8a97]LDA #$10 [8a99]STA a:SQ2_HI [8a9c]RTS
;============================================================================ ; TODO: Document SoundEffect_PushBlock_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8a9d]SoundEffect_PushBlock_Setup:; [$8a9d] [8a9d]LDA #$20 [8a9f]STA a:SoundEffect_TicksRemaining_3_ [8aa2]LDA #$1e [8aa4]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_PushBlock_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8aa7]SoundEffect_PushBlock_OnTick:; [$8aa7] [8aa7]LDA a:SoundEffect_State_Counter [8aaa]BNE @_play [8aac]LDA #$10 [8aae]STA a:NOISE_VOL [8ab1]JMP Sound_ResetCurrentSound [8ab4]@_play:; [$8ab4] [8ab4]LDA #$1f [8ab6]STA a:NOISE_VOL [8ab9]LDA a:SoundEffect_State_Counter [8abc]AND #$01 [8abe]TAX [8abf]LDA SOUNDEFFECT_PUSH_BLOCK_NOISE_LO,X [8ac2]STA a:NOISE_LO [8ac5]LDA #$00 [8ac7]STA a:NOISE_HI [8aca]DEC a:SoundEffect_State_Counter [8acd]RTS
; ; XREFS: ; SoundEffect_PushBlock_OnTick ;
[8ace]SOUNDEFFECT_PUSH_BLOCK_NOISE_LO:; [$8ace] [8ace].byte $0f,$0b; [$8ace] byte
;============================================================================ ; TODO: Document SoundEffect_CoinDropped_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8ad0]SoundEffect_CoinDropped_Setup:; [$8ad0] [8ad0]LDA #$32 [8ad2]STA a:SoundEffect_TicksRemaining_1_ [8ad5]LDA #$08 [8ad7]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_CoinDropped_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8ada]SoundEffect_CoinDropped_OnTick:; [$8ada] [8ada]LDA #$86 [8adc]STA a:SQ2_VOL [8adf]LDA #$00 [8ae1]STA a:SQ2_SWEEP [8ae4]LDA a:SoundEffect_State_Counter [8ae7]CMP #$05 [8ae9]BNE @_checkUpdateCounter [8aeb]LDA #$35 [8aed]STA a:SQ2_LO [8af0]LDA #$20 [8af2]STA a:SQ2_HI [8af5]@_checkUpdateCounter:; [$8af5] [8af5]DEC a:SoundEffect_State_Counter [8af8]BNE @_return [8afa]LDA #$20 [8afc]STA a:SQ2_LO [8aff]LDA #$30 [8b01]STA a:SQ2_HI [8b04]JMP Sound_ResetCurrentSound [8b07]@_return:; [$8b07] [8b07]RTS
;============================================================================ ; TODO: Document SoundEffect_0x48_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8b08]SoundEffect_0x48_Setup:; [$8b08] [8b08]LDA #$23 [8b0a]STA a:SoundEffect_TicksRemaining_1_ [8b0d]STA a:SoundEffect_TicksRemaining_3_ [8b10]LDA #$16 [8b12]STA a:SoundEffect_State_0128 [8b15]LDA #$00 [8b17]STA a:SoundEffect_State_Counter [8b1a]LDA #$1e [8b1c]STA a:SoundEffect_State_0129
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_0x48_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8b1f]SoundEffect_0x48_OnTick:; [$8b1f] [8b1f]DEC a:SoundEffect_State_0129 [8b22]BNE @_play [8b24]LDA #$10 [8b26]STA a:SQ2_VOL [8b29]STA a:NOISE_VOL [8b2c]JMP Sound_ResetCurrentSound [8b2f]@_play:; [$8b2f] [8b2f]LDA a:SoundEffect_TicksRemaining_1_ [8b32]AND #$01 [8b34]BNE @_return [8b36]LDA #$df [8b38]STA a:SQ2_VOL [8b3b]LDA #$16 [8b3d]STA a:NOISE_VOL [8b40]LDA #$a3 [8b42]STA a:SQ2_SWEEP [8b45]LDA a:SoundEffect_State_Counter [8b48]STA a:SQ2_LO [8b4b]CLC [8b4c]ADC #$10 [8b4e]STA a:SoundEffect_State_Counter [8b51]DEC a:SoundEffect_State_0128 [8b54]LDA a:SoundEffect_State_0128 [8b57]AND #$0f [8b59]STA a:NOISE_LO [8b5c]LDA #$12 [8b5e]STA a:SQ2_HI [8b61]STA a:NOISE_HI [8b64]@_return:; [$8b64] [8b64]RTS
;============================================================================ ; TODO: Document SoundEffect_Pakukame_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8b65]SoundEffect_Pakukame_Setup:; [$8b65] [8b65]LDA #$46 [8b67]STA a:SoundEffect_TicksRemaining_1_ [8b6a]LDA #$00 [8b6c]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Pakukame_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8b6f]SoundEffect_Pakukame_OnTick:; [$8b6f] [8b6f]LDA a:SoundEffect_TicksRemaining_1_ [8b72]BNE @_play [8b74]LDA #$10 [8b76]STA a:SQ2_VOL [8b79]JMP Sound_ResetCurrentSound [8b7c]@_play:; [$8b7c] [8b7c]LDA a:SoundEffect_State_Counter [8b7f]AND #$3c [8b81]LSR A [8b82]LSR A [8b83]AND #$0f [8b85]ORA #$f0 [8b87]STA a:SQ2_VOL [8b8a]LDA #$00 [8b8c]STA a:SQ2_SWEEP [8b8f]LDA #$01 [8b91]STA a:SQ2_HI [8b94]LDA a:SoundEffect_State_Counter [8b97]AND #$07 [8b99]TAX [8b9a]LDA a:SoundEffect_State_Counter [8b9d]CLC [8b9e]ADC #$32 [8ba0]SEC [8ba1]SBC SOUNDEFFECT_PAKUKAME_SQ2_LO,X [8ba4]STA a:SQ2_LO [8ba7]INC a:SoundEffect_State_Counter [8baa]RTS
; ; XREFS: ; SoundEffect_Pakukame_OnTick ;
[8bab]SOUNDEFFECT_PAKUKAME_SQ2_LO:; [$8bab] [8bab].byte $00,$08,$14,$20,$2d,$20,$14,$08; [$8bab] byte
;============================================================================ ; TODO: Document SoundEffect_FillHPOrMP_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8bb3]SoundEffect_FillHPOrMP_Setup:; [$8bb3] [8bb3]LDA #$23 [8bb5]STA a:SoundEffect_TicksRemaining_1_ [8bb8]LDA #$00 [8bba]STA a:SoundEffect_State_Counter [8bbd]LDA #$19 [8bbf]STA a:SoundEffect_State_0129 [8bc2]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_FillHPOrMP_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8bc5]SoundEffect_FillHPOrMP_OnTick:; [$8bc5] [8bc5]DEC a:SoundEffect_State_0128 [8bc8]BNE @_play [8bca]LDA #$10 [8bcc]STA a:SQ2_VOL [8bcf]JMP Sound_ResetCurrentSound [8bd2]@_play:; [$8bd2] [8bd2]LDA a:SoundEffect_State_Counter [8bd5]AND #$03 [8bd7]TAY [8bd8]LDA SOUNDEFFECT_FILL_HP_OR_MP_SQ2_VOL,Y [8bdb]STA a:SQ2_VOL [8bde]LDA #$aa [8be0]STA a:SQ2_SWEEP [8be3]LDA a:SoundEffect_State_Counter [8be6]AND #$01 [8be8]TAX [8be9]LDA SOUNDEFFECT_FILL_HP_OR_MP_SQ2_LO,X [8bec]ORA a:SoundEffect_State_0129 [8bef]SBC a:SoundEffect_State_Counter [8bf2]STA a:SoundEffect_State_0129 [8bf5]STA a:SQ2_LO [8bf8]LDA #$00 [8bfa]STA a:SQ2_HI [8bfd]INC a:SoundEffect_State_Counter [8c00]RTS
; ; XREFS: ; SoundEffect_FillHPOrMP_OnTick ;
[8c01]SOUNDEFFECT_FILL_HP_OR_MP_SQ2_VOL:; [$8c01] [8c01].byte $1f,$5f,$9f,$df; [$8c01] byte
; ; XREFS: ; SoundEffect_FillHPOrMP_OnTick ;
[8c05]SOUNDEFFECT_FILL_HP_OR_MP_SQ2_LO:; [$8c05] [8c05].byte $60,$30; [$8c05] byte
;============================================================================ ; TODO: Document SoundEffect_Tilte_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8c07]SoundEffect_Tilte_Setup:; [$8c07] [8c07]LDA #$1e [8c09]STA a:SoundEffect_TicksRemaining_1_ [8c0c]STA a:SoundEffect_TicksRemaining_3_ [8c0f]LDA #$0f [8c11]STA a:SoundEffect_State_0129 [8c14]LDA #$01 [8c16]STA a:SoundEffect_State_Counter [8c19]LDA #$07 [8c1b]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Tilte_OnTick ; ; INPUTS: ; A ; ; OUTPUTS: ; A ;============================================================================
[8c1e]SoundEffect_Tilte_OnTick:; [$8c1e] [8c1e]DEC a:SoundEffect_State_Counter [8c21]BNE @_return [8c23]DEC a:SoundEffect_State_0128 [8c26]LDA a:SoundEffect_State_0128 [8c29]STA a:SoundEffect_State_Counter [8c2c]BNE @_play [8c2e]LDA #$10 [8c30]STA a:SQ2_VOL [8c33]STA a:NOISE_VOL [8c36]JMP Sound_ResetCurrentSound [8c39]@_play:; [$8c39] [8c39]LDA #$48 [8c3b]STA a:SQ2_VOL [8c3e]LDA #$00 [8c40]STA a:SQ2_SWEEP [8c43]LDA a:SoundEffect_State_0129 [8c46]ORA #$10 [8c48]STA a:NOISE_VOL [8c4b]LDA a:SoundEffect_State_0129 [8c4e]AND #$07 [8c50]STA a:NOISE_LO [8c53]LDA #$00 [8c55]STA a:NOISE_HI [8c58]LDA a:SoundEffect_State_0129 [8c5b]ORA #$18 [8c5d]STA a:SQ2_LO [8c60]LDA #$00 [8c62]STA a:SQ2_HI [8c65]DEC a:SoundEffect_State_0129 [8c68]@_return:; [$8c68] [8c68]RTS
;============================================================================ ; TODO: Document SoundEffect_Maybe_Step_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8c69]SoundEffect_Maybe_Step_Setup:; [$8c69] [8c69]LDA #$05 [8c6b]STA a:SoundEffect_TicksRemaining_3_ [8c6e]LDA #$03 [8c70]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Maybe_Step_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8c73]SoundEffect_Maybe_Step_OnTick:; [$8c73] [8c73]LDA #$01 [8c75]STA a:NOISE_VOL [8c78]LDA a:SoundEffect_State_Counter [8c7b]CMP #$03 [8c7d]BNE @_updateCheckCounter [8c7f]LDA #$0a [8c81]STA a:NOISE_LO [8c84]LDA #$00 [8c86]STA a:NOISE_HI [8c89]@_updateCheckCounter:; [$8c89] [8c89]DEC a:SoundEffect_State_Counter [8c8c]BNE @_return [8c8e]LDA #$02 [8c90]STA a:NOISE_LO [8c93]LDA #$10 [8c95]STA a:NOISE_HI [8c98]JMP Sound_ResetCurrentSound [8c9b]@_return:; [$8c9b] [8c9b]RTS
;============================================================================ ; TODO: Document SoundEffect_PlayerDied_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8c9c]SoundEffect_PlayerDied_Setup:; [$8c9c] [8c9c]LDA #$41 [8c9e]STA a:SoundEffect_TicksRemaining [8ca1]STA a:SoundEffect_TicksRemaining_1_ [8ca4]STA a:SoundEffect_TicksRemaining_2_ [8ca7]STA a:SoundEffect_TicksRemaining_3_ [8caa]LDA #$00 [8cac]STA a:SoundEffect_State_Counter [8caf]LDA #$3c [8cb1]STA a:SoundEffect_State_0128
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_PlayerDied_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8cb4]SoundEffect_PlayerDied_OnTick:; [$8cb4] [8cb4]LDA #$00 [8cb6]STA a:TRI_LINEAR [8cb9]STA a:TRI_LO [8cbc]STA a:TRI_LO [8cbf]DEC a:SoundEffect_State_0128 [8cc2]BNE @_play [8cc4]LDA #$10 [8cc6]STA a:SQ1_VOL [8cc9]STA a:SQ2_VOL [8ccc]STA a:NOISE_VOL [8ccf]JMP Sound_ResetCurrentSound [8cd2]@_play:; [$8cd2] [8cd2]LDA a:SoundEffect_State_Counter [8cd5]EOR #$ff [8cd7]LSR A [8cd8]LSR A [8cd9]AND #$0f [8cdb]ORA #$d0 [8cdd]STA a:SQ2_VOL [8ce0]AND #$5f [8ce2]STA a:SQ1_VOL [8ce5]LDA #$1f [8ce7]STA a:NOISE_VOL [8cea]LDA #$00 [8cec]STA a:SQ2_SWEEP [8cef]STA a:SQ1_SWEEP [8cf2]LDA a:SoundEffect_State_Counter [8cf5]AND #$03 [8cf7]TAX [8cf8]LDA SOUNDEFFECT_PLAYER_DIED_NOTES,X [8cfb]JSR SoundEffect_SetNote [8cfe]LDA a:SoundEffect_Note_Low [8d01]CLC [8d02]ADC a:SoundEffect_State_Counter [8d05]STA a:SQ2_LO [8d08]CLC [8d09]ADC #$10 [8d0b]STA a:SQ1_LO [8d0e]LDA a:SoundEffect_Note_High [8d11]STA a:SQ2_HI [8d14]STA a:SQ1_HI [8d17]LDA a:SoundEffect_State_Counter [8d1a]AND #$03 [8d1c]STA a:NOISE_LO [8d1f]LDA #$00 [8d21]STA a:NOISE_HI [8d24]INC a:SoundEffect_State_Counter [8d27]RTS
; ; XREFS: ; SoundEffect_PlayerDied_OnTick ;
[8d28]SOUNDEFFECT_PLAYER_DIED_NOTES:; [$8d28] [8d28].byte $4f,$32,$4c,$3c; [$8d28] byte
;============================================================================ ; TODO: Document SoundEffect_LadderDropped_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8d2c]SoundEffect_LadderDropped_Setup:; [$8d2c] [8d2c]LDA #$0a [8d2e]STA a:SoundEffect_TicksRemaining_3_ [8d31]LDA #$03 [8d33]STA a:SoundEffect_State_Counter
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_LadderDropped_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8d36]SoundEffect_LadderDropped_OnTick:; [$8d36] [8d36]LDA #$07 [8d38]STA a:NOISE_VOL [8d3b]LDA a:SoundEffect_State_Counter [8d3e]CMP #$03 [8d40]BNE @_updateCheckCounter [8d42]LDA #$0f [8d44]STA a:NOISE_LO [8d47]LDA #$18 [8d49]STA a:NOISE_HI [8d4c]@_updateCheckCounter:; [$8d4c] [8d4c]DEC a:SoundEffect_State_Counter [8d4f]BNE @_return [8d51]LDA #$05 [8d53]STA a:NOISE_LO [8d56]LDA #$18 [8d58]STA a:NOISE_HI [8d5b]JMP Sound_ResetCurrentSound [8d5e]@_return:; [$8d5e] [8d5e]RTS
;============================================================================ ; TODO: Document SoundEffect_ShowPlayerMenu_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8d5f]SoundEffect_ShowPlayerMenu_Setup:; [$8d5f] [8d5f]LDA #$23 [8d61]STA a:SoundEffect_TicksRemaining_1_ [8d64]LDA #$00 [8d66]STA a:SoundEffect_State_Counter [8d69]STA a:SoundEffect_State_0128 [8d6c]LDA #$20 [8d6e]STA a:SoundEffect_State_0129
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_ShowPlayerMenu_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8d71]SoundEffect_ShowPlayerMenu_OnTick:; [$8d71] [8d71]DEC a:SoundEffect_State_0129 [8d74]LDA a:SoundEffect_State_0129 [8d77]LSR A [8d78]BNE @_play [8d7a]LDA #$10 [8d7c]STA a:SQ2_VOL [8d7f]JMP Sound_ResetCurrentSound [8d82]@_play:; [$8d82] [8d82]ORA #$d0 [8d84]STA a:SQ2_VOL [8d87]LDA #$00 [8d89]STA a:SQ2_SWEEP [8d8c]LDA a:SoundEffect_State_0128 [8d8f]AND #$03 [8d91]TAX [8d92]LDA SOUNDEFFECT_SHOW_PLAYER_MENU_NOTES,X [8d95]JSR SoundEffect_SetNote [8d98]LDA a:SoundEffect_Note_Low [8d9b]SEC [8d9c]SBC a:SoundEffect_State_Counter [8d9f]STA a:SQ2_LO [8da2]LDA a:SoundEffect_Note_High [8da5]STA a:SQ2_HI [8da8]INC a:SoundEffect_State_Counter [8dab]INC a:SoundEffect_State_Counter [8dae]INC a:SoundEffect_State_Counter [8db1]INC a:SoundEffect_State_0128 [8db4]RTS
; ; XREFS: ; SoundEffect_ShowPlayerMenu_OnTick ;
[8db5]SOUNDEFFECT_SHOW_PLAYER_MENU_NOTES:; [$8db5] [8db5].byte $5b,$4f,$43,$37; [$8db5] byte
;============================================================================ ; TODO: Document SoundEffect_GoldAmountChanged_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8db9]SoundEffect_GoldAmountChanged_Setup:; [$8db9] [8db9]LDA #$0a [8dbb]STA a:SoundEffect_TicksRemaining_1_ [8dbe]LDA #$02 [8dc0]STA a:SoundEffect_State_Counter [8dc3]LDA #$82 [8dc5]STA a:SQ2_VOL [8dc8]LDA #$00 [8dca]STA a:SQ2_SWEEP [8dcd]LDA #$28 [8dcf]STA a:SQ2_LO [8dd2]LDA #$10 [8dd4]STA a:SQ2_HI [8dd7]RTS
;============================================================================ ; TODO: Document SoundEffect_Maybe_UseSpecialItem2_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8dd8]SoundEffect_Maybe_UseSpecialItem2_Setup:; [$8dd8] [8dd8]LDA #$44 [8dda]STA a:SoundEffect_TicksRemaining_1_ [8ddd]STA a:SoundEffect_TicksRemaining_3_ [8de0]LDA #$00 [8de2]STA a:SoundEffect_State_Counter [8de5]STA a:SoundEffect_State_0128 [8de8]STA a:SoundEffect_State_0129
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_Maybe_UseSpecialItem2_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8deb]SoundEffect_Maybe_UseSpecialItem2_OnTick:; [$8deb] [8deb]LDA a:SoundEffect_State_0129 [8dee]LSR A [8def]TAX [8df0]LDA SOUNDEFFECT_SPECIALITEM2_NOISE_VOL,X [8df3]BNE @_hasNoise [8df5]LDA #$10 [8df7]STA a:SQ2_VOL [8dfa]STA a:NOISE_VOL [8dfd]JMP Sound_ResetCurrentSound [8e00]@_hasNoise:; [$8e00] [8e00]ORA #$90 [8e02]STA a:NOISE_VOL [8e05]STA a:SQ2_VOL [8e08]LDA #$00 [8e0a]STA a:SQ2_SWEEP [8e0d]LDA a:SoundEffect_State_Counter [8e10]ASL A [8e11]STA a:SoundEffect_State_0128 [8e14]LDX a:SoundEffect_State_Counter [8e17]LDA SOUNDEFFECT_SPECIALITEM2_NOTES,X [8e1a]CMP #$ff [8e1c]BEQ @_hasNotes [8e1e]JSR SoundEffect_SetNote [8e21]LDA a:SoundEffect_Note_Low [8e24]CLC [8e25]ADC a:SoundEffect_State_0128 [8e28]STA a:SQ2_LO [8e2b]LDA a:SoundEffect_Note_High [8e2e]STA a:SQ2_HI [8e31]LDA a:SoundEffect_State_Counter [8e34]AND #$01 [8e36]TAX [8e37]LDA SOUNDEFFECT_SPECIALITEM2_NOISE_LO,X [8e3a]CLC [8e3b]ADC a:SoundEffect_State_Counter [8e3e]AND #$0f [8e40]STA a:NOISE_LO [8e43]LDA #$00 [8e45]STA a:NOISE_HI [8e48]INC a:SoundEffect_State_Counter [8e4b]LDA a:SoundEffect_State_Counter [8e4e]AND #$07 [8e50]BNE @_return [8e52]INC a:SoundEffect_State_0129 [8e55]@_return:; [$8e55] [8e55]RTS [8e56]@_hasNotes:; [$8e56] [8e56]LDA #$00 [8e58]STA a:SoundEffect_State_Counter [8e5b]INC a:SoundEffect_State_0129 [8e5e]RTS
; ; XREFS: ; SoundEffect_Maybe_UseSpecialItem2_OnTick ;
[8e5f]SOUNDEFFECT_SPECIALITEM2_NOISE_VOL:; [$8e5f] [8e5f].byte $0f,$0d,$09,$05,$00; [$8e5f] byte
; ; XREFS: ; SoundEffect_Maybe_UseSpecialItem2_OnTick ;
[8e64]SOUNDEFFECT_SPECIALITEM2_NOISE_LO:; [$8e64] [8e64].byte $0c,$07; [$8e64] byte
; ; XREFS: ; SoundEffect_Maybe_UseSpecialItem2_OnTick ;
[8e66]SOUNDEFFECT_SPECIALITEM2_NOTES:; [$8e66] [8e66].byte $24,$27,$2b,$30,$48,$4b,$4f,$54; [$8e66] byte [8e6e].byte $33,$44,$52,$57,$57,$5c,$62,$ff; [$8e6e] byte
;============================================================================ ; TODO: Document SoundEffect_BreadTouched_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8e76]SoundEffect_BreadTouched_Setup:; [$8e76] [8e76]LDA #$18 [8e78]STA a:SoundEffect_TicksRemaining_1_ [8e7b]LDA #$ff [8e7d]STA a:SoundEffect_State_Counter [8e80]LDA #$00 [8e82]STA a:SoundEffect_State_0128 [8e85]STA a:SoundEffect_State_0129
; ; v-- Fall through --v ;
;============================================================================ ; TODO: Document SoundEffect_BreadTouched_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8e88]SoundEffect_BreadTouched_OnTick:; [$8e88] [8e88]LDA a:SoundEffect_State_0128 [8e8b]LSR A [8e8c]LSR A [8e8d]TAX [8e8e]LDA SOUNDEFFECT_BREADTOUCHED_SQ2_HI,X [8e91]STA a:SoundEffect_State_0129 [8e94]BNE @_play [8e96]LDA #$10 [8e98]STA a:SQ2_VOL [8e9b]JMP Sound_ResetCurrentSound [8e9e]@_play:; [$8e9e] [8e9e]LDA #$df [8ea0]STA a:SQ2_VOL [8ea3]LDA #$00 [8ea5]STA a:SQ2_SWEEP [8ea8]LDA a:SoundEffect_State_Counter [8eab]SEC [8eac]SBC a:SoundEffect_State_0129 [8eaf]STA a:SoundEffect_State_Counter [8eb2]STA a:SQ2_LO [8eb5]TXA [8eb6]AND #$03 [8eb8]TAX [8eb9]LDA SOUNDEFFECT_BREADTOUCHED_SQ2_HI,X [8ebc]AND #$01 [8ebe]STA a:SQ2_HI [8ec1]INC a:SoundEffect_State_0128 [8ec4]RTS
; ; XREFS: ; SoundEffect_BreadTouched_OnTick ;
[8ec5]SOUNDEFFECT_BREADTOUCHED_SQ2_HI:; [$8ec5] [8ec5].byte $1f,$36,$63,$76,$c8,$00; [$8ec5] byte
;============================================================================ ; TODO: Document SoundEffect_CoinTouched_Setup ; ; INPUTS: ; None. ; ; OUTPUTS: ; TODO ;============================================================================
[8ecb]SoundEffect_CoinTouched_Setup:; [$8ecb] [8ecb]JMP SoundEffect_CoinTouchedCommon_Setup
;============================================================================ ; TODO: Document SoundEffect_CoinTouched_OnTick ; ; INPUTS: ; None. ; ; OUTPUTS: ; A ;============================================================================
[8ece]SoundEffect_CoinTouched_OnTick:; [$8ece] [8ece]JMP SoundEffect_CoinTouchedCommon_OnTick
;============================================================================ ; TODO: Document SoundEffect_SetNote ; ; INPUTS: ; A ; ; OUTPUTS: ; TODO ; ; XREFS: ; SoundEffect_CharacterInput_OnTick ; SoundEffect_HitEnemy_OnTick ; SoundEffect_HitPlayer_OnTick ; SoundEffect_ItemPickedUp_OnTick ; SoundEffect_Maybe_Typing_OnTick ; SoundEffect_Maybe_UseSpecialItem2_OnTick ; SoundEffect_PlayerDied_OnTick ; SoundEffect_ShowPlayerMenu_OnTick ;============================================================================
[8ed1]SoundEffect_SetNote:; [$8ed1] [8ed1]SEC [8ed2]SBC #$18
; ; Loop, subtracting 12 (number of semitones in our lookup ; table) each iteration, until < 0. ; ; The number of loop iterations will be used later to ; normalize the resulting note for the right octave. ;
[8ed4]LDY #$01 [8ed6]SEC [8ed7]@_loop:; [$8ed7] [8ed7]SBC #$0c [8ed9]INY [8eda]BCS @_loop [8edc]DEY [8edd]ADC #$0d [8edf]ASL A [8ee0]TAX [8ee1]LDA AUDIO_NOTES,X [8ee4]STA a:SoundEffect_Note_Low [8ee7]LDA AUDIO_NOTES+1,X [8eea]STA a:SoundEffect_Note_High
; ; Convert to the note in the right octave based on ; the starting value. ;
[8eed]@_octaveLoop:; [$8eed] [8eed]DEY [8eee]BEQ @_return [8ef0]LSR a:SoundEffect_Note_High [8ef3]ROR a:SoundEffect_Note_Low [8ef6]JMP @_octaveLoop [8ef9]@_return:; [$8ef9] [8ef9]RTS
;============================================================================ ; Music lookup table. ; ; Entries are groups of 2-byte addresses containing the ; music data for each channel. ; ; XREFS: ; Music_Load ;============================================================================
; ; XREFS: ; Music_Load ;
[8efa]MSCRIPTS_LOOKUP:; [$8efa] [8efa].byte $ff; [$8efa] byte
; ; XREFS: ; MScript_Op_RestartChannel ;
[8efb]MSCRIPTS_TITLESCREEN:; [$8efb] [8efb].word MSCRIPT_TITLESCREEN_SQ1; [0]: [8efd].word MSCRIPT_TITLESCREEN_SQ2; [1]: [8eff].word MSCRIPT_TITLESCREEN_TRI; [2]: [8f01].word BYTE_PRG5__928e; [3]: [8f03]MSCRIPTS_DAYBREAK:; [$8f03] [8f03].word MSCRIPT_DAYBREAK_SQ1; [0]: [8f05].word MSCRIPT_DAYBREAK_SQ2; [1]: [8f07].word MSCRIPT_DAYBREAK_TRI; [2]: [8f09].word MSCRIPT_DAYBREAK_NOISE; [3]: [8f0b]MSCRIPTS_APOLUNE:; [$8f0b] [8f0b].word MSCRIPT_APOLUNE_SQ1; [0]: [8f0d].word MSCRIPT_APOLUNE_SQ2; [1]: [8f0f].word MSCRIPT_APOLUNE_TRI; [2]: [8f11].word MSCRIPT_APOLUNE_NOISE; [3]: [8f13]MSCRIPTS_CONFLATE:; [$8f13] [8f13].word MSCRIPT_CONFLATE_SQ1; [0]: [8f15].word MSCRIPT_CONFLATE_SQ2; [1]: [8f17].word MSCRIPT_CONFLATE_TRI; [2]: [8f19].word MSCRIPT_CONFLATE_NOISE; [3]: [8f1b]MSCRIPTS_FOREPAW:; [$8f1b] [8f1b].word MSCRIPT_FOREPAW_SQ1; [0]: [8f1d].word MSCRIPT_FOREPAW_SQ2; [1]: [8f1f].word MSCRIPT_FOREPAW_TRI; [2]: [8f21].word MSCRIPT_FOREPAW_NOISE; [3]: [8f23]MSCRIPTS_TOWER:; [$8f23] [8f23].word MSCRIPT_TOWER_SQ1; [0]: [8f25].word MSCRIPT_TOWER_SQ2; [1]: [8f27].word MSCRIPT_TOWER_TRI; [2]: [8f29].word MSCRIPT_TOWER_NOISE; [3]: [8f2b]MSCRIPTS_EOLIS:; [$8f2b] [8f2b].word MSCRIPT_EOLIS_SQ1; [0]: [8f2d].word MSCRIPT_EOLIS_SQ2; [1]: [8f2f].word MSCRIPT_EOLIS_TRI; [2]: [8f31].word MSCRIPT_EOLIS_NOISE; [3]: [8f33]MSCRIPTS_MANTRA:; [$8f33] [8f33].word MSCRIPT_MANTRA_SQ1; [0]: [8f35].word MSCRIPT_MANTRA_SQ2; [1]: [8f37].word MSCRIPT_MANTRA_TRI; [2]: [8f39].word MSCRIPT_MANTRA_NOISE; [3]: [8f3b]MSCRIPTS_MASCON_VICTIM:; [$8f3b] [8f3b].word MSCRIPT_MASCON_VICTIM_SQ1; [0]: [8f3d].word MSCRIPT_MASCON_VICTIM_SQ2; [1]: [8f3f].word MSCRIPT_MASCON_VICTIM_TRI; [2]: [8f41].word MSCRIPT_MASCON_VICTIM_NOISE; [3]: [8f43]MSCRIPTS_BOSS:; [$8f43] [8f43].word MSCRIPT_BOSS_SQ1; [0]: [8f45].word MSCRIPT_BOSS_SQ2; [1]: [8f47].word MSCRIPT_BOSS_TRI; [2]: [8f49].word MSCRIPT_BOSS_NOISE; [3]: [8f4b]MSCRIPTS_HOURGLASS:; [$8f4b] [8f4b].word MSCRIPT_HOURGLASS_SQ1; [0]: [8f4d].word MSCRIPT_HOURGLASS_SQ2; [1]: [8f4f].word MSCRIPT_HOURGLASS_TRI; [2]: [8f51].word MSCRIPT_HOURGLASS_NOISE; [3]: [8f53]MSCRIPTS_ENDING:; [$8f53] [8f53].word MSCRIPT_ENDING_SQ1; [0]: [8f55].word MSCRIPT_ENDING_SQ2; [1]: [8f57].word MSCRIPT_ENDING_TRI; [2]: [8f59].word MSCRIPT_ENDING_NOISE; [3]: [8f5b]MSCRIPTS_KINGS_ROOM:; [$8f5b] [8f5b].word MSCRIPT_KINGS_ROOM_SQ1; [0]: [8f5d].word MSCRIPT_KINGS_ROOM_SQ2; [1]: [8f5f].word MSCRIPT_KINGS_ROOM_TRI; [2]: [8f61].word MSCRIPT_KINGS_ROOM_NOISE; [3]: [8f63]MSCRIPTS_TEMPLE:; [$8f63] [8f63].word MSCRIPT_TEMPLE_SQ1; [0]: [8f65].word MSCRIPT_TEMPLE_SQ2; [1]: [8f67].word MSCRIPT_TEMPLE_TRI; [2]: [8f69].word MSCRIPT_TEMPLE_NOISE; [3]: [8f6b]MSCRIPTS_SHOP:; [$8f6b] [8f6b].word MSCRIPT_SHOP_SQ1; [0]: [8f6d].word MSCRIPT_SHOP_SQ2; [1]: [8f6f].word MSCRIPT_SHOP_TRI; [2]: [8f71].word MSCRIPT_SHOP_NOISE; [3]: [8f73]MSCRIPTS_EVIL_FORTRESS:; [$8f73] [8f73].word MSCRIPT_EVIL_FORTRESS_SQ1; [0]: [8f75].word MSCRIPT_EVIL_FORTRESS_SQ2; [1]: [8f77].word MSCRIPT_EVIL_FORTRESS_TRI; [2]: [8f79].word MSCRIPT_EVIL_FORTRESS_NOISE; [3]: [8f7b].byte $ff; [$8f7b] byte
;============================================================================ ; Music for the start screen. ; ; XREFS: ; MSCRIPTS_TITLESCREEN [$PRG5::8efb] ;============================================================================
; ; XREFS: ; MSCRIPTS_TITLESCREEN [$PRG5::8efb] ;
[8f7c]MSCRIPT_TITLESCREEN_SQ1:; [$8f7c] [8f7c].byte MSCRIPT_OP_SET_GLOBAL_TRANSPOSE; Op: Set global transpose [8f7d].byte $ff; '- Down 1 semitone [8f7e].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [8f7f].byte $00; '- Reduce volume by 0 [8f80].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [8f81].byte $d0; '- Duty cycle 3 Constant volume/envelope [8f82].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [8f83].byte $00; '- Mode 0: Linear decay [8f84].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [8f85].byte $f4; '- Down 1 octave [8f86].byte $86; Note length: 6 [8f87].byte $1f; F#2 [8f88].byte $21; G#2 [8f89].byte $23; A#2 [8f8a].byte $24; B2 [8f8b].byte $26; C#3 [8f8c].byte $28; D#3 [8f8d].byte $29; E3 [8f8e].byte $2a; F3 [8f8f].byte $2b; F#3 [8f90].byte $2d; G#3 [8f91].byte $2f; A#3 [8f92].byte $30; B3 [8f93].byte $32; C#4 [8f94].byte $34; D#4 [8f95].byte $35; E4 [8f96].byte $36; F4 [8f97].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [8f98].byte $d0; '- Duty cycle 3 Constant volume/envelope [8f99].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [8f9a].byte $02; '- 2 iterations [8f9b].byte $b0; Note length: 48 [8f9c].byte $37; F#4 [8f9d].byte $3c; B4 [8f9e].byte $3e; C#5 [8f9f].byte $45; G#5 [8fa0].byte $c8; Note length: 72 [8fa1].byte $43; F#5 [8fa2].byte $8c; Note length: 12 [8fa3].byte $3c; B4 [8fa4].byte $3e; C#5 [8fa5].byte $3f; D5 [8fa6].byte $3c; B4 [8fa7].byte $3f; D5 [8fa8].byte $3e; C#5 [8fa9].byte $00; Rest [8faa].byte $3b; A#4 [8fab].byte $98; Note length: 24 [8fac].byte $37; F#4 [8fad].byte MSCRIPT_OP_END_LOOP; Op: End loop [8fae].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [8faf].byte $02; '- 2 iterations [8fb0].byte $a4; Note length: 36 [8fb1].byte $43; F#5 [8fb2].byte $8c; Note length: 12 [8fb3].byte $3c; B4 [8fb4].byte $b0; Note length: 48 [8fb5].byte $3c; B4 [8fb6].byte $8c; Note length: 12 [8fb7].byte $41; E5 [8fb8].byte $41; E5 [8fb9].byte $40; D#5 [8fba].byte $a4; Note length: 36 [8fbb].byte $3c; B4 [8fbc].byte $8c; Note length: 12 [8fbd].byte $37; F#4 [8fbe].byte $39; G#4 [8fbf].byte $a4; Note length: 36 [8fc0].byte $3a; A4 [8fc1].byte $8c; Note length: 12 [8fc2].byte $3a; A4 [8fc3].byte $39; G#4 [8fc4].byte $3a; A4 [8fc5].byte $39; G#4 [8fc6].byte $bc; Note length: 60 [8fc7].byte $37; F#4 [8fc8].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [8fc9].byte $01; '- 1 loops [8fca].byte $86; Note length: 6 [8fcb].byte $37; F#4 [8fcc].byte $39; G#4 [8fcd].byte $3b; A#4 [8fce].byte $3c; B4 [8fcf].byte $3e; C#5 [8fd0].byte $40; D#5 [8fd1].byte $41; E5 [8fd2].byte $42; F5 [8fd3].byte MSCRIPT_OP_END_LOOP; Op: End loop [8fd4].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [8fd5].byte $02; '- 2 loops [8fd6].byte $86; Note length: 6 [8fd7].byte $3c; B4 [8fd8].byte $3b; A#4 [8fd9].byte $3c; B4 [8fda].byte $3e; C#5 [8fdb].byte $40; D#5 [8fdc].byte $41; E5 [8fdd].byte $42; F5 [8fde].byte $43; F#5 [8fdf].byte $b0; Note length: 48 [8fe0].byte $44; G5 [8fe1].byte $46; A5 [8fe2].byte $c8; Note length: 72 [8fe3].byte $43; F#5 [8fe4].byte $8c; Note length: 12 [8fe5].byte $3c; B4 [8fe6].byte $3e; C#5 [8fe7].byte $3f; D5 [8fe8].byte $3f; D5 [8fe9].byte $41; E5 [8fea].byte $3e; C#5 [8feb].byte $00; Rest [8fec].byte $3c; B4 [8fed].byte $3a; A4 [8fee].byte $98; Note length: 24 [8fef].byte $37; F#4 [8ff0].byte $86; Note length: 6 [8ff1].byte $38; G4 [8ff2].byte $37; F#4 [8ff3].byte $8c; Note length: 12 [8ff4].byte $35; E4 [8ff5].byte $92; Note length: 18 [8ff6].byte $37; F#4 [8ff7].byte $86; Note length: 6 [8ff8].byte $30; B3 [8ff9].byte $33; D4 [8ffa].byte $37; F#4 [8ffb].byte $3c; B4 [8ffc].byte $37; F#4 [8ffd].byte $3c; B4 [8ffe].byte $3f; D5 [8fff].byte $b0; Note length: 48 [9000].byte $44; G5 [9001].byte $46; A5 [9002].byte $bc; Note length: 60 [9003].byte $43; F#5 [9004].byte $8c; Note length: 12 [9005].byte $3c; B4 [9006].byte $3c; B4 [9007].byte $3e; C#5 [9008].byte $3f; D5 [9009].byte $3f; D5 [900a].byte $41; E5 [900b].byte $3e; C#5 [900c].byte $00; Rest [900d].byte $3c; B4 [900e].byte $98; Note length: 24 [900f].byte $3a; A4 [9010].byte $8c; Note length: 12 [9011].byte $3f; D5 [9012].byte $3f; D5 [9013].byte $41; E5 [9014].byte $3e; C#5 [9015].byte $00; Rest [9016].byte $3c; B4 [9017].byte $3a; A4 [9018].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [9019].byte $cc; '- 204 ticks [901a].byte $3c; B4 [901b].byte $d4; Note length: 84 [901c].byte $00; Rest [901d].byte $ec; Note length: 108 [901e].byte $3c; B4 [901f].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TITLESCREEN [$PRG5::8efd] ;
[9020]MSCRIPT_TITLESCREEN_SQ2:; [$9020] [9020].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9021].byte $03; '- Reduce volume by 3 [9022].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9023].byte $90; '- Duty cycle 2 Constant volume/envelope [9024].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9025].byte $00; '- Mode 0: Linear decay [9026].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9027].byte $02; '- 2 [9028].byte $98; Note length: 24 [9029].byte $00; Rest [902a].byte $86; Note length: 6 [902b].byte $21; A2 [902c].byte $23; B2 [902d].byte $24; C3 [902e].byte $26; D3 [902f].byte $28; E3 [9030].byte $29; F3 [9031].byte $2b; G3 [9032].byte $2d; A3 [9033].byte $2f; B3 [9034].byte $30; C4 [9035].byte $32; D4 [9036].byte $33; D#4 [9037].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9038].byte $00; '- 0 [9039].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [903a].byte $50; '- Duty cycle 1 Constant volume/envelope [903b].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [903c].byte $02; '- 2 iterations [903d].byte $86; Note length: 6 [903e].byte $34; E4 [903f].byte $34; E4 [9040].byte $34; E4 [9041].byte $00; Rest [9042].byte $3c; C5 [9043].byte $2b; G3 [9044].byte $34; E4 [9045].byte $34; E4 [9046].byte $34; E4 [9047].byte $34; E4 [9048].byte $34; E4 [9049].byte $00; Rest [904a].byte $3c; C5 [904b].byte $2b; G3 [904c].byte $34; E4 [904d].byte $34; E4 [904e].byte $35; F4 [904f].byte $35; F4 [9050].byte $35; F4 [9051].byte $00; Rest [9052].byte $3c; C5 [9053].byte $2d; A3 [9054].byte $35; F4 [9055].byte $35; F4 [9056].byte $35; F4 [9057].byte $35; F4 [9058].byte $35; F4 [9059].byte $00; Rest [905a].byte $3c; C5 [905b].byte $2d; A3 [905c].byte $35; F4 [905d].byte $35; F4 [905e].byte $34; E4 [905f].byte $34; E4 [9060].byte $34; E4 [9061].byte $00; Rest [9062].byte $3c; C5 [9063].byte $2b; G3 [9064].byte $34; E4 [9065].byte $34; E4 [9066].byte $34; E4 [9067].byte $30; C4 [9068].byte $2b; G3 [9069].byte $30; C4 [906a].byte $34; E4 [906b].byte $34; E4 [906c].byte $37; G4 [906d].byte $37; G4 [906e].byte $2c; G#3 [906f].byte $30; C4 [9070].byte $33; D#4 [9071].byte $38; G#4 [9072].byte $3c; C5 [9073].byte $38; G#4 [9074].byte $2b; G3 [9075].byte $00; Rest [9076].byte $00; Rest [9077].byte $00; Rest [9078].byte $22; A#2 [9079].byte $26; D3 [907a].byte $2b; G3 [907b].byte $2f; B3 [907c].byte $32; D4 [907d].byte $2f; B3 [907e].byte MSCRIPT_OP_END_LOOP; Op: End loop [907f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9080].byte $02; '- 2 iterations [9081].byte $86; Note length: 6 [9082].byte $34; E4 [9083].byte $37; G4 [9084].byte $2b; G3 [9085].byte $30; C4 [9086].byte $34; E4 [9087].byte $37; G4 [9088].byte $2b; G3 [9089].byte $30; C4 [908a].byte $34; E4 [908b].byte $37; G4 [908c].byte $2b; G3 [908d].byte $30; C4 [908e].byte $34; E4 [908f].byte $37; G4 [9090].byte $2b; G3 [9091].byte $30; C4 [9092].byte $35; F4 [9093].byte $37; G4 [9094].byte $2b; G3 [9095].byte $30; C4 [9096].byte $34; E4 [9097].byte $37; G4 [9098].byte $2b; G3 [9099].byte $30; C4 [909a].byte $34; E4 [909b].byte $37; G4 [909c].byte $2b; G3 [909d].byte $30; C4 [909e].byte $34; E4 [909f].byte $37; G4 [90a0].byte $30; C4 [90a1].byte $34; E4 [90a2].byte $27; D#3 [90a3].byte $2b; G3 [90a4].byte $2e; A#3 [90a5].byte $33; D#4 [90a6].byte $37; G4 [90a7].byte $33; D#4 [90a8].byte $2e; A#3 [90a9].byte $2b; G3 [90aa].byte $29; F3 [90ab].byte $2d; A3 [90ac].byte $30; C4 [90ad].byte $35; F4 [90ae].byte $30; C4 [90af].byte $2d; A3 [90b0].byte $2b; G3 [90b1].byte $26; D3 [90b2].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [90b3].byte $01; '- 1 loops [90b4].byte $86; Note length: 6 [90b5].byte $2b; G3 [90b6].byte $30; C4 [90b7].byte $34; E4 [90b8].byte $30; C4 [90b9].byte $2b; G3 [90ba].byte $30; C4 [90bb].byte $34; E4 [90bc].byte $30; C4 [90bd].byte $34; E4 [90be].byte $35; F4 [90bf].byte $37; G4 [90c0].byte $39; A4 [90c1].byte $3b; B4 [90c2].byte $3c; C5 [90c3].byte $3e; D5 [90c4].byte $3f; D#5 [90c5].byte MSCRIPT_OP_END_LOOP; Op: End loop [90c6].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [90c7].byte $02; '- 2 loops [90c8].byte $86; Note length: 6 [90c9].byte $2b; G3 [90ca].byte $30; C4 [90cb].byte $34; E4 [90cc].byte $30; C4 [90cd].byte $2b; G3 [90ce].byte $30; C4 [90cf].byte $34; E4 [90d0].byte $30; C4 [90d1].byte $34; E4 [90d2].byte $33; D#4 [90d3].byte $34; E4 [90d4].byte $35; F4 [90d5].byte $37; G4 [90d6].byte $39; A4 [90d7].byte $3b; B4 [90d8].byte $3c; C5 [90d9].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [90da].byte $02; '- 2 iterations [90db].byte $86; Note length: 6 [90dc].byte $2c; G#3 [90dd].byte $30; C4 [90de].byte $33; D#4 [90df].byte $38; G#4 [90e0].byte $3c; C5 [90e1].byte $3f; D#5 [90e2].byte $3c; C5 [90e3].byte $38; G#4 [90e4].byte $2e; A#3 [90e5].byte $32; D4 [90e6].byte $35; F4 [90e7].byte $3a; A#4 [90e8].byte $3e; D5 [90e9].byte $41; F5 [90ea].byte $3e; D5 [90eb].byte $3a; A#4 [90ec].byte $24; C3 [90ed].byte $28; E3 [90ee].byte $2b; G3 [90ef].byte $30; C4 [90f0].byte $34; E4 [90f1].byte $37; G4 [90f2].byte $3c; C5 [90f3].byte $40; E5 [90f4].byte $3c; C5 [90f5].byte $37; G4 [90f6].byte $34; E4 [90f7].byte $30; C4 [90f8].byte $2b; G3 [90f9].byte $28; E3 [90fa].byte $24; C3 [90fb].byte $28; E3 [90fc].byte $2c; G#3 [90fd].byte $30; C4 [90fe].byte $33; D#4 [90ff].byte $38; G#4 [9100].byte $3c; C5 [9101].byte $38; G#4 [9102].byte $35; F4 [9103].byte $32; D4 [9104].byte $2e; A#3 [9105].byte $29; F3 [9106].byte $2e; A#3 [9107].byte $32; D4 [9108].byte $35; F4 [9109].byte $32; D4 [910a].byte $2e; A#3 [910b].byte $32; D4 [910c].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [910d].byte $01; '- 1 loops [910e].byte $8c; Note length: 12 [910f].byte $33; D#4 [9110].byte $86; Note length: 6 [9111].byte $35; F4 [9112].byte $33; D#4 [9113].byte $8c; Note length: 12 [9114].byte $30; C4 [9115].byte $30; C4 [9116].byte $86; Note length: 6 [9117].byte $24; C3 [9118].byte $27; D#3 [9119].byte $2b; G3 [911a].byte $30; C4 [911b].byte $33; D#4 [911c].byte $30; C4 [911d].byte $2b; G3 [911e].byte $27; D#3 [911f].byte MSCRIPT_OP_END_LOOP; Op: End loop [9120].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9121].byte $02; '- 2 loops [9122].byte $86; Note length: 6 [9123].byte $33; D#4 [9124].byte $38; G#4 [9125].byte $3c; C5 [9126].byte $38; G#4 [9127].byte $33; D#4 [9128].byte $38; G#4 [9129].byte $8c; Note length: 12 [912a].byte $3a; A#4 [912b].byte $00; Rest [912c].byte $35; F4 [912d].byte $37; G4 [912e].byte $92; Note length: 18 [912f].byte $34; E4 [9130].byte $86; Note length: 6 [9131].byte $30; C4 [9132].byte $2b; G3 [9133].byte $30; C4 [9134].byte $28; E3 [9135].byte $2b; G3 [9136].byte $24; C3 [9137].byte $28; E3 [9138].byte $34; E4 [9139].byte $30; C4 [913a].byte $2b; G3 [913b].byte $30; C4 [913c].byte $28; E3 [913d].byte $2b; G3 [913e].byte $24; C3 [913f].byte $28; E3 [9140].byte $32; D4 [9141].byte $2e; A#3 [9142].byte $29; F3 [9143].byte $2e; A#3 [9144].byte $26; D3 [9145].byte $29; F3 [9146].byte $22; A#2 [9147].byte $26; D3 [9148].byte $32; D4 [9149].byte $2e; A#3 [914a].byte $29; F3 [914b].byte $2e; A#3 [914c].byte $26; D3 [914d].byte $29; F3 [914e].byte $22; A#2 [914f].byte $26; D3 [9150].byte $30; C4 [9151].byte $2c; G#3 [9152].byte $27; D#3 [9153].byte $2c; G#3 [9154].byte $24; C3 [9155].byte $27; D#3 [9156].byte $20; G#2 [9157].byte $24; C3 [9158].byte $33; D#4 [9159].byte $30; C4 [915a].byte $2c; G#3 [915b].byte $30; C4 [915c].byte $27; D#3 [915d].byte $2c; G#3 [915e].byte $ec; Note length: 108 [915f].byte $27; D#3 [9160].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TITLESCREEN [$PRG5::8eff] ;
[9161]MSCRIPT_TITLESCREEN_TRI:; [$9161] [9161].byte $b0; Note length: 48 [9162].byte $00; Rest [9163].byte $86; Note length: 6 [9164].byte $23; B4 [9165].byte $24; C5 [9166].byte $26; D5 [9167].byte $28; E5 [9168].byte $29; F5 [9169].byte $2b; G5 [916a].byte $2d; A5 [916b].byte $2f; B5 [916c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [916d].byte $02; '- 2 iterations [916e].byte $86; Note length: 6 [916f].byte $18; C4 [9170].byte $18; C4 [9171].byte $18; C4 [9172].byte $18; C4 [9173].byte $18; C4 [9174].byte $00; Rest [9175].byte $18; C4 [9176].byte $18; C4 [9177].byte $18; C4 [9178].byte $18; C4 [9179].byte $18; C4 [917a].byte $18; C4 [917b].byte $18; C4 [917c].byte $00; Rest [917d].byte $18; C4 [917e].byte $18; C4 [917f].byte $18; C4 [9180].byte $18; C4 [9181].byte $18; C4 [9182].byte $18; C4 [9183].byte $18; C4 [9184].byte $00; Rest [9185].byte $18; C4 [9186].byte $18; C4 [9187].byte $18; C4 [9188].byte $18; C4 [9189].byte $18; C4 [918a].byte $18; C4 [918b].byte $18; C4 [918c].byte $00; Rest [918d].byte $18; C4 [918e].byte $18; C4 [918f].byte $18; C4 [9190].byte $18; C4 [9191].byte $18; C4 [9192].byte $18; C4 [9193].byte $18; C4 [9194].byte $00; Rest [9195].byte $18; C4 [9196].byte $18; C4 [9197].byte $18; C4 [9198].byte $18; C4 [9199].byte $18; C4 [919a].byte $18; C4 [919b].byte $18; C4 [919c].byte $00; Rest [919d].byte $18; C4 [919e].byte $18; C4 [919f].byte $14; G#3 [91a0].byte $14; G#3 [91a1].byte $20; G#4 [91a2].byte $20; G#4 [91a3].byte $14; G#3 [91a4].byte $14; G#3 [91a5].byte $13; G3 [91a6].byte $00; Rest [91a7].byte $00; Rest [91a8].byte $00; Rest [91a9].byte $1f; G4 [91aa].byte $1f; G4 [91ab].byte $13; G3 [91ac].byte $13; G3 [91ad].byte $13; G3 [91ae].byte $13; G3 [91af].byte MSCRIPT_OP_END_LOOP; Op: End loop [91b0].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [91b1].byte $02; '- 2 iterations [91b2].byte $86; Note length: 6 [91b3].byte $18; C4 [91b4].byte $18; C4 [91b5].byte $18; C4 [91b6].byte $18; C4 [91b7].byte $18; C4 [91b8].byte $00; Rest [91b9].byte $18; C4 [91ba].byte $18; C4 [91bb].byte $18; C4 [91bc].byte $18; C4 [91bd].byte $18; C4 [91be].byte $18; C4 [91bf].byte $18; C4 [91c0].byte $00; Rest [91c1].byte $18; C4 [91c2].byte $18; C4 [91c3].byte $18; C4 [91c4].byte $18; C4 [91c5].byte $18; C4 [91c6].byte $18; C4 [91c7].byte $18; C4 [91c8].byte $00; Rest [91c9].byte $18; C4 [91ca].byte $18; C4 [91cb].byte $18; C4 [91cc].byte $18; C4 [91cd].byte $18; C4 [91ce].byte $18; C4 [91cf].byte $18; C4 [91d0].byte $00; Rest [91d1].byte $18; C4 [91d2].byte $18; C4 [91d3].byte $1b; D#4 [91d4].byte $1b; D#4 [91d5].byte $1b; D#4 [91d6].byte $1b; D#4 [91d7].byte $1b; D#4 [91d8].byte $00; Rest [91d9].byte $1b; D#4 [91da].byte $1b; D#4 [91db].byte $1d; F4 [91dc].byte $1d; F4 [91dd].byte $1d; F4 [91de].byte $1d; F4 [91df].byte $1d; F4 [91e0].byte $00; Rest [91e1].byte $1d; F4 [91e2].byte $1d; F4 [91e3].byte $18; C4 [91e4].byte $18; C4 [91e5].byte $18; C4 [91e6].byte $18; C4 [91e7].byte $18; C4 [91e8].byte $00; Rest [91e9].byte $18; C4 [91ea].byte $18; C4 [91eb].byte $18; C4 [91ec].byte $18; C4 [91ed].byte $18; C4 [91ee].byte $18; C4 [91ef].byte $18; C4 [91f0].byte $00; Rest [91f1].byte $18; C4 [91f2].byte $18; C4 [91f3].byte MSCRIPT_OP_END_LOOP; Op: End loop [91f4].byte $14; G#3 [91f5].byte $14; G#3 [91f6].byte $14; G#3 [91f7].byte $14; G#3 [91f8].byte $14; G#3 [91f9].byte $14; G#3 [91fa].byte $14; G#3 [91fb].byte $14; G#3 [91fc].byte $16; A#3 [91fd].byte $16; A#3 [91fe].byte $16; A#3 [91ff].byte $16; A#3 [9200].byte $16; A#3 [9201].byte $16; A#3 [9202].byte $16; A#3 [9203].byte $16; A#3 [9204].byte $18; C4 [9205].byte $18; C4 [9206].byte $18; C4 [9207].byte $18; C4 [9208].byte $18; C4 [9209].byte $00; Rest [920a].byte $18; C4 [920b].byte $18; C4 [920c].byte $18; C4 [920d].byte $18; C4 [920e].byte $18; C4 [920f].byte $18; C4 [9210].byte $18; C4 [9211].byte $00; Rest [9212].byte $18; C4 [9213].byte $18; C4 [9214].byte $14; G#3 [9215].byte $14; G#3 [9216].byte $14; G#3 [9217].byte $14; G#3 [9218].byte $14; G#3 [9219].byte $14; G#3 [921a].byte $16; A#3 [921b].byte $00; Rest [921c].byte $00; Rest [921d].byte $00; Rest [921e].byte $16; A#3 [921f].byte $16; A#3 [9220].byte $16; A#3 [9221].byte $16; A#3 [9222].byte $16; A#3 [9223].byte $16; A#3 [9224].byte $18; C4 [9225].byte $18; C4 [9226].byte $18; C4 [9227].byte $18; C4 [9228].byte $18; C4 [9229].byte $00; Rest [922a].byte $18; C4 [922b].byte $18; C4 [922c].byte $18; C4 [922d].byte $18; C4 [922e].byte $18; C4 [922f].byte $18; C4 [9230].byte $18; C4 [9231].byte $00; Rest [9232].byte $18; C4 [9233].byte $18; C4 [9234].byte $14; G#3 [9235].byte $14; G#3 [9236].byte $14; G#3 [9237].byte $14; G#3 [9238].byte $14; G#3 [9239].byte $14; G#3 [923a].byte $14; G#3 [923b].byte $14; G#3 [923c].byte $16; A#3 [923d].byte $16; A#3 [923e].byte $16; A#3 [923f].byte $16; A#3 [9240].byte $16; A#3 [9241].byte $16; A#3 [9242].byte $16; A#3 [9243].byte $16; A#3 [9244].byte $18; C4 [9245].byte $18; C4 [9246].byte $18; C4 [9247].byte $18; C4 [9248].byte $18; C4 [9249].byte $00; Rest [924a].byte $18; C4 [924b].byte $18; C4 [924c].byte $18; C4 [924d].byte $18; C4 [924e].byte $18; C4 [924f].byte $18; C4 [9250].byte $18; C4 [9251].byte $00; Rest [9252].byte $18; C4 [9253].byte $18; C4 [9254].byte $14; G#3 [9255].byte $14; G#3 [9256].byte $14; G#3 [9257].byte $14; G#3 [9258].byte $14; G#3 [9259].byte $14; G#3 [925a].byte $16; A#3 [925b].byte $00; Rest [925c].byte $00; Rest [925d].byte $00; Rest [925e].byte $16; A#3 [925f].byte $16; A#3 [9260].byte $16; A#3 [9261].byte $16; A#3 [9262].byte $16; A#3 [9263].byte $16; A#3 [9264].byte $14; G#3 [9265].byte $14; G#3 [9266].byte $14; G#3 [9267].byte $14; G#3 [9268].byte $14; G#3 [9269].byte $14; G#3 [926a].byte $16; A#3 [926b].byte $00; Rest [926c].byte $00; Rest [926d].byte $00; Rest [926e].byte $16; A#3 [926f].byte $16; A#3 [9270].byte $16; A#3 [9271].byte $16; A#3 [9272].byte $98; Note length: 24 [9273].byte $18; C4 [9274].byte $8c; Note length: 12 [9275].byte $18; C4 [9276].byte $18; C4 [9277].byte $18; C4 [9278].byte $18; C4 [9279].byte $18; C4 [927a].byte $18; C4 [927b].byte $18; C4 [927c].byte $18; C4 [927d].byte $18; C4 [927e].byte $18; C4 [927f].byte $18; C4 [9280].byte $18; C4 [9281].byte $18; C4 [9282].byte $18; C4 [9283].byte $18; C4 [9284].byte $18; C4 [9285].byte $18; C4 [9286].byte $18; C4 [9287].byte $18; C4 [9288].byte $18; C4 [9289].byte $18; C4 [928a].byte $18; C4 [928b].byte $ec; Note length: 108 [928c].byte $20; G#4 [928d].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TITLESCREEN [$PRG5::8f01] ;
[928e]BYTE_PRG5__928e:; [$928e] [928e].byte $8c,$21,$00,$21,$00,$86,$31,$21; [$928e] byte [9296].byte $31,$31,$31,$21,$31,$31; [$9296] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [929d].byte $02; '- 2 iterations [929e].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$929e] byte [92a6].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$92a6] byte [92ae].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$92ae] byte [92b6].byte $21,$86,$31,$31,$31,$00,$31,$31; [$92b6] byte [92be].byte $8c,$21,$86,$31,$31,$31,$00,$31; [$92be] byte [92c6].byte $31,$8c,$21,$86,$31,$31,$31,$00; [$92c6] byte [92ce].byte $31,$31,$8c,$21,$21,$21,$21,$21; [$92ce] byte [92d6].byte $21,$86,$31,$00,$8c,$21,$21,$86; [$92d6] byte [92de].byte $21,$21; [$92de] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [92e1].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [92e2].byte $02; '- 2 iterations [92e3].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$92e3] byte [92eb].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$92eb] byte [92f3].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$92f3] byte [92fb].byte $21,$86,$31,$31,$31,$00,$31,$31; [$92fb] byte [9303].byte $8c,$21,$86,$31,$31,$31,$00,$31; [$9303] byte [930b].byte $31,$8c,$21,$86,$31,$31,$31,$00; [$930b] byte [9313].byte $31,$31,$8c,$21,$86,$31,$31,$31; [$9313] byte [931b].byte $00,$31,$31,$8c,$21,$86,$31,$31; [$931b] byte [9323].byte $31,$00,$31,$31,$21,$21,$21,$00; [$9323] byte [932b].byte MSCRIPT_OP_END_LOOP; Op: End loop [932c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [932d].byte $02; '- 2 iterations [932e].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$932e] byte [9336].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$9336] byte [933e].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$933e] byte [9346].byte $21,$86,$31,$31,$31,$00,$31,$31; [$9346] byte [934e].byte $8c,$21,$86,$31,$31; [$934e] byte .byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9354].byte $01; '- 1 loop [9355].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$9355] byte [935d].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$935d] byte [9365].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$9365] byte [936d].byte $21,$86,$31,$31,$31,$00,$8c,$21; [$936d] byte [9375].byte $86,$21,$21,$21,$00; [$9375] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [937b].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [937c].byte $02; '- 2 loops [937d].byte $8c,$21,$21,$21,$21,$86,$31,$31; [$937d] byte [9385].byte $8c,$21,$21,$86,$21,$21,$8c,$21; [$9385] byte [938d].byte $21,$21,$21,$00,$21,$21; [$938d] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9394].byte $02; '- 2 iterations [9395].byte $86,$31,$00,$31,$31,$31,$00,$31; [$9395] byte [939d].byte $31,$31,$00,$31,$31,$31,$00,$31; [$939d] byte [93a5].byte $31; [$93a5] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [93a7].byte $31,$00,$31,$31,$31,$00,$31,$31; [$93a7] byte [93af].byte $31,$00,$31,$31,$31,$31,$ec,$31; [$93af] byte [93b7].byte MSCRIPT_OP_END; Op: End [93b8].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for Daybreak. ; ; XREFS: ; MSCRIPTS_DAYBREAK [$PRG5::8f03] ;============================================================================
; ; XREFS: ; MSCRIPTS_DAYBREAK [$PRG5::8f03] ;
[93b9]MSCRIPT_DAYBREAK_SQ1:; [$93b9] [93b9].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [93ba].byte $01; '- Reduce volume by 1 [93bb].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [93bc].byte $90; '- Duty cycle 2 Constant volume/envelope [93bd].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [93be].byte $01; '- Mode 1: Curve but held [93bf].byte MSCRIPT_OP_SET_SQ_PITCH_EFFECT_DEPTH; Op: Set SQ2 envelope depth [93c0].byte $02; '- 2 [93c1].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [93c2].byte $02; '- 2 iterations [93c3].byte $98; Note length: 24 [93c4].byte $2d; A3 [93c5].byte $2f; B3 [93c6].byte $30; C4 [93c7].byte $37; G4 [93c8].byte $c8; Note length: 72 [93c9].byte $36; F#4 [93ca].byte $98; Note length: 24 [93cb].byte $32; D4 [93cc].byte $c8; Note length: 72 [93cd].byte $35; F4 [93ce].byte $98; Note length: 24 [93cf].byte $2f; B3 [93d0].byte $e0; Note length: 96 [93d1].byte $34; E4 [93d2].byte $98; Note length: 24 [93d3].byte $2d; A3 [93d4].byte $2f; B3 [93d5].byte $30; C4 [93d6].byte $37; G4 [93d7].byte $c8; Note length: 72 [93d8].byte $36; F#4 [93d9].byte $98; Note length: 24 [93da].byte $32; D4 [93db].byte $c8; Note length: 72 [93dc].byte $35; F4 [93dd].byte $98; Note length: 24 [93de].byte $2f; B3 [93df].byte $e0; Note length: 96 [93e0].byte $2f; B3 [93e1].byte $98; Note length: 24 [93e2].byte $32; D4 [93e3].byte $34; E4 [93e4].byte $35; F4 [93e5].byte $3c; C5 [93e6].byte $c8; Note length: 72 [93e7].byte $3b; B4 [93e8].byte $98; Note length: 24 [93e9].byte $38; G#4 [93ea].byte $c8; Note length: 72 [93eb].byte $39; A4 [93ec].byte $98; Note length: 24 [93ed].byte $34; E4 [93ee].byte $e0; Note length: 96 [93ef].byte $30; C4 [93f0].byte $98; Note length: 24 [93f1].byte $30; C4 [93f2].byte $32; D4 [93f3].byte $34; E4 [93f4].byte $39; A4 [93f5].byte $33; D#4 [93f6].byte $34; E4 [93f7].byte $36; F#4 [93f8].byte $3b; B4 [93f9].byte $e0; Note length: 96 [93fa].byte $3b; B4 [93fb].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [93fc].byte $01; '- 1 loop [93fd].byte $e0; Note length: 96 [93fe].byte $34; E4 [93ff].byte MSCRIPT_OP_END_LOOP; Op: End loop [9400].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9401].byte $02; '- 2 loops [9402].byte $a4; Note length: 36 [9403].byte $34; E4 [9404].byte $8c; Note length: 12 [9405].byte $34; E4 [9406].byte $39; A4 [9407].byte $34; E4 [9408].byte $39; A4 [9409].byte $3c; C5 [940a].byte $98; Note length: 24 [940b].byte $3f; D#5 [940c].byte $3c; C5 [940d].byte $3b; B4 [940e].byte $38; G#4 [940f].byte $a4; Note length: 36 [9410].byte $39; A4 [9411].byte $8c; Note length: 12 [9412].byte $34; E4 [9413].byte $39; A4 [9414].byte $34; E4 [9415].byte $39; A4 [9416].byte $3c; C5 [9417].byte $98; Note length: 24 [9418].byte $40; E5 [9419].byte $41; F5 [941a].byte $3c; C5 [941b].byte $3e; D5 [941c].byte $a4; Note length: 36 [941d].byte $3a; A#4 [941e].byte $8c; Note length: 12 [941f].byte $41; F5 [9420].byte $40; E5 [9421].byte $3c; C5 [9422].byte $3b; B4 [9423].byte $38; G#4 [9424].byte $39; A4 [9425].byte $34; E4 [9426].byte $30; C4 [9427].byte $34; E4 [9428].byte $98; Note length: 24 [9429].byte $2d; A3 [942a].byte $2c; G#3 [942b].byte $8c; Note length: 12 [942c].byte $2b; G3 [942d].byte $00; Rest [942e].byte $00; Rest [942f].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9430].byte $90; '- Duty cycle 2 Constant volume/envelope [9431].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9432].byte $00; '- Mode 0: Linear decay [9433].byte $34; E4 [9434].byte $35; F4 [9435].byte $36; F#4 [9436].byte $37; G4 [9437].byte $38; G#4 [9438].byte $e0; Note length: 96 [9439].byte $00; Rest [943a].byte $a4; Note length: 36 [943b].byte $00; Rest [943c].byte $8c; Note length: 12 [943d].byte $38; G#4 [943e].byte $37; G4 [943f].byte $36; F#4 [9440].byte $35; F4 [9441].byte $34; E4 [9442].byte $e0; Note length: 96 [9443].byte $00; Rest [9444].byte $a4; Note length: 36 [9445].byte $00; Rest [9446].byte $8c; Note length: 12 [9447].byte $34; E4 [9448].byte $35; F4 [9449].byte $36; F#4 [944a].byte $37; G4 [944b].byte $38; G#4 [944c].byte $e0; Note length: 96 [944d].byte $00; Rest [944e].byte $a4; Note length: 36 [944f].byte $00; Rest [9450].byte $8c; Note length: 12 [9451].byte $38; G#4 [9452].byte $37; G4 [9453].byte $36; F#4 [9454].byte $35; F4 [9455].byte $34; E4 [9456].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9457].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_DAYBREAK [$PRG5::8f05] ;
[9458]MSCRIPT_DAYBREAK_SQ2:; [$9458] [9458].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9459].byte $05; '- Reduce volume by 5 [945a].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [945b].byte $13; '- Duty cycle 0 Constant volume/envelope [945c].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [945d].byte $01; '- Mode 1: Curve but held [945e].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [945f].byte $90; '- Duty cycle 2 Constant volume/envelope [9460].byte $8c; Note length: 12 [9461].byte $00; Rest [9462].byte $98; Note length: 24 [9463].byte $2d; A3 [9464].byte $2f; B3 [9465].byte $30; C4 [9466].byte $37; G4 [9467].byte $c8; Note length: 72 [9468].byte $36; F#4 [9469].byte $98; Note length: 24 [946a].byte $32; D4 [946b].byte $c8; Note length: 72 [946c].byte $35; F4 [946d].byte $98; Note length: 24 [946e].byte $2f; B3 [946f].byte $e0; Note length: 96 [9470].byte $34; E4 [9471].byte $98; Note length: 24 [9472].byte $2d; A3 [9473].byte $2f; B3 [9474].byte $30; C4 [9475].byte $37; G4 [9476].byte $c8; Note length: 72 [9477].byte $36; F#4 [9478].byte $98; Note length: 24 [9479].byte $32; D4 [947a].byte $c8; Note length: 72 [947b].byte $35; F4 [947c].byte $98; Note length: 24 [947d].byte $2f; B3 [947e].byte $e0; Note length: 96 [947f].byte $2f; B3 [9480].byte $98; Note length: 24 [9481].byte $32; D4 [9482].byte $34; E4 [9483].byte $35; F4 [9484].byte $3c; C5 [9485].byte $c8; Note length: 72 [9486].byte $3b; B4 [9487].byte $98; Note length: 24 [9488].byte $38; G#4 [9489].byte $c8; Note length: 72 [948a].byte $39; A4 [948b].byte $98; Note length: 24 [948c].byte $34; E4 [948d].byte $e0; Note length: 96 [948e].byte $30; C4 [948f].byte $98; Note length: 24 [9490].byte $30; C4 [9491].byte $32; D4 [9492].byte $34; E4 [9493].byte $39; A4 [9494].byte $33; D#4 [9495].byte $34; E4 [9496].byte $36; F#4 [9497].byte $3b; B4 [9498].byte $e0; Note length: 96 [9499].byte $3b; B4 [949a].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [949b].byte $03; '- Reduce volume by 3 [949c].byte $8c; Note length: 12 [949d].byte $34; E4 [949e].byte $32; D4 [949f].byte $2f; B3 [94a0].byte $30; C4 [94a1].byte $2d; A3 [94a2].byte $2f; B3 [94a3].byte $2c; G#3 [94a4].byte $b0; Note length: 48 [94a5].byte $00; Rest [94a6].byte $98; Note length: 24 [94a7].byte $2d; A3 [94a8].byte $2f; B3 [94a9].byte $2d; A3 [94aa].byte $2f; B3 [94ab].byte $30; C4 [94ac].byte $2d; A3 [94ad].byte $2f; B3 [94ae].byte $30; C4 [94af].byte $2f; B3 [94b0].byte $2d; A3 [94b1].byte $2c; G#3 [94b2].byte $29; F3 [94b3].byte $28; E3 [94b4].byte $26; D3 [94b5].byte $24; C3 [94b6].byte $28; E3 [94b7].byte $2d; A3 [94b8].byte $2f; B3 [94b9].byte $2d; A3 [94ba].byte $2f; B3 [94bb].byte $30; C4 [94bc].byte $2d; A3 [94bd].byte $2f; B3 [94be].byte $2d; A3 [94bf].byte $29; F3 [94c0].byte $26; D3 [94c1].byte $28; E3 [94c2].byte $2f; B3 [94c3].byte $2c; G#3 [94c4].byte $28; E3 [94c5].byte $00; Rest [94c6].byte $00; Rest [94c7].byte $32; D4 [94c8].byte $30; C4 [94c9].byte $2f; B3 [94ca].byte $2d; A3 [94cb].byte $2c; G#3 [94cc].byte $28; E3 [94cd].byte $00; Rest [94ce].byte $31; C#4 [94cf].byte $2d; A3 [94d0].byte $31; C#4 [94d1].byte $2d; A3 [94d2].byte $2a; F#3 [94d3].byte $27; D#3 [94d4].byte $b0; Note length: 48 [94d5].byte $24; C3 [94d6].byte $98; Note length: 24 [94d7].byte $28; E3 [94d8].byte $2d; A3 [94d9].byte $30; C4 [94da].byte $2f; B3 [94db].byte $30; C4 [94dc].byte $2f; B3 [94dd].byte $33; D#4 [94de].byte $34; E4 [94df].byte $2d; A3 [94e0].byte $2f; B3 [94e1].byte $2c; G#3 [94e2].byte $a4; Note length: 36 [94e3].byte $30; C4 [94e4].byte $8c; Note length: 12 [94e5].byte $30; C4 [94e6].byte $34; E4 [94e7].byte $30; C4 [94e8].byte $34; E4 [94e9].byte $39; A4 [94ea].byte $3c; C5 [94eb].byte $3c; C5 [94ec].byte $39; A4 [94ed].byte $39; A4 [94ee].byte $38; G#4 [94ef].byte $38; G#4 [94f0].byte $32; D4 [94f1].byte $32; D4 [94f2].byte $a4; Note length: 36 [94f3].byte $30; C4 [94f4].byte $8c; Note length: 12 [94f5].byte $30; C4 [94f6].byte $34; E4 [94f7].byte $30; C4 [94f8].byte $34; E4 [94f9].byte $39; A4 [94fa].byte $3c; C5 [94fb].byte $3c; C5 [94fc].byte $3e; D5 [94fd].byte $3e; D5 [94fe].byte $34; E4 [94ff].byte $34; E4 [9500].byte $3b; B4 [9501].byte $3b; B4 [9502].byte $a4; Note length: 36 [9503].byte $35; F4 [9504].byte $8c; Note length: 12 [9505].byte $3e; D5 [9506].byte $3c; C5 [9507].byte $39; A4 [9508].byte $38; G#4 [9509].byte $32; D4 [950a].byte $34; E4 [950b].byte $30; C4 [950c].byte $2d; A3 [950d].byte $30; C4 [950e].byte $98; Note length: 24 [950f].byte $28; E3 [9510].byte $27; D#3 [9511].byte $8c; Note length: 12 [9512].byte $26; D3 [9513].byte $00; Rest [9514].byte $00; Rest [9515].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9516].byte $03; '- Reduce volume by 3 [9517].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9518].byte $50; '- Duty cycle 1 Constant volume/envelope [9519].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [951a].byte $00; '- Mode 0: Linear decay [951b].byte $30; C4 [951c].byte $31; C#4 [951d].byte $32; D4 [951e].byte $33; D#4 [951f].byte $34; E4 [9520].byte $e0; Note length: 96 [9521].byte $00; Rest [9522].byte $a4; Note length: 36 [9523].byte $00; Rest [9524].byte $8c; Note length: 12 [9525].byte $34; E4 [9526].byte $33; D#4 [9527].byte $32; D4 [9528].byte $31; C#4 [9529].byte $30; C4 [952a].byte $e0; Note length: 96 [952b].byte $00; Rest [952c].byte $a4; Note length: 36 [952d].byte $00; Rest [952e].byte $8c; Note length: 12 [952f].byte $30; C4 [9530].byte $31; C#4 [9531].byte $32; D4 [9532].byte $33; D#4 [9533].byte $34; E4 [9534].byte $e0; Note length: 96 [9535].byte $00; Rest [9536].byte $a4; Note length: 36 [9537].byte $00; Rest [9538].byte $8c; Note length: 12 [9539].byte $34; E4 [953a].byte $33; D#4 [953b].byte $32; D4 [953c].byte $31; C#4 [953d].byte $30; C4 [953e].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [953f].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_DAYBREAK [$PRG5::8f07] ;
[9540]MSCRIPT_DAYBREAK_TRI:; [$9540] [9540].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9541].byte $02; '- 2 iterations [9542].byte $8c; Note length: 12 [9543].byte $15; A3 [9544].byte $21; A4 [9545].byte $1c; E4 [9546].byte $21; A4 [9547].byte $00; Rest [9548].byte $21; A4 [9549].byte $1c; E4 [954a].byte $21; A4 [954b].byte $18; C4 [954c].byte $21; A4 [954d].byte $1c; E4 [954e].byte $21; A4 [954f].byte $00; Rest [9550].byte $21; A4 [9551].byte $1c; E4 [9552].byte $21; A4 [9553].byte $17; B3 [9554].byte $21; A4 [9555].byte $1a; D4 [9556].byte $21; A4 [9557].byte $00; Rest [9558].byte $21; A4 [9559].byte $1a; D4 [955a].byte $21; A4 [955b].byte $10; E3 [955c].byte $1c; E4 [955d].byte $17; B3 [955e].byte $1c; E4 [955f].byte $00; Rest [9560].byte $1c; E4 [9561].byte $17; B3 [9562].byte $1c; E4 [9563].byte $15; A3 [9564].byte $21; A4 [9565].byte $1c; E4 [9566].byte $21; A4 [9567].byte $00; Rest [9568].byte $21; A4 [9569].byte $1c; E4 [956a].byte $21; A4 [956b].byte $18; C4 [956c].byte $21; A4 [956d].byte $1c; E4 [956e].byte $21; A4 [956f].byte $00; Rest [9570].byte $21; A4 [9571].byte $1c; E4 [9572].byte $21; A4 [9573].byte $17; B3 [9574].byte $21; A4 [9575].byte $1a; D4 [9576].byte $21; A4 [9577].byte $00; Rest [9578].byte $21; A4 [9579].byte $1a; D4 [957a].byte $21; A4 [957b].byte $10; E3 [957c].byte $1c; E4 [957d].byte $17; B3 [957e].byte $1c; E4 [957f].byte $00; Rest [9580].byte $1c; E4 [9581].byte $17; B3 [9582].byte $1c; E4 [9583].byte $1a; D4 [9584].byte $26; D5 [9585].byte $21; A4 [9586].byte $26; D5 [9587].byte $00; Rest [9588].byte $26; D5 [9589].byte $21; A4 [958a].byte $26; D5 [958b].byte $10; E3 [958c].byte $1c; E4 [958d].byte $17; B3 [958e].byte $1c; E4 [958f].byte $00; Rest [9590].byte $1c; E4 [9591].byte $17; B3 [9592].byte $1c; E4 [9593].byte $15; A3 [9594].byte $21; A4 [9595].byte $1c; E4 [9596].byte $21; A4 [9597].byte $00; Rest [9598].byte $21; A4 [9599].byte $1c; E4 [959a].byte $21; A4 [959b].byte $18; C4 [959c].byte $21; A4 [959d].byte $1b; D#4 [959e].byte $21; A4 [959f].byte $00; Rest [95a0].byte $21; A4 [95a1].byte $1b; D#4 [95a2].byte $21; A4 [95a3].byte $13; G3 [95a4].byte $1c; E4 [95a5].byte $18; C4 [95a6].byte $1c; E4 [95a7].byte $00; Rest [95a8].byte $1c; E4 [95a9].byte $18; C4 [95aa].byte $1c; E4 [95ab].byte $17; B3 [95ac].byte $21; A4 [95ad].byte $1b; D#4 [95ae].byte $21; A4 [95af].byte $00; Rest [95b0].byte $21; A4 [95b1].byte $1e; F#4 [95b2].byte $21; A4 [95b3].byte $10; E3 [95b4].byte $1c; E4 [95b5].byte $17; B3 [95b6].byte $1c; E4 [95b7].byte $00; Rest [95b8].byte $1c; E4 [95b9].byte $17; B3 [95ba].byte $1c; E4 [95bb].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [95bc].byte $01; '- 1 loop [95bd].byte $8c; Note length: 12 [95be].byte $10; E3 [95bf].byte $1c; E4 [95c0].byte $1d; F4 [95c1].byte $1a; D4 [95c2].byte $1c; E4 [95c3].byte $18; C4 [95c4].byte $1a; D4 [95c5].byte $17; B3 [95c6].byte MSCRIPT_OP_END_LOOP; Op: End loop [95c7].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [95c8].byte $02; '- 2 loops [95c9].byte $8c; Note length: 12 [95ca].byte $10; E3 [95cb].byte $11; F3 [95cc].byte $10; E3 [95cd].byte $21; A4 [95ce].byte $1c; E4 [95cf].byte $18; C4 [95d0].byte $15; A3 [95d1].byte $10; E3 [95d2].byte $10; E3 [95d3].byte $98; Note length: 24 [95d4].byte $10; E3 [95d5].byte $8c; Note length: 12 [95d6].byte $10; E3 [95d7].byte $10; E3 [95d8].byte $98; Note length: 24 [95d9].byte $10; E3 [95da].byte $8c; Note length: 12 [95db].byte $10; E3 [95dc].byte $21; A4 [95dd].byte $1c; E4 [95de].byte $15; A3 [95df].byte $21; A4 [95e0].byte $1c; E4 [95e1].byte $18; C4 [95e2].byte $15; A3 [95e3].byte $10; E3 [95e4].byte $10; E3 [95e5].byte $98; Note length: 24 [95e6].byte $10; E3 [95e7].byte $8c; Note length: 12 [95e8].byte $10; E3 [95e9].byte $10; E3 [95ea].byte $98; Note length: 24 [95eb].byte $10; E3 [95ec].byte $8c; Note length: 12 [95ed].byte $10; E3 [95ee].byte $16; A#3 [95ef].byte $16; A#3 [95f0].byte $1a; D4 [95f1].byte $1a; D4 [95f2].byte $1c; E4 [95f3].byte $1c; E4 [95f4].byte $10; E3 [95f5].byte $10; E3 [95f6].byte $15; A3 [95f7].byte $98; Note length: 24 [95f8].byte $15; A3 [95f9].byte $8c; Note length: 12 [95fa].byte $15; A3 [95fb].byte $98; Note length: 24 [95fc].byte $18; C4 [95fd].byte $17; B3 [95fe].byte $8c; Note length: 12 [95ff].byte $16; A#3 [9600].byte $16; A#3 [9601].byte $16; A#3 [9602].byte $16; A#3 [9603].byte $16; A#3 [9604].byte $17; B3 [9605].byte $18; C4 [9606].byte $19; C#4 [9607].byte $86; Note length: 6 [9608].byte $19; C#4 [9609].byte $25; C#5 [960a].byte $19; C#4 [960b].byte $25; C#5 [960c].byte $1c; E4 [960d].byte $28; E5 [960e].byte $1c; E4 [960f].byte $28; E5 [9610].byte $20; G#4 [9611].byte $2c; G#5 [9612].byte $20; G#4 [9613].byte $2c; G#5 [9614].byte $1c; E4 [9615].byte $28; E5 [9616].byte $1c; E4 [9617].byte $28; E5 [9618].byte $19; C#4 [9619].byte $25; C#5 [961a].byte $19; C#4 [961b].byte $25; C#5 [961c].byte $19; C#4 [961d].byte $25; C#5 [961e].byte $8c; Note length: 12 [961f].byte $19; C#4 [9620].byte $18; C4 [9621].byte $17; B3 [9622].byte $16; A#3 [9623].byte $15; A3 [9624].byte $86; Note length: 6 [9625].byte $15; A3 [9626].byte $21; A4 [9627].byte $15; A3 [9628].byte $21; A4 [9629].byte $18; C4 [962a].byte $24; C5 [962b].byte $18; C4 [962c].byte $24; C5 [962d].byte $1c; E4 [962e].byte $28; E5 [962f].byte $1c; E4 [9630].byte $28; E5 [9631].byte $18; C4 [9632].byte $24; C5 [9633].byte $18; C4 [9634].byte $24; C5 [9635].byte $15; A3 [9636].byte $21; A4 [9637].byte $15; A3 [9638].byte $21; A4 [9639].byte $15; A3 [963a].byte $21; A4 [963b].byte $8c; Note length: 12 [963c].byte $15; A3 [963d].byte $16; A#3 [963e].byte $17; B3 [963f].byte $18; C4 [9640].byte $19; C#4 [9641].byte $86; Note length: 6 [9642].byte $19; C#4 [9643].byte $25; C#5 [9644].byte $19; C#4 [9645].byte $25; C#5 [9646].byte $1c; E4 [9647].byte $28; E5 [9648].byte $1c; E4 [9649].byte $28; E5 [964a].byte $20; G#4 [964b].byte $2c; G#5 [964c].byte $20; G#4 [964d].byte $2c; G#5 [964e].byte $1c; E4 [964f].byte $28; E5 [9650].byte $1c; E4 [9651].byte $28; E5 [9652].byte $19; C#4 [9653].byte $25; C#5 [9654].byte $19; C#4 [9655].byte $25; C#5 [9656].byte $19; C#4 [9657].byte $25; C#5 [9658].byte $8c; Note length: 12 [9659].byte $19; C#4 [965a].byte $18; C4 [965b].byte $17; B3 [965c].byte $16; A#3 [965d].byte $15; A3 [965e].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [965f].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_DAYBREAK [$PRG5::8f09] ;
[9660]MSCRIPT_DAYBREAK_NOISE:; [$9660] [9660].byte MSCRIPT_OP_END; Op: End [9661].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for Apolune. ; ; XREFS: ; MSCRIPTS_APOLUNE [$PRG5::8f0b] ;============================================================================
; ; XREFS: ; MSCRIPTS_APOLUNE [$PRG5::8f0b] ;
[9662]MSCRIPT_APOLUNE_SQ1:; [$9662] [9662].byte $e0; Note length: 96 [9663].byte $00; Rest [9664].byte $00; Rest [9665].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9666].word @_subroutine; '- $96C3 [9668].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9669].word @_subroutine; '- $96C3 [966b].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [966c].byte $00; '- Reduce volume by 0 [966d].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [966e].byte $90; '- Duty cycle 2 Constant volume/envelope [966f].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9670].byte $00; '- Mode 0: Linear decay [9671].byte $8c; Note length: 12 [9672].byte $32; D4 [9673].byte $34; E4 [9674].byte $36; F#4 [9675].byte $37; G4 [9676].byte $86; Note length: 6 [9677].byte $39; A4 [9678].byte $00; Rest [9679].byte $98; Note length: 24 [967a].byte $3e; D5 [967b].byte $8c; Note length: 12 [967c].byte $39; A4 [967d].byte $98; Note length: 24 [967e].byte $3c; C5 [967f].byte $8c; Note length: 12 [9680].byte $39; A4 [9681].byte $98; Note length: 24 [9682].byte $35; F4 [9683].byte $8c; Note length: 12 [9684].byte $37; G4 [9685].byte $98; Note length: 24 [9686].byte $39; A4 [9687].byte $40; E5 [9688].byte $8c; Note length: 12 [9689].byte $3d; C#5 [968a].byte $98; Note length: 24 [968b].byte $39; A4 [968c].byte $8c; Note length: 12 [968d].byte $3b; B4 [968e].byte $98; Note length: 24 [968f].byte $3d; C#5 [9690].byte $3e; D5 [9691].byte $8c; Note length: 12 [9692].byte $3b; B4 [9693].byte $98; Note length: 24 [9694].byte $37; G4 [9695].byte $8c; Note length: 12 [9696].byte $39; A4 [9697].byte $98; Note length: 24 [9698].byte $3b; B4 [9699].byte $8c; Note length: 12 [969a].byte $32; D4 [969b].byte $34; E4 [969c].byte $36; F#4 [969d].byte $37; G4 [969e].byte $86; Note length: 6 [969f].byte $39; A4 [96a0].byte $00; Rest [96a1].byte $98; Note length: 24 [96a2].byte $3e; D5 [96a3].byte $8c; Note length: 12 [96a4].byte $39; A4 [96a5].byte $98; Note length: 24 [96a6].byte $3c; C5 [96a7].byte $8c; Note length: 12 [96a8].byte $39; A4 [96a9].byte $98; Note length: 24 [96aa].byte $35; F4 [96ab].byte $8c; Note length: 12 [96ac].byte $37; G4 [96ad].byte $98; Note length: 24 [96ae].byte $39; A4 [96af].byte $40; E5 [96b0].byte $8c; Note length: 12 [96b1].byte $3d; C#5 [96b2].byte $98; Note length: 24 [96b3].byte $39; A4 [96b4].byte $8c; Note length: 12 [96b5].byte $3b; B4 [96b6].byte $98; Note length: 24 [96b7].byte $3d; C#5 [96b8].byte $3e; D5 [96b9].byte $8c; Note length: 12 [96ba].byte $3b; B4 [96bb].byte $98; Note length: 24 [96bc].byte $37; G4 [96bd].byte $8c; Note length: 12 [96be].byte $39; A4 [96bf].byte $98; Note length: 24 [96c0].byte $3b; B4 [96c1].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [96c2].byte MSCRIPT_OP_END; Op: End [96c3]@_subroutine:; [$96c3] [96c3].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [96c4].byte $02; '- Reduce volume by 2 [96c5].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [96c6].byte $d0; '- Duty cycle 3 Constant volume/envelope [96c7].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [96c8].byte $01; '- Mode 1: Curve but held [96c9].byte $8c; Note length: 12 [96ca].byte $39; A4 [96cb].byte $38; G#4 [96cc].byte $39; A4 [96cd].byte $b0; Note length: 48 [96ce].byte $3c; C5 [96cf].byte $8c; Note length: 12 [96d0].byte $39; A4 [96d1].byte $98; Note length: 24 [96d2].byte $3a; A#4 [96d3].byte $8c; Note length: 12 [96d4].byte $3a; A#4 [96d5].byte $bc; Note length: 60 [96d6].byte $3e; D5 [96d7].byte $98; Note length: 24 [96d8].byte $38; G#4 [96d9].byte $41; F5 [96da].byte $40; E5 [96db].byte $3e; D5 [96dc].byte $8c; Note length: 12 [96dd].byte $3e; D5 [96de].byte $3d; C#5 [96df].byte $00; Rest [96e0].byte $bc; Note length: 60 [96e1].byte $40; E5 [96e2].byte $8c; Note length: 12 [96e3].byte $39; A4 [96e4].byte $38; G#4 [96e5].byte $39; A4 [96e6].byte $b0; Note length: 48 [96e7].byte $3c; C5 [96e8].byte $8c; Note length: 12 [96e9].byte $39; A4 [96ea].byte $98; Note length: 24 [96eb].byte $3a; A#4 [96ec].byte $8c; Note length: 12 [96ed].byte $3a; A#4 [96ee].byte $bc; Note length: 60 [96ef].byte $3e; D5 [96f0].byte $98; Note length: 24 [96f1].byte $38; G#4 [96f2].byte $41; F5 [96f3].byte $40; E5 [96f4].byte $3e; D5 [96f5].byte $8c; Note length: 12 [96f6].byte $3e; D5 [96f7].byte $3d; C#5 [96f8].byte $00; Rest [96f9].byte $bc; Note length: 60 [96fa].byte $40; E5 [96fb].byte $b0; Note length: 48 [96fc].byte $41; F5 [96fd].byte $98; Note length: 24 [96fe].byte $40; E5 [96ff].byte $3e; D5 [9700].byte $b0; Note length: 48 [9701].byte $3c; C5 [9702].byte $98; Note length: 24 [9703].byte $3b; B4 [9704].byte $39; A4 [9705].byte $c8; Note length: 72 [9706].byte $37; G4 [9707].byte $8c; Note length: 12 [9708].byte $34; E4 [9709].byte $ec; Note length: 108 [970a].byte $39; A4 [970b].byte $b0; Note length: 48 [970c].byte $41; F5 [970d].byte $98; Note length: 24 [970e].byte $40; E5 [970f].byte $3e; D5 [9710].byte $b0; Note length: 48 [9711].byte $3c; C5 [9712].byte $98; Note length: 24 [9713].byte $3b; B4 [9714].byte $39; A4 [9715].byte $c8; Note length: 72 [9716].byte $37; G4 [9717].byte $8c; Note length: 12 [9718].byte $34; E4 [9719].byte $ec; Note length: 108 [971a].byte $39; A4 [971b].byte $f5; Op: Return from subroutine
; ; XREFS: ; MSCRIPTS_APOLUNE [$PRG5::8f0d] ;
[971c]MSCRIPT_APOLUNE_SQ2:; [$971c] [971c].byte $e0; Note length: 96 [971d].byte $00; Rest [971e].byte $00; Rest [971f].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9720].word @_subroutine; '- $97A6 [9722].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9723].word @_subroutine; '- $97A6 [9725].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9726].byte $02; '- Reduce volume by 2 [9727].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9728].byte $50; '- Duty cycle 1 Constant volume/envelope [9729].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [972a].byte $00; '- Mode 0: Linear decay [972b].byte $86; Note length: 6 [972c].byte $00; Rest [972d].byte $8c; Note length: 12 [972e].byte $32; A9 [972f].byte $34; A9 [9730].byte $36; A9 [9731].byte $86; Note length: 6 [9732].byte $37; A9 [9733].byte $36; A9 [9734].byte $00; Rest [9735].byte $98; Note length: 24 [9736].byte $39; A9 [9737].byte $8c; Note length: 12 [9738].byte $36; A9 [9739].byte $86; Note length: 6 [973a].byte $39; A9 [973b].byte $39; A9 [973c].byte $39; A9 [973d].byte $00; Rest [973e].byte $8c; Note length: 12 [973f].byte $35; A9 [9740].byte $98; Note length: 24 [9741].byte $2d; A9 [9742].byte $8c; Note length: 12 [9743].byte $30; A9 [9744].byte $86; Note length: 6 [9745].byte $35; A9 [9746].byte $34; A9 [9747].byte $8c; Note length: 12 [9748].byte $35; A9 [9749].byte $86; Note length: 6 [974a].byte $3d; A9 [974b].byte $31; A9 [974c].byte $3d; A9 [974d].byte $00; Rest [974e].byte $8c; Note length: 12 [974f].byte $39; A9 [9750].byte $98; Note length: 24 [9751].byte $31; A9 [9752].byte $8c; Note length: 12 [9753].byte $34; A9 [9754].byte $86; Note length: 6 [9755].byte $39; A9 [9756].byte $34; A9 [9757].byte $31; A9 [9758].byte $2d; A9 [9759].byte $3b; A9 [975a].byte $2f; A9 [975b].byte $3b; A9 [975c].byte $00; Rest [975d].byte $37; A9 [975e].byte $00; Rest [975f].byte $98; Note length: 24 [9760].byte $2f; A9 [9761].byte $8c; Note length: 12 [9762].byte $32; A9 [9763].byte $86; Note length: 6 [9764].byte $37; A9 [9765].byte $32; A9 [9766].byte $2f; A9 [9767].byte $2b; A9 [9768].byte $00; Rest [9769].byte $8c; Note length: 12 [976a].byte $32; A9 [976b].byte $34; A9 [976c].byte $36; A9 [976d].byte $86; Note length: 6 [976e].byte $37; A9 [976f].byte $36; A9 [9770].byte $00; Rest [9771].byte $98; Note length: 24 [9772].byte $39; A9 [9773].byte $8c; Note length: 12 [9774].byte $36; A9 [9775].byte $86; Note length: 6 [9776].byte $39; A9 [9777].byte $39; A9 [9778].byte $39; A9 [9779].byte $00; Rest [977a].byte $8c; Note length: 12 [977b].byte $35; A9 [977c].byte $98; Note length: 24 [977d].byte $2d; A9 [977e].byte $8c; Note length: 12 [977f].byte $30; A9 [9780].byte $86; Note length: 6 [9781].byte $35; A9 [9782].byte $34; A9 [9783].byte $8c; Note length: 12 [9784].byte $35; A9 [9785].byte $86; Note length: 6 [9786].byte $3d; A9 [9787].byte $31; A9 [9788].byte $3d; A9 [9789].byte $00; Rest [978a].byte $8c; Note length: 12 [978b].byte $39; A9 [978c].byte $98; Note length: 24 [978d].byte $31; A9 [978e].byte $8c; Note length: 12 [978f].byte $34; A9 [9790].byte $86; Note length: 6 [9791].byte $39; A9 [9792].byte $34; A9 [9793].byte $31; A9 [9794].byte $2d; A9 [9795].byte $3b; A9 [9796].byte $2f; A9 [9797].byte $3b; A9 [9798].byte $00; Rest [9799].byte $37; A9 [979a].byte $00; Rest [979b].byte $98; Note length: 24 [979c].byte $2f; A9 [979d].byte $8c; Note length: 12 [979e].byte $32; A9 [979f].byte $86; Note length: 6 [97a0].byte $37; A9 [97a1].byte $32; A9 [97a2].byte $2f; A9 [97a3].byte $2b; A9 [97a4].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [97a5].byte MSCRIPT_OP_END; Op: End [97a6]@_subroutine:; [$97a6] [97a6].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [97a7].byte $04; '- Reduce volume by 4 [97a8].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [97a9].byte $90; '- Duty cycle 2 Constant volume/envelope [97aa].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [97ab].byte $01; '- Mode 1: Curve but held [97ac].byte $8c; Note length: 12 [97ad].byte $30; A9 [97ae].byte $2f; A9 [97af].byte $30; A9 [97b0].byte $b0; Note length: 48 [97b1].byte $34; A9 [97b2].byte $8c; Note length: 12 [97b3].byte $30; A9 [97b4].byte $98; Note length: 24 [97b5].byte $32; A9 [97b6].byte $8c; Note length: 12 [97b7].byte $32; A9 [97b8].byte $98; Note length: 24 [97b9].byte $3a; A9 [97ba].byte $8c; Note length: 12 [97bb].byte $35; A9 [97bc].byte $32; A9 [97bd].byte $35; A9 [97be].byte $98; Note length: 24 [97bf].byte $34; A9 [97c0].byte $3e; A9 [97c1].byte $3c; A9 [97c2].byte $3b; A9 [97c3].byte $8c; Note length: 12 [97c4].byte $39; A9 [97c5].byte $39; A9 [97c6].byte $00; Rest [97c7].byte $34; A9 [97c8].byte $31; A9 [97c9].byte $86; Note length: 6 [97ca].byte $34; A9 [97cb].byte $00; Rest [97cc].byte $8c; Note length: 12 [97cd].byte $31; A9 [97ce].byte $86; Note length: 6 [97cf].byte $34; A9 [97d0].byte $00; Rest [97d1].byte $8c; Note length: 12 [97d2].byte $30; A9 [97d3].byte $2f; A9 [97d4].byte $30; A9 [97d5].byte $b0; Note length: 48 [97d6].byte $34; A9 [97d7].byte $8c; Note length: 12 [97d8].byte $30; A9 [97d9].byte $98; Note length: 24 [97da].byte $32; A9 [97db].byte $8c; Note length: 12 [97dc].byte $32; A9 [97dd].byte $98; Note length: 24 [97de].byte $3a; A9 [97df].byte $8c; Note length: 12 [97e0].byte $35; A9 [97e1].byte $32; A9 [97e2].byte $35; A9 [97e3].byte $98; Note length: 24 [97e4].byte $34; A9 [97e5].byte $3e; A9 [97e6].byte $3c; A9 [97e7].byte $3b; A9 [97e8].byte $8c; Note length: 12 [97e9].byte $39; A9 [97ea].byte $39; A9 [97eb].byte $00; Rest [97ec].byte $86; Note length: 6 [97ed].byte $31; A9 [97ee].byte $34; A9 [97ef].byte $39; A9 [97f0].byte $3d; A9 [97f1].byte $40; A9 [97f2].byte $45; A9 [97f3].byte $40; A9 [97f4].byte $3d; A9 [97f5].byte $39; A9 [97f6].byte $34; A9 [97f7].byte $29; A9 [97f8].byte $00; Rest [97f9].byte $2e; A9 [97fa].byte $32; A9 [97fb].byte $29; A9 [97fc].byte $00; Rest [97fd].byte $2e; A9 [97fe].byte $32; A9 [97ff].byte $28; A9 [9800].byte $2b; A9 [9801].byte $2e; A9 [9802].byte $32; A9 [9803].byte $26; A9 [9804].byte $00; Rest [9805].byte $2e; A9 [9806].byte $32; A9 [9807].byte $24; A9 [9808].byte $00; Rest [9809].byte $2d; A9 [980a].byte $30; A9 [980b].byte $24; A9 [980c].byte $00; Rest [980d].byte $2d; A9 [980e].byte $30; A9 [980f].byte $23; A9 [9810].byte $2d; A9 [9811].byte $30; A9 [9812].byte $34; A9 [9813].byte $21; A9 [9814].byte $29; A9 [9815].byte $2d; A9 [9816].byte $30; A9 [9817].byte $1f; A9 [9818].byte $28; A9 [9819].byte $2b; A9 [981a].byte $2f; A9 [981b].byte $00; Rest [981c].byte $28; A9 [981d].byte $2b; A9 [981e].byte $2f; A9 [981f].byte $1f; A9 [9820].byte $28; A9 [9821].byte $2b; A9 [9822].byte $2f; A9 [9823].byte $28; A9 [9824].byte $00; Rest [9825].byte $8c; Note length: 12 [9826].byte $25; A9 [9827].byte $86; Note length: 6 [9828].byte $21; A9 [9829].byte $00; Rest [982a].byte $26; A9 [982b].byte $2a; A9 [982c].byte $36; A9 [982d].byte $32; A9 [982e].byte $2d; A9 [982f].byte $2a; A9 [9830].byte $21; A9 [9831].byte $00; Rest [9832].byte $26; A9 [9833].byte $2a; A9 [9834].byte $36; A9 [9835].byte $32; A9 [9836].byte $2d; A9 [9837].byte $2a; A9 [9838].byte $29; A9 [9839].byte $2b; A9 [983a].byte $2e; A9 [983b].byte $32; A9 [983c].byte $29; A9 [983d].byte $2b; A9 [983e].byte $2e; A9 [983f].byte $32; A9 [9840].byte $00; Rest [9841].byte $2b; A9 [9842].byte $2e; A9 [9843].byte $32; A9 [9844].byte $26; A9 [9845].byte $2b; A9 [9846].byte $2e; A9 [9847].byte $32; A9 [9848].byte $24; A9 [9849].byte $2d; A9 [984a].byte $30; A9 [984b].byte $34; A9 [984c].byte $24; A9 [984d].byte $2d; A9 [984e].byte $30; A9 [984f].byte $34; A9 [9850].byte $00; Rest [9851].byte $29; A9 [9852].byte $2d; A9 [9853].byte $30; A9 [9854].byte $21; A9 [9855].byte $29; A9 [9856].byte $2d; A9 [9857].byte $30; A9 [9858].byte $1f; A9 [9859].byte $28; A9 [985a].byte $2b; A9 [985b].byte $2f; A9 [985c].byte $1f; A9 [985d].byte $28; A9 [985e].byte $2b; A9 [985f].byte $2f; A9 [9860].byte $1f; A9 [9861].byte $28; A9 [9862].byte $2b; A9 [9863].byte $2f; A9 [9864].byte $28; A9 [9865].byte $00; Rest [9866].byte $8c; Note length: 12 [9867].byte $25; A9 [9868].byte $86; Note length: 6 [9869].byte $21; A9 [986a].byte $26; A9 [986b].byte $2a; A9 [986c].byte $2d; A9 [986d].byte $32; A9 [986e].byte $2d; A9 [986f].byte $2a; A9 [9870].byte $2d; A9 [9871].byte $21; A9 [9872].byte $26; A9 [9873].byte $2a; A9 [9874].byte $2d; A9 [9875].byte $32; A9 [9876].byte $2d; A9 [9877].byte $8c; Note length: 12 [9878].byte $26; A9 [9879].byte MSCRIPT_OP_RET; Op: Return from subroutine
; ; XREFS: ; MSCRIPTS_APOLUNE [$PRG5::8f0f] ;
[987a]MSCRIPT_APOLUNE_TRI:; [$987a] [987a].byte $8c; Note length: 12 [987b].byte $15; A3 [987c].byte $86; Note length: 6 [987d].byte $21; A4 [987e].byte $00; Rest [987f].byte $8c; Note length: 12 [9880].byte $10; E3 [9881].byte $86; Note length: 6 [9882].byte $1c; E4 [9883].byte $00; Rest [9884].byte $8c; Note length: 12 [9885].byte $13; G3 [9886].byte $86; Note length: 6 [9887].byte $1f; G4 [9888].byte $00; Rest [9889].byte $12; F#3 [988a].byte $12; F#3 [988b].byte $1e; F#4 [988c].byte $00; Rest [988d].byte $8c; Note length: 12 [988e].byte $15; A3 [988f].byte $86; Note length: 6 [9890].byte $21; A4 [9891].byte $00; Rest [9892].byte $8c; Note length: 12 [9893].byte $10; E3 [9894].byte $86; Note length: 6 [9895].byte $1c; E4 [9896].byte $00; Rest [9897].byte $13; G3 [9898].byte $13; G3 [9899].byte $1f; G4 [989a].byte $1f; G4 [989b].byte $12; F#3 [989c].byte $12; F#3 [989d].byte $1e; F#4 [989e].byte $00; Rest [989f].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [98a0].word @_subroutine; '- $9927 [98a2].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [98a3].word @_subroutine; '- $9927 [98a5].byte $0e; F6 [98a6].byte $00; Rest [98a7].byte $15; C7 [98a8].byte $00; Rest [98a9].byte $0e; F6 [98aa].byte $00; Rest [98ab].byte $15; C7 [98ac].byte $00; Rest [98ad].byte $0e; F6 [98ae].byte $0e; F6 [98af].byte $15; C7 [98b0].byte $00; Rest [98b1].byte $0e; F6 [98b2].byte $00; Rest [98b3].byte $15; C7 [98b4].byte $00; Rest [98b5].byte $11; G#6 [98b6].byte $00; Rest [98b7].byte $18; D#7 [98b8].byte $00; Rest [98b9].byte $11; G#6 [98ba].byte $00; Rest [98bb].byte $18; D#7 [98bc].byte $00; Rest [98bd].byte $11; G#6 [98be].byte $11; G#6 [98bf].byte $18; D#7 [98c0].byte $00; Rest [98c1].byte $11; G#6 [98c2].byte $00; Rest [98c3].byte $18; D#7 [98c4].byte $00; Rest [98c5].byte $15; C7 [98c6].byte $00; Rest [98c7].byte $21; C8 [98c8].byte $00; Rest [98c9].byte $15; C7 [98ca].byte $00; Rest [98cb].byte $1c; G7 [98cc].byte $00; Rest [98cd].byte $15; C7 [98ce].byte $15; C7 [98cf].byte $1c; G7 [98d0].byte $00; Rest [98d1].byte $15; C7 [98d2].byte $00; Rest [98d3].byte $1c; G7 [98d4].byte $1c; G7 [98d5].byte $13; A#6 [98d6].byte $00; Rest [98d7].byte $1a; F7 [98d8].byte $00; Rest [98d9].byte $13; A#6 [98da].byte $00; Rest [98db].byte $1a; F7 [98dc].byte $1f; A#7 [98dd].byte $13; A#6 [98de].byte $13; A#6 [98df].byte $1f; A#7 [98e0].byte $00; Rest [98e1].byte $13; A#6 [98e2].byte $00; Rest [98e3].byte $13; A#6 [98e4].byte $1f; A#7 [98e5].byte $0e; F6 [98e6].byte $00; Rest [98e7].byte $15; C7 [98e8].byte $00; Rest [98e9].byte $0e; F6 [98ea].byte $00; Rest [98eb].byte $15; C7 [98ec].byte $00; Rest [98ed].byte $0e; F6 [98ee].byte $0e; F6 [98ef].byte $15; C7 [98f0].byte $00; Rest [98f1].byte $0e; F6 [98f2].byte $00; Rest [98f3].byte $15; C7 [98f4].byte $00; Rest [98f5].byte $11; G#6 [98f6].byte $00; Rest [98f7].byte $18; D#7 [98f8].byte $00; Rest [98f9].byte $11; G#6 [98fa].byte $00; Rest [98fb].byte $18; D#7 [98fc].byte $00; Rest [98fd].byte $11; G#6 [98fe].byte $11; G#6 [98ff].byte $18; D#7 [9900].byte $00; Rest [9901].byte $11; G#6 [9902].byte $00; Rest [9903].byte $18; D#7 [9904].byte $00; Rest [9905].byte $15; C7 [9906].byte $00; Rest [9907].byte $21; C8 [9908].byte $00; Rest [9909].byte $15; C7 [990a].byte $00; Rest [990b].byte $1c; G7 [990c].byte $00; Rest [990d].byte $15; C7 [990e].byte $15; C7 [990f].byte $1c; G7 [9910].byte $00; Rest [9911].byte $15; C7 [9912].byte $00; Rest [9913].byte $1c; G7 [9914].byte $1c; G7 [9915].byte $13; A#6 [9916].byte $00; Rest [9917].byte $1a; F7 [9918].byte $00; Rest [9919].byte $13; A#6 [991a].byte $00; Rest [991b].byte $1a; F7 [991c].byte $1f; A#7 [991d].byte $13; A#6 [991e].byte $13; A#6 [991f].byte $1f; A#7 [9920].byte $00; Rest [9921].byte $13; A#6 [9922].byte $00; Rest [9923].byte $13; A#6 [9924].byte $1f; A#7 [9925].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9926].byte MSCRIPT_OP_END; Op: End [9927]@_subroutine:; [$9927] [9927].byte $8c; Note length: 12 [9928].byte $15; C7 [9929].byte $86; Note length: 6 [992a].byte $21; C8 [992b].byte $00; Rest [992c].byte $8c; Note length: 12 [992d].byte $15; C7 [992e].byte $86; Note length: 6 [992f].byte $21; C8 [9930].byte $00; Rest [9931].byte $8c; Note length: 12 [9932].byte $15; C7 [9933].byte $86; Note length: 6 [9934].byte $21; C8 [9935].byte $00; Rest [9936].byte $8c; Note length: 12 [9937].byte $15; C7 [9938].byte $86; Note length: 6 [9939].byte $21; C8 [993a].byte $00; Rest [993b].byte $8c; Note length: 12 [993c].byte $16; C#7 [993d].byte $86; Note length: 6 [993e].byte $22; C#8 [993f].byte $00; Rest [9940].byte $8c; Note length: 12 [9941].byte $16; C#7 [9942].byte $86; Note length: 6 [9943].byte $22; C#8 [9944].byte $00; Rest [9945].byte $8c; Note length: 12 [9946].byte $16; C#7 [9947].byte $86; Note length: 6 [9948].byte $22; C#8 [9949].byte $00; Rest [994a].byte $8c; Note length: 12 [994b].byte $16; C#7 [994c].byte $86; Note length: 6 [994d].byte $22; C#8 [994e].byte $00; Rest [994f].byte $8c; Note length: 12 [9950].byte $14; B6 [9951].byte $86; Note length: 6 [9952].byte $20; B7 [9953].byte $00; Rest [9954].byte $8c; Note length: 12 [9955].byte $14; B6 [9956].byte $86; Note length: 6 [9957].byte $20; B7 [9958].byte $00; Rest [9959].byte $8c; Note length: 12 [995a].byte $10; G6 [995b].byte $86; Note length: 6 [995c].byte $1c; G7 [995d].byte $00; Rest [995e].byte $8c; Note length: 12 [995f].byte $10; G6 [9960].byte $86; Note length: 6 [9961].byte $1c; G7 [9962].byte $00; Rest [9963].byte $8c; Note length: 12 [9964].byte $15; C7 [9965].byte $86; Note length: 6 [9966].byte $21; C8 [9967].byte $00; Rest [9968].byte $8c; Note length: 12 [9969].byte $15; C7 [996a].byte $86; Note length: 6 [996b].byte $21; C8 [996c].byte $00; Rest [996d].byte $8c; Note length: 12 [996e].byte $15; C7 [996f].byte $86; Note length: 6 [9970].byte $21; C8 [9971].byte $00; Rest [9972].byte $8c; Note length: 12 [9973].byte $15; C7 [9974].byte $86; Note length: 6 [9975].byte $21; C8 [9976].byte $00; Rest [9977].byte $8c; Note length: 12 [9978].byte $15; C7 [9979].byte $86; Note length: 6 [997a].byte $21; C8 [997b].byte $00; Rest [997c].byte $8c; Note length: 12 [997d].byte $15; C7 [997e].byte $86; Note length: 6 [997f].byte $21; C8 [9980].byte $00; Rest [9981].byte $8c; Note length: 12 [9982].byte $15; C7 [9983].byte $86; Note length: 6 [9984].byte $21; C8 [9985].byte $00; Rest [9986].byte $8c; Note length: 12 [9987].byte $15; C7 [9988].byte $86; Note length: 6 [9989].byte $21; C8 [998a].byte $00; Rest [998b].byte $8c; Note length: 12 [998c].byte $16; C#7 [998d].byte $86; Note length: 6 [998e].byte $22; C#8 [998f].byte $00; Rest [9990].byte $8c; Note length: 12 [9991].byte $16; C#7 [9992].byte $86; Note length: 6 [9993].byte $22; C#8 [9994].byte $00; Rest [9995].byte $8c; Note length: 12 [9996].byte $16; C#7 [9997].byte $86; Note length: 6 [9998].byte $22; C#8 [9999].byte $00; Rest [999a].byte $8c; Note length: 12 [999b].byte $16; C#7 [999c].byte $86; Note length: 6 [999d].byte $22; C#8 [999e].byte $00; Rest [999f].byte $8c; Note length: 12 [99a0].byte $14; B6 [99a1].byte $86; Note length: 6 [99a2].byte $20; B7 [99a3].byte $00; Rest [99a4].byte $8c; Note length: 12 [99a5].byte $14; B6 [99a6].byte $86; Note length: 6 [99a7].byte $20; B7 [99a8].byte $00; Rest [99a9].byte $8c; Note length: 12 [99aa].byte $10; G6 [99ab].byte $86; Note length: 6 [99ac].byte $1c; G7 [99ad].byte $00; Rest [99ae].byte $8c; Note length: 12 [99af].byte $10; G6 [99b0].byte $86; Note length: 6 [99b1].byte $1c; G7 [99b2].byte $00; Rest [99b3].byte $8c; Note length: 12 [99b4].byte $15; C7 [99b5].byte $86; Note length: 6 [99b6].byte $21; C8 [99b7].byte $00; Rest [99b8].byte $8c; Note length: 12 [99b9].byte $15; C7 [99ba].byte $86; Note length: 6 [99bb].byte $21; C8 [99bc].byte $00; Rest [99bd].byte $8c; Note length: 12 [99be].byte $15; C7 [99bf].byte $86; Note length: 6 [99c0].byte $21; C8 [99c1].byte $00; Rest [99c2].byte $8c; Note length: 12 [99c3].byte $15; C7 [99c4].byte $86; Note length: 6 [99c5].byte $21; C8 [99c6].byte $00; Rest [99c7].byte $13; A#6 [99c8].byte $13; A#6 [99c9].byte $13; A#6 [99ca].byte $13; A#6 [99cb].byte $13; A#6 [99cc].byte $13; A#6 [99cd].byte $13; A#6 [99ce].byte $13; A#6 [99cf].byte $13; A#6 [99d0].byte $13; A#6 [99d1].byte $13; A#6 [99d2].byte $13; A#6 [99d3].byte $13; A#6 [99d4].byte $13; A#6 [99d5].byte $13; A#6 [99d6].byte $13; A#6 [99d7].byte $11; G#6 [99d8].byte $11; G#6 [99d9].byte $11; G#6 [99da].byte $11; G#6 [99db].byte $11; G#6 [99dc].byte $11; G#6 [99dd].byte $11; G#6 [99de].byte $11; G#6 [99df].byte $11; G#6 [99e0].byte $11; G#6 [99e1].byte $11; G#6 [99e2].byte $11; G#6 [99e3].byte $11; G#6 [99e4].byte $11; G#6 [99e5].byte $11; G#6 [99e6].byte $11; G#6 [99e7].byte $10; G6 [99e8].byte $10; G6 [99e9].byte $10; G6 [99ea].byte $10; G6 [99eb].byte $10; G6 [99ec].byte $10; G6 [99ed].byte $10; G6 [99ee].byte $10; G6 [99ef].byte $10; G6 [99f0].byte $10; G6 [99f1].byte $10; G6 [99f2].byte $10; G6 [99f3].byte $10; G6 [99f4].byte $10; G6 [99f5].byte $10; G6 [99f6].byte $10; G6 [99f7].byte $0e; F6 [99f8].byte $0e; F6 [99f9].byte $0e; F6 [99fa].byte $0e; F6 [99fb].byte $0e; F6 [99fc].byte $0e; F6 [99fd].byte $0e; F6 [99fe].byte $0e; F6 [99ff].byte $0e; F6 [9a00].byte $0e; F6 [9a01].byte $0e; F6 [9a02].byte $0e; F6 [9a03].byte $0e; F6 [9a04].byte $0e; F6 [9a05].byte $0e; F6 [9a06].byte $0e; F6 [9a07].byte $13; A#6 [9a08].byte $13; A#6 [9a09].byte $13; A#6 [9a0a].byte $13; A#6 [9a0b].byte $13; A#6 [9a0c].byte $13; A#6 [9a0d].byte $13; A#6 [9a0e].byte $13; A#6 [9a0f].byte $13; A#6 [9a10].byte $13; A#6 [9a11].byte $13; A#6 [9a12].byte $13; A#6 [9a13].byte $13; A#6 [9a14].byte $13; A#6 [9a15].byte $13; A#6 [9a16].byte $13; A#6 [9a17].byte $11; G#6 [9a18].byte $11; G#6 [9a19].byte $11; G#6 [9a1a].byte $11; G#6 [9a1b].byte $11; G#6 [9a1c].byte $11; G#6 [9a1d].byte $11; G#6 [9a1e].byte $11; G#6 [9a1f].byte $11; G#6 [9a20].byte $11; G#6 [9a21].byte $11; G#6 [9a22].byte $11; G#6 [9a23].byte $11; G#6 [9a24].byte $11; G#6 [9a25].byte $11; G#6 [9a26].byte $11; G#6 [9a27].byte $10; G6 [9a28].byte $10; G6 [9a29].byte $10; G6 [9a2a].byte $10; G6 [9a2b].byte $10; G6 [9a2c].byte $10; G6 [9a2d].byte $10; G6 [9a2e].byte $10; G6 [9a2f].byte $10; G6 [9a30].byte $10; G6 [9a31].byte $10; G6 [9a32].byte $10; G6 [9a33].byte $10; G6 [9a34].byte $10; G6 [9a35].byte $10; G6 [9a36].byte $10; G6 [9a37].byte $0e; F6 [9a38].byte $0e; F6 [9a39].byte $0e; F6 [9a3a].byte $0e; F6 [9a3b].byte $0e; F6 [9a3c].byte $0e; F6 [9a3d].byte $0e; F6 [9a3e].byte $0e; F6 [9a3f].byte $0e; F6 [9a40].byte $0e; F6 [9a41].byte $0e; F6 [9a42].byte $0e; F6 [9a43].byte $0e; F6 [9a44].byte $0e; F6 [9a45].byte $0e; F6 [9a46].byte $0e; F6 [9a47].byte MSCRIPT_OP_RET; Op: Return from subroutine
; ; XREFS: ; MSCRIPTS_APOLUNE [$PRG5::8f11] ;
[9a48]MSCRIPT_APOLUNE_NOISE:; [$9a48] [9a48].byte $8c,$00,$31,$00,$31,$00,$31,$00; [$9a48] byte [9a50].byte $31,$00,$31,$00,$31,$00,$31,$86; [$9a50] byte [9a58].byte $31,$31,$8c,$31; [$9a58] byte .byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9a5d].word @_subroutine; '- $9A70 [9a5f].byte MSCRIPT_OP_JSR; Op: Jump to subroutine [9a60].word @_subroutine; '- $9A70 [9a62].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9a63].byte $08; '- 8 iterations [9a64].byte $8c,$00,$21,$00,$21,$00,$21,$00; [$9a64] byte [9a6c].byte $21; [$9a6c] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [9a6e].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9a6f].byte MSCRIPT_OP_END; Op: End [9a70]@_subroutine:; [$9a70] [9a70].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9a71].byte $08; '- 8 iterations [9a72].byte $8c,$00,$21,$00,$21,$00,$21,$00; [$9a72] byte [9a7a].byte $21; [$9a7a] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [9a7c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9a7d].byte $08; '- 8 iterations [9a7e].byte $86,$31,$00,$31,$31,$31,$00,$31; [$9a7e] byte [9a86].byte $31,$31,$00,$31,$31,$31,$00,$31; [$9a86] byte [9a8e].byte $31; [$9a8e] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [9a90].byte MSCRIPT_OP_RET; Op: Return from subroutine [9a91].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for Conflate. ; ; XREFS: ; MSCRIPTS_CONFLATE [$PRG5::8f13] ;============================================================================
; ; XREFS: ; MSCRIPTS_CONFLATE [$PRG5::8f13] ;
[9a92]MSCRIPT_CONFLATE_SQ1:; [$9a92] [9a92].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9a93].byte $02; '- Reduce volume by 2 [9a94].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9a95].byte $90; '- Duty cycle 2 Constant volume/envelope [9a96].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9a97].byte $01; '- Mode 1: Curve but held [9a98].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9a99].byte $02; '- 2 iterations [9a9a].byte $98; Note length: 24 [9a9b].byte $37; G4 [9a9c].byte $36; F#4 [9a9d].byte $a4; Note length: 36 [9a9e].byte $33; D#4 [9a9f].byte $bc; Note length: 60 [9aa0].byte $34; E4 [9aa1].byte $8c; Note length: 12 [9aa2].byte $34; E4 [9aa3].byte $37; G4 [9aa4].byte $3b; B4 [9aa5].byte $98; Note length: 24 [9aa6].byte $3e; D5 [9aa7].byte $8c; Note length: 12 [9aa8].byte $3b; B4 [9aa9].byte $37; G4 [9aaa].byte $34; E4 [9aab].byte $98; Note length: 24 [9aac].byte $3d; C#5 [9aad].byte $8c; Note length: 12 [9aae].byte $35; F4 [9aaf].byte $bc; Note length: 60 [9ab0].byte $3c; C5 [9ab1].byte $8c; Note length: 12 [9ab2].byte $39; A4 [9ab3].byte $3c; C5 [9ab4].byte $40; E5 [9ab5].byte $98; Note length: 24 [9ab6].byte $43; G5 [9ab7].byte $8c; Note length: 12 [9ab8].byte $40; E5 [9ab9].byte $3c; C5 [9aba].byte $39; A4 [9abb].byte $a4; Note length: 36 [9abc].byte $42; F#5 [9abd].byte $8c; Note length: 12 [9abe].byte $3e; D5 [9abf].byte $3a; A#4 [9ac0].byte $37; G4 [9ac1].byte $00; Rest [9ac2].byte $32; D4 [9ac3].byte $b0; Note length: 48 [9ac4].byte $35; F4 [9ac5].byte $a4; Note length: 36 [9ac6].byte $33; D#4 [9ac7].byte $8c; Note length: 12 [9ac8].byte $32; D4 [9ac9].byte $b0; Note length: 48 [9aca].byte $00; Rest [9acb].byte $8c; Note length: 12 [9acc].byte $2b; G3 [9acd].byte $2e; A#3 [9ace].byte $32; D4 [9acf].byte $36; F#4 [9ad0].byte $b0; Note length: 48 [9ad1].byte $00; Rest [9ad2].byte $fc; Op: End loop [9ad3].byte $00; Rest [9ad4].byte $98; Note length: 24 [9ad5].byte $3b; B4 [9ad6].byte $8c; Note length: 12 [9ad7].byte $3c; C5 [9ad8].byte $3e; D5 [9ad9].byte $00; Rest [9ada].byte $34; E4 [9adb].byte $00; Rest [9adc].byte $00; Rest [9add].byte $3b; B4 [9ade].byte $3b; B4 [9adf].byte $3c; C5 [9ae0].byte $3e; D5 [9ae1].byte $00; Rest [9ae2].byte $3b; B4 [9ae3].byte $34; E4 [9ae4].byte $37; G4 [9ae5].byte $39; A4 [9ae6].byte $3f; D#5 [9ae7].byte $00; Rest [9ae8].byte $b0; Note length: 48 [9ae9].byte $3f; D#5 [9aea].byte $8c; Note length: 12 [9aeb].byte $39; A4 [9aec].byte $3f; D#5 [9aed].byte $41; F5 [9aee].byte $3f; D#5 [9aef].byte $2d; A3 [9af0].byte $2d; A3 [9af1].byte $33; D#4 [9af2].byte $00; Rest [9af3].byte $86; Note length: 6 [9af4].byte $3f; D#5 [9af5].byte $40; E5 [9af6].byte $98; Note length: 24 [9af7].byte $41; F5 [9af8].byte $8c; Note length: 12 [9af9].byte $3d; C#5 [9afa].byte $3a; A#4 [9afb].byte $00; Rest [9afc].byte $35; F4 [9afd].byte $3a; A#4 [9afe].byte $3d; C#5 [9aff].byte $41; F5 [9b00].byte $41; F5 [9b01].byte $3d; C#5 [9b02].byte $3a; A#4 [9b03].byte $00; Rest [9b04].byte $3a; A#4 [9b05].byte $3d; C#5 [9b06].byte $3a; A#4 [9b07].byte $3e; D5 [9b08].byte $3f; D#5 [9b09].byte $3e; D5 [9b0a].byte $3a; A#4 [9b0b].byte $36; F#4 [9b0c].byte $33; D#4 [9b0d].byte $36; F#4 [9b0e].byte $33; D#4 [9b0f].byte $32; D4 [9b10].byte $32; D4 [9b11].byte $32; D4 [9b12].byte $00; Rest [9b13].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9b14].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_CONFLATE [$PRG5::8f15] ;
[9b15]MSCRIPT_CONFLATE_SQ2:; [$9b15] [9b15].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9b16].byte $02; '- Reduce volume by 2 [9b17].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9b18].byte $90; '- Duty cycle 2 Constant volume/envelope [9b19].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9b1a].byte $02; '- 2 iterations [9b1b].byte $98; Note length: 24 [9b1c].byte $2f; B3 [9b1d].byte $2d; A3 [9b1e].byte $a4; Note length: 36 [9b1f].byte $2a; F#3 [9b20].byte $8c; Note length: 12 [9b21].byte $2b; G3 [9b22].byte $00; Rest [9b23].byte $2b; G3 [9b24].byte $22; A#2 [9b25].byte $23; B2 [9b26].byte $2b; G3 [9b27].byte $2f; B3 [9b28].byte $34; E4 [9b29].byte $98; Note length: 24 [9b2a].byte $37; G4 [9b2b].byte $8c; Note length: 12 [9b2c].byte $34; E4 [9b2d].byte $2f; B3 [9b2e].byte $2b; G3 [9b2f].byte $98; Note length: 24 [9b30].byte $39; A4 [9b31].byte $8c; Note length: 12 [9b32].byte $2d; A3 [9b33].byte $39; A4 [9b34].byte $00; Rest [9b35].byte $39; A4 [9b36].byte $2c; G#3 [9b37].byte $2d; A3 [9b38].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9b39].byte $01; '- 1 [9b3a].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9b3b].byte $05; '- Reduce volume by 5 [9b3c].byte $86; Note length: 6 [9b3d].byte $00; Rest [9b3e].byte $8c; Note length: 12 [9b3f].byte $39; A4 [9b40].byte $3c; C5 [9b41].byte $40; E5 [9b42].byte $92; Note length: 18 [9b43].byte $43; G5 [9b44].byte $8c; Note length: 12 [9b45].byte $3c; C5 [9b46].byte $39; A4 [9b47].byte $34; E4 [9b48].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9b49].byte $00; '- 0 [9b4a].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9b4b].byte $02; '- Reduce volume by 2 [9b4c].byte $a4; Note length: 36 [9b4d].byte $3e; D5 [9b4e].byte $8c; Note length: 12 [9b4f].byte $3a; A#4 [9b50].byte $37; G4 [9b51].byte $32; D4 [9b52].byte $00; Rest [9b53].byte $2e; A#3 [9b54].byte $86; Note length: 6 [9b55].byte $27; D#3 [9b56].byte $2b; G3 [9b57].byte $2e; A#3 [9b58].byte $32; D4 [9b59].byte $35; F4 [9b5a].byte $32; D4 [9b5b].byte $2e; A#3 [9b5c].byte $2b; G3 [9b5d].byte $25; C#3 [9b5e].byte $29; F3 [9b5f].byte $2c; G#3 [9b60].byte $30; C4 [9b61].byte $33; D#4 [9b62].byte $30; C4 [9b63].byte $8c; Note length: 12 [9b64].byte $2f; B3 [9b65].byte $b0; Note length: 48 [9b66].byte $00; Rest [9b67].byte $8c; Note length: 12 [9b68].byte $32; D4 [9b69].byte $37; G4 [9b6a].byte $3a; A#4 [9b6b].byte $3e; D5 [9b6c].byte $b0; Note length: 48 [9b6d].byte $00; Rest [9b6e].byte $fc; Op: End loop [9b6f].byte $00; Rest [9b70].byte $98; Note length: 24 [9b71].byte $37; G4 [9b72].byte $8c; Note length: 12 [9b73].byte $39; A4 [9b74].byte $3b; B4 [9b75].byte $00; Rest [9b76].byte $28; E3 [9b77].byte $00; Rest [9b78].byte $00; Rest [9b79].byte $37; G4 [9b7a].byte $37; G4 [9b7b].byte $39; A4 [9b7c].byte $3b; B4 [9b7d].byte $00; Rest [9b7e].byte $37; G4 [9b7f].byte $2b; G3 [9b80].byte $2f; B3 [9b81].byte $30; C4 [9b82].byte $39; A4 [9b83].byte $00; Rest [9b84].byte $98; Note length: 24 [9b85].byte $39; A4 [9b86].byte $8c; Note length: 12 [9b87].byte $35; F4 [9b88].byte $30; C4 [9b89].byte $35; F4 [9b8a].byte $39; A4 [9b8b].byte $3c; C5 [9b8c].byte $39; A4 [9b8d].byte $29; F3 [9b8e].byte $29; F3 [9b8f].byte $2d; A3 [9b90].byte $00; Rest [9b91].byte $86; Note length: 6 [9b92].byte $3b; B4 [9b93].byte $3c; C5 [9b94].byte $98; Note length: 24 [9b95].byte $3d; C#5 [9b96].byte $8c; Note length: 12 [9b97].byte $3a; A#4 [9b98].byte $35; F4 [9b99].byte $00; Rest [9b9a].byte $31; C#4 [9b9b].byte $35; F4 [9b9c].byte $3a; A#4 [9b9d].byte $3d; C#5 [9b9e].byte $3d; C#5 [9b9f].byte $3a; A#4 [9ba0].byte $35; F4 [9ba1].byte $00; Rest [9ba2].byte $31; C#4 [9ba3].byte $35; F4 [9ba4].byte $31; C#4 [9ba5].byte $86; Note length: 6 [9ba6].byte $3a; A#4 [9ba7].byte $32; D4 [9ba8].byte $3a; A#4 [9ba9].byte $33; D#4 [9baa].byte $3a; A#4 [9bab].byte $32; D4 [9bac].byte $36; F#4 [9bad].byte $2e; A#3 [9bae].byte $33; D#4 [9baf].byte $2a; F#3 [9bb0].byte $2e; A#3 [9bb1].byte $27; D#3 [9bb2].byte $2a; F#3 [9bb3].byte $22; A#2 [9bb4].byte $2e; A#3 [9bb5].byte $27; D#3 [9bb6].byte $8c; Note length: 12 [9bb7].byte $2b; G3 [9bb8].byte $2b; G3 [9bb9].byte $2a; F#3 [9bba].byte $00; Rest [9bbb].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9bbc].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_CONFLATE [$PRG5::8f17] ;
[9bbd]MSCRIPT_CONFLATE_TRI:; [$9bbd] [9bbd].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9bbe].byte $02; '- 2 iterations [9bbf].byte $b0; Note length: 48 [9bc0].byte $00; Rest [9bc1].byte $8c; Note length: 12 [9bc2].byte $10; E3 [9bc3].byte $10; E3 [9bc4].byte $13; G3 [9bc5].byte $10; E3 [9bc6].byte $17; B3 [9bc7].byte $17; B3 [9bc8].byte $10; E3 [9bc9].byte $86; Note length: 6 [9bca].byte $1c; E4 [9bcb].byte $10; E3 [9bcc].byte $8c; Note length: 12 [9bcd].byte $10; E3 [9bce].byte $10; E3 [9bcf].byte $13; G3 [9bd0].byte $10; E3 [9bd1].byte $17; B3 [9bd2].byte $17; B3 [9bd3].byte $10; E3 [9bd4].byte $86; Note length: 6 [9bd5].byte $1c; E4 [9bd6].byte $10; E3 [9bd7].byte $8c; Note length: 12 [9bd8].byte $11; F3 [9bd9].byte $11; F3 [9bda].byte $15; A3 [9bdb].byte $11; F3 [9bdc].byte $18; C4 [9bdd].byte $18; C4 [9bde].byte $11; F3 [9bdf].byte $86; Note length: 6 [9be0].byte $1d; F4 [9be1].byte $11; F3 [9be2].byte $8c; Note length: 12 [9be3].byte $15; A3 [9be4].byte $18; C4 [9be5].byte $1c; E4 [9be6].byte $98; Note length: 24 [9be7].byte $1f; G4 [9be8].byte $8c; Note length: 12 [9be9].byte $1c; E4 [9bea].byte $15; A3 [9beb].byte $86; Note length: 6 [9bec].byte $21; A4 [9bed].byte $15; A3 [9bee].byte $8c; Note length: 12 [9bef].byte $13; G3 [9bf0].byte $13; G3 [9bf1].byte $16; A#3 [9bf2].byte $13; G3 [9bf3].byte $1a; D4 [9bf4].byte $1a; D4 [9bf5].byte $13; G3 [9bf6].byte $86; Note length: 6 [9bf7].byte $1f; G4 [9bf8].byte $13; G3 [9bf9].byte $8c; Note length: 12 [9bfa].byte $0f; D#3 [9bfb].byte $0f; D#3 [9bfc].byte $16; A#3 [9bfd].byte $86; Note length: 6 [9bfe].byte $1b; D#4 [9bff].byte $0f; D#3 [9c00].byte $8c; Note length: 12 [9c01].byte $0d; C#3 [9c02].byte $0d; C#3 [9c03].byte $14; G#3 [9c04].byte $86; Note length: 6 [9c05].byte $19; C#4 [9c06].byte $0d; C#3 [9c07].byte $a4; Note length: 36 [9c08].byte $13; G3 [9c09].byte $86; Note length: 6 [9c0a].byte $14; G#3 [9c0b].byte $15; A3 [9c0c].byte $8c; Note length: 12 [9c0d].byte $16; A#3 [9c0e].byte $1a; D4 [9c0f].byte $1f; G4 [9c10].byte $13; G3 [9c11].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9c12].byte $01; '- 1 loop [9c13].byte $b0; Note length: 48 [9c14].byte $00; Rest [9c15].byte MSCRIPT_OP_END_LOOP; Op: End loop [9c16].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9c17].byte $02; '- 2 loops [9c18].byte $8c; Note length: 12 [9c19].byte $00; Rest [9c1a].byte $1f; G4 [9c1b].byte $1d; F4 [9c1c].byte $1b; D#4 [9c1d].byte $1a; D4 [9c1e].byte $16; A#3 [9c1f].byte $13; G3 [9c20].byte $14; G#3 [9c21].byte $15; A3 [9c22].byte $1c; E4 [9c23].byte $23; B4 [9c24].byte $1f; G4 [9c25].byte $21; A4 [9c26].byte $1c; E4 [9c27].byte $00; Rest [9c28].byte $13; G3 [9c29].byte $15; A3 [9c2a].byte $1c; E4 [9c2b].byte $23; B4 [9c2c].byte $1f; G4 [9c2d].byte $21; A4 [9c2e].byte $13; G3 [9c2f].byte $15; A3 [9c30].byte $10; E3 [9c31].byte $11; F3 [9c32].byte $18; C4 [9c33].byte $21; A4 [9c34].byte $1d; F4 [9c35].byte $1f; G4 [9c36].byte $1d; F4 [9c37].byte $00; Rest [9c38].byte $0c; C3 [9c39].byte $11; F3 [9c3a].byte $18; C4 [9c3b].byte $21; A4 [9c3c].byte $1f; G4 [9c3d].byte $00; Rest [9c3e].byte $1d; F4 [9c3f].byte $18; C4 [9c40].byte $11; F3 [9c41].byte $16; A#3 [9c42].byte $1d; F4 [9c43].byte $22; A#4 [9c44].byte $1d; F4 [9c45].byte $24; C5 [9c46].byte $22; A#4 [9c47].byte $00; Rest [9c48].byte $11; F3 [9c49].byte $16; A#3 [9c4a].byte $1d; F4 [9c4b].byte $24; C5 [9c4c].byte $22; A#4 [9c4d].byte $00; Rest [9c4e].byte $1d; F4 [9c4f].byte $16; A#3 [9c50].byte $11; F3 [9c51].byte $0f; D#3 [9c52].byte $16; A#3 [9c53].byte $1b; D#4 [9c54].byte $16; A#3 [9c55].byte $1d; F4 [9c56].byte $1b; D#4 [9c57].byte $16; A#3 [9c58].byte $0f; D#3 [9c59].byte $0e; D3 [9c5a].byte $0e; D3 [9c5b].byte $0e; D3 [9c5c].byte $00; Rest [9c5d].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9c5e].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_CONFLATE [$PRG5::8f19] ;
[9c5f]MSCRIPT_CONFLATE_NOISE:; [$9c5f] [9c5f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9c60].byte $02; '- 2 iterations [9c61].byte $86,$31,$00,$00,$00,$31,$00,$00; [$9c61] byte [9c69].byte $00,$86,$31,$00,$31,$00,$8c,$21; [$9c69] byte [9c71].byte $21,$86,$31,$00,$31,$00,$8c,$21; [$9c71] byte [9c79].byte $86,$31,$00,$31,$00,$31,$00,$8c; [$9c79] byte [9c81].byte $21,$21,$86,$31,$00,$31,$00,$8c; [$9c81] byte [9c89].byte $21,$86,$31,$00,$31,$00,$31,$00; [$9c89] byte [9c91].byte $8c,$21,$21,$86,$31,$00,$31,$00; [$9c91] byte [9c99].byte $8c,$21,$21,$86,$31,$00,$31,$00; [$9c99] byte [9ca1].byte $31,$00,$31,$00,$31,$00,$8c,$21; [$9ca1] byte [9ca9].byte $21,$86,$21,$21,$31,$00,$31,$00; [$9ca9] byte [9cb1].byte $8c,$21,$21,$86,$31,$00,$31,$00; [$9cb1] byte [9cb9].byte $8c,$21,$86,$31,$00,$31,$00,$31; [$9cb9] byte [9cc1].byte $00,$8c,$21,$86,$31,$00,$31,$00; [$9cc1] byte [9cc9].byte $8c,$21,$86,$31,$00,$8c,$21,$86; [$9cc9] byte [9cd1].byte $31,$00,$00,$00,$31,$00,$00,$00; [$9cd1] byte [9cd9].byte $8c,$21,$21,$21,$21; [$9cd9] byte .byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9cdf].byte $01; '- 1 loop [9ce0].byte $8c,$00,$86,$31,$31,$8c,$21,$00; [$9ce0] byte [9ce8].byte MSCRIPT_OP_END_LOOP; Op: End loop [9ce9].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [9cea].byte $02; '- 2 loops [9ceb].byte $b0,$00,$8c,$00,$31,$86,$31,$31; [$9ceb] byte [9cf3].byte $31,$00,$8c,$00,$00,$31,$00,$00; [$9cf3] byte [9cfb].byte $31,$00,$00,$00,$00,$31,$00,$00; [$9cfb] byte [9d03].byte $31,$00,$00,$00,$00,$31,$00,$00; [$9d03] byte [9d0b].byte $31,$00,$00,$00,$00,$31,$00,$00; [$9d0b] byte [9d13].byte $31,$00,$86,$31,$31,$8c,$00,$00; [$9d13] byte [9d1b].byte $31,$00,$00,$31,$00,$00,$00,$00; [$9d1b] byte [9d23].byte $31,$00,$00,$31,$00,$00,$00,$00; [$9d23] byte [9d2b].byte $31,$00,$00,$31,$31,$00,$31,$31; [$9d2b] byte [9d33].byte $31,$00; [$9d33] byte .byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9d36].byte MSCRIPT_OP_END; Op: End [9d37].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for Forepaw. ; ; XREFS: ; MSCRIPTS_FOREPAW [$PRG5::8f1b] ;============================================================================
; ; XREFS: ; MSCRIPTS_FOREPAW [$PRG5::8f1b] ;
[9d38]MSCRIPT_FOREPAW_SQ1:; [$9d38] [9d38].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9d39].byte $03; '- Reduce volume by 3 [9d3a].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9d3b].byte $50; '- Duty cycle 1 Constant volume/envelope [9d3c].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9d3d].byte $00; '- Mode 0: Linear decay [9d3e].byte $90; Note length: 16 [9d3f].byte $1f; G2 [9d40].byte $22; A#2 [9d41].byte $2a; F#3 [9d42].byte $26; D3 [9d43].byte $1f; G2 [9d44].byte $22; A#2 [9d45].byte $2a; F#3 [9d46].byte $26; D3 [9d47].byte $1f; G2 [9d48].byte $22; A#2 [9d49].byte $2a; F#3 [9d4a].byte $26; D3 [9d4b].byte $1f; G2 [9d4c].byte $22; A#2 [9d4d].byte $2a; F#3 [9d4e].byte $26; D3 [9d4f].byte MSCRIPT_OP_PUSH_ADDR; Op: Save address [9d50].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9d51].byte $02; '- 2 iterations [9d52].byte $90; Note length: 16 [9d53].byte $1f; G2 [9d54].byte $22; A#2 [9d55].byte $2a; F#3 [9d56].byte $26; D3 [9d57].byte $1f; G2 [9d58].byte $22; A#2 [9d59].byte $2a; F#3 [9d5a].byte $26; D3 [9d5b].byte $1f; G2 [9d5c].byte $22; A#2 [9d5d].byte $2a; F#3 [9d5e].byte $26; D3 [9d5f].byte $1f; G2 [9d60].byte $22; A#2 [9d61].byte $2a; F#3 [9d62].byte $26; D3 [9d63].byte $1f; G2 [9d64].byte $22; A#2 [9d65].byte $2a; F#3 [9d66].byte $26; D3 [9d67].byte $1f; G2 [9d68].byte $22; A#2 [9d69].byte $2a; F#3 [9d6a].byte $26; D3 [9d6b].byte $1f; G2 [9d6c].byte $22; A#2 [9d6d].byte $2a; F#3 [9d6e].byte $26; D3 [9d6f].byte $1f; G2 [9d70].byte $22; A#2 [9d71].byte $2a; F#3 [9d72].byte $26; D3 [9d73].byte MSCRIPT_OP_END_LOOP; Op: End loop [9d74].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9d75].byte $02; '- 2 iterations [9d76].byte $a0; Note length: 32 [9d77].byte $32; D4 [9d78].byte $33; D#4 [9d79].byte $c0; Note length: 64 [9d7a].byte $38; G#4 [9d7b].byte $a0; Note length: 32 [9d7c].byte $36; F#4 [9d7d].byte $37; G4 [9d7e].byte $c0; Note length: 64 [9d7f].byte $3e; D5 [9d80].byte $a0; Note length: 32 [9d81].byte $3d; C#5 [9d82].byte $39; A4 [9d83].byte $3c; C5 [9d84].byte $3b; B4 [9d85].byte $c0; Note length: 64 [9d86].byte $37; G4 [9d87].byte $32; D4 [9d88].byte MSCRIPT_OP_END_LOOP; Op: End loop [9d89].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9d8a].byte $02; '- 2 iterations [9d8b].byte $90; Note length: 16 [9d8c].byte $26; D3 [9d8d].byte $29; F3 [9d8e].byte $2c; G#3 [9d8f].byte $34; E4 [9d90].byte $2c; G#3 [9d91].byte $29; F3 [9d92].byte $26; D3 [9d93].byte $29; F3 [9d94].byte $26; D3 [9d95].byte $29; F3 [9d96].byte $2c; G#3 [9d97].byte $34; E4 [9d98].byte $2c; G#3 [9d99].byte $29; F3 [9d9a].byte $26; D3 [9d9b].byte $29; F3 [9d9c].byte $2b; G3 [9d9d].byte $2e; A#3 [9d9e].byte $31; C#4 [9d9f].byte $39; A4 [9da0].byte $31; C#4 [9da1].byte $2e; A#3 [9da2].byte $2b; G3 [9da3].byte $2e; A#3 [9da4].byte $2b; G3 [9da5].byte $2e; A#3 [9da6].byte $31; C#4 [9da7].byte $39; A4 [9da8].byte $31; C#4 [9da9].byte $2e; A#3 [9daa].byte $2b; G3 [9dab].byte $25; C#3 [9dac].byte MSCRIPT_OP_END_LOOP; Op: End loop [9dad].byte MSCRIPT_OP_POP_ADDR; Op: Jump to saved address [9dae].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_FOREPAW [$PRG5::8f1d] ;
[9daf]MSCRIPT_FOREPAW_SQ2:; [$9daf] [9daf].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9db0].byte $05; '- Reduce volume by 5 [9db1].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9db2].byte $90; '- Duty cycle 2 Constant volume/envelope [9db3].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9db4].byte $00; '- Mode 0: Linear decay [9db5].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9db6].byte $02; '- 2 [9db7].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9db8].byte $11; '- Duty cycle 0 Constant volume/envelope [9db9].byte $88; Note length: 8 [9dba].byte $00; Rest [9dbb].byte $90; Note length: 16 [9dbc].byte $1f; G2 [9dbd].byte $22; A#2 [9dbe].byte $2a; F#3 [9dbf].byte $26; D3 [9dc0].byte $1f; G2 [9dc1].byte $22; A#2 [9dc2].byte $2a; F#3 [9dc3].byte $90; Note length: 16 [9dc4].byte $26; D3 [9dc5].byte $90; Note length: 16 [9dc6].byte $1f; G2 [9dc7].byte $22; A#2 [9dc8].byte $2a; F#3 [9dc9].byte $26; D3 [9dca].byte $1f; G2 [9dcb].byte $22; A#2 [9dcc].byte $2a; F#3 [9dcd].byte $88; Note length: 8 [9dce].byte $26; D3 [9dcf].byte MSCRIPT_OP_PUSH_ADDR; Op: Save address [9dd0].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9dd1].byte $02; '- 2 iterations [9dd2].byte $88; Note length: 8 [9dd3].byte $00; Rest [9dd4].byte $90; Note length: 16 [9dd5].byte $1f; G2 [9dd6].byte $22; A#2 [9dd7].byte $2a; F#3 [9dd8].byte $26; D3 [9dd9].byte $1f; G2 [9dda].byte $22; A#2 [9ddb].byte $2a; F#3 [9ddc].byte $90; Note length: 16 [9ddd].byte $26; D3 [9dde].byte $90; Note length: 16 [9ddf].byte $1f; G2 [9de0].byte $22; A#2 [9de1].byte $2a; F#3 [9de2].byte $26; D3 [9de3].byte $1f; G2 [9de4].byte $22; A#2 [9de5].byte $2a; F#3 [9de6].byte $90; Note length: 16 [9de7].byte $26; D3 [9de8].byte $90; Note length: 16 [9de9].byte $1f; G2 [9dea].byte $22; A#2 [9deb].byte $2a; F#3 [9dec].byte $26; D3 [9ded].byte $1f; G2 [9dee].byte $22; A#2 [9def].byte $2a; F#3 [9df0].byte $90; Note length: 16 [9df1].byte $26; D3 [9df2].byte $90; Note length: 16 [9df3].byte $1f; G2 [9df4].byte $22; A#2 [9df5].byte $2a; F#3 [9df6].byte $26; D3 [9df7].byte $1f; G2 [9df8].byte $22; A#2 [9df9].byte $2a; F#3 [9dfa].byte $88; Note length: 8 [9dfb].byte $26; D3 [9dfc].byte MSCRIPT_OP_END_LOOP; Op: End loop [9dfd].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9dfe].byte $02; '- 2 iterations [9dff].byte $88; Note length: 8 [9e00].byte $00; Rest [9e01].byte $32; D4 [9e02].byte $2d; A3 [9e03].byte $2a; F#3 [9e04].byte $28; E3 [9e05].byte $33; D#4 [9e06].byte $2d; A3 [9e07].byte $2a; F#3 [9e08].byte $28; E3 [9e09].byte $38; G#4 [9e0a].byte $32; D4 [9e0b].byte $2d; A3 [9e0c].byte $2a; F#3 [9e0d].byte $28; E3 [9e0e].byte $26; D3 [9e0f].byte $21; A2 [9e10].byte $1f; G2 [9e11].byte $36; F#4 [9e12].byte $32; D4 [9e13].byte $2d; A3 [9e14].byte $2a; F#3 [9e15].byte $37; G4 [9e16].byte $32; D4 [9e17].byte $2c; G#3 [9e18].byte $28; E3 [9e19].byte $3e; D5 [9e1a].byte $3b; B4 [9e1b].byte $34; E4 [9e1c].byte $2f; B3 [9e1d].byte $2a; F#3 [9e1e].byte $27; D#3 [9e1f].byte $26; D3 [9e20].byte $26; D3 [9e21].byte $3d; C#5 [9e22].byte $39; A4 [9e23].byte $36; F#4 [9e24].byte $32; D4 [9e25].byte $39; A4 [9e26].byte $36; F#4 [9e27].byte $32; D4 [9e28].byte $2d; A3 [9e29].byte $3c; C5 [9e2a].byte $39; A4 [9e2b].byte $34; E4 [9e2c].byte $2d; A3 [9e2d].byte $3b; B4 [9e2e].byte $36; F#4 [9e2f].byte $34; E4 [9e30].byte $2f; B3 [9e31].byte $37; G4 [9e32].byte $32; D4 [9e33].byte $2f; B3 [9e34].byte $2b; G3 [9e35].byte $2a; F#3 [9e36].byte $26; D3 [9e37].byte $23; B2 [9e38].byte $1f; G2 [9e39].byte $32; D4 [9e3a].byte $2f; B3 [9e3b].byte $2b; G3 [9e3c].byte $28; E3 [9e3d].byte $26; D3 [9e3e].byte $23; B2 [9e3f].byte $1f; G2 [9e40].byte MSCRIPT_OP_END_LOOP; Op: End loop [9e41].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9e42].byte $02; '- Reduce volume by 2 [9e43].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9e44].byte $02; '- 2 iterations [9e45].byte $88; Note length: 8 [9e46].byte $00; Rest [9e47].byte $90; Note length: 16 [9e48].byte $26; D3 [9e49].byte $29; F3 [9e4a].byte $2c; G#3 [9e4b].byte $34; E4 [9e4c].byte $2c; G#3 [9e4d].byte $29; F3 [9e4e].byte $26; D3 [9e4f].byte $88; Note length: 8 [9e50].byte $29; F3 [9e51].byte $29; F3 [9e52].byte $90; Note length: 16 [9e53].byte $26; D3 [9e54].byte $29; F3 [9e55].byte $2c; G#3 [9e56].byte $34; E4 [9e57].byte $2c; G#3 [9e58].byte $29; F3 [9e59].byte $26; D3 [9e5a].byte $90; Note length: 16 [9e5b].byte $29; F3 [9e5c].byte $90; Note length: 16 [9e5d].byte $2b; G3 [9e5e].byte $2e; A#3 [9e5f].byte $31; C#4 [9e60].byte $39; A4 [9e61].byte $31; C#4 [9e62].byte $2e; A#3 [9e63].byte $2b; G3 [9e64].byte $90; Note length: 16 [9e65].byte $2e; A#3 [9e66].byte $90; Note length: 16 [9e67].byte $2b; G3 [9e68].byte $2e; A#3 [9e69].byte $31; C#4 [9e6a].byte $39; A4 [9e6b].byte $31; C#4 [9e6c].byte $2e; A#3 [9e6d].byte $2b; G3 [9e6e].byte $88; Note length: 8 [9e6f].byte $25; C#3 [9e70].byte MSCRIPT_OP_END_LOOP; Op: End loop [9e71].byte MSCRIPT_OP_POP_ADDR; Op: Jump to saved address [9e72].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_FOREPAW [$PRG5::8f1f] ;
[9e73]MSCRIPT_FOREPAW_TRI:; [$9e73] [9e73].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [9e74].byte $80; '- 128 ticks [9e75].byte $00; Rest [9e76].byte $00; Rest [9e77].byte MSCRIPT_OP_PUSH_ADDR; Op: Save address [9e78].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9e79].byte $02; '- 2 iterations [9e7a].byte $90; Note length: 16 [9e7b].byte $36; F#6 [9e7c].byte $37; G6 [9e7d].byte $c0; Note length: 64 [9e7e].byte $39; A6 [9e7f].byte $90; Note length: 16 [9e80].byte $36; F#6 [9e81].byte $37; G6 [9e82].byte $c0; Note length: 64 [9e83].byte $34; E6 [9e84].byte $2d; A5 [9e85].byte $90; Note length: 16 [9e86].byte $36; F#6 [9e87].byte $37; G6 [9e88].byte $c0; Note length: 64 [9e89].byte $39; A6 [9e8a].byte $90; Note length: 16 [9e8b].byte $36; F#6 [9e8c].byte $37; G6 [9e8d].byte $34; E6 [9e8e].byte $33; D#6 [9e8f].byte $32; D6 [9e90].byte $d0; Note length: 80 [9e91].byte $2d; A5 [9e92].byte MSCRIPT_OP_END_LOOP; Op: End loop [9e93].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9e94].byte $04; '- 4 iterations [9e95].byte $88; Note length: 8 [9e96].byte $1a; D4 [9e97].byte $00; Rest [9e98].byte $a0; Note length: 32 [9e99].byte $1a; D4 [9e9a].byte $88; Note length: 8 [9e9b].byte $1a; D4 [9e9c].byte $1a; D4 [9e9d].byte $1a; D4 [9e9e].byte $00; Rest [9e9f].byte $a0; Note length: 32 [9ea0].byte $1a; D4 [9ea1].byte $88; Note length: 8 [9ea2].byte $1a; D4 [9ea3].byte $1a; D4 [9ea4].byte $1a; D4 [9ea5].byte $00; Rest [9ea6].byte $a0; Note length: 32 [9ea7].byte $1a; D4 [9ea8].byte $88; Note length: 8 [9ea9].byte $1a; D4 [9eaa].byte $1a; D4 [9eab].byte $1a; D4 [9eac].byte $00; Rest [9ead].byte $a0; Note length: 32 [9eae].byte $1a; D4 [9eaf].byte $88; Note length: 8 [9eb0].byte $1a; D4 [9eb1].byte $1a; D4 [9eb2].byte MSCRIPT_OP_END_LOOP; Op: End loop [9eb3].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9eb4].byte $02; '- 2 iterations [9eb5].byte $b0; Note length: 48 [9eb6].byte $00; Rest [9eb7].byte $88; Note length: 8 [9eb8].byte $28; E5 [9eb9].byte $20; G#4 [9eba].byte $90; Note length: 16 [9ebb].byte $1a; D4 [9ebc].byte $1d; F4 [9ebd].byte $a0; Note length: 32 [9ebe].byte $00; Rest [9ebf].byte $b0; Note length: 48 [9ec0].byte $00; Rest [9ec1].byte $88; Note length: 8 [9ec2].byte $28; E5 [9ec3].byte $20; G#4 [9ec4].byte $90; Note length: 16 [9ec5].byte $1a; D4 [9ec6].byte $1d; F4 [9ec7].byte $a0; Note length: 32 [9ec8].byte $00; Rest [9ec9].byte $b0; Note length: 48 [9eca].byte $00; Rest [9ecb].byte $88; Note length: 8 [9ecc].byte $2d; A5 [9ecd].byte $25; C#5 [9ece].byte $90; Note length: 16 [9ecf].byte $1f; G4 [9ed0].byte $22; A#4 [9ed1].byte $a0; Note length: 32 [9ed2].byte $00; Rest [9ed3].byte $b0; Note length: 48 [9ed4].byte $00; Rest [9ed5].byte $88; Note length: 8 [9ed6].byte $2d; A5 [9ed7].byte $25; C#5 [9ed8].byte $90; Note length: 16 [9ed9].byte $1f; G4 [9eda].byte $22; A#4 [9edb].byte $a0; Note length: 32 [9edc].byte $19; C#4 [9edd].byte MSCRIPT_OP_END_LOOP; Op: End loop [9ede].byte MSCRIPT_OP_POP_ADDR; Op: Jump to saved address [9edf].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_FOREPAW [$PRG5::8f21] ;
[9ee0]MSCRIPT_FOREPAW_NOISE:; [$9ee0] [9ee0].byte $ff,$ff; [$9ee0] byte
;============================================================================ ; Music for Tower. ; ; XREFS: ; MSCRIPTS_TOWER [$PRG5::8f23] ;============================================================================
; ; XREFS: ; MSCRIPTS_TOWER [$PRG5::8f23] ;
[9ee2]MSCRIPT_TOWER_SQ1:; [$9ee2] [9ee2].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9ee3].byte $02; '- Reduce volume by 2 [9ee4].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9ee5].byte $90; '- Duty cycle 2 Constant volume/envelope [9ee6].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9ee7].byte $00; '- Mode 0: Linear decay [9ee8].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9ee9].byte $02; '- 2 iterations [9eea].byte $88; Note length: 8 [9eeb].byte $00; Rest [9eec].byte $3c; C5 [9eed].byte $3b; B4 [9eee].byte $37; G4 [9eef].byte $00; Rest [9ef0].byte $00; Rest [9ef1].byte $00; Rest [9ef2].byte $00; Rest [9ef3].byte $00; Rest [9ef4].byte $3a; A#4 [9ef5].byte $39; A4 [9ef6].byte $35; F4 [9ef7].byte $38; G#4 [9ef8].byte $00; Rest [9ef9].byte $00; Rest [9efa].byte $00; Rest [9efb].byte MSCRIPT_OP_END_LOOP; Op: End loop [9efc].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9efd].byte $02; '- 2 iterations [9efe].byte $88; Note length: 8 [9eff].byte $00; Rest [9f00].byte $3c; C5 [9f01].byte $3b; B4 [9f02].byte $98; Note length: 24 [9f03].byte $37; G4 [9f04].byte $88; Note length: 8 [9f05].byte $38; G#4 [9f06].byte $37; G4 [9f07].byte $00; Rest [9f08].byte $3a; A#4 [9f09].byte $39; A4 [9f0a].byte $35; F4 [9f0b].byte $38; G#4 [9f0c].byte $39; A4 [9f0d].byte $38; G#4 [9f0e].byte $00; Rest [9f0f].byte MSCRIPT_OP_END_LOOP; Op: End loop [9f10].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9f11].byte $02; '- 2 iterations [9f12].byte $88; Note length: 8 [9f13].byte $35; F4 [9f14].byte $35; F4 [9f15].byte $35; F4 [9f16].byte $35; F4 [9f17].byte $90; Note length: 16 [9f18].byte $34; E4 [9f19].byte $00; Rest [9f1a].byte $b0; Note length: 48 [9f1b].byte $00; Rest [9f1c].byte $88; Note length: 8 [9f1d].byte $35; F4 [9f1e].byte $35; F4 [9f1f].byte $35; F4 [9f20].byte $35; F4 [9f21].byte $90; Note length: 16 [9f22].byte $34; E4 [9f23].byte $c0; Note length: 64 [9f24].byte $00; Rest [9f25].byte $90; Note length: 16 [9f26].byte $35; F4 [9f27].byte $37; G4 [9f28].byte $37; G4 [9f29].byte $38; G#4 [9f2a].byte $38; G#4 [9f2b].byte $3a; A#4 [9f2c].byte $3a; A#4 [9f2d].byte $3c; C5 [9f2e].byte $3c; C5 [9f2f].byte $3d; C#5 [9f30].byte $a0; Note length: 32 [9f31].byte $35; F4 [9f32].byte $34; E4 [9f33].byte $00; Rest [9f34].byte $30; C4 [9f35].byte $88; Note length: 8 [9f36].byte $35; F4 [9f37].byte $37; G4 [9f38].byte $00; Rest [9f39].byte $37; G4 [9f3a].byte $00; Rest [9f3b].byte $37; G4 [9f3c].byte $35; F4 [9f3d].byte $30; C4 [9f3e].byte $37; G4 [9f3f].byte $37; G4 [9f40].byte $35; F4 [9f41].byte $00; Rest [9f42].byte $37; G4 [9f43].byte $00; Rest [9f44].byte $38; G#4 [9f45].byte $37; G4 [9f46].byte $e0; Note length: 96 [9f47].byte $00; Rest [9f48].byte $88; Note length: 8 [9f49].byte $30; C4 [9f4a].byte $31; C#4 [9f4b].byte $30; C4 [9f4c].byte $00; Rest [9f4d].byte MSCRIPT_OP_END_LOOP; Op: End loop [9f4e].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9f4f].byte $02; '- 2 iterations [9f50].byte $98; Note length: 24 [9f51].byte $31; C#4 [9f52].byte $30; C4 [9f53].byte $90; Note length: 16 [9f54].byte $35; F4 [9f55].byte $a0; Note length: 32 [9f56].byte $34; E4 [9f57].byte $35; F4 [9f58].byte $98; Note length: 24 [9f59].byte $37; G4 [9f5a].byte $34; E4 [9f5b].byte $90; Note length: 16 [9f5c].byte $35; F4 [9f5d].byte $a0; Note length: 32 [9f5e].byte $3d; C#5 [9f5f].byte $88; Note length: 8 [9f60].byte $37; G4 [9f61].byte $35; F4 [9f62].byte $34; E4 [9f63].byte $33; D#4 [9f64].byte MSCRIPT_OP_END_LOOP; Op: End loop [9f65].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9f66].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TOWER [$PRG5::8f25] ;
[9f67]MSCRIPT_TOWER_SQ2:; [$9f67] [9f67].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9f68].byte $02; '- Reduce volume by 2 [9f69].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [9f6a].byte $90; '- Duty cycle 2 Constant volume/envelope [9f6b].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [9f6c].byte $00; '- Mode 0: Linear decay [9f6d].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9f6e].byte $04; '- 4 [9f6f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9f70].byte $02; '- 2 iterations [9f71].byte $88; Note length: 8 [9f72].byte $00; Rest [9f73].byte $30; C4 [9f74].byte $2f; B3 [9f75].byte $2b; G3 [9f76].byte $00; Rest [9f77].byte $00; Rest [9f78].byte $00; Rest [9f79].byte $00; Rest [9f7a].byte $00; Rest [9f7b].byte $2e; A#3 [9f7c].byte $2d; A3 [9f7d].byte $29; F3 [9f7e].byte $2c; G#3 [9f7f].byte $00; Rest [9f80].byte $00; Rest [9f81].byte $00; Rest [9f82].byte MSCRIPT_OP_END_LOOP; Op: End loop [9f83].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9f84].byte $00; '- 0 [9f85].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9f86].byte $02; '- 2 iterations [9f87].byte $88; Note length: 8 [9f88].byte $00; Rest [9f89].byte $37; G4 [9f8a].byte $36; F#4 [9f8b].byte $98; Note length: 24 [9f8c].byte $32; D4 [9f8d].byte $88; Note length: 8 [9f8e].byte $33; D#4 [9f8f].byte $32; D4 [9f90].byte $00; Rest [9f91].byte $35; F4 [9f92].byte $34; E4 [9f93].byte $30; C4 [9f94].byte $33; D#4 [9f95].byte $34; E4 [9f96].byte $33; D#4 [9f97].byte $00; Rest [9f98].byte MSCRIPT_OP_END_LOOP; Op: End loop [9f99].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9f9a].byte $02; '- 2 iterations [9f9b].byte $88; Note length: 8 [9f9c].byte $30; C4 [9f9d].byte $30; C4 [9f9e].byte $30; C4 [9f9f].byte $30; C4 [9fa0].byte $90; Note length: 16 [9fa1].byte $2f; B3 [9fa2].byte $00; Rest [9fa3].byte $b0; Note length: 48 [9fa4].byte $00; Rest [9fa5].byte $88; Note length: 8 [9fa6].byte $00; Rest [9fa7].byte $00; Rest [9fa8].byte $30; C4 [9fa9].byte $30; C4 [9faa].byte $90; Note length: 16 [9fab].byte $2f; B3 [9fac].byte $c0; Note length: 64 [9fad].byte $00; Rest [9fae].byte $90; Note length: 16 [9faf].byte $2c; G#3 [9fb0].byte $30; C4 [9fb1].byte $30; C4 [9fb2].byte $35; F4 [9fb3].byte $35; F4 [9fb4].byte $37; G4 [9fb5].byte $37; G4 [9fb6].byte $38; G#4 [9fb7].byte $38; G#4 [9fb8].byte $3a; A#4 [9fb9].byte $a0; Note length: 32 [9fba].byte $30; C4 [9fbb].byte $2f; B3 [9fbc].byte $00; Rest [9fbd].byte $2e; A#3 [9fbe].byte $88; Note length: 8 [9fbf].byte $30; C4 [9fc0].byte $34; E4 [9fc1].byte $00; Rest [9fc2].byte $34; E4 [9fc3].byte $00; Rest [9fc4].byte $34; E4 [9fc5].byte $30; C4 [9fc6].byte $2c; G#3 [9fc7].byte $34; E4 [9fc8].byte $34; E4 [9fc9].byte $32; D4 [9fca].byte $00; Rest [9fcb].byte $34; E4 [9fcc].byte $00; Rest [9fcd].byte $35; F4 [9fce].byte $34; E4 [9fcf].byte $e0; Note length: 96 [9fd0].byte $00; Rest [9fd1].byte $88; Note length: 8 [9fd2].byte $30; C4 [9fd3].byte $2f; B3 [9fd4].byte $2e; A#3 [9fd5].byte $00; Rest [9fd6].byte MSCRIPT_OP_END_LOOP; Op: End loop [9fd7].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9fd8].byte $07; '- Reduce volume by 7 [9fd9].byte MSCRIPT_OP_SET_SQ2_PITCH_BIAS; Op: Set SQ2 pitch bias [9fda].byte $01; '- 1 [9fdb].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9fdc].byte $02; '- 2 iterations [9fdd].byte $88; Note length: 8 [9fde].byte $00; Rest [9fdf].byte $98; Note length: 24 [9fe0].byte $31; C#4 [9fe1].byte $30; C4 [9fe2].byte $90; Note length: 16 [9fe3].byte $35; F4 [9fe4].byte $a0; Note length: 32 [9fe5].byte $34; E4 [9fe6].byte $a0; Note length: 32 [9fe7].byte $35; F4 [9fe8].byte $98; Note length: 24 [9fe9].byte $37; G4 [9fea].byte $34; E4 [9feb].byte $90; Note length: 16 [9fec].byte $35; F4 [9fed].byte $9c; Note length: 28 [9fee].byte $3d; C#5 [9fef].byte $88; Note length: 8 [9ff0].byte $37; G4 [9ff1].byte $35; F4 [9ff2].byte $34; E4 [9ff3].byte $84; Note length: 4 [9ff4].byte $33; D#4 [9ff5].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [9ff6].byte $04; '- Reduce volume by 4 [9ff7].byte MSCRIPT_OP_END_LOOP; Op: End loop [9ff8].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [9ff9].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TOWER [$PRG5::8f27] ;
[9ffa]MSCRIPT_TOWER_TRI:; [$9ffa] [9ffa].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [9ffb].byte $02; '- 2 iterations [9ffc].byte $88; Note length: 8 [9ffd].byte $18; C4 [9ffe].byte $00; Rest [9fff].byte $00; Rest [a000].byte $18; C4 [a001].byte $00; Rest [a002].byte $00; Rest [a003].byte $18; C4 [a004].byte $00; Rest [a005].byte $18; C4 [a006].byte $00; Rest [a007].byte $00; Rest [a008].byte $18; C4 [a009].byte $00; Rest [a00a].byte $00; Rest [a00b].byte $18; C4 [a00c].byte $18; C4 [a00d].byte $90; Note length: 16 [a00e].byte $18; C4 [a00f].byte $88; Note length: 8 [a010].byte $00; Rest [a011].byte $18; C4 [a012].byte $00; Rest [a013].byte $00; Rest [a014].byte $90; Note length: 16 [a015].byte $18; C4 [a016].byte $18; C4 [a017].byte $88; Note length: 8 [a018].byte $00; Rest [a019].byte $18; C4 [a01a].byte $00; Rest [a01b].byte $0c; C3 [a01c].byte $18; C4 [a01d].byte $0c; C3 [a01e].byte MSCRIPT_OP_END_LOOP; Op: End loop [a01f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a020].byte $02; '- 2 iterations [a021].byte $88; Note length: 8 [a022].byte $14; G#3 [a023].byte $14; G#3 [a024].byte $14; G#3 [a025].byte $14; G#3 [a026].byte $90; Note length: 16 [a027].byte $13; G3 [a028].byte $88; Note length: 8 [a029].byte $18; C4 [a02a].byte $19; C#4 [a02b].byte $00; Rest [a02c].byte $19; C#4 [a02d].byte $18; C4 [a02e].byte $13; G3 [a02f].byte $90; Note length: 16 [a030].byte $0c; C3 [a031].byte $88; Note length: 8 [a032].byte $00; Rest [a033].byte $00; Rest [a034].byte $14; G#3 [a035].byte $14; G#3 [a036].byte $90; Note length: 16 [a037].byte $13; G3 [a038].byte $00; Rest [a039].byte $88; Note length: 8 [a03a].byte $17; B3 [a03b].byte $18; C4 [a03c].byte $0c; C3 [a03d].byte $0d; C#3 [a03e].byte $0e; D3 [a03f].byte $00; Rest [a040].byte $90; Note length: 16 [a041].byte $00; Rest [a042].byte $88; Note length: 8 [a043].byte $20; G#4 [a044].byte $18; C4 [a045].byte $11; F3 [a046].byte $11; F3 [a047].byte $00; Rest [a048].byte $11; F3 [a049].byte $1d; F4 [a04a].byte $1d; F4 [a04b].byte $1c; E4 [a04c].byte $18; C4 [a04d].byte $11; F3 [a04e].byte $11; F3 [a04f].byte $00; Rest [a050].byte $11; F3 [a051].byte $1d; F4 [a052].byte $1d; F4 [a053].byte $1c; E4 [a054].byte $18; C4 [a055].byte $a0; Note length: 32 [a056].byte $14; G#3 [a057].byte $90; Note length: 16 [a058].byte $13; G3 [a059].byte $88; Note length: 8 [a05a].byte $1f; G4 [a05b].byte $13; G3 [a05c].byte $a0; Note length: 32 [a05d].byte $00; Rest [a05e].byte $98; Note length: 24 [a05f].byte $1f; G4 [a060].byte $88; Note length: 8 [a061].byte $18; C4 [a062].byte $90; Note length: 16 [a063].byte $0c; C3 [a064].byte $88; Note length: 8 [a065].byte $00; Rest [a066].byte $18; C4 [a067].byte $00; Rest [a068].byte $18; C4 [a069].byte $0c; C3 [a06a].byte $0c; C3 [a06b].byte $90; Note length: 16 [a06c].byte $0c; C3 [a06d].byte $88; Note length: 8 [a06e].byte $00; Rest [a06f].byte $18; C4 [a070].byte $00; Rest [a071].byte $18; C4 [a072].byte $0c; C3 [a073].byte $0c; C3 [a074].byte $00; Rest [a075].byte $00; Rest [a076].byte $1f; G4 [a077].byte $24; C5 [a078].byte $1e; F#4 [a079].byte $1d; F4 [a07a].byte $1c; E4 [a07b].byte $14; G#3 [a07c].byte $a0; Note length: 32 [a07d].byte $13; G3 [a07e].byte $88; Note length: 8 [a07f].byte $18; C4 [a080].byte $17; B3 [a081].byte $18; C4 [a082].byte $00; Rest [a083].byte MSCRIPT_OP_END_LOOP; Op: End loop [a084].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a085].byte $02; '- 2 iterations [a086].byte $90; Note length: 16 [a087].byte $13; G3 [a088].byte $88; Note length: 8 [a089].byte $00; Rest [a08a].byte $90; Note length: 16 [a08b].byte $13; G3 [a08c].byte $88; Note length: 8 [a08d].byte $00; Rest [a08e].byte $13; G3 [a08f].byte $00; Rest [a090].byte $13; G3 [a091].byte $00; Rest [a092].byte $00; Rest [a093].byte $13; G3 [a094].byte $00; Rest [a095].byte $00; Rest [a096].byte $13; G3 [a097].byte $13; G3 [a098].byte MSCRIPT_OP_END_LOOP; Op: End loop [a099].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a09a].byte $02; '- 2 iterations [a09b].byte $90; Note length: 16 [a09c].byte $13; G3 [a09d].byte $88; Note length: 8 [a09e].byte $1f; G4 [a09f].byte $90; Note length: 16 [a0a0].byte $13; G3 [a0a1].byte $88; Note length: 8 [a0a2].byte $1f; G4 [a0a3].byte $13; G3 [a0a4].byte $1f; G4 [a0a5].byte $13; G3 [a0a6].byte $13; G3 [a0a7].byte $1f; G4 [a0a8].byte $90; Note length: 16 [a0a9].byte $13; G3 [a0aa].byte $88; Note length: 8 [a0ab].byte $1f; G4 [a0ac].byte $13; G3 [a0ad].byte $1f; G4 [a0ae].byte MSCRIPT_OP_END_LOOP; Op: End loop [a0af].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a0b0].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TOWER [$PRG5::8f29] ;
[a0b1]MSCRIPT_TOWER_NOISE:; [$a0b1] [a0b1].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a0b2].byte $04; '- 4 iterations [a0b3].byte $88,$21,$31,$31,$21,$31,$31,$21; [$a0b3] byte [a0bb].byte $31,$21,$31,$31,$21,$31,$31,$21; [$a0bb] byte [a0c3].byte $31; [$a0c3] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a0c5].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a0c6].byte $02; '- 2 iterations [a0c7].byte $88,$21,$21,$21,$21,$21,$00,$31; [$a0c7] byte [a0cf].byte $31,$31,$31,$31,$31,$21,$00,$00; [$a0cf] byte [a0d7].byte $21,$11,$11,$11,$00,$85,$31,$31; [$a0d7] byte [a0df].byte $86,$31,$88,$31,$31,$31,$31,$21; [$a0df] byte [a0e7].byte $00,$21,$00,$21,$21,$31,$00,$31; [$a0e7] byte [a0ef].byte $00,$31,$31,$21,$00,$31,$00,$31; [$a0ef] byte [a0f7].byte $31,$31,$31,$21,$21,$31,$00,$31; [$a0f7] byte [a0ff].byte $00,$31,$00,$31,$00,$85,$31,$31; [$a0ff] byte [a107].byte $86,$31,$88,$31,$31,$21,$21,$31; [$a107] byte [a10f].byte $00,$31,$31,$31,$31,$21,$31,$31; [$a10f] byte [a117].byte $31,$31,$31,$31,$31,$21,$31,$31; [$a117] byte [a11f].byte $31,$a0,$00,$88,$21,$21,$21,$21; [$a11f] byte [a127].byte $85,$31,$31,$86,$31,$88,$31,$31; [$a127] byte [a12f].byte $85,$31,$31,$86,$31,$88,$21,$21; [$a12f] byte [a137].byte MSCRIPT_OP_END_LOOP; Op: End loop [a138].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a139].byte $02; '- 2 iterations [a13a].byte $88,$31,$00,$00,$31,$00,$00,$31; [$a13a] byte [a142].byte $00,$31,$00,$00,$31,$00,$00,$31; [$a142] byte [a14a].byte $31; [$a14a] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a14c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a14d].byte $02; '- 2 iterations [a14e].byte $88,$31,$11,$11,$31,$11,$11,$31; [$a14e] byte [a156].byte $11,$31,$11,$11,$31,$11,$11,$31; [$a156] byte [a15e].byte $31; [$a15e] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a160].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a161].byte MSCRIPT_OP_END; Op: End [a162].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for Eolis. ; ; XREFS: ; MSCRIPTS_EOLIS [$PRG5::8f2b] ;============================================================================
; ; XREFS: ; MSCRIPTS_EOLIS [$PRG5::8f2b] ;
[a163]MSCRIPT_EOLIS_SQ1:; [$a163] [a163].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a164].byte $02; '- Reduce volume by 2 [a165].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a166].byte $90; '- Duty cycle 2 Constant volume/envelope [a167].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a168].byte $01; '- Mode 1: Curve but held [a169].byte $e0; Note length: 96 [a16a].byte $00; Rest [a16b].byte $00; Rest [a16c].byte $00; Rest [a16d].byte $b0; Note length: 48 [a16e].byte $00; Rest [a16f].byte $8c; Note length: 12 [a170].byte $00; Rest [a171].byte $34; E4 [a172].byte $36; F#4 [a173].byte $38; G#4 [a174].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a175].byte $02; '- 2 iterations [a176].byte $98; Note length: 24 [a177].byte $39; A4 [a178].byte $8c; Note length: 12 [a179].byte $38; G#4 [a17a].byte $3b; B4 [a17b].byte $39; A4 [a17c].byte $3b; B4 [a17d].byte $3c; C5 [a17e].byte $3e; D5 [a17f].byte $40; E5 [a180].byte $41; F5 [a181].byte $3f; D#5 [a182].byte $40; E5 [a183].byte $b0; Note length: 48 [a184].byte $00; Rest [a185].byte $98; Note length: 24 [a186].byte $37; G4 [a187].byte $8c; Note length: 12 [a188].byte $36; F#4 [a189].byte $39; A4 [a18a].byte $37; G4 [a18b].byte $39; A4 [a18c].byte $3a; A#4 [a18d].byte $3c; C5 [a18e].byte $3e; D5 [a18f].byte $3f; D#5 [a190].byte $3d; C#5 [a191].byte $3e; D5 [a192].byte $b0; Note length: 48 [a193].byte $00; Rest [a194].byte $a4; Note length: 36 [a195].byte $3f; D#5 [a196].byte $8c; Note length: 12 [a197].byte $43; G5 [a198].byte $41; F5 [a199].byte $3c; C5 [a19a].byte $00; Rest [a19b].byte $3e; D5 [a19c].byte $00; Rest [a19d].byte $3e; D5 [a19e].byte $41; F5 [a19f].byte $3f; D#5 [a1a0].byte $00; Rest [a1a1].byte $3a; A#4 [a1a2].byte $37; G4 [a1a3].byte $00; Rest [a1a4].byte $38; G#4 [a1a5].byte $3c; C5 [a1a6].byte $38; G#4 [a1a7].byte $3f; D#5 [a1a8].byte $00; Rest [a1a9].byte $3f; D#5 [a1aa].byte $00; Rest [a1ab].byte $38; G#4 [a1ac].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a1ad].byte $01; '- 1 loop [a1ae].byte $8c; Note length: 12 [a1af].byte $3c; C5 [a1b0].byte $38; G#4 [a1b1].byte $3f; D#5 [a1b2].byte $00; Rest [a1b3].byte $00; Rest [a1b4].byte $34; E4 [a1b5].byte $36; F#4 [a1b6].byte $38; G#4 [a1b7].byte MSCRIPT_OP_END_LOOP; Op: End loop [a1b8].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a1b9].byte $02; '- 2 loops [a1ba].byte $8c; Note length: 12 [a1bb].byte $3c; C5 [a1bc].byte $38; G#4 [a1bd].byte $3f; D#5 [a1be].byte $00; Rest [a1bf].byte $3f; D#5 [a1c0].byte $34; E4 [a1c1].byte $2f; B3 [a1c2].byte $2c; G#3 [a1c3].byte $2d; A3 [a1c4].byte $34; E4 [a1c5].byte $2d; A3 [a1c6].byte $32; D4 [a1c7].byte $00; Rest [a1c8].byte $2f; B3 [a1c9].byte $2b; G3 [a1ca].byte $00; Rest [a1cb].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a1cc].byte $02; '- 2 iterations [a1cd].byte $b0; Note length: 48 [a1ce].byte $40; E5 [a1cf].byte $98; Note length: 24 [a1d0].byte $39; A4 [a1d1].byte $40; E5 [a1d2].byte $3f; D#5 [a1d3].byte $8c; Note length: 12 [a1d4].byte $41; F5 [a1d5].byte $98; Note length: 24 [a1d6].byte $40; E5 [a1d7].byte $8c; Note length: 12 [a1d8].byte $3c; C5 [a1d9].byte $39; A4 [a1da].byte $34; E4 [a1db].byte $38; G#4 [a1dc].byte $38; G#4 [a1dd].byte $3b; B4 [a1de].byte $39; A4 [a1df].byte $b0; Note length: 48 [a1e0].byte $00; Rest [a1e1].byte $98; Note length: 24 [a1e2].byte $32; D4 [a1e3].byte $8c; Note length: 12 [a1e4].byte $34; E4 [a1e5].byte $30; C4 [a1e6].byte $b0; Note length: 48 [a1e7].byte $00; Rest [a1e8].byte MSCRIPT_OP_END_LOOP; Op: End loop [a1e9].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a1ea].byte $02; '- 2 iterations [a1eb].byte $b0; Note length: 48 [a1ec].byte $00; Rest [a1ed].byte $8c; Note length: 12 [a1ee].byte $00; Rest [a1ef].byte $2d; A3 [a1f0].byte $98; Note length: 24 [a1f1].byte $00; Rest [a1f2].byte $00; Rest [a1f3].byte $8c; Note length: 12 [a1f4].byte $00; Rest [a1f5].byte $28; E3 [a1f6].byte $2d; A3 [a1f7].byte $2c; G#3 [a1f8].byte $29; F3 [a1f9].byte $26; D3 [a1fa].byte $b0; Note length: 48 [a1fb].byte $00; Rest [a1fc].byte $8c; Note length: 12 [a1fd].byte $00; Rest [a1fe].byte $2d; A3 [a1ff].byte $98; Note length: 24 [a200].byte $00; Rest [a201].byte $8c; Note length: 12 [a202].byte $00; Rest [a203].byte $34; E4 [a204].byte $33; D#4 [a205].byte $2f; B3 [a206].byte $32; D4 [a207].byte $31; C#4 [a208].byte $2d; A3 [a209].byte $30; C4 [a20a].byte $fc; Op: End loop [a20b].byte $2d; A3 [a20c].byte $00; Rest [a20d].byte $c8; Note length: 72 [a20e].byte $00; Rest [a20f].byte $e0; Note length: 96 [a210].byte $00; Rest [a211].byte $00; Rest [a212].byte $b0; Note length: 48 [a213].byte $00; Rest [a214].byte $8c; Note length: 12 [a215].byte $00; Rest [a216].byte $2b; G3 [a217].byte $2a; F#3 [a218].byte $29; F3 [a219].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a21a].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EOLIS [$PRG5::8f2d] ;
[a21b]MSCRIPT_EOLIS_SQ2:; [$a21b] [a21b].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a21c].byte $02; '- Reduce volume by 2 [a21d].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a21e].byte $90; '- Duty cycle 2 Constant volume/envelope [a21f].byte $e0; Note length: 96 [a220].byte $00; Rest [a221].byte $00; Rest [a222].byte $00; Rest [a223].byte $b0; Note length: 48 [a224].byte $00; Rest [a225].byte $8c; Note length: 12 [a226].byte $00; Rest [a227].byte $28; E3 [a228].byte $33; D#4 [a229].byte $32; D4 [a22a].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a22b].byte $02; '- 2 iterations [a22c].byte $98; Note length: 24 [a22d].byte $30; C4 [a22e].byte $8c; Note length: 12 [a22f].byte $2f; B3 [a230].byte $32; D4 [a231].byte $30; C4 [a232].byte $34; E4 [a233].byte $39; A4 [a234].byte $3b; B4 [a235].byte $3c; C5 [a236].byte $3e; D5 [a237].byte $3b; B4 [a238].byte $3c; C5 [a239].byte $b0; Note length: 48 [a23a].byte $00; Rest [a23b].byte $98; Note length: 24 [a23c].byte $2e; A#3 [a23d].byte $8c; Note length: 12 [a23e].byte $2d; A3 [a23f].byte $30; C4 [a240].byte $2e; A#3 [a241].byte $32; D4 [a242].byte $37; G4 [a243].byte $39; A4 [a244].byte $3a; A#4 [a245].byte $3c; C5 [a246].byte $39; A4 [a247].byte $3a; A#4 [a248].byte $b0; Note length: 48 [a249].byte $00; Rest [a24a].byte $a4; Note length: 36 [a24b].byte $3c; C5 [a24c].byte $8c; Note length: 12 [a24d].byte $3f; D#5 [a24e].byte $3e; D5 [a24f].byte $39; A4 [a250].byte $00; Rest [a251].byte $3a; A#4 [a252].byte $00; Rest [a253].byte $3a; A#4 [a254].byte $3e; D5 [a255].byte $3c; C5 [a256].byte $00; Rest [a257].byte $33; D#4 [a258].byte $30; C4 [a259].byte $00; Rest [a25a].byte $30; C4 [a25b].byte $33; D#4 [a25c].byte $30; C4 [a25d].byte $37; G4 [a25e].byte $00; Rest [a25f].byte $37; G4 [a260].byte $00; Rest [a261].byte $30; C4 [a262].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a263].byte $01; '- 1 loop [a264].byte $8c; Note length: 12 [a265].byte $33; D#4 [a266].byte $30; C4 [a267].byte $37; G4 [a268].byte $00; Rest [a269].byte $00; Rest [a26a].byte $00; Rest [a26b].byte $33; D#4 [a26c].byte $32; D4 [a26d].byte MSCRIPT_OP_END_LOOP; Op: End loop [a26e].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a26f].byte $02; '- 2 loops [a270].byte $8c; Note length: 12 [a271].byte $33; D#4 [a272].byte $30; C4 [a273].byte $37; G4 [a274].byte $00; Rest [a275].byte $37; G4 [a276].byte $2f; B3 [a277].byte $2c; G#3 [a278].byte $28; E3 [a279].byte $24; C3 [a27a].byte $2d; A3 [a27b].byte $24; C3 [a27c].byte $2f; B3 [a27d].byte $00; Rest [a27e].byte $2b; G3 [a27f].byte $26; D3 [a280].byte $00; Rest [a281].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a282].byte $02; '- 2 iterations [a283].byte $b0; Note length: 48 [a284].byte $3c; C5 [a285].byte $98; Note length: 24 [a286].byte $34; E4 [a287].byte $3c; C5 [a288].byte $3b; B4 [a289].byte $8c; Note length: 12 [a28a].byte $3e; D5 [a28b].byte $98; Note length: 24 [a28c].byte $3c; C5 [a28d].byte $8c; Note length: 12 [a28e].byte $39; A4 [a28f].byte $34; E4 [a290].byte $30; C4 [a291].byte $32; D4 [a292].byte $32; D4 [a293].byte $34; E4 [a294].byte $30; C4 [a295].byte $b0; Note length: 48 [a296].byte $00; Rest [a297].byte $98; Note length: 24 [a298].byte $2f; B3 [a299].byte $8c; Note length: 12 [a29a].byte $30; C4 [a29b].byte $2d; A3 [a29c].byte $b0; Note length: 48 [a29d].byte $00; Rest [a29e].byte MSCRIPT_OP_END_LOOP; Op: End loop [a29f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a2a0].byte $02; '- 2 iterations [a2a1].byte $b0; Note length: 48 [a2a2].byte $00; Rest [a2a3].byte $8c; Note length: 12 [a2a4].byte $00; Rest [a2a5].byte $23; B2 [a2a6].byte $98; Note length: 24 [a2a7].byte $00; Rest [a2a8].byte $00; Rest [a2a9].byte $8c; Note length: 12 [a2aa].byte $00; Rest [a2ab].byte $23; B2 [a2ac].byte $28; E3 [a2ad].byte $27; D#3 [a2ae].byte $24; C3 [a2af].byte $21; A2 [a2b0].byte $b0; Note length: 48 [a2b1].byte $00; Rest [a2b2].byte $8c; Note length: 12 [a2b3].byte $00; Rest [a2b4].byte $23; B2 [a2b5].byte $98; Note length: 24 [a2b6].byte $00; Rest [a2b7].byte $8c; Note length: 12 [a2b8].byte $00; Rest [a2b9].byte $2f; B3 [a2ba].byte $2e; A#3 [a2bb].byte $2a; F#3 [a2bc].byte $2d; A3 [a2bd].byte $2c; G#3 [a2be].byte $28; E3 [a2bf].byte $2b; G3 [a2c0].byte $fc; Op: End loop [a2c1].byte $2a; F#3 [a2c2].byte $00; Rest [a2c3].byte $c8; Note length: 72 [a2c4].byte $00; Rest [a2c5].byte $e0; Note length: 96 [a2c6].byte $00; Rest [a2c7].byte $00; Rest [a2c8].byte $b0; Note length: 48 [a2c9].byte $00; Rest [a2ca].byte $8c; Note length: 12 [a2cb].byte $00; Rest [a2cc].byte $26; D3 [a2cd].byte $25; C#3 [a2ce].byte $24; C3 [a2cf].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a2d0].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EOLIS [$PRG5::8f2f] ;
[a2d1]MSCRIPT_EOLIS_TRI:; [$a2d1] [a2d1].byte $8c; Note length: 12 [a2d2].byte $15; A3 [a2d3].byte $00; Rest [a2d4].byte $21; A4 [a2d5].byte $15; A3 [a2d6].byte $1a; D4 [a2d7].byte $1c; E4 [a2d8].byte $00; Rest [a2d9].byte $10; E3 [a2da].byte $13; G3 [a2db].byte $15; A3 [a2dc].byte $21; A4 [a2dd].byte $15; A3 [a2de].byte $1a; D4 [a2df].byte $1c; E4 [a2e0].byte $00; Rest [a2e1].byte $10; E3 [a2e2].byte $15; A3 [a2e3].byte $00; Rest [a2e4].byte $21; A4 [a2e5].byte $15; A3 [a2e6].byte $1a; D4 [a2e7].byte $1c; E4 [a2e8].byte $10; E3 [a2e9].byte $13; G3 [a2ea].byte $15; A3 [a2eb].byte $17; B3 [a2ec].byte $18; C4 [a2ed].byte $1a; D4 [a2ee].byte $00; Rest [a2ef].byte $1c; E4 [a2f0].byte $17; B3 [a2f1].byte $10; E3 [a2f2].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a2f3].byte $02; '- 2 iterations [a2f4].byte $98; Note length: 24 [a2f5].byte $15; A3 [a2f6].byte $8c; Note length: 12 [a2f7].byte $21; A4 [a2f8].byte $1c; E4 [a2f9].byte $10; E3 [a2fa].byte $1c; E4 [a2fb].byte $00; Rest [a2fc].byte $10; E3 [a2fd].byte $15; A3 [a2fe].byte $1f; G4 [a2ff].byte $21; A4 [a300].byte $1c; E4 [a301].byte $00; Rest [a302].byte $18; C4 [a303].byte $15; A3 [a304].byte $10; E3 [a305].byte $98; Note length: 24 [a306].byte $13; G3 [a307].byte $8c; Note length: 12 [a308].byte $1f; G4 [a309].byte $1a; D4 [a30a].byte $0e; D3 [a30b].byte $1a; D4 [a30c].byte $00; Rest [a30d].byte $0e; D3 [a30e].byte $13; G3 [a30f].byte $1d; F4 [a310].byte $1f; G4 [a311].byte $1a; D4 [a312].byte $00; Rest [a313].byte $16; A#3 [a314].byte $13; G3 [a315].byte $0e; D3 [a316].byte $0c; C3 [a317].byte $0c; C3 [a318].byte $18; C4 [a319].byte $0c; C3 [a31a].byte $11; F3 [a31b].byte $1d; F4 [a31c].byte $00; Rest [a31d].byte $11; F3 [a31e].byte $16; A#3 [a31f].byte $00; Rest [a320].byte $22; A#4 [a321].byte $0f; D#3 [a322].byte $00; Rest [a323].byte $1b; D#4 [a324].byte $16; A#3 [a325].byte $0f; D#3 [a326].byte $14; G#3 [a327].byte $1a; D4 [a328].byte $14; G#3 [a329].byte $1b; D#4 [a32a].byte $00; Rest [a32b].byte $1b; D#4 [a32c].byte $00; Rest [a32d].byte $0f; D#3 [a32e].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a32f].byte $01; '- 1 loop [a330].byte $8c; Note length: 12 [a331].byte $14; G#3 [a332].byte $20; G#4 [a333].byte $14; G#3 [a334].byte $11; F3 [a335].byte $10; E3 [a336].byte $10; E3 [a337].byte $12; F#3 [a338].byte $14; G#3 [a339].byte MSCRIPT_OP_END_LOOP; Op: End loop [a33a].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a33b].byte $02; '- 2 loops [a33c].byte $8c; Note length: 12 [a33d].byte $14; G#3 [a33e].byte $20; G#4 [a33f].byte $14; G#3 [a340].byte $00; Rest [a341].byte $10; E3 [a342].byte $10; E3 [a343].byte $12; F#3 [a344].byte $14; G#3 [a345].byte $15; A3 [a346].byte $1c; E4 [a347].byte $15; A3 [a348].byte $1a; D4 [a349].byte $00; Rest [a34a].byte $17; B3 [a34b].byte $13; G3 [a34c].byte $00; Rest [a34d].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a34e].byte $02; '- 2 iterations [a34f].byte $8c; Note length: 12 [a350].byte $15; A3 [a351].byte $00; Rest [a352].byte $21; A4 [a353].byte $10; E3 [a354].byte $13; G3 [a355].byte $15; A3 [a356].byte $00; Rest [a357].byte $10; E3 [a358].byte $14; G#3 [a359].byte $17; B3 [a35a].byte $10; E3 [a35b].byte $15; A3 [a35c].byte $00; Rest [a35d].byte $21; A4 [a35e].byte $1c; E4 [a35f].byte $15; A3 [a360].byte $98; Note length: 24 [a361].byte $10; E3 [a362].byte $8c; Note length: 12 [a363].byte $1c; E4 [a364].byte $15; A3 [a365].byte $00; Rest [a366].byte $20; G#4 [a367].byte $21; A4 [a368].byte $1c; E4 [a369].byte $10; E3 [a36a].byte $12; F#3 [a36b].byte $14; G#3 [a36c].byte $15; A3 [a36d].byte $00; Rest [a36e].byte $1c; E4 [a36f].byte $1b; D#4 [a370].byte $1a; D4 [a371].byte MSCRIPT_OP_END_LOOP; Op: End loop [a372].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a373].byte $02; '- 2 iterations [a374].byte $8c; Note length: 12 [a375].byte $1c; E4 [a376].byte $10; E3 [a377].byte $11; F3 [a378].byte $10; E3 [a379].byte $00; Rest [a37a].byte $11; F3 [a37b].byte $00; Rest [a37c].byte $10; E3 [a37d].byte $1c; E4 [a37e].byte $10; E3 [a37f].byte $11; F3 [a380].byte $10; E3 [a381].byte $00; Rest [a382].byte $1c; E4 [a383].byte $1b; D#4 [a384].byte $17; B3 [a385].byte $10; E3 [a386].byte $10; E3 [a387].byte $11; F3 [a388].byte $10; E3 [a389].byte $00; Rest [a38a].byte $11; F3 [a38b].byte $00; Rest [a38c].byte $10; E3 [a38d].byte $00; Rest [a38e].byte $10; E3 [a38f].byte $11; F3 [a390].byte $10; E3 [a391].byte $00; Rest [a392].byte $12; F#3 [a393].byte $11; F3 [a394].byte $10; E3 [a395].byte MSCRIPT_OP_END_LOOP; Op: End loop [a396].byte $15; A3 [a397].byte $00; Rest [a398].byte $21; A4 [a399].byte $15; A3 [a39a].byte $1a; D4 [a39b].byte $1c; E4 [a39c].byte $00; Rest [a39d].byte $10; E3 [a39e].byte $13; G3 [a39f].byte $15; A3 [a3a0].byte $21; A4 [a3a1].byte $15; A3 [a3a2].byte $1a; D4 [a3a3].byte $1c; E4 [a3a4].byte $10; E3 [a3a5].byte $13; G3 [a3a6].byte $15; A3 [a3a7].byte $00; Rest [a3a8].byte $21; A4 [a3a9].byte $15; A3 [a3aa].byte $1a; D4 [a3ab].byte $1c; E4 [a3ac].byte $00; Rest [a3ad].byte $10; E3 [a3ae].byte $13; G3 [a3af].byte $15; A3 [a3b0].byte $21; A4 [a3b1].byte $20; G#4 [a3b2].byte $00; Rest [a3b3].byte $15; A3 [a3b4].byte $14; G#3 [a3b5].byte $13; G3 [a3b6].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a3b7].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EOLIS [$PRG5::8f31] ;
[a3b8]MSCRIPT_EOLIS_NOISE:; [$a3b8] [a3b8].byte $8c,$3c,$3c,$30,$3c,$3c,$30,$3c; [$a3b8] byte [a3c0].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$3c; [$a3c0] byte [a3c8].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$3c; [$a3c8] byte [a3d0].byte $3c,$30,$30,$30,$30,$00,$3c,$3c; [$a3d0] byte [a3d8].byte $3c; [$a3d8] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a3da].byte $02; '- 2 iterations [a3db].byte $8c,$3c,$3c,$30,$3c,$3c,$3c,$30; [$a3db] byte [a3e3].byte $3c,$3c,$3c,$30,$3c,$3c,$3c,$30; [$a3e3] byte [a3eb].byte $3c,$3c,$3c,$30,$3c,$3c,$3c,$30; [$a3eb] byte [a3f3].byte $3c,$3c,$3c,$30,$3c,$3c,$3c,$30; [$a3f3] byte [a3fb].byte $3c,$3c,$3c,$30,$3c,$3c,$3c,$30; [$a3fb] byte [a403].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$30; [$a403] byte [a40b].byte $30,$3c,$3c,$30,$3c,$3c,$30,$3c; [$a40b] byte [a413].byte $3c; [$a413] byte .byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a415].byte $01; '- 1 loop [a416].byte $8c,$3c,$3c,$30,$3c,$3c,$30,$3c; [$a416] byte [a41e].byte $3c; [$a41e] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a420].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a421].byte $02; '- 2 loops [a422].byte $8c,$3c,$3c,$30,$3c,$30,$3c,$3c; [$a422] byte [a42a].byte $3c,$30,$30,$30,$30,$00,$30,$30; [$a42a] byte [a432].byte $00; [$a432] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a434].byte $02; '- 2 iterations [a435].byte $8c,$3c,$3c,$30,$3c,$3c,$30,$00; [$a435] byte [a43d].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$00; [$a43d] byte [a445].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$00; [$a445] byte [a44d].byte $3c,$3c,$3c,$30,$3c,$3c,$30,$30; [$a44d] byte [a455].byte $30; [$a455] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a457].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a458].byte $02; '- 2 iterations [a459].byte $8c,$3c,$3c,$3c,$3c,$3c,$30,$3c; [$a459] byte [a461].byte $3c,$3c,$3c,$3c,$3c,$3c,$30,$30; [$a461] byte [a469].byte $30,$3c,$3c,$3c,$3c,$3c,$30,$3c; [$a469] byte [a471].byte $3c,$3c,$30,$3c,$3c,$3c,$3c,$86; [$a471] byte [a479].byte $3c,$3c,$8c,$30; [$a479] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a47e].byte $3c,$00,$30,$3c,$3c,$30,$3c,$3c; [$a47e] byte [a486].byte $3c,$00,$30,$3c,$3c,$30,$3c,$3c; [$a486] byte [a48e].byte $3c,$00,$30,$3c,$3c,$30,$3c,$3c; [$a48e] byte [a496].byte $3c,$3c,$30,$3c,$3c,$30,$30,$30; [$a496] byte [a49e].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a49f].byte MSCRIPT_OP_END; Op: End [a4a0].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for the death screen. ; ; XREFS: ; MSCRIPTS_MANTRA [$PRG5::8f33] ;============================================================================
; ; XREFS: ; MSCRIPTS_MANTRA [$PRG5::8f33] ;
[a4a1]MSCRIPT_MANTRA_SQ1:; [$a4a1] [a4a1].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a4a2].byte $04; '- Reduce volume by 4 [a4a3].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a4a4].byte $90; '- Duty cycle 2 Constant volume/envelope [a4a5].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a4a6].byte $02; '- Mode 2: Pluck [a4a7].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a4a8].byte $02; '- 2 iterations [a4a9].byte $a0; Note length: 32 [a4aa].byte $34; E4 [a4ab].byte $90; Note length: 16 [a4ac].byte $33; D#4 [a4ad].byte $34; E4 [a4ae].byte $a0; Note length: 32 [a4af].byte $36; F#4 [a4b0].byte $90; Note length: 16 [a4b1].byte $3b; B4 [a4b2].byte $b0; Note length: 48 [a4b3].byte $37; G4 [a4b4].byte $90; Note length: 16 [a4b5].byte $36; F#4 [a4b6].byte $37; G4 [a4b7].byte $a0; Note length: 32 [a4b8].byte $39; A4 [a4b9].byte $90; Note length: 16 [a4ba].byte $3e; D5 [a4bb].byte $c0; Note length: 64 [a4bc].byte $3b; B4 [a4bd].byte $90; Note length: 16 [a4be].byte $37; G4 [a4bf].byte $3c; C5 [a4c0].byte $3b; B4 [a4c1].byte $39; A4 [a4c2].byte $37; G4 [a4c3].byte $b0; Note length: 48 [a4c4].byte $39; A4 [a4c5].byte $90; Note length: 16 [a4c6].byte $36; F#4 [a4c7].byte $3b; B4 [a4c8].byte $39; A4 [a4c9].byte $37; G4 [a4ca].byte $36; F#4 [a4cb].byte MSCRIPT_OP_END_LOOP; Op: End loop [a4cc].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a4cd].byte $02; '- 2 iterations [a4ce].byte $a0; Note length: 32 [a4cf].byte $34; E4 [a4d0].byte $90; Note length: 16 [a4d1].byte $33; D#4 [a4d2].byte $34; E4 [a4d3].byte $a0; Note length: 32 [a4d4].byte $36; F#4 [a4d5].byte $90; Note length: 16 [a4d6].byte $3b; B4 [a4d7].byte $b0; Note length: 48 [a4d8].byte $37; G4 [a4d9].byte $90; Note length: 16 [a4da].byte $36; F#4 [a4db].byte $37; G4 [a4dc].byte $a0; Note length: 32 [a4dd].byte $39; A4 [a4de].byte $90; Note length: 16 [a4df].byte $3e; D5 [a4e0].byte $c0; Note length: 64 [a4e1].byte $3b; B4 [a4e2].byte $90; Note length: 16 [a4e3].byte $37; G4 [a4e4].byte $3c; C5 [a4e5].byte $3b; B4 [a4e6].byte $39; A4 [a4e7].byte $37; G4 [a4e8].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a4e9].byte $01; '- 1 loop [a4ea].byte $b0; Note length: 48 [a4eb].byte $39; A4 [a4ec].byte $90; Note length: 16 [a4ed].byte $36; F#4 [a4ee].byte $3b; B4 [a4ef].byte $39; A4 [a4f0].byte $37; G4 [a4f1].byte $36; F#4 [a4f2].byte MSCRIPT_OP_END_LOOP; Op: End loop [a4f3].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a4f4].byte $02; '- 2 loops [a4f5].byte $90; Note length: 16 [a4f6].byte $39; A4 [a4f7].byte $37; G4 [a4f8].byte $36; F#4 [a4f9].byte $b0; Note length: 48 [a4fa].byte $3b; B4 [a4fb].byte $a0; Note length: 32 [a4fc].byte $2f; B3 [a4fd].byte $90; Note length: 16 [a4fe].byte $3b; B4 [a4ff].byte $3b; B4 [a500].byte $3b; B4 [a501].byte $3b; B4 [a502].byte $a0; Note length: 32 [a503].byte $3b; B4 [a504].byte $90; Note length: 16 [a505].byte $3e; D5 [a506].byte $d0; Note length: 80 [a507].byte $3c; C5 [a508].byte $90; Note length: 16 [a509].byte $3c; C5 [a50a].byte $3b; B4 [a50b].byte $39; A4 [a50c].byte $37; G4 [a50d].byte $a0; Note length: 32 [a50e].byte $36; F#4 [a50f].byte $40; E5 [a510].byte $3e; D5 [a511].byte $39; A4 [a512].byte $b0; Note length: 48 [a513].byte $3c; C5 [a514].byte $a0; Note length: 32 [a515].byte $3b; B4 [a516].byte $90; Note length: 16 [a517].byte $3b; B4 [a518].byte $3c; C5 [a519].byte $3e; D5 [a51a].byte $b0; Note length: 48 [a51b].byte $40; E5 [a51c].byte $90; Note length: 16 [a51d].byte $37; G4 [a51e].byte $c0; Note length: 64 [a51f].byte $37; G4 [a520].byte $a0; Note length: 32 [a521].byte $3e; D5 [a522].byte $3c; C5 [a523].byte $37; G4 [a524].byte $39; A4 [a525].byte $d6; Note length: 86 [a526].byte $3b; B4 [a527].byte $95; Note length: 21 [a528].byte $39; A4 [a529].byte $37; G4 [a52a].byte $a0; Note length: 32 [a52b].byte $36; F#4 [a52c].byte $e0; Note length: 96 [a52d].byte $00; Rest [a52e].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a52f].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MANTRA [$PRG5::8f35] ;
[a530]MSCRIPT_MANTRA_SQ2:; [$a530] [a530].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a531].byte $06; '- Reduce volume by 6 [a532].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a533].byte $90; '- Duty cycle 2 Constant volume/envelope [a534].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a535].byte $02; '- Mode 2: Pluck [a536].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [a537].byte $80; '- 128 ticks [a538].byte $00; Rest [a539].byte $00; Rest [a53a].byte $00; Rest [a53b].byte $00; Rest [a53c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a53d].byte $02; '- 2 iterations [a53e].byte $a0; Note length: 32 [a53f].byte $2b; G3 [a540].byte $90; Note length: 16 [a541].byte $2a; F#3 [a542].byte $2b; G3 [a543].byte $a0; Note length: 32 [a544].byte $2d; A3 [a545].byte $90; Note length: 16 [a546].byte $2a; F#3 [a547].byte $b0; Note length: 48 [a548].byte $2f; B3 [a549].byte $90; Note length: 16 [a54a].byte $2d; A3 [a54b].byte $2f; B3 [a54c].byte $a0; Note length: 32 [a54d].byte $30; C4 [a54e].byte $90; Note length: 16 [a54f].byte $36; F#4 [a550].byte $c0; Note length: 64 [a551].byte $32; D4 [a552].byte $90; Note length: 16 [a553].byte $2f; B3 [a554].byte $34; E4 [a555].byte $32; D4 [a556].byte $30; C4 [a557].byte $2f; B3 [a558].byte $b0; Note length: 48 [a559].byte $34; E4 [a55a].byte $90; Note length: 16 [a55b].byte $31; C#4 [a55c].byte $33; D#4 [a55d].byte $31; C#4 [a55e].byte $2f; B3 [a55f].byte $2d; A3 [a560].byte MSCRIPT_OP_END_LOOP; Op: End loop [a561].byte $2b; G3 [a562].byte $28; E3 [a563].byte $2a; F#3 [a564].byte $2b; G3 [a565].byte $2d; A3 [a566].byte $2a; F#3 [a567].byte $2d; A3 [a568].byte $2f; B3 [a569].byte $26; D3 [a56a].byte $2b; G3 [a56b].byte $2d; A3 [a56c].byte $2f; B3 [a56d].byte $30; C4 [a56e].byte $2d; A3 [a56f].byte $36; F#4 [a570].byte $32; D4 [a571].byte $2b; G3 [a572].byte $2f; B3 [a573].byte $2b; G3 [a574].byte $2f; B3 [a575].byte $34; E4 [a576].byte $32; D4 [a577].byte $30; C4 [a578].byte $2f; B3 [a579].byte $31; C#4 [a57a].byte $34; E4 [a57b].byte $31; C#4 [a57c].byte $a0; Note length: 32 [a57d].byte $33; D#4 [a57e].byte $90; Note length: 16 [a57f].byte $2b; G3 [a580].byte $a0; Note length: 32 [a581].byte $2a; F#3 [a582].byte $90; Note length: 16 [a583].byte $38; G#4 [a584].byte $38; G#4 [a585].byte $38; G#4 [a586].byte $38; G#4 [a587].byte $a0; Note length: 32 [a588].byte $38; G#4 [a589].byte $90; Note length: 16 [a58a].byte $3b; B4 [a58b].byte $d0; Note length: 80 [a58c].byte $39; A4 [a58d].byte $90; Note length: 16 [a58e].byte $39; A4 [a58f].byte $37; G4 [a590].byte $36; F#4 [a591].byte $34; E4 [a592].byte $a0; Note length: 32 [a593].byte $32; D4 [a594].byte $3c; C5 [a595].byte $39; A4 [a596].byte $36; F#4 [a597].byte $b0; Note length: 48 [a598].byte $38; G#4 [a599].byte $a0; Note length: 32 [a59a].byte $37; G4 [a59b].byte $90; Note length: 16 [a59c].byte $37; G4 [a59d].byte $39; A4 [a59e].byte $3b; B4 [a59f].byte $b0; Note length: 48 [a5a0].byte $3c; C5 [a5a1].byte $90; Note length: 16 [a5a2].byte $34; E4 [a5a3].byte $a0; Note length: 32 [a5a4].byte $34; E4 [a5a5].byte $90; Note length: 16 [a5a6].byte $30; C4 [a5a7].byte $34; E4 [a5a8].byte $39; A4 [a5a9].byte $32; D4 [a5aa].byte $39; A4 [a5ab].byte $30; C4 [a5ac].byte $34; E4 [a5ad].byte $2b; G3 [a5ae].byte $34; E4 [a5af].byte $2d; A3 [a5b0].byte $d6; Note length: 86 [a5b1].byte $34; E4 [a5b2].byte $95; Note length: 21 [a5b3].byte $36; F#4 [a5b4].byte $34; E4 [a5b5].byte $a0; Note length: 32 [a5b6].byte $33; D#4 [a5b7].byte $e0; Note length: 96 [a5b8].byte $00; Rest [a5b9].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a5ba].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MANTRA [$PRG5::8f37] ;
[a5bb]MSCRIPT_MANTRA_TRI:; [$a5bb] [a5bb].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a5bc].byte $02; '- 2 iterations [a5bd].byte $90; Note length: 16 [a5be].byte $1c; E4 [a5bf].byte $28; E5 [a5c0].byte $23; B4 [a5c1].byte $1c; E4 [a5c2].byte $1e; F#4 [a5c3].byte $28; E5 [a5c4].byte $27; D#5 [a5c5].byte $23; B4 [a5c6].byte $1f; G4 [a5c7].byte $28; E5 [a5c8].byte $23; B4 [a5c9].byte $1c; E4 [a5ca].byte $21; A4 [a5cb].byte $2b; G5 [a5cc].byte $28; E5 [a5cd].byte $1e; F#4 [a5ce].byte $1f; G4 [a5cf].byte $2b; G5 [a5d0].byte $26; D5 [a5d1].byte $1f; G4 [a5d2].byte $18; C4 [a5d3].byte $24; C5 [a5d4].byte $1f; G4 [a5d5].byte $18; C4 [a5d6].byte $1e; F#4 [a5d7].byte $2a; F#5 [a5d8].byte $25; C#5 [a5d9].byte $1e; F#4 [a5da].byte $23; B4 [a5db].byte $27; D#5 [a5dc].byte $2a; F#5 [a5dd].byte $23; B4 [a5de].byte MSCRIPT_OP_END_LOOP; Op: End loop [a5df].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a5e0].byte $02; '- 2 iterations [a5e1].byte $90; Note length: 16 [a5e2].byte $10; E3 [a5e3].byte $1c; E4 [a5e4].byte $17; B3 [a5e5].byte $10; E3 [a5e6].byte $12; F#3 [a5e7].byte $1c; E4 [a5e8].byte $1b; D#4 [a5e9].byte $17; B3 [a5ea].byte $13; G3 [a5eb].byte $1c; E4 [a5ec].byte $17; B3 [a5ed].byte $10; E3 [a5ee].byte $15; A3 [a5ef].byte $1f; G4 [a5f0].byte $1c; E4 [a5f1].byte $12; F#3 [a5f2].byte $13; G3 [a5f3].byte $1f; G4 [a5f4].byte $1a; D4 [a5f5].byte $13; G3 [a5f6].byte $0c; C3 [a5f7].byte $18; C4 [a5f8].byte $13; G3 [a5f9].byte $0c; C3 [a5fa].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a5fb].byte $01; '- 1 loop [a5fc].byte $90; Note length: 16 [a5fd].byte $12; F#3 [a5fe].byte $1e; F#4 [a5ff].byte $19; C#4 [a600].byte $12; F#3 [a601].byte $17; B3 [a602].byte $23; B4 [a603].byte $1e; F#4 [a604].byte $17; B3 [a605].byte MSCRIPT_OP_END_LOOP; Op: End loop [a606].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [a607].byte $02; '- 2 loops [a608].byte $90; Note length: 16 [a609].byte $12; F#3 [a60a].byte $19; C#4 [a60b].byte $1c; E4 [a60c].byte $a0; Note length: 32 [a60d].byte $17; B3 [a60e].byte $90; Note length: 16 [a60f].byte $17; B3 [a610].byte $18; C4 [a611].byte $17; B3 [a612].byte $1c; E4 [a613].byte $23; B4 [a614].byte $28; E5 [a615].byte $23; B4 [a616].byte $1c; E4 [a617].byte $20; G#4 [a618].byte $23; B4 [a619].byte $1c; E4 [a61a].byte $15; A3 [a61b].byte $18; C4 [a61c].byte $21; A4 [a61d].byte $1c; E4 [a61e].byte $15; A3 [a61f].byte $18; C4 [a620].byte $1c; E4 [a621].byte $21; A4 [a622].byte $0e; D3 [a623].byte $15; A3 [a624].byte $1a; D4 [a625].byte $15; A3 [a626].byte $0e; D3 [a627].byte $12; F#3 [a628].byte $15; A3 [a629].byte $1a; D4 [a62a].byte $1b; D#4 [a62b].byte $18; C4 [a62c].byte $14; G#3 [a62d].byte $a0; Note length: 32 [a62e].byte $13; G3 [a62f].byte $90; Note length: 16 [a630].byte $1a; D4 [a631].byte $1f; G4 [a632].byte $1a; D4 [a633].byte $18; C4 [a634].byte $1c; E4 [a635].byte $1f; G4 [a636].byte $24; C5 [a637].byte $1f; G4 [a638].byte $1c; E4 [a639].byte $18; C4 [a63a].byte $13; G3 [a63b].byte $15; A3 [a63c].byte $18; C4 [a63d].byte $1c; E4 [a63e].byte $21; A4 [a63f].byte $21; A4 [a640].byte $1c; E4 [a641].byte $18; C4 [a642].byte $15; A3 [a643].byte $12; F#3 [a644].byte $15; A3 [a645].byte $18; C4 [a646].byte $1c; E4 [a647].byte $96; Note length: 22 [a648].byte $1e; F#4 [a649].byte $95; Note length: 21 [a64a].byte $1c; E4 [a64b].byte $18; C4 [a64c].byte $90; Note length: 16 [a64d].byte $17; B3 [a64e].byte $00; Rest [a64f].byte $84; Note length: 4 [a650].byte $23; B4 [a651].byte $24; C5 [a652].byte $88; Note length: 8 [a653].byte $23; B4 [a654].byte $a0; Note length: 32 [a655].byte $23; B4 [a656].byte $90; Note length: 16 [a657].byte $21; A4 [a658].byte $1f; G4 [a659].byte $1e; F#4 [a65a].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a65b].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MANTRA [$PRG5::8f39] ;
[a65c]MSCRIPT_MANTRA_NOISE:; [$a65c] [a65c].byte MSCRIPT_OP_END; [$a65c] MScriptOp [a65d].byte MSCRIPT_OP_END; [$a65d] MScriptOp
;============================================================================ ; Music for Macon/Victim. ; ; XREFS: ; MSCRIPTS_MASCON_VICTIM [$PRG5::8f3b] ;============================================================================
; ; XREFS: ; MSCRIPTS_MASCON_VICTIM [$PRG5::8f3b] ;
[a65e]MSCRIPT_MASCON_VICTIM_SQ1:; [$a65e] [a65e].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a65f].byte $02; '- Reduce volume by 2 [a660].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a661].byte $50; '- Duty cycle 1 Constant volume/envelope [a662].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a663].byte $00; '- Mode 0: Linear decay [a664].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [a665].byte $a0; '- 160 ticks [a666].byte $00; Rest [a667].byte $00; Rest [a668].byte $00; Rest [a669].byte $00; Rest [a66a].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a66b].byte $03; '- 3 iterations [a66c].byte $8a; Note length: 10 [a66d].byte $00; Rest [a66e].byte $00; Rest [a66f].byte $2d; A3 [a670].byte $00; Rest [a671].byte $00; Rest [a672].byte $2f; B3 [a673].byte $00; Rest [a674].byte $00; Rest [a675].byte $30; C4 [a676].byte $00; Rest [a677].byte $00; Rest [a678].byte $2f; B3 [a679].byte $00; Rest [a67a].byte $00; Rest [a67b].byte $00; Rest [a67c].byte $2d; A3 [a67d].byte $00; Rest [a67e].byte $2d; A3 [a67f].byte $2c; G#3 [a680].byte $2d; A3 [a681].byte $2f; B3 [a682].byte $00; Rest [a683].byte $2f; B3 [a684].byte $00; Rest [a685].byte $30; C4 [a686].byte $00; Rest [a687].byte $30; C4 [a688].byte $2f; B3 [a689].byte $00; Rest [a68a].byte $00; Rest [a68b].byte $00; Rest [a68c].byte $00; Rest [a68d].byte $00; Rest [a68e].byte $00; Rest [a68f].byte $2b; G3 [a690].byte $00; Rest [a691].byte $00; Rest [a692].byte $2d; A3 [a693].byte $00; Rest [a694].byte $00; Rest [a695].byte $2e; A#3 [a696].byte $00; Rest [a697].byte $00; Rest [a698].byte $2d; A3 [a699].byte $00; Rest [a69a].byte $00; Rest [a69b].byte $00; Rest [a69c].byte $2b; G3 [a69d].byte $00; Rest [a69e].byte $2b; G3 [a69f].byte $2a; F#3 [a6a0].byte $2b; G3 [a6a1].byte $2d; A3 [a6a2].byte $00; Rest [a6a3].byte $2d; A3 [a6a4].byte $00; Rest [a6a5].byte $2e; A#3 [a6a6].byte $00; Rest [a6a7].byte $2e; A#3 [a6a8].byte $2d; A3 [a6a9].byte $00; Rest [a6aa].byte $00; Rest [a6ab].byte $00; Rest [a6ac].byte $00; Rest [a6ad].byte MSCRIPT_OP_END_LOOP; Op: End loop [a6ae].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a6af].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MASCON_VICTIM [$PRG5::8f3d] ;
[a6b0]MSCRIPT_MASCON_VICTIM_SQ2:; [$a6b0] [a6b0].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a6b1].byte $02; '- Reduce volume by 2 [a6b2].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a6b3].byte $90; '- Duty cycle 2 Constant volume/envelope [a6b4].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [a6b5].byte $a0; '- 160 ticks [a6b6].byte $00; Rest [a6b7].byte $00; Rest [a6b8].byte $00; Rest [a6b9].byte $00; Rest [a6ba].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a6bb].byte $03; '- 3 iterations [a6bc].byte $8a; Note length: 10 [a6bd].byte $00; Rest [a6be].byte $00; Rest [a6bf].byte $29; F3 [a6c0].byte $00; Rest [a6c1].byte $00; Rest [a6c2].byte $2b; G3 [a6c3].byte $00; Rest [a6c4].byte $00; Rest [a6c5].byte $2d; A3 [a6c6].byte $00; Rest [a6c7].byte $00; Rest [a6c8].byte $2b; G3 [a6c9].byte $00; Rest [a6ca].byte $00; Rest [a6cb].byte $00; Rest [a6cc].byte $29; F3 [a6cd].byte $00; Rest [a6ce].byte $29; F3 [a6cf].byte $28; E3 [a6d0].byte $29; F3 [a6d1].byte $2b; G3 [a6d2].byte $00; Rest [a6d3].byte $2b; G3 [a6d4].byte $00; Rest [a6d5].byte $2d; A3 [a6d6].byte $00; Rest [a6d7].byte $2d; A3 [a6d8].byte $2b; G3 [a6d9].byte $00; Rest [a6da].byte $00; Rest [a6db].byte $00; Rest [a6dc].byte $00; Rest [a6dd].byte $00; Rest [a6de].byte $00; Rest [a6df].byte $27; D#3 [a6e0].byte $00; Rest [a6e1].byte $00; Rest [a6e2].byte $29; F3 [a6e3].byte $00; Rest [a6e4].byte $00; Rest [a6e5].byte $2b; G3 [a6e6].byte $00; Rest [a6e7].byte $00; Rest [a6e8].byte $29; F3 [a6e9].byte $00; Rest [a6ea].byte $00; Rest [a6eb].byte $00; Rest [a6ec].byte $27; D#3 [a6ed].byte $00; Rest [a6ee].byte $27; D#3 [a6ef].byte $26; D3 [a6f0].byte $27; D#3 [a6f1].byte $29; F3 [a6f2].byte $00; Rest [a6f3].byte $29; F3 [a6f4].byte $00; Rest [a6f5].byte $2b; G3 [a6f6].byte $00; Rest [a6f7].byte $2b; G3 [a6f8].byte $29; F3 [a6f9].byte $00; Rest [a6fa].byte $00; Rest [a6fb].byte $00; Rest [a6fc].byte $00; Rest [a6fd].byte MSCRIPT_OP_END_LOOP; Op: End loop [a6fe].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a6ff].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MASCON_VICTIM [$PRG5::8f3f] ;
[a700]MSCRIPT_MASCON_VICTIM_TRI:; [$a700] [a700].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a701].byte $02; '- 2 iterations [a702].byte $8a; Note length: 10 [a703].byte $1f; G4 [a704].byte $00; Rest [a705].byte $00; Rest [a706].byte $00; Rest [a707].byte $1f; G4 [a708].byte $00; Rest [a709].byte $00; Rest [a70a].byte $1f; G4 [a70b].byte $1f; G4 [a70c].byte $00; Rest [a70d].byte $1f; G4 [a70e].byte $00; Rest [a70f].byte $00; Rest [a710].byte $00; Rest [a711].byte $00; Rest [a712].byte $00; Rest [a713].byte $1f; G4 [a714].byte $00; Rest [a715].byte $1e; F#4 [a716].byte $1f; G4 [a717].byte $00; Rest [a718].byte $1f; G4 [a719].byte $00; Rest [a71a].byte $1f; G4 [a71b].byte $1f; G4 [a71c].byte $00; Rest [a71d].byte $1f; G4 [a71e].byte $00; Rest [a71f].byte $00; Rest [a720].byte $00; Rest [a721].byte $1a; D4 [a722].byte $18; C4 [a723].byte $1d; F4 [a724].byte $00; Rest [a725].byte $00; Rest [a726].byte $00; Rest [a727].byte $1d; F4 [a728].byte $00; Rest [a729].byte $00; Rest [a72a].byte $1d; F4 [a72b].byte $1d; F4 [a72c].byte $00; Rest [a72d].byte $1d; F4 [a72e].byte $00; Rest [a72f].byte $00; Rest [a730].byte $00; Rest [a731].byte $00; Rest [a732].byte $00; Rest [a733].byte $1d; F4 [a734].byte $00; Rest [a735].byte $1c; E4 [a736].byte $1d; F4 [a737].byte $00; Rest [a738].byte $1d; F4 [a739].byte $00; Rest [a73a].byte $1d; F4 [a73b].byte $1d; F4 [a73c].byte $00; Rest [a73d].byte $1d; F4 [a73e].byte $00; Rest [a73f].byte $00; Rest [a740].byte $00; Rest [a741].byte $1d; F4 [a742].byte $1e; F#4 [a743].byte MSCRIPT_OP_END_LOOP; Op: End loop [a744].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a745].byte $02; '- 2 iterations [a746].byte $8a; Note length: 10 [a747].byte $13; G3 [a748].byte $1f; G4 [a749].byte $1f; G4 [a74a].byte $13; G3 [a74b].byte $13; G3 [a74c].byte $1f; G4 [a74d].byte $1f; G4 [a74e].byte $13; G3 [a74f].byte $13; G3 [a750].byte $1f; G4 [a751].byte $13; G3 [a752].byte $1f; G4 [a753].byte $1f; G4 [a754].byte $13; G3 [a755].byte $1f; G4 [a756].byte $1f; G4 [a757].byte $13; G3 [a758].byte $1f; G4 [a759].byte $12; F#3 [a75a].byte $13; G3 [a75b].byte $1f; G4 [a75c].byte $13; G3 [a75d].byte $1f; G4 [a75e].byte $13; G3 [a75f].byte $13; G3 [a760].byte $1f; G4 [a761].byte $13; G3 [a762].byte $13; G3 [a763].byte $1f; G4 [a764].byte $13; G3 [a765].byte $0e; D3 [a766].byte $0c; C3 [a767].byte $11; F3 [a768].byte $11; F3 [a769].byte $1d; F4 [a76a].byte $1d; F4 [a76b].byte $11; F3 [a76c].byte $1d; F4 [a76d].byte $1d; F4 [a76e].byte $11; F3 [a76f].byte $11; F3 [a770].byte $1d; F4 [a771].byte $11; F3 [a772].byte $1d; F4 [a773].byte $1d; F4 [a774].byte $11; F3 [a775].byte $1d; F4 [a776].byte $1d; F4 [a777].byte $11; F3 [a778].byte $1d; F4 [a779].byte $10; E3 [a77a].byte $11; F3 [a77b].byte $1d; F4 [a77c].byte $11; F3 [a77d].byte $1d; F4 [a77e].byte $1d; F4 [a77f].byte $11; F3 [a780].byte $1d; F4 [a781].byte $11; F3 [a782].byte $11; F3 [a783].byte $1d; F4 [a784].byte $11; F3 [a785].byte $11; F3 [a786].byte $12; F#3 [a787].byte MSCRIPT_OP_END_LOOP; Op: End loop [a788].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a789].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_MASCON_VICTIM [$PRG5::8f41] ;
[a78a]MSCRIPT_MASCON_VICTIM_NOISE:; [$a78a] [a78a].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a78b].byte $08; '- 8 iterations [a78c].byte $8a,$31,$31,$31,$31,$31,$31,$31; [$a78c] byte [a794].byte $31,$31,$31,$31,$31,$31,$31,$85; [$a794] byte [a79c].byte $31,$31,$31,$31,$8a,$31,$31,$31; [$a79c] byte [a7a4].byte $31,$31,$31,$31,$31,$31,$31,$31; [$a7a4] byte [a7ac].byte $31,$85,$31,$31,$31,$31,$8a,$31; [$a7ac] byte [a7b4].byte $31; [$a7b4] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [a7b6].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a7b7].byte MSCRIPT_OP_END; Op: End [a7b8].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for boss battles. ; ; XREFS: ; MSCRIPTS_BOSS [$PRG5::8f43] ;============================================================================
; ; XREFS: ; MSCRIPTS_BOSS [$PRG5::8f43] ;
[a7b9]MSCRIPT_BOSS_SQ1:; [$a7b9] [a7b9].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a7ba].byte $02; '- Reduce volume by 2 [a7bb].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a7bc].byte $90; '- Duty cycle 2 Constant volume/envelope [a7bd].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a7be].byte $01; '- Mode 1: Curve but held [a7bf].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a7c0].byte $02; '- 2 iterations [a7c1].byte $8f; Note length: 15 [a7c2].byte $34; E4 [a7c3].byte $28; E3 [a7c4].byte $33; D#4 [a7c5].byte $27; D#3 [a7c6].byte $2f; B3 [a7c7].byte $23; B2 [a7c8].byte $2e; A#3 [a7c9].byte $22; A#2 [a7ca].byte $34; E4 [a7cb].byte $28; E3 [a7cc].byte $33; D#4 [a7cd].byte $27; D#3 [a7ce].byte $2f; B3 [a7cf].byte $23; B2 [a7d0].byte $2e; A#3 [a7d1].byte $22; A#2 [a7d2].byte $35; F4 [a7d3].byte $29; F3 [a7d4].byte $34; E4 [a7d5].byte $28; E3 [a7d6].byte $30; C4 [a7d7].byte $24; C3 [a7d8].byte $2f; B3 [a7d9].byte $23; B2 [a7da].byte $35; F4 [a7db].byte $29; F3 [a7dc].byte $34; E4 [a7dd].byte $28; E3 [a7de].byte $30; C4 [a7df].byte $24; C3 [a7e0].byte $2f; B3 [a7e1].byte $23; B2 [a7e2].byte $38; G#4 [a7e3].byte $37; G4 [a7e4].byte $2c; G#3 [a7e5].byte $2d; A3 [a7e6].byte $38; G#4 [a7e7].byte $37; G4 [a7e8].byte $2c; G#3 [a7e9].byte $2d; A3 [a7ea].byte $97; Note length: 23 [a7eb].byte $3a; A#4 [a7ec].byte $87; Note length: 7 [a7ed].byte $39; A4 [a7ee].byte $97; Note length: 23 [a7ef].byte $2d; A3 [a7f0].byte $87; Note length: 7 [a7f1].byte $2e; A#3 [a7f2].byte $97; Note length: 23 [a7f3].byte $3d; C#5 [a7f4].byte $87; Note length: 7 [a7f5].byte $3c; C5 [a7f6].byte $97; Note length: 23 [a7f7].byte $30; C4 [a7f8].byte $87; Note length: 7 [a7f9].byte $31; C#4 [a7fa].byte $85; Note length: 5 [a7fb].byte $43; G5 [a7fc].byte $42; F#5 [a7fd].byte $41; F5 [a7fe].byte $3c; C5 [a7ff].byte $3b; B4 [a800].byte $3a; A#4 [a801].byte $37; G4 [a802].byte $36; F#4 [a803].byte $35; F4 [a804].byte $30; C4 [a805].byte $2f; B3 [a806].byte $2c; G#3 [a807].byte $2b; G3 [a808].byte $2a; F#3 [a809].byte $29; F3 [a80a].byte $24; C3 [a80b].byte $23; B2 [a80c].byte $22; A#2 [a80d].byte $18; C2 [a80e].byte $19; C#2 [a80f].byte $1a; D2 [a810].byte $1b; D#2 [a811].byte $1c; E2 [a812].byte $1d; F2 [a813].byte MSCRIPT_OP_END_LOOP; Op: End loop [a814].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a815].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_BOSS [$PRG5::8f45] ;
[a816]MSCRIPT_BOSS_SQ2:; [$a816] [a816].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a817].byte $04; '- Reduce volume by 4 [a818].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a819].byte $90; '- Duty cycle 2 Constant volume/envelope [a81a].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a81b].byte $17; '- Duty cycle 0 Constant volume/envelope [a81c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a81d].byte $02; '- 2 iterations [a81e].byte $88; Note length: 8 [a81f].byte $00; Rest [a820].byte $8f; Note length: 15 [a821].byte $34; E4 [a822].byte $28; E3 [a823].byte $33; D#4 [a824].byte $27; D#3 [a825].byte $2f; B3 [a826].byte $23; B2 [a827].byte $2e; A#3 [a828].byte $22; A#2 [a829].byte $34; E4 [a82a].byte $28; E3 [a82b].byte $33; D#4 [a82c].byte $27; D#3 [a82d].byte $2f; B3 [a82e].byte $23; B2 [a82f].byte $2e; A#3 [a830].byte $22; A#2 [a831].byte $35; F4 [a832].byte $29; F3 [a833].byte $34; E4 [a834].byte $28; E3 [a835].byte $30; C4 [a836].byte $24; C3 [a837].byte $2f; B3 [a838].byte $23; B2 [a839].byte $35; F4 [a83a].byte $29; F3 [a83b].byte $34; E4 [a83c].byte $28; E3 [a83d].byte $30; C4 [a83e].byte $24; C3 [a83f].byte $2f; B3 [a840].byte $23; B2 [a841].byte $38; G#4 [a842].byte $37; G4 [a843].byte $2c; G#3 [a844].byte $2d; A3 [a845].byte $38; G#4 [a846].byte $37; G4 [a847].byte $2c; G#3 [a848].byte $2d; A3 [a849].byte $97; Note length: 23 [a84a].byte $3a; A#4 [a84b].byte $87; Note length: 7 [a84c].byte $39; A4 [a84d].byte $97; Note length: 23 [a84e].byte $2d; A3 [a84f].byte $87; Note length: 7 [a850].byte $2e; A#3 [a851].byte $97; Note length: 23 [a852].byte $3d; C#5 [a853].byte $87; Note length: 7 [a854].byte $3c; C5 [a855].byte $97; Note length: 23 [a856].byte $30; C4 [a857].byte $87; Note length: 7 [a858].byte $31; C#4 [a859].byte $85; Note length: 5 [a85a].byte $43; G5 [a85b].byte $42; F#5 [a85c].byte $41; F5 [a85d].byte $3c; C5 [a85e].byte $3b; B4 [a85f].byte $3a; A#4 [a860].byte $37; G4 [a861].byte $36; F#4 [a862].byte $35; F4 [a863].byte $30; C4 [a864].byte $2f; B3 [a865].byte $2c; G#3 [a866].byte $2b; G3 [a867].byte $2a; F#3 [a868].byte $29; F3 [a869].byte $24; C3 [a86a].byte $23; B2 [a86b].byte $22; A#2 [a86c].byte $18; C2 [a86d].byte $19; C#2 [a86e].byte $1a; D2 [a86f].byte $87; Note length: 7 [a870].byte $1b; D#2 [a871].byte MSCRIPT_OP_END_LOOP; Op: End loop [a872].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a873].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_BOSS [$PRG5::8f47] ;
[a874]MSCRIPT_BOSS_TRI:; [$a874] [a874].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a875].byte $02; '- 2 iterations [a876].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [a877].byte $fd; '- Down 3 semitones [a878].byte $8a; Note length: 10 [a879].byte $13; G3 [a87a].byte $14; G#3 [a87b].byte $13; G3 [a87c].byte $14; G#3 [a87d].byte $13; G3 [a87e].byte $14; G#3 [a87f].byte $15; A3 [a880].byte $14; G#3 [a881].byte $15; A3 [a882].byte $14; G#3 [a883].byte $15; A3 [a884].byte $14; G#3 [a885].byte $13; G3 [a886].byte $14; G#3 [a887].byte $13; G3 [a888].byte $14; G#3 [a889].byte $13; G3 [a88a].byte $14; G#3 [a88b].byte $15; A3 [a88c].byte $14; G#3 [a88d].byte $15; A3 [a88e].byte $14; G#3 [a88f].byte $15; A3 [a890].byte $14; G#3 [a891].byte $14; G#3 [a892].byte $15; A3 [a893].byte $14; G#3 [a894].byte $15; A3 [a895].byte $14; G#3 [a896].byte $15; A3 [a897].byte $16; A#3 [a898].byte $15; A3 [a899].byte $16; A#3 [a89a].byte $15; A3 [a89b].byte $16; A#3 [a89c].byte $15; A3 [a89d].byte $14; G#3 [a89e].byte $15; A3 [a89f].byte $14; G#3 [a8a0].byte $15; A3 [a8a1].byte $14; G#3 [a8a2].byte $15; A3 [a8a3].byte $16; A#3 [a8a4].byte $15; A3 [a8a5].byte $16; A#3 [a8a6].byte $15; A3 [a8a7].byte $16; A#3 [a8a8].byte $15; A3 [a8a9].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [a8aa].byte $00; '- Reset [a8ab].byte $88; Note length: 8 [a8ac].byte $0f; D#3 [a8ad].byte $87; Note length: 7 [a8ae].byte $1b; D#4 [a8af].byte $88; Note length: 8 [a8b0].byte $27; D#5 [a8b1].byte $87; Note length: 7 [a8b2].byte $1b; D#4 [a8b3].byte $88; Note length: 8 [a8b4].byte $0f; D#3 [a8b5].byte $87; Note length: 7 [a8b6].byte $1b; D#4 [a8b7].byte $88; Note length: 8 [a8b8].byte $27; D#5 [a8b9].byte $87; Note length: 7 [a8ba].byte $1b; D#4 [a8bb].byte $88; Note length: 8 [a8bc].byte $0f; D#3 [a8bd].byte $87; Note length: 7 [a8be].byte $1b; D#4 [a8bf].byte $88; Note length: 8 [a8c0].byte $27; D#5 [a8c1].byte $87; Note length: 7 [a8c2].byte $1b; D#4 [a8c3].byte $88; Note length: 8 [a8c4].byte $0f; D#3 [a8c5].byte $87; Note length: 7 [a8c6].byte $1b; D#4 [a8c7].byte $88; Note length: 8 [a8c8].byte $27; D#5 [a8c9].byte $87; Note length: 7 [a8ca].byte $1b; D#4 [a8cb].byte $88; Note length: 8 [a8cc].byte $11; F3 [a8cd].byte $87; Note length: 7 [a8ce].byte $1d; F4 [a8cf].byte $88; Note length: 8 [a8d0].byte $29; F5 [a8d1].byte $87; Note length: 7 [a8d2].byte $1d; F4 [a8d3].byte $88; Note length: 8 [a8d4].byte $11; F3 [a8d5].byte $87; Note length: 7 [a8d6].byte $1d; F4 [a8d7].byte $88; Note length: 8 [a8d8].byte $29; F5 [a8d9].byte $87; Note length: 7 [a8da].byte $1d; F4 [a8db].byte $88; Note length: 8 [a8dc].byte $14; G#3 [a8dd].byte $87; Note length: 7 [a8de].byte $20; G#4 [a8df].byte $88; Note length: 8 [a8e0].byte $2c; G#5 [a8e1].byte $87; Note length: 7 [a8e2].byte $20; G#4 [a8e3].byte $88; Note length: 8 [a8e4].byte $14; G#3 [a8e5].byte $87; Note length: 7 [a8e6].byte $20; G#4 [a8e7].byte $88; Note length: 8 [a8e8].byte $2c; G#5 [a8e9].byte $87; Note length: 7 [a8ea].byte $20; G#4 [a8eb].byte $94; Note length: 20 [a8ec].byte $37; G6 [a8ed].byte $38; G#6 [a8ee].byte $2f; B5 [a8ef].byte $23; B4 [a8f0].byte $8a; Note length: 10 [a8f1].byte $29; F5 [a8f2].byte $2a; F#5 [a8f3].byte $23; B4 [a8f4].byte $24; C5 [a8f5].byte MSCRIPT_OP_END_LOOP; Op: End loop [a8f6].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a8f7].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_BOSS [$PRG5::8f49] ;
[a8f8]MSCRIPT_BOSS_NOISE:; [$a8f8] [a8f8].byte $ff,$ff; [$a8f8] byte
;============================================================================ ; TODO: Music 0x0B ; ; XREFS: ; MSCRIPTS_HOURGLASS [$PRG5::8f4b] ;============================================================================
; ; XREFS: ; MSCRIPTS_HOURGLASS [$PRG5::8f4b] ;
[a8fa]MSCRIPT_HOURGLASS_SQ1:; [$a8fa] [a8fa].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a8fb].byte $02; '- Reduce volume by 2 [a8fc].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a8fd].byte $50; '- Duty cycle 1 Constant volume/envelope [a8fe].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [a8ff].byte $01; '- Mode 1: Curve but held [a900].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a901].byte $02; '- 2 iterations [a902].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [a903].byte $80; '- 128 ticks [a904].byte $00; Rest [a905].byte $c0; Note length: 64 [a906].byte $00; Rest [a907].byte MSCRIPT_OP_END_LOOP; Op: End loop [a908].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a909].byte $03; '- 3 iterations [a90a].byte $84; Note length: 4 [a90b].byte $1f; G2 [a90c].byte $24; C3 [a90d].byte $1f; G2 [a90e].byte $00; Rest [a90f].byte $00; Rest [a910].byte $00; Rest [a911].byte $00; Rest [a912].byte $00; Rest [a913].byte $2b; G3 [a914].byte $30; C4 [a915].byte $2b; G3 [a916].byte $00; Rest [a917].byte $00; Rest [a918].byte $00; Rest [a919].byte $00; Rest [a91a].byte $00; Rest [a91b].byte $24; C3 [a91c].byte $29; F3 [a91d].byte $24; C3 [a91e].byte $00; Rest [a91f].byte $00; Rest [a920].byte $00; Rest [a921].byte $00; Rest [a922].byte $00; Rest [a923].byte $30; C4 [a924].byte $35; F4 [a925].byte $30; C4 [a926].byte $00; Rest [a927].byte $00; Rest [a928].byte $00; Rest [a929].byte $00; Rest [a92a].byte $00; Rest [a92b].byte $29; F3 [a92c].byte $2e; A#3 [a92d].byte $29; F3 [a92e].byte $00; Rest [a92f].byte $00; Rest [a930].byte $00; Rest [a931].byte $00; Rest [a932].byte $00; Rest [a933].byte $35; F4 [a934].byte $3a; A#4 [a935].byte $35; F4 [a936].byte $00; Rest [a937].byte $00; Rest [a938].byte $00; Rest [a939].byte $00; Rest [a93a].byte $00; Rest [a93b].byte MSCRIPT_OP_END_LOOP; Op: End loop [a93c].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a93d].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_HOURGLASS [$PRG5::8f4d] ;
[a93e]MSCRIPT_HOURGLASS_SQ2:; [$a93e] [a93e].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [a93f].byte $02; '- Reduce volume by 2 [a940].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a941].byte $90; '- Duty cycle 2 Constant volume/envelope [a942].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [a943].byte $13; '- Duty cycle 0 Constant volume/envelope [a944].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a945].byte $02; '- 2 iterations [a946].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [a947].byte $80; '- 128 ticks [a948].byte $00; Rest [a949].byte $c0; Note length: 64 [a94a].byte $00; Rest [a94b].byte MSCRIPT_OP_END_LOOP; Op: End loop [a94c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a94d].byte $03; '- 3 iterations [a94e].byte $84; Note length: 4 [a94f].byte $00; Rest [a950].byte $1f; G2 [a951].byte $24; C3 [a952].byte $1f; G2 [a953].byte $00; Rest [a954].byte $00; Rest [a955].byte $00; Rest [a956].byte $00; Rest [a957].byte $00; Rest [a958].byte $2b; G3 [a959].byte $30; C4 [a95a].byte $2b; G3 [a95b].byte $00; Rest [a95c].byte $00; Rest [a95d].byte $00; Rest [a95e].byte $00; Rest [a95f].byte $00; Rest [a960].byte $24; C3 [a961].byte $29; F3 [a962].byte $24; C3 [a963].byte $00; Rest [a964].byte $00; Rest [a965].byte $00; Rest [a966].byte $00; Rest [a967].byte $00; Rest [a968].byte $30; C4 [a969].byte $35; F4 [a96a].byte $30; C4 [a96b].byte $00; Rest [a96c].byte $00; Rest [a96d].byte $00; Rest [a96e].byte $00; Rest [a96f].byte $00; Rest [a970].byte $29; F3 [a971].byte $2e; A#3 [a972].byte $29; F3 [a973].byte $00; Rest [a974].byte $00; Rest [a975].byte $00; Rest [a976].byte $00; Rest [a977].byte $00; Rest [a978].byte $35; F4 [a979].byte $3a; A#4 [a97a].byte $35; F4 [a97b].byte $00; Rest [a97c].byte $00; Rest [a97d].byte $00; Rest [a97e].byte $00; Rest [a97f].byte MSCRIPT_OP_END_LOOP; Op: End loop [a980].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [a981].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_HOURGLASS [$PRG5::8f4f] ;
[a982]MSCRIPT_HOURGLASS_TRI:; [$a982] [a982].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a983].byte $02; '- 2 iterations [a984].byte $84; Note length: 4 [a985].byte $0e; D3 [a986].byte $00; Rest [a987].byte $00; Rest [a988].byte $00; Rest [a989].byte $0e; D3 [a98a].byte $00; Rest [a98b].byte $00; Rest [a98c].byte $00; Rest [a98d].byte $1a; D4 [a98e].byte $00; Rest [a98f].byte $00; Rest [a990].byte $00; Rest [a991].byte $1a; D4 [a992].byte $00; Rest [a993].byte $00; Rest [a994].byte $00; Rest [a995].byte $13; G3 [a996].byte $00; Rest [a997].byte $00; Rest [a998].byte $00; Rest [a999].byte $13; G3 [a99a].byte $00; Rest [a99b].byte $00; Rest [a99c].byte $00; Rest [a99d].byte $1f; G4 [a99e].byte $00; Rest [a99f].byte $00; Rest [a9a0].byte $00; Rest [a9a1].byte $1f; G4 [a9a2].byte $00; Rest [a9a3].byte $00; Rest [a9a4].byte $00; Rest [a9a5].byte $18; C4 [a9a6].byte $00; Rest [a9a7].byte $00; Rest [a9a8].byte $00; Rest [a9a9].byte $18; C4 [a9aa].byte $00; Rest [a9ab].byte $00; Rest [a9ac].byte $00; Rest [a9ad].byte $24; C5 [a9ae].byte $00; Rest [a9af].byte $00; Rest [a9b0].byte $00; Rest [a9b1].byte $24; C5 [a9b2].byte $00; Rest [a9b3].byte $00; Rest [a9b4].byte $00; Rest [a9b5].byte MSCRIPT_OP_END_LOOP; Op: End loop [a9b6].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [a9b7].byte $02; '- 2 iterations [a9b8].byte $84; Note length: 4 [a9b9].byte $0e; D3 [a9ba].byte $00; Rest [a9bb].byte $00; Rest [a9bc].byte $00; Rest [a9bd].byte $0e; D3 [a9be].byte $00; Rest [a9bf].byte $00; Rest [a9c0].byte $00; Rest [a9c1].byte $1a; D4 [a9c2].byte $00; Rest [a9c3].byte $00; Rest [a9c4].byte $00; Rest [a9c5].byte $1a; D4 [a9c6].byte $00; Rest [a9c7].byte $00; Rest [a9c8].byte $00; Rest [a9c9].byte $13; G3 [a9ca].byte $00; Rest [a9cb].byte $00; Rest [a9cc].byte $00; Rest [a9cd].byte $13; G3 [a9ce].byte $00; Rest [a9cf].byte $00; Rest [a9d0].byte $00; Rest [a9d1].byte $1f; G4 [a9d2].byte $00; Rest [a9d3].byte $00; Rest [a9d4].byte $00; Rest [a9d5].byte $1f; G4 [a9d6].byte $00; Rest [a9d7].byte $00; Rest [a9d8].byte $00; Rest [a9d9].byte $18; C4 [a9da].byte $00; Rest [a9db].byte $00; Rest [a9dc].byte $00; Rest [a9dd].byte $18; C4 [a9de].byte $00; Rest [a9df].byte $00; Rest [a9e0].byte $00; Rest [a9e1].byte $24; C5 [a9e2].byte $00; Rest [a9e3].byte $00; Rest [a9e4].byte $00; Rest [a9e5].byte $24; C5 [a9e6].byte $00; Rest [a9e7].byte $00; Rest [a9e8].byte $00; Rest [a9e9].byte MSCRIPT_OP_END_LOOP; Op: End loop [a9ea].byte $0e; D3 [a9eb].byte $00; Rest [a9ec].byte $0e; D3 [a9ed].byte $00; Rest [a9ee].byte $0e; D3 [a9ef].byte $00; Rest [a9f0].byte $0e; D3 [a9f1].byte $00; Rest [a9f2].byte $1a; D4 [a9f3].byte $00; Rest [a9f4].byte $1a; D4 [a9f5].byte $00; Rest [a9f6].byte $1a; D4 [a9f7].byte $00; Rest [a9f8].byte $1a; D4 [a9f9].byte $00; Rest [a9fa].byte $13; G3 [a9fb].byte $00; Rest [a9fc].byte $13; G3 [a9fd].byte $00; Rest [a9fe].byte $13; G3 [a9ff].byte $00; Rest [aa00].byte $13; G3 [aa01].byte $00; Rest [aa02].byte $1f; G4 [aa03].byte $00; Rest [aa04].byte $1f; G4 [aa05].byte $00; Rest [aa06].byte $1f; G4 [aa07].byte $00; Rest [aa08].byte $1f; G4 [aa09].byte $00; Rest [aa0a].byte $18; C4 [aa0b].byte $00; Rest [aa0c].byte $18; C4 [aa0d].byte $00; Rest [aa0e].byte $18; C4 [aa0f].byte $00; Rest [aa10].byte $18; C4 [aa11].byte $00; Rest [aa12].byte $24; C5 [aa13].byte $00; Rest [aa14].byte $24; C5 [aa15].byte $00; Rest [aa16].byte $24; C5 [aa17].byte $00; Rest [aa18].byte $24; C5 [aa19].byte $00; Rest [aa1a].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [aa1b].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_HOURGLASS [$PRG5::8f51] ;
[aa1c]MSCRIPT_HOURGLASS_NOISE:; [$aa1c] [aa1c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aa1d].byte $03; '- 3 iterations [aa1e].byte $84,$31,$00,$00,$00,$31,$00,$00; [$aa1e] byte [aa26].byte $00,$31,$00,$00,$00,$31,$00,$00; [$aa26] byte [aa2e].byte $00,$31,$00,$00,$00,$31,$00,$00; [$aa2e] byte [aa36].byte $00,$31,$00,$00,$00,$31,$00,$00; [$aa36] byte [aa3e].byte $00,$31,$00,$00,$00,$31,$00,$00; [$aa3e] byte [aa46].byte $00,$31,$00,$00,$00,$31,$00,$00; [$aa46] byte [aa4e].byte $00; [$aa4e] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [aa50].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aa51].byte $02; '- 2 iterations [aa52].byte $84,$31,$00,$31,$00,$31,$00,$31; [$aa52] byte [aa5a].byte $00,$31,$00,$31,$00,$31,$00,$31; [$aa5a] byte [aa62].byte $00,$31,$00,$31,$00,$31,$00,$31; [$aa62] byte [aa6a].byte $00,$31,$00,$31,$00,$31,$00,$31; [$aa6a] byte [aa72].byte $00,$31,$00,$31,$00,$31,$00,$31; [$aa72] byte [aa7a].byte $00,$31,$00,$31,$00,$31,$00,$31; [$aa7a] byte [aa82].byte $00; [$aa82] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [aa84].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [aa85].byte MSCRIPT_OP_END; Op: End [aa86].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for the ending outro sequence. ; ; XREFS: ; MSCRIPTS_ENDING [$PRG5::8f53] ;============================================================================
; ; XREFS: ; MSCRIPTS_ENDING [$PRG5::8f53] ;
[aa87]MSCRIPT_ENDING_SQ1:; [$aa87] [aa87].byte MSCRIPT_OP_SET_GLOBAL_TRANSPOSE; Op: Set global transpose [aa88].byte $ff; '- Down 1 semitone [aa89].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [aa8a].byte $00; '- Reduce volume by 0 [aa8b].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [aa8c].byte $d0; '- Duty cycle 3 Constant volume/envelope [aa8d].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [aa8e].byte $01; '- Mode 1: Curve but held [aa8f].byte MSCRIPT_OP_SET_SQ_PITCH_EFFECT_DEPTH; Op: Set SQ2 envelope depth [aa90].byte $02; '- 2 [aa91].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [aa92].byte $f4; '- Down 1 octave [aa93].byte $86; Note length: 6 [aa94].byte $1f; F#2 [aa95].byte $21; G#2 [aa96].byte $23; A#2 [aa97].byte $24; B2 [aa98].byte $26; C#3 [aa99].byte $28; D#3 [aa9a].byte $29; E3 [aa9b].byte $2a; F3 [aa9c].byte $2b; F#3 [aa9d].byte $2d; G#3 [aa9e].byte $2f; A#3 [aa9f].byte $30; B3 [aaa0].byte $32; C#4 [aaa1].byte $34; D#4 [aaa2].byte $35; E4 [aaa3].byte $36; F4 [aaa4].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [aaa5].byte $90; '- Duty cycle 2 Constant volume/envelope [aaa6].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aaa7].byte $02; '- 2 iterations [aaa8].byte $b0; Note length: 48 [aaa9].byte $37; F#4 [aaaa].byte $3c; B4 [aaab].byte $3e; C#5 [aaac].byte $45; G#5 [aaad].byte $c8; Note length: 72 [aaae].byte $43; F#5 [aaaf].byte $8c; Note length: 12 [aab0].byte $3c; B4 [aab1].byte $3e; C#5 [aab2].byte $3f; D5 [aab3].byte $3c; B4 [aab4].byte $3f; D5 [aab5].byte $3e; C#5 [aab6].byte $00; Rest [aab7].byte $3b; A#4 [aab8].byte $98; Note length: 24 [aab9].byte $37; F#4 [aaba].byte MSCRIPT_OP_END_LOOP; Op: End loop [aabb].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aabc].byte $02; '- 2 iterations [aabd].byte $a4; Note length: 36 [aabe].byte $43; F#5 [aabf].byte $8c; Note length: 12 [aac0].byte $3c; B4 [aac1].byte $b0; Note length: 48 [aac2].byte $3c; B4 [aac3].byte $8c; Note length: 12 [aac4].byte $41; E5 [aac5].byte $41; E5 [aac6].byte $40; D#5 [aac7].byte $a4; Note length: 36 [aac8].byte $3c; B4 [aac9].byte $8c; Note length: 12 [aaca].byte $37; F#4 [aacb].byte $39; G#4 [aacc].byte $a4; Note length: 36 [aacd].byte $3a; A4 [aace].byte $8c; Note length: 12 [aacf].byte $3a; A4 [aad0].byte $39; G#4 [aad1].byte $3a; A4 [aad2].byte $39; G#4 [aad3].byte $bc; Note length: 60 [aad4].byte $37; F#4 [aad5].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [aad6].byte $01; '- 1 loop [aad7].byte $86; Note length: 6 [aad8].byte $37; F#4 [aad9].byte $39; G#4 [aada].byte $3b; A#4 [aadb].byte $3c; B4 [aadc].byte $3e; C#5 [aadd].byte $40; D#5 [aade].byte $41; E5 [aadf].byte $42; F5 [aae0].byte MSCRIPT_OP_END_LOOP; Op: End loop [aae1].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [aae2].byte $02; '- 2 loops [aae3].byte $86; Note length: 6 [aae4].byte $3c; B4 [aae5].byte $3b; A#4 [aae6].byte $3c; B4 [aae7].byte $3e; C#5 [aae8].byte $40; D#5 [aae9].byte $41; E5 [aaea].byte $42; F5 [aaeb].byte $43; F#5 [aaec].byte $b0; Note length: 48 [aaed].byte $44; G5 [aaee].byte $46; A5 [aaef].byte $c8; Note length: 72 [aaf0].byte $43; F#5 [aaf1].byte $8c; Note length: 12 [aaf2].byte $3c; B4 [aaf3].byte $3e; C#5 [aaf4].byte $3f; D5 [aaf5].byte $3f; D5 [aaf6].byte $41; E5 [aaf7].byte $3e; C#5 [aaf8].byte $00; Rest [aaf9].byte $3c; B4 [aafa].byte $3a; A4 [aafb].byte $98; Note length: 24 [aafc].byte $37; F#4 [aafd].byte $86; Note length: 6 [aafe].byte $38; G4 [aaff].byte $37; F#4 [ab00].byte $8c; Note length: 12 [ab01].byte $35; E4 [ab02].byte $92; Note length: 18 [ab03].byte $37; F#4 [ab04].byte $86; Note length: 6 [ab05].byte $30; B3 [ab06].byte $33; D4 [ab07].byte $37; F#4 [ab08].byte $3c; B4 [ab09].byte $37; F#4 [ab0a].byte $3c; B4 [ab0b].byte $3f; D5 [ab0c].byte $b0; Note length: 48 [ab0d].byte $44; G5 [ab0e].byte $46; A5 [ab0f].byte $bc; Note length: 60 [ab10].byte $43; F#5 [ab11].byte $8c; Note length: 12 [ab12].byte $3c; B4 [ab13].byte $3c; B4 [ab14].byte $3e; C#5 [ab15].byte $3f; D5 [ab16].byte $3f; D5 [ab17].byte $41; E5 [ab18].byte $3e; C#5 [ab19].byte $00; Rest [ab1a].byte $3c; B4 [ab1b].byte $98; Note length: 24 [ab1c].byte $3a; A4 [ab1d].byte $8c; Note length: 12 [ab1e].byte $3f; D5 [ab1f].byte $3f; D5 [ab20].byte $41; E5 [ab21].byte $3e; C#5 [ab22].byte $00; Rest [ab23].byte $3c; B4 [ab24].byte $3a; A4 [ab25].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [ab26].byte $cc; '- 204 ticks [ab27].byte $3c; B4 [ab28].byte $86; Note length: 6 [ab29].byte $3f; D5 [ab2a].byte $00; Rest [ab2b].byte $3c; B4 [ab2c].byte $3f; D5 [ab2d].byte $44; G5 [ab2e].byte $00; Rest [ab2f].byte $3f; D5 [ab30].byte $44; G5 [ab31].byte $46; A5 [ab32].byte $41; E5 [ab33].byte $3e; C#5 [ab34].byte $3a; A4 [ab35].byte $3c; B4 [ab36].byte $00; Rest [ab37].byte $3c; B4 [ab38].byte $3c; B4 [ab39].byte $88; Note length: 8 [ab3a].byte $3c; B4 [ab3b].byte $00; Rest [ab3c].byte $00; Rest [ab3d].byte $00; Rest [ab3e].byte $3c; B4 [ab3f].byte $37; F#4 [ab40].byte $3c; B4 [ab41].byte $40; D#5 [ab42].byte $98; Note length: 24 [ab43].byte $3c; B4 [ab44].byte $88; Note length: 8 [ab45].byte $00; Rest [ab46].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_ENDING [$PRG5::8f55] ;
[ab47]MSCRIPT_ENDING_SQ2:; [$ab47] [ab47].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [ab48].byte $04; '- Reduce volume by 4 [ab49].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [ab4a].byte $d0; '- Duty cycle 3 Constant volume/envelope [ab4b].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [ab4c].byte $00; '- Mode 0: Linear decay [ab4d].byte MSCRIPT_OP_SET_SQ_PITCH_EFFECT_DEPTH; Op: Set SQ2 envelope depth [ab4e].byte $00; '- 0 [ab4f].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [ab50].byte $f4; '- Down 1 octave [ab51].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [ab52].byte $13; '- Duty cycle 0 Constant volume/envelope [ab53].byte $98; Note length: 24 [ab54].byte $00; Rest [ab55].byte $86; Note length: 6 [ab56].byte $2d; A3 [ab57].byte $2f; B3 [ab58].byte $30; C4 [ab59].byte $32; D4 [ab5a].byte $34; E4 [ab5b].byte $35; F4 [ab5c].byte $37; G4 [ab5d].byte $39; A4 [ab5e].byte $3b; B4 [ab5f].byte $3c; C5 [ab60].byte $3e; D5 [ab61].byte $3f; D#5 [ab62].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [ab63].byte $50; '- Duty cycle 1 Constant volume/envelope [ab64].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [ab65].byte $01; '- Mode 1: Curve but held [ab66].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [ab67].byte $02; '- 2 iterations [ab68].byte $86; Note length: 6 [ab69].byte $40; E5 [ab6a].byte $40; E5 [ab6b].byte $40; E5 [ab6c].byte $00; Rest [ab6d].byte $48; C6 [ab6e].byte $37; G4 [ab6f].byte $40; E5 [ab70].byte $40; E5 [ab71].byte $40; E5 [ab72].byte $40; E5 [ab73].byte $40; E5 [ab74].byte $00; Rest [ab75].byte $48; C6 [ab76].byte $37; G4 [ab77].byte $40; E5 [ab78].byte $40; E5 [ab79].byte $41; F5 [ab7a].byte $41; F5 [ab7b].byte $41; F5 [ab7c].byte $00; Rest [ab7d].byte $48; C6 [ab7e].byte $39; A4 [ab7f].byte $41; F5 [ab80].byte $41; F5 [ab81].byte $41; F5 [ab82].byte $41; F5 [ab83].byte $41; F5 [ab84].byte $00; Rest [ab85].byte $48; C6 [ab86].byte $39; A4 [ab87].byte $41; F5 [ab88].byte $41; F5 [ab89].byte $40; E5 [ab8a].byte $40; E5 [ab8b].byte $40; E5 [ab8c].byte $00; Rest [ab8d].byte $48; C6 [ab8e].byte $37; G4 [ab8f].byte $40; E5 [ab90].byte $40; E5 [ab91].byte $40; E5 [ab92].byte $3c; C5 [ab93].byte $37; G4 [ab94].byte $3c; C5 [ab95].byte $40; E5 [ab96].byte $40; E5 [ab97].byte $43; G5 [ab98].byte $43; G5 [ab99].byte $38; G#4 [ab9a].byte $3c; C5 [ab9b].byte $3f; D#5 [ab9c].byte $44; G#5 [ab9d].byte $48; C6 [ab9e].byte $44; G#5 [ab9f].byte $37; G4 [aba0].byte $00; Rest [aba1].byte $00; Rest [aba2].byte $00; Rest [aba3].byte $2e; A#3 [aba4].byte $32; D4 [aba5].byte $37; G4 [aba6].byte $3b; B4 [aba7].byte $3e; D5 [aba8].byte $3b; B4 [aba9].byte MSCRIPT_OP_END_LOOP; Op: End loop [abaa].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [abab].byte $02; '- 2 iterations [abac].byte $86; Note length: 6 [abad].byte $40; E5 [abae].byte $43; G5 [abaf].byte $37; G4 [abb0].byte $3c; C5 [abb1].byte $40; E5 [abb2].byte $43; G5 [abb3].byte $37; G4 [abb4].byte $3c; C5 [abb5].byte $40; E5 [abb6].byte $43; G5 [abb7].byte $37; G4 [abb8].byte $3c; C5 [abb9].byte $40; E5 [abba].byte $43; G5 [abbb].byte $37; G4 [abbc].byte $3c; C5 [abbd].byte $41; F5 [abbe].byte $43; G5 [abbf].byte $37; G4 [abc0].byte $3c; C5 [abc1].byte $40; E5 [abc2].byte $43; G5 [abc3].byte $37; G4 [abc4].byte $3c; C5 [abc5].byte $40; E5 [abc6].byte $43; G5 [abc7].byte $37; G4 [abc8].byte $3c; C5 [abc9].byte $40; E5 [abca].byte $43; G5 [abcb].byte $3c; C5 [abcc].byte $40; E5 [abcd].byte $33; D#4 [abce].byte $37; G4 [abcf].byte $3a; A#4 [abd0].byte $3f; D#5 [abd1].byte $43; G5 [abd2].byte $3f; D#5 [abd3].byte $3a; A#4 [abd4].byte $37; G4 [abd5].byte $35; F4 [abd6].byte $39; A4 [abd7].byte $3c; C5 [abd8].byte $41; F5 [abd9].byte $3c; C5 [abda].byte $39; A4 [abdb].byte $37; G4 [abdc].byte $32; D4 [abdd].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [abde].byte $01; '- 1 loop [abdf].byte $86; Note length: 6 [abe0].byte $37; G4 [abe1].byte $3c; C5 [abe2].byte $40; E5 [abe3].byte $3c; C5 [abe4].byte $37; G4 [abe5].byte $3c; C5 [abe6].byte $40; E5 [abe7].byte $3c; C5 [abe8].byte $40; E5 [abe9].byte $41; F5 [abea].byte $43; G5 [abeb].byte $45; A5 [abec].byte $47; B5 [abed].byte $48; C6 [abee].byte $4a; D6 [abef].byte $4b; D#6 [abf0].byte MSCRIPT_OP_END_LOOP; Op: End loop [abf1].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [abf2].byte $02; '- 2 loops [abf3].byte $86; Note length: 6 [abf4].byte $37; G4 [abf5].byte $3c; C5 [abf6].byte $40; E5 [abf7].byte $3c; C5 [abf8].byte $37; G4 [abf9].byte $3c; C5 [abfa].byte $40; E5 [abfb].byte $3c; C5 [abfc].byte $40; E5 [abfd].byte $3f; D#5 [abfe].byte $40; E5 [abff].byte $41; F5 [ac00].byte $43; G5 [ac01].byte $45; A5 [ac02].byte $47; B5 [ac03].byte $48; C6 [ac04].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [ac05].byte $02; '- 2 iterations [ac06].byte $86; Note length: 6 [ac07].byte $38; G#4 [ac08].byte $3c; C5 [ac09].byte $3f; D#5 [ac0a].byte $44; G#5 [ac0b].byte $48; C6 [ac0c].byte $4b; D#6 [ac0d].byte $48; C6 [ac0e].byte $44; G#5 [ac0f].byte $3a; A#4 [ac10].byte $3e; D5 [ac11].byte $41; F5 [ac12].byte $46; A#5 [ac13].byte $4a; D6 [ac14].byte $4d; F6 [ac15].byte $4a; D6 [ac16].byte $46; A#5 [ac17].byte $30; C4 [ac18].byte $34; E4 [ac19].byte $37; G4 [ac1a].byte $3c; C5 [ac1b].byte $40; E5 [ac1c].byte $43; G5 [ac1d].byte $48; C6 [ac1e].byte $4c; E6 [ac1f].byte $48; C6 [ac20].byte $43; G5 [ac21].byte $40; E5 [ac22].byte $3c; C5 [ac23].byte $37; G4 [ac24].byte $34; E4 [ac25].byte $30; C4 [ac26].byte $34; E4 [ac27].byte $38; G#4 [ac28].byte $3c; C5 [ac29].byte $3f; D#5 [ac2a].byte $44; G#5 [ac2b].byte $48; C6 [ac2c].byte $44; G#5 [ac2d].byte $41; F5 [ac2e].byte $3e; D5 [ac2f].byte $3a; A#4 [ac30].byte $35; F4 [ac31].byte $3a; A#4 [ac32].byte $3e; D5 [ac33].byte $41; F5 [ac34].byte $3e; D5 [ac35].byte $3a; A#4 [ac36].byte $3e; D5 [ac37].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [ac38].byte $01; '- 1 loop [ac39].byte $8c; Note length: 12 [ac3a].byte $3f; D#5 [ac3b].byte $86; Note length: 6 [ac3c].byte $41; F5 [ac3d].byte $3f; D#5 [ac3e].byte $8c; Note length: 12 [ac3f].byte $3c; C5 [ac40].byte $3c; C5 [ac41].byte $86; Note length: 6 [ac42].byte $30; C4 [ac43].byte $33; D#4 [ac44].byte $37; G4 [ac45].byte $3c; C5 [ac46].byte $3f; D#5 [ac47].byte $3c; C5 [ac48].byte $37; G4 [ac49].byte $33; D#4 [ac4a].byte MSCRIPT_OP_END_LOOP; Op: End loop [ac4b].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [ac4c].byte $02; '- 2 loops [ac4d].byte $86; Note length: 6 [ac4e].byte $3f; D#5 [ac4f].byte $44; G#5 [ac50].byte $48; C6 [ac51].byte $44; G#5 [ac52].byte $3f; D#5 [ac53].byte $44; G#5 [ac54].byte $8c; Note length: 12 [ac55].byte $46; A#5 [ac56].byte $00; Rest [ac57].byte $41; F5 [ac58].byte $43; G5 [ac59].byte $92; Note length: 18 [ac5a].byte $40; E5 [ac5b].byte $86; Note length: 6 [ac5c].byte $3c; C5 [ac5d].byte $37; G4 [ac5e].byte $3c; C5 [ac5f].byte $34; E4 [ac60].byte $37; G4 [ac61].byte $30; C4 [ac62].byte $34; E4 [ac63].byte $40; E5 [ac64].byte $3c; C5 [ac65].byte $37; G4 [ac66].byte $3c; C5 [ac67].byte $34; E4 [ac68].byte $37; G4 [ac69].byte $30; C4 [ac6a].byte $34; E4 [ac6b].byte $3e; D5 [ac6c].byte $3a; A#4 [ac6d].byte $35; F4 [ac6e].byte $3a; A#4 [ac6f].byte $32; D4 [ac70].byte $35; F4 [ac71].byte $2e; A#3 [ac72].byte $32; D4 [ac73].byte $3e; D5 [ac74].byte $3a; A#4 [ac75].byte $35; F4 [ac76].byte $3a; A#4 [ac77].byte $32; D4 [ac78].byte $35; F4 [ac79].byte $2e; A#3 [ac7a].byte $32; D4 [ac7b].byte $3c; C5 [ac7c].byte $38; G#4 [ac7d].byte $33; D#4 [ac7e].byte $38; G#4 [ac7f].byte $30; C4 [ac80].byte $33; D#4 [ac81].byte $2c; G#3 [ac82].byte $30; C4 [ac83].byte $41; F5 [ac84].byte $3e; D5 [ac85].byte $3a; A#4 [ac86].byte $35; F4 [ac87].byte $3e; D5 [ac88].byte $00; Rest [ac89].byte $3e; D5 [ac8a].byte $3e; D5 [ac8b].byte $88; Note length: 8 [ac8c].byte $34; E4 [ac8d].byte $00; Rest [ac8e].byte $00; Rest [ac8f].byte $00; Rest [ac90].byte $34; E4 [ac91].byte $30; C4 [ac92].byte $34; E4 [ac93].byte $37; G4 [ac94].byte $98; Note length: 24 [ac95].byte $34; E4 [ac96].byte $88; Note length: 8 [ac97].byte $00; Rest [ac98].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_ENDING [$PRG5::8f57] ;
[ac99]MSCRIPT_ENDING_TRI:; [$ac99] [ac99].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [ac9a].byte $e8; '- Down 2 octaves [ac9b].byte $b0; Note length: 48 [ac9c].byte $00; Rest [ac9d].byte $86; Note length: 6 [ac9e].byte $3b; B6 [ac9f].byte $3c; C7 [aca0].byte $3e; D7 [aca1].byte $40; E7 [aca2].byte $41; F7 [aca3].byte $43; G7 [aca4].byte $45; A7 [aca5].byte $47; B7 [aca6].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aca7].byte $02; '- 2 iterations [aca8].byte $86; Note length: 6 [aca9].byte $30; C6 [acaa].byte $30; C6 [acab].byte $30; C6 [acac].byte $30; C6 [acad].byte $30; C6 [acae].byte $00; Rest [acaf].byte $30; C6 [acb0].byte $30; C6 [acb1].byte $30; C6 [acb2].byte $30; C6 [acb3].byte $30; C6 [acb4].byte $30; C6 [acb5].byte $30; C6 [acb6].byte $00; Rest [acb7].byte $30; C6 [acb8].byte $30; C6 [acb9].byte $30; C6 [acba].byte $30; C6 [acbb].byte $30; C6 [acbc].byte $30; C6 [acbd].byte $30; C6 [acbe].byte $00; Rest [acbf].byte $30; C6 [acc0].byte $30; C6 [acc1].byte $30; C6 [acc2].byte $30; C6 [acc3].byte $30; C6 [acc4].byte $30; C6 [acc5].byte $30; C6 [acc6].byte $00; Rest [acc7].byte $30; C6 [acc8].byte $30; C6 [acc9].byte $30; C6 [acca].byte $30; C6 [accb].byte $30; C6 [accc].byte $30; C6 [accd].byte $30; C6 [acce].byte $00; Rest [accf].byte $30; C6 [acd0].byte $30; C6 [acd1].byte $30; C6 [acd2].byte $30; C6 [acd3].byte $30; C6 [acd4].byte $30; C6 [acd5].byte $30; C6 [acd6].byte $00; Rest [acd7].byte $30; C6 [acd8].byte $30; C6 [acd9].byte $2c; G#5 [acda].byte $2c; G#5 [acdb].byte $38; G#6 [acdc].byte $38; G#6 [acdd].byte $2c; G#5 [acde].byte $2c; G#5 [acdf].byte $2b; G5 [ace0].byte $00; Rest [ace1].byte $00; Rest [ace2].byte $00; Rest [ace3].byte $37; G6 [ace4].byte $37; G6 [ace5].byte $2b; G5 [ace6].byte $2b; G5 [ace7].byte $2b; G5 [ace8].byte $2b; G5 [ace9].byte MSCRIPT_OP_END_LOOP; Op: End loop [acea].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aceb].byte $02; '- 2 iterations [acec].byte $86; Note length: 6 [aced].byte $30; C6 [acee].byte $30; C6 [acef].byte $30; C6 [acf0].byte $30; C6 [acf1].byte $30; C6 [acf2].byte $00; Rest [acf3].byte $30; C6 [acf4].byte $30; C6 [acf5].byte $30; C6 [acf6].byte $30; C6 [acf7].byte $30; C6 [acf8].byte $30; C6 [acf9].byte $30; C6 [acfa].byte $00; Rest [acfb].byte $30; C6 [acfc].byte $30; C6 [acfd].byte $30; C6 [acfe].byte $30; C6 [acff].byte $30; C6 [ad00].byte $30; C6 [ad01].byte $30; C6 [ad02].byte $00; Rest [ad03].byte $30; C6 [ad04].byte $30; C6 [ad05].byte $30; C6 [ad06].byte $30; C6 [ad07].byte $30; C6 [ad08].byte $30; C6 [ad09].byte $30; C6 [ad0a].byte $00; Rest [ad0b].byte $30; C6 [ad0c].byte $30; C6 [ad0d].byte $33; D#6 [ad0e].byte $33; D#6 [ad0f].byte $33; D#6 [ad10].byte $33; D#6 [ad11].byte $33; D#6 [ad12].byte $00; Rest [ad13].byte $33; D#6 [ad14].byte $33; D#6 [ad15].byte $35; F6 [ad16].byte $35; F6 [ad17].byte $35; F6 [ad18].byte $35; F6 [ad19].byte $35; F6 [ad1a].byte $00; Rest [ad1b].byte $35; F6 [ad1c].byte $35; F6 [ad1d].byte $30; C6 [ad1e].byte $30; C6 [ad1f].byte $30; C6 [ad20].byte $30; C6 [ad21].byte $30; C6 [ad22].byte $00; Rest [ad23].byte $30; C6 [ad24].byte $30; C6 [ad25].byte $30; C6 [ad26].byte $30; C6 [ad27].byte $30; C6 [ad28].byte $30; C6 [ad29].byte $30; C6 [ad2a].byte $00; Rest [ad2b].byte $30; C6 [ad2c].byte $30; C6 [ad2d].byte MSCRIPT_OP_END_LOOP; Op: End loop [ad2e].byte $2c; G#5 [ad2f].byte $2c; G#5 [ad30].byte $2c; G#5 [ad31].byte $2c; G#5 [ad32].byte $2c; G#5 [ad33].byte $2c; G#5 [ad34].byte $2c; G#5 [ad35].byte $2c; G#5 [ad36].byte $2e; A#5 [ad37].byte $2e; A#5 [ad38].byte $2e; A#5 [ad39].byte $2e; A#5 [ad3a].byte $2e; A#5 [ad3b].byte $2e; A#5 [ad3c].byte $2e; A#5 [ad3d].byte $2e; A#5 [ad3e].byte $30; C6 [ad3f].byte $30; C6 [ad40].byte $30; C6 [ad41].byte $30; C6 [ad42].byte $30; C6 [ad43].byte $00; Rest [ad44].byte $30; C6 [ad45].byte $30; C6 [ad46].byte $30; C6 [ad47].byte $30; C6 [ad48].byte $30; C6 [ad49].byte $30; C6 [ad4a].byte $30; C6 [ad4b].byte $00; Rest [ad4c].byte $30; C6 [ad4d].byte $30; C6 [ad4e].byte $2c; G#5 [ad4f].byte $2c; G#5 [ad50].byte $2c; G#5 [ad51].byte $2c; G#5 [ad52].byte $2c; G#5 [ad53].byte $2c; G#5 [ad54].byte $2e; A#5 [ad55].byte $00; Rest [ad56].byte $00; Rest [ad57].byte $00; Rest [ad58].byte $2e; A#5 [ad59].byte $2e; A#5 [ad5a].byte $2e; A#5 [ad5b].byte $2e; A#5 [ad5c].byte $2e; A#5 [ad5d].byte $2e; A#5 [ad5e].byte $30; C6 [ad5f].byte $30; C6 [ad60].byte $30; C6 [ad61].byte $30; C6 [ad62].byte $30; C6 [ad63].byte $00; Rest [ad64].byte $30; C6 [ad65].byte $30; C6 [ad66].byte $30; C6 [ad67].byte $30; C6 [ad68].byte $30; C6 [ad69].byte $30; C6 [ad6a].byte $30; C6 [ad6b].byte $00; Rest [ad6c].byte $30; C6 [ad6d].byte $30; C6 [ad6e].byte $2c; G#5 [ad6f].byte $2c; G#5 [ad70].byte $2c; G#5 [ad71].byte $2c; G#5 [ad72].byte $2c; G#5 [ad73].byte $2c; G#5 [ad74].byte $2c; G#5 [ad75].byte $2c; G#5 [ad76].byte $2e; A#5 [ad77].byte $2e; A#5 [ad78].byte $2e; A#5 [ad79].byte $2e; A#5 [ad7a].byte $2e; A#5 [ad7b].byte $2e; A#5 [ad7c].byte $2e; A#5 [ad7d].byte $2e; A#5 [ad7e].byte $30; C6 [ad7f].byte $30; C6 [ad80].byte $30; C6 [ad81].byte $30; C6 [ad82].byte $30; C6 [ad83].byte $00; Rest [ad84].byte $30; C6 [ad85].byte $30; C6 [ad86].byte $30; C6 [ad87].byte $30; C6 [ad88].byte $30; C6 [ad89].byte $30; C6 [ad8a].byte $30; C6 [ad8b].byte $00; Rest [ad8c].byte $30; C6 [ad8d].byte $30; C6 [ad8e].byte $2c; G#5 [ad8f].byte $2c; G#5 [ad90].byte $2c; G#5 [ad91].byte $2c; G#5 [ad92].byte $2c; G#5 [ad93].byte $2c; G#5 [ad94].byte $2e; A#5 [ad95].byte $00; Rest [ad96].byte $00; Rest [ad97].byte $00; Rest [ad98].byte $2e; A#5 [ad99].byte $2e; A#5 [ad9a].byte $2e; A#5 [ad9b].byte $2e; A#5 [ad9c].byte $2e; A#5 [ad9d].byte $2e; A#5 [ad9e].byte $2c; G#5 [ad9f].byte $2c; G#5 [ada0].byte $2c; G#5 [ada1].byte $2c; G#5 [ada2].byte $2c; G#5 [ada3].byte $2c; G#5 [ada4].byte $2e; A#5 [ada5].byte $00; Rest [ada6].byte $00; Rest [ada7].byte $00; Rest [ada8].byte $2e; A#5 [ada9].byte $2e; A#5 [adaa].byte $2e; A#5 [adab].byte $2e; A#5 [adac].byte $8c; Note length: 12 [adad].byte $30; C6 [adae].byte $86; Note length: 6 [adaf].byte $30; C6 [adb0].byte $30; C6 [adb1].byte $30; C6 [adb2].byte $30; C6 [adb3].byte $30; C6 [adb4].byte $30; C6 [adb5].byte $30; C6 [adb6].byte $30; C6 [adb7].byte $30; C6 [adb8].byte $30; C6 [adb9].byte $30; C6 [adba].byte $30; C6 [adbb].byte $30; C6 [adbc].byte $30; C6 [adbd].byte $30; C6 [adbe].byte $86; Note length: 6 [adbf].byte $2c; G#5 [adc0].byte $2c; G#5 [adc1].byte $2c; G#5 [adc2].byte $2c; G#5 [adc3].byte $2c; G#5 [adc4].byte $2c; G#5 [adc5].byte $2c; G#5 [adc6].byte $2c; G#5 [adc7].byte $2e; A#5 [adc8].byte $2e; A#5 [adc9].byte $2e; A#5 [adca].byte $2e; A#5 [adcb].byte $2e; A#5 [adcc].byte $00; Rest [adcd].byte $2e; A#5 [adce].byte $2e; A#5 [adcf].byte $88; Note length: 8 [add0].byte $30; C6 [add1].byte $00; Rest [add2].byte $00; Rest [add3].byte $00; Rest [add4].byte $30; C6 [add5].byte $34; E6 [add6].byte $30; C6 [add7].byte $30; C6 [add8].byte $98; Note length: 24 [add9].byte $30; C6 [adda].byte $88; Note length: 8 [addb].byte $00; Rest [addc].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_ENDING [$PRG5::8f59] ;
[addd]MSCRIPT_ENDING_NOISE:; [$addd] [addd].byte $8c,$21,$86,$31,$31,$8c,$21,$86; [$addd] byte [ade5].byte $31,$31,$21,$21,$21,$21,$21,$21; [$ade5] byte [aded].byte $21,$21; [$aded] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [adf0].byte $02; '- 2 iterations [adf1].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$adf1] byte [adf9].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$adf9] byte [ae01].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$ae01] byte [ae09].byte $21,$86,$31,$31,$31,$00,$31,$31; [$ae09] byte [ae11].byte $8c,$21,$86,$31,$31,$31,$00,$31; [$ae11] byte [ae19].byte $31,$8c,$21,$86,$31,$31,$31,$00; [$ae19] byte [ae21].byte $31,$31,$8c,$21,$21,$21,$21,$21; [$ae21] byte [ae29].byte $21,$86,$31,$00,$8c,$21,$21,$86; [$ae29] byte [ae31].byte $21,$21; [$ae31] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [ae34].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [ae35].byte $02; '- 2 iterations [ae36].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$ae36] byte [ae3e].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$ae3e] byte [ae46].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$ae46] byte [ae4e].byte $21,$86,$31,$31,$31,$00,$31,$31; [$ae4e] byte [ae56].byte $8c,$21,$86,$31,$31,$31,$00,$31; [$ae56] byte [ae5e].byte $31,$8c,$21,$86,$31,$31,$31,$00; [$ae5e] byte [ae66].byte $31,$31,$8c,$21,$86,$31,$31,$31; [$ae66] byte [ae6e].byte $00,$31,$31,$8c,$21,$86,$31,$31; [$ae6e] byte [ae76].byte $31,$00,$31,$31,$21,$21,$21,$31; [$ae76] byte [ae7e].byte MSCRIPT_OP_END_LOOP; Op: End loop [ae7f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [ae80].byte $02; '- 2 iterations [ae81].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$ae81] byte [ae89].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$ae89] byte [ae91].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$ae91] byte [ae99].byte $21,$86,$31,$31,$31,$00,$31,$31; [$ae99] byte [aea1].byte $8c,$21,$86,$31,$31; [$aea1] byte .byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [aea7].byte $01; '- 1 loop [aea8].byte $86,$31,$00,$31,$31,$8c,$21,$86; [$aea8] byte [aeb0].byte $31,$31,$31,$00,$31,$31,$8c,$21; [$aeb0] byte [aeb8].byte $86,$31,$31,$31,$00,$31,$31,$8c; [$aeb8] byte [aec0].byte $21,$86,$31,$31,$31,$00,$8c,$21; [$aec0] byte [aec8].byte $86,$21,$21,$21,$31; [$aec8] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [aece].byte MSCRIPT_OP_NEXT_LOOP_IF_N_ITERS; Op: Next loop if looped N times [aecf].byte $02; '- 2 loops [aed0].byte $8c,$21,$21,$21,$21,$86,$31,$00; [$aed0] byte [aed8].byte $8c,$21,$21,$86,$21,$21,$8c,$21; [$aed8] byte [aee0].byte $21,$21,$21,$00,$21,$21,$21; [$aee0] byte .byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [aee8].byte $02; '- 2 iterations [aee9].byte $86,$31,$00,$31,$31,$31,$00,$31; [$aee9] byte [aef1].byte $31,$31,$00,$31,$31,$31,$00,$31; [$aef1] byte [aef9].byte $31; [$aef9] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [aefb].byte $86,$31,$00,$31,$31,$31,$00,$31; [$aefb] byte [af03].byte $31,$31,$00,$31,$31,$86,$21,$00; [$af03] byte [af0b].byte $21,$21,$88,$21,$00,$84,$21,$21; [$af0b] byte [af13].byte $21,$21,$88,$21,$21,$21,$21,$98; [$af13] byte [af1b].byte $21,$88,$00; [$af1b] byte .byte MSCRIPT_OP_END; Op: End [af1f].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Music for the King's room. ; ; XREFS: ; MSCRIPTS_KINGS_ROOM [$PRG5::8f5b] ;============================================================================
; ; XREFS: ; MSCRIPTS_KINGS_ROOM [$PRG5::8f5b] ;
[af20]MSCRIPT_KINGS_ROOM_SQ1:; [$af20] [af20].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [af21].byte $00; '- Reduce volume by 0 [af22].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [af23].byte $b0; '- Duty cycle 2 Constant volume/envelope [af24].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [af25].byte $01; '- Mode 1: Curve but held [af26].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [af27].byte $f4; '- Down 1 octave [af28].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [af29].byte $02; '- 2 iterations [af2a].byte $b0; Note length: 48 [af2b].byte $30; C4 [af2c].byte $2b; G3 [af2d].byte $30; C4 [af2e].byte $37; G4 [af2f].byte $c0; Note length: 64 [af30].byte $37; G4 [af31].byte $90; Note length: 16 [af32].byte $35; F4 [af33].byte $34; E4 [af34].byte $e0; Note length: 96 [af35].byte $35; F4 [af36].byte $c0; Note length: 64 [af37].byte $35; F4 [af38].byte $90; Note length: 16 [af39].byte $34; E4 [af3a].byte $32; D4 [af3b].byte $b0; Note length: 48 [af3c].byte $34; E4 [af3d].byte $30; C4 [af3e].byte $c0; Note length: 64 [af3f].byte $34; E4 [af40].byte $90; Note length: 16 [af41].byte $2d; A3 [af42].byte $30; C4 [af43].byte $b0; Note length: 48 [af44].byte $30; C4 [af45].byte $2f; B3 [af46].byte MSCRIPT_OP_END_LOOP; Op: End loop [af47].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [af48].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_KINGS_ROOM [$PRG5::8f5d] ;
[af49]MSCRIPT_KINGS_ROOM_SQ2:; [$af49] [af49].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [af4a].byte $02; '- Reduce volume by 2 [af4b].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [af4c].byte $b0; '- Duty cycle 2 Constant volume/envelope [af4d].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [af4e].byte $f4; '- Down 1 octave [af4f].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [af50].byte $01; '- Mode 1: Curve but held [af51].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [af52].byte $02; '- 2 iterations [af53].byte $b0; Note length: 48 [af54].byte $28; E3 [af55].byte $28; E3 [af56].byte $28; E3 [af57].byte $34; E4 [af58].byte $c0; Note length: 64 [af59].byte $2e; A#3 [af5a].byte $90; Note length: 16 [af5b].byte $30; C4 [af5c].byte $2e; A#3 [af5d].byte $e0; Note length: 96 [af5e].byte $2d; A3 [af5f].byte $c0; Note length: 64 [af60].byte $2c; G#3 [af61].byte $90; Note length: 16 [af62].byte $30; C4 [af63].byte $2c; G#3 [af64].byte $b0; Note length: 48 [af65].byte $2b; G3 [af66].byte $28; E3 [af67].byte $c0; Note length: 64 [af68].byte $2a; F#3 [af69].byte $90; Note length: 16 [af6a].byte $26; D3 [af6b].byte $2a; F#3 [af6c].byte $b0; Note length: 48 [af6d].byte $29; F3 [af6e].byte $26; D3 [af6f].byte MSCRIPT_OP_END_LOOP; Op: End loop [af70].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [af71].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_KINGS_ROOM [$PRG5::8f5f] ;
[af72]MSCRIPT_KINGS_ROOM_TRI:; [$af72] [af72].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [af73].byte $f4; '- Down 1 octave [af74].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [af75].byte $02; '- 2 iterations [af76].byte $90; Note length: 16 [af77].byte $18; C4 [af78].byte $18; C4 [af79].byte $18; C4 [af7a].byte $18; C4 [af7b].byte $18; C4 [af7c].byte $18; C4 [af7d].byte $18; C4 [af7e].byte $18; C4 [af7f].byte $18; C4 [af80].byte $18; C4 [af81].byte $18; C4 [af82].byte $18; C4 [af83].byte $18; C4 [af84].byte $18; C4 [af85].byte $18; C4 [af86].byte $24; C5 [af87].byte $18; C4 [af88].byte $18; C4 [af89].byte $18; C4 [af8a].byte $18; C4 [af8b].byte $18; C4 [af8c].byte $24; C5 [af8d].byte $18; C4 [af8e].byte $18; C4 [af8f].byte $1d; F4 [af90].byte $1d; F4 [af91].byte $1d; F4 [af92].byte $1d; F4 [af93].byte $1d; F4 [af94].byte $1d; F4 [af95].byte $18; C4 [af96].byte $18; C4 [af97].byte $18; C4 [af98].byte $18; C4 [af99].byte $18; C4 [af9a].byte $18; C4 [af9b].byte $1a; D4 [af9c].byte $1a; D4 [af9d].byte $1a; D4 [af9e].byte $1a; D4 [af9f].byte $1a; D4 [afa0].byte $1a; D4 [afa1].byte $1f; G4 [afa2].byte $1f; G4 [afa3].byte $1f; G4 [afa4].byte $1f; G4 [afa5].byte $1f; G4 [afa6].byte $1f; G4 [afa7].byte MSCRIPT_OP_END_LOOP; Op: End loop [afa8].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [afa9].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_KINGS_ROOM [$PRG5::8f61] ;
[afaa]MSCRIPT_KINGS_ROOM_NOISE:; [$afaa] [afaa].byte $ff,$ff; [$afaa] byte
;============================================================================ ; Music for the temples. ; ; XREFS: ; MSCRIPTS_TEMPLE [$PRG5::8f63] ;============================================================================
; ; XREFS: ; MSCRIPTS_TEMPLE [$PRG5::8f63] ;
[afac]MSCRIPT_TEMPLE_SQ1:; [$afac] [afac].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [afad].byte $02; '- Reduce volume by 2 [afae].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [afaf].byte $b0; '- Duty cycle 2 Constant volume/envelope [afb0].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [afb1].byte $01; '- Mode 1: Curve but held [afb2].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [afb3].byte $f4; '- Down 1 octave [afb4].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [afb5].byte $02; '- 2 iterations [afb6].byte $ac; Note length: 44 [afb7].byte $00; Rest [afb8].byte $32; D4 [afb9].byte $d8; Note length: 88 [afba].byte $37; G4 [afbb].byte $c2; Note length: 66 [afbc].byte $37; G4 [afbd].byte $8b; Note length: 11 [afbe].byte $36; F#4 [afbf].byte $34; E4 [afc0].byte $d8; Note length: 88 [afc1].byte $36; F#4 [afc2].byte $ac; Note length: 44 [afc3].byte $00; Rest [afc4].byte $37; G4 [afc5].byte $d8; Note length: 88 [afc6].byte $3e; D5 [afc7].byte $c2; Note length: 66 [afc8].byte $3e; D5 [afc9].byte $8b; Note length: 11 [afca].byte $3c; C5 [afcb].byte $3b; B4 [afcc].byte $ac; Note length: 44 [afcd].byte $39; A4 [afce].byte $37; G4 [afcf].byte $c2; Note length: 66 [afd0].byte $37; G4 [afd1].byte $96; Note length: 22 [afd2].byte $36; F#4 [afd3].byte $d8; Note length: 88 [afd4].byte $36; F#4 [afd5].byte $ac; Note length: 44 [afd6].byte $00; Rest [afd7].byte $32; D4 [afd8].byte $d8; Note length: 88 [afd9].byte $37; G4 [afda].byte $c2; Note length: 66 [afdb].byte $37; G4 [afdc].byte $8b; Note length: 11 [afdd].byte $36; F#4 [afde].byte $34; E4 [afdf].byte $d8; Note length: 88 [afe0].byte $36; F#4 [afe1].byte $ac; Note length: 44 [afe2].byte $00; Rest [afe3].byte $32; D4 [afe4].byte $37; G4 [afe5].byte $3b; B4 [afe6].byte $c2; Note length: 66 [afe7].byte $3e; D5 [afe8].byte $96; Note length: 22 [afe9].byte $40; E5 [afea].byte $c2; Note length: 66 [afeb].byte $34; E4 [afec].byte $96; Note length: 22 [afed].byte $39; A4 [afee].byte $ac; Note length: 44 [afef].byte $37; G4 [aff0].byte $96; Note length: 22 [aff1].byte $36; F#4 [aff2].byte $34; E4 [aff3].byte $8b; Note length: 11 [aff4].byte $36; F#4 [aff5].byte $37; G4 [aff6].byte $36; F#4 [aff7].byte $37; G4 [aff8].byte $88; Note length: 8 [aff9].byte $36; F#4 [affa].byte $87; Note length: 7 [affb].byte $37; G4 [affc].byte $87; Note length: 7 [affd].byte $36; F#4 [affe].byte $8b; Note length: 11 [afff].byte $34; E4 [b000].byte $36; F#4 [b001].byte $d8; Note length: 88 [b002].byte $37; G4 [b003].byte $36; F#4 [b004].byte MSCRIPT_OP_END_LOOP; Op: End loop [b005].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b006].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TEMPLE [$PRG5::8f65] ;
[b007]MSCRIPT_TEMPLE_SQ2:; [$b007] [b007].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [b008].byte $02; '- Reduce volume by 2 [b009].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [b00a].byte $b0; '- Duty cycle 2 Constant volume/envelope [b00b].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [b00c].byte $01; '- Mode 1: Curve but held [b00d].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [b00e].byte $f4; '- Down 1 octave [b00f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b010].byte $02; '- 2 iterations [b011].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b012].byte $b0; '- 176 ticks [b013].byte $2f; B3 [b014].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b015].byte $84; '- 132 ticks [b016].byte $30; C4 [b017].byte $ac; Note length: 44 [b018].byte $30; C4 [b019].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b01a].byte $b0; '- 176 ticks [b01b].byte $32; D4 [b01c].byte $d8; Note length: 88 [b01d].byte $34; E4 [b01e].byte $34; E4 [b01f].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b020].byte $84; '- 132 ticks [b021].byte $30; C4 [b022].byte $96; Note length: 22 [b023].byte $32; D4 [b024].byte $30; C4 [b025].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b026].byte $b0; '- 176 ticks [b027].byte $2f; B3 [b028].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b029].byte $84; '- 132 ticks [b02a].byte $30; C4 [b02b].byte $ac; Note length: 44 [b02c].byte $30; C4 [b02d].byte $d8; Note length: 88 [b02e].byte $2f; B3 [b02f].byte $ac; Note length: 44 [b030].byte $32; D4 [b031].byte $37; G4 [b032].byte $c2; Note length: 66 [b033].byte $37; G4 [b034].byte $96; Note length: 22 [b035].byte $3c; C5 [b036].byte $c2; Note length: 66 [b037].byte $30; C4 [b038].byte $96; Note length: 22 [b039].byte $34; E4 [b03a].byte $d8; Note length: 88 [b03b].byte $30; C4 [b03c].byte $30; C4 [b03d].byte $2f; B3 [b03e].byte $30; C4 [b03f].byte MSCRIPT_OP_END_LOOP; Op: End loop [b040].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b041].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TEMPLE [$PRG5::8f67] ;
[b042]MSCRIPT_TEMPLE_TRI:; [$b042] [b042].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [b043].byte $e8; '- Down 2 octaves [b044].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b045].byte $02; '- 2 iterations [b046].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b047].byte $84; '- 132 ticks [b048].byte $1f; G4 [b049].byte $ac; Note length: 44 [b04a].byte $1f; G4 [b04b].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b04c].byte $b0; '- 176 ticks [b04d].byte $21; A4 [b04e].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b04f].byte $84; '- 132 ticks [b050].byte $23; B4 [b051].byte $ac; Note length: 44 [b052].byte $23; B4 [b053].byte $d8; Note length: 88 [b054].byte $24; C5 [b055].byte $25; C#5 [b056].byte $26; D5 [b057].byte $26; D5 [b058].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b059].byte $84; '- 132 ticks [b05a].byte $1f; G4 [b05b].byte $ac; Note length: 44 [b05c].byte $1f; G4 [b05d].byte MSCRIPT_OP_SET_NOTE_DURATION; Op: Set note duration [b05e].byte $b0; '- 176 ticks [b05f].byte $21; A4 [b060].byte $d8; Note length: 88 [b061].byte $23; B4 [b062].byte $23; B4 [b063].byte $c2; Note length: 66 [b064].byte $34; E6 [b065].byte $96; Note length: 22 [b066].byte $37; G6 [b067].byte $c2; Note length: 66 [b068].byte $2d; A5 [b069].byte $96; Note length: 22 [b06a].byte $30; C6 [b06b].byte $d8; Note length: 88 [b06c].byte $26; D5 [b06d].byte $26; D5 [b06e].byte $1f; G4 [b06f].byte $26; D5 [b070].byte MSCRIPT_OP_END_LOOP; Op: End loop [b071].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b072].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_TEMPLE [$PRG5::8f69] ;
[b073]MSCRIPT_TEMPLE_NOISE:; [$b073] [b073].byte $ff,$ff; [$b073] byte
;============================================================================ ; Music for the shops. ; ; XREFS: ; MSCRIPTS_SHOP [$PRG5::8f6b] ;============================================================================
; ; XREFS: ; MSCRIPTS_SHOP [$PRG5::8f6b] ;
[b075]MSCRIPT_SHOP_SQ1:; [$b075] [b075].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [b076].byte $02; '- Reduce volume by 2 [b077].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [b078].byte $90; '- Duty cycle 2 Constant volume/envelope [b079].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [b07a].byte $01; '- Mode 1: Curve but held [b07b].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b07c].byte $02; '- 2 iterations [b07d].byte $8e; Note length: 14 [b07e].byte $26; D3 [b07f].byte $00; Rest [b080].byte $00; Rest [b081].byte $00; Rest [b082].byte $26; D3 [b083].byte $00; Rest [b084].byte $00; Rest [b085].byte $00; Rest [b086].byte $26; D3 [b087].byte $00; Rest [b088].byte $00; Rest [b089].byte $00; Rest [b08a].byte $26; D3 [b08b].byte $00; Rest [b08c].byte $00; Rest [b08d].byte $00; Rest [b08e].byte $26; D3 [b08f].byte $00; Rest [b090].byte $00; Rest [b091].byte $00; Rest [b092].byte $26; D3 [b093].byte $00; Rest [b094].byte $00; Rest [b095].byte $00; Rest [b096].byte $00; Rest [b097].byte $24; C3 [b098].byte $25; C#3 [b099].byte $26; D3 [b09a].byte $1f; G2 [b09b].byte $20; G#2 [b09c].byte $21; A2 [b09d].byte $00; Rest [b09e].byte MSCRIPT_OP_END_LOOP; Op: End loop [b09f].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b0a0].byte $02; '- 2 iterations [b0a1].byte $8e; Note length: 14 [b0a2].byte $2b; G3 [b0a3].byte $00; Rest [b0a4].byte $2b; G3 [b0a5].byte $2d; A3 [b0a6].byte $00; Rest [b0a7].byte $00; Rest [b0a8].byte $00; Rest [b0a9].byte $87; Note length: 7 [b0aa].byte $30; C4 [b0ab].byte $2f; B3 [b0ac].byte $8e; Note length: 14 [b0ad].byte $2b; G3 [b0ae].byte $00; Rest [b0af].byte $2b; G3 [b0b0].byte $2d; A3 [b0b1].byte $00; Rest [b0b2].byte $00; Rest [b0b3].byte $00; Rest [b0b4].byte $00; Rest [b0b5].byte MSCRIPT_OP_END_LOOP; Op: End loop [b0b6].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b0b7].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_SHOP [$PRG5::8f6d] ;
[b0b8]MSCRIPT_SHOP_SQ2:; [$b0b8] [b0b8].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [b0b9].byte $02; '- Reduce volume by 2 [b0ba].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [b0bb].byte $90; '- Duty cycle 2 Constant volume/envelope [b0bc].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [b0bd].byte $01; '- Mode 1: Curve but held [b0be].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b0bf].byte $02; '- 2 iterations [b0c0].byte $8e; Note length: 14 [b0c1].byte $1f; G2 [b0c2].byte $00; Rest [b0c3].byte $00; Rest [b0c4].byte $00; Rest [b0c5].byte $1f; G2 [b0c6].byte $00; Rest [b0c7].byte $00; Rest [b0c8].byte $00; Rest [b0c9].byte $1f; G2 [b0ca].byte $00; Rest [b0cb].byte $00; Rest [b0cc].byte $00; Rest [b0cd].byte $1f; G2 [b0ce].byte $00; Rest [b0cf].byte $00; Rest [b0d0].byte $00; Rest [b0d1].byte $1f; G2 [b0d2].byte $00; Rest [b0d3].byte $00; Rest [b0d4].byte $00; Rest [b0d5].byte $1f; G2 [b0d6].byte $00; Rest [b0d7].byte $00; Rest [b0d8].byte $00; Rest [b0d9].byte $00; Rest [b0da].byte $18; C2 [b0db].byte $19; C#2 [b0dc].byte $1a; D2 [b0dd].byte $13; A9 [b0de].byte $14; A9 [b0df].byte $15; A9 [b0e0].byte $00; Rest [b0e1].byte MSCRIPT_OP_END_LOOP; Op: End loop [b0e2].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b0e3].byte $02; '- 2 iterations [b0e4].byte $8e; Note length: 14 [b0e5].byte $24; C3 [b0e6].byte $00; Rest [b0e7].byte $24; C3 [b0e8].byte $26; D3 [b0e9].byte $00; Rest [b0ea].byte $00; Rest [b0eb].byte $00; Rest [b0ec].byte $87; Note length: 7 [b0ed].byte $2b; G3 [b0ee].byte $2a; F#3 [b0ef].byte $8e; Note length: 14 [b0f0].byte $24; C3 [b0f1].byte $00; Rest [b0f2].byte $24; C3 [b0f3].byte $26; D3 [b0f4].byte $00; Rest [b0f5].byte $00; Rest [b0f6].byte $00; Rest [b0f7].byte $00; Rest [b0f8].byte MSCRIPT_OP_END_LOOP; Op: End loop [b0f9].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b0fa].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_SHOP [$PRG5::8f6f] ;
[b0fb]MSCRIPT_SHOP_TRI:; [$b0fb] [b0fb].byte MSCRIPT_OP_SET_CHANNEL_TRANSPOSE; Op: Set channel transpose [b0fc].byte $f4; '- Down 1 octave [b0fd].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b0fe].byte $02; '- 2 iterations [b0ff].byte $8e; Note length: 14 [b100].byte $35; F6 [b101].byte $00; Rest [b102].byte $32; D6 [b103].byte $37; G6 [b104].byte $3c; C7 [b105].byte $00; Rest [b106].byte $3b; B6 [b107].byte $32; D6 [b108].byte $00; Rest [b109].byte $35; F6 [b10a].byte $32; D6 [b10b].byte $37; G6 [b10c].byte $3c; C7 [b10d].byte $3b; B6 [b10e].byte $32; D6 [b10f].byte $00; Rest [b110].byte $35; F6 [b111].byte $00; Rest [b112].byte $32; D6 [b113].byte $37; G6 [b114].byte $3c; C7 [b115].byte $00; Rest [b116].byte $3b; B6 [b117].byte $32; D6 [b118].byte $00; Rest [b119].byte $30; C6 [b11a].byte $31; C#6 [b11b].byte $32; D6 [b11c].byte $2b; G5 [b11d].byte $2c; G#5 [b11e].byte $2d; A5 [b11f].byte $00; Rest [b120].byte MSCRIPT_OP_END_LOOP; Op: End loop [b121].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b122].byte $02; '- 2 iterations [b123].byte $8e; Note length: 14 [b124].byte $26; D5 [b125].byte $00; Rest [b126].byte $26; D5 [b127].byte $26; D5 [b128].byte $87; Note length: 7 [b129].byte $1a; D4 [b12a].byte $00; Rest [b12b].byte $1a; D4 [b12c].byte $00; Rest [b12d].byte $1a; D4 [b12e].byte $00; Rest [b12f].byte $1a; D4 [b130].byte $1a; D4 [b131].byte $8e; Note length: 14 [b132].byte $26; D5 [b133].byte $00; Rest [b134].byte $26; D5 [b135].byte $26; D5 [b136].byte $87; Note length: 7 [b137].byte $1a; D4 [b138].byte $00; Rest [b139].byte $1a; D4 [b13a].byte $00; Rest [b13b].byte $1a; D4 [b13c].byte $00; Rest [b13d].byte $1a; D4 [b13e].byte $1a; D4 [b13f].byte MSCRIPT_OP_END_LOOP; Op: End loop [b140].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b141].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_SHOP [$PRG5::8f71] ;
[b142]MSCRIPT_SHOP_NOISE:; [$b142] [b142].byte $ff,$ff; [$b142] undefined
;============================================================================ ; Music for the Evil Fortress. ; ; XREFS: ; MSCRIPTS_EVIL_FORTRESS [$PRG5::8f73] ;============================================================================
; ; XREFS: ; MSCRIPTS_EVIL_FORTRESS [$PRG5::8f73] ;
[b144]MSCRIPT_EVIL_FORTRESS_SQ1:; [$b144] [b144].byte MSCRIPT_OP_SET_GLOBAL_TRANSPOSE; Op: Set global transpose [b145].byte $f4; '- Down 1 octave [b146].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [b147].byte $02; '- Reduce volume by 2 [b148].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [b149].byte $00; '- Mode 0: Linear decay [b14a].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [b14b].byte $d0; '- Duty cycle 3 Constant volume/envelope [b14c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b14d].byte $02; '- 2 iterations [b14e].byte $88; Note length: 8 [b14f].byte $00; Rest [b150].byte $3c; C4 [b151].byte $37; G3 [b152].byte $32; D3 [b153].byte $00; Rest [b154].byte $00; Rest [b155].byte $00; Rest [b156].byte $00; Rest [b157].byte $00; Rest [b158].byte $3a; A#3 [b159].byte $35; F3 [b15a].byte $30; C3 [b15b].byte $2b; G2 [b15c].byte $00; Rest [b15d].byte $00; Rest [b15e].byte $00; Rest [b15f].byte MSCRIPT_OP_END_LOOP; Op: End loop [b160].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b161].byte $02; '- 2 iterations [b162].byte $88; Note length: 8 [b163].byte $00; Rest [b164].byte $3c; C4 [b165].byte $37; G3 [b166].byte $98; Note length: 24 [b167].byte $32; D3 [b168].byte $88; Note length: 8 [b169].byte $37; G3 [b16a].byte $32; D3 [b16b].byte $00; Rest [b16c].byte $3a; A#3 [b16d].byte $35; F3 [b16e].byte $90; Note length: 16 [b16f].byte $30; C3 [b170].byte $88; Note length: 8 [b171].byte $35; F3 [b172].byte $30; C3 [b173].byte $00; Rest [b174].byte MSCRIPT_OP_END_LOOP; Op: End loop [b175].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b176].byte $02; '- 2 iterations [b177].byte $88; Note length: 8 [b178].byte $39; A3 [b179].byte $39; A3 [b17a].byte $39; A3 [b17b].byte $39; A3 [b17c].byte $90; Note length: 16 [b17d].byte $37; G3 [b17e].byte $00; Rest [b17f].byte $b0; Note length: 48 [b180].byte $00; Rest [b181].byte $88; Note length: 8 [b182].byte $39; A3 [b183].byte $39; A3 [b184].byte $39; A3 [b185].byte $39; A3 [b186].byte $90; Note length: 16 [b187].byte $37; G3 [b188].byte $c0; Note length: 64 [b189].byte $00; Rest [b18a].byte $90; Note length: 16 [b18b].byte $32; D3 [b18c].byte $37; G3 [b18d].byte $37; G3 [b18e].byte $3c; C4 [b18f].byte $3c; C4 [b190].byte $41; F4 [b191].byte $41; F4 [b192].byte $3c; C4 [b193].byte $3c; C4 [b194].byte $37; G3 [b195].byte $a0; Note length: 32 [b196].byte $39; A3 [b197].byte $37; G3 [b198].byte $00; Rest [b199].byte $90; Note length: 16 [b19a].byte $2c; G#2 [b19b].byte $2e; A#2 [b19c].byte $88; Note length: 8 [b19d].byte $37; G3 [b19e].byte $37; G3 [b19f].byte $37; G3 [b1a0].byte $38; G#3 [b1a1].byte $00; Rest [b1a2].byte $38; G#3 [b1a3].byte $00; Rest [b1a4].byte $38; G#3 [b1a5].byte $3a; A#3 [b1a6].byte $3a; A#3 [b1a7].byte $3a; A#3 [b1a8].byte $38; G#3 [b1a9].byte $00; Rest [b1aa].byte $38; G#3 [b1ab].byte $00; Rest [b1ac].byte $38; G#3 [b1ad].byte $a0; Note length: 32 [b1ae].byte $37; G3 [b1af].byte $35; F3 [b1b0].byte $c0; Note length: 64 [b1b1].byte $00; Rest [b1b2].byte MSCRIPT_OP_END_LOOP; Op: End loop [b1b3].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b1b4].byte $02; '- 2 iterations [b1b5].byte $98; Note length: 24 [b1b6].byte $35; F3 [b1b7].byte $39; A3 [b1b8].byte $90; Note length: 16 [b1b9].byte $3c; C4 [b1ba].byte $a0; Note length: 32 [b1bb].byte $3b; B3 [b1bc].byte $39; A3 [b1bd].byte $98; Note length: 24 [b1be].byte $3c; C4 [b1bf].byte $40; E4 [b1c0].byte $90; Note length: 16 [b1c1].byte $39; A3 [b1c2].byte $a0; Note length: 32 [b1c3].byte $3e; D4 [b1c4].byte $88; Note length: 8 [b1c5].byte $3b; B3 [b1c6].byte $39; A3 [b1c7].byte $37; G3 [b1c8].byte $36; F#3 [b1c9].byte MSCRIPT_OP_END_LOOP; Op: End loop [b1ca].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b1cb].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EVIL_FORTRESS [$PRG5::8f75] ;
[b1cc]MSCRIPT_EVIL_FORTRESS_SQ2:; [$b1cc] [b1cc].byte MSCRIPT_OP_SET_SQ_FADE; Op: Set SQ fade [b1cd].byte $04; '- Reduce volume by 4 [b1ce].byte MSCRIPT_OP_SET_SQ_ENVELOPE_MODE; Op: Set envelope mode [b1cf].byte $00; '- Mode 0: Linear decay [b1d0].byte MSCRIPT_OP_SET_SQ_CONTROL_BITS; Op: Set SQ control bits [b1d1].byte $90; '- Duty cycle 2 Constant volume/envelope [b1d2].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b1d3].byte $02; '- 2 iterations [b1d4].byte $88; Note length: 8 [b1d5].byte $00; Rest [b1d6].byte $37; G4 [b1d7].byte $32; D4 [b1d8].byte $2d; A3 [b1d9].byte $00; Rest [b1da].byte $00; Rest [b1db].byte $00; Rest [b1dc].byte $00; Rest [b1dd].byte $00; Rest [b1de].byte $35; F4 [b1df].byte $30; C4 [b1e0].byte $2b; G3 [b1e1].byte $26; D3 [b1e2].byte $00; Rest [b1e3].byte $00; Rest [b1e4].byte $00; Rest [b1e5].byte MSCRIPT_OP_END_LOOP; Op: End loop [b1e6].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b1e7].byte $02; '- 2 iterations [b1e8].byte $88; Note length: 8 [b1e9].byte $00; Rest [b1ea].byte $37; G4 [b1eb].byte $32; D4 [b1ec].byte $98; Note length: 24 [b1ed].byte $2d; A3 [b1ee].byte $88; Note length: 8 [b1ef].byte $32; D4 [b1f0].byte $2d; A3 [b1f1].byte $00; Rest [b1f2].byte $35; F4 [b1f3].byte $30; C4 [b1f4].byte $90; Note length: 16 [b1f5].byte $2b; G3 [b1f6].byte $88; Note length: 8 [b1f7].byte $30; C4 [b1f8].byte $2b; G3 [b1f9].byte $00; Rest [b1fa].byte MSCRIPT_OP_END_LOOP; Op: End loop [b1fb].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b1fc].byte $02; '- 2 iterations [b1fd].byte $88; Note length: 8 [b1fe].byte $35; F4 [b1ff].byte $35; F4 [b200].byte $35; F4 [b201].byte $35; F4 [b202].byte $90; Note length: 16 [b203].byte $32; D4 [b204].byte $00; Rest [b205].byte $b0; Note length: 48 [b206].byte $00; Rest [b207].byte $88; Note length: 8 [b208].byte $00; Rest [b209].byte $00; Rest [b20a].byte $35; F4 [b20b].byte $35; F4 [b20c].byte $90; Note length: 16 [b20d].byte $32; D4 [b20e].byte $c0; Note length: 64 [b20f].byte $00; Rest [b210].byte $90; Note length: 16 [b211].byte $2d; A3 [b212].byte $32; D4 [b213].byte $32; D4 [b214].byte $37; G4 [b215].byte $37; G4 [b216].byte $3c; C5 [b217].byte $3c; C5 [b218].byte $37; G4 [b219].byte $37; G4 [b21a].byte $32; D4 [b21b].byte $a0; Note length: 32 [b21c].byte $35; F4 [b21d].byte $33; D#4 [b21e].byte $00; Rest [b21f].byte $90; Note length: 16 [b220].byte $29; F3 [b221].byte $2c; G#3 [b222].byte $88; Note length: 8 [b223].byte $33; D#4 [b224].byte $33; D#4 [b225].byte $33; D#4 [b226].byte $35; F4 [b227].byte $00; Rest [b228].byte $35; F4 [b229].byte $00; Rest [b22a].byte $35; F4 [b22b].byte $37; G4 [b22c].byte $37; G4 [b22d].byte $37; G4 [b22e].byte $35; F4 [b22f].byte $00; Rest [b230].byte $35; F4 [b231].byte $00; Rest [b232].byte $35; F4 [b233].byte $a0; Note length: 32 [b234].byte $33; D#4 [b235].byte $31; C#4 [b236].byte $c0; Note length: 64 [b237].byte $00; Rest [b238].byte $fc; Op: End loop [b239].byte $88; Note length: 8 [b23a].byte $00; Rest [b23b].byte $98; Note length: 24 [b23c].byte $35; F4 [b23d].byte $39; A4 [b23e].byte $90; Note length: 16 [b23f].byte $3c; C5 [b240].byte $a0; Note length: 32 [b241].byte $3b; B4 [b242].byte $a0; Note length: 32 [b243].byte $39; A4 [b244].byte $98; Note length: 24 [b245].byte $3c; C5 [b246].byte $40; E5 [b247].byte $90; Note length: 16 [b248].byte $39; A4 [b249].byte $9c; Note length: 28 [b24a].byte $3e; D5 [b24b].byte $88; Note length: 8 [b24c].byte $3b; B4 [b24d].byte $39; A4 [b24e].byte $37; G4 [b24f].byte $84; Note length: 4 [b250].byte $36; F#4 [b251].byte $88; Note length: 8 [b252].byte $32; D4 [b253].byte $35; F4 [b254].byte $32; D4 [b255].byte $35; F4 [b256].byte $39; A4 [b257].byte $35; F4 [b258].byte $39; A4 [b259].byte $3c; C5 [b25a].byte $37; G4 [b25b].byte $3b; B4 [b25c].byte $37; G4 [b25d].byte $35; F4 [b25e].byte $39; A4 [b25f].byte $35; F4 [b260].byte $32; D4 [b261].byte $35; F4 [b262].byte $39; A4 [b263].byte $3c; C5 [b264].byte $39; A4 [b265].byte $3c; C5 [b266].byte $40; E5 [b267].byte $3c; C5 [b268].byte $35; F4 [b269].byte $39; A4 [b26a].byte $3b; B4 [b26b].byte $3e; D5 [b26c].byte $3b; B4 [b26d].byte $8c; Note length: 12 [b26e].byte $37; G4 [b26f].byte $88; Note length: 8 [b270].byte $3b; B4 [b271].byte $39; A4 [b272].byte $37; G4 [b273].byte $84; Note length: 4 [b274].byte $36; F#4 [b275].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b276].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EVIL_FORTRESS [$PRG5::8f77] ;
[b277]MSCRIPT_EVIL_FORTRESS_TRI:; [$b277] [b277].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b278].byte $02; '- 2 iterations [b279].byte $88; Note length: 8 [b27a].byte $18; C4 [b27b].byte $00; Rest [b27c].byte $00; Rest [b27d].byte $18; C4 [b27e].byte $00; Rest [b27f].byte $00; Rest [b280].byte $18; C4 [b281].byte $00; Rest [b282].byte $18; C4 [b283].byte $00; Rest [b284].byte $00; Rest [b285].byte $18; C4 [b286].byte $00; Rest [b287].byte $00; Rest [b288].byte $18; C4 [b289].byte $18; C4 [b28a].byte $90; Note length: 16 [b28b].byte $18; C4 [b28c].byte $88; Note length: 8 [b28d].byte $00; Rest [b28e].byte $18; C4 [b28f].byte $00; Rest [b290].byte $00; Rest [b291].byte $90; Note length: 16 [b292].byte $18; C4 [b293].byte $18; C4 [b294].byte $88; Note length: 8 [b295].byte $00; Rest [b296].byte $18; C4 [b297].byte $00; Rest [b298].byte $0c; C3 [b299].byte $18; C4 [b29a].byte $0c; C3 [b29b].byte MSCRIPT_OP_END_LOOP; Op: End loop [b29c].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b29d].byte $02; '- 2 iterations [b29e].byte $88; Note length: 8 [b29f].byte $13; G3 [b2a0].byte $13; G3 [b2a1].byte $13; G3 [b2a2].byte $13; G3 [b2a3].byte $90; Note length: 16 [b2a4].byte $13; G3 [b2a5].byte $88; Note length: 8 [b2a6].byte $1d; F4 [b2a7].byte $1f; G4 [b2a8].byte $00; Rest [b2a9].byte $1f; G4 [b2aa].byte $1d; F4 [b2ab].byte $1a; D4 [b2ac].byte $90; Note length: 16 [b2ad].byte $13; G3 [b2ae].byte $88; Note length: 8 [b2af].byte $00; Rest [b2b0].byte $00; Rest [b2b1].byte $13; G3 [b2b2].byte $13; G3 [b2b3].byte $90; Note length: 16 [b2b4].byte $13; G3 [b2b5].byte $00; Rest [b2b6].byte $88; Note length: 8 [b2b7].byte $1d; F4 [b2b8].byte $1f; G4 [b2b9].byte $11; F3 [b2ba].byte $12; F#3 [b2bb].byte $13; G3 [b2bc].byte $00; Rest [b2bd].byte $90; Note length: 16 [b2be].byte $00; Rest [b2bf].byte $88; Note length: 8 [b2c0].byte $11; F3 [b2c1].byte $13; G3 [b2c2].byte $90; Note length: 16 [b2c3].byte $21; A4 [b2c4].byte $26; D5 [b2c5].byte $26; D5 [b2c6].byte $2b; G5 [b2c7].byte $2b; G5 [b2c8].byte $26; D5 [b2c9].byte $26; D5 [b2ca].byte $21; A4 [b2cb].byte $a0; Note length: 32 [b2cc].byte $13; G3 [b2cd].byte $90; Note length: 16 [b2ce].byte $11; F3 [b2cf].byte $88; Note length: 8 [b2d0].byte $1d; F4 [b2d1].byte $11; F3 [b2d2].byte $a0; Note length: 32 [b2d3].byte $00; Rest [b2d4].byte $98; Note length: 24 [b2d5].byte $22; A#4 [b2d6].byte $88; Note length: 8 [b2d7].byte $16; A#3 [b2d8].byte $22; A#4 [b2d9].byte $16; A#3 [b2da].byte $22; A#4 [b2db].byte $22; A#4 [b2dc].byte $00; Rest [b2dd].byte $22; A#4 [b2de].byte $16; A#3 [b2df].byte $22; A#4 [b2e0].byte $22; A#4 [b2e1].byte $16; A#3 [b2e2].byte $22; A#4 [b2e3].byte $22; A#4 [b2e4].byte $00; Rest [b2e5].byte $22; A#4 [b2e6].byte $16; A#3 [b2e7].byte $22; A#4 [b2e8].byte $a0; Note length: 32 [b2e9].byte $16; A#3 [b2ea].byte $16; A#3 [b2eb].byte $98; Note length: 24 [b2ec].byte $00; Rest [b2ed].byte $88; Note length: 8 [b2ee].byte $16; A#3 [b2ef].byte $16; A#3 [b2f0].byte $15; A3 [b2f1].byte $14; G#3 [b2f2].byte $12; F#3 [b2f3].byte MSCRIPT_OP_END_LOOP; Op: End loop [b2f4].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b2f5].byte $02; '- 2 iterations [b2f6].byte $90; Note length: 16 [b2f7].byte $13; G3 [b2f8].byte $88; Note length: 8 [b2f9].byte $00; Rest [b2fa].byte $90; Note length: 16 [b2fb].byte $13; G3 [b2fc].byte $88; Note length: 8 [b2fd].byte $00; Rest [b2fe].byte $13; G3 [b2ff].byte $00; Rest [b300].byte $13; G3 [b301].byte $00; Rest [b302].byte $00; Rest [b303].byte $13; G3 [b304].byte $00; Rest [b305].byte $00; Rest [b306].byte $13; G3 [b307].byte $13; G3 [b308].byte MSCRIPT_OP_END_LOOP; Op: End loop [b309].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b30a].byte $02; '- 2 iterations [b30b].byte $90; Note length: 16 [b30c].byte $13; G3 [b30d].byte $88; Note length: 8 [b30e].byte $1f; G4 [b30f].byte $90; Note length: 16 [b310].byte $13; G3 [b311].byte $88; Note length: 8 [b312].byte $1f; G4 [b313].byte $13; G3 [b314].byte $1f; G4 [b315].byte $13; G3 [b316].byte $13; G3 [b317].byte $1f; G4 [b318].byte $90; Note length: 16 [b319].byte $13; G3 [b31a].byte $88; Note length: 8 [b31b].byte $1f; G4 [b31c].byte $13; G3 [b31d].byte $1f; G4 [b31e].byte MSCRIPT_OP_END_LOOP; Op: End loop [b31f].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b320].byte MSCRIPT_OP_END; Op: End
; ; XREFS: ; MSCRIPTS_EVIL_FORTRESS [$PRG5::8f79] ;
[b321]MSCRIPT_EVIL_FORTRESS_NOISE:; [$b321] [b321].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b322].byte $04; '- 4 iterations [b323].byte $88,$21,$31,$31,$21,$31,$31,$21; [$b323] byte [b32b].byte $31,$21,$31,$31,$21,$31,$31,$21; [$b32b] byte [b333].byte $31; [$b333] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [b335].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b336].byte $02; '- 2 iterations [b337].byte $88,$21,$21,$21,$21,$21,$00,$31; [$b337] byte [b33f].byte $31,$31,$31,$31,$31,$21,$00,$00; [$b33f] byte [b347].byte $21,$11,$11,$11,$00,$85,$31,$31; [$b347] byte [b34f].byte $86,$31,$88,$31,$31,$31,$31,$21; [$b34f] byte [b357].byte $00,$21,$00,$21,$21,$31,$00,$31; [$b357] byte [b35f].byte $00,$31,$31,$21,$00,$31,$00,$31; [$b35f] byte [b367].byte $31,$31,$31,$21,$21,$31,$00,$31; [$b367] byte [b36f].byte $00,$31,$00,$31,$00,$85,$31,$31; [$b36f] byte [b377].byte $86,$31,$88,$31,$31,$21,$21,$31; [$b377] byte [b37f].byte $00,$31,$31,$31,$31,$21,$31,$31; [$b37f] byte [b387].byte $31,$31,$31,$31,$31,$21,$31,$31; [$b387] byte [b38f].byte $31,$a0,$00,$88,$21,$21,$21,$21; [$b38f] byte [b397].byte $85,$31,$31,$86,$31,$88,$31,$31; [$b397] byte [b39f].byte $85,$31,$31,$86,$31,$88,$21,$21; [$b39f] byte [b3a7].byte MSCRIPT_OP_END_LOOP; Op: End loop [b3a8].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b3a9].byte $02; '- 2 iterations [b3aa].byte $88,$31,$00,$00,$31,$00,$00,$31; [$b3aa] byte [b3b2].byte $00,$31,$00,$00,$31,$00,$00,$31; [$b3b2] byte [b3ba].byte $31; [$b3ba] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [b3bc].byte MSCRIPT_OP_BEGIN_LOOP; Op: Begin loop [b3bd].byte $02; '- 2 iterations [b3be].byte $88,$31,$11,$11,$31,$11,$11,$31; [$b3be] byte [b3c6].byte $11,$31,$11,$11,$31,$11,$11,$31; [$b3c6] byte [b3ce].byte $31; [$b3ce] byte .byte MSCRIPT_OP_END_LOOP; Op: End loop [b3d0].byte MSCRIPT_OP_RESTART_CHANNEL; Op: Restart channel [b3d1].byte MSCRIPT_OP_END; Op: End
;============================================================================ ; Post-MScript data. ; ; At first glance, this appears to be structured data. ; 4 words in a sequence, each with 0xFF00 as the trailing ; value. ; ; There are exceptions to this, though: ; ; Address | Value ; --------+------ ; $B878 | F700 ; $B8D0 | F700 ; $BAE0 | DF00 ; $BBF8 | FF20 ; $BD10 | FF01 ; $BE10 | 7F00 ; $BF08 | EF00 ; ; If we do assume group of 4 words, though, there are a ; few observations: ; ; 1. Words 1, 2, and 4 usually start with 0xFF. ; 2. Word 3 may be anything. ; 3. 0xFF00 is usually the 4th byte, but as shown above, ; not always. ; ; I've checked the music engines for various Hudson Soft ; games during, shortly before, and shortly after this ; era, and couldn't find anything matching this. The music ; engines generally match the MScripts here (though ; Faxanadu's is more complex). ; ; It's possible this was floating point data or something ; for SQ envelope curves, but left out. ; ; In any case, this data seems unused by the shipped game. ;============================================================================
[b3d2].word $ffa7,$ff75,$6157,$ff00; [$b3d2] ushort [b3da].word $ffe9,$fff8,$fead,$ff00; [$b3da] ushort [b3e2].word $ff23,$fffd,$ed29,$ff00; [$b3e2] ushort [b3ea].word $ff7c,$ff3a,$4cba,$ff00; [$b3ea] ushort [b3f2].word $ff37,$ff7b,$324c,$ff00; [$b3f2] ushort [b3fa].word $ff48,$ffbe,$d63a,$ff00; [$b3fa] ushort [b402].word $ff82,$ff53,$fb4e,$ff00; [$b402] ushort [b40a].word $ff84,$fff8,$ebd8,$ff00; [$b40a] ushort [b412].word $ff74,$ffef,$dbbd,$ff00; [$b412] ushort [b41a].word $ff39,$ffff,$97ee,$ff00; [$b41a] ushort [b422].word $ff0a,$ffc6,$ffc5,$ff00; [$b422] ushort [b42a].word $ff02,$ff7d,$f174,$ff00; [$b42a] ushort [b432].word $ff3e,$ff93,$7bb1,$ff00; [$b432] ushort [b43a].word $ffc6,$ff5d,$73ff,$ff00; [$b43a] ushort [b442].word $ff84,$ff11,$bfe4,$ff00; [$b442] ushort [b44a].word $ff3c,$ffb3,$7d3f,$ff00; [$b44a] ushort [b452].word $ff8a,$ff5e,$7fc3,$ff00; [$b452] ushort [b45a].word $ffcc,$ffde,$f83f,$ff00; [$b45a] ushort [b462].word $ff45,$ffd3,$77ee,$ff00; [$b462] ushort [b46a].word $ff80,$ff85,$7e79,$ff00; [$b46a] ushort [b472].word $ff95,$ff62,$2f73,$ff00; [$b472] ushort [b47a].word $fff3,$ffff,$ff0c,$ff00; [$b47a] ushort [b482].word $ff95,$ff82,$7fab,$ff00; [$b482] ushort [b48a].word $ffc0,$ff5a,$9701,$ff00; [$b48a] ushort [b492].word $ff12,$ff5d,$f3aa,$ff00; [$b492] ushort [b49a].word $fff0,$ff18,$f9f3,$ff00; [$b49a] ushort [b4a2].word $ff00,$ff3e,$cb6a,$ff00; [$b4a2] ushort [b4aa].word $ff57,$ffbb,$fe78,$ff00; [$b4aa] ushort [b4b2].word $ffa7,$ff23,$80d2,$ff00; [$b4b2] ushort [b4ba].word $ffa5,$ff6e,$b62f,$ff00; [$b4ba] ushort [b4c2].word $ff50,$ff66,$7520,$ff00; [$b4c2] ushort [b4ca].word $ff55,$fff7,$ed5b,$ff00; [$b4ca] ushort [b4d2].word $ff60,$ffe8,$9e78,$ff00; [$b4d2] ushort [b4da].word $ffd9,$ff13,$ffbd,$ff00; [$b4da] ushort [b4e2].word $ffec,$ff0b,$fd26,$ff00; [$b4e2] ushort [b4ea].word $ffe2,$ff58,$7736,$ff00; [$b4ea] ushort [b4f2].word $ff40,$ffb6,$ff02,$ff00; [$b4f2] ushort [b4fa].word $fff9,$ffdf,$58b0,$ff00; [$b4fa] ushort [b502].word $ffb4,$ff9e,$fbaa,$ff00; [$b502] ushort [b50a].word $ff84,$ff9a,$ff9f,$ff00; [$b50a] ushort [b512].word $ff34,$ffd3,$9f32,$ff00; [$b512] ushort [b51a].word $ff4a,$ff57,$6d6f,$ff00; [$b51a] ushort [b522].word $ff2a,$ff64,$ddfe,$ff00; [$b522] ushort [b52a].word $ff94,$ffd1,$efbb,$ff00; [$b52a] ushort [b532].word $ff2c,$ff5f,$bfcb,$ff00; [$b532] ushort [b53a].word $ffe7,$ff7c,$7df3,$ff00; [$b53a] ushort [b542].word $ff90,$ff51,$ec33,$ff00; [$b542] ushort [b54a].word $ff59,$ffa4,$7f72,$ff00; [$b54a] ushort [b552].word $ff1a,$ff0f,$afc5,$ff00; [$b552] ushort [b55a].word $ff2f,$ffe9,$3015,$ff00; [$b55a] ushort [b562].word $ff03,$ff06,$bf13,$ff00; [$b562] ushort [b56a].word $ff0b,$fffb,$fee2,$ff00; [$b56a] ushort [b572].word $ffd5,$ffc7,$9f69,$ff00; [$b572] ushort [b57a].word $ff32,$ff76,$06fc,$ff00; [$b57a] ushort [b582].word $ff14,$ff3c,$0f6f,$ff00; [$b582] ushort [b58a].word $ffad,$ffea,$afdb,$ff00; [$b58a] ushort [b592].word $ff27,$ffee,$4cf9,$ff00; [$b592] ushort [b59a].word $ff23,$ff5d,$fe57,$ff00; [$b59a] ushort [b5a2].word $ff04,$ffb1,$f7e2,$ff00; [$b5a2] ushort [b5aa].word $ffa4,$ff53,$fffa,$ff00; [$b5aa] ushort [b5b2].word $ff2c,$ff5f,$8cfd,$ff00; [$b5b2] ushort [b5ba].word $ff7d,$ff77,$52e8,$ff00; [$b5ba] ushort [b5c2].word $ff00,$ff83,$bf35,$ff00; [$b5c2] ushort [b5ca].word $ff58,$ffd7,$d7ef,$ff00; [$b5ca] ushort [b5d2].word $ff60,$fff8,$ded1,$ff00; [$b5d2] ushort [b5da].word $ff94,$fff3,$cfea,$ff00; [$b5da] ushort [b5e2].word $ff08,$ff48,$fb7b,$ff00; [$b5e2] ushort [b5ea].word $ff33,$ffd6,$837f,$ff00; [$b5ea] ushort [b5f2].word $ff71,$ff4e,$ff45,$ff00; [$b5f2] ushort [b5fa].word $fffc,$ef97,$3ef6,$ff00; [$b5fa] ushort [b602].word $ff40,$ff05,$ff4b,$ff00; [$b602] ushort [b60a].word $ff04,$ff72,$ff69,$ff00; [$b60a] ushort [b612].word $ff12,$ffc8,$efe9,$ff00; [$b612] ushort [b61a].word $ffd8,$ffdf,$03af,$ff00; [$b61a] ushort [b622].word $ff27,$ff2c,$ff11,$ff00; [$b622] ushort [b62a].word $ff94,$ff22,$fff2,$ff00; [$b62a] ushort [b632].word $ffe4,$ffbd,$92f7,$ff00; [$b632] ushort [b63a].word $ff26,$ffff,$65a7,$ff00; [$b63a] ushort [b642].word $ff61,$ffa8,$beb0,$ff00; [$b642] ushort [b64a].word $ff0d,$ffa2,$a351,$ff00; [$b64a] ushort [b652].word $fff0,$ffc4,$ae04,$ff00; [$b652] ushort [b65a].word $ff3b,$ff7f,$cf3b,$ff00; [$b65a] ushort [b662].word $ff01,$ff56,$ff61,$ff00; [$b662] ushort [b66a].word $ff8d,$fffb,$f781,$ff00; [$b66a] ushort [b672].word $ff12,$ffcb,$df73,$ff00; [$b672] ushort [b67a].word $ff71,$ffd9,$bfb7,$ff00; [$b67a] ushort [b682].word $ff00,$ff59,$9779,$ff00; [$b682] ushort [b68a].word $ff42,$ff7d,$eab9,$ff00; [$b68a] ushort [b692].word $ff70,$ffdb,$30fd,$ff00; [$b692] ushort [b69a].word $ff08,$ff67,$8e9f,$ff00; [$b69a] ushort [b6a2].word $ff01,$ff1f,$7f27,$ff00; [$b6a2] ushort [b6aa].word $ffc0,$ff27,$6f50,$ff00; [$b6aa] ushort [b6b2].word $ff63,$ffbe,$cf40,$ff00; [$b6b2] ushort [b6ba].word $ffc5,$ffda,$9f1f,$ff00; [$b6ba] ushort [b6c2].word $ff28,$ffe5,$b7a3,$ff00; [$b6c2] ushort [b6ca].word $ffc2,$ff19,$9f8b,$ff00; [$b6ca] ushort [b6d2].word $ff44,$fff7,$efd5,$ff00; [$b6d2] ushort [b6da].word $ff2d,$ffad,$7fd5,$ff00; [$b6da] ushort [b6e2].word $ff22,$ff3e,$5f75,$ff00; [$b6e2] ushort [b6ea].word $ff01,$ffed,$df14,$ff00; [$b6ea] ushort [b6f2].word $ff38,$ff7d,$d3fa,$ff00; [$b6f2] ushort [b6fa].word $ff7c,$ffbd,$cede,$ff00; [$b6fa] ushort [b702].word $ff3e,$ffe7,$e6e1,$ff00; [$b702] ushort [b70a].word $ff38,$ff3a,$f559,$ff00; [$b70a] ushort [b712].word $ff05,$ef17,$5e75,$ff00; [$b712] ushort [b71a].word $ff6b,$fffd,$34de,$ff00; [$b71a] ushort [b722].word $ff32,$ff5b,$f300,$ff00; [$b722] ushort [b72a].word $ff20,$ffda,$ff5e,$ff00; [$b72a] ushort [b732].word $ff04,$ffe0,$f3c1,$ff00; [$b732] ushort [b73a].word $ff49,$ffb7,$ee9e,$ff00; [$b73a] ushort [b742].word $ff72,$ff34,$d576,$ff00; [$b742] ushort [b74a].word $ff01,$ff69,$fe0d,$ff00; [$b74a] ushort [b752].word $ffbb,$ff20,$7ee4,$ff00; [$b752] ushort [b75a].word $ff43,$ffb7,$187b,$ff00; [$b75a] ushort [b762].word $ff61,$ff03,$ffe0,$ff00; [$b762] ushort [b76a].word $ff89,$fff5,$8f66,$ff00; [$b76a] ushort [b772].word $fffe,$ffc7,$bffd,$ff00; [$b772] ushort [b77a].word $ff28,$ffeb,$ebaf,$ff00; [$b77a] ushort [b782].word $ff04,$ff0a,$bfc1,$ff00; [$b782] ushort [b78a].word $ff50,$df21,$dbf4,$ff00; [$b78a] ushort [b792].word $ffdc,$ff9e,$bdff,$ff00; [$b792] ushort [b79a].word $ff8b,$ffbe,$b5cd,$ff00; [$b79a] ushort [b7a2].word $ff00,$ff39,$ff1c,$ff00; [$b7a2] ushort [b7aa].word $ff08,$ff11,$bfb7,$ff00; [$b7aa] ushort [b7b2].word $fff2,$ff77,$f7f4,$ff00; [$b7b2] ushort [b7ba].word $ff64,$ff53,$b3ff,$ff00; [$b7ba] ushort [b7c2].word $ff81,$ff55,$97cd,$ff00; [$b7c2] ushort [b7ca].word $ff1e,$ff39,$fb68,$ff00; [$b7ca] ushort [b7d2].word $ffa0,$fffd,$eeca,$ff00; [$b7d2] ushort [b7da].word $dfae,$fbf4,$6b7f,$ff00; [$b7da] ushort [b7e2].word $ff44,$ff93,$7cf5,$ff00; [$b7e2] ushort [b7ea].word $ff46,$ff04,$7ffd,$ff00; [$b7ea] ushort [b7f2].word $ffe0,$df34,$fe7b,$ff00; [$b7f2] ushort [b7fa].word $ff5a,$ffeb,$c119,$ff00; [$b7fa] ushort [b802].word $ff31,$ffa4,$3d26,$ff00; [$b802] ushort [b80a].word $ffe0,$ffb0,$ffe3,$ff00; [$b80a] ushort [b812].word $fffa,$ff71,$fef9,$ff00; [$b812] ushort [b81a].word $ff3b,$fffe,$decf,$ff00; [$b81a] ushort [b822].word $ff16,$ffe5,$1dbc,$ff00; [$b822] ushort [b82a].word $ff05,$ff9e,$fbbb,$ff00; [$b82a] ushort [b832].word $ffb0,$ffbb,$e79e,$ff00; [$b832] ushort [b83a].word $ff50,$ffbc,$a6cd,$ff00; [$b83a] ushort [b842].word $ff3a,$ff02,$dee2,$ff00; [$b842] ushort [b84a].word $ff42,$ff3a,$33c5,$ff00; [$b84a] ushort [b852].word $ffd2,$ff67,$7d5b,$ff00; [$b852] ushort [b85a].word $ff6e,$ffd9,$59fd,$ff00; [$b85a] ushort [b862].word $ff80,$ff0c,$df02,$ff00; [$b862] ushort [b86a].word $ffa4,$ff9a,$ff93,$ff00; [$b86a] ushort [b872].word $ff06,$ffa7,$df7e,$f700; [$b872] ushort [b87a].word $ff3d,$ff71,$4fee,$ff00; [$b87a] ushort [b882].word $ff04,$ff10,$bbc8,$ff00; [$b882] ushort [b88a].word $ff12,$ff2f,$74f5,$ff00; [$b88a] ushort [b892].word $ff30,$fff3,$555e,$ff00; [$b892] ushort [b89a].word $ffc2,$ffde,$b4b6,$ff00; [$b89a] ushort [b8a2].word $ff81,$ff6a,$fdf7,$ff00; [$b8a2] ushort [b8aa].word $ff93,$ff24,$b647,$ff00; [$b8aa] ushort [b8b2].word $ff45,$ff6b,$3717,$ff00; [$b8b2] ushort [b8ba].word $ff88,$ff76,$2f7f,$ff00; [$b8ba] ushort [b8c2].word $ff00,$ffbe,$fd9a,$ff00; [$b8c2] ushort [b8ca].word $ffb2,$ffdb,$afdc,$f700; [$b8ca] ushort [b8d2].word $ffaa,$ff7e,$dfed,$ff00; [$b8d2] ushort [b8da].word $ff68,$ffed,$7cbb,$ff00; [$b8da] ushort [b8e2].word $ff20,$ff12,$8b39,$ff00; [$b8e2] ushort [b8ea].word $ff70,$ffe0,$9d1c,$ff00; [$b8ea] ushort [b8f2].word $ff67,$fd83,$93f4,$ff00; [$b8f2] ushort [b8fa].word $ff19,$ff79,$7fbf,$ff00; [$b8fa] ushort [b902].word $ffa1,$ff3a,$f78a,$ff00; [$b902] ushort [b90a].word $ff84,$ff5e,$6bb5,$ff00; [$b90a] ushort [b912].word $ffb0,$ff65,$f9d6,$ff00; [$b912] ushort [b91a].word $ff72,$ff7b,$8d74,$ff00; [$b91a] ushort [b922].word $ff08,$ff0d,$bd5d,$ff00; [$b922] ushort [b92a].word $ff00,$ff82,$3f7a,$ff00; [$b92a] ushort [b932].word $ffe2,$ffb2,$7ea4,$ff00; [$b932] ushort [b93a].word $ffe7,$fe95,$afb5,$ff00; [$b93a] ushort [b942].word $ff80,$ff10,$f831,$ff00; [$b942] ushort [b94a].word $ff40,$ff6a,$ff7e,$ff00; [$b94a] ushort [b952].word $ff45,$ff5d,$6721,$ff00; [$b952] ushort [b95a].word $ffc0,$ffaf,$e385,$ff00; [$b95a] ushort [b962].word $ff00,$ff12,$cf97,$ff00; [$b962] ushort [b96a].word $ffb0,$ff63,$ceb8,$ff00; [$b96a] ushort [b972].word $fffa,$ff3b,$e5a3,$ff00; [$b972] ushort [b97a].word $ff60,$ff5b,$7689,$ff00; [$b97a] ushort [b982].word $ff80,$ff52,$7e52,$ff00; [$b982] ushort [b98a].word $ffa0,$ff1f,$d766,$ff00; [$b98a] ushort [b992].word $ff76,$ff9d,$14f9,$ff00; [$b992] ushort [b99a].word $ffff,$ff2f,$52f7,$ff00; [$b99a] ushort [b9a2].word $ff9c,$ff04,$ff76,$ff00; [$b9a2] ushort [b9aa].word $ff94,$ff72,$4e7f,$ff00; [$b9aa] ushort [b9b2].word $ffa7,$ffc7,$6d66,$ff00; [$b9b2] ushort [b9ba].word $ff9d,$ff7f,$267c,$ff00; [$b9ba] ushort [b9c2].word $ff26,$ffc7,$ff72,$ff00; [$b9c2] ushort [b9ca].word $ff31,$ffb7,$e97e,$ff00; [$b9ca] ushort [b9d2].word $ffbc,$ffde,$e4e7,$ff00; [$b9d2] ushort [b9da].word $ff7b,$fef2,$ebf3,$ff00; [$b9da] ushort [b9e2].word $ffe8,$ff32,$f79d,$ff00; [$b9e2] ushort [b9ea].word $ff80,$ff36,$ff9c,$ff00; [$b9ea] ushort [b9f2].word $ff88,$ffeb,$a7eb,$ff00; [$b9f2] ushort [b9fa].word $ff8f,$ff77,$79df,$ff00; [$b9fa] ushort [ba02].word $fffa,$ffa6,$ffcd,$ff00; [$ba02] ushort [ba0a].word $ffa0,$ffb4,$eb52,$ff00; [$ba0a] ushort [ba12].word $ffdc,$ffbe,$6dc5,$ff00; [$ba12] ushort [ba1a].word $ff63,$fffd,$42a2,$ff00; [$ba1a] ushort [ba22].word $ffa4,$ffc1,$fd88,$ff00; [$ba22] ushort [ba2a].word $ff30,$ff6a,$7d92,$ff00; [$ba2a] ushort [ba32].word $ff70,$ffbb,$ff76,$ff00; [$ba32] ushort [ba3a].word $ffb4,$fff5,$dcfe,$ff00; [$ba3a] ushort [ba42].word $ff80,$ff37,$e7a4,$ff00; [$ba42] ushort [ba4a].word $ff40,$ff43,$f77d,$ff00; [$ba4a] ushort [ba52].word $ff12,$fff1,$df57,$ff00; [$ba52] ushort [ba5a].word $ffd7,$ffc5,$e73b,$ff00; [$ba5a] ushort [ba62].word $ff6c,$ffde,$5a98,$ff00; [$ba62] ushort [ba6a].word $ff82,$ff8e,$5e23,$ff00; [$ba6a] ushort [ba72].word $ff06,$ffbd,$6fa7,$ff00; [$ba72] ushort [ba7a].word $ffbc,$ffeb,$0b55,$ff00; [$ba7a] ushort [ba82].word $ffa1,$ffcd,$d715,$ff00; [$ba82] ushort [ba8a].word $ffa2,$ffca,$8f2b,$ff00; [$ba8a] ushort [ba92].word $ff6f,$fffe,$68db,$ff00; [$ba92] ushort [ba9a].word $ffb8,$ffd7,$55df,$ff00; [$ba9a] ushort [baa2].word $ffb4,$ff06,$bfcd,$ff00; [$baa2] ushort [baaa].word $ffd0,$ff78,$ede6,$ff00; [$baaa] ushort [bab2].word $ffe4,$ffdd,$ceba,$ff00; [$bab2] ushort [baba].word $ff4d,$ffdf,$95c5,$ff00; [$baba] ushort [bac2].word $ff2a,$ffed,$fe36,$ff00; [$bac2] ushort [baca].word $ff00,$ffc3,$df7f,$ff00; [$baca] ushort [bad2].word $ff40,$fbf5,$ecb1,$ff00; [$bad2] ushort [bada].word $ffd8,$ffdf,$bf7d,$df00; [$bada] ushort [bae2].word $ff04,$ffb5,$afe7,$ff00; [$bae2] ushort [baea].word $ff00,$ff51,$d3ff,$ff00; [$baea] ushort [baf2].word $ff95,$ff74,$8fe4,$ff00; [$baf2] ushort [bafa].word $ffc1,$ff7f,$547f,$ff00; [$bafa] ushort [bb02].word $ff40,$ff0f,$3fd9,$ff00; [$bb02] ushort [bb0a].word $ff44,$ff4d,$cfbf,$ff00; [$bb0a] ushort [bb12].word $ff32,$fff9,$f7ab,$ff00; [$bb12] ushort [bb1a].word $fff1,$afdf,$027f,$ff00; [$bb1a] ushort [bb22].word $ff54,$ff23,$9f59,$ff00; [$bb22] ushort [bb2a].word $ff07,$ffb1,$efa4,$ff00; [$bb2a] ushort [bb32].word $ff30,$ff66,$de6e,$ff00; [$bb32] ushort [bb3a].word $ffe2,$ff6f,$bdfb,$ff00; [$bb3a] ushort [bb42].word $ff85,$ff27,$fb13,$ff00; [$bb42] ushort [bb4a].word $ff08,$ff52,$bdde,$ff00; [$bb4a] ushort [bb52].word $ffbe,$ffbb,$b7ee,$ff00; [$bb52] ushort [bb5a].word $ff23,$fff7,$ae7f,$ff00; [$bb5a] ushort [bb62].word $ff00,$ff8b,$ef31,$ff00; [$bb62] ushort [bb6a].word $ffc1,$ff80,$7f9b,$ff00; [$bb6a] ushort [bb72].word $ff76,$ffb0,$b33f,$ff00; [$bb72] ushort [bb7a].word $ff55,$ffbf,$aa79,$ff00; [$bb7a] ushort [bb82].word $ff11,$ffc4,$8f38,$ff00; [$bb82] ushort [bb8a].word $ff53,$ffe0,$e10a,$ff00; [$bb8a] ushort [bb92].word $ff03,$ff7e,$f75e,$ff00; [$bb92] ushort [bb9a].word $ff62,$fff3,$355e,$ff00; [$bb9a] ushort [bba2].word $ff54,$ff41,$df2e,$ff00; [$bba2] ushort [bbaa].word $ff03,$ff6c,$5fb5,$ff00; [$bbaa] ushort [bbb2].word $ffc4,$ffe2,$df5e,$ff00; [$bbb2] ushort [bbba].word $fff6,$ff5f,$0fa5,$ff00; [$bbba] ushort [bbc2].word $ffc1,$ff21,$434f,$ff00; [$bbc2] ushort [bbca].word $ff48,$ff15,$dfe0,$ff00; [$bbca] ushort [bbd2].word $ff64,$ff34,$7db1,$ff00; [$bbd2] ushort [bbda].word $fff8,$ffff,$2dbc,$ff00; [$bbda] ushort [bbe2].word $ff09,$ffe6,$f64d,$ff00; [$bbe2] ushort [bbea].word $ff60,$ff81,$af15,$ff00; [$bbea] ushort [bbf2].word $ff30,$ffa3,$3aba,$ff20; [$bbf2] ushort [bbfa].word $ff53,$ff15,$aeed,$ff00; [$bbfa] ushort [bc02].word $ff21,$ff95,$feb3,$ff00; [$bc02] ushort [bc0a].word $ffcc,$ffc5,$2f63,$ff00; [$bc0a] ushort [bc12].word $ff68,$ff3a,$ee7e,$ff00; [$bc12] ushort [bc1a].word $ffb4,$ff5b,$316e,$ff00; [$bc1a] ushort [bc22].word $ff10,$ffcf,$e798,$ff00; [$bc22] ushort [bc2a].word $ff60,$ffa7,$3f21,$ff00; [$bc2a] ushort [bc32].word $ff10,$ffef,$ebcd,$ff00; [$bc32] ushort [bc3a].word $ff2e,$ffff,$5ec0,$ff00; [$bc3a] ushort [bc42].word $ff00,$ffbe,$ff31,$ff00; [$bc42] ushort [bc4a].word $ff02,$ffde,$ff8a,$ff00; [$bc4a] ushort [bc52].word $ff42,$ffbe,$9cb8,$ff00; [$bc52] ushort [bc5a].word $ff95,$ffed,$2efc,$ff00; [$bc5a] ushort [bc62].word $ff04,$fff5,$cf15,$ff00; [$bc62] ushort [bc6a].word $ff4e,$ffee,$dc28,$ff00; [$bc6a] ushort [bc72].word $ff0a,$fff1,$765d,$ff00; [$bc72] ushort [bc7a].word $ffb1,$ff97,$7a6b,$ff00; [$bc7a] ushort [bc82].word $ff85,$ff39,$cf15,$ff00; [$bc82] ushort [bc8a].word $ffc6,$ffcb,$77fb,$ff00; [$bc8a] ushort [bc92].word $ff1f,$ffd7,$e1ac,$ff00; [$bc92] ushort [bc9a].word $ff1a,$efc8,$e855,$ff00; [$bc9a] ushort [bca2].word $ff8a,$ffea,$bdf4,$ff00; [$bca2] ushort [bcaa].word $ff80,$ff2f,$efd7,$ff00; [$bcaa] ushort [bcb2].word $ff72,$ff45,$fdf3,$ff00; [$bcb2] ushort [bcba].word $ffef,$ffef,$238d,$ff00; [$bcba] ushort [bcc2].word $ff20,$ff91,$ed9c,$ff00; [$bcc2] ushort [bcca].word $ff45,$ffaa,$ee93,$ff00; [$bcca] ushort [bcd2].word $ff06,$ff4f,$9fa3,$ff00; [$bcd2] ushort [bcda].word $ffdd,$ffff,$0dfb,$ff00; [$bcda] ushort [bce2].word $ff28,$ff05,$6d2b,$ff00; [$bce2] ushort [bcea].word $ffd2,$ff51,$fdbc,$ff00; [$bcea] ushort [bcf2].word $ff45,$ff86,$faa0,$ff00; [$bcf2] ushort [bcfa].word $ffb2,$ffaf,$1471,$ff00; [$bcfa] ushort [bd02].word $ff20,$ff53,$ff57,$ff00; [$bd02] ushort [bd0a].word $fff5,$ffbf,$fd35,$ff01; [$bd0a] ushort [bd12].word $ff93,$ffe6,$e8bd,$ff00; [$bd12] ushort [bd1a].word $ff5f,$ffb9,$ffb8,$ff00; [$bd1a] ushort [bd22].word $ff70,$ff73,$dfc6,$ff00; [$bd22] ushort [bd2a].word $ff03,$ff71,$af89,$ff00; [$bd2a] ushort [bd32].word $ff01,$ffab,$e76d,$ff00; [$bd32] ushort [bd3a].word $ffd7,$ff62,$4736,$ff00; [$bd3a] ushort [bd42].word $ff40,$ff34,$ef41,$ff00; [$bd42] ushort [bd4a].word $ffb9,$ff39,$6e3e,$ff00; [$bd4a] ushort [bd52].word $ffaf,$ff17,$ff3e,$ff00; [$bd52] ushort [bd5a].word $ff69,$ff5d,$2367,$ff00; [$bd5a] ushort [bd62].word $ffa2,$ff1a,$dbf4,$ff00; [$bd62] ushort [bd6a].word $ff87,$ffb3,$ae68,$ff00; [$bd6a] ushort [bd72].word $ff63,$ff6b,$fd65,$ff00; [$bd72] ushort [bd7a].word $ff09,$fffd,$4cef,$ff00; [$bd7a] ushort [bd82].word $ff01,$ff65,$ea18,$ff00; [$bd82] ushort [bd8a].word $ff30,$ffa3,$7fb6,$ff00; [$bd8a] ushort [bd92].word $ff9f,$feea,$be7f,$ff00; [$bd92] ushort [bd9a].word $ffde,$ff25,$1edf,$ff00; [$bd9a] ushort [bda2].word $ff11,$ff50,$7e6b,$ff00; [$bda2] ushort [bdaa].word $ff86,$fff4,$afb5,$ff00; [$bdaa] ushort [bdb2].word $ffd0,$ffe3,$df3d,$ff00; [$bdb2] ushort [bdba].word $ffcd,$ffff,$5975,$ff00; [$bdba] ushort [bdc2].word $ff19,$ff33,$bb74,$ff00; [$bdc2] ushort [bdca].word $ff30,$ffee,$fb7e,$ff00; [$bdca] ushort [bdd2].word $ff1a,$fff9,$dfed,$ff00; [$bdd2] ushort [bdda].word $ff1d,$ffdd,$39cf,$ff00; [$bdda] ushort [bde2].word $ff00,$ffde,$97c4,$ff00; [$bde2] ushort [bdea].word $ffb4,$ffd3,$ff99,$ff00; [$bdea] ushort [bdf2].word $ffa2,$7ee6,$f7b7,$ff00; [$bdf2] ushort [bdfa].word $ff5c,$ffb7,$345f,$ff00; [$bdfa] ushort [be02].word $ff0a,$ffc4,$ffc2,$ff00; [$be02] ushort [be0a].word $ff40,$ff75,$be56,$7f00; [$be0a] ushort [be12].word $ff2c,$ff99,$7f9b,$ff00; [$be12] ushort [be1a].word $ffcd,$feff,$29dd,$ff00; [$be1a] ushort [be22].word $ff02,$ff15,$df33,$ff00; [$be22] ushort [be2a].word $ff04,$ff75,$a65e,$ff00; [$be2a] ushort [be32].word $ff2d,$ff23,$979f,$ff00; [$be32] ushort [be3a].word $ff5f,$fff7,$0392,$ff00; [$be3a] ushort [be42].word $ff68,$ff46,$fe48,$ff00; [$be42] ushort [be4a].word $ff08,$ff9a,$ffed,$ff00; [$be4a] ushort [be52].word $ff24,$ff7f,$f763,$ff00; [$be52] ushort [be5a].word $ff28,$ff7d,$dd5a,$ff00; [$be5a] ushort [be62].word $ff15,$ff02,$fd0a,$ff00; [$be62] ushort [be6a].word $ff06,$ff7c,$38d2,$ff00; [$be6a] ushort [be72].word $ff33,$ff7b,$c26f,$ff00; [$be72] ushort [be7a].word $ffa9,$ffa8,$dddb,$ff00; [$be7a] ushort [be82].word $ffc0,$ffbb,$6bfc,$ff00; [$be82] ushort [be8a].word $ff70,$ffb1,$bf49,$ff00; [$be8a] ushort [be92].word $ff56,$ffbc,$a6e5,$ff00; [$be92] ushort [be9a].word $ff0c,$ff73,$e7ed,$ff00; [$be9a] ushort [bea2].word $ffaa,$ff27,$5b41,$ff00; [$bea2] ushort [beaa].word $ff09,$fb7c,$efee,$ff00; [$beaa] ushort [beb2].word $ff68,$fff8,$6c53,$ff00; [$beb2] ushort [beba].word $ff39,$ffff,$b87b,$ff00; [$beba] ushort [bec2].word $ff80,$ff66,$7c65,$ff00; [$bec2] ushort [beca].word $ffdd,$ffff,$839b,$ff00; [$beca] ushort [bed2].word $ef61,$dfc7,$f570,$ff00; [$bed2] ushort [beda].word $ffed,$fffa,$4cb3,$ff00; [$beda] ushort [bee2].word $ff08,$ff6b,$9710,$ff00; [$bee2] ushort [beea].word $ffa0,$ff62,$eecd,$ff00; [$beea] ushort [bef2].word $ff50,$fffd,$ef75,$ff00; [$bef2] ushort [befa].word $ff20,$ff1f,$7bd9,$ff00; [$befa] ushort [bf02].word $ffae,$ff9d,$ffe3,$ef00; [$bf02] ushort [bf0a].word $ff82,$ff95,$ff9e,$ff00; [$bf0a] ushort [bf12].word $ffc3,$ffe7,$6fed,$ff00; [$bf12] ushort [bf1a].word $ffc0,$ff37,$feff,$ff00; [$bf1a] ushort [bf22].word $ff11,$ff64,$dfc3,$ff00; [$bf22] ushort [bf2a].word $ff76,$ff2e,$cb9b,$ff00; [$bf2a] ushort [bf32].word $ff1a,$ffed,$b945,$ff00; [$bf32] ushort [bf3a].word $ffcf,$ffeb,$c715,$ff00; [$bf3a] ushort [bf42].word $ff5e,$ff21,$ef23,$ff00; [$bf42] ushort [bf4a].word $ff31,$fff0,$75b7,$ff00; [$bf4a] ushort [bf52].word $ff12,$ff3e,$dede,$ff00; [$bf52] ushort [bf5a].word $ff45,$fff8,$9feb,$ff00; [$bf5a] ushort [bf62].word $ffb9,$ff17,$fe3f,$ff00; [$bf62] ushort [bf6a].word $ff24,$fffc,$bde9,$ff00; [$bf6a] ushort [bf72].word $fffc,$fff1,$bb54,$ff00; [$bf72] ushort [bf7a].word $ffc4,$ffaa,$7b53,$ff00; [$bf7a] ushort [bf82].word $ffd0,$ff12,$efb6,$ff00; [$bf82] ushort [bf8a].word $ffa1,$ff48,$b6ca,$ff00; [$bf8a] ushort [bf92].word $ff79,$ff51,$3f72,$ff00; [$bf92] ushort [bf9a].word $ff7a,$ff73,$99f2,$ff00; [$bf9a] ushort [bfa2].word $ff41,$ffd4,$ff19,$ff00; [$bfa2] ushort [bfaa].word $ffc0,$ff5c,$c798,$ff00; [$bfaa] ushort [bfb2].word $ff6a,$ff7a,$be9c,$ff00; [$bfb2] ushort [bfba].word $ff7d,$fffd,$8ea6,$ff00; [$bfba] ushort [bfc2].word $ff29,$ffdb,$9183,$ff00; [$bfc2] ushort [bfca].word $ff81,$ffb5,$79aa,$ff00; [$bfca] ushort [bfd2].word $ff0c,$fffe,$e3bf,$ff00; [$bfd2] ushort [bfda].word $ffa6,$ffda,$fafa,$ff00; [$bfda] ushort [bfe2].word $ff46,$ff65,$7de2,$ff00; [$bfe2] ushort [bfea].word $fffa,$fff5,$d698,$ff00; [$bfea] ushort [bff2].word $ff22,$fff5,$b3f6,$ff00; [$bff2] ushort [bffa].word $ffa2,$fff7,$bffe; [$bffa] ushort