code wiki / _hdl_build / nx_detail_gate.nx
nx_detail_gate.nx source
↩ module page · 157 lines · 6927 B
1// nx_detail_gate.nx -- gate for the DETAIL ARCHITECTURE (subdiv+displacement engine + anatomy registry).
2// T1 SUBDIVISION exact: box 8v/12t -> L1 26v/48t -> L2 98v/192t (midpoint dedup = watertight, counts PROVE it)
3// T2 DETAIL FIELD: displace L2 with a bump field (density 96/256, amp 40) -> bumped-vert count in the
4// binomial ballpark, every bump ALONG the normal, magnitude <= amp
5// T3 CRACK-FREE LAW: displacing the SAME geometry twice (same seed) -> byte-identical; different seed -> differs
6// T4 ANATOMY REGISTRY: rows for nipple/areola/MONTGOMERY-GLANDS/vulva/clitoris/anus/pubic-hair; NXA1 pack
7// round-trips byte-exact; corrupt magic REJECTED (anatomy packs = mod-economy content)
8// T5 STL: the subdivided+displaced mesh exports STL (9684B for 192 tris) -- detail geometry is PRINTABLE too
9// license_tier: ORIGINAL expect_exit: 0
10import "nx_syscalls.nx"
11import "nx_mesh3.nx"
12import "nx_subdiv.nx"
13import "nx_anatomy.nx"
14
15func hw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
16func pn(v: i64) -> i64 {
17 let b: *u8 = sys_mmap(32) as *u8
18 var x: i64 = v
19 var neg: i64 = 0
20 if x < 0 { neg = 1; x = 0 - x }
21 var i: i64 = 31
22 if x == 0 { b[i] = 48 as u8; i = i - 1 }
23 while x > 0 { b[i] = (48 + x % 10) as u8; x = x / 10; i = i - 1 }
24 if neg == 1 { b[i] = 45 as u8; i = i - 1 }
25 sys_write(1, (b as i64 + i + 1) as *u8, 31 - i)
26 return 0
27}
28func meshsum(mesh: i64) -> i64 {
29 let h: *i64 = m3_hdr(mesh)
30 var s: i64 = 0
31 var i: i64 = 0
32 while i < h[0] {
33 let v: *i64 = m3_vert(mesh, i)
34 s = s * 31 + v[0]
35 s = s * 31 + v[1]
36 s = s * 31 + v[2]
37 i = i + 1
38 }
39 return s
40}
41
42func main() -> i64 {
43 var fails: i64 = 0
44
45 // T1 subdivision counts
46 let m0: i64 = sys_mmap(m3_bytes()) as i64
47 m3_init(m0)
48 m3_box(m0, 0, 0, 0, 512, 512, 512)
49 let m1: i64 = sys_mmap(m3_bytes()) as i64
50 sd_subdivide(m0, m1)
51 let m2: i64 = sys_mmap(m3_bytes()) as i64
52 sd_subdivide(m1, m2)
53 let h1: *i64 = m3_hdr(m1)
54 let h2: *i64 = m3_hdr(m2)
55 var t1: i64 = 1
56 if h1[0] != 26 { t1 = 0 }
57 if h1[1] != 48 { t1 = 0 }
58 if h2[0] != 98 { t1 = 0 }
59 if h2[1] != 192 { t1 = 0 }
60 if t1 == 1 { hw("T1 PASS subdivision exact: 8v/12t -> 26v/48t -> 98v/192t (dedup counts PROVE watertight)\n" as *u8) }
61 else { hw("T1 FAIL L1=" as *u8); pn(h1[0]); hw("v/" as *u8); pn(h1[1]); hw("t L2=" as *u8); pn(h2[0]); hw("v/" as *u8); pn(h2[1]); hw("t\n" as *u8); fails = fails + 1 }
62
63 // T2 detail field
64 let presum: i64 = meshsum(m2)
65 let pre: *i64 = sys_mmap(98 * 24 + 64) as *i64
66 var i: i64 = 0
67 while i < h2[0] {
68 let v: *i64 = m3_vert(m2, i)
69 pre[i * 3] = v[0]
70 pre[i * 3 + 1] = v[1]
71 pre[i * 3 + 2] = v[2]
72 i = i + 1
73 }
74 let nrm: *i64 = sys_mmap(98 * 24 + 64) as *i64
75 let bumped: i64 = sd_displace(m2, 96, 40, 12345, nrm)
76 var t2: i64 = 1
77 if bumped < 20 { t2 = 0 }
78 if bumped > 60 { t2 = 0 } // ~98*96/256 = 36.75 expected
79 var maxmove: i64 = 0
80 i = 0
81 while i < h2[0] {
82 let v: *i64 = m3_vert(m2, i)
83 let dx: i64 = v[0] - pre[i * 3]
84 let dy: i64 = v[1] - pre[i * 3 + 1]
85 let dz: i64 = v[2] - pre[i * 3 + 2]
86 var mv: i64 = dx
87 if dy > mv { mv = dy }
88 if dz > mv { mv = dz }
89 if mv > maxmove { maxmove = mv }
90 i = i + 1
91 }
92 if maxmove > 41 { t2 = 0 }
93 if maxmove < 10 { t2 = 0 }
94 if t2 == 1 { hw("T2 PASS detail field: " as *u8); pn(bumped); hw("/98 verts bumped (expected ~37 at density 96/256), max move " as *u8); pn(maxmove); hw(" <= amp 40 -- gland/pore geometry as {density,amp,seed} DATA\n" as *u8) }
95 else { hw("T2 FAIL bumped=" as *u8); pn(bumped); hw(" maxmove=" as *u8); pn(maxmove); hw("\n" as *u8); fails = fails + 1 }
96
97 // T3 crack-free determinism: same geometry + same seed -> identical; different seed -> differs
98 let m2b: i64 = sys_mmap(m3_bytes()) as i64
99 sd_subdivide(m1, m2b)
100 sd_displace(m2b, 96, 40, 12345, nrm)
101 var t3: i64 = 1
102 if meshsum(m2b) != meshsum(m2) { t3 = 0 }
103 let m2c: i64 = sys_mmap(m3_bytes()) as i64
104 sd_subdivide(m1, m2c)
105 sd_displace(m2c, 96, 40, 777, nrm)
106 if meshsum(m2c) == meshsum(m2) { t3 = 0 }
107 if t3 == 1 { hw("T3 PASS crack-free law: same seed BYTE-IDENTICAL (position-hashed), different seed differs\n" as *u8) }
108 else { hw("T3 FAIL\n" as *u8); fails = fails + 1 }
109
110 // T4 anatomy registry + NXA1 round-trip
111 let an: i64 = sys_mmap(an_bytes()) as i64
112 an_init(an)
113 an_add(an, AF_NIPPLE, 1, 300, 80, 500, 21, 3, 0, 0, 0)
114 an_add(an, AF_AREOLA, 1, 300, 80, 480, 22, 2, 0, 0, 0)
115 an_add(an, AF_MONTGOMERY, 1, 300, 80, 480, 0, 3, 28, 22, 4242) // the glands: bump field on the areola
116 an_add(an, AF_VULVA, 2, 0, 0 - 200, 350, 30, 4, 0, 0, 0)
117 an_add(an, AF_CLITORIS, 2, 0, 0 - 180, 380, 31, 4, 0, 0, 0)
118 an_add(an, AF_LABIA_MINORA, 2, 0, 0 - 200, 360, 32, 4, 12, 10, 91)
119 an_add(an, AF_ANUS, 2, 0, 0 - 260, 0 - 80, 33, 3, 18, 8, 55)
120 an_add(an, AF_PUBIC_HAIR, 2, 0, 0 - 140, 340, 0, 0, 140, 300, 7) // density/length -> the strand system
121 an_add(an, AF_SKIN_PORES, 0, 0, 0, 0, 0, 2, 200, 4, 1)
122 let blob: *u8 = sys_mmap(8192) as *u8
123 let blen: i64 = an_save(an, blob)
124 let an2: i64 = sys_mmap(an_bytes()) as i64
125 let n2: i64 = an_load(an2, blob, blen)
126 var t4: i64 = 1
127 if n2 != 9 { t4 = 0 }
128 // byte-exact row compare
129 var diff: i64 = 0
130 i = 0
131 while i < 9 {
132 let ra: *i64 = an_row(an, i)
133 let rb: *i64 = an_row(an2, i)
134 var f: i64 = 0
135 while f < 14 {
136 if ra[f] != rb[f] { diff = diff + 1 }
137 f = f + 1
138 }
139 i = i + 1
140 }
141 if diff != 0 { t4 = 0 }
142 blob[0] = 88 as u8
143 if an_load(an2, blob, blen) != 0 - 1 { t4 = 0 }
144 if t4 == 1 { hw("T4 PASS anatomy registry: 9 features (nipple/areola/MONTGOMERY/vulva/clitoris/labia/anus/pubic-hair/pores) as DATA rows; NXA1 pack " as *u8); pn(blen); hw("B round-trips byte-exact; corrupt magic REJECTED\n" as *u8) }
145 else { hw("T4 FAIL n2=" as *u8); pn(n2); hw(" diff=" as *u8); pn(diff); hw("\n" as *u8); fails = fails + 1 }
146
147 // T5 STL of the detailed mesh
148 let stl: i64 = m3_write_stl(m2, "knowledge/nx_detail_box.stl" as *u8)
149 var t5: i64 = 1
150 if stl != 84 + 192 * 50 { t5 = 0 }
151 if t5 == 1 { hw("T5 PASS detailed mesh exports STL (" as *u8); pn(stl); hw("B, 192 tris) -- subdivided+displaced geometry is printable\n" as *u8) }
152 else { hw("T5 FAIL stl=" as *u8); pn(stl); hw("\n" as *u8); fails = fails + 1 }
153
154 if fails == 0 { hw("VERDICT GREEN: detail architecture 5/5 -- watertight subdivision x4/level + gland-class bump fields as {density,amp,seed} DATA + anatomy features as NXA1 packs\n" as *u8) }
155 else { hw("VERDICT RED fails=" as *u8); pn(fails); hw("\n" as *u8) }
156 return fails
157}