code wiki / (root) / nx_nxa_skin_affine_compose_gate_t36.nx

nx_nxa_skin_affine_compose_gate_t36.nx source

↩ module page · 15 lines · 1466 B

1import "nx_nxa_affine_asset_t35.nx" 2func main()->i64{ 3 let n:i64=11833880;let sn:i64=7063248;let b:*u8=sys_mmap(n);let skin:*u8=sys_mmap(sn);let st:*i64=sys_mmap(24) as *i64 4 if rc_read_file_into("/tmp/dark-knight-affine-walk-t35.nxa" as *u8,b,n,st)!=n||rc_complete(st)==0{return 2} 5 if rc_read_file_into("/tmp/dark-knight-authored-skin-t36.nxa" as *u8,skin,sn,st)!=sn||rc_complete(st)==0{return 3} 6 let e:i64=nxa_section_entry(skin,sn,nxa_tag4("SKIN" as *u8));if e<0{return 4} 7 let h:*i64=skin as *i64;let p:*i64=((skin as i64)+h[e+1]) as *i64;if p[0]!=53296||h[e+2]!=1+p[0]*8{return 5} 8 var v:i64=0;while v<p[0]{var sum:i64=0;var j:i64=0;while j<4{let joint:i64=p[1+v*8+j];let w:i64=p[1+v*8+4+j];if joint<0||joint>=113||w<0||w>4096{return 6};sum=sum+w;j=j+1};if sum!=4096{return 7};v=v+1} 9 let out:*u8=sys_mmap(n);if nxw_replace_same_size(b,n,nxa_tag4("SKIN" as *u8),p,h[e+2],out,n)!=n{return 8} 10 if nb_save_new("/tmp/dark-knight-affine-authored-t36.nxa" as *u8,out,n)!=n{return 9} 11 nb_text("PASS repaired_skin_checksum=" as *u8);nb_num(h[e+3]);nb_text(" vertices=" as *u8);nb_num(p[0]);nb_text(" other_sections=BYTE_IDENTICAL\n" as *u8) 12 let vertices:*i64=sys_mmap(32) as *i64;vertices[0]=31169;vertices[1]=31184;vertices[2]=12083;vertices[3]=12086 13 var k:i64=0;while k<4{v=vertices[k];nb_text("vertex=" as *u8);nb_num(v);nb_text(" skin=" as *u8);var j:i64=0;while j<8{if j>0{nb_text("," as *u8)};nb_num(p[1+v*8+j]);j=j+1};nb_text("\n" as *u8);k=k+1} 14 return 0 15}