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
| Type | What runs | What it tests |
|---|---|---|
| Host | Python tests of the tools. The C game logic and input code, compiled with GCC. | Formats, compilers, game rules and deterministic output |
| Emulator | The 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.
--onlyruns the named checks again and keeps the other recorded results.--rom-bootadds ProDOS boots. They need the separately installed ROMs inbuild-inputs/native-roms/.- The Python that runs the checks must have py65 1.2.0. The native machine must be able to use the GCC folder.
| Check | Command | What it tests |
|---|---|---|
| build-cpu, build-private | tools/build.py --test-target | The two variants and their layouts |
| host-assets | tests/test_graphics_tools.py | Image, font, map and pack conversion |
| host-speech | tests/test_speech.py | All numbers 0-9999, pronunciations, unknown words, generated identifiers |
| host-music | tests/test_music.py | The two music compilers and the MIDI arranger |
| host-starfall-assets | tests/test_starfall_assets.py | The archive hashes, packed cells and phrases of STARFALL |
| host-starfall | tests/test_starfall.py | The simulation rules of STARFALL and long runs |
| host-input | tests/test_input.py | Stick thresholds and calibration, and fixed-step calculation |
| cpu-scene | tests/scene_validate.py | Each scene draw, compared with an independent rendering |
| host-volumes | tests/test_disk_release.py | ProDOS volume limits and corruption checks |
| cpu-foundation | tools/test.py --no-build | Memory, mapping, startup and exit on py65, and the diagnostic |
| native-foundation | tests/native_validate.py | The diagnostic and the target tests on the native machine |
| native-graphics | tests/graphics_validate.py | Drawing, text and publication, compared with reference pixels |
| cpu-audio | tests/audio_validate.py | The audio, speech and input driver with VIA, AY and SSI models |
| target-storage | tests/storage_validate.py | File calls, packs and the screen loan, with injected failures |
| target-amem | tests/amem_validate.py | The AMEM transport and its fallback rules, with a modelled controller |
| native-benchmarks-direct | tools/benchmark.py --private | Benchmark counters with a direct launch |
--rom-boot adds: | ||
| native-benchmarks-boot | tools/benchmark.py --boot-roms | The benchmarks after a ProDOS boot, with AMEM |
| boot-audio | tests/audio_native_validate.py | The booted audio demo, in the two personalities and profiles |
| boot-starter | tests/starter_native_validate.py | The starter, controlled by held keys and a stick |
| boot-starfall, boot-starfall-phasor | tests/starfall_native_validate.py | STARFALL, 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.