Move ScreenCenter code to FontCycler

This commit is contained in:
jaby 2024-01-05 13:21:57 -06:00
parent f78d29c763
commit 60aa84ef28
8 changed files with 111 additions and 47 deletions

View File

@ -6,6 +6,9 @@
"gpu_tests": { "gpu_tests": {
"pattern": "bin/*/src/Overlay/GPUTest/*.o" "pattern": "bin/*/src/Overlay/GPUTest/*.o"
}, },
"font_cycler": {
"pattern": "bin/*/src/Overlay/FontCycler/*.o"
},
"screen_center": { "screen_center": {
"pattern": "bin/*/src/Overlay/ScreenCenter/*.o" "pattern": "bin/*/src/Overlay/ScreenCenter/*.o"
} }

View File

@ -13,6 +13,7 @@ namespace Assets {
namespace Overlay { namespace Overlay {
void load_controller_test(); void load_controller_test();
void load_gpu_test(); void load_gpu_test();
void load_font_cycler();
void load_screen_center(); void load_screen_center();
} }
} }

View File

@ -0,0 +1,79 @@
#include "../../../include/shared.hpp"
#include <PSX/GPU/gpu.hpp>
#include <PSX/Periphery/periphery.hpp>
#include <stdio.h>
namespace FontCycler {
using namespace JabyEngine;
static const char*const ASCII = "!\"#$%&'()*+,-./0\n123456789:;<=>?@\nABCDEFGHIJKLMNOP\nQRSTUVWXYZ[\\]^_`\nabcdefghijklmnop\nqrstuvwxyz{|}~\n";
static JabyEngine::FontWriter*const FontWriters[] = {
&FontWriter::bios_font_writer,
&FontWriter::new_font_writer,
};
static constexpr auto MaxFontSelector = (sizeof(FontWriters)/sizeof(FontWriters[0])) - 1;
static uint8_t font_selector = 0;
static void increment_font_selector() {
if(font_selector == MaxFontSelector) {
font_selector = 0;
}
else {
font_selector++;
}
}
static void decrement_font_selector() {
if(font_selector == 0) {
font_selector = MaxFontSelector;
}
else {
font_selector--;
}
}
static void setup() {
Shared::back_menu.reset();
font_selector = 0;
}
static bool update_or_exit() {
Periphery::query_controller();
if(Shared::back_menu.update(Make::PositionI16(0, GPU::Display::Height - 32))) {
return true;
}
const auto& controller = Periphery::get_primary_controller_as<Periphery::GenericController>();
if(controller.button.went_up(Periphery::GenericController::Button::L1)) {
decrement_font_selector();
}
if(controller.button.went_up(Periphery::GenericController::Button::R1)) {
increment_font_selector();
}
auto cursor = FontWriter::update(Make::PositionI16(8, 8));
FontWriters[font_selector]->write(cursor, ASCII);
FontWriters[font_selector]->write(cursor, "\nPress L1 or R1 to cycle\nthrough fonts");
return false;
}
static void render() {
FontWriters[font_selector]->render();
Shared::back_menu.render();
}
void main() {
setup();
while(true) {
if(update_or_exit()) {
break;
}
GPU::swap_buffers_vsync(1);
render();
}
}
}

View File

@ -15,6 +15,10 @@ namespace GPUTest {
void main(); void main();
} }
namespace FontCycler {
void main();
}
namespace ScreenCenter { namespace ScreenCenter {
void main(); void main();
} }

View File

@ -6,38 +6,8 @@
namespace ScreenCenter { namespace ScreenCenter {
using namespace JabyEngine; using namespace JabyEngine;
static const char*const ASCII = "!\"#$%&'()*+,-./0\n123456789:;<=>?@\nABCDEFGHIJKLMNOP\nQRSTUVWXYZ[\\]^_`\nabcdefghijklmnop\nqrstuvwxyz{|}~\n";
static JabyEngine::FontWriter*const FontWriters[] = {
&FontWriter::bios_font_writer,
&FontWriter::new_font_writer,
};
static constexpr auto MaxFontSelector = (sizeof(FontWriters)/sizeof(FontWriters[0])) - 1;
static uint8_t font_selector = 0;
static void increment_font_selector() {
if(font_selector == MaxFontSelector) {
font_selector = 0;
}
else {
font_selector++;
}
}
static void decrement_font_selector() {
if(font_selector == 0) {
font_selector = MaxFontSelector;
}
else {
font_selector--;
}
}
static void setup() { static void setup() {
Shared::back_menu.reset(); Shared::back_menu.reset();
font_selector = 0;
} }
static bool update_or_exit() { static bool update_or_exit() {
@ -46,26 +16,17 @@ namespace ScreenCenter {
return true; return true;
} }
const auto& controller = Periphery::get_primary_controller_as<Periphery::GenericController>();
if(controller.button.went_up(Periphery::GenericController::Button::L1)) {
decrement_font_selector();
}
if(controller.button.went_up(Periphery::GenericController::Button::R1)) {
increment_font_selector();
}
auto cursor = FontWriter::update(Make::PositionI16(8, 8)); auto cursor = FontWriter::update(Make::PositionI16(8, 8));
FontWriters[font_selector]->write(cursor, ASCII); FontWriter::bios_font_writer.write(cursor, "NOTHING HERE TO SEE", GPU::Color24::Red());
FontWriters[font_selector]->write(cursor, "\nPress L1 or R1 to cycle\nthrough fonts");
return false; return false;
} }
static void render() { static void render() {
FontWriters[font_selector]->render();
Shared::back_menu.render(); Shared::back_menu.render();
} }
void main() { void main() {
printf("BlubbBlubbBlubbBlubb\n");
setup(); setup();
while(true) { while(true) {

View File

@ -33,8 +33,8 @@ struct StateChange {
static const Menu::SimpleMenu::Entry MenuEntries[] = { static const Menu::SimpleMenu::Entry MenuEntries[] = {
{"Controller Test"}, {"Controller Test"},
{"GPU Test"}, {"GPU Test"},
{"Font Cycler"},
{"Screen Center"}, {"Screen Center"},
{"Menu 4"},
{"Menu 5"} {"Menu 5"}
}; };
@ -72,8 +72,14 @@ static void setup() {
break; break;
case 2: case 2:
state_changer.asset_load = Assets::Overlay::load_font_cycler;
state_changer.main = FontCycler::main;
break;
case 3:
state_changer.asset_load = Assets::Overlay::load_screen_center; state_changer.asset_load = Assets::Overlay::load_screen_center;
state_changer.main = ScreenCenter::main; state_changer.main = ScreenCenter::main;
break;
} }
},MenuEntries); },MenuEntries);
} }

