2012-12-12 07:27:34 -06:00
|
|
|
**************************************************
|
|
|
|
* COSMOS THEME
|
|
|
|
**************************************************
|
|
|
|
PlaySong01Note
|
|
|
|
:start lda Song01
|
|
|
|
]song01Ptr equ *-2
|
|
|
|
cmp #$02
|
|
|
|
bne :noLoop
|
|
|
|
lda #Song01
|
|
|
|
sta ]song01Ptr
|
|
|
|
lda #>Song01
|
|
|
|
sta ]song01Ptr+1
|
|
|
|
bra :start
|
|
|
|
:noLoop
|
|
|
|
;ldx #$20 ; x passed as wait value.. omg the hacks
|
|
|
|
jsr SENoteAX
|
|
|
|
|
|
|
|
lda ]frameCount
|
|
|
|
cmp #_frameRepeat
|
|
|
|
beq :nextNote
|
|
|
|
inc ]frameCount
|
|
|
|
rts
|
|
|
|
:nextNote stz ]frameCount
|
|
|
|
inc ]song01Ptr
|
|
|
|
beq :inc
|
|
|
|
rts
|
|
|
|
:inc inc ]song01Ptr+1
|
|
|
|
rts
|
|
|
|
]frameCount db 0
|
|
|
|
_frameRepeat equ 2
|
|
|
|
|
|
|
|
Song01 hex 66,99,a3,66,99,a3,66,99,66,99,a3,66,99,a3,66,99
|
|
|
|
hex 72,99,a3,72,99,a3,72,99,72,99,a3,72,99,a3,72,99
|
|
|
|
hex 79,a3,b5,79,a3,b5,79,a3,79,a3,b5,79,a3,b5,79,a3
|
|
|
|
hex 6c,99,a3,6c,99,a3,6c,99,6c,99,a3,6c,99,a3,6c,5b
|
|
|
|
hex 66,99,a3,66,99,a3,66,99,66,99,a3,66,99,a3,66,99
|
|
|
|
hex 02 ;end
|
|
|
|
|
2012-12-14 18:25:11 -06:00
|
|
|
**************************************************
|
|
|
|
* Logo Theme
|
|
|
|
**************************************************
|
|
|
|
PlaySong02
|
|
|
|
ldy #0
|
|
|
|
:loop lda Song02,y
|
|
|
|
cmp #NoteEnd
|
|
|
|
beq :done
|
|
|
|
cmp #NoteRest
|
|
|
|
bne :notRest
|
|
|
|
lda Song02+1,y
|
|
|
|
jsr SimplerWait
|
|
|
|
bra :nextNote
|
|
|
|
:notRest ldx Song02+1,y
|
|
|
|
pha
|
|
|
|
phx
|
|
|
|
phy
|
|
|
|
jsr SENoteAX
|
|
|
|
lda #5
|
|
|
|
jsr SimplerWait
|
|
|
|
jsr VBlank
|
|
|
|
ply
|
|
|
|
plx
|
|
|
|
pla
|
|
|
|
:nextNote iny
|
|
|
|
iny
|
|
|
|
bra :loop
|
|
|
|
:done rts
|
|
|
|
Song02 hex 00,30,00,30,00,30,00,30,00,30,F0,30,AC,50,01,30
|
|
|
|
hex 00,30,00,30,00,30,00,30,00,30,F0,30,AC,50,01,30
|
|
|
|
hex 00,30,00,30,00,30,00,30,00,30,F0,30,AC,50,01,30
|
|
|
|
hex F0,40,90,50,CB,60,C0,80,02
|
|
|
|
|
|
|
|
|
2012-12-11 21:31:52 -06:00
|
|
|
**************************************************
|
|
|
|
* play random short note
|
|
|
|
**************************************************
|
|
|
|
SErandBlip
|
|
|
|
jsr GetRand
|
|
|
|
sta _SECURRNOTE
|
|
|
|
lda #5
|
|
|
|
sta _SECURRNOTE+1
|
|
|
|
jsr SEplayNote
|
|
|
|
rts
|
|
|
|
|
|
|
|
**************************************************
|
|
|
|
* wrapper for SEplayNote
|
|
|
|
* a = freq ... x = dur
|
|
|
|
**************************************************
|
|
|
|
SENoteAX
|
|
|
|
sta _SECURRNOTE
|
|
|
|
stx _SECURRNOTE+1
|
|
|
|
jsr SEplayNote
|
|
|
|
rts
|
|
|
|
|
|
|
|
**************************************************
|
|
|
|
*
|
|
|
|
**************************************************
|
|
|
|
SEplayNote
|
|
|
|
:loop lda SPEAKER
|
|
|
|
:whyWut dey
|
|
|
|
bne :thar
|
|
|
|
dec _SECURRNOTE+1
|
|
|
|
beq :doneThat
|
|
|
|
:thar dex
|
|
|
|
bne :whyWut
|
|
|
|
ldx _SECURRNOTE
|
|
|
|
jmp :loop
|
|
|
|
:doneThat rts
|
|
|
|
|
2012-12-21 16:16:11 -06:00
|
|
|
|
2012-12-11 21:31:52 -06:00
|
|
|
_SECURRNOTE db 0,0 ; current note being played (frequency/duration)
|
|
|
|
|
2012-12-14 18:25:11 -06:00
|
|
|
SEToneAX
|
|
|
|
:clickLoop
|
|
|
|
pha
|
|
|
|
ldy SPEAKER
|
|
|
|
:waitLoop dec
|
|
|
|
bne :waitLoop
|
|
|
|
pla
|
2012-12-21 16:16:11 -06:00
|
|
|
inc ; slide?
|
|
|
|
inc
|
|
|
|
inc
|
|
|
|
inc
|
2012-12-14 18:25:11 -06:00
|
|
|
dex
|
|
|
|
bne :clickLoop
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
2012-12-12 07:27:34 -06:00
|
|
|
**************************************************
|
|
|
|
* This is essentially the scale
|
|
|
|
**************************************************
|
2012-12-11 13:49:34 -06:00
|
|
|
_SE_tones db NoteG0,NoteGsharp0,NoteA0,NoteBflat0,NoteB0
|
|
|
|
db NoteC1,NoteCsharp1,NoteD1,NoteDsharp1,NoteE1
|
|
|
|
db NoteF1,NoteFsharp1,NoteG1,NoteGsharp1,NoteA1
|
|
|
|
db NoteBflat1,NoteB1,NoteC2,NoteCsharp2,NoteD2
|
|
|
|
db NoteDsharp2,NoteE2,NoteF2
|
2012-12-12 07:27:34 -06:00
|
|
|
|
2012-12-11 21:31:52 -06:00
|
|
|
NoteRest equ $01 ;\_ these are inaudible anyway
|
|
|
|
NoteEnd equ $02 ;/
|
2012-12-11 13:49:34 -06:00
|
|
|
NoteG0 equ $00 ; because it loops
|
|
|
|
NoteGsharp0 equ $f0
|
|
|
|
NoteA0 equ $e6
|
|
|
|
NoteBflat0 equ $d5
|
|
|
|
NoteB0 equ $cb ; speculating here on up
|
|
|
|
NoteC1 equ $c0
|
|
|
|
NoteCsharp1 equ $b5
|
|
|
|
NoteD1 equ $ac
|
|
|
|
NoteDsharp1 equ $a3
|
|
|
|
NoteE1 equ $99
|
|
|
|
NoteF1 equ $90
|
|
|
|
NoteFsharp1 equ $89
|
|
|
|
NoteG1 equ $80
|
|
|
|
NoteGsharp1 equ $79
|
|
|
|
NoteA1 equ $72
|
|
|
|
NoteBflat1 equ $6c
|
|
|
|
NoteB1 equ $66
|
|
|
|
NoteC2 equ $60
|
|
|
|
NoteCsharp2 equ $5b
|
|
|
|
NoteD2 equ $56
|
|
|
|
NoteDsharp2 equ $51
|
|
|
|
NoteE2 equ $4c
|
|
|
|
NoteF2 equ $48
|
|
|
|
; starts to suck here anyway
|
|
|
|
|
|
|
|
|
|
|
|
SErandStatic
|
|
|
|
ldy #$ff
|
|
|
|
:loop lda SPEAKER
|
|
|
|
jsr GetRand
|
|
|
|
* lsr
|
|
|
|
beq :next
|
|
|
|
:wait dec
|
|
|
|
bne :wait
|
|
|
|
:next dey
|
|
|
|
bne :loop
|
|
|
|
rts
|
|
|
|
|
2012-12-11 21:31:52 -06:00
|
|
|
* y = length
|
|
|
|
SErandStaticBit
|
|
|
|
:loop lda SPEAKER
|
2012-12-11 13:49:34 -06:00
|
|
|
jsr GetRand
|
2012-12-11 21:31:52 -06:00
|
|
|
lsr
|
|
|
|
beq :next
|
|
|
|
:wait dec
|
|
|
|
bne :wait
|
|
|
|
:next dey
|
|
|
|
bne :loop
|
2012-12-11 13:49:34 -06:00
|
|
|
rts
|
|
|
|
|
2012-12-14 18:25:11 -06:00
|
|
|
* y = length - no shift so wider range
|
|
|
|
SErandStaticBit2
|
|
|
|
:loop lda SPEAKER
|
|
|
|
jsr GetRand
|
|
|
|
beq :next
|
|
|
|
:wait dec
|
|
|
|
bne :wait
|
|
|
|
:next dey
|
|
|
|
bne :loop
|
|
|
|
rts
|
|
|
|
|
2012-12-11 13:49:34 -06:00
|
|
|
|