diff --git a/TempleOSCD/0000Boot/0000Kernel.BIN.C b/TempleOSCD/0000Boot/0000Kernel.BIN.C index 019909b..0f2b755 100644 Binary files a/TempleOSCD/0000Boot/0000Kernel.BIN.C and b/TempleOSCD/0000Boot/0000Kernel.BIN.C differ diff --git a/TempleOSCD/Adam/ADefine.HC b/TempleOSCD/Adam/ADefine.HC index 42b761a..7f0e4b6 100644 --- a/TempleOSCD/Adam/ADefine.HC +++ b/TempleOSCD/Adam/ADefine.HC @@ -18,8 +18,8 @@ U0 LoadDocDefines() //$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/Adam/Opt/Boot/BootDVD.HC,DD_BOOT_HIGH_LOC_DVD"$ $TR-C,"LineRep"$ -$ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,525"); -DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","82,013"); +$ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,545"); +DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","82,014"); $ID,-4$ DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR); DefinePrint("DD_MP_VECT_END","%08X", diff --git a/TempleOSCD/Compiler/Compiler.BIN b/TempleOSCD/Compiler/Compiler.BIN index 5101ae9..d311658 100644 Binary files a/TempleOSCD/Compiler/Compiler.BIN and b/TempleOSCD/Compiler/Compiler.BIN differ diff --git a/TempleOSCD/Demo/AcctExample/Registry.HC b/TempleOSCD/Demo/AcctExample/Registry.HC index 62a470d..11fdb88 100644 --- a/TempleOSCD/Demo/AcctExample/Registry.HC +++ b/TempleOSCD/Demo/AcctExample/Registry.HC @@ -62,7 +62,7 @@ $ID,-2$$TR,"Titanium"$ $ID,2$I64 best_score=16469; $ID,-2$$TR,"TOSRegen"$ $ID,2$progress1_tf=0.000;progress2_tf=0.000; -progress3_tf=0.000;progress4_tf=199.123; +progress3_tf=0.000;progress4_tf=204.256; $ID,-2$$ID,-2$$TR,"Once"$ $ID,2$$TR,"Adam"$ $ID,2$$ID,-2$$TR,"User"$ diff --git a/TempleOSCD/Demo/Graphics/LightTable.HC b/TempleOSCD/Demo/Graphics/LightTable.HC index fb29237..66cdedf 100644 --- a/TempleOSCD/Demo/Graphics/LightTable.HC +++ b/TempleOSCD/Demo/Graphics/LightTable.HC @@ -96,25 +96,27 @@ U0 RayBurst(I64 x1,I64 y1,I64 x2,I64 y2) CD3 p,v,n,n2; I64 i; Photon *tmpp; - D3Equ(&p,x2,y2); - D3Equ(&v,x2-x1,y2-y1); - D3Unit(&v); - D3Equ(&n,v.y,-v.x); - - tmpp=PhotonNew; - D3Copy(&tmpp->p,&p); - D3Copy(&tmpp->v,&v); - - for (i=2;i<=9;i+=3) { - D3Mul(&n2,i,&n); - - tmpp=PhotonNew; - D3Add(&tmpp->p,&p,&n2); - D3Copy(&tmpp->v,&v); + if (x1!=x2 || y1!=y2) { + D3Equ(&p,x2,y2); + D3Equ(&v,x2-x1,y2-y1); + D3Unit(&v); + D3Equ(&n,v.y,-v.x); tmpp=PhotonNew; - D3Sub(&tmpp->p,&p,&n2); + D3Copy(&tmpp->p,&p); D3Copy(&tmpp->v,&v); + + for (i=2;i<=9;i+=3) { + D3Mul(&n2,i,&n); + + tmpp=PhotonNew; + D3Add(&tmpp->p,&p,&n2); + D3Copy(&tmpp->v,&v); + + tmpp=PhotonNew; + D3Sub(&tmpp->p,&p,&n2); + D3Copy(&tmpp->v,&v); + } } } @@ -133,8 +135,9 @@ U0 RandomBurst() U0 FindNormal(Photon *tmpp) { - CD3 p,p1,p2,v,s; - F64 é=Arg(tmpp->v.x,tmpp->v.y),è; + CD3 p,p1,p2; + F64 x,y,é=Arg(tmpp->v.x,tmpp->v.y),è; + I64 c; D3Copy(&tmpp->p_snell_inhibit,&tmpp->p); @@ -152,35 +155,49 @@ U0 FindNormal(Photon *tmpp) D3Div(&tmpp->p,&p,bmp_scale); //Draw an arc one direction, finding point of contact. - for (è=0;è<ã/2;è+=ã/bmp_norm_radius) { - D3Equ(&s,Cos(é+ã-ã/4-è),Sin(é+ã-ã/4-è)); - D3Mul(&v,bmp_norm_radius,&s); - D3Add(&p1,&p,&v); - if (BmpPeek(p1.x,p1.y)!=BLACK) + for (è=0;è<=ã/4;è+=0.125*ã/bmp_norm_radius) { + x=p.x+bmp_norm_radius*Cos(é+ã-ã/4-è); + y=p.y+bmp_norm_radius*Sin(é+ã-ã/4-è); + c=BmpPeek(x,y); + if (c!=BLACK) + break; + x=p.x+bmp_norm_radius*Cos(é+ã-ã/4+è); + y=p.y+bmp_norm_radius*Sin(é+ã-ã/4+è); + c=BmpPeek(x,y); + if (c!=BLACK) break; } - if (BmpPeek(p1.x,p1.y)!=WHITE) + if (c==WHITE) + D3Equ(&p1,x,y); + else D3Copy(&p1,&tmpp->p); //Draw an arc other direction, finding point of contact. - for (è=0;è<ã/2;è+=ã/bmp_norm_radius) { - D3Equ(&s,Cos(é+ã+ã/4+è),Sin(é+ã+ã/4+è)); - D3Mul(&v,bmp_norm_radius,&s); - D3Add(&p2,&p,&v); - if (BmpPeek(p2.x,p2.y)!=BLACK) + for (è=0;è<=ã/4;è+=0.125*ã/bmp_norm_radius) { + x=p.x+bmp_norm_radius*Cos(é+ã+ã/4-è); + y=p.y+bmp_norm_radius*Sin(é+ã+ã/4-è); + c=BmpPeek(x,y); + if (c!=BLACK) + break; + x=p.x+bmp_norm_radius*Cos(é+ã+ã/4+è); + y=p.y+bmp_norm_radius*Sin(é+ã+ã/4+è); + c=BmpPeek(x,y); + if (c!=BLACK) break; } - if (BmpPeek(p2.x,p2.y)!=WHITE) + if (c==WHITE) + D3Equ(&p2,x,y); + else D3Copy(&p2,&tmpp->p); - D3Sub(&s,&p1,&p2); - if (D3NormSqr(&s)<1.0) { + D3Sub(&p,&p1,&p2); + if (D3NormSqr(&p)<1.0) { D3Equ(&tmpp->n,Cos(é),Sin(é)); lock {zero_normal++;} } else { - D3Equ(&tmpp->n,s.y,-s.x); + D3Equ(&tmpp->n,p.y,-p.x); if (D3Dot(&tmpp->n,&tmpp->v)<0) - D3Equ(&tmpp->n,-s.y,s.x); + D3Equ(&tmpp->n,-p.y,p.x); D3Unit(&tmpp->n); } } @@ -494,6 +511,8 @@ lt_restart: case '\n': CleanUp; Init; + mode=LTM_LINE; + LTMenuSet(mode); break; case 'r': RandomBurst; diff --git a/TempleOSCD/Doc/ChgLog.DD b/TempleOSCD/Doc/ChgLog.DD index 2bef0b3..00ecc55 100644 --- a/TempleOSCD/Doc/ChgLog.DD +++ b/TempleOSCD/Doc/ChgLog.DD @@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$ Use $LK,"R",A="MN:R"$() to rename if I change a label. -$IV,1$----01/31/17 07:51:26----$IV,0$ +$IV,1$----01/31/17 08:57:31----$IV,0$ * Added $LK,"::/Demo/Graphics/LightTable.HC"$. * Added $LK,"TOS Linux Setup",A="FF:::/Demo/AcctExample/TOS/TOSPolicies.DD,TOS Linux Setup"$.