View File

@ -12,10 +12,11 @@ extern "C" uint32_t __screen_center_start;
namespace Assets { namespace Assets {
enum LBA { enum LBA {
__jabyengine_start_lba_request __jabyengine_start_lba_request
__jabyengine_request_lba_for(PACO, "ASSETS/MAIN/PACO.BIN"), __jabyengine_request_lba_for(PACO, "ASSETS/MAIN/PACO.BIN"),
__jabyengine_request_lba_for(GPU_TEST_OVL, "GTO.BIN"), __jabyengine_request_lba_for(GPU_TEST_OVL, "GTO.BIN"),
__jabyengine_request_lba_for(CONT_TEST_OVL, "CTO.BIN"), __jabyengine_request_lba_for(CONT_TEST_OVL, "CTO.BIN"),
__jabyengine_request_lba_for(SC_OVL, "SCO.BIN"), __jabyengine_request_lba_for(FONT_CYC_OVL, "FCO.BIN"),
__jabyengine_request_lba_for(SCREEN_CENT_OVL, "SCO.BIN"),
__jabyengine_end_lba_request __jabyengine_end_lba_request
}; };
__declare_lba_header(LBA); __declare_lba_header(LBA);
@ -78,9 +79,17 @@ namespace Assets {
::Assets::load(GPUTest::lba, GPUTest::Assets); ::Assets::load(GPUTest::lba, GPUTest::Assets);
} }
void load_font_cycler() {
const CDFile Files[] = {
CDFileBuilder::overlay(LBA::FONT_CYC_OVL, &__screen_center_start)
};
::Assets::load(lba, Files);
}
void load_screen_center() { void load_screen_center() {
const CDFile Files[] = { const CDFile Files[] = {
CDFileBuilder::overlay(LBA::SC_OVL, &__screen_center_start) CDFileBuilder::overlay(LBA::SCREEN_CENT_OVL, &__screen_center_start)
}; };
::Assets::load(lba, Files); ::Assets::load(lba, Files);

View File

@ -8,6 +8,7 @@
<Main name = "XXXX_AAA.AA" lba_source = "../application/src/asset_mgr.cpp">../application/bin/PSX-release/PoolBox.psexe</Main> <Main name = "XXXX_AAA.AA" lba_source = "../application/src/asset_mgr.cpp">../application/bin/PSX-release/PoolBox.psexe</Main>
<Overlay name = "CTO.BIN" lba_source = "../application/src/Overlay/ControllerTest/controller_test_assets.cpp">../application/bin/PSX-release/Overlay.controller_tests</Overlay> <Overlay name = "CTO.BIN" lba_source = "../application/src/Overlay/ControllerTest/controller_test_assets.cpp">../application/bin/PSX-release/Overlay.controller_tests</Overlay>
<Overlay name = "GTO.BIN" lba_source = "../application/src/Overlay/GPUTest/gpu_test_assets.cpp">../application/bin/PSX-release/Overlay.gpu_tests</Overlay> <Overlay name = "GTO.BIN" lba_source = "../application/src/Overlay/GPUTest/gpu_test_assets.cpp">../application/bin/PSX-release/Overlay.gpu_tests</Overlay>
<Overlay name = "FCO.BIN">../application/bin/PSX-release/Overlay.font_cycler</Overlay>
<Overlay name = "SCO.BIN">../application/bin/PSX-release/Overlay.screen_center</Overlay> <Overlay name = "SCO.BIN">../application/bin/PSX-release/Overlay.screen_center</Overlay>
<Directory name="ASSETS" hidden = "true"> <Directory name="ASSETS" hidden = "true">