252 lines
5.5 KiB
NASM
252 lines
5.5 KiB
NASM
;=====================================================================================
|
|
; The Legend of Zelda: A Link to the Past (Custom Music Track)
|
|
; The Legend of Zelda: Majora's Mask - Song of Healing Theme v1.00
|
|
; Original Song by Koji Kondo
|
|
; Midi by RSD and Chris Lakatos
|
|
; ASM Framework by Zarby89
|
|
; Ported by Letterbomb
|
|
; Size 0x0275 (629 Decimal)
|
|
;=====================================================================================
|
|
|
|
org $1BA308; Sections?
|
|
SongOfHealingTheme:
|
|
!ARAMAddr = $F304
|
|
dw !ARAMAddr+$08
|
|
dw $00FF
|
|
dw !ARAMAddr
|
|
dw $0000
|
|
|
|
|
|
|
|
.Channels
|
|
!ARAMC = !ARAMAddr-SongOfHealingTheme
|
|
dw .Channel0+!ARAMC
|
|
dw .Channel1+!ARAMC
|
|
dw .Channel2+!ARAMC
|
|
dw .Channel3+!ARAMC
|
|
dw .Channel4+!ARAMC
|
|
dw .Channel5+!ARAMC
|
|
dw $0000
|
|
dw $0000
|
|
|
|
|
|
|
|
.Channel0
|
|
%SetMasterVolume($98)
|
|
%SetTempo(56)
|
|
%SetInstrument($18) ; Guitar
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub0101+!ARAMC, 2)
|
|
%CallSubroutine(.sub0102+!ARAMC, 1)
|
|
%CallSubroutine(.sub0103+!ARAMC, 1)
|
|
%CallSubroutine(.sub0102+!ARAMC, 1)
|
|
%CallSubroutine(.sub0104+!ARAMC, 1)
|
|
%CallSubroutine(.sub0105+!ARAMC, 1)
|
|
%CallSubroutine(.sub0106+!ARAMC, 1)
|
|
%CallSubroutine(.sub0105+!ARAMC, 1)
|
|
%CallSubroutine(.sub0107+!ARAMC, 1)
|
|
db $00 ; End of the channel
|
|
|
|
|
|
|
|
.Channel1
|
|
%SetInstrument($09) ; Strings
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub0101+!ARAMC, 2)
|
|
%CallSubroutine(.sub0102+!ARAMC, 1)
|
|
%CallSubroutine(.sub0103+!ARAMC, 1)
|
|
%CallSubroutine(.sub0102+!ARAMC, 1)
|
|
%CallSubroutine(.sub0104+!ARAMC, 1)
|
|
%CallSubroutine(.sub0105+!ARAMC, 1)
|
|
%CallSubroutine(.sub0106+!ARAMC, 1)
|
|
%CallSubroutine(.sub0105+!ARAMC, 1)
|
|
%CallSubroutine(.sub0107+!ARAMC, 1)
|
|
db $00 ; End of the channel
|
|
|
|
|
|
.sub0101
|
|
db B4, A4, F4, B4, A4, F4, B4, A4, $24, E4, D4, $48, E4, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub0102
|
|
db F4, C4, B3, F4, C4, B3, F4
|
|
db $00 ; End
|
|
|
|
.sub0103
|
|
db E4, $24, B3, A3, $48, B3, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub0104
|
|
db E4, B4, G4, Tie, Tie, A4, A4, A4, D5, D5, D5
|
|
db $00 ; End
|
|
|
|
.sub0105
|
|
db G4, G4, G4, C5, G4, Tie
|
|
db $00 ; End
|
|
|
|
.sub0106
|
|
db F4, F4, F4, A4s, A4s, A4s, E4, D4, A4, E4, Tie, Tie, A4, A4, A4, D5, D5, D5
|
|
db $00 ; End
|
|
|
|
.sub0107
|
|
db F4, G4, A4, A4s, C5, D5, A4, B4, D5, E5, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
|
|
|
|
.Channel2
|
|
%SetInstrument($18) ; Guitar
|
|
%SetDurationN($24, $7F) ; 1/8
|
|
%CallSubroutine(.sub201+!ARAMC, 3)
|
|
%CallSubroutine(.sub202+!ARAMC, 1)
|
|
%CallSubroutine(.sub201+!ARAMC, 3)
|
|
%CallSubroutine(.sub202+!ARAMC, 1)
|
|
%CallSubroutine(.sub203+!ARAMC, 2)
|
|
%CallSubroutine(.sub204+!ARAMC, 2)
|
|
%CallSubroutine(.sub203+!ARAMC, 2)
|
|
%CallSubroutine(.sub204+!ARAMC, 2)
|
|
%CallSubroutine(.sub205+!ARAMC, 1)
|
|
%CallSubroutine(.sub206+!ARAMC, 1)
|
|
%CallSubroutine(.sub207+!ARAMC, 1)
|
|
%CallSubroutine(.sub208+!ARAMC, 1)
|
|
%CallSubroutine(.sub205+!ARAMC, 1)
|
|
%CallSubroutine(.sub206+!ARAMC, 1)
|
|
db A2s, F3, A3s, F3, D4, F3, A2s, F3, A3s, F3, D4, F3, B2, F3, A3, F3, D4, A3, E3, Tie, B3, Tie, E4, Tie
|
|
db $00 ; End of the channel
|
|
|
|
|
|
.sub201
|
|
db F3, C4, Tie, C4, Tie, C4
|
|
db $00 ; End
|
|
|
|
.sub202
|
|
db E3, B3, Tie, B3, Tie, B3
|
|
db $00 ; End
|
|
|
|
.sub203
|
|
db D3, A3, Tie, A3, Tie, A3
|
|
db $00 ; End
|
|
|
|
.sub204
|
|
db C3, G3, Tie, G3, Tie, G3
|
|
db $00 ; End
|
|
|
|
.sub205
|
|
db A2s, F3, A3s, F3, D4, F3, A2s, F3, A3s, F3, D4, Tie
|
|
db $00 ; End
|
|
|
|
.sub206
|
|
db A2, E3, A3, E3, C4, E3, A2, E3, A3, E3, C4, Tie
|
|
db $00 ; End
|
|
|
|
.sub207
|
|
db G2, D3, G3, D3, A3s, D3, G2, D3, G3, D3, A3s, Tie
|
|
db $00 ; End
|
|
|
|
.sub208
|
|
db F2, C3, F3, C3, A3, C3, F2, C3, F3, C3, A3, Tie
|
|
db $00 ; End
|
|
|
|
|
|
|
|
.Channel3
|
|
%SetInstrument($09) ; Strings
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
db Rest
|
|
%CallSubroutine(.sub301+!ARAMC, 2)
|
|
%CallSubroutine(.sub302+!ARAMC, 2)
|
|
%CallSubroutine(.sub303+!ARAMC, 1)
|
|
%CallSubroutine(.sub304+!ARAMC, 1)
|
|
%CallSubroutine(.sub303+!ARAMC, 1)
|
|
db F3
|
|
%CallSubroutine(.subA01+!ARAMC, 5)
|
|
db F3, Tie, Tie, E3, Tie
|
|
db $00 ; End of the channel
|
|
|
|
|
|
.sub301
|
|
db F3, Tie, Tie, Tie, Tie, Tie, F3, Tie, Tie, E3, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub302
|
|
db A3, Tie, Tie, Tie, Tie, Tie, G3, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub303
|
|
db F3, Tie, Tie, Tie, Tie, Tie, E3, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub304
|
|
db D3, Tie, Tie, Tie, Tie, Tie, C3, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
|
|
|
|
.Channel4
|
|
%SetInstrument($09) ; Strings
|
|
%SetDurationN($24, $7F) ; 1/8
|
|
db Rest, $48
|
|
%CallSubroutine(.sub401+!ARAMC, 2)
|
|
%CallSubroutine(.sub402+!ARAMC, 2)
|
|
%CallSubroutine(.sub403+!ARAMC, 1)
|
|
%CallSubroutine(.sub404+!ARAMC, 1)
|
|
%CallSubroutine(.sub403+!ARAMC, 1)
|
|
db A2
|
|
%CallSubroutine(.subA01+!ARAMC, 5)
|
|
db A2s, Tie, Tie, A2s, Tie, $24, Tie
|
|
db $00 ; End of the channel
|
|
|
|
|
|
.sub401
|
|
db C3, Tie, Tie, Tie, Tie, Tie, C3, Tie, Tie, B2, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub402
|
|
db D3, Tie, Tie, Tie, Tie, Tie, C3, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub403
|
|
db A2, Tie, Tie, Tie, Tie, Tie, G2s, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub404
|
|
db F2s, Tie, Tie, Tie, Tie, Tie, E2, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
|
|
|
|
.Channel5
|
|
%SetInstrument($09) ; Strings
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub501+!ARAMC, 2)
|
|
%CallSubroutine(.sub502+!ARAMC, 2)
|
|
%CallSubroutine(.sub503+!ARAMC, 1)
|
|
%CallSubroutine(.sub504+!ARAMC, 1)
|
|
%CallSubroutine(.sub503+!ARAMC, 1)
|
|
db F2
|
|
%CallSubroutine(.subA01+!ARAMC, 5)
|
|
db F2, Tie, Tie, E2, Tie, Tie
|
|
db $00 ; End of the channel
|
|
|
|
|
|
.sub501
|
|
db F2, Tie, Tie, Tie, Tie, Tie, F2, Tie, Tie, E2, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub502
|
|
db A2, Tie, Tie, Tie, Tie, Tie, G2, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub503
|
|
db F2, Tie, Tie, Tie, Tie, Tie, E2, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub504
|
|
db D2, Tie, Tie, Tie, Tie, Tie, C2, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
|
|
.subA01
|
|
db Tie
|
|
db $00 ; End
|