⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmt.asx

📁 wince下著名的视频播放器源码
💻 ASX
📖 第 1 页 / 共 2 页
字号:
;*;* Raster Music Tracker, RMT Atari routine version 1.20051226;* (c) Radek Sterba, Raster/C.P.U., 2002 - 2005;* http://raster.atari.org;*;* Warnings:;*;* 1. RMT player routine needs 19 itself reserved bytes in zero page (no accessed;*    from any other routines) as well as cca 1KB of memory before the "PLAYER";*    address for frequency tables and functionary variables. It's:;*	  a) from PLAYER-$400 to PLAYER for stereo RMTplayer;*    b) from PLAYER-$380 to PLAYER for mono RMTplayer;*;* 2. RMT player routine MUST (!!!) be compiled from the begin of the memory page.;*    i.e. "PLAYER" address can be $..00 only!;*;* 3. Because of RMTplayer provides a lot of effects, it spent a lot of CPU time.;*;* STEREOMODE	equ 0				;0 => compile RMTplayer for 4 tracks mono;*									;1 => compile RMTplayer for 8 tracks stereo;*									;2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4;*									;3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4;*PLAYER		equ $0600;*	IFT STEREOMODE==1TRACKS		equ 8	ELSTRACKS		equ 4	EIF;*;* RMT FEATures definitions;* For optimizations of RMT player routine to concrete RMT modul only!;* --------BEGIN--------FEAT_INSTRSPEED		equ 0			;* cca 21 or 5 bytesFEAT_CONSTANTSPEED	equ 0			;* cca 28 bytes;* VARIOUS COMMANDSFEAT_COMMAND1		equ 1			;* cca 8 bytesFEAT_COMMAND2		equ 1			;* cca 20 bytes (+save 1 address in zero page) and quicker whole RMT routineFEAT_COMMAND3		equ 1			;* cca 12 bytesFEAT_COMMAND4		equ 1			;* cca 15 bytesFEAT_COMMAND5		equ 1			;* cca 67 bytesFEAT_COMMAND6		equ 1			;* cca 15 bytes;* COMMAND7 SETNOTE (i.e. command 7 with parameter != $80)FEAT_COMMAND7SETNOTE		equ 1		;* cca 12 bytes;* COMMAND7 VOLUMEONLY (i.e. command 7 with parameter == $80)FEAT_COMMAND7VOLUMEONLY		equ 1		;* cca 74 bytes;* PORTAMENTOFEAT_PORTAMENTO		equ 1			;* cca 138 bytes and quicker whole RMT routine;* FILTERFEAT_FILTER			equ 1			;* cca 179 bytes and quicker whole RMT routineFEAT_FILTERG0L		equ	1			;* (cca 38 bytes for each)FEAT_FILTERG1L		equ	1FEAT_FILTERG0R		equ	1FEAT_FILTERG1R		equ	1;* BASS16B (i.e. distortion value 6)FEAT_BASS16			equ 1			;* cca 194 bytes +128bytes freq table and quicker whole RMT routineFEAT_BASS16G1L		equ 1			;* (cca 47 bytes for each)FEAT_BASS16G3L		equ 1FEAT_BASS16G1R		equ 1FEAT_BASS16G3R		equ 1;* VOLUME ONLY for particular generatorsFEAT_VOLUMEONLYG0L	equ 1			;* (cca 7 bytes for each)FEAT_VOLUMEONLYG2L	equ 1FEAT_VOLUMEONLYG3L	equ 1FEAT_VOLUMEONLYG0R	equ 1FEAT_VOLUMEONLYG2R	equ 1FEAT_VOLUMEONLYG3R	equ 1;* TABLE TYPE (i.e. TABLETYPE=1)FEAT_TABLETYPE		equ 1			;* cca 53 bytes and quicker whole RMT routine;* TABLE MODE (i.e. TABLEMODE=1)FEAT_TABLEMODE		equ 1			;* cca 16 bytes and quicker whole RMT routine;* TABLE GO (i.e. TGO is nonzero value)FEAT_TABLEGO		equ 1			;* cca 6 bytes and quicker whole RMT routine;* AUDCTLMANUALSET (i.e. any MANUAL AUDCTL setting is nonzero value)FEAT_AUDCTLMANUALSET	equ 1		;* cca 27 bytes and quicker whole RMT routine;* VOLUME MINIMUM (i.e. VMIN is nonzero value)FEAT_VOLUMEMIN		equ 1			;* cca 12 bytes and quicker whole RMT routine;* --------END--------;*;* RMT ZeroPage addresses	org 203p_tisp_instrstable	org *+2p_trackslbstable	org *+2p_trackshbstable	org *+2p_song			org *+2ns				org *+2nr				org *+2nt				org *+2reg1			org *+1reg2			org *+1reg3			org *+1tmp				org *+1	IFT FEAT_COMMAND2frqaddcmd2		org *+1	EIF	IFT TRACKS>4	org PLAYER-$400	ELS	org PLAYER-$380	EIFtrack_variablestrackn_db	org *+TRACKStrackn_hb	org *+TRACKStrackn_idx	org *+TRACKStrackn_pause	org *+TRACKStrackn_note	org *+TRACKStrackn_volume	org *+TRACKStrackn_distor 	org *+TRACKStrackn_shiftfrq	org *+TRACKS	IFT FEAT_PORTAMENTOtrackn_portafrqc org *+TRACKStrackn_portafrqa org *+TRACKStrackn_portaspeed org *+TRACKStrackn_portaspeeda org *+TRACKStrackn_portadepth org *+TRACKS	EIFtrackn_instrx2	org *+TRACKStrackn_instrdb	org *+TRACKStrackn_instrhb	org *+TRACKStrackn_instridx	org *+TRACKStrackn_instrlen	org *+TRACKStrackn_instrlop	org *+TRACKStrackn_instrreachend	org *+TRACKStrackn_volumeslidedepth org *+TRACKStrackn_volumeslidevalue org *+TRACKS	IFT FEAT_VOLUMEMINtrackn_volumemin		org *+TRACKS	EIFtrackn_effdelay			org *+TRACKStrackn_effvibratoa		org *+TRACKStrackn_effvibratobeg	org *+TRACKStrackn_effvibratoend	org *+TRACKStrackn_effshift		org *+TRACKStrackn_tabletypespeed org *+TRACKS	IFT FEAT_TABLEMODEtrackn_tablemode	org *+TRACKS	EIFtrackn_tablenote	org *+TRACKStrackn_tablea		org *+TRACKStrackn_tableend		org *+TRACKS	IFT FEAT_TABLEGOtrackn_tablelop		org *+TRACKS	EIFtrackn_tablespeeda	org *+TRACKStrackn_command		org *+TRACKS	IFT FEAT_BASS16trackn_outnote		org *+TRACKS	EIF	IFT FEAT_FILTERtrackn_filter		org *+TRACKS	EIFtrackn_audf	org *+TRACKStrackn_audc	org *+TRACKS	IFT FEAT_AUDCTLMANUALSETtrackn_audctl	org *+TRACKS	EIF	IFT FEAT_CONSTANTSPEED==0v_speed			org *+1	EIFv_aspeed		org *+1	IFT FEAT_INSTRSPEED==0||FEAT_INSTRSPEED>1v_ainstrspeed	org *+1	EIFv_abeat			org *+1track_endvariables		org PLAYER-$100-$140-$30INSTRPAR	equ 12tabbeganddistor dta frqtabpure-frqtab,$00 dta frqtabpure-frqtab,$20 dta frqtabpure-frqtab,$40 dta frqtabbass1-frqtab,$c0 dta frqtabpure-frqtab,$80 dta frqtabpure-frqtab,$a0 dta frqtabbass1-frqtab,$c0 dta frqtabbass2-frqtab,$c0vibtabbeg dta 0,vib1-vib0,vib2-vib0,vib3-vib0,vibx-vib0vib0	dta 0vib1	dta 1,-1,-1,1vib2	dta 1,0,-1,-1,0,1vib3	dta 1,1,0,-1,-1,-1,-1,0,1,1vibx:PLAYER-$100-$140-* dta 0;		org PLAYER-$100-$140	IFT FEAT_BASS16frqtabbasslo	dta $F2,$33,$96,$E2,$38,$8C,$00,$6A,$E8,$6A,$EF,$80,$08,$AE,$46,$E6	dta $95,$41,$F6,$B0,$6E,$30,$F6,$BB,$84,$52,$22,$F4,$C8,$A0,$7A,$55	dta $34,$14,$F5,$D8,$BD,$A4,$8D,$77,$60,$4E,$38,$27,$15,$06,$F7,$E8	dta $DB,$CF,$C3,$B8,$AC,$A2,$9A,$90,$88,$7F,$78,$70,$6A,$64,$5E,$00	EIF		org PLAYER-$100-$100frqtab	ERT [<frqtab]!=0	;* frqtab must begin at the memory page bound! (i.e. $..00 address)frqtabbass1	dta $BF,$B6,$AA,$A1,$98,$8F,$89,$80,$F2,$E6,$DA,$CE,$BF,$B6,$AA,$A1	dta $98,$8F,$89,$80,$7A,$71,$6B,$65,$5F,$5C,$56,$50,$4D,$47,$44,$3E	dta $3C,$38,$35,$32,$2F,$2D,$2A,$28,$25,$23,$21,$1F,$1D,$1C,$1A,$18	dta $17,$16,$14,$13,$12,$11,$10,$0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07frqtabbass2	dta $FF,$F1,$E4,$D8,$CA,$C0,$B5,$AB,$A2,$99,$8E,$87,$7F,$79,$73,$70	dta $66,$61,$5A,$55,$52,$4B,$48,$43,$3F,$3C,$39,$37,$33,$30,$2D,$2A	dta $28,$25,$24,$21,$1F,$1E,$1C,$1B,$19,$17,$16,$15,$13,$12,$11,$10	dta $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00frqtabpure	dta $F3,$E6,$D9,$CC,$C1,$B5,$AD,$A2,$99,$90,$88,$80,$79,$72,$6C,$66	dta $60,$5B,$55,$51,$4C,$48,$44,$40,$3C,$39,$35,$32,$2F,$2D,$2A,$28	dta $25,$23,$21,$1F,$1D,$1C,$1A,$18,$17,$16,$14,$13,$12,$11,$10,$0F	dta $0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00,$00	IFT FEAT_BASS16frqtabbasshi	dta $0D,$0D,$0C,$0B,$0B,$0A,$0A,$09,$08,$08,$07,$07,$07,$06,$06,$05	dta $05,$05,$04,$04,$04,$04,$03,$03,$03,$03,$03,$02,$02,$02,$02,$02	dta $02,$02,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00	dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00	EIF		org PLAYER-$0100volumetab	dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00	dta $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01	dta $00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$02,$02,$02,$02	dta $00,$00,$00,$01,$01,$01,$01,$01,$02,$02,$02,$02,$02,$03,$03,$03	dta $00,$00,$01,$01,$01,$01,$02,$02,$02,$02,$03,$03,$03,$03,$04,$04	dta $00,$00,$01,$01,$01,$02,$02,$02,$03,$03,$03,$04,$04,$04,$05,$05	dta $00,$00,$01,$01,$02,$02,$02,$03,$03,$04,$04,$04,$05,$05,$06,$06	dta $00,$00,$01,$01,$02,$02,$03,$03,$04,$04,$05,$05,$06,$06,$07,$07	dta $00,$01,$01,$02,$02,$03,$03,$04,$04,$05,$05,$06,$06,$07,$07,$08	dta $00,$01,$01,$02,$02,$03,$04,$04,$05,$05,$06,$07,$07,$08,$08,$09	dta $00,$01,$01,$02,$03,$03,$04,$05,$05,$06,$07,$07,$08,$09,$09,$0A	dta $00,$01,$01,$02,$03,$04,$04,$05,$06,$07,$07,$08,$09,$0A,$0A,$0B	dta $00,$01,$02,$02,$03,$04,$05,$06,$06,$07,$08,$09,$0A,$0A,$0B,$0C	dta $00,$01,$02,$03,$03,$04,$05,$06,$07,$08,$09,$0A,$0A,$0B,$0C,$0D	dta $00,$01,$02,$03,$04,$05,$06,$07,$07,$08,$09,$0A,$0B,$0C,$0D,$0E	dta $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F	org PLAYER;*;* Set of RMT main vectors:;*RASTERMUSICTRACKER	jmp rmt_init	jmp rmt_play	jmp rmt_p3	jmp rmt_silence	jmp SetPokeyrmt_init	stx ns	sty ns+1	pha	IFT track_endvariables-track_variables>255	ldy #0	tyari0	sta track_variables,y	sta track_endvariables-$100,y	iny	bne ri0	ELS	ldy #track_endvariables-track_variables	lda #0ri0	sta track_variables-1,y	dey	bne ri0	EIF	ldy #4	lda (ns),y	sta v_maxtracklen	iny	IFT FEAT_CONSTANTSPEED==0	lda (ns),y	sta v_speed	EIF	IFT FEAT_INSTRSPEED==0	iny	lda (ns),y	sta v_instrspeed	sta v_ainstrspeed	ELI FEAT_INSTRSPEED>1	lda #FEAT_INSTRSPEED	sta v_ainstrspeed	EIF	ldy #8ri1	lda (ns),y	sta p_tis-8,y	iny	cpy #8+8	bne ri1	pla	pha	IFT TRACKS>4	asl @	asl @	asl @	clc	adc p_song	sta p_song	pla	php	and #$e0	asl @	rol @	rol @	rol @	ELS	asl @	asl @	clc	adc p_song	sta p_song	pla	php	and #$c0	asl @	rol @	rol @	EIF	plp	adc p_song+1	sta p_song+1	jsr GetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3rmt_silence	IFT STEREOMODE>0	lda #0	sta $d208	sta $d218	ldy #3	sty $d20f	sty $d21f	ldy #8si1	sta $d200,y	sta $d210,y	dey	bpl si1	ELS	lda #0	sta $d208	ldy #3	sty $d20f	ldy #8si1	sta $d200,y	dey	bpl si1	EIF	IFT FEAT_INSTRSPEED==0	lda v_instrspeed	ELS	lda #FEAT_INSTRSPEED	EIF	rtsGetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3GetSongLine	ldx #0	stx v_abeatnn0nn1	txa	tay	lda (p_song),y	cmp #$fe	bcs nn2	tay	lda (p_trackslbstable),y	sta trackn_db,x	lda (p_trackshbstable),ynn1a sta trackn_hb,x	lda #0	sta trackn_idx,x	lda #1nn1a2 sta trackn_pause,x	lda #$80	sta trackn_instrx2,x	inxxtracks01	cpx #TRACKS	bne nn1	lda p_song	clcxtracks02	adc #TRACKS	sta p_song	bcc GetTrackLine	inc p_song+1nn1b	jmp GetTrackLinenn2	beq nn3nn2a	lda #0	beq nn1a2nn3	ldy #2	lda (p_song),y	tax	iny	lda (p_song),y	sta p_song+1	stx p_song	ldx #0	beq nn0GetTrackLineoo0oo0a	IFT FEAT_CONSTANTSPEED==0	lda v_speed	sta v_bspeed	EIF	ldx #-1oo1	inx	dec trackn_pause,x	bne oo1xoo1b	lda trackn_db,x	sta ns	lda trackn_hb,x	sta ns+1oo1i	ldy trackn_idx,x	inc trackn_idx,x	lda (ns),y	sta reg1	and #$3f	cmp #61	beq oo1a	bcs oo2	sta trackn_note,x	IFT FEAT_BASS16	sta trackn_outnote,x	EIF	iny	lda (ns),y	lsr @	and #$3f*2	sta trackn_instrx2,xoo1a	lda #1	sta trackn_pause,x	ldy trackn_idx,x	inc trackn_idx,x	lda (ns),y	lsr @	ror reg1	lsr @	ror reg1	lda reg1	and #$f0	sta trackn_volume,xoo1xxtracks03sub1	cpx #TRACKS-1	bne oo1	IFT FEAT_CONSTANTSPEED==0	lda #$ffv_bspeed equ *-1	sta v_speed	ELS	lda #FEAT_CONSTANTSPEED	EIF	sta v_aspeed	jmp InitOfNewSetInstrumentsOnlyoo2	cmp #63	beq oo63	lda reg1	and #$c0	beq oo62_b	asl @	rol @	rol @	sta trackn_pause,x	jmp oo1xoo62_b	iny	lda (ns),y	sta trackn_pause,x	inc trackn_idx,x	jmp oo1xoo63	lda reg1	IFT FEAT_CONSTANTSPEED==0	bmi oo63_1X	iny	lda (ns),y	sta v_bspeed	inc trackn_idx,x	jmp oo1ioo63_1X	EIF	cmp #255	beq oo63_11	iny	lda (ns),y	sta trackn_idx,x	jmp oo1ioo63_11	jmp GetSongLinep2xrmtp3	jmp rmt_p3p2x0 dex	 bmi p2xrmtp3InitOfNewSetInstrumentsOnlyp2x1 ldy trackn_instrx2,x	bmi p2x0SetUpInstrumentY2	lda (p_instrstable),y	sta trackn_instrdb,x	sta nt	iny	lda (p_instrstable),y	sta trackn_instrhb,x	sta nt+1	IFT FEAT_FILTER	lda #1	sta trackn_filter,x	EIF	IFT FEAT_TABLEGO	IFT FEAT_FILTER	tay	ELS	ldy #1	EIF	lda (nt),y	sta trackn_tablelop,x	iny	ELS	ldy #2	EIF	lda (nt),y	sta trackn_instrlen,x	iny	lda (nt),y	sta trackn_instrlop,x	iny	lda (nt),y	sta trackn_tabletypespeed,x	IFT FEAT_TABLETYPE||FEAT_TABLEMODE	and #$3f	EIF	sta trackn_tablespeeda,x	IFT FEAT_TABLEMODE	lda (nt),y	and #$40	sta trackn_tablemode,x	EIF	IFT FEAT_AUDCTLMANUALSET	iny	lda (nt),y	sta trackn_audctl,x	iny	ELS	ldy #6	EIF	lda (nt),y	sta trackn_volumeslidedepth,x	IFT FEAT_VOLUMEMIN	iny	lda (nt),y	sta trackn_volumemin,x	iny	ELS	ldy #8	EIF	lda (nt),y	sta trackn_effdelay,x	iny	lda (nt),y	tay	lda vibtabbeg,y	sta trackn_effvibratoa,x	sta trackn_effvibratobeg,x	lda vibtabbeg+1,y	sta trackn_effvibratoend,x	ldy #10	lda (nt),y	sta trackn_effshift,x	lda #128	sta trackn_volumeslidevalue,x	sta trackn_instrx2,x	asl @	sta trackn_instrreachend,x	sta trackn_shiftfrq,x	tay	lda (nt),y	sta trackn_tableend,x	adc #0	sta trackn_instridx,x	lda #INSTRPAR	sta trackn_tablea,x	tay	lda (nt),y	sta trackn_tablenote,xxata_rtshere	jmp p2x0rmt_playrmt_p0	jsr SetPokeyrmt_p1	IFT FEAT_INSTRSPEED==0||FEAT_INSTRSPEED>1	dec v_ainstrspeed	bne rmt_p3	EIF	IFT FEAT_INSTRSPEED==0	lda #$ffv_instrspeed	equ *-1	sta v_ainstrspeed	ELI FEAT_INSTRSPEED>1	lda #FEAT_INSTRSPEED	sta v_ainstrspeed	EIFrmt_p2	dec v_aspeed	bne rmt_p3	inc v_abeat	lda v_abeat	cmp #$ffv_maxtracklen equ *-1	beq p2o3	jmp GetTrackLinep2o3	jmp GetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3go_ppnext	jmp ppnextrmt_p3	lda #>frqtab	sta nr+1xtracks05sub1	ldx #TRACKS-1pp1	lda trackn_instrhb,x	beq go_ppnext	sta ns+1	lda trackn_instrdb,x	sta ns	ldy trackn_instridx,x	lda (ns),y	sta reg1	iny	lda (ns),y	sta reg2	iny	lda (ns),y	sta reg3	iny	tya	cmp trackn_instrlen,x	bcc pp2	beq pp2	lda #$80	sta trackn_instrreachend,xpp1b	lda trackn_instrlop,xpp2	sta trackn_instridx,x	lda reg1	IFT TRACKS>4	cpx #4	bcc pp2s	lsr @	lsr @	lsr @	lsr @pp2s	EIF	and #$0f	ora trackn_volume,x	tay	lda volumetab,y	sta tmp	lda reg2	and #$0e	tay

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -