diff --git a/Music/ww_ganondorf.asm b/Music/ww_ganondorf.asm new file mode 100644 index 0000000..3605652 --- /dev/null +++ b/Music/ww_ganondorf.asm @@ -0,0 +1,325 @@ +; ========================================================= +; 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 \ No newline at end of file