Fixes #180 - Implement flashing text

This commit is contained in:
Stefan Arentz 2017-10-15 20:01:08 -04:00
parent 6e32724ffa
commit 31ecfb98f5
3 changed files with 12 additions and 6 deletions

View File

@ -48,7 +48,11 @@ static inline void scr_render_character(struct scr_t *scr, int row, int column,
uint32_t *dst = scr->pixels + ((40 * 7 * 8) * row) + (7 * column);
for (int y = 0; y < 8; y++) {
for (int x = 0; x < 7; x++) {
*dst++ = *src++;
if (c >= 0x40 && c < 0x80 && flash) {
*dst++ = 0;
} else {
*dst++ = *src++;
}
}
dst += 280 - 7;
}
@ -329,17 +333,19 @@ void ewm_scr_update(struct scr_t *scr, int phase, int fps) {
SDL_SetRenderDrawColor(scr->renderer, 0, 0, 0, 255);
SDL_RenderClear(scr->renderer);
int flash = ((phase / (fps/4)) % 2);
switch (scr->two->screen_mode) {
case EWM_A2P_SCREEN_MODE_TEXT:
scr_render_txt_screen(scr, phase >= (fps / 2));
scr_render_txt_screen(scr, flash);
break;
case EWM_A2P_SCREEN_MODE_GRAPHICS:
switch (scr->two->screen_graphics_mode) {
case EWM_A2P_SCREEN_GRAPHICS_MODE_LGR:
scr_render_lgr_screen(scr, phase >= (fps / 2));
scr_render_lgr_screen(scr, flash);
break;
case EWM_A2P_SCREEN_GRAPHICS_MODE_HGR:
scr_render_hgr_screen(scr, phase >= (fps / 2));
scr_render_hgr_screen(scr, flash);
break;
}
break;

View File

@ -960,7 +960,7 @@ int ewm_two_main(int argc, char **argv) {
// latter because that is when we update flashing text.
two->screen_dirty = 1;
if (two->screen_dirty || (phase == 0) || (phase == (fps / 2))) {
if (two->screen_dirty) {
SDL_SetRenderDrawColor(two->scr->renderer, 0, 0, 0, 255);
SDL_RenderClear(two->scr->renderer);

View File

@ -50,7 +50,7 @@
#define EWM_A2P_BUTTON4 3 // Actually ony exists on the gs?
#define EWM_A2P_BUTTON_COUNT 4
#define EWM_TWO_FPS_DEFAULT (30)
#define EWM_TWO_FPS_DEFAULT (40)
#define EWM_TWO_SPEED (1023000)
#define EWM_TWO_STATE_RUNNING (0)