Hey, this is an English text. I want you to translate it into the Tunisian dialect. Please follow these steps:
1. Translate step by step and highlight differences between Tunisian dialect and Modern Standard Arabic.
2. Highlight sections you are confident translating into the Tunisian dialect.
Translate this text into the Tunisian dialect, focusing on capturing the essence of the language nuances:

#include "stdafx.h" #ifdef DEBUG #include "physics.h" #include "MathUtils.h" #include "../xr_3da/StatGraph.h" #include "PHDebug.h" #include "PHObject.h" #include "ExtendedGeom.h" #include "Level.h" #include "Hudmanager.h" #include "debug_renderer.h" Flags32 ph_dbg_draw_mask ; Flags32 ph_dbg_draw_mask1 ; bool draw_frame=0; LPCSTR dbg_trace_object =NULL; string64 s_dbg_tsrace_obj ; u32 dbg_bodies_num =0; u32 dbg_joints_num =0; u32 dbg_islands_num =0; u32 dbg_contacts_num =0; u32 dbg_tries_num =0; u32 dbg_saved_tries_for_active_objects =0; u32 dbg_total_saved_tries =0; u32 dbg_reused_queries_per_step =0; u32 dbg_new_queries_per_step =0; float dbg_vel_collid_damage_to_display =7.f; #ifdef DRAW_CONTACTS CONTACT_VECTOR Contacts0; CONTACT_VECTOR Contacts1; #endif PHOBJ_DBG_V dbg_draw_objects0; PHOBJ_DBG_V dbg_draw_objects1; PHABS_DBG_V dbg_draw_abstruct0; PHABS_DBG_V dbg_draw_abstruct1; PHABS_DBG_V dbg_draw_cashed; PHABS_DBG_V dbg_draw_simple; enum EDBGPHDrawMode { dmSecondaryThread, dmCashed, dmSimple } dbg_ph_draw_mode=dmSecondaryThread; u32 cash_draw_remove_time=u32(-1); struct SPHDBGDrawTri :public SPHDBGDrawAbsract { Fvector v[3]; u32 c; bool solid; SPHDBGDrawTri(CDB::RESULT* T,u32 ac) { v[0].set(T->verts[0]); v[1].set(T->verts[1]); v[2].set(T->verts[2]); c=ac; solid = false; } SPHDBGDrawTri(CDB::TRI* T,const Fvector* V_array,u32 ac) { v[0].set(V_array[T->verts[0]]); v[1].set(V_array[T->verts[1]]); v[2].set(V_array[T->verts[2]]); c=ac; solid = false; } SPHDBGDrawTri(const Fvector &v0, const Fvector &v1, const Fvector &v2, u32 ac, bool solid_) { v[0].set(v0);v[1].set(v1);v[2].set(v2); c = ac; solid = solid_; } virtual void render() { if(solid) { RCache.dbg_DrawTRI (Fidentity, v[0], v[1], v[2], c ); RCache.dbg_DrawTRI (Fidentity, v[2], v[1], v[0], c ); } else { Level().debug_renderer().draw_line(Fidentity,v[0],v[1],c); Level().debug_renderer().draw_line(Fidentity,v[1],v[2],c); Level().debug_renderer().draw_line(Fidentity,v[2],v[0],c); } } }; static void clear_vector(PHABS_DBG_V& v) { PHABS_DBG_I i,e;i=v.begin();e=v.end(); for(;e!=i;++i) { xr_delete(*i); } v.clear(); } void DBG_DrawTri(CDB::RESULT* T,u32 c) { DBG_DrawPHAbstruct(xr_new<SPHDBGDrawTri>(T,c)); } void DBG_DrawTri(CDB::TRI* T,const Fvector* V_verts,u32 c) { DBG_DrawPHAbstruct(xr_new<SPHDBGDrawTri>(T,V_verts,c)); } struct SPHDBGDrawLine : public SPHDBGDrawAbsract { Fvector p[2];u32 c; SPHDBGDrawLine(const Fvector& p0,const Fvector& p1,u32 ca) { p[0].set(p0);p[1].set(p1);c=ca; } virtual void render() { Level().debug_renderer().draw_line(Fidentity,p[0],p[1],c); } }; void DBG_DrawLine ( const Fvector& p0, const Fvector& p1, u32 c ) { DBG_DrawPHAbstruct( xr_new<SPHDBGDrawLine>( p0, p1, c ) ); } void DBG_DrawMatrix( const Fmatrix &m, float size, u8 a/* = 255*/ ) { Fvector to;to.add( m.c,Fvector( ).mul( m.i, size ) ); DBG_DrawPHAbstruct( xr_new<SPHDBGDrawLine>( m.c, to, D3DCOLOR_XRGB(a, 0, 0 ) ) ); to.add(m.c,Fvector( ).mul( m.j, size ) ); DBG_DrawPHAbstruct( xr_new<SPHDBGDrawLine>( m.c, to, D3DCOLOR_XRGB(0, a, 0 ) ) ); to.add(m.c,Fvector( ).mul( m.k, size ) ); DBG_DrawPHAbstruct( xr_new<SPHDBGDrawLine>( m.c, to, D3DCOLOR_XRGB(0, 0, a ) ) ); } template<int> IC void rotate(Fmatrix &m, float ang); template<> IC void rotate<0>(Fmatrix &m, float ang) { m.rotateX( ang ); } template<> IC void rotate<1>(Fmatrix &m, float ang) { m.rotateY( ang ); } template<> IC void rotate<2>(Fmatrix &m, float ang) { m.rotateZ( ang ); } template<int ax> void DBG_DrawRotation( float ang0, float ang1, const Fmatrix& m, const Fvector &l, float size, u32 ac, bool solid, u32 tessel) { Fvector from; from.set( m.c ); Fvector ln; ln.set( l ); ln.mul( size ); const float ftess = (float)tessel; Fmatrix mm; rotate<ax>( mm, ang0 ); mm.mulA_43( m ); Fmatrix r; rotate<ax>( r, ( ang1 - ang0 ) / ftess ); for( u32 i = 0; tessel > i; ++i ) { Fvector tmp; mm.transform_dir( tmp, ln ); Fvector to0; to0.add( from, tmp ); mm.mulB_43( r ); mm.transform_dir( tmp, ln ); Fvector to1; to1.add( from, tmp ); DBG_DrawPHAbstruct( xr_new<SPHDBGDrawTri>( from, to0, to1, ac, solid ) ); } } void DBG_DrawRotationX( const Fmatrix &m, float ang0, float ang1, float size, u32 ac, bool solid, u32 tessel ) { DBG_DrawRotation<0>( ang0 , ang1, m, Fvector().set(0,0,1) ,size,