mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
55 lines
2.6 KiB
YAML
55 lines
2.6 KiB
YAML
emulator: Eternal Computer
|
|
type: libretro
|
|
core_classification: community_fork
|
|
source: "https://codeberg.org/iyzsong/eternal-libretro"
|
|
upstream: "https://github.com/adriancable/eternal"
|
|
source_commit: "13adf143aea822ebc1ee23722a80e93a7979e4c9"
|
|
upstream_commit: "17c8ab87de7f308f48f4990ed62c48b86173797d"
|
|
profiled_date: "2026-09-17"
|
|
core_version: "0.0"
|
|
display_name: "Eternal Computer"
|
|
cores:
|
|
- eternal
|
|
systems:
|
|
- eternal-computer
|
|
|
|
notes: |
|
|
Virtual machine for the Eternal Software Initiative architecture, a Subleq
|
|
variant with indirect operands, a keyboard port, a console port, a wall
|
|
clock at word 64 and a timer interrupt through word 0. Adrian Cable's
|
|
reference machines are vm/vm.c (SDL3 framebuffer) and vm/vm_console.c;
|
|
the libretro core by iyzsong carries the same loop in libretro.c:186-222.
|
|
|
|
Machine memory is a static array of 3<<27 words, 1.5 GiB, cleared again
|
|
when the content is unloaded (libretro.c:360-364); the framebuffer is its
|
|
last 800x512 words (libretro.c:9-13, 22-23), pushed to the frontend as
|
|
XRGB8888 on every retro_run (libretro.c:330-334).
|
|
|
|
The content is the whole machine image. retro_load_game copies the buffer
|
|
the frontend hands over to word 0, refuses an image larger than memory and
|
|
starts the interpreter on a thread (libretro.c:302-314); need_fullpath is
|
|
false and the accepted extensions are capsule and bootimage
|
|
(libretro.c:275-282). The upstream machines fread the same file into mem
|
|
(vm/vm.c:45-48, vm/vm_console.c:32).
|
|
|
|
A boot image comes out of tools/make_boot_image.py applied to a Subleq ELF:
|
|
a boot block of text_start bytes, with the interrupt vector at word 0, the
|
|
saved PC at word 1, the initial stack pointer at word 4, the framebuffer
|
|
word address at word 6 and the constants 0, -1 and 1 at words 36, 38 and
|
|
39, followed by the flat binary (tools/make_boot_image.py:34-68). The
|
|
upstream repository ships capsules/vmlinux.bootimage.xz, ESI Linux with
|
|
busybox, Doom, nano, lynx and htop in its initramfs, 110 MiB once
|
|
decompressed; the frontend does not open xz, so the image is decompressed
|
|
before loading.
|
|
|
|
Nothing else is read. retro_set_environment registers the log interface and
|
|
the keyboard callback and nothing more (libretro.c:238-249); the core never
|
|
asks for a system, save or content directory and opens no file itself.
|
|
Keyboard events are translated to USB HID usage IDs and queued eight deep
|
|
(libretro.c:36-184); console output goes to the host stdout with write
|
|
(libretro.c:205-206); a fetched C of zero halts the machine and asks the
|
|
frontend to shut down (libretro.c:196-199). No savestate
|
|
(libretro.c:336-339), no memory map, no audio.
|
|
|
|
files: []
|