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