74 lines
1.3 KiB
C
74 lines
1.3 KiB
C
#include "ted.h"
|
|
|
|
void ted_waitBottom(void)
|
|
{
|
|
while (!(ted.vscan_high & 1))
|
|
;
|
|
}
|
|
|
|
void ted_waitTop(void)
|
|
{
|
|
while (ted.vscan_high & 1)
|
|
;
|
|
}
|
|
|
|
void ted_waitFrame(void)
|
|
{
|
|
while (ted.vscan_high & 1)
|
|
;
|
|
while (!(ted.vscan_high & 1))
|
|
;
|
|
}
|
|
|
|
void ted_waitLine(int line)
|
|
{
|
|
char upper = (char)(line >> 8) & 1;
|
|
char lower = (char)line;
|
|
|
|
do
|
|
{
|
|
while (ted.vscan_low != lower)
|
|
;
|
|
} while ((ted.vscan_high & 1) != upper);
|
|
}
|
|
|
|
void ted_setmode(TedMode mode, char * text, char * font)
|
|
{
|
|
switch (mode)
|
|
{
|
|
case TEDM_TEXT:
|
|
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
|
|
ted.ctrl2 = TED_CTRL2_CSEL;
|
|
break;
|
|
case TEDM_TEXT_MC:
|
|
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
|
|
ted.ctrl2 = TED_CTRL2_CSEL | TED_CTRL2_MCM;
|
|
break;
|
|
case TEDM_TEXT_ECM:
|
|
ted.ctrl1 = TED_CTRL1_DEN | TED_CTRL1_ECM | TED_CTRL1_RSEL | 3;
|
|
ted.ctrl2 = TED_CTRL2_CSEL;
|
|
break;
|
|
case TEDM_HIRES:
|
|
ted.ctrl1 = TED_CTRL1_BMM | TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
|
|
ted.ctrl2 = TED_CTRL2_CSEL;
|
|
break;
|
|
case TEDM_HIRES_MC:
|
|
ted.ctrl1 = TED_CTRL1_BMM | TED_CTRL1_DEN | TED_CTRL1_RSEL | 3;
|
|
ted.ctrl2 = TED_CTRL2_CSEL | TED_CTRL2_MCM;
|
|
break;
|
|
default:
|
|
__assume(false);
|
|
}
|
|
|
|
ted.vid_ptr = (unsigned)text >> 8;
|
|
|
|
if (mode < TEDM_HIRES)
|
|
{
|
|
ted.char_ptr = (unsigned)font >> 8;
|
|
}
|
|
else
|
|
{
|
|
ted.sound1_high = (ted.sound1_high & 0x3) | ((unsigned)font >> 10);
|
|
}
|
|
}
|