8f8fa8f8d1
- Add Scene.set(module) so JerryScript can switch scenes via
require()'d {init, update, dispose} modules; wire it into
engineUpdate() and rework overworldscene.js/init.js to the new shape.
- Fix scriptManagerExecFile() never pushing its own file's directory
onto the require() dir stack, breaking relative require() calls from
a top-level entry script (e.g. init.js -> ./overworldscene.js).
- Cache sprite geometry across frames for uislider/uitab/uiframe
(dialogs/textbox/settings) and give uitextbox a per-page glyph cache
instead of one spriteBatchBuffer call per visible character. uiconsole
drops its alloc/free vertex buffer for a fixed-size one. uifps skips
rebuilding its label when the text hasn't changed.
- Add PSP_OPTIMIZATION_PLAN.md and a handful of UI/spritebatch unit
tests covering the new caching logic.
- Add Dolphin/PPSSPP emulator smoke-test scripts (+ Docker variants and
CI jobs) for GameCube/Wii/PSP.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
43 lines
1.5 KiB
Bash
Executable File
43 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
if [ -z "$PSPDEV" ]; then
|
|
echo "PSPDEV environment variable is not set. Please set it to the path of your PSP development environment."
|
|
exit 1
|
|
fi
|
|
|
|
# PPSSPP doesn't ship a standard Linux package -- build its "PPSSPPHeadless"
|
|
# target from source (https://github.com/hrydgard/ppsspp) and either put it
|
|
# on PATH or point PPSSPP_HEADLESS_BIN at it. See docker/psp-test/Dockerfile
|
|
# for a from-scratch build.
|
|
PPSSPP_HEADLESS_BIN="${PPSSPP_HEADLESS_BIN:-PPSSPPHeadless}"
|
|
if ! command -v "$PPSSPP_HEADLESS_BIN" >/dev/null 2>&1; then
|
|
echo "$PPSSPP_HEADLESS_BIN not found. Build PPSSPP's 'PPSSPPHeadless' target"
|
|
echo "from source or set PPSSPP_HEADLESS_BIN to its path."
|
|
exit 1
|
|
fi
|
|
|
|
./scripts/build-psp.sh
|
|
|
|
DUSK_TEST_PPSSPP_SECONDS="${DUSK_TEST_PPSSPP_SECONDS:-20}"
|
|
EBOOT="build-psp/EBOOT.PBP"
|
|
|
|
echo "Booting $EBOOT in PPSSPPHeadless (timeout ${DUSK_TEST_PPSSPP_SECONDS}s)..."
|
|
|
|
# PPSSPPHeadless is purpose-built for automated/CI runs -- it renders
|
|
# without a window and is expected to exit on its own once --timeout
|
|
# elapses, unlike Dolphin's batch mode which has to be killed externally.
|
|
# Check `"$PPSSPP_HEADLESS_BIN" --help` if these flags don't match your
|
|
# PPSSPP checkout -- the headless CLI has changed across versions.
|
|
set +e
|
|
"$PPSSPP_HEADLESS_BIN" --timeout="${DUSK_TEST_PPSSPP_SECONDS}" "$EBOOT"
|
|
status=$?
|
|
set -e
|
|
|
|
if [ "$status" -ne 0 ]; then
|
|
echo "PPSSPPHeadless exited with status $status"
|
|
exit "$status"
|
|
fi
|
|
|
|
echo "PSP smoke test passed (PPSSPPHeadless ran EBOOT.PBP for ${DUSK_TEST_PPSSPP_SECONDS}s without crashing)."
|