code wiki / (root) / nx_inspection_camera_bounds_gate_t181.nx

nx_inspection_camera_bounds_gate_t181.nx source

↩ module page · 95 lines · 7614 B

1// nx_inspection_camera_bounds_gate_t181.nx -- Verifies camera bounds and inspection logic consistency in the game world. 2import "_hdl_build/nx_wasm_craft_inspection_bounds_t181.nx" 3import "nx_gate_verdict.nx" 4func ic_copy(dst:*u8,src:*u8,n:i64)->i64{var i:i64=0;while i<n{dst[i]=src[i];i=i+1};return 0} 5func ic_same(a:*u8,b:*u8,n:i64)->i64{var i:i64=0;while i<n{if a[i]!=b[i]{return 0};i=i+1};return 1} 6func ic_corners_visible(base:i64)->i64{ 7 let v:*i64=wc_inspect(base);let s:*i64=wst(base) 8 let a:i64=v[IC_YAW];let p:i64=v[IC_PITCH] 9 let sa:i64=it_sin4096(a);let ca:i64=it_cos4096(a);let sp:i64=it_sin4096(p);let cp:i64=it_cos4096(p) 10 var i:i64=0 11 while i<8{ 12 var x:i64=v[IC_HW];var y:i64=v[IC_HH];var z:i64=v[IC_HD] 13 if (i&1)==0{x=0-x};if (i&2)==0{y=0-y};if (i&4)==0{z=0-z} 14 x=x+v[IC_TX]-v[IC_X];y=y+v[IC_TY]-v[IC_Y];z=z+v[IC_TZ]-v[IC_Z] 15 let forward:i64=x*(sa*cp/4096)+y*sp+z*(ca*cp/4096) 16 var right:i64=x*ca-z*sa;if right<0{right=0-right} 17 var up:i64=x*(0-sa*sp/4096)+y*cp+z*(0-ca*sp/4096);if up<0{up=0-up} 18 if forward<=0||right>forward||up*s[S_RESW]>forward*s[S_RESH]{return 0} 19 i=i+1 20 };return 1 21} 22func main()->i64{ 23 let base:i64=sys_mmap(CRAFT_EXT_TOTAL+WASM_PAGE_BYTES) as i64;if base<=0{return 3} 24 if init_impl_v(base,BEACH_RELEASE_WORLD,CRAFT_DEFAULT_SEED)!=0{return 3} 25 let s:*i64=wst(base);s[S_RESW]=W;s[S_RESH]=H 26 let pass:*i64=gv_ctr();let snap:*u8=sys_mmap(64*8);let inp:*u8=sys_mmap(64*8) 27 ic_copy(snap,s as *u8,64*8);ic_copy(inp,winp(base) as *u8,64*8) 28 let save:*u8=sys_mmap(SAVE_LEN);wc_save_build(base);ic_copy(save,(base+O_SAVE) as *u8,SAVE_LEN) 29 let ray:*i64=sys_mmap(5*8) as *i64;let ray2:*i64=sys_mmap(5*8) as *i64 30 let before:i64=wray(base,0,0-4096,0,MAXSTEPS,ray) 31 gv_check("named-view-storage-disjoint",O_INSPECTION>=O_NXA_LOCOMOTION+8&&O_SAVE==O_INSPECTION+INSPECTION_WORDS*8&&CRAFT_EXT_TOTAL==O_SAVE+SAVE_LEN&&O_WCM==CRAFT_EXT_TOTAL,pass) 32 gv_check("inactive-view-is-player",wc_inspection_active(base)==0&&wc_view(base,0)==s[S_CX]&&wc_view(base,4)==s[S_PITCH],pass) 33 let framed:i64=wc_inspection_frame(base,0,1,0,256,0,128,256,128) 34 gv_check("native-body-frame-accepted",framed==1&&wc_inspection_active(base)==1,pass) 35 let v:*i64=wc_inspect(base);let h:i64=en_nth(mobp(base),0) 36 gv_check("target-is-selected-actor",v[IC_TX]==en_get(mobp(base),h,MC_X)&&v[IC_TY]==en_get(mobp(base),h,MC_Y)+256,pass) 37 let minfit:i64=v[IC_DISTANCE] 38 gv_check("framing-distance-derived-from-aspect",ic_corners_visible(base)==1,pass) 39 gv_check("physical-state-unchanged-on-open",ic_same(snap,s as *u8,64*8)&&ic_same(inp,winp(base) as *u8,64*8),pass) 40 gv_check("view-origin-separate",wc_view(base,0)!=s[S_CX]||wc_view(base,1)!=s[S_CY]||wc_view(base,2)!=s[S_CZ],pass) 41 pack_uniforms_impl(base) 42 let u:*u8=(base+O_URAW) as *u8 43 gv_check("packed-gpu-camera-is-inspection",ur_r32(u,UR_CAMX)==wc_view(base,0)&&ur_r32(u,UR_CAMY)==wc_view(base,1)&&ur_r32(u,UR_CAMZ)==wc_view(base,2),pass) 44 gv_check("packed-gpu-angles-is-inspection",ur_r32(u,UR_YAW)==wc_view(base,3)&&ur_r32(u,UR_PITCH)==wc_view(base,4),pass) 45 let after:i64=wray(base,0,0-4096,0,MAXSTEPS,ray2) 46 gv_check("gameplay-ray-origin-unchanged",before==after&&ic_same(ray as *u8,ray2 as *u8,5*8),pass) 47 gv_check("orbit-does-not-change-player",wc_inspection_orbit(base,IT_PI/4,0)==1&&ic_same(snap,s as *u8,64*8),pass) 48 gv_check("native-face-frame-accepted",wc_inspection_frame(base,0,2,0,384,0,32,48,32)==1,pass) 49 gv_check("face-distance-closer-than-body",v[IC_DISTANCE]<minfit,pass) 50 wc_save_build(base) 51 gv_check("save-image-byte-identical-during-inspection",ic_same(save,(base+O_SAVE) as *u8,SAVE_LEN),pass) 52 gv_check("invalid-actor-refused",wc_inspection_frame(base,MOB_CAP,1,0,256,0,128,256,128)<0,pass) 53 gv_check("invalid-extent-refused",wc_inspection_frame(base,0,1,0,256,0,128,0,128)<0,pass) 54 gv_check("invalid-orbit-refused",wc_inspection_orbit(base,IT_PI+1,0)<0,pass) 55 gv_check("refusals-retain-existing-view",wc_inspection_active(base)==1&&v[IC_MODE]==2,pass) 56 wc_inspection_end(base) 57 gv_check("close-restores-gameplay-view",wc_inspection_active(base)==0&&wc_view(base,0)==s[S_CX]&&wc_view(base,1)==s[S_CY]&&wc_view(base,2)==s[S_CZ]&&wc_view(base,3)==s[S_YAW]&&wc_view(base,4)==s[S_PITCH],pass) 58 gv_check("open-orbit-close-player-and-input-unchanged",ic_same(snap,s as *u8,64*8)&&ic_same(inp,winp(base) as *u8,64*8),pass) 59 wc_inspection_frame(base,0,1,0,256,0,128,256,128);s[S_AGEN]=s[S_AGEN]+1 60 gv_check("world-generation-invalidates-inspection",wc_inspection_active(base)==0&&wc_view(base,0)==s[S_CX],pass) 61 s[S_AGEN]=s[S_AGEN]-1;wc_inspection_end(base) 62 s[S_RESW]=2160;s[S_RESH]=3840 63 gv_check("portrait-canvas-beyond-cpu-size-accepted",wc_inspection_frame(base,0,1,0,256,0,128,256,128)==1,pass) 64 gv_check("portrait-fit-derived-from-actual-aspect",ic_corners_visible(base)==1,pass) 65 gv_check("oblique-yaw-pitch-orbit-admitted",wc_inspection_orbit(base,IT_PI/4,IT_PI/8)==1,pass) 66 gv_check("all-eight-oblique-corners-fit-actual-view",ic_corners_visible(base)==1,pass) 67 gv_check("reverse-oblique-orbit-admitted",wc_inspection_orbit(base,0-IT_PI/3,0-IT_PI/6)==1,pass) 68 gv_check("reverse-oblique-corners-fit-actual-view",ic_corners_visible(base)==1,pass) 69 wc_inspection_end(base) 70 gv_check("required-memory-covers-view",WASM_PAGES_REQ*WASM_PAGE_BYTES>=CRAFT_EXT_TOTAL,pass) 71 72 s[S_RESW]=W;s[S_RESH]=H 73 gv_check("explicit-world-bounds-accepted",wc_inspection_bounds(base,1024,512,768,128,256,96,IT_PI/6)==1,pass) 74 gv_check("explicit-tag-has-no-resident",v[IC_MODE]==3&&v[IC_ACTOR]==(0-1)&&v[IC_HANDLE]==IT_PI/6&&wc_inspection_active(base)==1,pass) 75 gv_check("explicit-all-corners-fit",ic_corners_visible(base)==1,pass) 76 let viewcopy:*u8=sys_mmap(INSPECTION_WORDS*8);ic_copy(viewcopy,v as *u8,INSPECTION_WORDS*8) 77 gv_check("explicit-invalid-heading-refused",wc_inspection_bounds(base,1024,512,768,128,256,96,IT_PI+1)<0,pass) 78 gv_check("explicit-invalid-bounds-refused",wc_inspection_bounds(base,1024,512,768,128,0,96,0)<0,pass) 79 gv_check("explicit-invalid-target-refused",wc_inspection_bounds(base,WX*256+1,512,768,128,256,96,0)<0,pass) 80 gv_check("explicit-refusal-preserves-complete-view",ic_same(viewcopy,v as *u8,INSPECTION_WORDS*8),pass) 81 gv_check("explicit-orbit-fits",wc_inspection_orbit(base,IT_PI/4,IT_PI/8)==1&&ic_corners_visible(base)==1,pass) 82 let oldorbit:i64=v[IC_ORBIT] 83 gv_check("explicit-updated-bounds-retain-orbit",wc_inspection_bounds(base,1280,640,512,160,288,120,0-IT_PI/5)==1&&v[IC_ORBIT]==oldorbit&&ic_corners_visible(base)==1,pass) 84 s[S_RESW]=2160;s[S_RESH]=3840 85 gv_check("explicit-portrait-fit",wc_inspection_bounds(base,1280,640,512,160,288,120,0-IT_PI/5)==1&&ic_corners_visible(base)==1,pass) 86 s[S_RESW]=W;s[S_RESH]=H 87 gv_check("explicit-player-and-input-unchanged",ic_same(snap,s as *u8,64*8)&&ic_same(inp,winp(base) as *u8,64*8),pass) 88 wc_save_build(base);gv_check("explicit-save-image-unchanged",ic_same(save,(base+O_SAVE) as *u8,SAVE_LEN),pass) 89 s[S_AGEN]=s[S_AGEN]+1;gv_check("explicit-generation-invalidates",wc_inspection_active(base)==0,pass);s[S_AGEN]=s[S_AGEN]-1 90 wc_inspection_bounds(base,1024,512,768,128,256,96,0) 91 gv_check("explicit-to-resident-clears-tag-and-orbit",wc_inspection_frame(base,0,1,0,256,0,128,256,128)==1&&v[IC_MODE]==1&&v[IC_ACTOR]==0&&v[IC_HANDLE]==en_nth(mobp(base),0)&&v[IC_ORBIT]==0,pass) 92 wc_inspection_bounds(base,1024,512,768,128,256,96,0);wc_inspection_end(base) 93 gv_check("explicit-close-restores-player-view",wc_inspection_active(base)==0&&wc_view(base,0)==s[S_CX]&&wc_view(base,4)==s[S_PITCH],pass) 94 return gv_verdict("INSPECTION-CAMERA",pass,"native view ownership, geometry fit and physical/save/input separation; actual model closeup remains browser qualification") 95}