code wiki / _hdl_build / nx_asset_floor_gate.nx

nx_asset_floor_gate.nx

buildroot/runtime/_hdl_build/nx_asset_floor_gate.nx

30775 B580 linesdepth 3pulls 3 transitivereach 0 importersview sourcekind gate/prooftopic asset
docsdependenciesstructsconstsfunctions

about

nx_asset_floor_gate.nx -- THE ASSET FLOOR: measure our shipped character against a declared game-ready floor, and NAME WHAT IS MISSING. Operator 2026-08-02 pointed at a commercial game-ready character listing as "the floor we need to reach". That listing is behind a bot challenge and could not be read, so this gate does the honest version instead: it parses OUR OWN asset and reports the capability gaps a commercial game-ready character would carry. THE POINT IS THE GAP LIST, NOT A GREEN LIGHT. A gate that only says PASS/FAIL on triangle count would call our figure "game ready" while she ships with no face geometry, no breast bones and no blend shapes -- the exact defects the operator saw on screen. So every capability is REPORTED, present or absent, and the absent ones are the roadmap. Reads the NXA container directly (the format the browser loads): magic NXANIM01, u64 version, u64 section count, then 32-byte section headers {tag[4], _, off, wordlen, ck_lo, ck_hi}. Sections: VERT TRIS SKEL SKIN ANIM (required) + GVRT GTRI (garment) HSTR (hair) POSE (idle). license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 2 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_asset_floor_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gv_ctr sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_head gv_puts sys_write ↻ gv_puts ↻ sys_mmap ↻ sys_read_file sys_openat_rd sys_lseek sys_mmap ↻ sys_read sys_munmap sys_close gv_check gv_puts ↻ gv_verdict gv_note_bare_rate gv_bare_rate gv_at gv_obj_has_n gv_at ↻ gv_puts ↻ gv_num sys_mmap ↻

structs

none

consts

22const AF_PATH: *u8 = "sites/nishifamily/world/ref9d.nxa"
33const AF_MIDLINE: i64 = 3000
34const AF_HDR: i64 = 32
35const AF_SECHDR: i64 = 32
50const AF_RIG_CONF: *u8 = "knowledge/rigfloor_nxa.conf"
51const AF_DONOR_CONF: *u8 = "knowledge/rigfloor_msh.conf"
52const AF_CONTAINER_NXA: i64 = 1
53const AF_PERMIL: i64 = 1000
55const AF_BAND_UNOBS: i64 = 0
56const AF_BAND_OK: i64 = 1
57const AF_BAND_XCONT: i64 = 2
61const AF_FIX_VERTS: i64 = 7000
62const AF_FIX_TRIS: i64 = 14000
63const AF_FIX_JOINTS: i64 = 2
64const AF_FIX_NSEC: i64 = 3
65const AF_FIX_VERSION: i64 = 1
66const AF_WORD: i64 = 8
67const AF_ASCII_NL: i64 = 10
68const AF_ASCII_EQ: i64 = 61
69const AF_ASCII_ZERO: i64 = 48
70const AF_ASCII_NINE: i64 = 57
71const AF_DECIMAL: i64 = 10
72const AF_MISS: i64 = 0 - 1
73const AF_CORPUS_COMPLETE: i64 = 1
74const AF_TMPDIR_MODE: i64 = 493
78const AF_BUST_PERMIL_LO: i64 = 700
79const AF_BUST_PERMIL_HI: i64 = 790

functions

81func af_rd64(b: *u8, off: i64) -> i64
87func af_tag(b: *u8, off: i64, t: *u8) -> i64
called by 1: af_find
93func af_find(b: *u8, nsec: i64, t: *u8) -> i64
called by 2: af_countsmain calls 2: af_tagaf_rd64
105func af_conf_int(path: *u8, key: *u8, miss: i64) -> i64
154func af_rig_band(path: *u8, kmin: *u8, kmax: *u8, lo: *i64, hi: *i64) -> i64
called by 2: af_axismain calls 1: af_conf_int
167func af_in_band(v: i64, lo: i64, hi: i64) -> i64
called by 2: af_axismain
174func af_axis(name: *u8, tooth: *u8, v: i64, kmin: *u8, kmax: *u8, ctr: *i64) -> i64
195func af_wr64(b: *u8, off: i64, v: i64) -> i64
called by 1: af_write_fixture
204func af_write_fixture(path: *u8, nv: i64, nt: i64, nj: i64) -> i64
240func af_counts(path: *u8, out: *i64) -> i64
256func af_report(name: *u8, present: i64) -> i64
called by 1: main calls 1: gv_puts
263func main(argc: i64, argv: *i64) -> i64