Checks

libtini runs on Appletini hardware with firmware F1.3.2. The automated checks on this page test the tools and the compiled library on the host and on the emulator.

Two types of checks

TypeWhat runsWhat it tests
HostPython tests of the tools. The C game logic and input code, compiled with GCC.Formats, compilers, game rules and deterministic output
EmulatorThe linked 65C02 programs on py65, with independent memory and device models. The same programs on the native Appletini machine of the repository, at the vtw33 and turbo-f122 models.The bytes, register writes and results of the compiled code, and its time on the models

Run all checks

python -m pip install py65==1.2.0
python tools/check.py --cc65-home D:/Repos/cc65 --cc C:/msys64/ucrt64/bin/gcc.exe [--rom-boot] [--only NAME,NAME]

The runner builds the two variants. Then it runs each check in sequence, and it stops at the first failure. The logs go to build/checks/NAME.log, and the results go to build/checks/validation.json.

CheckCommandWhat it tests
build-cpu, build-privatetools/build.py --test-targetThe two variants and their layouts
host-assetstests/test_graphics_tools.pyImage, font, map and pack conversion
host-speechtests/test_speech.pyAll numbers 0-9999, pronunciations, unknown words, generated identifiers
host-musictests/test_music.pyThe two music compilers and the MIDI arranger
host-starfall-assetstests/test_starfall_assets.pyThe archive hashes, packed cells and phrases of STARFALL
host-starfalltests/test_starfall.pyThe simulation rules of STARFALL and long runs
host-inputtests/test_input.pyStick thresholds and calibration, and fixed-step calculation
cpu-scenetests/scene_validate.pyEach scene draw, compared with an independent rendering
host-volumestests/test_disk_release.pyProDOS volume limits and corruption checks
cpu-foundationtools/test.py --no-buildMemory, mapping, startup and exit on py65, and the diagnostic
native-foundationtests/native_validate.pyThe diagnostic and the target tests on the native machine
native-graphicstests/graphics_validate.pyDrawing, text and publication, compared with reference pixels
cpu-audiotests/audio_validate.pyThe audio, speech and input driver with VIA, AY and SSI models
target-storagetests/storage_validate.pyFile calls, packs and the screen loan, with injected failures
target-amemtests/amem_validate.pyThe AMEM transport and its fallback rules, with a modelled controller
native-benchmarks-directtools/benchmark.py --privateBenchmark counters with a direct launch
--rom-boot adds:
native-benchmarks-boottools/benchmark.py --boot-romsThe benchmarks after a ProDOS boot, with AMEM
boot-audiotests/audio_native_validate.pyThe booted audio demo, in the two personalities and profiles
boot-startertests/starter_native_validate.pyThe starter, controlled by held keys and a stick
boot-starfall, boot-starfall-phasortests/starfall_native_validate.pySTARFALL, played to the end with each card

Each script can also run alone. See tests/README.md. The browser player has its own comparison check, tests/web_validate.py. The browser player page describes it.