# Download layout

For this static-site copy, first extract `engine-source.zip` in this folder to create `OpenLF2/`. Keep `vendor/`, `runtime-notices/` and the supplied Python recipes alongside it. The engine source archive contains the same189files whose extracted paths/hashes are recorded in manifest.json.

# Engine source review materials

Status: **Rebuild/relink not yet validated. These are source review materials, not a compliance or legal clearance.** No public deployment is authorized by this archive.

This kit supplies the modified OpenLF2 v0.9.4 source used for the existing browser engine, exact corresponding FFmpeg 7.1.5 source, exact Lua and Emscripten SDL/zlib/bzip2 source archives, and additional runtime notices. Original license texts and upstream author names/emails are preserved. The source archives contain no private account configuration or credentials.

The existing browser WASM SHA-256 before privacy sanitation is `58fc85b88bfd7d46563b714b6e6eca33ae1dd3b6dc7cbfe22e946ad61cf80105`. FFmpeg archive source files were compared against the local source used for that build: no archive file differs or is missing. FFmpeg was configured without GPL, nonfree or version-3 components. The only enabled decoder/demuxer are WMAv2 and ASF, plus the required resampler.

## Contents and licenses

- `OpenLF2/`: 189 engine source/build/documentation files; build artifacts and Git metadata excluded. Upstream code is MIT. Local alpha-renderer changes are present in the source and separately recorded in `renderer-alpha.patch`.
- `vendor/`: original versioned sources and their embedded licenses: FFmpeg (LGPL-2.1-or-later), Lua (MIT), SDL (zlib), zlib (zlib), and bzip2 (bzip2 license).
- `runtime-notices/`: Emscripten JavaScript runtime (MIT/NCSA), musl C runtime (MIT and embedded notices), and LLVM C/C++ support library notices (Apache-2.0 WITH LLVM-exception and included legacy notices), copied verbatim from the actual toolchain. C++/C runtime portions and compiler support code are distributed inside the engine; the whole compiler/SDK is not. The included libunwind and llvm-libc notices conservatively cover those available runtime components without asserting that every object from those libraries is linked. Additional subcomponent notices should be assessed from the exact source trees and linked component inventory.
- `manifest.json`: file hashes and source inventory. Filenames identify the public sources and do not expose the creator's computer paths.
- `sanitized-WASM-provenance.md`: release-specific privacy sanitation procedure/status. This must accurately describe any post-link string changes and be reproducible before claiming a matching sanitized rebuild.

## Pinned build environment

The supplied `OpenLF2/dist/web/Dockerfile` pins Emscripten 4.0.20 and its image SHA-256, with CMake 3.31.6. Its shell recipe builds under the neutral container root `/workspace`. The SDK supplies the compiler and standard runtimes; it need not carry any local account settings. The build also needs Docker, Python 3, Make and normal archive utilities. Downloading the pinned toolchain may require internet access.

Prepare the source/cache input filenames from the kit root:

```sh
python3 prepare-sources.py
bash OpenLF2/dist/build-web.sh
```

The original recipe creates `OpenLF2/build/web/native/openlf2.js`, `.wasm`, and `.data`. Always keep the three outputs from the same build together. The source/cache preparation stages the exact supplied archives. The pinned Emscripten port recipe may download or rebuild its port cache; the corresponding sources are included separately for review.

For a modified interface-compatible FFmpeg, extract the original supplied archive to `OpenLF2/build/web/vendor/ffmpeg-7.1.5`, change that source, remove an existing `OpenLF2/build/web/prefix` so the build does not reuse old static FFmpeg libraries, then rerun the supplied build. The shell recipe's configure flags are the recorded LGPL-only WMAv2/ASF configuration. Rebuild the application to relink it with the changed library. The archive checksum check validates the untouched original archive, not the extracted tree where modifications are made. Preserve and publish a diff for library modifications.

The actual supplied recipe still needs a clean environment test and a test with modified FFmpeg, then a test of the resulting executable. Follow `sanitized-WASM-provenance.md` after linking to reproduce any privacy string sanitation. Until those checks pass, this kit is not described as a validated relink workflow.

## Separate game data and rights

Original Little Fighter 2 game assets and installer data are **excluded**. They are not covered by OpenLF2's MIT license. An engine source rebuild does not require those assets: the executable preloads only MIT engine scripts; game data is loaded separately at runtime. Any runtime test needs a lawfully obtained user's own game copy or independently licensed replacement assets. Their public redistribution remains a separate unresolved release issue.

This kit concerns the engine executable. Character mods and the browser wrapper are separate runtime inputs. Existing public game scripts can be supplied separately; they are not silently relicensed by this kit. Nonprofit/parody wording does not replace permission or open-source compliance.

Official sources: https://github.com/OpenLF2/OpenLF2/tree/v0.9.4 ; https://ffmpeg.org/legal.html ; https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html ; https://emscripten.org/docs/introducing_emscripten/emscripten_license.html
