nx_craft_hq_shift_gate.nx source
↩ module page · 53 lines · 1829 B
1// Beach fixture: retained terrain must remain identical through cache-origin shifts.
2import "nx_syscalls.nx"
3import "nx_wasm_craft.nx"
4import "nx_gate_verdict.nx"
5func hs_case(dx: i64, dz: i64) -> i64 {
6 let base: i64 = sys_mmap(CRAFT_EXT_TOTAL) as i64
7 if base <= 0 { return 1 }
8 init_impl_v(base, 2, 20260728)
9 let snap: *i64 = sys_mmap(WX*WZ*8) as *i64
10 if (snap as i64) <= 0 { return 1 }
11 var z: i64 = 0
12 while z < WZ {
13 var x: i64 = 0
14 while x < WX { snap[z*WX+x] = hq_get(base,x,z); x = x + 1 }
15 z = z + 1
16 }
17 wc_shift(base,dx,dz)
18 var mismatches: i64 = 0
19 var checked: i64 = 0
20 z = 0
21 while z < WZ {
22 var x: i64 = 0
23 while x < WX {
24 let sx: i64 = x + dx
25 let sz: i64 = z + dz
26 if sx >= 0 { if sx < WX { if sz >= 0 { if sz < WZ {
27 checked = checked + 1
28 if hq_get(base,x,z) != snap[sz*WX+sx] { mismatches = mismatches + 1 }
29 } } } }
30 x = x + 1
31 }
32 z = z + 1
33 }
34 gv_num(dx);sys_write(1," " as *u8,1);gv_num(dz)
35 sys_write(1," checked=" as *u8,9);gv_num(checked)
36 sys_write(1," mismatches=" as *u8,12);gv_num(mismatches);sys_write(1,"\n" as *u8,1)
37 sys_munmap(snap as *u8,WX*WZ*8)
38 sys_munmap(base as *u8,CRAFT_EXT_TOTAL)
39 if checked == 0 { return 1 }
40 if mismatches != 0 { return 1 }
41 return 0
42}
43func main(argc: i64, argv: *i64) -> i64 {
44 var failed: i64 = 0
45 failed = failed + hs_case(SHIFT_STRIDE,0)
46 failed = failed + hs_case(0-SHIFT_STRIDE,0)
47 failed = failed + hs_case(0,SHIFT_STRIDE)
48 failed = failed + hs_case(0,0-SHIFT_STRIDE)
49 failed = failed + hs_case(SHIFT_STRIDE,SHIFT_STRIDE)
50 failed = failed + hs_case(0-SHIFT_STRIDE,0-SHIFT_STRIDE)
51 failed = failed + hs_case(0,0)
52 return failed
53}