From 416776e2e0dcd6b01d3755b16253726dd29d4d05 Mon Sep 17 00:00:00 2001 From: Charlie Birks Date: Fri, 20 Nov 2020 12:27:38 +0000 Subject: [PATCH] Rework init The sneaky framebuffer RAM usage did not play nicely with the new delayed mode changes --- src/blit/main.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/blit/main.cpp b/src/blit/main.cpp index 34d9dc4..2fddae8 100644 --- a/src/blit/main.cpp +++ b/src/blit/main.cpp @@ -74,11 +74,11 @@ void add_appended_files() #endif } +bool init_wait = true, done_init = false; + void init() { blit::set_screen_mode(blit::ScreenMode::hires_palette); - blit::screen.pen = blit::Pen(1); - blit::screen.clear(); #ifdef ASSET_WAD blit::File::add_buffer_file("doom-data/doom1.wad", doom1_wad, doom1_wad_length); @@ -110,18 +110,19 @@ void init() blit::File::add_buffer_file("doom-data/" + file.name, data, length); } #endif - - if(setjmp(jump_buffer)) - return; - - D_DoomMain(); } void update(uint32_t time) { - if(!fatal_error.empty() || setjmp(jump_buffer)) + if(!fatal_error.empty() || init_wait || setjmp(jump_buffer)) return; + if(!done_init) { + D_DoomMain(); + done_init = true; + return; + } + TryRunTics(); S_UpdateSounds(players[consoleplayer].mo); } @@ -151,6 +152,15 @@ void render(uint32_t time) return; } + // wait for render before init, so we know that palette mode is in effect + // (since we're using bits of the framebuffer/LTDC memory for other stuff) + if(init_wait) { + init_wait = false; + blit::screen.pen = blit::Pen(1); + blit::screen.clear(); + return; + } + if(setjmp(jump_buffer)) return;