325 lines
8.3 KiB
NASM
325 lines
8.3 KiB
NASM
; =========================================================
|
|
; The Legend of Zelda: Wind Waker - Ganondorf Battle
|
|
; Kenta Nagata, Hajime Wakai, Toru Minegishi, and Koji Kondo
|
|
|
|
; Test code to play the song as the game start (Only for Testing)
|
|
!n = $7F
|
|
org $00FFD7 ; Set rom on 16mb
|
|
db #$0B
|
|
|
|
org $3FFFFF ; write at the last position to expand on 2mb
|
|
db #$00
|
|
|
|
org $0CC120
|
|
LDA #$02 : STA $012C
|
|
STA $2140 : STA $0133 : STA $0130
|
|
RTL
|
|
|
|
; org $1BAD7A
|
|
; GanondorfBattle:
|
|
; ARAMAddr = $2BB3
|
|
org $1A9FF8
|
|
print pc
|
|
GanondorfBattle:
|
|
{
|
|
!ARAMAddr = $D0FF
|
|
dw !ARAMAddr+$0A ; Intro
|
|
dw !ARAMAddr+$1A ; Looping
|
|
dw $00FF
|
|
dw !ARAMAddr+$02 ; Looping Section
|
|
dw $0000
|
|
|
|
.ChannelsIntro
|
|
!ARAMC = !ARAMAddr-GanondorfBattle
|
|
dw .IntroChannel0_Trombone+!ARAMC
|
|
dw .IntroChannel1_ChoirAndTrumpet+!ARAMC
|
|
dw .IntroChannel2_Strings+!ARAMC
|
|
dw .IntroChannel4_TimpaniAndSnare+!ARAMC
|
|
dw .IntroChannel5_Cymbal+!ARAMC
|
|
dw .IntroChannel3_Horn+!ARAMC
|
|
dw $0000
|
|
dw $0000
|
|
|
|
.Channels
|
|
!ARAMC = !ARAMAddr-GanondorfBattle
|
|
dw .Channel0_Piano+!ARAMC
|
|
dw .Channel1_Horn+!ARAMC
|
|
dw .Channel2_Trumpet+!ARAMC
|
|
dw .Channel3_TromboneAndCymbal+!ARAMC
|
|
dw .Channel4_Timpani+!ARAMC
|
|
dw .Channel5_Snare+!ARAMC
|
|
dw $0000 ; dw .Channel6+!ARAMC
|
|
dw $0000
|
|
|
|
; ---------------------------------------------
|
|
; Intro Channels
|
|
{
|
|
.IntroChannel0_Trombone
|
|
%SetMasterVolume($88)
|
|
%SetTempo(100)
|
|
%Trombone()
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%CallSubroutine(.strings01+!ARAMC, 1)
|
|
%CallSubroutine(.sustain+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 6)
|
|
db $00
|
|
|
|
.IntroChannel1_ChoirAndTrumpet
|
|
%Choir()
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%Trumpet()
|
|
%CallSubroutine(.strings01+!ARAMC, 1)
|
|
%CallSubroutine(.sustain+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 6)
|
|
db $00
|
|
|
|
.IntroChannel2_Strings
|
|
%Strings()
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%CallSubroutine(.strings01+!ARAMC, 1)
|
|
%CallSubroutine(.sustain+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 6)
|
|
db $00
|
|
|
|
.IntroChannel3_Horn
|
|
%Horn()
|
|
%SetChannelVolume($C8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%CallSubroutine(.strings01+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 6)
|
|
db $00
|
|
|
|
.IntroChannel4_TimpaniAndSnare
|
|
%Tympani()
|
|
%SetChannelVolume($C8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.silence+!ARAMC, 3)
|
|
%CallSubroutine(.drums+!ARAMC, 1)
|
|
%CallSubroutine(.sustain+!ARAMC, 4)
|
|
%Snare()
|
|
%SetDurationN(!32nd, $7F) ; 1/32
|
|
%CallSubroutine(.snare00+!ARAMC, 8)
|
|
db $00
|
|
|
|
.IntroChannel5_Cymbal
|
|
%Cymbal()
|
|
%SetChannelVolume($F8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%EchoVBits($FF, $1E, $1E)
|
|
%EchoParams($01, $14, $02)
|
|
%CallSubroutine(.silence+!ARAMC, 3)
|
|
%CallSubroutine(.drums+!ARAMC, 1)
|
|
db !4th, G2, Tie, Tie
|
|
%CallSubroutine(.silence+!ARAMC, 8)
|
|
db $00
|
|
}
|
|
|
|
; ---------------------------------------------
|
|
; Main Channels
|
|
{
|
|
.Channel0_Piano
|
|
%SetMasterVolume($C8)
|
|
%Piano()
|
|
|
|
%SetChannelVolume($F8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
|
|
%EchoVBits($FF, $1E, $1E)
|
|
%EchoParams($02, $14, $02)
|
|
|
|
%CallSubroutine(.piano01+!ARAMC, 2)
|
|
%CallSubroutine(.piano02+!ARAMC, 1)
|
|
%CallSubroutine(.piano01+!ARAMC, 2)
|
|
%CallSubroutine(.piano02+!ARAMC, 1)
|
|
%CallSubroutine(.piano03+!ARAMC, 1)
|
|
%CallSubroutine(.piano04+!ARAMC, 1)
|
|
|
|
%CallSubroutine(.piano02+!ARAMC, 1)
|
|
%CallSubroutine(.piano01+!ARAMC, 1)
|
|
%CallSubroutine(.piano02+!ARAMC, 1)
|
|
%CallSubroutine(.piano01+!ARAMC, 1)
|
|
%CallSubroutine(.piano02+!ARAMC, 1)
|
|
%CallSubroutine(.piano03+!ARAMC, 1)
|
|
%CallSubroutine(.piano04+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 96)
|
|
db $00
|
|
|
|
.Channel1_Horn
|
|
%Horn()
|
|
%SetChannelVolume($DC)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.silence+!ARAMC, 4)
|
|
|
|
; %TremoloOn(10, 4, 50)
|
|
%CallSubroutine(.horn01+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
%CallSubroutine(.horns03+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
; %TremoloOff()
|
|
%CallSubroutine(.silence+!ARAMC, 72)
|
|
|
|
db $00
|
|
|
|
.Channel2_Trumpet
|
|
%Trumpet()
|
|
%SetChannelVolume($E8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
|
|
%CallSubroutine(.silence+!ARAMC, 4)
|
|
; %TremoloOn(10, 4, 10)
|
|
%CallSubroutine(.horn01+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
%CallSubroutine(.horns03+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
; %TremoloOff()
|
|
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 4)
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%CallSubroutine(.silence+!ARAMC, 96)
|
|
db $00
|
|
|
|
.Channel3_TromboneAndCymbal
|
|
%Trombone()
|
|
%SetChannelVolume($BC)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.silence+!ARAMC, 4)
|
|
; %TremoloOn(10, 4, 50)
|
|
%CallSubroutine(.horn01+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
%CallSubroutine(.horns03+!ARAMC, 1)
|
|
%CallSubroutine(.horns02+!ARAMC, 1)
|
|
; %TremoloOff()
|
|
|
|
%CallSubroutine(.intro+!ARAMC, 1)
|
|
%Cymbal()
|
|
%SetChannelVolume($F8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%EchoVBits($FF, $1E, $1E)
|
|
%EchoParams($01, $14, $02)
|
|
%CallSubroutine(.drums+!ARAMC, 1)
|
|
db !4th, G2, Tie, Tie
|
|
%Trombone()
|
|
%CallSubroutine(.silence+!ARAMC, 96)
|
|
|
|
db $00
|
|
|
|
.Channel4_Timpani
|
|
%Tympani()
|
|
%SetChannelVolume($78)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.timpani01+!ARAMC, 12)
|
|
%Choir()
|
|
%SetChannelVolume($A8)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.choir01+!ARAMC, 2)
|
|
db $00
|
|
|
|
.Channel5_Snare
|
|
%Snare()
|
|
%SetChannelVolume($8C)
|
|
%SetDurationN(!32nd, $7F) ; 1/32
|
|
%CallSubroutine(.snare01+!ARAMC, 24)
|
|
%SetDurationN(!4th, $7F) ; 1/4
|
|
%CallSubroutine(.silence+!ARAMC, 32)
|
|
%SetDurationN(!32nd, $7F) ; 1/32
|
|
%CallSubroutine(.snare01+!ARAMC, 32)
|
|
db $00
|
|
|
|
}
|
|
|
|
; ---------------------------------------------
|
|
|
|
.silence
|
|
db Rest, $00
|
|
|
|
.sustain
|
|
db Tie, $00
|
|
|
|
; 4 bars
|
|
.intro
|
|
db D4s, D4, F4s, F4, Tie, D4s, !16th, D4, Tie, F4s, Tie
|
|
db !4th, F4, !16th, D4s, Tie, D4, Tie, !4th, F4s, F4, Rest
|
|
db $00 ; End
|
|
|
|
.snare00
|
|
db E5
|
|
db $00
|
|
|
|
.snare01
|
|
db E5, Rest
|
|
db E5, Rest
|
|
db E5, Rest
|
|
db E5, Rest
|
|
db E5, Rest, Rest, Rest
|
|
db E5, Rest, Rest, Rest
|
|
db $00
|
|
|
|
.choir01
|
|
db !4th, G3s, Tie, Tie, !8th, D3s, Tie, !4th, G3, Tie, Tie, !8th, F3, Tie
|
|
db !4th, D3s, Tie, Tie, !8th, F3, Tie, !4th, D3, Tie, Tie, Tie
|
|
db $00
|
|
|
|
.piano01
|
|
db !8th, G1, C2, A1s, G1, !4th, C2, C2
|
|
db $00
|
|
|
|
.piano02
|
|
db !8th, G1, C2, A1s, G1, !4th, C2, C2s
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, E2
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, E2
|
|
db !8th, G1, C2, A1s, G1, !4th, C2, C2s
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, E2
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, E2
|
|
db $00
|
|
|
|
.piano03
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, E2
|
|
db !8th, G1s, C2s, B1, G1s, !4th, C2s, !8th, E2, G2, F2
|
|
db !4th, D2s, Tie, C2s
|
|
db $00
|
|
|
|
.piano04
|
|
db !8th, E2, G2, F2
|
|
db !4th, D2s, Tie, C2s, Tie, Tie, Tie, Tie, F1
|
|
db $00
|
|
|
|
.drums
|
|
db G2, Tie, Tie, G2, Tie, G2, Tie, Tie
|
|
db $00
|
|
|
|
.strings01
|
|
db !8th, G3s, A3s, !4th, Rest, !8th, G3, G3s, !4th, D3s, E3
|
|
db !4th, Rest
|
|
db !8th, G3s, A3s, !4th, Rest, !8th, G3, G3s, !4th, D2, F2, Tie
|
|
db $00
|
|
|
|
.timpani01
|
|
db !8th, G1, !4th, C2, !8th, G1, !4th, C2, C2, !8th, G1, !4th, C2, !8th, G1, !4th, C2
|
|
db $00
|
|
|
|
.horn01
|
|
db !8th, G3, !4th, A3s, !8th, G3, F3s, !4th, G3
|
|
db !16th, F3s, Tie, G3, Tie, !8th, A3s, B3, !4th, G3
|
|
db !16th, F3, Tie, F3s, Tie, F3, Tie, !8th, D3, C3s, D3, Tie
|
|
db $00
|
|
|
|
.horns02
|
|
db !8th, D3, F3, F3s, !4th, A3
|
|
db !8th, G3s, !4th, B3
|
|
db !8th, A3s, !4th, C4s, Tie
|
|
db B3, !8th, A3, A3, !4th, A3s, E3, G3
|
|
db $00
|
|
|
|
.horns03
|
|
db F3s, G3, Tie, !8th, F3s, G3, !4th, A3s, B3
|
|
db G3, !8th, F3, F3s, F3, !4th, D3, C3s, D3, Tie
|
|
db $00
|
|
|
|
}
|
|
|
|
print "End of WW Ganondorf ", pc |