📄 vfd_1621_disc.h
字号:
#ifndef __VFD_R_H
#define __VFD_R_H
#define VFD_7SEG_SAR (1<<0)
#define VFD_7SEG_SBR (1<<1)
#define VFD_7SEG_SCR (1<<3)
#define VFD_7SEG_SDL (1<<3)
#define VFD_7SEG_SEL (1<<2)
#define VFD_7SEG_SFL (1<<1)
#define VFD_7SEG_SGR (1<<2)
#include "vfd_7seg.h"
#include "macro.h"
#include "fs9660.h"
#define VFD_DOT_MP3 (72)
#define VFD_DOT_VCD (122)
#define VFD_DOT_CD (121)
#define VFD_DOT_MINUS (59)
#define VFD_DOT_PAL (118)
#define VFD_DOT_NTSC (117)
#define VFD_DOT_REPALL (255)
#define VFD_DOT_REP1 (255)
#define VFD_DOT_REPEAT (16)
#define VFD_DOT_MINSEC (88)
#define VFD_DOT_MIN (104)
#define VFD_DOT_SEC (116)
#define VFD_DOT_PAUSE (18)
#define VFD_DOT_PLAY (17)
#define VFD_DOT_PBC (19)
#define VFD_DOT_2R (56)
#define VFD_DOT_1L (57)
#define VFD_DOT_PGM (58)
#define VFD_DOT_HUNDRED (24)
#define VFDA_P0L 3
#define VFDA_P0R 4
#define VFDA_P1L 5
#define VFDA_P1R 6
#define VFDA_M0L 7
#define VFDA_M0R 8
#define VFDA_M1L 9
#define VFDA_M1R 10
#define VFDA_S0L 11
#define VFDA_S0R 12
#define VFDA_S1L 13
#define VFDA_S1R 14
const BYTE vfd_disc[] = {0,3,2,1,8,9,10,11};
const BYTE vfd_addr[] = {4,3,6,5,8,7,10,9,12,11,14,13};
void print_vfd_digital(BYTE no,BYTE data)
{
if (no%2==0)
{
vfd_mem[vfd_addr[no]]&=(~0x0f);
vfd_mem[vfd_addr[no]]|=(vfd_digit[data]);
}
else
{
if(no==5)
{
vfd_mem[vfd_addr[no]]&=(~0xe0);
vfd_mem[vfd_addr[no]]|=(vfd_digit[data]<<4);
}
else
{
vfd_mem[vfd_addr[no]]&=(~0x0e);
vfd_mem[vfd_addr[no]]|=(vfd_digit[data]);
}
}
}
void vfd_disc_turn(BYTE mode)
{
static BYTE j=0;
if (mode==2)
{
vfd_mem[0]|=0x0f;
vfd_mem[1]|=0x0f;
vfd_dot(VFD_DOT_OFF,vfd_disc[j++]);
if(j>=8)
j=0;
}
else if (mode==1)
{
vfd_mem[0]|=0x0f;
vfd_mem[1]|=0x0f;
}
else
{
vfd_mem[0]&=0xf0;
vfd_mem[1]&=0xf0;
}
return;
}
void vfd_cdtype(BYTE cd_types)
{
switch(cd_types)
{
#if 0
case CDCVD:
case CDSVCD:
vfd_dot(VFD_DOT_ON,VFD_DOT_SVCD);
break;
#endif
case CDVCD10:
case CDVCD11:
case CDVCD20:
vfd_dot(VFD_DOT_ON,VFD_DOT_VCD);
break;
case CDDA:
vfd_dot(VFD_DOT_ON,VFD_DOT_CD);
break;
case CDVCD30:
break;
case CDROM:
vfd_dot(VFD_DOT_ON,VFD_DOT_MP3);
break;
}
}
void vfd_close(void)
{//ok!
print_vfd_digital(2,12*2);
print_vfd_digital(3,12*2+1);
print_vfd_digital(4,21*2);
print_vfd_digital(5,21*2+1);
print_vfd_digital(6,24*2);
print_vfd_digital(7,24*2+1);
print_vfd_digital(8,28*2);
print_vfd_digital(9,28*2+1);
print_vfd_digital(10,14*2);
print_vfd_digital(11,14*2+1);
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
}
void vfd_readtoc(void)
{
init_vfd_clear(0);
vfd_disc_turn(0);
print_vfd_digital(4,54);
print_vfd_digital(5,55);
print_vfd_digital(6,28);
print_vfd_digital(7,29);
print_vfd_digital(8,20);
print_vfd_digital(9,21);
print_vfd_digital(10,26);
print_vfd_digital(11,27);
return;
}
void vfd_nodisc(void)
{//ok!
print_vfd_digital(0,23*2);
print_vfd_digital(1,23*2+1);
print_vfd_digital(2,24*2);
print_vfd_digital(3,24*2+1);
print_vfd_digital(4,13*2);
print_vfd_digital(5,13*2+1);
print_vfd_digital(6,18*2);
print_vfd_digital(7,18*2+1);
print_vfd_digital(8,28*2);
print_vfd_digital(9,28*2+1);
print_vfd_digital(10,12*2);
print_vfd_digital(11,12*2+1);
}
void vfd_open(void)
{//ok!
print_vfd_digital(4,24*2);
print_vfd_digital(5,24*2+1);
print_vfd_digital(6,25*2);
print_vfd_digital(7,25*2+1);
print_vfd_digital(8,14*2);
print_vfd_digital(9,14*2+1);
print_vfd_digital(10,23*2);
print_vfd_digital(11,23*2+1);
}
void vfd_show_time(void)
{//ok!
static BYTE cd_time_ss=0xff;//0; wyf 2-4-1 15:57
if(cd_disp_ss!=cd_time_ss)
{
cd_time_ss= cd_disp_ss;
if ((cd_disp_trk/100)>0)
vfd_dot(VFD_DOT_ON,VFD_DOT_HUNDRED);
if((cd_disp_trk/10)==0)
{
print_vfd_digital(0, cd_disp_trk/10);
print_vfd_digital(1, cd_disp_trk/10+1);
}
else
{
print_vfd_digital(0, (cd_disp_trk/10)*2);
print_vfd_digital(1, (cd_disp_trk/10)*2+1);
}
if((cd_disp_trk%10)==0)
{
print_vfd_digital(2, cd_disp_trk%10);
print_vfd_digital(3, cd_disp_trk%10+1);
}
else
{
print_vfd_digital(2, (cd_disp_trk%10)*2);
print_vfd_digital(3, (cd_disp_trk%10)*2+1);
}
if((cd_disp_mm/10)==0)
{
print_vfd_digital(4, cd_disp_mm/10);
print_vfd_digital(5, cd_disp_mm/10+1);
}
else
{
print_vfd_digital(4, (cd_disp_mm/10)*2);
print_vfd_digital(5, (cd_disp_mm/10)*2+1);
}
if((cd_disp_mm%10)==0)
{
print_vfd_digital(6, cd_disp_mm%10);
print_vfd_digital(7, cd_disp_mm%10+1);
}
else
{
print_vfd_digital(6, (cd_disp_mm%10)*2);
print_vfd_digital(7, (cd_disp_mm%10)*2+1);
}
if((cd_disp_ss/10)==0)
{
print_vfd_digital(8,cd_disp_ss/10);
print_vfd_digital(9,cd_disp_ss/10+1);
}
else
{
print_vfd_digital(8,(cd_disp_ss/10)*2);
print_vfd_digital(9,(cd_disp_ss/10)*2+1);
}
if((cd_disp_ss%10)==0)
{
print_vfd_digital(10,cd_disp_ss%10);
print_vfd_digital(11,cd_disp_ss%10+1);
}
else
{
print_vfd_digital(10,(cd_disp_ss%10)*2);
print_vfd_digital(11,(cd_disp_ss%10)*2+1);
}
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
}
else
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
return;
}
void vfd_pause(void)
{
vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
vfd_disc_turn(1);
return;
}
void vfd_audio(void)
{
switch(audio_channel)
{
case CH_LR:
vfd_dot(VFD_DOT_ON,VFD_DOT_1L);
vfd_dot(VFD_DOT_ON,VFD_DOT_2R);
break;
#ifdef VOCAL_CANCEL
case CH_AUTO_L:
#endif
case CH_LL:
vfd_dot(VFD_DOT_ON,VFD_DOT_1L);
vfd_dot(VFD_DOT_OFF,VFD_DOT_2R);
break;
#ifdef VOCAL_CANCEL
case CH_AUTO_R:
#endif
case CH_RR:
vfd_dot(VFD_DOT_OFF,VFD_DOT_1L);
vfd_dot(VFD_DOT_ON,VFD_DOT_2R);
break;
#ifdef VOCAL_CANCEL
case CH_AUTO_LR:
vfd_dot(VFD_DOT_ON,VFD_DOT_1L);
vfd_dot(VFD_DOT_ON,VFD_DOT_2R);
break;
#endif
}
}
void vfd_format(void)
{
if(tv_format==TV_NTSC)
{
vfd_dot(VFD_DOT_ON,VFD_DOT_NTSC);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAL);
}
else
if(tv_format==TV_PAL)
{
vfd_dot(VFD_DOT_ON,VFD_DOT_PAL);
vfd_dot(VFD_DOT_OFF,VFD_DOT_NTSC);
}
}
void vfd_playmode(void)
{
if(cd_type_loaded==CDROM||cd_type_loaded==CDDA) //wyf 2-6-25 9:02.
{
vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);
return;
}
else
{
if(IsPBCOn ())
vfd_dot(VFD_DOT_ON,VFD_DOT_PBC);
else
vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);
}
}
void vfd_repeat(void)
{
switch (rep_mode)
{
case REPEAT_TRACK:
vfd_dot(VFD_DOT_ON,VFD_DOT_REP1);
vfd_dot(VFD_DOT_ON,VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
break;
case REPEAT_DISC:
if(cd_type_loaded==CDROM)
vfd_dot(VFD_DOT_ON,VFD_DOT_REPALL);
else
vfd_dot(VFD_DOT_ON,VFD_DOT_REPALL);
//vfd_dot(VFD_DOT_ON,VFD_DOT_REP1);
vfd_dot(VFD_DOT_ON,VFD_DOT_REPEAT);
break;
default: //repeat cancel
vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
break;
}
}
void vfd_refresh(void)
{
vfd_playmode();
vfd_format();
vfd_cdtype(cd_type_loaded);
vfd_audio();
}
void vfd_normal_state(void)
{
//int mic_on_off_flag;
if(cd_type_loaded!=CDNODISK)
{
if(Gmem.gmp3.gifsFunc!=FS_FUNC_JPEG)
{
vfd_disc_turn(2);
vfd_show_time();
}
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
if(prog_state==PLAY_PROGRAM)
vfd_dot(VFD_DOT_ON,VFD_DOT_PGM);
#if 0
if(au_get_mic_mode()!=MIC_OFF)
vfd_dot(VFD_DOT_ON,VFD_DOT_MIC);
else
vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC);
#endif
//AVAPI_control(C_WRITE,AVAPI_SPECTRUM,C_ON);
//vfd_show_eq(1);
}
else
{
vfd_mem_clear();
vfd_nodisc();
}
return;
}
void vfd_stop(void)
{
vfd_show_time();
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
if(IsKYProg())
vfd_dot(VFD_DOT_ON,VFD_DOT_PGM);
else
vfd_dot(VFD_DOT_OFF,VFD_DOT_PGM);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
return;
}
void vfd_game(void)
{
print_vfd_digital(0, 0);
print_vfd_digital(1, 1);
print_vfd_digital(2, (GetCmdSrc(sys_cmd)/10)*2);
print_vfd_digital(3, (GetCmdSrc(sys_cmd)/10)*2+1);
print_vfd_digital(4, (GetCmdSrc(sys_cmd)%10)*2);
print_vfd_digital(5, (GetCmdSrc(sys_cmd)%10)*2+1);
print_vfd_digital(6, 0);
print_vfd_digital(7, 1);
print_vfd_digital(8, 0);
print_vfd_digital(9, 1);
print_vfd_digital(10, 0);
print_vfd_digital(10, 1);
}
void vfd_game_clear(void)
{
print_vfd_digital(2,0);
print_vfd_digital(3,1);
print_vfd_digital(4,0);
print_vfd_digital(5,1);
}
void vfd_jpeg_disp(void)
{//ok!
vfd_mem_clear();
print_vfd_digital(0,26*2);
print_vfd_digital(1,26*2+1);
print_vfd_digital(2,26*2);
print_vfd_digital(3,26*2+1);
print_vfd_digital(4,(cd_disp_trk/1000)*2);
print_vfd_digital(5,(cd_disp_trk/1000)*2+1);
print_vfd_digital(6,((cd_disp_trk/100)%10)*2);
print_vfd_digital(7,((cd_disp_trk/100)%10)*2+1);
print_vfd_digital(8,((cd_disp_trk/10)%10)*2);
print_vfd_digital(9,((cd_disp_trk/10)%10)*2+1);
print_vfd_digital(10,(cd_disp_trk%10)*2);
print_vfd_digital(11,(cd_disp_trk%10)*2+1);
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
}
void vfd_mem_clear(void)
{
int i=0;
for(i=0;i<16;i++)
{
vfd_mem[i] = 0;
}
}
#endif/*__VFD_R_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -