nx_beach_npc_residency_canonical_gate_t44.nx source
↩ module page · 80 lines · 4276 B
1// ORIGINAL. Real Beach terrain, same source owner, signed entity save roundtrip.
2import "_hdl_build/nx_wasm_craft_journal_index_t21.nx"
3import "nx_gate_verdict.nx"
4func rg_check_shift(base: i64,dx: i64,dz: i64,ctr: *i64) -> i64 {
5 let m: *i64=mobp(base);let s: *i64=wst(base)
6 let n: i64=en_count(m);let rows: *i64=sys_mmap(MOB_CAP*4*8) as *i64
7 var k: i64=0
8 while k<n {
9 let h: i64=en_nth(m,k)
10 rows[k*4]=en_get(m,h,MC_X)+s[S_WOX]*256
11 rows[k*4+1]=en_get(m,h,MC_Z)+s[S_WOZ]*256
12 rows[k*4+2]=en_get(m,h,MC_Y)
13 rows[k*4+3]=wc_surface_source(base,en_get(m,h,MC_X),en_get(m,h,MC_Z))
14 k=k+1
15 }
16 let gen: i64=s[S_AGEN]
17 wc_shift(base,dx,dz)
18 var absolute: i64=1;var roots: i64=1;var terrain: i64=1;k=0
19 while k<n {
20 let h: i64=en_nth(m,k)
21 if rows[k*4]!=en_get(m,h,MC_X)+s[S_WOX]*256||rows[k*4+1]!=en_get(m,h,MC_Z)+s[S_WOZ]*256 { absolute=0 }
22 if rows[k*4+2]!=en_get(m,h,MC_Y) { roots=0 }
23 if wc_mob_resident(base,h)==1&&rows[k*4+3]>=0 {
24 if rows[k*4+3]!=wc_surface_source(base,en_get(m,h,MC_X),en_get(m,h,MC_Z)) { terrain=0 }
25 }
26 k=k+1
27 }
28 gv_check("shift preserves every absolute entity XZ" as *u8,absolute==1,ctr)
29 gv_check("shift preserves every physical root Y" as *u8,roots==1,ctr)
30 gv_check("overlapping resident terrain stays paired" as *u8,terrain==1,ctr)
31 var expected: i64=gen
32 if dx!=0||dz!=0 { expected=gen+1 }
33 gv_check("generation follows actual shift" as *u8,s[S_AGEN]==expected,ctr)
34 sys_munmap(rows as *u8,MOB_CAP*4*8)
35 return 0
36}
37func main() -> i64 {
38 let base: i64=sys_mmap(CRAFT_EXT_TOTAL) as i64
39 let restored: i64=sys_mmap(CRAFT_EXT_TOTAL) as i64
40 if base<=0||restored<=0 { return 2 }
41 let ctr: *i64=gv_ctr();gv_head("BEACH-NPC-WORLD-RESIDENCY" as *u8)
42 init_impl_v(base,BEACH_RELEASE_WORLD,CRAFT_DEFAULT_SEED)
43 var i: i64=0
44 while i<5 { wc_shift(base,0,SHIFT_STRIDE);i=i+1 }
45 let m: *i64=mobp(base);let h: i64=en_nth(m,1);let s: *i64=wst(base)
46 en_set(m,h,MC_X,13758);en_set(m,h,MC_Z,512);en_set(m,h,MC_Y,3503)
47 gv_check("exact observed starting terrain3503" as *u8,wc_surface_source(base,13758,512)==3503,ctr)
48 rg_check_shift(base,0,SHIFT_STRIDE,ctr)
49 gv_check("off-arena entity retained without clamping" as *u8,en_get(m,h,MC_Z)==(512-SHIFT_STRIDE*256)&&wc_mob_resident(base,h)==0,ctr)
50 let count: i64=en_count(m)
51 let y: i64=en_get(m,h,MC_Y);let x: i64=en_get(m,h,MC_X);let z: i64=en_get(m,h,MC_Z)
52 let needs: *i64=(base+O_NEED) as *i64
53 needs[4]=500;s[S_T]=18000+8-(h%8)
54 mob_tick(base)
55 gv_check("off-arena collision movement deferred without identity loss" as *u8,en_count(m)==count&&en_get(m,h,MC_X)==x&&en_get(m,h,MC_Z)==z&&en_get(m,h,MC_Y)==y,ctr)
56 gv_check("off-arena needs simulation continues" as *u8,needs[4]==502,ctr)
57 let aux: *i64=(base+O_MOBAUX) as *i64
58 gv_check("off-arena applied movement explicitly zero" as *u8,aux[3]==0&&aux[4]==0&&aux[5]==0,ctr)
59 s[S_CX]=WX*128;s[S_CZ]=WZ*128;s[S_CY]=wc_contact_floor_q(base,s[S_CX],s[S_CZ],WY-1)+EYE
60 let bytes: i64=wc_save_build(base)
61 init_impl_v(restored,BEACH_RELEASE_WORLD,CRAFT_DEFAULT_SEED)
62 let src: *u8=(base+O_SAVE) as *u8;let dst: *u8=(restored+O_SAVE) as *u8
63 i=0;while i<bytes { dst[i]=src[i];i=i+1 }
64 let load: i64=wc_save_apply_bytes(restored,bytes)
65 let rm: *i64=mobp(restored)
66 gv_check("real v6 save restores signed off-arena entity" as *u8,load==0&&en_valid(rm,h)==1&&en_get(rm,h,MC_X)==x&&en_get(rm,h,MC_Z)==z&&en_get(rm,h,MC_Y)==y&&wst(restored)[S_WOZ]==96,ctr)
67 rg_check_shift(restored,0,0-SHIFT_STRIDE,ctr)
68 gv_check("return restores original root and terrain same frame" as *u8,wc_mob_resident(restored,h)==1&&en_get(rm,h,MC_Z)==512&&en_get(rm,h,MC_Y)==wc_surface_source(restored,x,512),ctr)
69 rg_check_shift(restored,0,0-SHIFT_STRIDE,ctr)
70 rg_check_shift(restored,0,SHIFT_STRIDE,ctr)
71 rg_check_shift(restored,SHIFT_STRIDE,0,ctr)
72 rg_check_shift(restored,0-SHIFT_STRIDE,0,ctr)
73 let springs: *i64=(restored+O_SOFT) as *i64
74 let rs: *i64=wst(restored)
75 springs[0]=173;rs[S_HOK]=1
76 rg_check_shift(restored,0,0,ctr)
77 gv_check("zero shift leaves springs and interaction hit untouched" as *u8,springs[0]==173&&wst(restored)[S_HOK]==1,ctr)
78 sys_munmap(base as *u8,CRAFT_EXT_TOTAL);sys_munmap(restored as *u8,CRAFT_EXT_TOTAL)
79 return gv_verdict("BEACH-NPC-WORLD-RESIDENCY" as *u8,ctr,"Native source candidate; no served renderer or skinned sole acceptance" as *u8)
80}