# Native world and billiards update All game code in this update is x86 MASM. Python only packs artwork and checks framebuffers. Existing C# launchers are packaging utilities, not the game engine. ## Street - The camera walks on the north pavement after crossing from the alley. - Traffic waits for the crossing and continues from its stopped position. - Only the two entrance guards remain. Road objects no longer use guard sprites. - The avenue continues through an intersection into staggered city blocks. No distant building spans the entire road. - Per-pixel depth of distant buildings survives foreground depth preparation. - Seven storeys share one roof/texture projection and taller floor spacing. - Walking pedestrians, benches, hydrant, mailbox, newspaper box, bollards, planter, parking meter and fence use separate depth-tested sprites. ## Casino - The bar can be activated from its entire serving edge, but not from staff space. - Highball, red cocktail and water use separate preparation and drinking frames. - Cabaret has physical stage sides, back curtain, wings, steps and a truss. Its former full-stage billboard is not drawn. Players cannot enter the stage. - Native regression checks verify visitor anchors are not inside map walls. ## Billiards - Click or drag on the cloth to aim; left/right arrows refine the direction. - Click or drag the force slider, or use up/down arrows, before shooting. - Space or the Shot button uses the selected power without wrapping its value. - The aim guide uses Q16.16 consistently with the cue and physics positions. - Balls are captured only within visible 8-pixel pocket mouths. Corner jaws and cushion openings agree with these mouths; outer bounds prevent escaped balls. - Potted balls visibly sink, then remain in a tray. A scratched cue is placed through the normal ball-in-hand mode instead of being silently discarded. - A break eight is re-spotted with full ball-diameter clearance. ## Offline validation `tools/tests/world_regression.inc` exercises the complete camera/car route, front/staff bar access, stage collision, six pocket approaches, force input and 100 different-angle/different-force breaks through actual native functions. `tools/tests/check_hall_frames.py` checks new packs and sixteen native frames, including three distinct drinks. Screenshots are in `build/actions`. ## Art Built-in `image_gen` generated the versioned sources in `assets/sprites/hall`. Prompts: `assets/sprites/hall/prompts-v4.json`. Observed atlas gutters, true alpha, common scales and foot anchors are normalized by `pack_world_v4.py`.