; ; How to build a .TUN file with a Z80 assembler ; This is designed for z80asm under Linux, but it's all pretty ; standard stuff. ; QUAVER EQU 10 ; Note durations CROTCHET EQU 20 MINIM EQU 40 SEMIBR EQU 80 ; 1 bar BREVE EQU 160 ; 2 bars ; ; Tune command bytes ; REST EQU 0 ; ; Bytes for the different notes ; CNAT EQU 48 ;Middle C CSHARP EQU 49 ;C# DNAT EQU 50 ;D DSHARP EQU 51 ;D# ENAT EQU 52 ;E FNAT EQU 53 ;F FSHARP EQU 54 ;F# GNAT EQU 55 ;G GSHARP EQU 56 ;G# ANAT EQU 57 ;A ASHARP EQU 58 ;A# BNAT EQU 59 ;B TUNECALL EQU 254 ;Call a sub-tune TUNERET EQU 253 ;Return from a sub-tune TUNEHLT EQU 255 ;End of tune SPFX_W EQU 0F9h ;Set waveform SPFX_X EQU 0FAh ;Set length of waveform SPFX_V EQU 0FBh ;Set volume OCTAVE EQU 12 ;Add "OCTAVE" to the notes to move up by 1 octave OCT2 EQU 24 ;2 octaves org 0F700h ;Address for in-game tune DEFW channel1 ;The 3 channels DEFW channel2 DEFW channel3 channel1: DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;4 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;4 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;8 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;12 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;16 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;20 bars DEFB TUNECALL DEFW YOHOA ;22 bars DEFB REST, 5 DEFB TUNEHLT ; ; The 15-men bit ; MEN15A: DEFB ASHARP-OCTAVE,CROTCHET ;0 DEFB ANAT-OCTAVE,CROTCHET ;1 DEFB GNAT-OCTAVE,CROTCHET ;2 DEFB DNAT-OCTAVE,QUAVER ;3 DEFB DNAT-OCTAVE,QUAVER ;3.5 DEFB ASHARP-OCTAVE, QUAVER ;4 DEFB ASHARP-OCTAVE, QUAVER ;4.5 DEFB ANAT-OCTAVE,CROTCHET ;5 DEFB GNAT-OCTAVE,CROTCHET ;6 DEFB DNAT-OCTAVE,CROTCHET ;7 DEFB TUNERET ; ; The yo-ho-ho bit ; YOHOA: DEFB DNAT, CROTCHET ;8 DEFB DNAT, CROTCHET ;9 DEFB DNAT, QUAVER ;10 DEFB CNAT, QUAVER ;10.5 DEFB ASHARP-OCTAVE, QUAVER ;11 DEFB ANAT-OCTAVE, QUAVER ;11.5 DEFB GNAT-OCTAVE, QUAVER ;12 DEFB GNAT-OCTAVE, CROTCHET ;12.5 DEFB FNAT-OCTAVE, QUAVER ;13.5 DEFB GNAT-OCTAVE, CROTCHET ;14 DEFB TUNERET ; MEN15B: DEFB ASHARP,CROTCHET ;0 DEFB ANAT,CROTCHET ;1 DEFB GNAT,CROTCHET ;2 DEFB DNAT,QUAVER ;3 DEFB DNAT,QUAVER ;3.5 DEFB ASHARP, QUAVER ;4 DEFB ASHARP, QUAVER ;4.5 DEFB ANAT,CROTCHET ;5 DEFB GNAT,CROTCHET ;6 DEFB DNAT,CROTCHET ;7 DEFB TUNERET ; YOHOB: DEFB DNAT+OCTAVE, CROTCHET ;8 DEFB DNAT+OCTAVE, CROTCHET ;9 DEFB DNAT+OCTAVE, QUAVER ;10 DEFB CNAT+OCTAVE, QUAVER ;10.5 DEFB ASHARP, QUAVER ;11 DEFB ANAT, QUAVER ;11.5 DEFB GNAT, QUAVER ;12 DEFB GNAT, CROTCHET ;12.5 DEFB FNAT, QUAVER ;13.5 DEFB GNAT, CROTCHET ;14 DEFB TUNERET channel2: DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;4 bars DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;4 bars DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;8 bars DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;12 bars DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;16 bars DEFB TUNECALL DEFW MEN15B DEFB TUNECALL DEFW YOHOB ;20 bars DEFB TUNECALL DEFW YOHOB ;22 bars DEFB REST, 5 DEFB TUNEHLT channel3: DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;4 bars DEFB TUNECALL DEFW MEN15A DEFB TUNECALL DEFW YOHOA ;4 bars ; ; We now go out of sync ; DEFB TUNECALL DEFW YOHOA DEFB TUNECALL DEFW MEN15A ;8 bars DEFB TUNECALL DEFW YOHOA DEFB TUNECALL DEFW MEN15A ;12 bars DEFB TUNECALL DEFW YOHOA DEFB TUNECALL DEFW MEN15A ;16 bars DEFB TUNECALL DEFW YOHOA DEFB TUNECALL DEFW MEN15A ;20 bars DEFB TUNECALL DEFW YOHOC ;22 bars DEFB REST, 5 DEFB TUNEHLT ; ; The yo-ho-ho bit, shifted down one octave for the finale ; YOHOC: DEFB DNAT-OCTAVE, CROTCHET ;8 DEFB DNAT-OCTAVE, CROTCHET ;9 DEFB DNAT-OCTAVE, QUAVER ;10 DEFB CNAT-OCTAVE, QUAVER ;10.5 DEFB ASHARP-OCT2, QUAVER ;11 DEFB ANAT-OCT2, QUAVER ;11.5 DEFB GNAT-OCT2, QUAVER ;12 DEFB GNAT-OCT2, CROTCHET ;12.5 DEFB FNAT-OCT2, QUAVER ;13.5 DEFB GNAT-OCT2, CROTCHET ;14 DEFB TUNERET ;