; Paul Slocum ; http://qotile.net ; ; Format optimization, constants and additional comments by ; Thomas Jentzsch (TJ) ;------------------------------------------------------------- ; SONG DATA FILE ;------------------------------------------------------------- ;------------------------------------------------------------- ; Macros ;------------------------------------------------------------- MAC HI_ARR {1} = (. - PsmkHiVolPatternArrays) / 4 ENDM MAC LO_ARR {1} = (. - PsmkLoVolPatternArrays) / 4 + ATTENUATION_FLAG ENDM MAC LO_PAT {1} = . - PsmkPatternsLo ENDM MAC HI_PAT {1} = . - PsmkPatternsHi ENDM ;------------------------------------------------------------- ; Tempo ;------------------------------------------------------------- ; TJ: If you ENABLE_FRAC_TEMPO you get the more precise tempo ; settings Paul had planned. 64 equals old 4, 85 old 3. IF ENABLE_FRAC_TEMPO ; 720 = LOGO_H * 4 TEMPODELAY SET 68 ; 68.27 = 256/(720/32/6) (equals 3.75) ; this is my NTSC/PAL timing switch: IF NTSC_TIM TEMPODELAY SET TEMPODELAY * 262 / 312 ENDIF ELSE TEMPODELAY SET 4 ENDIF ;------------------------------------------------------------- ; Sound Type Constants ;------------------------------------------------------------- HGH = 0 << 5 ; Pure High MTR = 1 << 5 ; Motor RMB = 2 << 5 ; Rumble JET = 3 << 5 ; Jet ;UNL = 4 << 5 ; Unleaded unused LOW = 4 << 5 ; Pure Low ;BZZ = 6 << 5 ; Buzzy unused END = 5 << 5 ; Enduro ;------------------------------------------------------------- ; Sound Type Array ;------------------------------------------------------------- MAC PSMK_SOUND_TYPE_ARRAY PsmkSoundTypeArray: .byte $04 ; Pure High .byte $06 ; Motor .byte $02 ; Rumble .byte $08 ; Jet ; .byte $0f ; Unleaded .byte $0c ; Pure Low ; .byte $01 ; Buzzy .byte $03 ; Enduro ENDM ;------------------------------------------------------------- ; Sound Attenuation Array ;------------------------------------------------------------- MAC PSMK_SOUND_ATTEN_ARRAY ; the higher the value, the lower the volume! PsmkSoundAttenArray: .byte $08 ; Pure High .byte $00 ; Motor .byte $0f ; Rumble .byte $09 ; Jet ; .byte $00 ; Unleaded .byte $06 ; Pure Low ; .byte $02 ; Buzzy .byte $00 ; Enduro ENDM ;;------------------------------------------------------------- ;; Auto High Hat ;;------------------------------------------------------------- ; ; MAC PSMK_HAT_PATTERN ; IF ENABLE_HIHAT ;HATSTART = 0 ; delays hihat at beginning of the song ;HATVOLUME = $07 ;HATPITCH = $00 ; very high ;HATSOUND = $08 ; noise ;PsmkHatPattern: ; .byte %10001000 ; .byte %10001000 ; .byte %10001000 ; .byte %10001010 ; ENDIF ; ENDM ;------------------------------------------------------------- ; Song Data ;------------------------------------------------------------- MAC PSMK_SONG_1 PsmkSong1: .byte P0, P0, P0, P1, P1, P2 .byte P3, P3, P3, P3, P3, P4 .byte P5, P3, P3, P5, P3, P6 .byte P7, P8, P9, P7, P8, P9 .byte P7, P8, P9, P7, P8, P9 ; End of song marker: .byte SONG_END ENDM MAC PSMK_SONG_2 PsmkSong2: .byte P10, P10, P10, P11, P11, P12 .byte P13, P10, P10, P13, P10, P12 .byte P14, P14, P14, P14, P14, P15 .byte P16, P14, P17, P16, P14, P17 .byte P16, P14, P17, P16, P14, P17 ; No end of song marker required here. ENDM ;------------------------------------------------------------- ; Pattern Arrays ;------------------------------------------------------------- MAC PSMK_HI_VOL_PATTERN_ARRAYS PsmkHiVolPatternArrays: HI_ARR P0 .byte BEAT0, MUTE , BEAT0, MUTE HI_ARR P1 .byte BEAT0, BEAT2, BEAT0, MUTE HI_ARR P2 .byte BEAT0, BEAT2, BEAT0, BEAT3 HI_ARR P3 .byte BEAT0, BEAT4, BEAT0, BEAT5 HI_ARR P4 .byte BEAT0, BEAT4, BEAT0, BEAT6 HI_ARR P5 .byte BEAT7, BEAT4, BEAT0, BEAT5 HI_ARR P6 .byte BEAT0, BEAT4, BEAT0, BEAT8 HI_ARR P7 .byte BEAT9, BEAT10, BEAT11, BEAT5 HI_ARR P8 .byte BEAT12, BEAT10, BEAT11, BEAT5 HI_ARR P9 .byte BEAT12, BEAT10, BEAT11, BEAT13 HI_ARR P10 .byte MUTE , BEAT14, MUTE , BEAT15 HI_ARR P11 .byte MUTE , BEAT14, BEAT16, BEAT15 HI_ARR P12 .byte MUTE , BEAT14, BEAT16, BEAT17 HI_ARR P13 .byte BEAT18, BEAT14, MUTE , BEAT15 HI_ARR P14 .byte BEAT14, BEAT14, BEAT19, BEAT15 HI_ARR P15 .byte BEAT14, BEAT14, BEAT20, BEAT17 HI_ARR P16 .byte BEAT21, BEAT14, BEAT19, BEAT15 HI_ARR P17 .byte BEAT14, BEAT14, BEAT20, BEAT15 ENDM ; MAC PSMK_LO_VOL_PATTERN_ARRAYS ;PsmkLoVolPatternArrays: ; ENDM ; MAC PSMK_PATTERNS_LO PsmkPatternsLo: LO_PAT BEAT0 .byte beat0 HI_PAT MUTE .byte >beat1 HI_PAT BEAT2 .byte >beat2 HI_PAT BEAT3 .byte >beat3 HI_PAT BEAT4 .byte >beat4 HI_PAT BEAT5 .byte >beat5 HI_PAT BEAT6 .byte >beat6 HI_PAT BEAT7 .byte >beat7 HI_PAT BEAT8 .byte >beat8 HI_PAT BEAT9 .byte >beat9 HI_PAT BEAT10 .byte >beat10 HI_PAT BEAT11 .byte >beat11 HI_PAT BEAT12 .byte >beat12 HI_PAT BEAT13 .byte >beat13 HI_PAT BEAT14 .byte >beat14 HI_PAT BEAT15 .byte >beat15 HI_PAT BEAT16 .byte >beat16 HI_PAT BEAT17 .byte >beat17 HI_PAT BEAT18 .byte >beat18 HI_PAT BEAT19 .byte >beat19 HI_PAT BEAT20 .byte >beat20 HI_PAT BEAT21 .byte >beat21 ENDM ;------------------------------------------------------------- ; Pattern Data ;------------------------------------------------------------- MAC PSMK_PATTERN_0 beat0: .byte END|%11110, MUTE_NOTE , JET|%01000, MUTE_NOTE , JET|%11111, MUTE_NOTE , JET|%11111, MUTE_NOTE beat1: .byte MUTE_NOTE , MUTE_NOTE , MUTE_NOTE , MUTE_NOTE , MUTE_NOTE , MUTE_NOTE , MUTE_NOTE , MUTE_NOTE beat2: .byte JET|%00000, JET|%00000, JET|%00010, MUTE_NOTE , JET|%00010, MUTE_NOTE , JET|%00101, MUTE_NOTE beat3: .byte JET|%11111, JET|%11110, JET|%11101, JET|%11100, END|%01000, JET|%11010, END|%01000, JET|%11000 beat4: .byte JET|%00001, JET|%00010, JET|%00011, JET|%00100, LOW|%01111, MUTE_NOTE , LOW|%11111, MUTE_NOTE beat5: .byte END|%01000, JET|%01000, JET|%01000, MUTE_NOTE , LOW|%11111, MUTE_NOTE , LOW|%11111, MUTE_NOTE beat6: .byte END|%01000, JET|%01000, END|%01000, JET|%11100, LOW|%11111, JET|%11001, LOW|%11111, JET|%10110 beat7: .byte END|%11110, RMB|%10001, JET|%01000, RMB|%10001, JET|%11111, RMB|%10001, JET|%11111, MUTE_NOTE beat8: .byte END|%01000, JET|%01000, JET|%01000, JET|%11100, LOW|%11010, JET|%11001, LOW|%11111, JET|%10110 beat9: .byte END|%11110, JET|%01000, END|%11110, RMB|%10001, JET|%01000, RMB|%10001, END|%11110, MUTE_NOTE ENDM MAC PSMK_PATTERN_1 beat10: .byte END|%01000, JET|%01000, JET|%00011, JET|%00100, LOW|%01111, MUTE_NOTE , LOW|%11111, MUTE_NOTE beat11: .byte END|%11110, MUTE_NOTE , END|%11110, MUTE_NOTE , JET|%01000, MUTE_NOTE , END|%11110, MUTE_NOTE beat12: .byte END|%11110, JET|%01000, END|%11110, MUTE_NOTE , JET|%01000, LOW|%01111, END|%11110, HGH|%10111 ENDM MAC PSMK_PATTERN_2 beat13: .byte END|%01000, JET|%01000, JET|%01000, MUTE_NOTE , LOW|%11010, LOW|%11010, LOW|%11111, MUTE_NOTE beat14: .byte MTR|%11000, MUTE_NOTE , MTR|%01101, MUTE_NOTE , MTR|%10100, MUTE_NOTE , MTR|%11000, MUTE_NOTE beat15: .byte MTR|%11000, MUTE_NOTE , MTR|%10100, MTR|%10100, MUTE_NOTE , MUTE_NOTE , MTR|%11000, MUTE_NOTE beat16: .byte MUTE_NOTE , RMB|%01001, MUTE_NOTE , JET|%00011, MTR|%11000, MUTE_NOTE , MTR|%11000, MUTE_NOTE beat17: .byte MTR|%01101, MUTE_NOTE , MTR|%01101, MTR|%01101, MUTE_NOTE , MUTE_NOTE , MTR|%11000, MUTE_NOTE ENDM MAC PSMK_PATTERN_3 beat18: .byte RMB|%10001, RMB|%10001, RMB|%10001, RMB|%10001, HGH|%00101, MUTE_NOTE , HGH|%00101, MUTE_NOTE beat19: .byte LOW|%11010, MUTE_NOTE , LOW|%11010, LOW|%11010, MUTE_NOTE , MUTE_NOTE , LOW|%11111, MUTE_NOTE beat20: .byte LOW|%10111, MUTE_NOTE , LOW|%10111, LOW|%10111, MUTE_NOTE , MUTE_NOTE , LOW|%10111, LOW|%10111 beat21: .byte MTR|%11000, MUTE_NOTE , MTR|%01101, MUTE_NOTE , MTR|%10100, LOW|%01111, MTR|%11000, HGH|%10111 ENDM