[jasper/player] Rename player from jasper to Jasper, add quit shortcut in debug builds

This commit is contained in:
Gary Talent 2025-01-08 22:03:50 -06:00
parent 2cf6e48a73
commit 0ae3adc7c7
3 changed files with 26 additions and 14 deletions

View File

@ -5,28 +5,31 @@ GBABUILDCORE_PATH=deps/nostalgia/deps/gbabuildcore
include ${BUILDCORE_PATH}/base.mk include ${BUILDCORE_PATH}/base.mk
ifeq ($(BC_VAR_OS),darwin) ifeq ($(BC_VAR_OS),darwin)
PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME}.app/Contents/MacOS/${BC_VAR_PROJECT_NAME} PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}.app/Contents/MacOS/${BC_VAR_PROJECT_NAME}
PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME}Studio.app/Contents/MacOS/${BC_VAR_PROJECT_NAME_CAP}Studio PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}Studio.app/Contents/MacOS/${BC_VAR_PROJECT_NAME_CAP}Studio
MGBA=/Applications/mGBA.app/Contents/MacOS/mGBA MGBA=/Applications/mGBA.app/Contents/MacOS/mGBA
else else
PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME} PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}
PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}Studio PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}Studio
MGBA=mgba-qt MGBA=mgba-qt
endif endif
.PHONY: pkg-gba .PHONY: pkg-gba
pkg-gba: build pkg-gba: build
${BC_CMD_ENVRUN} ${BC_PY3} ./deps/nostalgia/scripts/pkg-gba.py project ${BC_VAR_PROJECT_NAME} ${BC_CMD_ENVRUN} ${BC_PY3} ./deps/nostalgia/util/scripts/pkg-gba.py project ${BC_VAR_PROJECT_NAME_CAP}
.PHONY: build-player
build-player:
${BC_CMD_CMAKE_BUILD} ${BC_VAR_BUILD_PATH} ${BC_VAR_PROJECT_NAME_CAP}
.PHONY: run .PHONY: run
run: build run: build-player
${PROJECT_PLAYER} project ${PROJECT_PLAYER} project
.PHONY: run-studio .PHONY: run-studio
run-studio: build run-studio: build
${PROJECT_STUDIO} ${PROJECT_STUDIO}
.PHONY: gba-run .PHONY: gba-run
gba-run: pkg-gba gba-run: pkg-gba
${MGBA} ${BC_VAR_PROJECT_NAME}.gba ${MGBA} ${BC_VAR_PROJECT_NAME_CAP}.gba
.PHONY: debug .PHONY: debug
debug: build debug: build
${BC_CMD_HOST_DEBUGGER} ${PROJECT_PLAYER} project ${BC_CMD_HOST_DEBUGGER} ${PROJECT_PLAYER} project

View File

@ -1,33 +1,33 @@
add_executable( add_executable(
jasper WIN32 MACOSX_BUNDLE Jasper WIN32 MACOSX_BUNDLE
app.cpp app.cpp
) )
if(BUILDCORE_TARGET STREQUAL "gba") if(BUILDCORE_TARGET STREQUAL "gba")
set(LOAD_KEEL_MODS FALSE) set(LOAD_KEEL_MODS FALSE)
set_target_properties(jasper set_target_properties(Jasper
PROPERTIES PROPERTIES
LINK_FLAGS ${LINKER_FLAGS} LINK_FLAGS ${LINKER_FLAGS}
COMPILER_FLAGS "-mthumb -mthumb-interwork" COMPILER_FLAGS "-mthumb -mthumb-interwork"
) )
OBJCOPY_FILE(jasper) OBJCOPY_FILE(Jasper)
else() else()
set(LOAD_KEEL_MODS TRUE) set(LOAD_KEEL_MODS TRUE)
endif() endif()
target_compile_definitions( target_compile_definitions(
jasper PRIVATE Jasper PRIVATE
OLYMPIC_LOAD_KEEL_MODULES=$<BOOL:${LOAD_KEEL_MODS}> OLYMPIC_LOAD_KEEL_MODULES=$<BOOL:${LOAD_KEEL_MODS}>
OLYMPIC_GUI_APP=1 OLYMPIC_GUI_APP=1
) )
# enable LTO # enable LTO
if(NOT WIN32) if(NOT WIN32)
set_property(TARGET jasper PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) set_property(TARGET Jasper PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif() endif()
target_link_libraries( target_link_libraries(
jasper PUBLIC Jasper PUBLIC
JasperProfile JasperProfile
JasperKeelModules JasperKeelModules
OlympicApplib OlympicApplib

View File

@ -24,14 +24,23 @@ ox::Error run(
ox::SpanView<ox::CString> args) noexcept { ox::SpanView<ox::CString> args) noexcept {
auto const fsPath = args.size() > 1 ? args[1] : "."; auto const fsPath = args.size() > 1 ? args[1] : ".";
OX_REQUIRE_M(tctx, turbine::init(fsPath, project)); OX_REQUIRE_M(tctx, turbine::init(fsPath, project));
OX_REQUIRE(bootfile, keel::readObj<jasper::core::Bootfile>(keelCtx(*tctx), "/Bootfile")); auto &kctx = keelCtx(*tctx);
OX_REQUIRE(bootfile, keel::readObj<jasper::core::Bootfile>(kctx, "/Bootfile"));
oxOut("Jasper Player\n"); oxOut("Jasper Player\n");
OX_REQUIRE(nctx, ncore::init(*tctx)); OX_REQUIRE(nctx, ncore::init(*tctx));
auto const&worldPath = *bootfile->args.at(0).unwrap(); auto const&worldPath = *bootfile->args.at(0).unwrap();
OX_REQUIRE(worldStatic, readObj<world::WorldStatic>(keelCtx(*tctx), worldPath)); OX_REQUIRE(worldStatic, readObj<world::WorldStatic>(kctx, worldPath));
world::World world(*nctx, *worldStatic); world::World world(*nctx, *worldStatic);
OX_RETURN_ERROR(world.setupDisplay()); OX_RETURN_ERROR(world.setupDisplay());
turbine::setApplicationData(*tctx, &world); turbine::setApplicationData(*tctx, &world);
if constexpr(ox::defines::Debug) {
turbine::setKeyEventHandler(*tctx, [](
turbine::Context &tctx, turbine::Key const key, bool const down) {
if (down && key == turbine::Key::Alpha_Q) {
turbine::requestShutdown(tctx);
}
});
}
setUpdateHandler(*tctx, [](turbine::Context &tctx) -> int { setUpdateHandler(*tctx, [](turbine::Context &tctx) -> int {
auto &world = *applicationData<world::World>(tctx); auto &world = *applicationData<world::World>(tctx);
auto [sleepTime, err] = world.update(); auto [sleepTime, err] = world.update();