diff --git a/src/scr.c b/src/scr.c index 7a91e42..8616b78 100644 --- a/src/scr.c +++ b/src/scr.c @@ -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; diff --git a/src/two.c b/src/two.c index 017bef4..d09dab9 100644 --- a/src/two.c +++ b/src/two.c @@ -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); diff --git a/src/two.h b/src/two.h index bb899a9..58e7ff5 100644 --- a/src/two.h +++ b/src/two.h @@ -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)