# Attribution and build notes

This HTML5 game packages Open Syobon Action 0.9.2 (upstream commit `81c52f51feef652c7e7d18f297f0fc69fedd4a99`) from [toyoshim/SyobonAction](https://github.com/toyoshim/SyobonAction), forked from Open Syobon Action v0.9 RC2 by Mathew Velasquez. The upstream README requests credit for the original game author ちく (Chiku), whose copyright is reserved. Upstream source is distributed under GNU GPL version 2; see [LICENSE](LICENSE).

The root `index.html` is the modified HTML5 game wrapper. `module.js` and `chime-0.94.2.min.js` include small missing-track and browser audio compatibility guards. It adds responsive layout, touch controls that send the game's arrow-key inputs, audio-context resume handling, and a Web Audio constructor compatibility fix. The compiled game, original source, assets, build files, and upstream notices are in [source-upstream.zip](../source-upstream.zip).

The ZIP is an archive of the exact upstream Git commit above. Upstream build files are in `src/Makefile.emcc` and the root `Makefile`; rebuilding uses Emscripten and the pinned `chime` 0.94.2 dependency noted there. The copy shipped in the app is the upstream prebuilt web output with the wrapper kept separately at the site root.

Telegram Games integration uses a server-side callback handler to return this page URL; the browser no longer loads the Mini App SDK.

Frame-pacing modification: the compiled game loop no longer skips alternate browser frames. The wrapper schedules the original 30 Hz game logic by elapsed time, independent of browser refresh rate. The updated C++ loop is in source/src/main.cpp; frame-clock.js and module.js provide the scheduler. The exact patch is in source/patch-game-performance.mjs (run from the project scripts directory against public/SyobonAction.js). The upstream ZIP remains unmodified.
