b8  (_p С.textp .rdatapp p>.data@?@.sdata!!A.sbss`"`".bssp"p"0k$d0"%D<$d0$%D<$d0&%D'6!`!' DH`d p X8lD08@KF8H8F0H0E&EHpad.cPadInitPadReadgcc2_compiled.__gnu_compiled_cgcc2_compiled.__gnu_compiled_cPadInitbb0bb1GetPadBufPadRead7 F(,0:8F0nt" RegDB Name: UninstallString RegDB Root: 2 RegDB TREE: SOFTWARE\Forte\Agent RegDB Root: 1 RegDB TREE: SOFTWARE\Forte\Agent RegDB Root: 2 RegDB TREE: SOFTWARE\Clients\Mail\Forte Agent RegDB Root: 2 RegDB TREE: SOFTWARE\Clients\News\Forte Agent RegDB Root: 2 ju|h\enhemuwuvuoj`K6) 0EWmm\W\i|veZPIRantw^[SFC|@C fEfCtsf{ulCjSj C|@ p ts, t/uSBEu}ȃEC,fCSC|_C^[Ë&&&L&&&&&UVjuV FF,fx:ufxu fF^ÊVu N|AtXt$fF^Àr @r&t!ffF*ffF(ffFjVj!F|@ p K F ufffe<uF$ffI<rCu?fF*~ffdžfdžtfF(~fu fFfjj!jVq^ÍIfF^ÍIu7u.F f8u%HP tjha&Vǘ ^ÐUVjuV9 u)82t 82ul9u fF^ÐfFt h8fFF$jVj'F|@ p$ fFfF$f8t fdž ffdžP^Ëff^ËuAP荓 t'fdž fdžCfdžfF^ÍIfF^ÍIUVjuV} uQFjVj!F|@ p  u3ffF(ffF*fF$ff^ËUVjuV u6FjVj!F|@ p z ujj!jV#^ÐUSVWut  u X C{82tKjWV tjW菨fFf~t%<t<_ƆfF^[ÐN| u fF_^[Ðt[F uïÏb$!@6ï!,(0''! į$ů(Ư,ǯ Cï Ï! `!bdTC$0b Ï! `!bdTC$ Ï! `! bdT$ Ïď!( !dTd$$! `D Ï! `!bdTC$d ! @!bC$ ď!d! z !(@ Ï! `! bdT$ Ïď!( !dTd$d$D Ï! `! bdT$Ï! `d$ ŏ!D!(`= !0 Ï! `!C$C Ï! `!CÏ!(` ! d$ Ï! dD Ï!(` ! !C$Ï,C Ï!(` ! !C(Ï0C Ï!(` ! !C,Ï4C Ï!(` ! !C@ Ï  Ïd$! `D! ''$ !$$$<$!($Y $$$ $!$ (''!įů Ư$ǯ ÏC$ÏC(ÏC,Ó C0Ó C4ÓCďŏ !''!įů Ư$ǯď܇ $ÏC(ÏC,ÏC0Ï C4ÏC8ÏC Ï# D<@<ÏC@!'' !¯Ïb0@Ïb0@

@02$4§Hď '0'8''!(@J !0`HHÏ8ćLŏ $#4c! d4DHHÏ:ćLŏ $#8c! d8DHHÏ<ćLŏ $#<c! d<DH@!D@H''40!8į<ů@ƯDǯ8Ï b$S ! @88Ïd<ŏ!! `$#!(##dC88Ïd@ŏ!! `$#!(##dC88ÏdDŏ!! `$#!(##dC8ď '8Ï b$8ď $! @'~ !0`8@!408''!įď$ŏ$$$d$CÏb$ď$ŏ$Ə $Ǐ $ȏ%`@!''!įC,Q`!@Object_Handler, tOTable, 4, (u_long*)getScratchAddr(0)); // Put object in OTable ready for drawing }; // **** draw the entire track on screen void DrawTrack(Track_Header0 *tTrack, GsOT *tOTable) { MATRIX tLocalWorld, tLocalScreen; int tCounter; for (tCounter = 0; tCounter < tTrack->numberObjects; tCounter++) { GsGetLws(tTrack->Object_Handler[tCounter].coord2, &tLocalWorld, &tLocalScreen); GsSetLightMatrix(&tLocalWorld); GsSetLsMatrix(&tLocalScreen); GsSortObject4( &tTrack->Object_Handler[tCounter], tOTable, 2, (u_long*)getScratchAddr(0)); }; }; // *********************************************************************************** // User defined initialisation functions // *********************************************************************************** // **** Load in and setup a .TIM picture file (in this case to be used for a texture) void LoadTexture(long tMemAddress) { RECT tRect; // rectangular area to be used for TIM GsIMAGE tTim; // TIM image information tMemAddress += 4; // advance memory pointer to data GsGetTimInfo((u_long *) tMemAddress, &tTim); // fill tTim with info from TIM tRect.x = tTim.px; // tell GPU where graphics data is tRect.y = tTim.py; tRect.w = tTim.pw; tRect.h = tTim.ph; LoadImage(&tRect, tTim.pixel); // load video memory with TIM data if((tTim.pmode>>3) & 0x01) // do this if TIM uses a CLUT { tRect.x = tTim.cx; // tell GPU where colour table is tRect.y = tTim.cy; tRect.w = tTim.cw; tRect.h = tTim.ch; LoadImage(&tRect, tTim.clut); // load video memory with CLUT data } DrawSync(0); // force LoadImages to complete } // **** Setup up screen void InitialiseGraphics() { if (IS_PAL_USED) // set up PAL screen { SetVideoMode(MODE_PAL); // define screen as PAL GsInitGraph(PAL_WIDTH, PAL_HEIGHT, GsINTER|GsOFSGPU, 1, 0); // define screen resolution, whether // interlaced, dithered & colour depth GsDefDispBuff(0, 0, 0, PAL_HEIGHT); // define top left corners of // both screen buffers in memory } else // OR set up NTSC screen { SetVideoMode(MODE_NTSC); // define screen as NTSC GsInitGraph(NTSC_WIDTH, NTSC_HEIGHT, GsINTER|GsOFSGPU, 1, 0); GsDefDispBuff(0, 0, 0, NTSC_HEIGHT); // define top left corners of // both screen buffers in memory }; GsInit3D(); Automatic cameraAutomatic camera Static camera Tracking camAutomatic camera Static camera Tracking camera Side camera Overhead camera In car camera Blimp camera Sidecar camera Use all eight buttons to change camera Vertical sync value (%d) pTx@111111100011111000010111110001000010000010001000010000011111000010000000100111111100000100100000100000100100000100000100100111111111111100100000000001100100000000001100100111111111100100111100000100100111100000111100111100000 Сhpx (08@HPX`hpxress) { tMemAddress++; // move pointer past model Id GsMapModelingData(tMemAddress); // specify that .TMD data exists // once past the model Id GsInitCoordinate2(WORLD, &tObject->Object_Coord); // set objects coord system to that // of the world (ie, 0, 0, 0) tMemAddress += 2; // move pointer to actual 3D data GsLinkObject4((u_long)tMemAddress, &tObject->Object_Handler, 0); // associate the model with it's handler tObject->Object_Handler.coord2 = &tObject->Object_Coord; // associate coords of model to // it's handler tObject->Object_Coord.coord.t[0] = tX; // set model's initial X translation tObject->Object_Coord.coord.t[1] = tY; // Y tObject->Object_Coord.coord.t[2] = tZ; // Z tObject->Object_Coord.flg = 0; // Set to zero so object is to be updated }; // Initialise the Track void InitTrack() { long tXpos, tZpos; char tTrackStatus; TrackData.numberObjects = 0; LoadTexture(ROAD_TEX_MEM_ADDR); for (tXpos = 0; tXposnumberObjects; tTrack->Object_Pointer[tNumber] = (u_long *) tMemAddress; tTrack->Object_Pointer[tNumber]++; GsMapModelingData(tTrack->Object_Pointer[tNumber]); GsInitCoordinate2(WORLD, &tTrack->Object_Coord[tNumber]); tTrack->Object_Pointer[tNumber] += 2; GsLinkObject4((u_long)tTrack->Object_Pointer[tNumber], &tTrack->Object_Handler[tNumber], 0); tTrack->Object_Handler[tNumber].attribute = GsDIV1; tTrack->Object_Handler[tNumber].coord2 = &tTrack->Object_Coord[tNumber]; tTrack->Object_Coord[tNumber].coord.t[0] = tX; tTrack->Object_Coord[tNumber].coord.t[1] = tY; tTrack->Object_Coord[tNumber].coord.t[2] = tZ; tTrack->Object_Coord[tNumber].flg = 0; tTrack->numberObjects++; }; // **** Define all lights that will be used in object rendering void InitAllLights() { InitLight(&LightSource[0], 0, 1, 1, 0, 191, 63, 31); // define each light, one at a time InitLight(&LightSource[1], 1, -1, 1, 0, 31, 191, 63); InitLight(&LightSource[2], 2, 0, 0, -1, 255, 255, 2b