Files
libretro/emulators/numero.yml
T
Abdessamad Derraz 315dab82b7 feat: give each set its requirement and one pick
Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.

Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.

One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.

variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
2026-11-09 18:19:32 +01:00

70 lines
2.3 KiB
YAML

emulator: Numero
type: libretro
core_classification: community_fork
source: "https://github.com/nbarkhina/numero"
upstream: "https://github.com/sputt/wabbitemu"
profiled_date: "2026-03-24"
source_commit: "c0b07a39782feafebcde0c8ccfa91fc92732c999"
core_version: "1.1"
version_basis:
kind: file
path: "libnumero/libretro/libretronew.cpp"
pattern: 'library_version\s*=\s*"([^"]+)"'
display_name: "Texas Instruments TI-83 (Numero)"
cores:
- numero
systems:
- ti-83
notes: |
Libretro port of Wabbitemu, a TI-83 family calculator emulator.
Supports TI-83, TI-83 Plus and TI-83 Plus Silver Edition.
A calculator ROM dump is required. The core searches sequentially in the
system directory (libretronew.cpp:575-594): ti83se.rom first, then
ti83plus.rom, then ti83.rom. The first found is loaded via rom_load()
(libretronew.cpp:608). file_present_in_system() checks existence only
via VFS open/close (libretronew.cpp:451-472). No hash or size validation.
Without any ROM, the core shows a blank screen listing the expected
filenames (libretronew.cpp:1030-1042). No HLE fallback.
Supports no-content launch (libretronew.cpp:556). Content files
(.8xp/.8xk/.8xg) are loaded on top of the running ROM via link cable
simulation. Auto-saves calculator state every 10 seconds
(libretronew.cpp:1050-1063).
Upstream Wabbitemu supports a wider model range (TI-73 through TI-84+CSE)
but the libretro wrapper only searches for TI-83 family filenames. The
underlying engine (calc.cpp:rom_load) auto-detects the model from the ROM
header.
groups:
rom:
required: true
files:
- name: "ti83se.rom"
system: ti-83
description: "TI-83 Plus Silver Edition ROM dump"
group: rom
priority: 1
source_ref: "source libnumero/libretro/libretronew.cpp:576-578"
note: "Checked first. Recommended for largest storage capacity."
- name: "ti83plus.rom"
system: ti-83
description: "TI-83 Plus ROM dump"
group: rom
priority: 2
source_ref: "source libnumero/libretro/libretronew.cpp:583-585"
note: "Checked second, used if ti83se.rom is missing."
- name: "ti83.rom"
system: ti-83
description: "TI-83 ROM dump"
group: rom
priority: 3
source_ref: "source libnumero/libretro/libretronew.cpp:591-593"
note: "Checked last. Original TI-83 (non-Plus)."