code wiki / (root) / nx_game_page_hair_attachment_candidate_t263.nx

nx_game_page_hair_attachment_candidate_t263.nx

buildroot/runtime/nx_game_page_hair_attachment_candidate_t263.nx

262144 B2072 linesdepth 11pulls 92 transitivereach 2 importersview sourcekind librarytopic game
docsdependenciesstructsconstsfunctions

about

nx_game_page_emit.nx -- the SOVEREIGN game-page emitter. Until now the browser page for a wasm game was assembled by printf blocks in _ops/nx_emit_game.sh -- real emission logic living in SHELL, against the doctrine (shell only LAUNCHES sovereign ELFs). This organ owns it: reads the .wasm, base64-encodes it (composes nx_base64 -- one encoder, not a coreutils dependency), and emits the complete self-contained page (marker, shim, input forwarding, persistence bytes-mover). usage: nx_game_page_emit <wasm> <out.html> <title> <native-client-name> <controls-html> RECOVERED 2026-08-02 from buildroot/_build/nx_craft_emit.s (the 14:07 build's data section) after a failed in-place rewrite TRUNCATED this file to 0 bytes and the damage was copied to both trees. Every emitted chunk below is the exact byte sequence that build shipped, so the recovered emitter is byte-equivalent to the last one that passed both gates. license_tier: ORIGINAL

dependencies 22 imports · 1 importers

nx_syscalls.nx nx_imported_body_page_t262.nx nx_base64.nx nx_game_page_artifact_lib.nx nx_game_shader_backend_selected_t5 nx_game_asset_prepare_emit.nx nx_game_rig_inspection_emit_t230.n nx_game_texture_mip_emit_t241.nx nx_game_surface_prepare.nx nx_json.nx nx_game_page_hair_attachment_c nx_craft_hair_attachment_emit_t263

diagram shows first 10 each side; +12 more imports, +0 more importers in the complete lists below.

imports: nx_syscalls.nxnx_imported_body_page_t262.nxnx_base64.nxnx_game_page_artifact_lib.nxnx_game_shader_backend_selected_t55.nxnx_game_asset_prepare_emit.nxnx_game_rig_inspection_emit_t230.nxnx_game_texture_mip_emit_t241.nxnx_game_surface_prepare.nxnx_json.nxnx_gpu_choice_workspace_t48.nxnx_site_chrome_search_t53.nxnx_wasmfit.nxnx_hairdyn_lib.nxnx_audio_osc.nxnx_atmosphere.nxnx_glprobe_lib.nxnx_tool_run.nxnx_genp_allow_lib.nxnx_release_view_emit.nxnx_release_recent_lib.nxnx_tier_ladder_lib.nx

imported by: nx_craft_hair_attachment_emit_t263.nx

structs

none

consts

59const GPE_MT_WSRC: *u8 = "const NXMT_WSRC=\"let ex=null;onmessage=async(e)=>{const d=e.data;try{if(d.t==='init'){const i=await WebAssembly.instantiate(d.mod,{env:{memory:d.mem}});ex=i.exports;postMessage({t:'ready'});}else if(d.t==='band'){ex.render_band(BigInt(d.y0),BigInt(d.y1),BigInt(d.wid));postMessage({t:'band'});}}catch(err){postMessage({t:'err',m:String(err)});}};\";\n"
61const GPE_WASM_CAP: i64 = 4194304
144const GPE_MAGIC_20260728: i64 = 20260728
190const GPE_EMIT_WEBGL: i64 = 1
197const GPE_ALPHA_BEND_SOFT_Q12: i64 = 40960 // the gate-proven XG_ALPHA_BEND_SOFT_Q12 compliance
198const GPE_UNITS_PER_178CM: i64 = 171530 // the page's own 1.78m-to-world-unit pairing
199const GPE_G_DEN_60HZ: i64 = 640800 // that pairing carried to a per-tick accel at 60Hz
200const GPE_OUT_CAP: i64 = 16777216
229const RK_WGSL_CAP: i64 = 65536
230const RK_WGSL_TMO_MS: i64 = 8000
231const RK_WGSL_ELF: *u8 = "./nx_wgsl.elf"
232const RK_WGSL_ELF_ABS: *u8 = "/volume1/homes/elderwesto/nishihost/nx_wgsl.elf" // the emitter's CWD is not always the serving root
233const RK_WGSL_BEGIN: *u8 = "--- WGSL ---\n"
234const RK_WGSL_END: *u8 = "\nwgsl_bytes="
235const RK_KERNEL_N: i64 = 65536 // u32 lanes per probe (1024 workgroups at the backend's width of 64)
289const RK_LAYOUT_BEGIN: *u8 = "struct U{"
290const RK_LAYOUT_END: *u8 = "var<uniform> u:U;\n"
291const RK_LAYOUT_SIZE_KEY: *u8 = "layoutraw_rc="
292const RK_LAYOUT_NAMES: i64 = 18
293const RK_FLOAT_BYTES: i64 = 4
372const RK_WORLD_FS_BEGIN: *u8 = "--- world_wgsl WGSL ---\n"
373const RK_WORLD_FS_END: *u8 = "\nworld_wgsl_rc="
374const RK_WORLD_VS_BEGIN: *u8 = "--- worldvs_wgsl WGSL ---\n"
375const RK_WORLD_VS_END: *u8 = "\nworldvs_wgsl_rc="
437const RK_CAST_VS_BEGIN: *u8 = "--- cast_wgsl WGSL ---\n"
438const RK_CAST_VS_END: *u8 = "\ncast_wgsl_rc="
439const RK_CAST_FS_BEGIN: *u8 = "--- castfs_wgsl WGSL ---\n"
440const RK_CAST_FS_END: *u8 = "\ncastfs_wgsl_rc="
477const RK_LM_JS_SAFE_INTEGER_MAX:i64=9007199254740991
571const RK_CAST_GLSL_VS_BEGIN: *u8 = "--- cast_glsl GLSL ---\n"
572const RK_CAST_GLSL_VS_END: *u8 = "\ncast_glsl_rc="
573const RK_CAST_GLSL_FS_BEGIN: *u8 = "--- castfs_glsl GLSL ---\n"
574const RK_CAST_GLSL_FS_END: *u8 = "\ncastfs_glsl_rc="
733const GPE_GPU_TIMESTAMP_ENDPOINTS: i64 = 2
734const GPE_GPU_TIMESTAMP_BUFFERS: i64 = 2
735const GPE_GPU_SLOT_BUFFER_BYTES: i64 = GPE_GPU_TIMESTAMP_ENDPOINTS * GPE_GPU_TIMESTAMP_BUFFERS * __size_of(i64)
737const GPE_GPU_POLICY_MAX_INTEGER: i64 = 9007199254740991
738const GPE_GPU_POLICY_RADIX: i64 = 10
739const GPE_FACING_INTEGER_MAX: i64 = 2147483647
740const GPE_FACING_HALF_TURN_Q12: i64 = 12868
1226const GPE_HSTR_WORDS_PER_STRAND: i64 = 24
1227const GPE_AXES: i64 = 3
1233const GPE_HAIR_GUIDES: i64 = 900
1273const GPE_HAIR_CYC_FIRST: i64 = 1
1274const GPE_HAIR_CYC_LAST: i64 = 3
1277const GPE_HAIR_CYC_SKIP: i64 = 0
1278const GPE_HAIR_CYC_LEN: i64 = 1
1279const GPE_HAIR_CYC_SLOTS: i64 = 2
1336const GPE_HAIR_DRIVE_FRAMES: i64 = 24
1343const GPE_HAIR_DRIVE_AMP_Q8: i64 = 32
1346const GPE_HAIR_SETTLE_PERIODS_MAX: i64 = 40
1545const GPE_HAIR_AMP_CAP: i64 = 3400
1571const span=(ztop-zbot)||1;
1709const GPE_RD_HTML_CAP: i64 = 262144
1710const GPE_RD_PLANS: i64 = 3
1711const GPE_RD_PLAN_GE: *u8 = "buildroot/knowledge/compare/gameengine.plan"
1712const GPE_RD_PLAN_GR: *u8 = "buildroot/knowledge/compare/graphics.plan"
1713const GPE_RD_PLAN_CS: *u8 = "buildroot/knowledge/compare/charsim.plan"

functions

41func rk_tier_ladder() -> *u8 { return tl_emit() }
called by 1: gpe_frame_hud calls 1: tl_emit
63func gpe_mt_declare(twin:*u8,bytes:i64,url:*u8,pages:i64,maximum:i64)->i64
89func gpe_mt_boot(out: *u8, p0: i64) -> i64
called by 1: gpe_frame_hud calls 3: gpe_apgpe_putsgpe_num
130func gpe_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
131func gpe_pn(v: i64) -> i64
202func gpe_slen(s: *u8) -> i64 { var k: i64 = 0; while s[k] != (0 as u8) { k = k + 1 } return k }
203func gpe_ap(out: *u8, pos: i64, s: *u8) -> i64
209func gpe_ap_n(out: *u8, pos: i64, s: *u8, n: i64) -> i64
236func rk_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
237func rk_err(s: *u8) -> i64 { sys_write(2, s, rk_slen(s)); return 0 }
238func rk_num(out: *u8, pos: i64, v: i64) -> i64
249func rk_find(buf: *u8, n: i64, from: i64, needle: *u8) -> i64
262func rk_js_str(out: *u8, pos: i64, src: *u8, n: i64) -> i64
278func rk_capture_wgsl(buf: *u8, ol: *i64) -> i64
294func rk_capture_layout(buf: *u8, ol: *i64) -> i64
298func rk_int_after(buf: *u8, n: i64, needle: *u8) -> i64
315func rk_uniform_offset(buf: *u8, n: i64, name: *u8) -> i64
334func rk_uniform_block(out: *u8, pos: i64) -> i64
376func rk_capture_world(buf: *u8, ol: *i64) -> i64
380func rk_world_span(buf: *u8, n: i64, begin: *u8, end: *u8, bo: *i64) -> i64
392func rk_world_block(out: *u8, pos: i64) -> i64
444func rk_capture_cast(buf: *u8, ol: *i64) -> i64
454func gpe_cast_identity(out:*u8,pos:i64,buf:*u8,n:i64,vo:*i64,fo:*i64)->i64
478func rk_lm_decimal(b:*u8,s:i64,e:i64)->i64
482func rk_lm_prop(b:*u8,s:i64,e:i64,key:*u8)->i64
489func rk_lm_row(b:*u8,s:i64,e:i64,r:*i64)->i64
505func rk_lm_null(out:*u8,pos:i64,name:*u8)->i64
510func rk_layout_obj(out:*u8,pos:i64,buf:*u8,n:i64,rowskey:*u8,sizekey:*u8,name:*u8)->i64
575func rk_cast_glsl(out:*u8,pos:i64,buf:*u8,n:i64)->i64
594func rk_eye_stage(out:*u8,pos:i64,buf:*u8,n:i64,begin:*u8,end:*u8,rc_key:*u8,name:*u8)->i64
602func rk_eye_block(out:*u8,pos:i64)->i64
632func rk_owned_new()->*NxBufOwned
636func rk_owned_close(b:*NxBufOwned)->i64
640func rk_capture_cast_owned(b:*NxBufOwned)->i64
648func rk_cast_block(out: *u8, pos: i64) -> i64
688func rk_webgpu_door(out: *u8, pos: i64) -> i64
742func gpe_facing_key(t: *NxJsonTok, key: *u8) -> i64
749func gpe_facing_parse(raw: *u8, n: i64, values: *i64) -> i64
787func gpe_facing_policy(out: *u8, pos: i64) -> i64
803func gpe_gpu_timing_policy(out: *u8, pos: i64) -> i64
862func gpe_prepared_catalogue(out:*u8,pos:i64)->i64
877func gpe_visitors_gpu(out: *u8,pos: i64) -> i64
883func gpe_emit_webgpu(out: *u8, pos: i64) -> i64
919func gpe_verify(out: *u8, n: i64) -> i64
1091func gpe_num(out: *u8, pos: i64, v: i64) -> i64
1113func gpe_sunt(out: *u8, pos: i64) -> i64
1133func gpe_npcs_emit(out: *u8, pos: i64, vnum: i64) -> i64
1193func gpe_build(wasm: *u8, wn: i64, title: *u8, native: *u8, ctrl: *u8, vnum: i64, out: *u8) -> i64
1234func gpe_hstr_pts() -> i64 { return GPE_HSTR_WORDS_PER_STRAND/GPE_AXES }
1235func gpe_hair_nseg() -> i64 { return gpe_hstr_pts() - 1 }
1236func gpe_hair_seglen() -> i64 { return SD_Q8 }
1244func gpe_hair_seed(st: *i64, n: i64, rigid: i64) -> i64
1285func gpe_hair_cycle(out: *i64) -> i64
1318func gpe_hair_cycle_at(slot: i64) -> i64
1350func gpe_hair_drive(t: i64) -> i64
1355func gpe_hair_frames() -> i64 { return GPE_HAIR_DRIVE_FRAMES }
1363func gpe_hair_chain_bake(tbl: *i64, rigid: i64) -> i64
1449func gpe_dress_runtime(out: *u8, pos: i64) -> i64
1476func gpe_hair_runtime(out: *u8, pos: i64) -> i64
1534func gpe_hair_npc_doors(out: *u8, pos: i64) -> i64
1550func gpe_hair_geometry(out: *u8, pos: i64) -> i64
1602func gpe_garment_draw(out: *u8, pos: i64) -> i64
1611func gpe_vb_find(b: *u8, n: i64, pat: *u8, from: i64) -> i64
1635func gpe_version_badge(out: *u8, pos: i64) -> i64
1714func gpe_rd_board(path: *u8, dom: *u8, since: *u8, recent: *ReleaseRecent, counts: *i64, read: *i64) -> i64
1724func gpe_release_block(out: *u8, pos: i64) -> i64
1793func gpe_frame_hud(out: *u8, pos: i64) -> i64
1815func gpe_sky_atmos(out: *u8, p: i64, src: *u8) -> i64
1819func gpe_demand_lifecycle(out: *u8, p0: i64) -> i64
1823func gpe_build_s(wasm: *u8, wn: i64, title: *u8, native: *u8, ctrl: *u8, vnum: i64, seed: i64, spec: *u8, out: *u8) -> i64