24 static short int X = 0,
Y = 0;
25 static short int MX=80,
MY=40;
52 return((romname[4] ==
'E') ? 1 : 0);
55 static void Init_GS(
int interlace,
int omode,
int ffmd)
58 *(
vu64 *)0x12001000 = 0x200;
84 asm volatile (
" .set push \n"
89 " ori %4, %4, 0xf9ff \n"
90 " ori %5, %5, 0x227c \n"
92 " dsll32 %4, %4, 0 \n"
99 :
"=&r" (dma_addr),
"=&r" (val1),
"=&r" (val2),
100 "=&r" (val3),
"=&r" (val4),
"=&r" (val4_lo) );
108 asm volatile (
" .set push \n"
111 " lw %1, -0x6000(%0) \n"
112 "1: andi %1, %1, 0x100 \n"
117 " bnel %1, $0, 1b \n"
118 " lw %1, -0x6000(%0) \n"
120 :
"=&r" (dma_addr),
"=&r" (status) );
126 unsigned temp, temp2;
129 asm volatile (
" .set push \n"
132 " sw $0, -0x5f80(%0) \n"
133 " sw $0, -0x6000(%0) \n"
134 " sw $0, -0x5fd0(%0) \n"
135 " sw $0, -0x5ff0(%0) \n"
136 " sw $0, -0x5fb0(%0) \n"
137 " sw $0, -0x5fc0(%0) \n"
139 " ori %1, %1, 0xff1f \n"
140 " sw %1, -0x1ff0(%0) \n"
141 " lw %1, -0x1ff0(%0) \n"
144 " sw %1, -0x1ff0(%0) \n"
145 " sw $0, -0x2000(%0) \n"
146 " sw $0, -0x1fe0(%0) \n"
147 " sw $0, -0x1fd0(%0) \n"
148 " sw $0, -0x1fb0(%0) \n"
149 " sw $0, -0x1fc0(%0) \n"
150 " lw %1, -0x2000(%0) \n"
152 " sw %1, -0x2000(%0) \n"
154 :
"=&r" (dma_addr),
"=&r" (temp),
"=&r" (temp2) );
163 static inline void progdma(
void *addr,
int size)
168 asm volatile (
" .set push \n"
171 " sw %3, -0x5fe0(%0) \n"
172 " sw %2, -0x5ff0(%0) \n"
174 " sw %1, -0x6000(%0) \n"
176 :
"=&r" (dma_addr),
"=&r" (temp)
177 :
"r" (addr),
"r" (size) );
187 static struct t_setupscr setupscr __attribute__ (( aligned (16) )) = {
188 { 0x100000000000800E, 0xE, 0xA0000, 0x4C, 0x8C, 0x4E },
189 { 27648, 30976 }, { 0x18 },
191 { 0x40, 1, 0x1a, 1, 0x46, 0, 0x45, 0x70000,
192 0x47, 0x30000, 0x47, 6, 0, 0x3F80000000000000, 1, 0x79006C00, 5,
193 0x87009400, 5, 0x70000, 0x47 }
212 static struct t_setupchar setupchar __attribute__((aligned(16))) = {
213 { 0x1000000000000004, 0xE, 0xA000000000000, 0x50 },
214 { 0 }, 100, 100, { 0x51 },
216 { 0x52, 0, 0x53, 0x800000000008010, 0}
219 static u32 charmap[64] __attribute__((aligned(16)));
229 font = &
msx[ ch * 8];
230 for (i=l=0; i < 8; i++, l+= 8, font++)
232 for (j=0; j < 8; j++)
234 pixel = ((*font & (128 >> j))) ? color :
bgcolor;
241 progdma(charmap, (8*8*4) / 16);
248 for (i=0; i <
MX; i++)
259 va_start(opt, format);
260 bufsz = vsnprintf(buff,
sizeof(buff), format, opt);
262 for (i = 0; i < bufsz; i++)
275 for (j = 0; j < 5; j++) {
299 if( x<MX && x>=0 )
X=
x;
300 if( y<MY && y>=0 )
Y=
y;
void SetGsCrt(s16 interlace, s16 pal_ntsc, s16 field)
char * GetRomName(char *romname)
static void Init_GS(int interlace, int omode, int ffmd)
static void clear_line(int Y)
void scr_setXY(int x, int y)
static void SetVideoMode(void)
static void progdma(void *addr, int size)
void scr_setbgcolor(u32 color)
void scr_printf(const char *format,...)
void scr_putchar(int x, int y, u32 color, int ch)
static int debug_detect_signal()
static void DmaReset(void)
static void Dma02Wait(void)