Pi 3 bare-metal improvements:
- Offload CRT filter to Core 2 via CRT_FILTER_EXTERNAL compile flag.
Core 1 queues frames; Core 2 worker (RenderThread) processes
asynchronously with 1-frame latency. Trampoline pattern in crt.c/h.
- Add 4:3 letterboxed scaling on Core 2 render thread.
HW framebuffer created once at physical display resolution
(CBcmFrameBuffer auto-detect); largest centered 4:3 rect computed,
black bars cleared once, nearest-neighbor scale into target rect.
- Raise KERNEL_MAX_SIZE to 0x1400000 (20 MB) across Circle Config.mk,
kernel Makefile, and package-rpi.sh to accommodate ~19 MB .bss.
- Add vxt_peripheral_print_status() in src/vxt/peripheral.c that logs
CPU type (8088/V20), frequency, installed peripherals, IO map ranges,
and memory map ranges. Called from retro_load_game() in core.c.
Refs: docs/STATUS.md
Fix four critical issues preventing VirtualXT from booting on Raspberry Pi 3B+:
1. vfs_file_load was a stub returning NULL - implement real VFS-backed
loader using peripheral arena allocator
2. setup_machine_from_ini never wired disk.file_api - refactor to two
passes (instantiate + wire APIs, then configure)
3. Missing vfs_tell in Circle kernel - null pointer crash when disk
mount tried to get file size
4. Libretro VFS seek returns position, but disk module expects POSIX
0/-1 - add adapter in disk_file_seek
Also:
- Add NO_DEFAULT_DISK and NO_SAMPLES build flags for baremetal size
- Replace GLABIOS.ROM with vxtbios.bin in raspberrypi.ini
- Add package-rpi.sh packaging script with cmdline.txt LOGFILE support
- Raise KERNEL_MAX_SIZE to 17 MB for Circle sysinit
- Clean up kernel error handling (halt() instead of error_halt)
- Update STATUS.md with known bugs and recent changes