code wiki / _hdl_build / nx_diversity_veg_gate.nx
nx_diversity_veg_gate.nx source
↩ module page · 97 lines · 4889 B
1// nx_diversity_veg_gate.nx -- the FAST half of the R1 diversity proof (species + body plans; no world renders,
2// so it survives the degraded box). The BIOME half (4 world renders) is nx_diversity_gate T1 -- proven GREEN
3// 2026-07-10 (min pairwise L1 12,620,870) on the identical worldgen build; re-run it when the box is healthy.
4// T2 TREE SPECIES: 5-species grammar -> pairwise-distinct renders + dead leafless + conifer/broadleaf silhouettes differ
5// T3 CREATURE BODY PLANS: quadruped/bird/fish -> distinct part counts + pairwise-distinct renders
6// license_tier: ORIGINAL expect_exit: 0
7import "nx_syscalls.nx"
8import "nx_png.nx"
9import "nx_treegen.nx"
10import "nx_creaturegen.nx"
11
12func hw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
13func pn(v: i64) -> i64 { let b: *u8=sys_mmap(32) as *u8; var x: i64=v; var ng: i64=0; if x<0{ng=1;x=0-x} var i: i64=31; if x==0{b[i]=48 as u8;i=i-1} while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1} if ng==1{b[i]=45 as u8;i=i-1} sys_write(1,(b as i64+i+1) as *u8,31-i); return 0 }
14func L1(a: *i64, b: *i64, n: i64) -> i64 { var s: i64=0; var i: i64=0; while i<n { var d: i64=(a[i]&255)-(b[i]&255); if d<0{d=0-d} s=s+d; i=i+1 } return s }
15
16func main() -> i64 {
17 hw("=== nx_diversity_veg_gate -- species + body plans (fast half of R1) ===\n" as *u8)
18 var fails: i64 = 0
19 // ---- T2 TREE SPECIES ----
20 let TW: i64 = tg_w(); let TH: i64 = tg_h(); let tnpx: i64 = TW*TH
21 let TP: *i64 = sys_mmap(TG_CAP*TG_STR*8) as *i64
22 let sfb: *i64 = sys_mmap(5*tnpx*8) as *i64
23 var sp: i64 = 0
24 while sp < 5 {
25 let n: i64 = treegen_build_sp(TP, 9, sp)
26 treegen_render(TP, n, 300, 4, 210, 224, 238, (sfb as i64 + sp*tnpx*8) as *i64)
27 sp = sp + 1
28 }
29 var smin: i64 = 2000000000
30 var i: i64 = 0
31 while i < 5 {
32 var j: i64 = i + 1
33 while j < 5 {
34 let d: i64 = L1((sfb as i64 + i*tnpx*8) as *i64, (sfb as i64 + j*tnpx*8) as *i64, tnpx)
35 if d < smin { smin = d }
36 j = j + 1
37 }
38 i = i + 1
39 }
40 var deadgreen: i64 = 0
41 let dfb: *i64 = (sfb as i64 + 4*tnpx*8) as *i64
42 i = 0
43 while i < tnpx { let px: i64 = dfb[i]; let r: i64 = px&255; let g: i64 = (px>>8)&255; let bb: i64 = (px>>16)&255
44 if g > r + 14 { if g > bb + 14 { deadgreen = deadgreen + 1 } } i = i + 1 }
45 hw(" species: min pairwise L1 = "); pn(smin); hw(" dead-tree green px = "); pn(deadgreen); hw("\n" as *u8)
46 var t2: i64 = 0
47 if smin > 150000 { if deadgreen < 300 { t2 = 1 } }
48 if t2 == 1 { hw("T2 PASS 5-SPECIES GRAMMAR distinct + dead leafless\n" as *u8) }
49 else { fails=fails+1; hw("T2 FAIL species\n" as *u8) }
50 let sg: *i64 = sys_mmap(5*tnpx*8) as *i64
51 var y: i64 = 0
52 while y < TH { var x: i64=0; while x < TW { var k: i64=0; while k < 5 { sg[y*(TW*5)+k*TW+x] = sfb[k*tnpx + y*TW+x]; k=k+1 } x=x+1 } y=y+1 }
53 write_png(sg, TW*5, TH, "knowledge/nx_species.png" as *u8)
54
55 // ---- T3 CREATURE BODY PLANS ----
56 let AW: i64 = as_w(); let AH: i64 = as_h(); let anpx: i64 = AW*AH
57 let AP: *i64 = sys_mmap(96*AS_STRIDE*8) as *i64
58 let cfb: *i64 = sys_mmap(3*anpx*8) as *i64
59 let counts: *i64 = sys_mmap(3*8) as *i64
60 var p: i64 = 0
61 while p < 3 {
62 let n: i64 = creaturegen_build_plan(AP, 4, p)
63 counts[p] = n
64 var yaw: i64 = 4800
65 if p == 2 { yaw = 4200 }
66 var ccr: i64 = 150; var ccg: i64 = 116; var ccb: i64 = 84
67 if p == 1 { ccr=140; ccg=96; ccb=58 }
68 if p == 2 { ccr=110; ccg=128; ccb=150 }
69 anatstack_render(AP, n, yaw, 3, 1, 42, ccr, ccg, ccb, (cfb as i64 + p*anpx*8) as *i64)
70 p = p + 1
71 }
72 var cmin: i64 = 2000000000
73 i = 0
74 while i < 3 {
75 var j: i64 = i + 1
76 while j < 3 {
77 let d: i64 = L1((cfb as i64 + i*anpx*8) as *i64, (cfb as i64 + j*anpx*8) as *i64, anpx)
78 if d < cmin { cmin = d }
79 j = j + 1
80 }
81 i = i + 1
82 }
83 hw(" body plans: parts quad="); pn(counts[0]); hw(" bird="); pn(counts[1]); hw(" fish="); pn(counts[2]); hw(" min pairwise L1="); pn(cmin); hw("\n" as *u8)
84 var t3: i64 = 0
85 if counts[0] != counts[1] { if counts[1] != counts[2] { if cmin > 250000 { t3 = 1 } } }
86 if t3 == 1 { hw("T3 PASS 3 BODY PLANS distinct\n" as *u8) }
87 else { fails=fails+1; hw("T3 FAIL body plans\n" as *u8) }
88 let cg2: *i64 = sys_mmap(3*anpx*8) as *i64
89 y = 0
90 while y < AH { var x: i64=0; while x < AW { var k: i64=0; while k < 3 { cg2[y*(AW*3)+k*AW+x] = cfb[k*anpx + y*AW+x]; k=k+1 } x=x+1 } y=y+1 }
91 write_png(cg2, AW*3, AH, "knowledge/nx_bodyplans.png" as *u8)
92
93 if fails == 0 { hw("DIVERSITY-VEG-GATE GREEN -- species + body plans measured-distinct (galleries refreshed)\n" as *u8); sys_exit(0); return 0 }
94 hw("DIVERSITY-VEG-GATE RED fails="); pn(fails); hw("\n" as *u8)
95 sys_exit(1)
96 return 1
97}