code wiki / _hdl_build / nx_wasm_breeders_gate.nx

nx_wasm_breeders_gate.nx source

↩ module page · 149 lines · 6289 B

1// nx_wasm_breeders_gate.nx -- verifies the SOVEREIGN breeders build NATIVELY. There is no browser here, 2// so rendering the identical base-relative code to a PNG IS the proof the wasm logic + raster are right 3// (the established "verify wasm by native PNG" loop). Same code, base = mmap instead of 0. 4// license_tier: ORIGINAL expect_exit: 0 5import "nx_wasm_breeders.nx" 6import "nx_png_write.nx" 7 8func vw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 9func vn(v: i64) -> i64 { 10 let t: *u8 = sys_mmap(32) as *u8 11 var m: i64 = v; var w: i64 = 0 12 if m<0 { t[w]=45 as u8; w=w+1; m=0-m } 13 if m==0 { t[w]=48 as u8; sys_write(1,t,w+1); return 0 } 14 let d: *u8 = sys_mmap(32) as *u8 15 var k: i64=0 16 while m>0 { d[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } 17 var j: i64=0 18 while j<k { t[w]=d[k-1-j]; w=w+1; j=j+1 } 19 sys_write(1,t,w); return 0 20} 21func emit(base: i64, path: *u8) -> i64 { 22 let rgbbuf: *u8 = sys_mmap(W*H*3) as *u8 23 let f: *i64 = fb(base) 24 var p: i64 = 0 25 while p < W*H { 26 let v: i64 = f[p] 27 rgbbuf[p*3] = (v & 255) as u8 28 rgbbuf[p*3+1] = ((v >> 8) & 255) as u8 29 rgbbuf[p*3+2] = ((v >> 16) & 255) as u8 30 p = p + 1 31 } 32 return nx_png_write_rgb(path, rgbbuf, W, H) 33} 34func main() -> i64 { 35 let base: i64 = sys_mmap(WORDS*8) as i64 36 var pass: i64 = 0 37 let total: i64 = 7 38 vw("=== nx_wasm_breeders native verify (base-relative; the SAME code runs in wasm) ===\n" as *u8) 39 40 init_impl(base, 20260727) 41 // T1 the world generated with a sane tile mix (not the 64%-water class of failure) 42 var wcount: i64 = 0 43 var tcount: i64 = 0 44 var gcount: i64 = 0 45 var ty: i64 = 0 46 while ty < MH { var tx: i64 = 0 47 while tx < MW { let t: i64 = tile(base,tx,ty) 48 if t==T_WATER {wcount=wcount+1} if t==T_TREE {tcount=tcount+1} if t==T_GRASS {gcount=gcount+1} 49 tx=tx+1 } 50 ty=ty+1 } 51 let tot: i64 = MW*MH 52 vw("T1 tiles grass=" as *u8); vn(gcount*1000/tot); vw(" tree=" as *u8); vn(tcount*1000/tot) 53 vw(" water=" as *u8); vn(wcount*1000/tot); vw(" permil\n" as *u8) 54 if gcount*1000/tot > 200 { if tcount > 0 { if wcount*1000/tot < 500 { pass=pass+1 } } } 55 56 // T2 render a real frame and prove it is non-empty and varied 57 render_impl(base) 58 let f: *i64 = fb(base) 59 var distinct: i64 = 0 60 var seen: *i64 = sys_mmap(4096*8) as *i64 61 var q: i64 = 0 62 while q < 4096 { seen[q]=0; q=q+1 } 63 var p2: i64 = 0 64 while p2 < W*H { 65 let k: i64 = ((f[p2] & 255)/16)*256 + (((f[p2]>>8)&255)/16)*16 + ((f[p2]>>16)&255)/16 66 if seen[k%4096]==0 { seen[k%4096]=1; distinct=distinct+1 } 67 p2 = p2 + 1 68 } 69 vw("T2 frame distinct colours=" as *u8); vn(distinct); vw("\n" as *u8) 70 if distinct > 40 { pass = pass + 1 } 71 emit(base, "knowledge/nx_wasm_breeders_start.png" as *u8) 72 73 // T3 movement actually moves and walls actually block 74 let s: *i64 = st(base) 75 let x0: i64 = s[S_PX] 76 var m: i64 = 0 77 while m < 12 { tick_impl(base, 3); m = m + 1 } 78 vw("T3 moved dx=" as *u8); vn(s[S_PX]-x0); vw("\n" as *u8) 79 if s[S_PX] != x0 { pass = pass + 1 } 80 81 // T4 MENDEL: two heterozygous founders -> 1:2:1 on the coat locus, MEASURED 82 let ga: i64 = founder_g(11) 83 let gb: i64 = founder_g(29) 84 var c0: i64 = 0 85 var c1: i64 = 0 86 var c2: i64 = 0 87 var n: i64 = 0 88 while n < 1200 { 89 let kid: i64 = gcross(base, ga, gb) 90 let ph: i64 = phen(kid, G_COAT) 91 if ph==0 {c0=c0+1} if ph==1 {c1=c1+1} if ph==2 {c2=c2+1} 92 n = n + 1 93 } 94 vw("T4 coat white/rose/crimson = " as *u8); vn(c0*1000/1200); vw("/" as *u8); vn(c1*1000/1200) 95 vw("/" as *u8); vn(c2*1000/1200); vw(" permil (textbook 250/500/250)\n" as *u8) 96 var d1: i64 = c1*1000/1200 - 500 97 if d1 < 0 { d1 = 0 - d1 } 98 if d1 <= 70 { if c0 > 0 { if c2 > 0 { pass = pass + 1 } } } 99 100 // T5 walk a few steps then render a second frame -- proves animation/camera actually change pixels 101 var ck1: i64 = 0 102 var z: i64 = 0 103 while z < W*H { ck1 = (ck1 ^ f[z]) * 3 % 1000000007; z = z + 40 } 104 var mv: i64 = 0 105 while mv < 20 { tick_impl(base, 1); mv = mv + 1 } 106 render_impl(base) 107 var ck2: i64 = 0 108 var z2: i64 = 0 109 while z2 < W*H { ck2 = (ck2 ^ f[z2]) * 3 % 1000000007; z2 = z2 + 40 } 110 vw("T5 frame checksum moved " as *u8); vn(ck1); vw(" -> " as *u8); vn(ck2); vw("\n" as *u8) 111 if ck1 != ck2 { pass = pass + 1 } 112 emit(base, "knowledge/nx_wasm_breeders_walk.png" as *u8) 113 114 // T6 CAUSAL INPUT (F1102 wiring): the device-agnostic layer drives the game -- D held through 115 // step_impl moves the player, release stops him; and the organ's input arena matches the lib. 116 let base2: i64 = sys_mmap(WORDS*8) as i64 117 init_impl(base2, 20260727) 118 let s6: *i64 = st(base2) 119 let x6: i64 = s6[S_PX] 120 ia_key(inp(base2), 68, 1) 121 var m6: i64 = 0 122 while m6 < 12 { step_impl(base2); m6 = m6 + 1 } 123 let moved: i64 = s6[S_PX] - x6 124 ia_key(inp(base2), 68, 0) 125 step_impl(base2) 126 let stay: i64 = s6[S_PX] - x6 - moved 127 vw("T6 D-held dx=" as *u8); vn(moved); vw(" after-release ddx=" as *u8); vn(stay) 128 vw(" ia_words=" as *u8); vn(ia_words()); vw("\n" as *u8) 129 if moved > 0 { if stay == 0 { if ia_words() == 64 { pass = pass + 1 } } } 130 131 // T7 EDGE HONESTY through the WIRED loop: E held across two steps fires interact ONCE. 132 // fresh arena so no wild is in range: the no-target branch sets msgt=90 on the edge step, and 133 // the second step only DECREMENTS it -> 89. A repeat-firing layer would re-arm it to 90. 134 let base3: i64 = sys_mmap(WORDS*8) as i64 135 init_impl(base3, 20260727) 136 let s7: *i64 = st(base3) 137 ia_key(inp(base3), 69, 1) 138 step_impl(base3) 139 step_impl(base3) 140 vw("T7 msg=" as *u8); vn(s7[S_MSG]); vw(" msgt=" as *u8); vn(s7[S_MSGT]) 141 vw(" (1/89 = one no-target interact, no held-repeat)\n" as *u8) 142 if s7[S_MSG] == 1 { if s7[S_MSGT] == 89 { pass = pass + 1 } } 143 144 vw("nx_wasm_breeders_gate: " as *u8); vn(pass); vw("/" as *u8); vn(total); vw("\n" as *u8) 145 if pass == total { vw("VERDICT verdict=GREEN -- sovereign breeders verified natively; ready for the wasm chain\n" as *u8); sys_exit(0) } 146 vw("VERDICT RED\n" as *u8) 147 sys_exit(1) 148 return 0 149}