Improve load screen a lot

This commit is contained in:
jaby 2024-10-05 16:25:08 +02:00
parent 77c7f391d1
commit d7bcae9e33
6 changed files with 49 additions and 27 deletions

View File

@ -16,6 +16,12 @@ namespace Assets {
.size = GPU::SizeI16::create(128, 64) .size = GPU::SizeI16::create(128, 64)
}; };
namespace JabyLoader {
static constexpr auto TIMLoaction = SimpleTIM::create(PacoTIM.get_texture_x(), PacoTIM.get_texture_y() + 128, 960 + 48, 510);
static constexpr auto JabyFrame = GPU::AreaI16::create(0, 0, 32, 44);
static constexpr auto FontFrame = GPU::AreaI16::create(0, 45, 186, 32);
};
void load(); void load();
} }

View File

@ -236,36 +236,43 @@ namespace NormalScene {
} }
namespace LoadingScene { namespace LoadingScene {
static SimpleTimer<uint8_t> jaby_timer;
static uint8_t jaby_frame_offset;
static void update() { static void update() {
static const char Title[] = "Loading..."; jaby_timer.reset();
static constexpr auto TitleLength = (sizeof(Title) - 1)*DefaultFont::Info.get_font_size().width; jaby_frame_offset = 0;
auto cursor = FontWriter::update(JabyEngine::Make::PositionI16((GPU::Display::Width-TitleLength)/2, (GPU::Display::Height-16)/2));
FontWriter::new_font_writer.write(cursor, Title, GPU::Color24::Blue(0xD0));
} }
static void render() { static void vsync_render() {
FontWriter::new_font_writer.render(); static constexpr auto StartPosition = Make::PositionI16(24, 64);
const auto load_font = Make::SPRT(
Make::AreaI16(StartPosition.move(Assets::Main::JabyLoader::JabyFrame.size.width + 8, 0), Assets::Main::JabyLoader::FontFrame.size),
Make::OffsetPageWithClut(Assets::Main::JabyLoader::TIMLoaction.get_page_offset_clut4().move(Assets::Main::JabyLoader::FontFrame.position.x, Assets::Main::JabyLoader::FontFrame.position.y), Make::PageClut(Assets::Main::JabyLoader::TIMLoaction.get_clut_position())),
GPU::Color24::Grey()
);
auto jaby_sprt = Make::SPRT(
Make::AreaI16(StartPosition, Assets::Main::JabyLoader::JabyFrame.size),
Make::OffsetPageWithClut(Assets::Main::JabyLoader::TIMLoaction.get_page_offset_clut4(), Make::PageClut(Assets::Main::JabyLoader::TIMLoaction.get_clut_position())),
GPU::Color24::Grey()
);
if(jaby_timer.is_expired_for(500_ms)) {
jaby_frame_offset = jaby_frame_offset ? 0 : 32;
jaby_timer.reset();
} }
jaby_sprt.tex_offset.add(jaby_frame_offset, 0);
// TODO: No good name GPU::swap_buffers();
static void test() { GPU::render(jaby_sprt);
const auto triangle1 = Make::POLY_F3({ GPU::render(load_font);
Make::Vertex(0, 0), jaby_sprt.position.move(Assets::Main::JabyLoader::FontFrame.size.width + Assets::Main::JabyLoader::JabyFrame.size.width + 8, 0);
Make::Vertex(128, 128), GPU::render(jaby_sprt);
Make::Vertex(0, 128)},
GPU::Color24::Blue());
GPU::swap_buffers(false);
GPU::render(triangle1);
} }
static void run() { static void run() {
if(Shared::load_test || old_state_changer != state_changer) { if(Shared::load_test || old_state_changer != state_changer) {
update(); GPU::set_vsync_callback(vsync_render);
render();
GPU::set_vsync_callback(test);
cd_player.push(); cd_player.push();
state_changer.asset_load(); state_changer.asset_load();

View File

@ -17,6 +17,7 @@ namespace Assets {
__jabyengine_start_lba_request __jabyengine_start_lba_request
__jabyengine_request_lba_for(PACO, "ASSETS/MAIN/PACO.IMG"), __jabyengine_request_lba_for(PACO, "ASSETS/MAIN/PACO.IMG"),
__jabyengine_request_lba_for(DFISH, "ASSETS/MAIN/DFISH.IMG"), __jabyengine_request_lba_for(DFISH, "ASSETS/MAIN/DFISH.IMG"),
__jabyengine_request_lba_for(JABY_LOAD, "ASSETS/MAIN/LOAD.IMG"),
__jabyengine_request_lba_for(APPLE_SFX, "SFX/APPLE.VAG"), __jabyengine_request_lba_for(APPLE_SFX, "SFX/APPLE.VAG"),
__jabyengine_request_lba_for(BLUBB_SFX, "SFX/BLUBB.VAG"), __jabyengine_request_lba_for(BLUBB_SFX, "SFX/BLUBB.VAG"),
__jabyengine_request_lba_for(MIX_XA, "XAAUDIO/MIX.XA"), __jabyengine_request_lba_for(MIX_XA, "XAAUDIO/MIX.XA"),
@ -65,6 +66,7 @@ namespace Assets {
static const CDFile Files[] = { static const CDFile Files[] = {
CDFileBuilder::simple_tim(LBA::PACO, PacoTIM), CDFileBuilder::simple_tim(LBA::PACO, PacoTIM),
CDFileBuilder::simple_tim(LBA::DFISH, DoenerFishInfo.tim), CDFileBuilder::simple_tim(LBA::DFISH, DoenerFishInfo.tim),
CDFileBuilder::simple_tim(LBA::JABY_LOAD, JabyLoader::TIMLoaction),
CDFileBuilder::sony_vag(LBA::APPLE_SFX, VAG::create(0, 1.0_vol)), CDFileBuilder::sony_vag(LBA::APPLE_SFX, VAG::create(0, 1.0_vol)),
CDFileBuilder::sony_vag(LBA::BLUBB_SFX, VAG::create(1, 1.0_vol)), CDFileBuilder::sony_vag(LBA::BLUBB_SFX, VAG::create(1, 1.0_vol)),
CustomCDFileBuilder::jingle(32), CustomCDFileBuilder::jingle(32),

BIN
examples/PoolBox/assets/JabyTails.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -34,6 +34,9 @@ doener_fish_FLAGS = $(CLUT_4_COLOR_TRANS_FLAGS)
INPUT += $(OUTPUT_DIR)/JabyStar.img INPUT += $(OUTPUT_DIR)/JabyStar.img
JabyStar_FLAGS = $(CLUT_4_COLOR_TRANS_FLAGS) JabyStar_FLAGS = $(CLUT_4_COLOR_TRANS_FLAGS)
INPUT += $(OUTPUT_DIR)/JabyTails.img
JabyTails_FLAGS = $(CLUT_4_COLOR_TRANS_FLAGS)
$(OUTPUT_DIR)/fox.xa: audio/temp/fox.wav $(OUTPUT_DIR)/fox.xa: audio/temp/fox.wav
@mkdir -p $(OUTPUT_DIR) @mkdir -p $(OUTPUT_DIR)
jaby_engine_fconv $< -o $@ xa jaby_engine_fconv $< -o $@ xa

View File

@ -28,6 +28,7 @@
<Directory name = "MAIN"> <Directory name = "MAIN">
<File name = "PACO.IMG" lz4 = "already">../assets/bin/Paco.img</File> <File name = "PACO.IMG" lz4 = "already">../assets/bin/Paco.img</File>
<File name = "DFISH.IMG" lz4 = "already">../assets/bin/doener_fish.img</File> <File name = "DFISH.IMG" lz4 = "already">../assets/bin/doener_fish.img</File>
<File name = "LOAD.IMG" lz4 = "already">../assets/bin/JabyTails.img</File>
</Directory> </Directory>
<Directory name = "CONT"> <Directory name = "CONT">