code wiki / (root) / nx_beach_npc_residency_gate_t44.nx

nx_beach_npc_residency_gate_t44.nx source

↩ module page · 80 lines · 4272 B

1// ORIGINAL. Real Beach terrain, same source owner, signed entity save roundtrip. 2import "_hdl_build/nx_wasm_craft_residency_t44.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}