Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
McDonald's Treasure Land Adventure (PC)
PORTSNATIVE

McDonald's Treasure Land Adventure (PC)

NATIVE PORTPLATFORMERWINDOWSALPHA

McDonald's Treasure Land Adventure (PC)

McDonald's Treasure Land Adventure

OriginSega Mega Drive / Genesis

TechnologyNative C/C++ port (engine reimplementation)

Available forWindows

View official project

About the project

McDonald's Treasure Land Adventure es un videojuego de plataformas desarrollado por Treasure y publicado por Sega para la Mega Drive. Basado en la cadena de restaurantes de comida rápida McDonald's, concretamente en su campaña de mercadotecnia McDonaldland, los jugadores controlan a Ronald McDonald en su intento por recuperar de un grupo de villanos las piezas perdidas de un mapa que conducen a la ubicación de un tesoro enterrado. Puede derrotar a los enemigos al utilizar un ataque mágico y logra engancharse a ganchos con su bufanda para alcanzar plataformas más altas.

Official project information

Author's original READMEOpen on GitHub ↗

McDonald's Treasure Land Adventure — Static Recompilation

A static recompilation of McDonald's Treasure Land Adventure (Treasure / SEGA, 1993) for the Sega Genesis / Mega Drive, built with the segagenesisrecomp framework.

The original 68000 machine code is translated to native C at build time and runs against the framework's clean-room Genesis runtime (VDP, bus, scheduler, YM2612 FM, SN76489 PSG, Z80). No emulator core is compiled or linked; code the static scan cannot prove is a function entry falls back to the framework's Tier-3 interpreter capsule at runtime.

This repository contains no ROM. You must supply your own legally obtained copy of the USA release (and, for the experimental Japan and Europe variants, the Japan and Europe releases). See ROM you need.

ROM you need

USA — the verified target

TitleMcDonald's Treasure Land Adventure (USA)
RegionUSA / NTSC
Size1 MiB (1,048,576 bytes)
CRC3204EF4899
Internal headerMCDONALD'S, serial GM MK-1067 -00

Place it at game/mcdonald.bin. The recompiler bakes in address-level discovery derived from this exact image, so other revisions/dumps are not supported.

Japan — experimental, optional

TitleMcDonald's Treasure Land Adventure (Japan)
RegionJapan / NTSC
Size1 MiB (1,048,576 bytes)
CRC32FEBCFD06
Internal headerMCDONALD'S, serial GM G-004102-00

An opt-in second target (-DMCD_ROM_VARIANT=jp) built from a separately linked image: 63.9% of its bytes differ from the USA ROM and its 68000 code is relocated, so it is regenerated from scratch and no USA address carries over. Place it at game/jp/mcdonald.bin. It is unplaytested — treat it as an experiment, not a port.

Europe — experimental, optional

TitleMcDonald's Treasure Land Adventure (Europe)
RegionEurope / PAL
Size1 MiB (1,048,576 bytes)
CRC326AB6A8DA
Internal headerMCDONALD'S, serial GM MK-01067-00

An opt-in third target (-DMCD_ROM_VARIANT=eu) built from a separately linked Europe image. Like the Japan ROM it is relocated relative to the USA one and region-checks the version register $A10001 at boot (it wants 0xC0, PAL). Unlike the Japan ROM it also runs on PAL frame timing — 313 scanlines per frame at ~50.16 Hz instead of 262 at 59.94 — so the specification selects the PAL frame geometry and the engine scales the master-clock frame span (and the audio-chip drain that goes with it) to the region (engine fixes 5 and 6). Place it at game/eu/mcdonald.bin. It is unplaytested — treat it as an experiment, not a port.

Status

AreaStateNotes
Boot → SEGA / Treasure title✅mode dispatch, palettes, scrolling
Menus / attract mode✅
In-game (level 1)✅scrolling, object updates, animation
Sprite / tile-list decoder✅$011A90 / $011B00 state machine
Password / symbol screen✅mode 16 sub-state dispatch ($01620E); reached from the title menu, not the attract loop
Audio✅YM2612 FM + SN76489 PSG
Full playthrough⚠️not verified end to end

Known gaps: a computed dispatch inside func_05AA24 ($05AA76 / $05AA7A) still resolves on the Tier-3 floor, and a handful of floor-coverage addresses remain unvalidated. See docs/ENGINE-FIXES.md.

Japan variant (experimental)

Built with -DMCD_ROM_VARIANT=jp. Same engine and RAM layout. The cartridge region-checks the version register $A10001 at boot, so its spec reports a Japanese domestic console (engine fix 4); the computed-dispatch seeds are mirrored from the USA set at their relocated JP addresses (game/jp/game.toml).

AreaStateNotes
Region screen → boot✅clears the "wrong region" warning
Title / attract⚠️renders; not fully audited
Password / symbol screen✅mode 16; symbols render, 0 dispatch misses
Gameplay / audio⚠️not verified

Nothing here is playtested end to end.

Europe variant (experimental)

Built with -DMCD_ROM_VARIANT=eu. Same engine and RAM layout, but the runtime runs PAL geometry — 313-line frames at ~50.16 Hz — because the specification reports a European console (engine fixes 4–6). No USA or JP address carries over: the Europe image is relocated, so its discovery seeds are mirrored from the USA set at their EU addresses (game/eu/game.toml).

AreaStateNotes
Region screen → boot✅clears the wrong-region warning at $A10001 = 0xC0
Frame rate / audio✅~50.16 Hz, no audio underruns (49.5 fps measured over 3000 frames)
Title / attract⚠️renders; not fully audited
Gameplay / audio⚠️not verified

Nothing here is playtested end to end.

Requirements

  • CMake ≥ 3.16
  • Ninja (or another generator)
  • A C11 / C++17 toolchain (the FM core, ymfm, is C++)
  • SDL2 development libraries
  • git (the engine is a submodule)

Debian / Ubuntu:

sudo apt install build-essential cmake ninja-build libsdl2-dev

Build & run

git clone --recurse-submodules https://github.com/yourname/McDonaldsTreasureLandRecomp.git
cd McDonaldsTreasureLandRecomp

install -m644 "/path/to/McDonald's Treasure Land Adventure (USA).md" game/mcdonald.bin

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build

./build/McDonaldsTreasureLandRecomp game/mcdonald.bin --no-launcher

The first build regenerates the translated C from the ROM (a few minutes); later builds are incremental.

GENESIS_RECOMP_ROOT defaults to the in-repo segagenesisrecomp/ submodule. Point it elsewhere with -DGENESIS_RECOMP_ROOT=/path/to/checkout to build against a different engine tree (e.g. one carrying local experiments).

Japan build (experimental)

install -m644 "/path/to/McDonald's Treasure Land Adventure (Japan).md" game/jp/mcdonald.bin

cmake -S . -B build-jp -G Ninja -DCMAKE_BUILD_TYPE=Release -DMCD_ROM_VARIANT=jp
cmake --build build-jp

./build-jp/McDonaldsTreasureLandRecompJP game/jp/mcdonald.bin --no-launcher

Europe build (experimental)

install -m644 "/path/to/McDonald's Treasure Land Adventure (Europe).md" game/eu/mcdonald.bin

cmake -S . -B build-eu -G Ninja -DCMAKE_BUILD_TYPE=Release -DMCD_ROM_VARIANT=eu
cmake --build build-eu

./build-eu/McDonaldsTreasureLandRecompEU game/eu/mcdonald.bin --no-launcher

MCD_ROM_VARIANT defaults to us. The variants use separate build directories and separate generated sources, so the USA build is never affected by the JP or Europe ones.

Layout

game/game.toml                discovery seeds + per-game RAM layout (USA)
game/mcdonald_spec.c          GameSpec: vectors, ROM identity, bring-up (USA)
game/jp/game.toml             discovery seeds + RAM layout (Japan, experimental)
game/jp/mcdonald_jp_spec.c    GameSpec for the Japan variant
game/eu/game.toml             discovery seeds + RAM layout (Europe, experimental)
game/eu/mcdonald_eu_spec.c    GameSpec for the Europe variant (PAL geometry)
CMakeLists.txt                native target; MCD_ROM_VARIANT selects the variant
segagenesisrecomp/            framework submodule (patched fork — see below)
patches/                      engine changes as plain patches
docs/ENGINE-FIXES.md          root-cause writeups for the engine changes
tests/scripts/                input scripts for automated / headless runs
tools/                        debug-server helper

How discovery works

There is no community disassembly for this game, so 68000 function boundaries come from the recompiler's heuristic scan (68K vector table + BSR/JSR/RTS walk) refined by a small set of hand-audited seeds in game/game.toml → [functions].extra. Every seed is decoded from the raw ROM before it is added — never blind-seeded from a runtime miss list.

When the scan cannot prove a computed-dispatch target, the runner executes it on the Tier-3 interpreter capsule and records it in build/dispatch_misses.toml and build/floor_coverage.toml. Those files are the work queue: each address is disassembled, confirmed against the ROM, and promoted into [functions].extra in the next revision.

Engine changes

This game needs six small engine changes on top of upstream segagenesisrecomp. They are carried in the segagenesisrecomp submodule fork and, for reference and upstreaming, as plain patches in patches/:

PatchFileWhat
0001-runner-local-computed-return.patchrunner/m68k_interp.cTier-3 capsule honours a locally pushed return address
0002-codegen-net-pushed-return.patchexternal/m68k-recomp-core/profiles/genesis/code_generator.ccode generator mirrors that behaviour for the same idiom, and byte-accurate stack-delta tracking
0003-runner-console-region.patchrunner/game_spec.h, runner/main.cper-game $A10001 console region (Japan 0x00), so the JP cartridge clears its wrong-region screen
0004-runner-pal-frame-geometry.patchrunner/game_spec.h, runner/glue.c, runner/main.c, runner/video/*region-derived frame geometry (PAL 313 lines / ~50.16 Hz), so the Europe build runs at PAL speed
0005-runner-pal-audio-drain.patchrunner/sim_step.cscale the audio-chip drain to the frame geometry, so PAL frames no longer starve the bridge ring (that starvation was the PAL stutter)

See docs/ENGINE-FIXES.md for the full root-cause writeup.

Automated runs & debugging

The runner accepts an input script:

./build/McDonaldsTreasureLandRecomp game/mcdonald.bin --no-launcher \
    --input-script tests/scripts/smoke.input

Scripts can WAIT, PRESS / HOLD / RELEASE, WAIT_RAM16, DUMP_RAM, DUMP_VRAM, SCREENSHOT, SAVE_STATE and EXIT. WAIT_RAM* blocks until the value appears and keeps advancing frames meanwhile, so a script can gate on a screen that has to be reached first (e.g. tests/scripts/password-screen.input, which waits for the title-menu password screen).

For live inspection the runner exposes a TCP debug server (line-based JSON). It is disabled unless a debug.ini file exists next to the executable — its presence is what enables the server; an optional port= line sets the port (compiled default 4378, and --port N overrides both):

cp tools/debug.ini.example build/debug.ini     # enables the server on port 4378
./build/McDonaldsTreasureLandRecomp game/mcdonald.bin --no-launcher &

tools/genesis_debug.py --port 4378 ping
tools/genesis_debug.py --port 4378 read 0xFFE004 4
tools/genesis_debug.py --port 4378 shot shots/now.png

tools/genesis_debug.py is a tiny client; see the engine's DEBUG.md for the full command list. The runner also reads debug.ini for pacing= and interlace_display= overrides.

License

PolyForm Noncommercial License 1.0.0 — see LICENSE.md. The segagenesisrecomp submodule is licensed separately by its upstream authors; third-party components are listed in THIRD-PARTY-LICENSES.md.

No ROM, no copyrighted game assets and no SEGA / Treasure trademarks are distributed here. McDonald's Treasure Land Adventure is © SEGA / Treasure; "McDonald's" is a trademark of McDonald's Corporation. This is a noncommercial fan reverse-engineering effort.

Credits

  • segagenesisrecomp — the recompilation framework, runtime and recompiler driver
  • m68k-recomp-core — the shared 68K decoder / emitter
Read official guide
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Platformer
Status
alpha
Original platform
Sega Mega Drive / Genesis
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
—

Target platforms 1

Windows
View on GitHub
Advertisement