Files
Andreas T Jonsson 23af71339a feat(pi): CRT offload to Core 2, 4:3 letterboxing, and peripheral status logging
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
2026-05-27 14:25:50 +02:00

40 lines
1.3 KiB
Makefile

# VirtualXT -- Circle baremetal kernel Makefile
#
# Builds a Raspberry Pi kernel image that loads VirtualXT as a libretro core.
# Requires Circle to be built first (see ../circle/README).
#
# Usage:
# make -C tools/circle/kernel
#
# This builds the Circle frontend objects and links them with
# virtualxt_libretro.o (produced by `make rpi` from the project root).
ifeq ($(CIRCLEHOME),)
CIRCLEHOME = ../../../../circle
endif
# VirtualXT core object and include paths.
VXT_HOME = ../../..
CFLAGS = -I$(VXT_HOME)/src -I$(VXT_HOME)/tools/libretro
# VirtualXT's static .bss footprint (~14.8 MB) exceeds Circle's default
# KERNEL_MAX_SIZE of 2 MB, which would trigger the silent halt in
# circle/lib/sysinit.cpp before any output is initialized. The matching
# define MUST also be present in $(CIRCLEHOME)/Config.mk so that libcircle
# itself is built with the larger value. See docs/STATUS.md.
DEFINE += -DKERNEL_MAX_SIZE=0x1400000 -DCRT_FILTER_EXTERNAL
OBJS = main.o kernel.o emuloop.o $(VXT_HOME)/virtualxt_libretro.o
LIBS = $(CIRCLEHOME)/lib/libcircle.a \
$(CIRCLEHOME)/lib/usb/libusb.a \
$(CIRCLEHOME)/lib/sound/libsound.a \
$(CIRCLEHOME)/lib/input/libinput.a \
$(CIRCLEHOME)/lib/fs/libfs.a \
$(CIRCLEHOME)/addon/fatfs/libfatfs.a \
$(CIRCLEHOME)/addon/SDCard/libsdcard.a
include $(CIRCLEHOME)/Rules.mk
-include $(DEPS)