175 lines
4.1 KiB
NASM
175 lines
4.1 KiB
NASM
;=====================================================================================
|
|
; The Legend of Zelda: A Link to the Past (Custom Music Track)
|
|
; The Legend of Zelda: Majora's Mask - Stone Tower Temple Theme v1.01
|
|
; Original Song by Koji Kondo
|
|
; Midi by (Unknown)
|
|
; ASM Framework by Zarby89
|
|
; Ported by Letterbomb
|
|
;=====================================================================================
|
|
|
|
org $1AA763; Sections?
|
|
StoneTowerTempleTheme:
|
|
!ARAMAddr = $D86A
|
|
dw !ARAMAddr+$08
|
|
dw $00FF
|
|
dw !ARAMAddr
|
|
dw $0000
|
|
|
|
.Channels
|
|
!ARAMC = !ARAMAddr-StoneTowerTempleTheme
|
|
dw .Channel0+!ARAMC
|
|
dw .Channel1+!ARAMC
|
|
dw .Channel2+!ARAMC
|
|
dw .Channel3+!ARAMC
|
|
dw .Channel4+!ARAMC
|
|
dw .Channel5+!ARAMC
|
|
dw $0000
|
|
dw $0000
|
|
|
|
|
|
.Channel0
|
|
%SetMasterVolume($DA)
|
|
%SetChannelVolume($BF)
|
|
%SetTempo(62);
|
|
%SetInstrument($02) ; Tympani
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub1+!ARAMC, 24)
|
|
%CallSubroutine(.sub2+!ARAMC, 64)
|
|
db $00 ; End of the channel
|
|
|
|
.sub1
|
|
db $48, B1, B1, $24, Tie, C2, F3s, Tie
|
|
db $00 ; End
|
|
|
|
.sub2
|
|
db Rest
|
|
db $00 ; End
|
|
|
|
|
|
.Channel1
|
|
%SetChannelVolume($FF)
|
|
%SetInstrument($18) ; Guitar
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub2+!ARAMC, 8)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 2)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
%CallSubroutine(.sub4+!ARAMC, 1)
|
|
%CallSubroutine(.sub3+!ARAMC, 1)
|
|
db E2, Tie, Tie, Tie
|
|
%CallSubroutine(.sub2+!ARAMC, 4)
|
|
db $00 ; End of the channel
|
|
|
|
.sub3
|
|
db E2, Tie, Tie, Tie, F2, Tie, D2, Tie
|
|
db $00 ; End
|
|
|
|
.sub4
|
|
db E2, Tie, Tie, Tie, F2, Tie, E2, Tie
|
|
db $00 ; End
|
|
|
|
|
|
.Channel2
|
|
%SetInstrument($09) ; Strings
|
|
%SetDurationN($24, $7F) ; 1/8
|
|
%CallSubroutine(.sub2+!ARAMC, 48)
|
|
%CallSubroutine(.sub5+!ARAMC, 5)
|
|
%CallSubroutine(.sub2+!ARAMC, 32)
|
|
%CallSubroutine(.sub5+!ARAMC, 4)
|
|
%CallSubroutine(.sub2+!ARAMC, 32)
|
|
db $00 ; End of the channel
|
|
|
|
.sub5
|
|
db A2, E3, A2, E3, A2, E3, F3, Tie, A2, E3, A2, E3, A2, E3, D3, Tie
|
|
db $00 ; End
|
|
|
|
|
|
.Channel3
|
|
%SetChannelVolume($BA)
|
|
%SetInstrument($0D) ; Ocarina
|
|
%SetDurationN($24, $7F) ; 1/8
|
|
%CallSubroutine(.sub2+!ARAMC, 64)
|
|
%CallSubroutine(.sub7+!ARAMC, 1)
|
|
%CallSubroutine(.sub8+!ARAMC, 1)
|
|
%CallSubroutine(.sub7+!ARAMC, 1)
|
|
%CallSubroutine(.sub9+!ARAMC, 1)
|
|
%CallSubroutine(.sub7+!ARAMC, 1)
|
|
%CallSubroutine(.sub8+!ARAMC, 1)
|
|
%CallSubroutine(.sub7+!ARAMC, 1)
|
|
%CallSubroutine(.sub9+!ARAMC, 1)
|
|
%CallSubroutine(.sub2+!ARAMC, 16)
|
|
%CallSubroutine(.sub10+!ARAMC, 1)
|
|
db B4, E5, Tie
|
|
%CallSubroutine(.sub11+!ARAMC, 1)
|
|
%CallSubroutine(.sub10+!ARAMC, 1)
|
|
db C5, $48, B4, B4, A4, Tie
|
|
%CallSubroutine(.sub10+!ARAMC, 1)
|
|
db Tie, E5, Tie
|
|
%CallSubroutine(.sub11+!ARAMC, 1)
|
|
db $24, E5, F5, E5, D5, $48, C5, B4, A4, Tie, Tie, Tie
|
|
%CallSubroutine(.sub12+!ARAMC, 2)
|
|
db $00 ; End of the channel
|
|
|
|
.sub7
|
|
db $48, A4, C5, B4, $24, Tie, G4, A4, C5
|
|
db $00 ; End
|
|
|
|
.sub8
|
|
db $09, B4, C5, $12, B4, A4, Tie, $48, G4, E4
|
|
db $00 ; End
|
|
|
|
.sub9
|
|
db $09, B4, C5, B4, Tie, $24, G4, $48, A4, Tie
|
|
db $00 ; End
|
|
|
|
.sub10
|
|
db $48, E5, E5, $24, D5, Tie, Tie
|
|
db $00 ; End
|
|
|
|
.sub11
|
|
db $24, D5, C5, $48, B4, Tie
|
|
db $00 ; End
|
|
|
|
.sub12
|
|
db $48, E5, $24, A5, C6, $12, B5, B5, $48, Tie, G5, $24, E5, A5, C6, $12, B5, $48, B5, $24, Tie, $12, Tie
|
|
db $00 ; End
|
|
|
|
|
|
.Channel4
|
|
%SetChannelVolume($CA)
|
|
%SetInstrument($0F) ; Harp
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub2+!ARAMC, 48)
|
|
%CallSubroutine(.sub13+!ARAMC, 1)
|
|
db $24, A4, $48, G4, E4
|
|
%CallSubroutine(.sub13+!ARAMC, 1)
|
|
db $24, G4, $48, A4, Tie
|
|
%CallSubroutine(.sub2+!ARAMC, 64)
|
|
db $00 ; End of the channel
|
|
|
|
.sub13
|
|
db $48, A4, C5, $12, B4, B4, $48, Tie, $24, G4, A4, C5, $12, B4, B4
|
|
db $00 ; End
|
|
|
|
|
|
.Channel5
|
|
%SetChannelVolume($BA)
|
|
%SetInstrument($15) ; Choir
|
|
%SetDurationN($48, $7F) ; 1/4
|
|
%CallSubroutine(.sub2+!ARAMC, 8)
|
|
%CallSubroutine(.sub6+!ARAMC, 15)
|
|
db $00 ; End of the channel
|
|
|
|
.sub6
|
|
db A2, Tie, Tie, Tie, Tie, Tie, Tie, Tie
|
|
db $00 ; End
|
|
|
|
assert pc() <= $1AB4D5 |