code wiki / (root) / nx_gait_turn_gate_t139.nx

nx_gait_turn_gate_t139.nx source

↩ module page · 309 lines · 17264 B

1// nx_gait_turn_gate_t139.nx -- Validates and initializes a gait animation asset with specific SHA256 checksum and configuration parameters. 2import "nx_syscalls.nx" 3import "nx_nxa.nx" 4import "nx_sha256.nx" 5import "nx_gate_verdict.nx" 6import "_hdl_build/nx_wasm_craft_move_t72.nx" 7func main(argc:i64,argv:*i64)->i64 { 8 let ctr:*i64=gv_ctr() 9 if argc<2 {return 2} 10 let path:*u8=argv[1] as *u8 11 let fd:i64=sys_openat_rd(path) 12 if fd<0 {return 3} 13 let bytes:i64=12449344 14 let b:*u8=sys_mmap(bytes) 15 var off:i64=0 16 while off<bytes {let n:i64=sys_read(fd,((b as i64)+off) as *u8,bytes-off);if n<=0 {sys_close(fd);return 4};off=off+n} 17 sys_close(fd) 18 let digest:*u8=sys_mmap(32) 19 sha256_digest(b,bytes,digest) 20 var mismatch:i64=0 21 if digest[0] != 49 as u8 {mismatch=mismatch+1} 22 if digest[1] != 119 as u8 {mismatch=mismatch+1} 23 if digest[2] != 129 as u8 {mismatch=mismatch+1} 24 if digest[3] != 52 as u8 {mismatch=mismatch+1} 25 if digest[4] != 181 as u8 {mismatch=mismatch+1} 26 if digest[5] != 22 as u8 {mismatch=mismatch+1} 27 if digest[6] != 114 as u8 {mismatch=mismatch+1} 28 if digest[7] != 88 as u8 {mismatch=mismatch+1} 29 if digest[8] != 176 as u8 {mismatch=mismatch+1} 30 if digest[9] != 91 as u8 {mismatch=mismatch+1} 31 if digest[10] != 24 as u8 {mismatch=mismatch+1} 32 if digest[11] != 174 as u8 {mismatch=mismatch+1} 33 if digest[12] != 154 as u8 {mismatch=mismatch+1} 34 if digest[13] != 224 as u8 {mismatch=mismatch+1} 35 if digest[14] != 98 as u8 {mismatch=mismatch+1} 36 if digest[15] != 192 as u8 {mismatch=mismatch+1} 37 if digest[16] != 115 as u8 {mismatch=mismatch+1} 38 if digest[17] != 253 as u8 {mismatch=mismatch+1} 39 if digest[18] != 3 as u8 {mismatch=mismatch+1} 40 if digest[19] != 251 as u8 {mismatch=mismatch+1} 41 if digest[20] != 63 as u8 {mismatch=mismatch+1} 42 if digest[21] != 70 as u8 {mismatch=mismatch+1} 43 if digest[22] != 210 as u8 {mismatch=mismatch+1} 44 if digest[23] != 18 as u8 {mismatch=mismatch+1} 45 if digest[24] != 227 as u8 {mismatch=mismatch+1} 46 if digest[25] != 81 as u8 {mismatch=mismatch+1} 47 if digest[26] != 45 as u8 {mismatch=mismatch+1} 48 if digest[27] != 40 as u8 {mismatch=mismatch+1} 49 if digest[28] != 102 as u8 {mismatch=mismatch+1} 50 if digest[29] != 12 as u8 {mismatch=mismatch+1} 51 if digest[30] != 79 as u8 {mismatch=mismatch+1} 52 if digest[31] != 237 as u8 {mismatch=mismatch+1} 53 gv_check_eq("exact served asset SHA256",mismatch,0,ctr) 54 if mismatch!=0 {return 5} 55 let w:*i64=b as *i64 56 let so:i64=nxa_counted_section(b,bytes,nxa_tag4("SKEL" as *u8),NA_SKEL_W) 57 let ae:i64=nxa_section_entry(b,bytes,nxa_tag4("ANIM" as *u8)) 58 if so<0||ae<0 {return 6} 59 let nj:i64=w[so] 60 let skel:*i64=((b as i64)+(so+1)*8) as *i64 61 let anim:*i64=((b as i64)+w[ae+1]) as *i64 62 let idx:*i64=sys_mmap(nj*NA_IDX_W*8) as *i64 63 let order:*i64=sys_mmap(nj*8) as *i64 64 let scr:*i64=sys_mmap(NA_SCR_W*8+8) as *i64 65 scr[NA_SCR_W]=139 66 let rv:*i64=sys_mmap(NA_RV_W*8) as *i64 67 let feet:*i64=sys_mmap(NA_GAIT_INPUT_W*8) as *i64 68 feet[0]=8 69 feet[1]=7682 70 feet[2]=2438 71 feet[3]=9129 72 feet[4]=4711 73 feet[5]=0-10330 74 feet[6]=1478 75 feet[7]=0-1027 76 feet[8]=3965 77 feet[9]=24 78 feet[10]=0-7684 79 feet[11]=2361 80 feet[12]=9099 81 feet[13]=0-4707 82 feet[14]=0-10441 83 feet[15]=1474 84 feet[16]=0-1073 85 feet[17]=3953 86 let header:*i64=sys_mmap(NA_GAIT_HEADER_W*8) as *i64 87 let cap:i64=w[ae+2]/NA_CH2_KEY_W 88 let table:*i64=sys_mmap(cap*NA_GAIT_ROW_W*8) as *i64 89 let duration:i64=na_index(anim,w[ae+2],nj,idx) 90 na_index_order(anim,idx,nj,order) 91 na_fit_root(anim,idx,na_root_joint(skel,nj),rv,scr) 92 let rc:i64=na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr) 93 gv_check_eq("actual in-place contact calibration",rc,0,ctr) 94 gv_check_eq("actual clip duration",duration,17919,ctr) 95 gv_check_eq("calibration retains all left keys",header[0],544,ctr) 96 if rc!=0 {return 7} 97 var monotonic:i64=1;var i:i64=1 98 while i<header[0] {if table[i*NA_GAIT_ROW_W+1]<table[(i-1)*NA_GAIT_ROW_W+1] {monotonic=0};i=i+1} 99 gv_check_eq("contact distance monotonic",monotonic,1,ctr) 100 gv_check_eq("cycle wraps without whole-clip support assumption",na_gait_time(table,header[0],header[1]),na_gait_time(table,header[0],0),ctr) 101 gv_puts("GAIT samples=" as *u8);gv_num(header[0]);gv_puts(" model_distance=" as *u8);gv_num(header[1]);gv_puts(" transitions=" as *u8);gv_num(header[2]);gv_puts(" supported_intervals=" as *u8);gv_num(header[3]);gv_puts(" unknown_intervals=" as *u8);gv_num(header[4]);gv_puts(" duration_ms=" as *u8);gv_num(header[5]);gv_puts(" measured_mpb=" as *u8);gv_num(header[6]);gv_puts("\n" as *u8) 102 103 gv_check_eq("matches independent sole support transitions",header[2],24,ctr) 104 gv_check_eq("all representative intervals have rearward support",header[4],0,ctr) 105 gv_check_eq("matches independent float calibration integer ms per block",header[6],1368,ctr) 106 107 let base:i64=sys_mmap(CRAFT_EXT_TOTAL) as i64 108 gv_check_eq("real Beach native initialization",init_impl_v(base,2,20260728),0,ctr) 109 let targetskel:*i64=(base+O_NXA_SKEL) as *i64 110 let targetanim:*i64=(base+O_NXA_ANIM) as *i64 111 var z:i64=0 112 while z<nj*NA_SKEL_W {targetskel[z]=skel[z];z=z+1} 113 z=0;while z<w[ae+2] {targetanim[z]=anim[z];z=z+1} 114 let pe:i64=nxa_section_entry(b,bytes,nxa_tag4("POSE" as *u8)) 115 if pe<0 {return 8} 116 let pose:*i64=((b as i64)+w[pe+1]) as *i64 117 let targetpose:*i64=(base+O_NXA_POSE) as *i64 118 z=0;while z<w[pe+2] {targetpose[z]=pose[z];z=z+1} 119 gv_check_eq("engine ingests actual motion and held pose",wc_nxa_ingest(base,nj,w[ae+2],w[pe+2]),0,ctr) 120 let targetfeet:*i64=(base+O_NXA_GAIT) as *i64 121 z=0;while z<NA_GAIT_INPUT_W {targetfeet[z]=feet[z];z=z+1} 122 gv_check_eq("engine calibrates actual inferred contacts",wc_gait_calibrate(base),0,ctr) 123 gv_check_eq("engine reports measured ms per block",nxa_hp(base)[NXA_H_MPB],1368,ctr) 124 let ms:*i64=(base+O_NXA_MOB) as *i64 125 let applied:*i64=(base+O_MOBAUX) as *i64 126 ms[NXA_M_IW]=NA_Q12 127 // Actual observed actor6 applied displacement was four Q8 units on each axis. 128 applied[0]=4;applied[1]=4 129 z=0;while z<HG_TPS*4 {wc_cast_blend_tick(base,0);z=z+1} 130 gv_check_eq("walking no longer inherits breathing idle amplitude",ms[NXA_M_IW],0,ctr) 131 gv_check("diagonal distance retains sub-Q8 movement",sd_isqrt((4*4+4*4)*NA_Q12)>sd_isqrt(4*4+4*4)*64,ctr) 132 let phase:i64=ms[NXA_M_PATH_Q14] 133 let tpose:i64=wc_gait_time(base,0) 134 let rowsa:i64=wc_cast_rows(base,0,16) 135 let snap:*i64=sys_mmap(nj*NA_ROW_W*8) as *i64 136 let rows:*i64=rowsa as *i64 137 z=0;while z<nj*NA_ROW_W {snap[z]=rows[z];z=z+1} 138 wc_cast_rows(base,0,1000) 139 var changed:i64=0;z=0;while z<nj*NA_ROW_W {if snap[z]!=rows[z] {changed=changed+1};z=z+1} 140 gv_check_eq("drawing never advances native contact phase",ms[NXA_M_PATH_Q14],phase,ctr) 141 gv_check_eq("draw delta does not change native pose rows",changed,0,ctr) 142 applied[0]=0;applied[1]=0 143 z=0;while z<HG_TPS {wc_cast_blend_tick(base,0);z=z+1} 144 gv_check_eq("stop holds measured phase instead of whole-clip attraction",ms[NXA_M_PATH_Q14],phase,ctr) 145 gv_check("idle pose still blends in after stopping",ms[NXA_M_IW]>0,ctr) 146 z=0;while z<HG_TPS*4 {wc_cast_blend_tick(base,0);z=z+1} 147 gv_check_eq("positive idle blend reaches exact fixed-point target",ms[NXA_M_IW],NA_Q12,ctr) 148 gv_check_eq("morph bank starts after bounded contact storage",O_WCM,CRAFT_EXT_TOTAL,ctr) 149 gv_check("derived page requirement covers contact map",WASM_PAGES_REQ*WASM_PAGE_BYTES>=CRAFT_EXT_TOTAL,ctr) 150 var moved:i64=0 151 z=0;while z<HG_TPS {step_impl(base);if mob_spd_q8i(base,0)>0 {moved=moved+1};z=z+1} 152 gv_check("real Beach ticks produce representative native movement",moved>0,ctr) 153 gv_kv("real_moving_ticks" as *u8,moved) 154 gv_kv("contact_phase_ms" as *u8,wc_gait_time(base,0)) 155 gv_kv("required_pages" as *u8,WASM_PAGES_REQ) 156 let generation:*i64=(base+O_NXA_GAIT_GENERATION) as *i64 157 let generation_before:i64=generation[0] 158 gv_check_eq("same asset reingest succeeds",wc_nxa_ingest(base,nj,w[ae+2],w[pe+2]),0,ctr) 159 gv_check_eq("reingest increments calibration receipt",generation[0],generation_before+1,ctr) 160 gv_check_eq("reingest invalidates prior contact fit",wc_gait_header(base)[7],0,ctr) 161 gv_check_eq("reingested clip calibrates again",wc_gait_calibrate(base),0,ctr) 162 gv_check_eq("calibration preserves ingest receipt",generation[0],generation_before+1,ctr) 163 let saved_landmark:i64=targetfeet[1] 164 targetfeet[1]=(0-9223372036854775807)-1 165 gv_check_eq("minimum signed landmark refuses before arithmetic",wc_gait_calibrate(base),0-86,ctr) 166 targetfeet[1]=saved_landmark 167 let saved_rotation:i64=targetfeet[7] 168 targetfeet[7]=(0-9223372036854775807)-1 169 gv_check_eq("minimum signed rotation refuses before arithmetic",wc_gait_calibrate(base),0-86,ctr) 170 targetfeet[7]=saved_rotation 171 gv_check_eq("valid fit recovers after refused input",wc_gait_calibrate(base),0,ctr) 172 let fit_count:i64=header[0] 173 gv_check_eq("table capacity below actual key count refuses",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,fit_count-1,scr),0-83,ctr) 174 let saved_order:i64=order[feet[0]] 175 order[feet[0]]=0 176 gv_check_eq("unordered track refuses distance calibration",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0-82,ctr) 177 order[feet[0]]=saved_order 178 gv_check_eq("full capacity ordered fit recovers",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0,ctr) 179 gv_check_eq("nested fitter scratch respects 512 byte extent",scr[NA_SCR_W],139,ctr) 180 let count:i64=header[0];let total:i64=header[1] 181 feet[0]=0-1 182 gv_check_eq("invalid foot refuses calibration",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0-81,ctr) 183 gv_check_eq("failed calibration clears validity",header[7],0,ctr) 184 185 let steer_slot:i64=MOB_CAP-1 186 let steer_state:*i64=(base+O_MOB_STEER+steer_slot*WC_STEER_W*8) as *i64 187 steer_state[0]=0;steer_state[1]=0 188 var slow_x:i64=0;var slow_z:i64=0;z=0 189 while z<120 {let step:*i64=wc_forward_steer(base,steer_slot,IT_PI/4,1,0);slow_x=slow_x+step[2];slow_z=slow_z+step[3];z=z+1} 190 // Independent analytic oracle: floor(120/sqrt(2)) = 84 Q8 coordinate units. 191 gv_check_eq("slow diagonal retains accumulated X below per-tick grid quantum",slow_x,84,ctr) 192 gv_check_eq("slow diagonal retains accumulated Z below per-tick grid quantum",slow_z,84,ctr) 193 gv_check("steering remainder bounded by one coordinate quantum",na_abs(steer_state[0])<NA_Q12&&na_abs(steer_state[1])<NA_Q12,ctr) 194 let remainder_x:i64=steer_state[0];let remainder_z:i64=steer_state[1] 195 wc_forward_steer(base,steer_slot,IT_PI/4,0,0) 196 gv_check_eq("zero intent adds no X travel",steer_state[2],0,ctr) 197 gv_check_eq("zero intent adds no Z travel",steer_state[3],0,ctr) 198 gv_check("stop preserves fractional position without emitting motion",steer_state[0]==remainder_x&&steer_state[1]==remainder_z,ctr) 199 steer_state[0]=0;steer_state[1]=0 200 var facing:i64=0 201 let first_facing:i64=wc_hdg_step(facing,6,0) 202 gv_check("authored turn budget prevents instantaneous direction snap",first_facing>0&&first_facing<IT_PI/2,ctr) 203 var curve_x:i64=0;var curve_z:i64=0;z=0 204 while z<120 {facing=wc_hdg_step(facing,6,0);let step:*i64=wc_forward_steer(base,steer_slot,facing,6,0);curve_x=curve_x+step[2];curve_z=curve_z+step[3];z=z+1} 205 gv_check("quarter turn follows a forward arc rather than lateral translation",curve_x>0&&curve_z>0&&curve_x<120*6,ctr) 206 gv_kv("quarter_turn_x_q8",curve_x);gv_kv("quarter_turn_z_q8",curve_z);gv_kv("quarter_turn_final_heading_q12",facing) 207 gv_check_eq("unknown clip keeps raw policy after ingest",wc_forward_policy(base,0),0,ctr) 208 let rawstep:*i64=wc_motion_step(base,0,0,0-4,3) 209 gv_check("unknown clip preserves backpedal and strafe intent",rawstep[2]==0-4&&rawstep[3]==3,ctr) 210 gv_check_eq("unsupported policy refuses and remains raw",wc_nxa_locomotion(base,99),0-1,ctr) 211 gv_check_eq("reviewed forward clip declaration accepted",wc_nxa_locomotion(base,NXA_LOCOMOTION_FORWARD),NXA_LOCOMOTION_FORWARD,ctr) 212 gv_check_eq("calibrated declared resident gets forward policy",wc_forward_policy(base,0),1,ctr) 213 gv_check_eq("uncast slots retain raw policy",wc_forward_policy(base,WC_CAST_N),0,ctr) 214 gv_check_eq("negative slot does not enter forward policy",wc_forward_policy(base,0-1),0,ctr) 215 var admitted_steps:i64=0;var lateral_bound_failures:i64=0;z=0 216 while z<HG_TPS*3 { 217 step_impl(base) 218 var actor:i64=0 219 while actor<WC_CAST_N { 220 let actual:*i64=(base+O_MOBAUX+actor*3*8) as *i64 221 let intended:*i64=(base+O_MOB_STEER+actor*WC_STEER_W*8) as *i64 222 if (actual[0]!=0||actual[1]!=0)&&actual[0]==intended[2]&&actual[1]==intended[3] { 223 admitted_steps=admitted_steps+1 224 let heading:i64=wc_hdg_of(base,actor) 225 let lateral:i64=na_abs(actual[0]*it_cos4096(heading)-actual[1]*it_sin4096(heading)) 226 // Each axis carries less than one Q8 quantum; consecutive errors differ by less than two. 227 if lateral>2*(na_abs(it_cos4096(heading))+na_abs(it_sin4096(heading))) {lateral_bound_failures=lateral_bound_failures+1} 228 } 229 actor=actor+1 230 } 231 z=z+1 232 } 233 gv_check("actual Beach admits nonzero steered forward travel",admitted_steps>0,ctr) 234 gv_check_eq("actual admitted steps respect coordinate-quantization lateral bound",lateral_bound_failures,0,ctr) 235 gv_kv("actual_admitted_steered_steps",admitted_steps) 236 237 238 // Real ingested Beach clip with the existing warden pursuit behavior active. 239 let chase_mobs:*i64=mobp(base) 240 var chase_actor:i64=0 241 while chase_actor<en_count(chase_mobs) {let h:i64=en_nth(chase_mobs,chase_actor);en_set(chase_mobs,h,MC_KIND,0);en_set(chase_mobs,h,MC_DISG,0);chase_actor=chase_actor+1} 242 summon_impl(base) 243 let pursuer:i64=en_nth(chase_mobs,0) 244 let prey:i64=en_nth(chase_mobs,1) 245 en_set(chase_mobs,pursuer,MC_KIND,2) 246 en_set(chase_mobs,prey,MC_DISG,3) 247 let px:i64=en_get(chase_mobs,pursuer,MC_X) 248 let pz:i64=en_get(chase_mobs,pursuer,MC_Z) 249 var target_x:i64=px+8*256 250 if px>WX*256/2 {target_x=px-8*256} 251 en_set(chase_mobs,prey,MC_X,target_x);en_set(chase_mobs,prey,MC_Z,pz) 252 en_set(chase_mobs,prey,MC_Y,wc_contact_floor_q(base,target_x,pz,WY-1)) 253 gv_check_eq("authored hunt selector identifies actual discovered human",wc_warden_target(base,pursuer,cal_night(base)),1,ctr) 254 let chase_heading:*i64=(base+O_MOBHDG) as *i64 255 chase_heading[0]=0 256 let chase_aux:*i64=(base+O_MOBAUX) as *i64 257 var chase_moved:i64=0;var unaccounted:i64=0;var chase_turned:i64=0;z=0 258 while z<HG_TPS*2 { 259 let bx:i64=en_get(chase_mobs,pursuer,MC_X);let bz:i64=en_get(chase_mobs,pursuer,MC_Z) 260 step_impl(base) 261 let ax:i64=en_get(chase_mobs,pursuer,MC_X)-bx;let az:i64=en_get(chase_mobs,pursuer,MC_Z)-bz 262 if ax!=0||az!=0 {chase_moved=chase_moved+1} 263 if ax!=chase_aux[0]||az!=chase_aux[1] {unaccounted=unaccounted+1} 264 if chase_heading[0]!=0 {chase_turned=chase_turned+1} 265 z=z+1 266 } 267 gv_check("actual warden pursuit produces nonzero travel",chase_moved>0,ctr) 268 gv_check("actual warden turns toward pursuit intent",chase_turned>0,ctr) 269 gv_check_eq("warden has no second root move outside cadence bookkeeping",unaccounted,0,ctr) 270 gv_kv("actual_warden_moving_ticks",chase_moved) 271 272 // Identity changes and explicit world relocation cannot inherit fractional movement. 273 let cache0:*i64=(base+O_MOB_STEER) as *i64 274 let mobs:*i64=mobp(base) 275 wc_forward_steer(base,0,IT_PI/4,1,0) 276 let prior_handle:i64=en_nth(mobs,0) 277 cache0[0]=NA_Q12-1;cache0[1]=NA_Q12-1 278 en_destroy(mobs,prior_handle) 279 let swapped_handle:i64=en_nth(mobs,0) 280 wc_forward_steer(base,0,0,0,0) 281 gv_check("dense swap gets a different valid handle",swapped_handle>0&&swapped_handle!=prior_handle,ctr) 282 gv_check("dense swap clears old actor fractions and stamps identity",cache0[0]==0&&cache0[1]==0&&cache0[4]==swapped_handle,ctr) 283 let fresh_handle:i64=en_spawn(mobs) 284 let fresh_k:i64=en_count(mobs)-1 285 let fresh_cache:*i64=(base+O_MOB_STEER+fresh_k*WC_STEER_W*8) as *i64 286 fresh_cache[0]=NA_Q12-1;fresh_cache[1]=NA_Q12-1;fresh_cache[4]=prior_handle 287 wc_forward_steer(base,fresh_k,0,0,0) 288 gv_check("recycled entity generation cannot inherit prior fractions",fresh_handle!=prior_handle&&fresh_cache[0]==0&&fresh_cache[1]==0&&fresh_cache[4]==fresh_handle,ctr) 289 cache0[0]=123;cache0[1]=456 290 summon_impl(base) 291 gv_check("summon resets fractional movement",cache0[0]==0&&cache0[1]==0&&cache0[4]==0,ctr) 292 cache0[0]=123;cache0[1]=456 293 wc_shift(base,1,0) 294 gv_check("resident map shift resets fractional movement",cache0[0]==0&&cache0[1]==0&&cache0[4]==0,ctr) 295 wc_save_build(base) 296 cache0[0]=123;cache0[1]=456 297 gv_check_eq("actual native save restores",wc_save_apply(base),0,ctr) 298 gv_check("save restore clears nonpersisted movement fractions",cache0[0]==0&&cache0[1]==0&&cache0[4]==0,ctr) 299 cache0[0]=123;cache0[1]=456 300 genmobs(base,wst(base)[S_SEED]) 301 gv_check("new actor generation resets movement fractions",cache0[0]==0&&cache0[1]==0&&cache0[4]==0,ctr) 302 gv_check_eq("reingest clears previously declared clip policy",wc_nxa_ingest(base,nj,w[ae+2],w[pe+2]),0,ctr) 303 gv_check_eq("reingested clip stays raw pending declaration",wc_forward_policy(base,0),0,ctr) 304 gv_check_eq("raw declaration is always accepted",wc_nxa_locomotion(base,NXA_LOCOMOTION_RAW),0,ctr) 305 gv_check_eq("forward policy setter preserves explicit mode",wc_nxa_locomotion(base,NXA_LOCOMOTION_FORWARD),NXA_LOCOMOTION_FORWARD,ctr) 306 gv_check_eq("declaration alone cannot bypass uncalibrated clip",wc_forward_policy(base,0),0,ctr) 307 gv_check_eq("moving intention ignores player facing",wc_facing_step(0,6,0,0,256,4096,4096),wc_hdg_step(0,6,0),ctr) 308 return gv_verdict("GAIT-TURN-T139" as *u8,ctr,"real served in-place clip; sole-derived distance map; contact labels remain inferred" as *u8) 309}