📄 tmc.asx
字号:
*---------------** TMC Player **Jaskier/Taquart**---------------* org $0500byte equ $fabajt equ $fbaddr equ $fcadrsng equ $feplayer equ * jmp init jmp play jmp soundmaxvol dta b(15)volume dta d' 'freqen dta d' 'kanal dta d' 'aktwys dta d' 'numdzw dta d' 'audctl dta d' 'aud1 dta b(0)aud2 dta b(0)voltab dta d' ' dta d' !!!!!!!!' dta d' !!!!!!!!""""' dta d' !!!!!"""""###' dta d' !!!!""""####$$' dta d' !!!"""###$$$%%' dta d' !!"""##$$$%%&&' dta d' !!""##$$%%&&''''' dta d' !!""##$$%%&&''''(' dta d' !!""#$$%%&''''(()' dta d' !!"##$%%&''''())*' dta d' !!"#$$%&''''()**+' dta d' !""#$%&&''()**+,' dta d' !"##$%&''()**+,-' dta d' !"#$%&''''()*+,-.' dta d' !"#$%&''()*+,-./'frqtab dta b(0),b($f1),b($e4),b($d7) dta b($cb),b($c0),b($b5),b($aa) dta b($a1),b($98),b($8f),b($87) dta b($7f),b($78),b($72),b($6b) dta b($65),b($5f),b($5a),b($55) dta b($50),b($4b),b($47),b($43) dta b($3f),b($3c),b($38),b($35) dta b($32),b($2f),b($2c),b($2a) dta b($27),b($25),b($23),b($21) dta b($1f),b($1d),b($1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(10),b(9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0) dta b(0),b($f2),b($e6),b($da) dta b($ce),b($bf),b($b6),b($aa) dta b($a1),b($98),b($8f),b($89) dta b($80),b($7a),b($71),b($6b) dta b($65),b($5f),b($5c),b($56) dta b($50),b($4d),b($47),b($44) dta b($3e),b($3c),b($38),b($35) dta b($32),b($2f),b($2d),b($2a) dta b($28),b($25),b($23),b($21) dta b($1f),b($1d),b($1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(10),b(9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0) dta b(0),b($ff),b($f1),b($e4) dta b($d8),b($ca),b($c0),b($b5) dta b($ab),b($a2),b($99),b($8e) dta b($87),b($7f),b($79),b($73) dta b($70),b($66),b($61),b($5a) dta b($55),b($52),b($4b),b($48) dta b($43),b($3f),b($3c),b($39) dta b($37),b($33),b($30),b($2d) dta b($2a),b($28),b($25),b($24) dta b($21),b($1f),b($1e),b($1c) dta b($1b),b($19),b($17),b($16) dta b($15),b($13),b($12),b($11) dta b($10),b(15),b(14),b(13) dta b(12),b(11),b(10),b(9) dta b(8),b(7),b(6),b(5) dta b(4),b(3),b(2),b(1) dta b(0),b($f3),b($e6),b($d9) dta b($cc),b($c1),b($b5),b($ad) dta b($a2),b($99),b($90),b($88) dta b($80),b($79),b($72),b($6c) dta b($66),b($60),b($5b),b($55) dta b($51),b($4c),b($48),b($44) dta b($40),b($3c),b($39),b($35) dta b($32),b($2f),b($2d),b($2a) dta b($28),b($25),b($23),b($21) dta b($1f),b($1d),b($1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(10),b(9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0)basslo dta b(0),b($f2),b($33),b($96) dta b($e2),b($38),b($8c),b($00) dta b($6a),b($e8),b($6a),b($ef) dta b($80),b($08),b($ae),b($46) dta b($e6),b($95),b($41),b($f6) dta b($b0),b($6e),b($30),b($f6) dta b($bb),b($84),b($52),b($22) dta b($f4),b($c8),b($a0),b($7a) dta b($55),b($34),b($14),b($f5) dta b($d8),b($bd),b($a4),b($8d) dta b($77),b($60),b($4e),b($38) dta b($27),b($15),b($06),b($f7) dta b($e8),b($db),b($cf),b($c3) dta b($b8),b($ac),b($a2),b($9a) dta b($90),b($88),b($7f),b($78) dta b($70),b($6a),b($64),b($5e)basshi dta b(0),b(13),b(13),b(12) dta b(11),b(11),b(10),b(10) dta b(9),b(8),b(8),b(7) dta b(7),b(7),b(6),b(6) dta b(5),b(5),b(5),b(4) dta b(4),b(4),b(4),b(3) dta b(3),b(3),b(3),b(3) dta b(2),b(2),b(2),b(2) dta b(2),b(2),b(2),b(1) dta b(1),b(1),b(1),b(1) dta b(1),b(1),b(1),b(1) dta b(1),b(1),b(1),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),b(0),b(0)czygrx dta d' 'pozwpt dta d' 'delay dta d' 'numptr dta d' 'poddzw dta d' 'wysdzw dta d' 'znksz dta d' 'frq dta d' 'vol1ch dta d' 'vol2ch dta d' 'adcvl1 dta d' 'adcvl2 dta d' 'adrsnl dta d' 'adrsnh dta d' 'slupy dta d' 'opad1 dta d' 'opad2 dta d' 'lopad1 dta d' 'lopad2 dta d' 'typ dta d' 'param dta d' 'pomoc1 dta d' 'pomoc2 dta d' 'czekaj dta d' 'dtyp dta d' 'ltyp dta d' 'ilperm dta d' 'aperm dta d' 'dperm dta d' 'lperm dta d' 'kolejn dta d' 'tempo dta b(0)ltempo dta b(0)pozptr dta b(0)czygrc dta b(0)przeci dta b(4),b(5),b(6),b(7) dta b(0),b(1),b(2),b(3)audtb1 dta b(4),b(2),b(0),b(0) dta b(4),b(2),b(0),b(0)audtb2 dta b(0),b(16),b(0),b(8) dta b(0),b(16),b(0),b(8)play lda czygrc beq r1-3 lda pozptr cmp #64 bcc r1 dec ltempo beq *+5 jmp sound ldx #7 lda #0p1 sta pozwpt,x sta delay,x dex bpl p1 sta pozptr tax ldy #15p2 lda (adrsng),y bpl p3 dey lda (adrsng),y bpl *+5 jmp stop stx addr asl @ asl @ rol addr asl @ rol addr asl @ rol addrzm0 adc #0 sta adrsng lda addrzm1 adc #0 sta adrsng+1 bcc p2-2p3 sta numptr,x dey lda (adrsng),y sta poddzw,x inx dey bpl p2 clc lda adrsng adc #16 sta adrsng bcc *+4 inc adrsng+1 jmp soundr1 dec ltempo bpl r1-3 inc pozptr lda tempo sta ltempo ldx #7r2 dec delay,x bmi *+5 jmp r14 ldy numptr,xzm2 lda $ffff,y sta addrzm3 lda $ffff,y sta addr+1 ldy pozwpt,xr3 lda (addr),y bne r4 jsr nparam jmp r13r4 cmp #$40 bcs r5 adc poddzw,x sta wysdzw,x jsr nparam ldy numdzw,x jsr dzwiek jmp r13r5 bne r8 iny inc pozwpt,x lda (addr),y bpl r6 sta bajt jsr nparam lda bajtr6 and #$7f bne r7 lda #64 sta pozptr bne r13r7 sta tempo sta ltempo bne r13r8 cmp #$80 bcs r11 and #$3f adc poddzw,x sta wysdzw,x iny inc pozwpt,x lda (addr),y and #127 bne r9 lda #64 sta pozptr bne r10r9 sta tempo sta ltempor10 jsr nparam ldy numdzw,x jsr dzwiek jmp r13r11 cmp #$c0 bcs r12 and #$3f sta numdzw,x iny inc pozwpt,x jmp r3r12 and #$3f sta delay,xr13 inc pozwpt,xr14 dex bmi sound jmp r2sound ldx #7p5 lda czygrx,x beq p6 jsr graj lda audctl,x and audtb1,x beq p6 ldy #71 lda (addr),y clc adc aktwys,x sta aktwys+2,x tay lda frqtab,y sec adc pomoc1,x sta frq+2,xp6 dex bpl p5 asl maxvol asl maxvol asl maxvol asl maxvol inx stx addr stx addr+1 ldx #7p9 txa tay lda vol1ch,y bne p10 ldy przeci,x lda vol2ch,y bne p10 txa tay lda #0p10 sta byte tya sta kanal,x lda frq,y sta freqen,x lda audctl,y sta bajt ora addr+1 sta addr+1 lda bajt and audtb1,x beq p11 lda frq+2,y sta freqen+2,xp11 lda bajt and audtb2,x beq p12 lda aktwys,y and #$3f tay iny sty addr lda basshi-1,y sta freqen,x jmp p13p12 ldy addr beq p13 lda basslo-1,y sta freqen,x lda #0 sta addrp13 lda byte ora maxvol tay lda voltab,y ldy kanal,x ora znksz,y sta volume,x cpx #4 bne p14 lda addr+1 sta aud2 lda #0 sta addr+1p14 dex bpl p9 lsr maxvol lsr maxvol lsr maxvol lsr maxvol lda addr+1quit ldx #3 stx $d21f stx $d20f ldx freqen+4 ldy freqen stx $d210 sty $d200 ldx volume+4 ldy volume stx $d211 sty $d201 ldx freqen+5 ldy freqen+1 stx $d212 sty $d202 ldx volume+5 ldy volume+1 stx $d213 sty $d203 ldx freqen+6 ldy freqen+2 stx $d214 sty $d204 ldx volume+6 ldy volume+2 stx $d215 sty $d205 ldx freqen+7 ldy freqen+3 stx $d216 sty $d206 ldx volume+7 ldy volume+3 stx $d217 sty $d207 sta aud1 ldx aud2 stx $d218 sta $d208 rtsgraj lda adrsnl,x sta addr lda adrsnh,x sta addr+1 ldy slupy,x cpy #63 beq n6 inc slupy,x inc slupy,x inc slupy,x lda (addr),y and #$f0 sta znksz,x lda (addr),y and #15 sec sbc adcvl1,x bpl n1 lda #0n1 sta vol1ch,x iny lda (addr),y and #15 sec sbc adcvl2,x bpl n2 lda #0n2 sta vol2ch,x lda (addr),y and #$f0 beq n8 bpl n3 ldy #73 lda (addr),y ldy slupy,x dey dey bpl n4n3 lda #0n4 sta audctl,x lda (addr),y and #$70 beq n9 lsr @ lsr @ sta n5+1 lda #0 sta pomoc1,x iny lda (addr),yn5 bcc * nop nop nop nop jmp a1 nop jmp a2 nop jmp a3 nop jmp a4 nop jmp a5 nop jmp a6 nop jmp a7n6 lda opad1,x beq n7 dec lopad1,x bne n7 sta lopad1,x lda vol1ch,x and #15 beq n7 dec vol1ch,xn7 lda opad2,x beq n8 dec lopad2,x bne n8 sta lopad2,x lda vol2ch,x and #15 beq n8 dec vol2ch,xn8 ldy #72 lda (addr),y sta audctl,xn9 lda aperm,x clc adc #63 tay lda (addr),y adc wysdzw,x sta aktwys,x tay lda frqtab,y sta frq,x dec lperm,x bpl m1 lda dperm,x sta lperm,x lda kolejn,x beq m6 clc adc aperm,x sta aperm,x beq m7 cmp ilperm,x bne m1 lda #$fem7 clc adc #1 sta kolejn,x bne m1m6 inc aperm,x lda ilperm,x cmp aperm,x bcs m1 lda #0 sta aperm,xm1 lda czekaj,x beq m2 dec czekaj,x rtsm2 lda pomoc2,x sta byte lda param,x sta bajt jsr m4 dec ltyp,x bpl m4-1 lda byte sta pomoc2,x lda bajt sta param,x lda dtyp,x sta ltyp,x rtsm4 lda typ,x sta m5+1m5 bpl * jmp typ0 nop jmp typ1 nop jmp typ2 nop jmp typ3 nop jmp typ4 nop jmp typ5 nop jmp typ6 nop jmp typ7typ1 lda byte inc byte and #3 lsr @ bcc t2 bne typ6 lda bajtt1 sta pomoc1,x clc adc frq,x sta frq,xtyp0 rtst2 lda #0 sta pomoc1,x rtstyp2 jsr t5 jmp t1typ3 jsr t5 clc adc aktwys,x jmp a5typ4 lda byte sta pomoc1,x clc adc frq,xt3 sta frq,x lda byte clc adc bajt sta byte rtstyp5 lda aktwys,x sec sbc byte sta aktwys,x tay lda frqtab,y jmp t3typ6 lda frq,x sec sbc bajt sta frq,x sec lda #0 sbc bajt sta pomoc1,x rtstyp7 lda ltyp,x bne typ0 lda bajt bpl t4 lda vol2ch,x beq typ0 lda vol1ch,x cmp #15 beq typ0 inc vol1ch,x rtst4 lda vol1ch,x beq typ0 lda vol2ch,x cmp #15 beq typ0 inc vol2ch,x rtst5 ldy byte lda bajt bmi t6 iny inyt6 dey tya sta byte cmp bajt bne t7 lda bajt eor #$ff sta bajtt7 tya rtsa2 adc frq,xa1 sta frq,x rtsa3 ldy wysdzw,x adc frqtab,y sta frq,x tya sta aktwys,x rtsa4 and $d20a sta frq,x rtsa7 adc wysdzw,xa5 sta aktwys,x tay lda frqtab,y sta frq,x rtsa6 sta aktwys,x tay lda frq,x adc frqtab,y sta frq,x rtsnparam iny inc pozwpt,x lda (addr),y lsr @ lsr @ lsr @ lsr @ sta adcvl1,x lda (addr),y and #15 sta adcvl2,x rtssongx jsr stop ldy #15zm4 lda #0 sta adrsngzm5 lda #0 sta adrsng+1d5 txa beq inicd3 lda (adrsng),y bpl d4 dexd4 clc lda adrsng adc #16 sta adrsng bcc d5 inc adrsng+1 bcs d5playx jsr stop lda #0 sta addr txa asl @ asl @ rol addr asl @ rol addr asl @ rol addrzm6 adc #0 sta adrsng lda addrzm7 adc #0 sta adrsng+1inic lda #64 sta pozptr lda #1 sta ltempo sta czygrc rtsinit cmp #$10 bcc songx cmp #$20 bcc playx cmp #$30 bcs *+5 jmp d2 cmp #$40 bcs i1 txa and #15 beq i1-1 sta tempo rtsi1 cmp #$50 bcc stop cmp #$60 bcs i2 lda #0i3 sta czygrc rtsi2 cmp #$70 bcc i3 lda #1 sta ltempo lda #64 sta pozptr sty addr stx addr+1 ldy #30 lda (addr),y sta tempo lda addr clc adc #32 sta zm8+1 bcc *+3 inx stx zm8+2 clc adc #$40 sta zm9+1 bcc *+3 inx stx zm9+2 clc adc #$40 sta zm2+1 bcc *+3 inx stx zm2+2 clc adc #$80 sta zm3+1 bcc *+3 inx stx zm3+2 clc adc #$80 sta adrsng sta zm0+1 sta zm4+1 sta zm6+1 bcc *+3 inx stx adrsng+1 stx zm1+1 stx zm5+1 stx zm7+1stop ldy #7 lda #0 sta czygrcd9 sta $d200,y sta $d210,y sta volume,y sta vol1ch,y sta vol2ch,y sta audctl,y sta czygrx,y dey bpl d9 sta $d208 sta $d218 sta aud1 sta aud2 rtsd1 sta vol1ch,x sta vol2ch,x sta audctl,x lda wysdzw,x sta aktwys,x rtsd0 tya eor #$f0 lsr @ lsr @ lsr @ lsr @ sta adcvl1,x tya and #15 eor #15 sta adcvl2,x rtsd2 and #7 sta addr txa ldx addr and #$3f beq d0 sta wysdzw,xdzwiek lda #0 sta czygrx,xzm8 lda $ffff,y sta adrsnl,x sta addrzm9 lda $ffff,y sta adrsnh,x sta addr+1 ora addr beq d1 ldy #74 lda (addr),y sta opad1,x sta lopad1,x iny lda (addr),y sta opad2,x sta lopad2,x iny lda (addr),y and #$70 lsr @ lsr @ sta typ,x lda (addr),y and #15 sta param,x lda (addr),y bpl d7 lda param,x eor #$ff clc adc #1 sta param,xd7 iny lda (addr),y sta czekaj,x iny lda (addr),y and #$3f sta dtyp,x sta ltyp,x iny lda (addr),y and #$80 beq d8 lda #1d8 sta kolejn,x lda (addr),y and #$70 lsr @ lsr @ lsr @ lsr @ sta ilperm,x bne d6 sta kolejn,xd6 lda (addr),y and #15 sta dperm,x sta lperm,x dey lda (addr),y and #$c0 clc adc wysdzw,x sta wysdzw,x sta aktwys,x tay lda frqtab,y sta frq,x lda #0 sta slupy,x sta pomoc1,x sta pomoc2,x sta aperm,x lda #1 sta czygrx,x rtsendplr end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -