PORTCLUB
Cabecera de Little Fighter 2 (lf2-port)
Port nativo

Little Fighter 2 (lf2-port)

Port nativo de Little Fighter 2 (lf2-port) para PC.

Little Fighter 2 (lf2-port)

Port nativo basado en su ficha de origen.

README del repositorio

lf2-port

A native Linux, macOS, and Android port of Little Fighter 2 v2.0a. The target product keeps the port's native host systems and selected native game behavior while shared/x86port dynamically translates every remaining x86-32 guest instruction from the player's original executable.

The repository is currently integrating its runtime executor. Its native renderer, platform services, UI, input, audio, packaging, and gameplay enhancements remain. The x86-64 gameplay target builds against x86port_runtime, reaches the mode menu, and then refuses when control enters PE/DOS-header data at 0x0040000C. The pinned runtime still has no bounded fallback. The current work is the native/JIT migration; capability truth is in project state.

Intended product

authenticated lf2.exe
        |
native LF2 entry and bounded initialization
        |
LF2 runtime adapter -> x86port JIT -> translated blocks from live guest bytes
        |                    |
        |                    +-> LF2 native overrides by guest address
        +-> Win32 / CRT / DirectDraw / GDI / DirectSound HLE
                                      |
                        SDL3 host presentation, audio, input, and UI

JIT execution is the gameplay default. The shared runtime may use a bounded, reason-coded interpreter fallback only when translation fails, is unsupported, or cannot execute safely. Explicit interpreter mode is diagnostic-only, and fallback coverage cannot prove gameplay or performance.

The CPU migration preserves the current Win32, DirectDraw, HLE, native-entry, native-override, renderer, audio, input, and UI seams. It does not require a graphics rewrite. See the codemap for ownership.

Feature state

The comparison baseline is the unmodified Windows LF2 v2.0a release. These are the intended differences and their current state; IDs link the summary to the canonical inventory.

State itemCapabilityState
S001Boot, menus, VS Mode, and Stage Mode with audiopartial — established before migration; JIT re-conformance pending
S005Native overrides plus on-demand x86port JIT executionpartial — product-only adapter runs; opcode coverage stops during startup
S006Widescreen/ultrawide adds world coverage without stretchingverified
S002, S007High-resolution pixel-art rendering, lighting, and cast shadowsverified
S003Persistent remappable keyboard/controller actionspartial — physical-hardware gate pending
S008, S009Two-controller local play and controller hot-plugpartial — physical-hardware gate pending
S010Borderless, windowed, fullscreen, and Alt+Enter modesverified
S011Modern anti-aliased host textverified
S004Linux AppImage first-run file selectionpartial — clean-machine release gate pending
S012macOS native releasepartial — Metal acceptance and JIT host gate pending
S013Android ARM64 release with touch and private setuppartial — ARM64 JIT and hardware gate pending
S014Original network playmissing

The full inventory also tracks JIT-default execution policy, repository hygiene, representative gameplay conformance, and host JIT coverage in docs/project-state.md.

Screenshots from the preserved native host path

Android Stage Mode with on-screen touch controls

Stage Mode with the authored Android touch layer.

Native ultrawide Stage Mode PvE

Stage Mode at 3440×1440: the viewport exposes more stage area while preserving the original pixel geometry.

Native widescreen demo match

A 16:9 world view rather than a stretched 4:3 frame.

In-game port menuNative renderer and lighting controls
The in-game RmlUi port menuNative renderer and lighting controls

These captures establish preserved host capabilities; they do not prove the new JIT execution path until the representative-gameplay gate passes.

Game files are not distributed

This repository and its releases must not contain lf2.exe, the original installer, sprites, audio, data, or a reconstructable instruction-byte corpus. Little Fighter 2 is freeware by Marti Wong and Starsky Wong and remains their copyright. This is an unofficial project with no affiliation with or endorsement by the authors.

The finished launcher accepts the player's LF2 v2.0a installer, a complete extracted tree, or one bounded nested ZIP; validates exact executable and data identity; and persists the accepted location in OS user data. The gameplay runtime consumes the authenticated executable directly.

Raw instruction-byte exports remain local because they can reconstruct game code. Address/name metadata is retained only when a runtime, RE, or native-override owner consumes it.

Building and running

There is temporarily no supported gameplay run from this checkout. The lf2 target builds on x86-64 with the product runtime and aborts with the exact unsupported guest instruction once JIT coverage ends. Do not use ./run.sh or old end-to-end routes as gameplay evidence until state item S005 reaches the game frontier. The eventual zero-argument ./run.sh remains the shipping interface: a slim uv run --frozen shim that provisions player-owned assets, builds the native/JIT target, and launches it. It will not run tests or expose an engine selector.

Documentation-only validation available during this planning milestone is listed in docs/running.md. The first executable milestone and the gate that restores product runs are specified in docs/migration.md.

Repository layout

PathResponsibility
runtime/app/native entry, lifecycle, game-file selection, configuration, user paths
runtime/cpu/LF2 memory/PE ownership and the explicit adapter boundary to shared/x86port
runtime/win32/Win32, CRT, COM, DirectDraw, GDI, DirectShow, and socket/HLE services
runtime/overrides/title-specific native behavior and runtime override registrations
runtime/video/, runtime/audio/, runtime/input/, runtime/ui/native host subsystems
platforms/package/platform composition
tools/Python provisioning, build, packaging, RE, and runtime route tools
docs/goals, state, migration, ownership, evidence, and RE notes
game/player-owned extracted tree; gitignored

shared/x86port owns x86 decoding, architectural state, the diagnostic oracle, dynamic translation, bounded fallback, executable memory, and block caching. LF2 does not carry a second implementation.

Licence

MIT covers this repository's original code and documentation only. It grants no rights to Little Fighter 2 or its assets.

Built with AI assistance (Claude and other LLMs).

Comentarios (0)

Inicia sesión para dejar un comentario.

Sé el primero en comentar sobre este juego.