Skip to content

Update optional MPE host to 1.2.6 - #20

Open
ziggystar12 wants to merge 13 commits into
SensoriumEmbedded:mainfrom
ziggystar12:codex/travis-vm-host
Open

Update optional MPE host to 1.2.6#20
ziggystar12 wants to merge 13 commits into
SensoriumEmbedded:mainfrom
ziggystar12:codex/travis-vm-host

Conversation

@ziggystar12

@ziggystar12 ziggystar12 commented Sep 6, 2026

Copy link
Copy Markdown

This brings the optional MHS Power Engine integration to MPE 1.2.6 on the latest TeensyROM 0.8.0.5 source. Travis's text menu, settings and ordinary cartridge configuration are retained. VM engines remain separate downloads; no Custom GUI desktop or game payloads are included.

Ready to test

Download the full TeensyROM+ firmware

Requires TeensyROM+ PCB v0.4. Install through the normal firmware updater. Original-TR comparison builds check ordinary firmware only, not VM support.

Changes

  • Includes current upstream changes through dc1174c, including Final Cartridge III support, while retaining Travis's FLASHMEM and root-file launch fixes.
  • Removes the two-button firmware-recovery shortcut. Teensy.ino now matches current upstream exactly, including startup and ordinary button behavior. Normal SD/USB updating and the stricter HEX parser remain.
  • Includes MHS F1 colour fitting and optional solid-colour status rows, NUFLIX double buffering, SID servicing during uploads, and immutable RAM2 video sources. F7 Sharp keeps its existing conversion.
  • NUFLIX-capable clients can switch back to F1/F3/F7 without restarting; invalid timing bytes remain rejected.
  • Keeps one current review HEX, with build instructions and tests in the branch.

MPE, stock-plus and original-TR builds pass. Host checks cover the updater, startup, module/file services, video, replay, RAM ownership and launch routing. All 219 protected upstream menu/asset/configuration files match. The VM host fits its code/heap/stack reservations, and the full image fits the updater staging area.

No hardware was flashed; physical acceptance is still pending. Please test normal cartridge features, VM graphics/input/audio, reset/menu return and firmware updating before accepting the integration.

Build/install guide · Test results · Component notices

MHS created the Power Engine system and VM format. TeensyROM hardware and original firmware remain credited to Travis Smith / Sensorium Embedded; component authors' notices are retained.

@SensoriumEmbedded
SensoriumEmbedded marked this pull request as ready for review September 6, 2026 13:30
ziggystar12 and others added 6 commits September 6, 2026 10:28
Main's RAM1 grew ~4KB after MPE_VM_ENABLED was added. Traced to
MPELaunch::tryFile(), itself marked FLASHMEM with only one call site
(inside HandleExecution()), getting fully inlined into HandleExecution()
since that function isn't FLASHMEM -- defeating the attribute on the
callee. Marking HandleExecution() itself FLASHMEM fixes it directly;
its call sites are all main-loop/StatusFunction-dispatched (never the
ISR path), and it's already reached only via function pointer
(StatusFunctions.c's dispatch table), which independently prevents
the compiler from inlining it anywhere else. Recovers 4,560 bytes of
RAM1 padding.
RemoteLaunch()'s path/filename split truncated DriveDirPath to an
empty string instead of "/" when the target was a root-level file,
since the only slash in the path was the leading one. That left
HandleExecution()'s VM-registry interception unable to fire (its
DriveDirPath[0] guard failed on the empty string), so a hot-keyed
root-level VM .crt loaded as an ordinary cartridge instead and never
got serviced by the VM host -- reproduced identically for DOOMVM and
NESVM. Fixed by re-pointing the filename into the untouched source
buffer instead of leaving it aliased into DriveDirPath, which a first
attempt at this fix got wrong (a redundant strcpy("/") clobbered the
filename it overlapped with).
Preserve upstream RAM1 and root-file launch fixes. Add auxiliary RAM ownership and fitted F5 host services, conformance coverage, and a verified combined text-firmware test artifact.
@ziggystar12 ziggystar12 changed the title Add optional MHS Power Engine VM host with stock TeensyROM UI Add optional MPE host 1.2.1 with stock TeensyROM text UI Sep 8, 2026
@ziggystar12 ziggystar12 changed the title Add optional MPE host 1.2.1 with stock TeensyROM text UI Update optional MPE host to 1.2.2 with NUFLIX and two-button SD recovery Sep 9, 2026
@ziggystar12

Copy link
Copy Markdown
Author

Travis — the review is now updated to MPE 1.2.2 with NUFLIX double buffering, SID servicing during uploads, and the Menu + Alternate/Special ten-second /RESTORE.HEX recovery route. Your text interface and protected menu assets are unchanged.

The updated PR description links the new full HEX, exact hash, recovery instructions and test results. MPE, stock-plus and original-TR comparison builds pass, as do the host suite and 25 parser safety scenarios. Physical hardware testing is still pending; nothing was flashed here.

One licensing point is called out explicitly: the shared host now includes the GPLv3-or-later RAD-Doom F1 converter. Its corresponding source, generator, attribution and full license are included, with your original MIT notices retained. No emulator engines, GUI desktop assets or private game data are included.

Current commit: 0f8266ae3367dfeb0bf419500d7c5b1915d81736.

@ziggystar12 ziggystar12 changed the title Update optional MPE host to 1.2.2 with NUFLIX and two-button SD recovery Update optional MPE host to 1.2.6 Sep 9, 2026
@ziggystar12

ziggystar12 commented Sep 9, 2026

Copy link
Copy Markdown
Author

Travis — the MPE 1.2.6 candidate is ready for your consideration. It includes your latest 0.8.0.5 changes and no longer has the two-button firmware-recovery option. Startup and button handling now match your upstream exactly, and your text interface is unchanged.

The PR description links the current full HEX and revised source, including the final fix for switching NUFLIX-capable clients back to F1/F3/F7. All three builds and the host checks pass; physical hardware testing is still pending. Your normal firmware updater remains available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants