← Kiscvik.comA laboratory in the Kiscvik ecosystemKiscvikRetro ↗

DOC.01 / Kisport Engine / Documentation

A small, auditable, reproducible pipeline.

Technical edition of the 0.7.35 reference. It distinguishes the reusable engine, the parts coupled to the port and the checks still pending.

01 / Platform

A runtime for the phone.

KisportMIDlet presents KisportCanvas. Lifecycle methods resume, suspend or stop the thread. Diagnostics can report that M3G is unavailable before loading its implementation.

The historical profile is CLDC 1.1 / MIDP 2.0 / JSR-184, using Java 1.3 language features and bytecode 45.3. Preverification adds CLDC StackMap data; compilation stubs and Java SE libraries do not enter the JAR.

The editorial reference uses JDK 17.0.21, ECJ 3.26 and ProGuard 6.2.2 on the PC. FreeJ2ME-Plus is pinned to commit 677d41b; downloads are checked using SHA-256. These versions describe the audited engine, not this website's requirements.

02 / Compact data

Convert once. Read what is needed.

FormatResponsibilityScope of this description
KPS3Chunk meshes, positions, UVs, colors and indices for each shared texture page.KPS1 and KPS2 are earlier formats; their limits do not describe the current reader.
KPW2 v6Path, ground, sectors, collisions, actors, vehicles, sequences and checkpoints.Describes world state; it is not the rendering mesh.
KPC / KPO / KPMCharacters and clips; object container; lit models.The character uses rigid 16-bone skinning on the CPU.
KPVVisibility masks for each camera interval.Experimental option; requires visual integrity and validation on each device.
KPU / KTT2D interface and text table.Converted commercial text remains in the private package.

The pipeline produces conversion reports and hashes. Packaging selects explicitly listed, checked resources; commercial originals and their derivatives remain in the private environment.

03 / Memory

Prepare before crossing.

The renderer keeps at most two chunks resident and prepares the next one incrementally. prepare validates headers, positions, UVs, colors and indices; activate finishes the remaining work and creates the mesh.

Texture pages load once for the level. Objects and animations are selected by zone and context. Transitions release the world, objects and poses before loading the ending.

If early preparation runs out of memory, it can be abandoned and retried at the boundary. The observed Java heap does not necessarily include all native M3G or audio memory.

Memory results and limitations →

04 / Interaction

Simulation and rendering at their own pace.

Simulation uses fixed 20 ms steps, with bounded accumulated time after slow frames. Input state distinguishes held keys from edges; it clears key presses when the application pauses or becomes hidden.

MMAPI runs on a separate thread, with one player at a time. WAV effects close before MIDI playback. Cans use MIDIControl when available, with playTone as a fallback. The private reference music uses 8 kHz PCM.

Mixing limitations, recovery after collisions and extended playback must be checked on each phone. Emulator audio does not validate physical behavior.

05 / Method

From hypothesis to device.

  1. Define the hypothesis

    Identify the version, scene and visual or functional criterion before changing code.

  2. Build and check

    Check the CLDC profile, formats, logic, preverification and absence of Java SE dependencies.

  3. Run the artifact in an emulator

    Tests with and without M3G, visual audits, level traversal and resource comparisons.

  4. Rebuild and compare

    Compare the bytes and SHA of two builds. Record pinned tool versions.

  5. Validate on physical hardware

    Record the SHA, phone, firmware, graphics profile, audio, warm-up, duration, FPS, percentiles, memory and visual defects.

Documented scope of beta 0.7.35 →

06 / Pending work

What remains open.

  • Full physical playthrough and extended sessions with the final artifact on each device.
  • Real audio after collisions and cans, and during pause and resume.
  • Physical comparison of the M3G 1.0 scale; the emulator does not reproduce the observed seam.
  • Further separation of the engine and game-specific code.
  • Provisional character lighting and a native memory budget.
  • Publication review of the port's screenshots and videos.
Sources and scope of this edition →