00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _LIBVIDEO_H_
00018 #define _LIBVIDEO_H_
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #define NTSC_WIDTH 256
00032 #define NTSC_HEIGHT 192
00033 #define NTSC_VRAM_SIZE ((NTSC_WIDTH >> 3) * NTSC_HEIGHT)
00034
00035 #define GRAPH_SIZE (100)
00036 #define TRACK_SIZE (5)
00037
00038
00039
00040
00041
00042
00043 typedef struct NTSC_STATUS {
00044 unsigned int *vram;
00045
00046 unsigned int line;
00047 unsigned int line_sync;
00048 unsigned int line_space_top;
00049 unsigned int line_video;
00050
00051 unsigned int horizon_pulse;
00052 unsigned int serration_pulse;
00053 unsigned int equalizing_pulse;
00054 unsigned int left_space;
00055 unsigned int video_width;
00056
00057 unsigned int status;
00058 unsigned int vsync;
00059 unsigned int hsync;
00060 } NTSC_STATUS_T;
00061 typedef NTSC_STATUS_T* pNTSC_STATUS_T;
00062
00063
00064 typedef struct NTSC {
00065 unsigned int *vram;
00066 unsigned char output;
00067
00068 NTSC_STATUS_T monitor;
00069 NTSC_STATUS_T superimpose;
00070 } NTSC_T;
00071 typedef NTSC_T* pNTSC_T;
00072
00073
00074 typedef struct VIDEO {
00075 char cx, cy;
00076 } VIDEO_T;
00077 typedef VIDEO_T* pVIDEO_T;
00078
00079 typedef struct GRAPH {
00080 unsigned int x;
00081 unsigned int y;
00082 unsigned int width;
00083 unsigned int height;
00084 unsigned int ptr;
00085 unsigned char data[ GRAPH_SIZE ];
00086 } GRAPH_T;
00087 typedef GRAPH_T* pGRAPH_T;
00088
00089 typedef struct METER {
00090 unsigned int x;
00091 unsigned int y;
00092 unsigned char r;
00093 unsigned int old;
00094 } METER_T;
00095 typedef METER_T* pMETER_T;
00096
00097 typedef struct TRACK {
00098 unsigned int x;
00099 unsigned int y;
00100 unsigned int width;
00101 unsigned int height;
00102 unsigned int ptr;
00103 unsigned char data[ TRACK_SIZE ][2];
00104 } TRACK_T;
00105 typedef TRACK_T* pTRACK_T;
00106
00107
00108
00109
00110
00111 extern NTSC_T ntsc;
00112 extern VIDEO_T video;
00113
00114
00115
00116
00117
00118 extern void VIDEO_init(void);
00119 extern void VIDEO_init_clock(void);
00120 extern void VIDEO_vram_clear(unsigned int pattern);
00121 extern unsigned char VIDEO_get_output(void);
00122 extern unsigned int VIDEO_get_point(unsigned int x, unsigned int y);
00123
00124
00125
00126 extern void VIDEO_point (unsigned int x, unsigned int y);
00127 extern void VIDEO_point_(unsigned int x, unsigned int y);
00128
00129 extern void VIDEO_line (int x0, int y0, int x1, int y1);
00130 extern void VIDEO_line_(int x0, int y0, int x1, int y1);
00131
00132 #define VIDEO_circle(x,y,r) VIDEO_arc(x, y, r, 0, 360)
00133 #define VIDEO_circle_(x,y,r) VIDEO_arc(x, y, r, 0, 360)
00134 extern void VIDEO_arc (unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00135 extern void VIDEO_arc_(unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00136
00137
00138
00139 extern void VIDEO_locate(unsigned int x, unsigned int y);
00140 extern void VIDEO_putch(unsigned char c);
00141 extern void VIDEO_putstr(const char *s);
00142 extern void VIDEO_puthex(unsigned char a);
00143 extern void VIDEO_putbin(unsigned char a);
00144 extern void VIDEO_putuint(unsigned int digit, unsigned char size);
00145 extern void VIDEO_putint(int digit, unsigned char size);
00146 extern void VIDEO_putdouble(double digit, unsigned char size, unsigned char size2);
00147
00148
00149
00150 extern void GRAPH_init(pGRAPH_T graph, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00151 extern void GRAPH_putdata(pGRAPH_T graph, unsigned int data);
00152 extern void GRAPH_draw_point(pGRAPH_T graph);
00153 extern void GRAPH_draw_line(pGRAPH_T graph);
00154 extern void GRAPH_draw_bar(pGRAPH_T graph);
00155
00156
00157
00158 extern void METER_init(pMETER_T meter, unsigned int x, unsigned int y, unsigned char r);
00159 extern void METER_draw(pMETER_T meter, unsigned int value);
00160
00161
00162
00163 extern void TRACK_init(pTRACK_T track, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00164 extern void TRACK_putdata(pTRACK_T track, unsigned int x, unsigned int y);
00165 extern void TRACK_draw_point(pTRACK_T track);
00166
00167
00168 #endif