nx_nxa_bind_gate_t29.nx source
↩ module page · 69 lines · 4302 B
1// Isolated real-asset bind qualification. Fixed source and output fixture; no serving writes.
2import "nx_syscalls.nx"
3import "nx_fbx_import.nx"
4import "nx_nxa_bind_t29.nx"
5import "nx_nxa.nx"
6import "nx_base64.nx"
7import "nx_readcap_lib.nx"
8func kbw(s: *u8) -> i64 { var n:i64=0;while s[n]!=(0 as u8){n=n+1};sys_write(1,s,n);return 0 }
9func kbn(n:i64) -> i64 {var d:*u8=sys_mmap(32);var m:i64=n;var i:i64=0;if m<0{kbw("-" as *u8);m=0-m};if m==0{kbw("0" as *u8)};while m>0{d[i]=(48+m%10) as u8;i=i+1;m=m/10};while i>0{i=i-1;sys_write(1,((d as i64)+i) as *u8,1)};sys_munmap(d,32);return 0}
10func kbv(s:*u8,n:i64)->i64{kbw(s);kbn(n);kbw("\n" as *u8);return 0}
11func main(argc:i64,argv:*i64)->i64 {
12 let encn:i64=11693160
13 let nxan:i64=11279224
14 let state:*i64=sys_mmap(24) as *i64
15 let enc:*u8=sys_mmap(encn)
16 let en:i64=rc_read_file_into("/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/rigsrc-darkknight.txt" as *u8,enc,encn,state)
17 if rc_complete(state)==0||en!=encn{kbw("REFUSED source read\n" as *u8);return 4}
18 let b:*u8=sys_mmap(encn)
19 let n:i64=b64_decode(enc,en,b)
20 if n!=8769868{kbw("REFUSED decode identity\n" as *u8);return 4}
21 let asset:*u8=sys_mmap(nxan)
22 if rc_read_file_into("/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/dark_knight.nxa" as *u8,asset,nxan,state)!=nxan||rc_complete(state)==0{return 4}
23
24 let report:*NxaBindReport=sys_mmap(__size_of(NxaBindReport)) as *NxaBindReport
25 let out:*u8=sys_mmap(nxan)
26 let result:i64=nb_convert_bytes(b,n,asset,nxan,out,nxan,10125520,6,report)
27 kbv("conversion_result=" as *u8,result)
28 if result!=nxan{return 5}
29 kbv("vertices=" as *u8,report.vertices);kbv("triangles=" as *u8,report.triangles);kbv("changed_vertices=" as *u8,report.changed_vertices)
30 kbv("source_animation_stacks=" as *u8,report.source_animation_stacks);kbv("source_animation_curves=" as *u8,report.source_animation_curves);kbv("decoded_array_bytes=" as *u8,report.decoded_array_bytes)
31 if report.vertices!=53296||report.triangles!=98574||report.source_animation_stacks!=3||report.source_animation_curves!=3078||report.decoded_array_bytes!=10125520{return 6}
32
33 let saved_first:i64=asset[1] as i64
34 if nb_convert_bytes(b,n,asset,nxan,((asset as i64)+1) as *u8,nxan,10125520,6,report)!=NB_BAD_SOURCE{return 19}
35 if asset[1] as i64!=saved_first{return 20}
36 if nb_convert_bytes(b,n,asset,nxan,out,nxan,10125520,6,((asset as i64)+1) as *NxaBindReport)!=NB_BAD_SOURCE{return 21}
37 if asset[1] as i64!=saved_first{return 22}
38 if nb_range(FBB_I64_MAX-3,8)!=0{return 23}
39 kbw("PASS partial output/report alias refusal and address overflow
40" as *u8)
41 let reference:*u8=sys_mmap(nxan)
42 if rc_read_file_into("/tmp/nx_knight_bind_t24.nxa" as *u8,reference,nxan,state)!=nxan||rc_complete(state)==0{return 7}
43 var i:i64=0;while i<nxan{if out[i]!=reference[i]{kbv("candidate_mismatch=" as *u8,i);return 8};i=i+1}
44 kbw("PASS exact proven geometry artifact; authored motion NOT CONVERTED
45" as *u8)
46 if nb_convert_bytes(b,n,asset,nxan,out,nxan,10125519,6,report)!=NB_BUDGET{return 9}
47 kbw("PASS decoded-array budget refusal
48" as *u8)
49 if nb_convert_bytes(b,n,asset,nxan,out,nxan,10125520,1,report)!=NB_BUDGET{return 10}
50 kbw("PASS depth budget refusal
51" as *u8)
52 if nb_convert_bytes(b,8,asset,nxan,out,nxan,10125520,6,report)!=NB_BAD_SOURCE{return 11}
53 kbw("PASS truncated FBX refusal
54" as *u8)
55 if nb_convert_bytes(b,n,asset,nxan,out,nxan-1,10125520,6,report)!=NB_BAD_SOURCE{return 12}
56 kbw("PASS output capacity refusal
57" as *u8)
58 if nb_geometry_contract(b,n,53296,98573)!=NB_BAD_SOURCE{return 13}
59 kbw("PASS triangle truncation refusal
60" as *u8)
61 if nb_save_new("/tmp/nx_bind_source_t29.fbx" as *u8,b,n)!=n{return 14}
62 if nb_convert("/tmp/nx_bind_source_t29.fbx" as *u8,"/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/dark_knight.nxa" as *u8,"/tmp/nx_bind_legacy_t29.nxa" as *u8)!=nxan{return 15}
63 if nb_convert("/tmp/nx_bind_source_t29.fbx" as *u8,"/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/dark_knight.nxa" as *u8,"/tmp/nx_bind_legacy_t29.nxa" as *u8)!=nxan{return 16}
64 if rc_read_file_into("/tmp/nx_bind_legacy_t29.nxa" as *u8,reference,nxan,state)!=nxan||rc_complete(state)==0{return 17}
65 i=0;while i<nxan{if out[i]!=reference[i]{return 18};i=i+1}
66 kbw("PASS legacy path output byte identity and repeated request
67" as *u8)
68 return 0
69}