Version = 1, targetUnit = 0 Source file(s) , object file overlay id // 0 complex types // 0 typedefs // 3221 labels 0xA9F88 __SN_GP_BASE 0xA9F88 __data_objend 0xA9F88 __data_orgend 0xA9F88 __sdata_obj 0xA9F88 __sdata_org 0x10000 _text_obj 0x10000 _text_org 0x10000 __rdata_obj 0x10000 __rdata_org 0xAAA0C _text_objend 0xAAA0C _text_orgend 0xAAA0C __sdata_objend 0xAAA0C __sdata_orgend 0xAAA0C __ctors_obj 0xAAA0C __ctors_objend 0xAAA0C __ctors_org 0xAAA0C __ctors_orgend 0xAAA0C __dtors_obj 0xAAA0C __dtors_objend 0xAAA0C __dtors_org 0xAAA0C __dtors_orgend 0x9AA0C _text_size 0xAAA10 _bss_obj 0xAAA10 _bss_org 0xAAA10 __sbss_obj 0xAAA10 __sbss_org 0xAAA10 NumDriver2Curves 0xE6308 _bss_objend 0xE6308 _bss_orgend 0xE6308 __bss_objend 0xE6308 __bss_orgend 0x3B8F8 _bss_size 0x1C0000 _frnt_obj 0x1C0000 _frnt_org 0x1C0000 _frnt_rdata_obj 0x1C0000 _frnt_rdata_org 0x1CC5E0 _frnt_objend 0x1CC5E0 _frnt_orgend 0x1CC5E0 _frnt_bss_objend 0x1CC5E0 _frnt_bss_orgend 0x1CC5E0 _frnt_ctors_obj 0x1CC5E0 _frnt_ctors_objend 0x1CC5E0 _frnt_ctors_org 0x1CC5E0 _frnt_ctors_orgend 0x1CC5E0 _frnt_dtors_obj 0x1CC5E0 _frnt_dtors_objend 0x1CC5E0 _frnt_dtors_org 0x1CC5E0 _frnt_dtors_orgend 0xC5E0 _frnt_size 0xE7000 _lead_obj 0xE7000 _lead_org 0xE7000 _path_obj 0xE7000 _path_org 0xE7000 _lead_rdata_obj 0xE7000 _lead_rdata_org 0xE7000 _path_rdata_obj 0xE7000 _path_rdata_objend 0xE7000 _path_rdata_org 0xE7000 _path_rdata_orgend 0xE7000 _path_text_obj 0xE7000 _path_text_org 0xE7000 popNode 0xECED0 _lead_objend 0xECED0 _lead_orgend 0xECED0 _lead_bss_objend 0xECED0 _lead_bss_orgend 0xECED0 _lead_ctors_obj 0xECED0 _lead_ctors_objend 0xECED0 _lead_ctors_org 0xECED0 _lead_ctors_orgend 0xECED0 _lead_dtors_obj 0xECED0 _lead_dtors_objend 0xECED0 _lead_dtors_org 0xECED0 _lead_dtors_orgend 0x5ED0 _lead_size 0xF27C8 _path_objend 0xF27C8 _path_orgend 0xF27C8 _path_bss_objend 0xF27C8 _path_bss_orgend 0xF27C8 _path_ctors_obj 0xF27C8 _path_ctors_objend 0xF27C8 _path_ctors_org 0xF27C8 _path_ctors_orgend 0xF27C8 _path_dtors_obj 0xF27C8 _path_dtors_objend 0xF27C8 _path_dtors_org 0xF27C8 _path_dtors_orgend 0xB7C8 _path_size 0xF3000 _mcard_obj 0xF3000 _mcard_org 0xF3000 _mcard_rdata_obj 0xF3000 _mcard_rdata_org 0x10F288 _mcard_objend 0x10F288 _mcard_orgend 0x10F288 _mcard_bss_objend 0x10F288 _mcard_bss_orgend 0x10F288 _mcard_ctors_obj 0x10F288 _mcard_ctors_objend 0x10F288 _mcard_ctors_org 0x10F288 _mcard_ctors_orgend 0x10F288 _mcard_dtors_obj 0x10F288 _mcard_dtors_objend 0x10F288 _mcard_dtors_org 0x10F288 _mcard_dtors_orgend 0x1C288 _mcard_size 0x12D18 __rdata_objend 0x12D18 __rdata_orgend 0x12D18 __text_obj 0x12D18 __text_org 0x12D18 sdSelfModifyingCode 0x2D18 __rdata_size 0x9B320 __text_objend 0x9B320 __text_orgend 0x9B320 __data_obj 0x9B320 __data_org 0x9B320 sea 0x88608 __text_size 0xEC68 __data_size 0xA84 __sdata_size 0x0 __ctors_size 0x0 __dtors_size 0x0 _lead_sdata_size 0x0 _lead_sbss_size 0x0 _lead_ctors_size 0x0 _lead_dtors_size 0x0 _path_rdata_size 0x0 _path_sdata_size 0x0 _path_sbss_size 0x0 _path_ctors_size 0x0 _path_dtors_size 0x0 _frnt_sdata_size 0x0 _frnt_sbss_size 0x0 _frnt_ctors_size 0x0 _frnt_dtors_size 0x0 _mcard_sdata_size 0x0 _mcard_sbss_size 0x0 _mcard_ctors_size 0x0 _mcard_dtors_size 0xAB3A0 __sbss_objend 0xAB3A0 __sbss_orgend 0xAB3A0 __bss_obj 0xAB3A0 __bss_org 0xAB3A0 cyclecluts 0x990 __sbss_size 0x3AF68 __bss_size 0xE70A0 _lead_rdata_objend 0xE70A0 _lead_rdata_orgend 0xE70A0 _lead_text_obj 0xE70A0 _lead_text_org 0xE70A0 leadRand 0xA0 _lead_rdata_size 0xECBE8 _lead_text_objend 0xECBE8 _lead_text_orgend 0xECBE8 _lead_data_obj 0xECBE8 _lead_data_org 0xECBE8 pathParams 0x5B48 _lead_text_size 0xECC0C _lead_data_objend 0xECC0C _lead_data_orgend 0xECC0C _lead_sdata_obj 0xECC0C _lead_sdata_objend 0xECC0C _lead_sdata_org 0xECC0C _lead_sdata_orgend 0xECC0C _lead_sbss_obj 0xECC0C _lead_sbss_objend 0xECC0C _lead_sbss_org 0xECC0C _lead_sbss_orgend 0x24 _lead_data_size 0xECC10 _lead_bss_obj 0xECC10 _lead_bss_org 0xECC10 d.21 0x2C0 _lead_bss_size 0xE9108 _path_text_objend 0xE9108 _path_text_orgend 0xE9108 _path_data_obj 0xE9108 _path_data_org 0xE9108 ends 0x2108 _path_text_size 0xE91A4 _path_data_objend 0xE91A4 _path_data_orgend 0xE91A4 _path_sdata_obj 0xE91A4 _path_sdata_objend 0xE91A4 _path_sdata_org 0xE91A4 _path_sdata_orgend 0xE91A4 _path_sbss_obj 0xE91A4 _path_sbss_objend 0xE91A4 _path_sbss_org 0xE91A4 _path_sbss_orgend 0x9C _path_data_size 0xE91A8 _path_bss_obj 0xE91A8 _path_bss_org 0xE91A8 omap 0x9620 _path_bss_size 0x1C0974 _frnt_rdata_objend 0x1C0974 _frnt_rdata_orgend 0x1C0974 _frnt_text_obj 0x1C0974 _frnt_text_org 0x1C0974 SetVariable 0x974 _frnt_rdata_size 0x1C676C _frnt_text_objend 0x1C676C _frnt_text_orgend 0x1C676C _frnt_data_obj 0x1C676C _frnt_data_org 0x1C676C carSelectPlayerText 0x5DF8 _frnt_text_size 0x1C6D0C _frnt_data_objend 0x1C6D0C _frnt_data_orgend 0x1C6D0C _frnt_sdata_obj 0x1C6D0C _frnt_sdata_objend 0x1C6D0C _frnt_sdata_org 0x1C6D0C _frnt_sdata_orgend 0x1C6D0C _frnt_sbss_obj 0x1C6D0C _frnt_sbss_objend 0x1C6D0C _frnt_sbss_org 0x1C6D0C _frnt_sbss_orgend 0x5A0 _frnt_data_size 0x1C6D10 _frnt_bss_obj 0x1C6D10 _frnt_bss_org 0x1C6D10 result.42 0x58D0 _frnt_bss_size 0xF3644 _mcard_rdata_objend 0xF3644 _mcard_rdata_orgend 0xF3644 _mcard_text_obj 0xF3644 _mcard_text_org 0xF3644 card_start__6MCSLOT 0x644 _mcard_rdata_size 0x10EB40 _mcard_text_objend 0x10EB40 _mcard_text_orgend 0x10EB40 _mcard_data_obj 0x10EB40 _mcard_data_org 0x10EB40 _6MCSLOT.s_init 0x1B4FC _mcard_text_size 0x10EE34 _mcard_data_objend 0x10EE34 _mcard_data_orgend 0x10EE34 _mcard_sdata_obj 0x10EE34 _mcard_sdata_objend 0x10EE34 _mcard_sdata_org 0x10EE34 _mcard_sdata_orgend 0x10EE34 _mcard_sbss_obj 0x10EE34 _mcard_sbss_objend 0x10EE34 _mcard_sbss_org 0x10EE34 _mcard_sbss_orgend 0x2F4 _mcard_data_size 0x10EE38 _mcard_bss_obj 0x10EE38 _mcard_bss_org 0x10EE38 _6MCSLOT.s_copyBlockInfo 0x450 _mcard_bss_size 0x12EF4 FindSurfaceD2 0x130D4 sdHeightOnPlane 0x1322C RoadInCell 0x1346C sdGetCell 0x136C0 ProcessStraightsDriver2Lump 0x136F4 ProcessCurvesDriver2Lump 0x13728 ProcessJunctionsDriver2Lump 0x137CC MapHeight 0x1380C GetSurfaceIndex 0x13848 sdGetBSP 0x138F0 FindRoadInBSP 0x13980 ColourCycle 0x13CAC InitAnimatingObjects 0x13DF8 animate_object 0x146A4 animate_garage_door 0x14828 InitSpooledAnimObj 0x148A0 DrawAnimatingObject 0x14950 FindSmashableObjects 0x149A8 int_garage_door 0x149B4 InitCyclingPals 0x14A58 InitOverlays 0x14C3C DisplayOverlays 0x14DA8 DrawPercentageBar 0x152D4 DrawProximityBar 0x157F4 DrawDrivingGameOverlays 0x15E70 SetFullscreenDrawing 0x15F20 InitPercentageBar 0x15F58 EnablePercentageBar 0x15F6C SetColourByValue 0x16098 TransparencyOn 0x16114 UpdateFlashValue 0x16184 PrintScoreTableTime 0x16280 DrawTargetBlip 0x16578 DrawTargetArrow 0x16814 DrawPlayerDot 0x16AE8 ProcessOverlayLump 0x16C0C Long2DDistance 0x16D14 DrawOverheadMap 0x17C30 DrawFullscreenMap 0x183E8 DrawCopIndicators 0x185A0 DrawMultiplayerMap 0x18980 FlashOverheadMap 0x18AA0 LoadMapTile 0x18BF4 draw_box 0x18D54 DrawN 0x18F18 DrawCompass 0x19194 DrawBigCompass 0x193B4 CopIndicator 0x19594 DrawSightCone 0x197BC InitOverheadMap 0x198E0 InitMultiplayerMap 0x19994 WorldToMultiplayerMap 0x19A60 SetMapPos 0x19AF0 WorldToOverheadMapPositions 0x19D0C SetFullscreenMapMatrix 0x19DE8 WorldToFullscreenMap 0x19E7C WorldToFullscreenMap2 0x19F44 ProcessPalletLump 0x1A094 load_civ_palettes 0x1A09C InitPadRecording 0x1A234 SaveReplayToBuffer 0x1A798 LoadReplayFromBuffer 0x1AD50 cjpRecord 0x1AF34 valid_region 0x1AFFC cjpPlay 0x1B090 GetPingInfo 0x1B118 LoadAttractReplay 0x1B17C AllocateReplayStream 0x1B1F0 Get 0x1B280 Put 0x1B364 RecordWaypoint 0x1B434 UnpackRNC 0x1B488 Unpack 0x1BA88 InitTextureNames 0x1BA90 TannerStuckInCar 0x1BBB8 StoreGameFlags 0x1BBE8 TannerCanEnterCar 0x1BCD4 SetCameraVector 0x1BCFC Apply_Inv_CameraMatrix 0x1BD30 FrustrumCheck16 0x1BDEC FrustrumCheck 0x1BEE4 Asm_PlotSprite 0x1C160 PointFaceCheck 0x1C380 CarCarCollision3 0x1C408 collided3d 0x1C51C bcollided2d 0x1C8C0 bFindCollisionPoint 0x1CC30 bFindCollisionTime 0x1CEEC ApplyDamage 0x1D0B0 DamageCar3D 0x1D454 DamageCar 0x1D68C CarBuildingCollision 0x1E3E8 HandleThrownBombs 0x1E810 DrawThrownBombs 0x1EA00 BombThePlayerToHellAndBack 0x1EC58 BombCollisionCheck 0x1ED18 ExplosionCollisionCheck 0x1F4F4 AddFlash 0x1F570 InitThrownBombs 0x1F5F4 InitCamera 0x1FA20 ModifyCamera 0x1FC18 CameraCollisionCheck 0x2003C PlaceCameraFollowCar 0x2050C PlaceCameraInCar 0x20904 PlaceCameraAtLocation 0x20A10 TurnHead 0x20B08 PointAtTarget 0x20BC0 OK_To_Zoom 0x20C70 SetBasePos 0x20C94 plotNewCarModel 0x20EA0 plotCarPolyGT3 0x210B8 DrawCar 0x21AF8 DrawCarWheels 0x22180 DrawWheelObject 0x22458 ComputeCarLightingLevels 0x22860 buildNewCars 0x22960 buildNewCarFromModel 0x230C8 MangleWheelModels 0x23390 GetCarPalIndex 0x233DC DrawCarObject 0x234DC PlayerCarFX 0x235F8 setupLightingMatrices 0x23750 restoreLightingMatrices 0x237B8 plotCarPolyB3 0x238C4 plotCarPolyFT3 0x23A20 plotCarPolyGT3nolight 0x23BAC GetFirstPackedCop 0x23DC0 ClearCopUsage 0x23DE8 InitCar 0x24028 GetNextRoadInfo 0x26964 InitNodeList 0x26CAC GetNodePos 0x26F20 CheckChangeLanes 0x27530 CreateNewNode 0x280D8 InitCivState 0x282E8 PingOutAllSpecialCivCars 0x2840C PingOutAllCivCarsAndCopCars 0x28554 CheckPingOut 0x286E0 CreateCivCarWotDrivesABitThenStops 0x28960 CreateStationaryCivCar 0x28DB4 PingInCivCar 0x2A4C4 AttemptUnPark 0x2A5FC CivAccelTrafficRules 0x2ABA8 SetUpCivCollFlags 0x2B26C CivAccel 0x2B53C CivSteerAngle 0x2B8E4 CivFindStation 0x2BAEC CivFindPointOnPath 0x2BCF4 CreateRoadblock 0x2CDA4 InitCivCars 0x2CE10 CivControl 0x2CF18 TrafficLightCycle 0x2CF80 PingOutCar 0x2D084 CivCarFX 0x2D11C FindClosestCar 0x2D220 SetUpTrafficLightPhase 0x2D24C NotTravellingAlongCurve 0x2D298 decomp_asm 0x2D304 BuildWorldMatrix 0x2D3F8 Calc_Object_MatrixYZX 0x2D470 _RotMatrixX 0x2D49C _RotMatrixY 0x2D4C8 _RotMatrixZ 0x2D4F4 RotMatrixXYZ 0x2D51C _MatrixRotate 0x2D55C InvertMatrix 0x2D5C8 ScaleCamera 0x2D678 Getlong 0x2D6A8 RandomInit 0x2D724 Random2 0x2D78C WibbleDownTheRoad 0x2D99C InitCops 0x2DAD8 ControlCops 0x2DEFC CopControl1 0x2ECD8 ControlCopDetection 0x2F3CC ControlNumberOfCops 0x2F60C CopControl 0x2F680 InitCopState 0x2F6FC PassiveCopTasks 0x2F7F8 InitCopData 0x2F844 UpdateCopSightData 0x2F8DC FindCost 0x2F994 AddReverseLight 0x2FAEC AddIndicatorLight 0x2FDE4 AddBrakeLight 0x30148 AddCopCarLight 0x30544 AddNightLights 0x30D9C AddSmokingEngine 0x30FAC AddFlamingEngine 0x31160 LoadCosmetics 0x311B0 ProcessCosmeticsLump 0x31360 SetupSpecCosmetics 0x31398 DrawInGameCutscene 0x314E8 TriggerChase 0x316EC ReleaseInGameCutscene 0x31A20 TriggerInGameCutsceneSystem 0x31EDC SetNullPlayer 0x31F60 SetNullPlayerDontKill 0x31FE0 DestroyPlayer 0x32118 LoadCutsceneToReplayBuffer 0x3243C LoadCutsceneToBuffer 0x325C0 InitInGameCutsceneVariables 0x3262C HandleInGameCutscene 0x32740 TriggerInGameCutscene 0x3283C CalcInGameCutsceneSize 0x328C8 PreLoadInGameCutscene 0x328E8 CutsceneCameraChange 0x329B4 LoadInGameCutscene 0x32A34 FindNextCutChange 0x32A98 LoadCutsceneInformation 0x32B54 FreeCutsceneBuffer 0x32BC0 IsCutsceneResident 0x32C08 ShowCutsceneError 0x32C10 PlacePoolForCar 0x33574 AddLeaf 0x337AC InitDebrisNames 0x33B9C InitDebris 0x33FA8 AddGroundDebris 0x34138 DrawSmashable_sprites 0x34424 AddSmallStreetLight 0x34858 AddLightEffect 0x34C6C PreLampStreak 0x34D1C damage_lamp 0x34DAC damage_object 0x34F64 AddTrafficLight 0x352CC ShowCarlight 0x3555C ShowLight1 0x35750 ShowLight 0x3642C ShowGroundLight 0x36688 RoundShadow 0x368D8 ShowFlare 0x36B6C DisplayWater 0x36E18 DisplaySpark 0x37158 GetSmokeDrift 0x37250 Setup_Debris 0x37474 Setup_Smoke 0x37950 Setup_Sparks 0x37B14 DisplayDebris 0x38008 HandleDebris 0x3877C DisplaySmoke 0x38CB4 add_haze 0x38E08 DrawRainDrops 0x3919C AddRainDrops 0x39468 DisplaySplashes 0x397C0 DisplayLightReflections 0x39A54 AllocateDebris 0x39A90 AllocateLeaf 0x39ACC AllocateSmoke 0x39B08 find_lamp_streak 0x39B78 DoLightning 0x39C68 FindCarLightFade 0x39C90 InitFXPos 0x39D68 ReleaseDebris 0x39D8C ReleaseLeaf 0x39DB0 ReleaseRainDrop 0x39DD4 ReleaseSmoke 0x39DF8 SetupRain 0x39E54 SwirlLeaves 0x39FA8 GetDebrisColour 0x3A000 DoWeather 0x3A0BC InitThunder 0x3A120 RequestThunder 0x3A144 DoThunder 0x3A234 MoveSmashable_object 0x3A2D4 AllocateRainDrop 0x3A310 DentCar 0x3A6E4 CreateDentableCar 0x3A874 InitHubcap 0x3A8F8 LoseHubcap 0x3AB4C MoveHubcap 0x3AE60 ProcessDentLump 0x3B1C0 InitialiseDenting 0x3B1F0 LoadDenting 0x3B240 SetupSpecDenting 0x3B2E4 EditCamera 0x3B548 RecordCamera 0x3B794 CheckCameraChange 0x3B8C8 IsMovingCamera 0x3BBA8 CameraBar 0x3C1B0 ShowIcons 0x3C5BC ShowReplayMenu 0x3C7A8 ControlReplay 0x3DE60 DoAutoDirect 0x3E328 SelectCameraCar 0x3E53C InvalidCamera 0x3E79C InitDirectorVariables 0x3E808 DeleteCurrentCamera 0x3E89C setCamera 0x3E94C FindNextChange 0x3E9B8 FindFreeCamera 0x3E9F8 deleteCamera 0x3EA40 DeleteAllCameras 0x3EAA4 ShowReplayOptions 0x3EAF0 NoMoreCamerasErrorMessage 0x3EB6C FirstCamera 0x3EB9C dist 0x3EC0C SetPlaybackCamera 0x3ECC4 SetCameraReturnedFromCutscene 0x3ED7C addSubdivSpriteShadow 0x3EF64 DrawSprites 0x3F5F0 GetNextPackedCop 0x3F6B0 DrawMapPSX 0x40218 SetupPlaneColours 0x40408 SetupDrawMapPSX 0x40534 InitFrustrumMatrix 0x40608 ProcessMapLump 0x407D8 DrawAllTheCars 0x40A90 PlotBuildingModelSubdivNxN 0x411F4 DrawAllBuildings 0x4143C RenderModel 0x415E4 normalIndex 0x417A4 SetFrustrumMatrix 0x417DC Set_Inv_CameraMatrix 0x41814 CalcObjectRotationMatrices 0x418BC PlotMDL_less_than_128 0x418E8 UnpackCellObject 0x419A8 Apply_InvCameraMatrixAndSetMatrix 0x41A50 Apply_InvCameraMatrixSetTrans 0x41B10 Tile1x1 0x41D7C DrawTILES 0x420B0 makeMesh 0x42650 drawMesh 0x42AEC SubdivNxM 0x42F34 ProcessSubDivisionLump 0x42F40 TileNxN 0x43090 ProcessLowDetailTable 0x4310C InitDrivingGames 0x4326C HandleDrivingGames 0x438DC DrawDrivingGames 0x439FC CarConeCollision 0x43AE8 SetSmashedCone 0x43CE0 MoveSmashedCones 0x43DEC DrawSmashedCone 0x43F34 GetConePos 0x44034 DrawCone 0x44168 DrawSmashedCones 0x44244 FadeInHiresScreen 0x445F4 FadeOutHiresScreen 0x448CC SetPleaseWait 0x44A40 CheckForCorrectDisc 0x44CE0 ShowHiresScreens 0x44DA0 SetupDefDispEnv 0x44E40 SetupDefDrawEnv 0x44E88 Env_MakeColourAddTable 0x44F08 Init_Reflection_Mapping 0x44F60 AddEnvSounds 0x45AB8 GetVisValue 0x45C68 VisibilityLists 0x460EC InitTrain 0x46258 SetUpEvents 0x47538 SetCamera 0x479DC StepFromToEvent 0x47BD4 StepPathEvent 0x4830C StepHelicopter 0x48A60 StepEvents 0x49364 DrawFerrisWheel 0x49684 DrawRotor 0x49C38 DrawEvents 0x4A688 EventSurface 0x4AA78 TriggerEvent 0x4B29C SpecialCamera 0x4B5FC DetonatorTimer 0x4BAB0 MultiCarEvent 0x4BBD4 InitEvents 0x4BC50 EventCollisions 0x4BD2C OffsetTarget 0x4BD6C MakeEventTrackable 0x4BDA0 OnBoat 0x4BE24 BoatOffset 0x4BE5C SetElTrainRotation 0x4BEB8 InitDoor 0x4BF54 InitEventCamera 0x4C014 ResetEventCamera 0x4C0A4 NextNode 0x4C158 GetBridgeRotation 0x4C208 TriggerDoor 0x4C280 ScreenShake 0x4C330 NoteFelony 0x4C8B4 AdjustFelony 0x4CC28 CheckPlayerMiscFelonies 0x4D280 InitFelonySystem 0x4D2B8 CarHitByPlayer 0x4D364 InitFelonyDelayArray 0x4D3A0 InitFelonyData 0x4D420 GetCarHeading 0x4D430 GetCarDirectionOfTravel 0x4D478 ReInitSystem 0x4D518 PlayFMV 0x4D5D0 PlayRender 0x4D690 ResidentModelsBodge 0x4D784 LoadLevelSFX 0x4DE30 StartGameSounds 0x4E188 GetEngineRevs 0x4E2E8 ControlCarRevs 0x4E560 ControlSpeech 0x4E710 InitDopplerSFX 0x4E790 DoDopplerSFX 0x4F4A0 DoPoliceLoudhailer 0x4F668 CollisionSound 0x4F984 ExplosionSound 0x4FB94 JerichoSpeak 0x4FC90 SoundTasks 0x500E4 InitMusic 0x5027C Tunnels 0x50400 AddTunnels 0x50C08 AddEnvSnd 0x50E08 IdentifyZone 0x514BC CalcEffPos 0x517D0 CalcEffPos2 0x51F0C UpdateEnvSnd 0x52168 SetEnvSndVol 0x52190 CopSay 0x5228C PlaySpeech 0x522EC CarHasSiren 0x52388 InitEnvSnd 0x5243C InitTunnels 0x52460 LoadBankFromLump 0x52510 SpecialVehicleKludge 0x52540 MapCarIndexToBank 0x525F8 DoSpeech 0x52654 InitSpeechQueue 0x52694 BodSay 0x526D0 MissionSay 0x5270C jsqrt 0x527C0 FunkUpDaBGMTunez 0x52848 AddTunnel 0x52904 SetEnvSndPos 0x52948 InitLeadHorn 0x52954 LeadHorn 0x52A28 GameStart 0x52E98 ReInitFrontend 0x52FE8 RunMissionLadder 0x532B8 LaunchGame 0x535D8 GetRandomChase 0x536B0 StartRender 0x536D8 FindPrevMissionFromLadderPos 0x53740 FindMissionLadderPos 0x5381C InitCarPhysics 0x539E8 TempBuildHandlingMatrix 0x53B08 UpdateCarPoints 0x53C00 GlobalTimeStep 0x551EC SetShadowPoints 0x553CC LongQuaternion2Matrix 0x554F0 initOBox 0x556E0 CheckCarToCarCollisions 0x55A9C ProcessCarPad 0x562AC TerminateSkidding 0x56350 CheckCarEffects 0x568D8 jump_debris 0x56A0C StepCarPhysics 0x56A6C InitialiseCarHandling 0x56A74 nose_down 0x56AE4 RebuildCarMatrix 0x56C24 FixCarCos 0x56CB8 InitSkidding 0x56CEC GetPlayerId 0x56D54 AddExplosion 0x56E44 HandleExplosion 0x56FC0 initExplosion 0x572A8 DrawExplosion 0x57B0C InitExObjects 0x57B50 DrawAllExplosions 0x57BF0 SaveConfigData 0x57DF0 LoadConfigData 0x57FD4 CalcReplayDataSize 0x57FF4 SaveReplayData 0x58014 LoadReplayData 0x58034 CalcGameDataSize 0x5803C SaveGameData 0x580CC LoadGameData 0x58164 CalcConfigDataSize 0x5816C ShowLoading 0x582AC FadeGameScreen 0x583F4 ShowLoadingScreen 0x58794 SetupFadePolys 0x58824 DrawFadePoly 0x589B0 SetupScreenFade 0x589D0 CloseShutters 0x58B08 DisplayMissionTitle 0x58C08 ProcessLumps 0x59050 LoadGameLevel 0x59238 InitModelNames 0x59330 GameInit 0x59A44 StepSim 0x5A8DC GameLoop 0x5AB28 StepGame 0x5B384 main 0x5B54C UpdatePlayerInformation 0x5B888 RenderGame2 0x5BCE4 InitGameVariables 0x5BF74 DealWithHorn 0x5C16C Havana3DOcclusion 0x5C458 DrawGame 0x5C574 EndGame 0x5C590 EnablePause 0x5C5D0 CheckForPause 0x5C668 FadeScreen 0x5C6E0 RenderGame 0x5C81C ReplayLog_Fnarr_He_Said_Log 0x5C824 CheckUnpackNewRegions 0x5CC00 ControlMap 0x5CD80 InitMap 0x5CFA8 PVSDecode 0x5D224 GetPVSRegionCell2 0x5D36C InitCellData 0x5D40C FindModelPtrWithName 0x5D4C4 FindModelIdxWithName 0x5D560 PositionVisible 0x5D61C newPositionVisible 0x5D6C4 ProcessRoadsLump 0x5D6CC ProcessJunctionsLump 0x5D6D4 ProcessRoadBoundsLump 0x5D6DC ProcessJuncBoundsLump 0x5D6E4 GetVisSetAtPosition 0x5D7BC NewProcessRoadMapLump 0x5D814 GetMissionSound 0x5D950 DoCutsceneSound 0x5DD10 InitializeMissionSound 0x5E020 DoMissionSound 0x5EE00 SilenceThisCar 0x5F12C RequestXA 0x5F1B4 HandleRequestedXA 0x5F224 InitializeCutsceneSound 0x5F25C SetMSoundVar 0x5F294 AdjustPlayerCarVolume 0x5F2FC DrawMission 0x5F56C DrawWorldTarget 0x5F864 DrawMultiplayerTarget 0x5FA88 DrawTimer 0x5FB7C DisplayPlayerPosition 0x5FBC4 DrawMessage 0x5FC3C DrawWorldTargets 0x5FC8C DrawOverheadTargets 0x5FCDC DrawFullscreenTargets 0x5FD2C DrawMultiplayerTargets 0x5FD7C DrawOverheadTarget 0x5FE94 DrawFullscreenTarget 0x5FFAC StorePlayerPosition 0x60248 RestorePlayerPosition 0x603B0 StoreCarPosition 0x604E4 RestoreCarPosition 0x60740 StoreEndData 0x607E4 RestoreStartData 0x6084C InitialiseMissionDefaults 0x60A74 LoadMission 0x61274 HandleMission 0x614A4 HandleTimer 0x61684 RegisterChaseHit 0x61784 Swap2Cars 0x61C5C HandleMissionThreads 0x61E3C MRCommand 0x62470 MRProcessTarget 0x63728 MRCreateCar 0x639A0 PreProcessTargets 0x63B78 HandleGameOver 0x63F84 SetMissionComplete 0x641A8 ActivateNextFlag 0x64268 PauseMissionTimer 0x642A8 SetMissionMessage 0x64348 SetPlayerMessage 0x643C4 TargetComplete 0x64408 TargetActive 0x6444C SetConfusedCar 0x64498 MROperator 0x645AC MRFunction 0x64614 MRInitialiseThread 0x64630 MRStartThread 0x64690 MRStopThread 0x6469C MRCommitThreadGenocide 0x646E0 MRJump 0x6472C MRPush 0x64744 MRPop 0x64760 MRGetParam 0x647CC MRGetVariable 0x648B0 MRSetVariable 0x649E4 MRRequestCar 0x64A24 MRHandleCarRequests 0x64A50 MRCancelCarRequest 0x64A74 Handle321Go 0x64AD0 CompleteAllActiveTargets 0x64B38 SetMissionFailed 0x64BD8 SetMissionOver 0x64C24 CalcLapTime 0x64C60 SetCarToBeStolen 0x64CD0 MakePhantomCarEqualPlayerCar 0x64CFC ProcessMDSLump 0x64E6C ProcessCarModelLump 0x65134 GetCarModel 0x6520C DrawBodySprite 0x6594C StoreVertexLists 0x65AD8 SetupTannerSkeleton 0x65CD8 newShowTanner 0x66648 newRotateBones 0x66FB8 GetModelVertPtr 0x670CC DrawCiv 0x678D0 DrawTanner 0x67D44 DrawCharacter 0x681EC InitTannerShadow 0x68358 TannerShadow 0x68B2C DoCivHead 0x69438 DrawObject 0x69874 wjmDraw3 0x69A38 ProcessMotionLump 0x69AB8 SetupPedMotionData 0x69AD8 SetSkelModelPointers 0x69B6C SetupPedestrian 0x69BA4 CellEmpty 0x69E1C RaySlabsIntersection 0x69FB4 lineClear 0x6A498 CollisionCopList 0x6A64C CheckScenaryCollisions 0x6ADBC QuickBuildingCollisionCheck 0x6B220 DoScenaryCollisions 0x6B2EC GlobalPositionToCellNumber 0x6B3E4 CellAtPositionEmpty 0x6B430 SetCopListCell 0x6B45C BuildCollisionCopList 0x6B480 InitControllers 0x6B5A8 ReadControllers 0x6B6F0 MapPad 0x6B8E0 HandleDualShock 0x6BBC4 HandlePadVibration 0x6BDF8 CloseControllers 0x6BE38 SetPadVibration 0x6BEB4 StopPadVibration 0x6BEEC StopDualShockMotors 0x6BEF4 SetDuplicatePadData 0x6BF24 ClearPad 0x6BF50 ShowPauseMenu 0x6C2AC InitaliseMenu 0x6C6B8 SetupMenu 0x6C7F4 DrawVisibleMenus 0x6CBE8 ControlMenu 0x6D044 EnterScoreName 0x6D324 CreateScoreNames 0x6D694 DrawHighScoreMenu 0x6D9B0 SaveReplay 0x6D9D4 SaveGame 0x6D9F8 EnterName 0x6DA18 MaxMenuStringLength 0x6DAD0 PauseMap 0x6DB34 SfxVolume 0x6DC04 MusicVolume 0x6DCD4 DrawPauseMenus 0x6DD34 IHaveThePower 0x6DF54 ProcessTannerPad 0x6E408 InitTanner 0x6E5C4 InitPedestrians 0x6E6C4 ActivatePlayerPedestrian 0x6EC88 PlaceRoadBlockCops 0x6F00C CreatePedAtLocation 0x6F16C ControlPedestrians 0x6F2DC PedDoNothing 0x6F5AC PedUserRunner 0x6F80C SetupGetOutCar 0x6FA3C SetupGetInCar 0x6FD08 TannerCameraHandler 0x6FF48 TannerSitDown 0x700D0 AnimatePed 0x7047C PingInPedestrians 0x70878 FindPointOfCollision 0x70A9C TannerCarCollisionCheck 0x71054 SetupCivJump 0x71324 CivPedWalk 0x715FC CorrectPathPosition 0x71608 CalcPedestrianDirection 0x717AC FindTannerASeat 0x718C8 add_seated 0x71A5C set_coll_box 0x71B7C BuildCarCollisionBox 0x71E0C CalculatePedestrianInterest 0x71F54 DestroyPedestrians 0x71FB4 DestroyPedestrian 0x720AC CreatePedestrian 0x7211C HandlePedestrians 0x7216C DeActivatePlayerPedestrian 0x72290 DrawAllPedestrians 0x72430 TannerActionHappening 0x72478 SetTannerPosition 0x72500 SetPedestrianTurn 0x72584 PedSurfaceType 0x725B8 IsPavement 0x72644 FindSeated 0x72738 CheckForCar 0x7283C PedestrianActionInit_WalkToTarget 0x728C8 SetupTannerSitDown 0x72904 SetupPressButton 0x72944 PedUserWalker 0x72A10 PedCarryOutAnimation 0x72B5C PedGetInCar 0x72BEC PedGetOutCar 0x72C90 PedPressButton 0x72CE0 CivPedDoNothing 0x72CE8 CivPedSit 0x72CF0 CivPedJump 0x72DA0 CopStand 0x72DFC CivGetIn 0x72EE4 TannerCollision 0x72FD0 DestroyCivPedestrians 0x73038 SetupDoNowt 0x7307C SetupWalker 0x730B8 SetupRunner 0x730FC SetupBack 0x7313C SetupCivPedRouteData 0x731F8 PingOutPed 0x73270 SetupCivPedWalk 0x732C0 CheckForPlayerCar 0x73328 ProcessChairLump 0x73334 ChangeCarPlayerToPed 0x7350C ChangePedPlayerToCar 0x73898 UpdatePlayers 0x739D8 InitPlayer 0x73C0C RequestSlightPauseBeforeCarSoundStarts 0x73C54 HaveCarSoundStraightAway 0x73C8C MakeTheCarShutUp 0x73CC8 LoadFont 0x73EA0 PrintString 0x74140 PrintDigit 0x74364 PrintStringBoxed 0x745DC PrintScaledString 0x74858 DrawButton 0x74A10 SetTextColour 0x74A24 StringWidth 0x74AB0 OutputString 0x74B8C PrintStringRightAligned 0x74BD8 PrintStringCentred 0x74C28 StoreClut2 0x74C64 SetCLUT16Flags 0x74D34 PrintStringFeature 0x74D54 GetNextWord 0x74D94 SetFontTPage 0x74E54 InitButtonTextures 0x74EB4 ROADS_GetRouteData 0x74EC0 InitialiseScoreTables 0x7503C OnScoreTable 0x751F8 AddScoreToTable 0x7526C CheckGetawayPlacing 0x752BC CheckTrailblazerPlacing 0x75338 CheckCheckpointPlacing 0x75388 CheckSurvivalPlacing 0x753D8 ResetTable 0x75408 GetTyreTrackPositions 0x75540 AddTyreTrack 0x759E0 DrawTyreTracks 0x75F34 InitShadow 0x76108 SubdivShadow 0x766CC PlaceShadowForCar 0x76A40 clipAgainstZ 0x76CD4 clippedPoly 0x77138 sQuad 0x77524 InitTyreTracks 0x77558 SetTyreTrackOldPositions 0x775C8 LoadSky 0x7795C DrawSkyDome 0x77A8C DrawLensFlare 0x780BC DisplaySun 0x78544 DisplayMoon 0x787B0 TunnelSkyFade 0x78964 calc_sky_brightness 0x78B18 PlotSkyPoly 0x78EC4 PlotHorizonMDL 0x790E4 InitSound 0x791D4 ClearChannelFields 0x79250 ResetSound 0x79330 CompleteSoundSetup 0x79504 SetChannelPitch 0x795C4 ComputeDoppler 0x79734 PauseXM 0x79794 PauseSFX 0x79958 UnPauseXM 0x799B0 UnPauseSFX 0x79B38 SoundHandler 0x79BCC LoadSoundBankDynamic 0x79E04 GetFreeChannel 0x79F38 UpdateVolumeAttributesS 0x7A360 CalculateVolume 0x7A534 FESound 0x7A6C0 SetReverbState 0x7A704 SetReverbInGameState 0x7A75C SetReverbChannelState 0x7A7B0 SetMasterVolume 0x7A7F8 StartSound 0x7A894 Start3DSoundVolPitch 0x7A994 Start3DTrackingSound 0x7AA78 SetChannelVolume 0x7AB3C AllocateReverb 0x7ABA8 SetPlayerOwnsChannel 0x7ABCC SetChannelPosition3 0x7ACD8 PauseSound 0x7AD10 UnPauseSound 0x7AD40 StopChannel 0x7ADF4 StopAllChannels 0x7AE34 LockChannel 0x7AE64 UnlockChannel 0x7AE90 LoadSoundBank 0x7AF84 FreeXM 0x7AFD0 StartXM 0x7B050 StopXM 0x7B074 SetXMVolume 0x7B0C4 UpdateVolumeAttributesM 0x7B178 VsyncProc 0x7B1C4 UpdateXMSamples 0x7B228 test_changemode 0x7B3C4 check_regions_present 0x7B6C4 UpdateSpool 0x7B88C SendTPage 0x7BB14 LoadInAreaTSets 0x7BD84 SendSBK 0x7BEBC init_spooled_models 0x7C08C CheckLoadAreaData 0x7C28C LoadRegionData 0x7C464 ProcessSpoolInfoLump 0x7C5C0 unpack_cellpointers 0x7C74C SpecClutsSpooled 0x7C9B8 CleanModelSpooled 0x7CAFC DamagedModelSpooled 0x7CC24 LowModelSpooled 0x7CD64 CleanSpooled 0x7CF0C Tada 0x7D144 SpecialStartNextBlock 0x7D4E0 CheckSpecialSpool 0x7D6D8 InitSpecSpool 0x7D978 Unpack_CellPtrs 0x7D9CC GotRegion 0x7DA60 data_cb_misc 0x7DB38 ready_cb_misc 0x7DBCC data_cb_soundbank 0x7DCA4 ready_cb_soundbank 0x7DDA8 data_cb_regions 0x7DE90 ready_cb_regions 0x7DF64 data_cb_textures 0x7E078 ready_cb_textures 0x7E1A8 changemode 0x7E24C DrawCDicon 0x7E2CC CheckValidSpoolData 0x7E36C RequestSpool 0x7E3E4 ClearRegion 0x7E494 InitSpooling 0x7E528 SpoolSYNC 0x7E540 SetupModels 0x7E580 LoadInAreaModels 0x7E5DC UnpackRegion 0x7E66C WaitCloseLid 0x7E6D8 FoundError 0x7E724 StartSpooling 0x7E7C0 LowSpooled 0x7E84C QuickSpoolSpecial 0x7E8DC PrepareSecretCar 0x7E958 stopgame 0x7E9A0 startgame 0x7E9D0 LoadfileSeg 0x7ECF0 SwapDrawBuffers2 0x7EDDC SetupDrawBuffers 0x7EF0C SetupDrawBufferData 0x7F118 SetCityType 0x7F354 Loadfile 0x7F3E8 ClearMem 0x7F47C setMem8 0x7F524 setMem16 0x7F5B4 ResetCityType 0x7F5C8 FileExists 0x7F640 DiscSwapped 0x7F6FC SwapDrawBuffers 0x7F7C0 InitaliseDrawEnv 0x7F848 Init_FileSystem 0x7F870 DoCDRetry 0x7F8B8 ReportMode 0x7F904 loadsectors 0x7F984 EnableDisplay 0x7F9F0 DisableDisplay 0x7FA10 UpdatePadData 0x7FA44 data_ready 0x7FA74 sector_ready 0x7FB44 Draw3DTarget 0x7FD48 DrawTargetArrowModel 0x800F8 DrawStopZone 0x8047C WorldToCameraPositions 0x80528 IncrementTPageNum 0x805EC Find_TexID 0x80688 LoadPermanentTPages 0x80BB0 GetTextureDetails 0x80DA0 GetTextureInfoName 0x80DDC IncrementClutNum 0x80E14 LoadTPageAndCluts 0x80F3C GetTEXINFName 0x81038 update_slotinfo 0x81080 ProcessTextureInfo 0x81118 ReloadIcons 0x81140 GetTimeStamp 0x81178 StepOneCar 0x8198C GetFrictionScalesDriver1 0x81E20 ConvertTorqueToAngularAcceleration 0x81F50 AddWheelForcesDriver1 0x82BD0 StepCars 0x82C64 PlayXA 0x82D60 GetXAData 0x82DAC PrepareXA 0x82E68 UnprepareXA 0x82EC0 GetMissionXAData 0x82F18 SetXAVolume 0x82F78 StopXA 0x82FC4 ResumeXA 0x83078 PauseXA 0x830F0 XAPrepared 0x830FC cbready 0x831B0 InitXMData 0x8344C XM_Init 0x8392C JPlayNote 0x83B64 JPlayEffects 0x83DA4 SPE 0x841B0 DoEEffects 0x84524 SetPer 0x846D8 DoS3MRetrig 0x848F0 DoVibrato 0x849F0 DoTremolo 0x84B3C UpdatePatternData 0x85034 ApplyEffs 0x85374 DoDolbySS 0x85448 UpdateHardware 0x857A4 ProcessEnvelope 0x85974 ProcessPanEnvelope 0x85B44 XM_Restart 0x85C38 XM_Pause 0x85D18 XM_Exit 0x85D78 XM_Update 0x85DC8 XM_PlayStop 0x85E38 XM_PlayStart 0x85E8C XM_SetSongPos 0x85F7C XM_OnceOffInit 0x85FB4 XM_CloseVAB 0x86008 XM_SetMasterVol 0x8605C XM_FreeVAG 0x8607C UpdateWithTimer 0x86178 XM_DoFullUpdate 0x86234 XM_Quit 0x86278 XM_GetFreeVAB 0x862B8 XM_SetVAGAddress 0x862F0 XM_CloseVAB2 0x86358 XM_SetSongAddress 0x8639C XM_GetSongSize 0x863A4 XM_FreeAllSongIDs 0x863B0 XM_SetFileHeaderAddress 0x863E4 XM_GetFileHeaderSize 0x863EC GetLogPeriod 0x86484 UpdateXMData 0x86538 DoVol 0x86560 DoPan 0x865B4 DoVolSlide 0x86644 DoToneSlide 0x866AC DoXMPanSlide 0x86738 Arpeggio 0x867E4 SetInstr 0x868E0 SetNote 0x869C0 GetLong 0x869EC Interpolate 0x86A6C JPGetPeriod 0x86AA0 GetPeriod 0x86AF0 GetFreq2 0x86B48 CurrentKeyStat 0x86BF4 StpCh 0x86C18 SetFrq 0x86C38 SetVol 0x86C64 PlaySFX 0x86CF8 ClearSPU 0x86D74 InitSPUChannel 0x86DDC SilenceXM 0x86EBC UpdateEffs 0x86F70 IntVols 0x86FA0 GetFreeSongID 0x86FF0 JPClearSPUFlags 0x87024 CalcPlayPos 0x870DC JCalcPat 0x8714C PACKEDCalcPlayPos 0x87228 GetEmpty 0x872F0 CallMemoryCard 0x878D4 libcman_SelectSound 0x87908 libcman_ConfirmSound 0x8793C libcman_CancelSound 0x87970 libcman_ErrorSound 0x879A4 libcman_InitControllerLibrary 0x879F4 libcman_DeInitControllerLibrary 0x87A34 libcman_ReadControllers 0x87A64 DoMemoryCard 0x87CE4 LoadMemCardOverlay 0x87D68 StorePermanentTPage 0x87DDC RestorePermanentTPage 0x87E50 PutCorrectIcon 0x87F50 __main 0x87F58 __SN_ENTRY_POINT 0x87F58 stup2 0x87F7C stup1 0x87FF8 stup0 0x88014 CdInit 0x88164 CdPosToInt 0x881E4 CdSearchFile 0x890B8 CD_sync 0x89338 CD_ready 0x89600 CD_cw 0x89A0C CD_flush 0x89AE0 CD_initvol 0x89BD0 CD_init 0x89DB0 CD_datasync 0x89F18 CD_set_test_parmnum 0x8A000 CdIntToPos 0x8A110 CdReadyCallback 0x8A130 CdControl 0x8A26C CdControlF 0x8A3A0 CdControlB 0x8A4F0 CdGetSector 0x8A510 CD_getsector 0x8A610 CdDataCallback 0x8ABA0 CdRead 0x8AD3C CdReadSync 0x8AE40 CdStatus 0x8AE50 CdMode 0x8AE60 CdLastPos 0x8AE70 CdFlush 0x8AE90 CdReady 0x8AEB0 CdSyncCallback 0x8AED0 CdGetSector2 0x8AEF0 CD_getsector2 0x8AFE0 CdDataSync 0x8B000 CdDiskReady 0x8B140 CdGetDiskType 0x8B2B0 CdReadFile 0x8B430 rsin 0x8B46C sin_1 0x8B500 rcos 0x8B5A8 InitGeom 0x8B630 SquareRoot0 0x8B6C0 MulMatrix0 0x8B7D0 MulRotMatrix 0x8B8C0 ApplyRotMatrixLV 0x8BA00 ApplyMatrixSV 0x8BA60 TransMatrix 0x8BA90 SetRotMatrix 0x8BAC0 SetTransMatrix 0x8BAE0 SetGeomOffset 0x8BB00 SetGeomScreen 0x8BB10 RotTransPers 0x8BB40 RotTrans 0x8BB70 RotMatrix 0x8BE00 RotMatrixYXZ 0x8C090 RotMatrixX 0x8C230 RotMatrixY 0x8C3D0 RotMatrixZ 0x8C570 RotMatrixZYX_gte 0x8C770 ratan2 0x8C8F0 _patch_gte 0x8C9D0 ResetGraph 0x8CB44 SetGraphDebug 0x8CBA0 DrawSyncCallback 0x8CC00 SetDispMask 0x8CC98 DrawSync 0x8CE1C ClearImage 0x8CEAC ClearImage2 0x8CF44 LoadImage 0x8CFA4 StoreImage 0x8D004 MoveImage 0x8D0BC ClearOTag 0x8D184 ClearOTagR 0x8D230 DrawPrim 0x8D28C DrawOTag 0x8D2FC PutDrawEnv 0x8D3BC GetDrawEnv 0x8D3F0 PutDispEnv 0x8D8E8 GetDispEnv 0x8D91C SetDrawArea 0x8D99C SetDrawEnv 0x8F26C LoadImage2 0x8F358 StoreImage2 0x8F444 _GPU_ResetCallback 0x8F494 LoadClut 0x8F504 LoadClut2 0x8F574 SetDefDrawEnv 0x8F634 SetDefDispEnv 0x8F674 GetTPage 0x8F6B4 GetClut 0x8F6D4 SetSemiTrans 0x8F704 SetPolyG3 0x8F724 SetPolyFT4 0x8F744 SetPolyG4 0x8F764 SetTile 0x8F784 SetLineF2 0x8F7A4 SetLineF4 0x8F7C4 SetDrawTPage 0x8F7F4 SetDrawMove 0x8F854 SetDrawLoad 0x8F8C4 Krom2Tim 0x8FDC4 kanjitrans 0x902F4 hankanjitrans 0x90434 InitHeap 0x90444 Exec 0x90454 FlushCache 0x90464 GPU_cw 0x90474 _bu_init 0x90484 DeliverEvent 0x90494 OpenEvent 0x904A4 CloseEvent 0x904B4 TestEvent 0x904C4 EnableEvent 0x904D4 DisableEvent 0x904E4 EnterCriticalSection 0x904F4 ExitCriticalSection 0x90504 SetSp 0x90514 open 0x90524 lseek 0x90534 read 0x90544 write 0x90554 close 0x90564 format 0x90574 nextfile 0x90584 erase 0x90594 Krom2RawAdd 0x905A4 GetSp 0x905B4 firstfile 0x90854 firstfile2 0x90864 VSync 0x90A74 ChangeClearPAD 0x90A84 ChangeClearRCnt 0x90A94 ResetCallback 0x90AC4 InterruptCallback 0x90AF4 DMACallback 0x90B24 VSyncCallback 0x90B58 StopCallback 0x90B88 CheckCallback 0x90B98 SetIntrMask 0x910E4 _96_remove 0x910FC ReturnFromException 0x9110C ResetEntryInt 0x9111C HookEntryInt 0x9112C startIntrVSync 0x9124C startIntrDMA 0x914EC SetVideoMode 0x91500 GetVideoMode 0x9151C bcopy 0x9155C bzero 0x9158C memcmp 0x915CC memcpy 0x9160C memmove 0x9167C memset 0x916AC rand 0x916DC srand 0x916EC strcat 0x9179C strcmp 0x9180C strcpy 0x9185C strlen 0x9189C strncmp 0x9191C printf 0x9195C prnt 0x91FFC memchr 0x9204C _putchar 0x92148 _putchar_flash 0x92184 sprintf 0x92A04 puts 0x92A64 setjmp 0x92AA0 exit 0x92AB0 __fixunssfsi 0x92B0C __builtin_delete 0x92B30 free 0x92B3C SsSetSerialVol 0x92C4C SpuInit 0x92C6C _SpuInit 0x92D54 SpuStart 0x92DCC _spu_init 0x9320C _spu_FiDMA 0x932C8 _spu_t 0x93548 _spu_Fw 0x935CC _spu_FsetRXX 0x93610 _spu_FsetRXXa 0x936B4 _spu_FsetPCR 0x9375C _spu_Fw1ts 0x937C4 _SpuDataCallback 0x937F4 SpuQuit 0x93874 SpuSetMute 0x938D4 SpuInitMalloc 0x93934 SpuMalloc 0x93C04 _spu_gcSPU 0x93F04 SpuFree 0x93F84 SpuFlush 0x94184 SpuSetReverb 0x94274 _SpuIsInAllocateArea_ 0x94304 SpuSetReverbModeParam 0x947E4 _spu_setReverbAttr 0x94CB4 SpuReserveReverbWorkArea 0x94D04 SpuSetReverbDepth 0x94D84 SpuSetReverbVoice 0x94DB4 _SpuSetAnyVoice 0x95074 SpuGetReverbVoice 0x950A4 _SpuGetAnyVoice 0x950D4 SpuClearReverbWorkArea 0x95274 WaitEvent 0x95284 SpuSetKey 0x95444 SpuGetKeyStatus 0x954D4 SpuWrite 0x95534 SpuSetTransferStartAddr 0x95594 SpuSetTransferMode 0x955C4 SpuIsTransferCompleted 0x95674 SpuGetAllKeysStatus 0x95700 SpuSetVoiceVolume 0x95780 SpuSetVoicePitch 0x957F0 SpuSetVoiceAR 0x95870 SpuSetVoiceRR 0x958F0 SpuSetVoiceAttr 0x95EF0 _spu_note2pitch 0x95FC0 SpuGetVoiceVolume 0x96020 SpuGetVoicePitch 0x96040 SpuSetCommonAttr 0x963C0 PadSetAct 0x96400 PadSetActAlign 0x96570 PadGetState 0x96640 PadInfoMode 0x96740 PadStartCom 0x9680C PadStopCom 0x96850 SysEnqIntRP 0x96860 SysDeqIntRP 0x96870 PadInitDirect 0x96920 _padInitDirPort 0x97250 _dirFailAuto 0x97360 _padIsVsync 0x973C8 _padIntPad 0x97558 _padInitSioMode 0x9797C _padSioRW 0x97BA0 _padSioRW2 0x97E1C _padClrIntSio0 0x97EAC _padWaitRXready 0x97ED4 _padSetCmd 0x97EE4 _padSendAtLoadInfo 0x97F68 _padRecvAtLoadInfo 0x981D8 _padGetActSize 0x98210 _padLoadActInfo 0x98784 _padCmdParaMode 0x9882C _padSetRC2wait 0x9884C _padChkRC2wait 0x991D0 _card_info 0x991E0 _card_load 0x991F0 _card_read 0x99200 _new_card 0x99210 _card_wait 0x99220 _card_clear 0x99260 _card_write 0x99270 InitCARD 0x99300 StartCARD 0x99348 StopCARD 0x99370 ReadInitPadFlag 0x99380 InitCARD2 0x99390 StartCARD2 0x993A0 StopCARD2 0x993B0 _patch_card_info 0x9948C _patch_card 0x99520 _patch_card2 0x99590 _copy_memcard_patch 0x995D0 _ExitCard 0x99650 MemCardInit 0x99680 __adddf3 0x99A00 _add_mant_d 0x99AB0 __addsf3 0x99C60 _dbl_shift 0x99D20 __divdf3 0x9A000 _comp_mant 0x9A050 _dbl_shift_us 0x9A110 __divsf3 0x9A260 __extendsfdf2 0x9A3C0 __fixsfsi 0x9A470 __floatsidf 0x9A590 __floatsisf 0x9A660 __gesf2 0x9A700 __gtsf2 0x9A7A0 __ltsf2 0x9A850 _mainasu 0x9A8C0 __mulsf3 0x9AA00 __negsf2 0x9AA20 __subsf3 0x9AA80 __truncdfsf2 0x9ABB0 _err_math 0x9AC20 sqrt 0x9AD60 __gtdf2 0x9AE40 __ltdf2 0x9AF20 __muldf3 0x9B234 _mul_mant_d 0x9B32C Lev0 0x9B354 Lev1 0x9B368 Lev2 0x9B458 Lev3 0x9B46C Lev_CycleObjPtrs 0x9B47C Num_LevCycleObjs 0x9B48C Lev0AnimObjects 0x9B51C Lev1AnimObjects 0x9B56C Lev2AnimObjects 0x9B5BC Lev3AnimObjects 0x9B5FC Level_AnimatingObjectPtrs 0x9B60C Level_NumAnimatedObjects 0x9B62C gMissionDoorPosition 0x9B63C smashable 0x9B934 felonyColour 0x9B958 playerDamageColour 0x9B97C damageColour 0x9B994 overlaidmaps 0x9B9F4 MapSegmentPos 0x9BA34 NVertex 0x9BA54 north 0x9BA74 big_north 0x9BA7C player_position 0x9BA8C palletedir 0x9BB5C AnalogueUnpack 0x9BB6C date_date 0x9BB70 date_time 0x9BB74 cd_icon 0x9BDB4 CameraPos 0x9BDC4 camera_position 0x9BDD4 face_camera_work 0x9BDF4 specTpages 0x9BE24 carTpages 0x9BE44 day_vectors 0x9BE64 night_vectors 0x9BE84 day_colours 0x9BEA4 night_colours 0x9BEC4 light_matrix 0x9BEE4 colour_matrix 0x9BF04 roadblockDelayDiff 0x9BF10 speedLimits 0x9BF14 civPingTest 0x9BF3C modelRandomList 0x9BF4C aspect 0x9BF6C gCopData 0x9BF98 speed1 0x9BFA4 speed2 0x9BFB0 sqtbl 0x9BFF4 CosmeticFiles 0x9C00C PoolPrimData 0x9C01C debris_rot_table 0x9C030 debris_colour 0x9C220 debris1_vert 0x9C244 debris2_vert 0x9C268 leaf_vert 0x9C28C litter_vert 0x9C2B0 debris3_vert 0x9C2D4 debris_data 0x9C2E8 grassColour 0x9C2F4 DentingFiles 0x9C304 replay_icons 0x9C474 menu0 0x9C478 menu1 0x9C484 menu2 0x9C48C menu3 0x9C490 menu4 0x9C494 menu5 0x9C49C menu6 0x9C4A4 tunnel_dim 0x9C574 texture_pages 0x9C674 texture_cluts 0x9E674 polycoords 0x9E6BC gPlayerCar0ShinyFaces 0x9E708 ElTrainData 0x9E854 VegasTrainData 0x9E870 VegasParkedTrains 0x9E87C HavanaFerryData 0x9E8AC RioFerryData 0x9E8C4 HavanaMiniData 0x9E8D4 missionTrain 0x9E90C chicagoDoor 0x9E990 havanaFixed 0x9EA14 vegasDoor 0x9EAF0 rioDoor 0x9EBF8 HelicopterData 0x9EC28 LiftingBridges 0x9ED04 ChicagoCameraHack 0x9ED10 HavanaCameraHack 0x9ED34 VegasCameraHack 0x9ED74 RioCameraHack 0x9ED98 initialOccurrenceDelay 0x9EDB0 initialReccurrenceDelay 0x9EDC8 initialFelonyValue 0x9EDF8 UpdateEnvSounds 0x9EF5C geard 0x9EFFC coptrackpos 0x9F01C MissionLadder 0x9F0A4 RecapFrameLength 0x9F0CC feVariableSave 0x9F0DC handlingType 0x9F0F8 src_cosmetics 0xA0368 theBox 0xA03A4 Drift 0xA03B4 SS 0xA03D4 LevelFiles 0xA03E4 LevelPalettes 0xA0404 LoadingScreenNames 0xA0414 missionstarts 0xA0440 id_map 0xA04A4 xa_data 0xA0540 gameNames 0xA0640 cheatText 0xA0654 CutSceneNames 0xA06C4 MissionName 0xA0758 lRoutes 0xA0780 motion_files 0xA07A0 MotionSpeed 0xA07A8 MainPed 0xA08BC Skel 0xA0ED8 boneIdvals 0xA0F14 High_shake_data 0xA0F2C Med_shake_data 0xA0F3C Low_shake_data 0xA0F48 shake_data 0xA0F54 MainPauseItems 0xA1008 MultiplayerPauseItems 0xA1094 CutscenePauseItems 0xA110C MissionCompleteItems 0xA11AC MissionFailedItems 0xA1224 TakeARideFinishedItems 0xA129C DrivingGameFinishedItems 0xA1328 MultiplayerFinishedItems 0xA138C ChaseGameFinishedItems 0xA1404 YesNoRestartItems 0xA1440 YesNoQuitItems 0xA147C NoPadItems 0xA1490 NoMultiPadItems 0xA14B8 InvalidPadItems 0xA14CC InvalidMultiPadItems 0xA14F4 PauseMenuHeader 0xA1508 MultiplayerPauseHeader 0xA151C CutscenePauseMenuHeader 0xA1530 MissionCompleteHeader 0xA1544 MissionFailedHeader 0xA1558 TakeARideFinishedHeader 0xA156C DrivingGameFinishedHeader 0xA1580 MultiplayerFinishedHeader 0xA1594 ChaseGameFinishedHeader 0xA15A8 NoPadHeader 0xA15BC NoMultiPadHeader 0xA15D0 InvalidPadHeader 0xA15E4 InvalidMultiPadHeader 0xA15F8 playerwithcontrol 0xA1604 YesNoRestartHeader 0xA1618 YesNoQuitHeader 0xA162C validchars 0xA1670 fpPedPersonalityFunctions 0xA16A8 tannerLookAngle 0xA16B8 force 0xA16C8 point 0xA16D8 levelstartpos 0xA1758 PolySizes 0xA1838 fontDigit 0xA1850 button_names 0xA187C dummy 0xA188C frustpos 0xA189C tempmatrix 0xA18DC sky_y_offset 0xA18EC HorizonLookup 0xA18FC HorizonTextures 0xA1924 sun_position 0xA1944 moon_position 0xA1964 moon_shadow_position 0xA1984 flare_info 0xA19E4 tunnelDir 0xA19FC tunnelPos 0xA1A5C dummylong 0xA1A68 pvsSize 0xA1A78 SpecialByRegion 0xA1BB8 draw_mode_pal 0xA1BC8 draw_mode_ntsc 0xA1BD8 currentfilename 0xA1C58 targetArrowVerts 0xA1DB0 normalTargetArrowTris 0xA1DBC loseTailTargetArrowTris 0xA1DD4 windowTargetArrowTris 0xA1DF4 maxSpeedTargetArrowTris 0xA1E08 targetArrowModel 0xA1E38 tpagepos 0xA1E88 LevelTab 0xA1F20 XANames 0xA1F30 iVABID 0xA1F40 XMSongIDs 0xA1F70 XMSPU_SFX 0xA1FA0 lintab 0xA25A0 logtab 0xA2670 VibratoTable 0xA2690 fileFormat 0xA27E4 slice 0xA2800 icon_0 0xA28C0 icon_1 0xA2980 icon_2 0xA2A40 CD_cbread 0xA2A44 CD_read_dma_mode 0xA2A68 CD_cbsync 0xA2A6C CD_cbready 0xA2A70 CD_debug 0xA2A74 CD_status 0xA2A78 CD_status1 0xA2A7C CD_nopen 0xA2A80 CD_pos 0xA2A84 CD_mode 0xA2A85 CD_com 0xA2A88 DS_active 0xA2A8C CD_comstr 0xA2B0C CD_intstr 0xA2E70 rsin_tbl 0xA3690 SQRT 0xA3810 rcossin_tbl 0xA7810 ratan_tbl 0xA806C GPU_printf 0xA8070 GEnv 0xA8198 _qin 0xA819C _qout 0xA8340 Hcount 0xA9470 Vcount 0xA94F0 _ctype_ 0xA9580 _stacksize 0xA9584 _ramsize 0xA9590 _spu_EVdma 0xA9594 _spu_keystat 0xA9598 _spu_trans_mode 0xA959C _spu_rev_flag 0xA95A0 _spu_rev_reserve_wa 0xA95A4 _spu_rev_offsetaddr 0xA95A8 _spu_rev_attr 0xA95BC _spu_RQvoice 0xA95C0 _spu_RQmask 0xA95C4 _spu_voice_centerNote 0xA95F4 _spu_env 0xA95F8 _spu_isCalled 0xA9608 _spu_RXX 0xA9620 _spu_tsa 0xA9624 _spu_transMode 0xA9628 _spu_addrMode 0xA962C _spu_mem_mode 0xA9630 _spu_mem_mode_plus 0xA9634 _spu_mem_mode_unit 0xA9638 _spu_mem_mode_unitM 0xA963C _spu_inTransfer 0xA9640 _spu_transferCallback 0xA9644 _spu_IRQCallback 0xA9668 _spu_AllocBlockNum 0xA966C _spu_AllocLastNum 0xA9670 _spu_memList 0xA9678 _spu_zerobuf 0xA9B98 _spu_rev_startaddr 0xA9BC8 _spu_rev_param 0xA9EA0 _padFuncNextPort 0xA9EA4 _padFuncClrInfo 0xA9EA8 _padFuncGetTxd 0xA9EAC _padFuncCurrLimit 0xA9EB0 _padFuncPtr2Port 0xA9EB4 _padFuncPort2Info 0xA9EB8 _padFuncSendAuto 0xA9EBC _padFuncChkEng 0xA9EC0 _padFuncRecvAuto 0xA9EC4 _padFuncClrCmdNo 0xA9EC8 _padFuncIntGun 0xA9ECC _padFuncSetGunPort 0xA9ED0 _padFuncGetGunPos 0xA9ED4 _padInfoDir 0xA9ED8 _padIntExec 0xA9EDC _padGunExec 0xA9EE0 _padSioChan 0xA9EE4 _padSioState 0xA9EE8 _padTotalCurr 0xA9EEC _padModeMtap 0xA9EF0 _padChanStart 0xA9EF4 _padChanStop 0xA9EF8 _padFixResult 0xA9F00 _padVsyncParam 0xA9F10 _padCalledIntPad 0xA9F80 math_errno 0xA9F84 math_err_point 0xAA000 GuitarType 0xAA054 gUseRotatedMap 0xAA058 map_x_offset 0xAA05C map_z_offset 0xAA060 x_map 0xAA064 y_map 0xAA068 old_x_mod 0xAA06C old_y_mod 0xAA070 tilehnum 0xAA074 tile_size 0xAA078 flashtimer 0xAA098 map_x_shift 0xAA09C map_z_shift 0xAA0A0 ReplaySize 0xAA0A4 NumReplayStreams 0xAA0A8 RecordingPads 0xAA0AC pad_recorded 0xAA0B0 gOutOfTape 0xAA0BC bodySelect 0xAA0C0 mScale 0xAA0C4 ThrownBombDelay 0xAA0C8 CurrentBomb 0xAA0CC fullStrike 0xAA0D0 halfStrike 0xAA0D4 gWantFlash 0xAA0D8 flashval 0xAA0DC gBombModel 0xAA0E0 gBombTargetVehicle 0xAA0E4 littleBoxRange 0xAA0E8 minBoxSize 0xAA0F0 camera_angle 0xAA0F8 current_camera_angle 0xAA0FC gCameraDistance 0xAA100 gCameraMaxDistance 0xAA104 gCameraAngle 0xAA108 inGameCamera 0xAA10C jtest53 0xAA110 headtarget 0xAA114 headposition 0xAA118 trayoffset 0xAA11C gDoBonnets 0xAA120 civ_smoke_enabled 0xAA124 gCurrentResidentSlot 0xAA128 switch_detail_distance 0xAA12C myPalette 0xAA138 carDisplayOffset 0xAA140 cell_object_index 0xAA144 useStoredPings 0xAA148 testNumPingedOut 0xAA14C checkFrames 0xAA150 maxSteer 0xAA154 newAccel 0xAA158 roadblockDelay 0xAA15C cookieCount 0xAA160 hornchanflag 0xAA164 horncarflag 0xAA16C testCrv 0xAA170 test23 0xAA174 PingOutCivsOnly 0xAA178 CAR_PAUSE_START 0xAA17C testCar 0xAA180 makeNextNodeCtrlNode 0xAA184 closeEncounter 0xAA188 sideMul 0xAA18C corner 0xAA190 sideShift 0xAA194 carAngle 0xAA198 EVENT_CAR_SPEED 0xAA19C horizonadd 0xAA1A0 l1 0xAA1A4 l2 0xAA1A8 gMinimumCops 0xAA1AC gPuppyDogCop 0xAA1B0 gBatterPlayer 0xAA1B4 gCopDesiredSpeedScale 0xAA1B8 gCopMaxPowerScale 0xAA1BC pedestrianFelony 0xAA1C0 gCopRespawnTime 0xAA1C4 toggleCam 0xAA1C8 CutsceneReplayStart 0xAA1CC CutsceneStreamIndex 0xAA1D0 NumCutsceneStreams 0xAA1D4 CutsceneCameraOffset 0xAA1D8 CutNextChange 0xAA1DC CutLastChange 0xAA1E0 PreLoadedCutscene 0xAA1E4 gHaveInGameCutscene 0xAA1E8 gCSDestroyPlayer 0xAA1EC CutsceneLength 0xAA1F0 BlackBorderHeight 0xAA1F4 CutsceneInReplayBuffer 0xAA1F8 CutsceneCamera 0xAA1FC gInGameChaseActive 0xAA200 gInGameCutsceneActive 0xAA204 CutsceneFrameCnt 0xAA208 CutsceneEventTrigger 0xAA20C gThePlayerCar 0xAA210 gInGameCutsceneDelay 0xAA214 gInGameCutsceneID 0xAA218 JustReturnedFromCutscene 0xAA21C gCutsceneAtEnd 0xAA220 gPlayerCarLights 0xAA224 LightningTimer 0xAA228 variable_weather 0xAA22C gFlareScale 0xAA230 SmokeCnt 0xAA234 gDoSmoke 0xAA238 gDoLeaves 0xAA394 gDoShinyCars 0xAA3E4 MIN_TRIPOD_CAMERA_HEIGHT 0xAA3E8 EditMode 0xAA3EC SetFastForward 0xAA3F0 NextChange 0xAA3F4 ThisChange 0xAA3F8 LastChange 0xAA3FC editing_existing_camera 0xAA400 FastForward 0xAA404 ClearCameras 0xAA408 attract_number 0xAA40C FastForwardCameraCnt 0xAA41C farClip2Player 0xAA420 sprite_shadow 0xAA424 TransparentObject 0xAA428 groundDebrisIndex 0xAA42C lightning 0xAA430 alleycount 0xAA434 treecount 0xAA438 setupYet 0xAA43C visiblelist 0xAA440 tcRoof 0xAA444 tcWall 0xAA448 tcRoad 0xAA44C goFaster 0xAA450 current_smashed_cone 0xAA454 gTrailblazerPrevConeDelay 0xAA458 gTrailblazerData 0xAA45C gTrailblazerConeCount 0xAA460 gTrailblazerConeIndex 0xAA464 gUseCopModel 0xAA468 lastrequesteddisc 0xAA4B8 DistanceTriggerCarMoves 0xAA4BC eventHaze 0xAA510 debugRotation 0xAA518 maxrevdrop 0xAA51C maxrevrise 0xAA520 copmusic 0xAA534 gLastChase 0xAA538 gChaseNumber 0xAA53C gRandomChase 0xAA540 gSubGameNumber 0xAA544 bReturnToMain 0xAA548 CurrentGameMode 0xAA549 WantedGameMode 0xAA54C fakeOtherPlayer 0xAA550 gMissionLadderPos 0xAA554 gFurthestMission 0xAA558 gWantNight 0xAA55C gIdleReplay 0xAA560 autobrakeon 0xAA564 gPlayerCarDamage 0xAA568 DebrisTimer 0xAA56C last_track_state 0xAA570 doWheels 0xAA574 playerghost 0xAA578 playerhitcopsanyway 0xAA57C savemapinfo 0xAA580 crateoffset 0xAA584 littleBangTime 0xAA588 screen_fade_value 0xAA58C screen_fade_start 0xAA590 screen_fade_end 0xAA594 screen_fade_speed 0xAA598 FadingScreen 0xAA59C bMissionTitleFade 0xAA5A0 bWantFade 0xAA5A4 fadeVal 0xAA5A8 WantPause 0xAA5AC gDieWithFade 0xAA5B0 tannerDeathTimer 0xAA5B4 LoadedLevel 0xAA5B5 NewLevel 0xAA5B6 IconsLoaded 0xAA5B7 gLeadCarModel 0xAA5B8 gNoSaveAllowed 0xAA5B9 gDoneQuickReplay 0xAA5BA gRightWayUp 0xAA5BB ghost_mode 0xAA5BC paused 0xAA5BD CamerasSaved 0xAA5BE final_replays 0xAA5BF cameraview 0xAA5C0 ReplayMode 0xAA5C1 NoPlayerControl 0xAA5C2 CurrentRoad 0xAA5C4 CurrentJunction 0xAA5C8 gNumCitiesOpen 0xAA5CC GameType 0xAA5CD StoredGameType 0xAA5D0 gCurrentMissionNumber 0xAA5D4 gCurrentChaseNumber 0xAA5D8 CurrentPlayerView 0xAA5DC persuit_mode 0xAA5E0 GameLevel 0xAA5E4 PlayerCarModel 0xAA5E8 AttractMode 0xAA5EC gCopDifficultyLevel 0xAA5F0 pauseflag 0xAA5F4 lead_car 0xAA5F8 PlayerCar 0xAA5FC CameraCar 0xAA600 TargetCar 0xAA604 defaultPlayerModel 0xAA606 defaultPlayerPalette 0xAA608 gameinit 0xAA60C gInFrontend 0xAA610 gLoadedReplay 0xAA614 gShowMap 0xAA618 gVibration 0xAA61C gInvincibleCar 0xAA620 gPlayerImmune 0xAA624 gNight 0xAA628 gStopPadReads 0xAA62C leadAIRequired 0xAA630 leadAILoaded 0xAA634 pathAILoaded 0xAA638 wantedCar 0xAA640 gSubtitles 0xAA644 ObjectDrawnCounter 0xAA67C cells_across 0xAA680 cells_down 0xAA684 es_mobile 0xAA688 gDisplayPosition 0xAA6A0 gHaveStoredData 0xAA6A4 carSelectPlayerText 0xAA6DC MissionLoadAddress 0xAA6E0 cop_adjust 0xAA6E4 NewLeadDelay 0xAA6E8 prevCopsInPursuit 0xAA6EC last_flag 0xAA6F0 lastsay 0xAA6F4 gStartOnFoot 0xAA6F8 gTimeOfDay 0xAA6FC gWeather 0xAA700 gTannerActionNeeded 0xAA704 gPlayerWithTheFlag 0xAA708 gCarWithABerm 0xAA70C gCantDrive 0xAA710 MaxPlayerDamage 0xAA718 TAIL_TOOCLOSE 0xAA71C TAIL_GETTINGCLOSE 0xAA720 TAIL_GETTINGFAR 0xAA724 TAIL_TOOFAR 0xAA728 gNumRaceTrackLaps 0xAA72C gMissionTitle 0xAA730 gMissionCompletionState 0xAA734 gDontPingInCops 0xAA738 g321GoDelay 0xAA73C gGotInStolenCar 0xAA740 gCopCarTheftAttempted 0xAA744 gLockPickingAttempted 0xAA748 gDontResetCarDamage 0xAA74C specModelValid 0xAA750 bAllreadyRotated 0xAA754 bDoingShadow 0xAA758 vStored 0xAA75C zVal 0xAA79C motion_dir 0xAA7A0 bLoadedAllMC 0xAA7A4 bDisplayBones 0xAA7A8 myVal 0xAA7AC bodyShiftValue 0xAA7B0 palnumber 0xAA7B4 testRadius 0xAA7B8 test777 0xAA7BC align 0xAA7C4 dummymotors 0xAA7C8 DuplicatePadData 0xAA7D0 pad_connected 0xAA7D4 gDualShockMax 0xAA7D8 gEnteringScore 0xAA7DC gScorePosition 0xAA7E0 gScoreEntered 0xAA7F4 allownameentry 0xAA7F8 gDrawPauseMenus 0xAA7FC gNoReplaySaveAllowed 0xAA838 num_pedestrians 0xAA83C numTannerPeds 0xAA840 bTannerSitting 0xAA844 pinginPedAngle 0xAA848 iAllowWatch 0xAA84C iFreezeTimer 0xAA850 bFreezeAnimation 0xAA854 bReverseAnimation 0xAA858 max_pedestrians 0xAA85C bKillTanner 0xAA860 bReverseYRotation 0xAA864 bAvoidTanner 0xAA868 bAvoidBomb 0xAA86C iIdleTimer 0xAA870 bKilled 0xAA874 bStopTanner 0xAA878 numCopPeds 0xAA87C tannerTurnStep 0xAA880 tannerTurnMax 0xAA884 tannerTurn 0xAA888 bPower 0xAA88C powerCounter 0xAA8B4 pCivCarToGetIn 0xAA8BC allreadydone 0xAA8C0 lastCarCameraView 0xAA8C4 numPlayersToCreate 0xAA900 idx 0xAA904 rotated 0xAA908 distance 0xAA90C pos 0xAA910 outvertices 0xAA914 outcoords 0xAA918 skyred 0xAA91C skygreen 0xAA920 skyblue 0xAA924 gDrawLowerSky 0xAA930 gTunnelNum 0xAA934 gSoundMode 0xAA938 gSurround 0xAA93C banksize 0xAA944 sound_paused 0xAA948 music_paused 0xAA94C master_volume 0xAA950 stop_sound_handler 0xAA954 Song_ID 0xAA958 VABID 0xAA95C gMusicVolume 0xAA960 gMasterVolume 0xAA964 gAllowMusic 0xAA968 gAllowSfx 0xAA96C LoadingArea 0xAA970 spoolpos_reading 0xAA974 spoolpos_writing 0xAA978 type 0xAA97C music_is_loading 0xAA980 doSpooling 0xAA984 error_bounds 0xAA988 times 0xAA98C specialState 0xAA990 specBlocksToLoad 0xAA99C lasttype 0xAA99D lastcity 0xAA99E NumPlayers 0xAA9A0 DoNotSwap 0xAA9A4 gMultiplayerLevels 0xAA9AC cak 0xAA9B0 gDraw3DArrowBlue 0xAA9B4 texture_is_icon 0xAA9B8 specspooldata 0xAA9CC dbSurfacePtr 0xAA9D0 finished_count 0xAA9D4 gPlaying 0xAA9D8 gChannel 0xAA9DC xa_prepared 0xAA9E0 XM_SCAN 0xAA9E4 JPError 0xAA9E8 MonoMode 0xAA9EC XM_NSA 0xAA9F0 XM_HA 0xAA9F4 tt 0xAA9F8 aa 0xAA9FC dd 0xAAA00 de 0xAAA04 JPPer 0xAAA14 Driver2CurvesPtr 0xAAA18 sdLevel 0xAAA1C region_buffer_xor 0xAAA20 NumDriver2Straights 0xAAA24 NumDriver2Junctions 0xAAA28 Driver2StraightsPtr 0xAAA2C Driver2JunctionsPtr 0xAAA30 cycle_phase 0xAAA34 cycle_timer 0xAAA38 num_anim_objects 0xAAA3C num_cycle_obj 0xAAA40 OverlayFlashValue 0xAAA48 MapBitMaps 0xAAA50 MapRect 0xAAA58 MapTPage 0xAAA5A MapClut 0xAAA5C first_paletised_page 0xAAA60 TestCnt 0xAAA64 ReplayStart 0xAAA68 way_distance 0xAAA6C PingBufferPos 0xAAA70 PlayerWayRecordPtr 0xAAA74 ReplayParameterPtr 0xAAA78 TimeToWay 0xAAA7C replayptr 0xAAA80 PingBuffer 0xAAA88 boxOverlap 0xAAA8C wibblewibblewoo 0xAAA90 mTheta 0xAAA98 baseDir 0xAAA9C maxCameraDist 0xAAAA0 jcam 0xAAAA4 paddCamera 0xAAAA8 savedSP.21 0xAAAAC gUnderIntensity 0xAAAB0 whichCP 0xAAAB4 gForceLowDetailCars 0xAAAB8 baseSpecCP 0xAAABC num_cars_drawn 0xAAAC0 sizeof_cell_object_computed_values 0xAAAC8 tmpNewLane 0xAAAD0 numCopCars 0xAAAD4 numCivCars 0xAAAD8 tmpNewRoad 0xAAAE0 angle 0xAAAE4 distFurthestCivCarSq 0xAAAE8 numInactiveCars 0xAAAEC frameStart 0xAAAF0 test42 0xAAAF4 test123 0xAAAF8 limoId 0xAAAFC test555 0xAAB00 makeLimoPullOver 0xAAB04 numRoadblockCars 0xAAB08 tmpCrv 0xAAB10 carnum 0xAAB14 radius 0xAAB18 tmpStr 0xAAB20 requestRoadblock 0xAAB24 collDat 0xAAB28 laneFit 0xAAB30 roadSeg 0xAAB38 validExitIdx 0xAAB40 dx 0xAAB44 dy 0xAAB48 dz 0xAAB4C newExit 0xAAB50 distObstacle 0xAAB54 currentAngle 0xAAB58 testNum 0xAAB5C tstNode1 0xAAB60 tstNode2 0xAAB64 furthestCivID 0xAAB68 maxParkedCars 0xAAB6C numParkedCars 0xAAB70 currentRoadId 0xAAB74 maxPlayerCars 0xAAB78 numPlayerCars 0xAAB7C requestStationaryCivCar 0xAAB80 distFromCentre 0xAAB84 startNode 0xAAB88 playerNum 0xAAB8C roadblockCount 0xAAB90 junctionLightsPhase 0xAAB94 maxCopCars 0xAAB98 maxCivCars 0xAABA0 randomcounter 0xAABA4 randomindex 0xAABA8 mcgn 0xAABAC srgn 0xAABB0 said_picked_up 0xAABB4 OutOfSightCount 0xAABB8 CopsCanSeePlayer 0xAABBC LastHeading 0xAABC0 CopsAllowed 0xAABC4 copsAreInPursuit 0xAABC8 copSightData 0xAABD0 pathStraight 0xAABD4 player_position_known 0xAABD8 cop_respawn_timer 0xAABDC numActiveCops 0xAABE0 requestCopCar 0xAABE4 targetVehicle 0xAABE8 padid.33 0xAABF0 SavedCameraCarId 0xAABF4 SavedCameraView 0xAABF8 SavedCameraAngle 0xAABFC SavedWorldCentreCarId 0xAAC00 SavedSpoolXZ 0xAAC08 SinX.103 0xAAC0C CosX.104 0xAAC10 rand.142 0xAAC14 ThunderTimer 0xAAC18 ThunderDistance 0xAAC1C plotted 0xAAC20 RightLight 0xAAC21 gRainCount 0xAAC24 next_smoke 0xAAC28 LightSortCorrect 0xAAC2C smoke_table 0xAAC30 leaf_rotvec 0xAAC38 CarLightFadeFront 0xAAC3C next_debris 0xAAC40 StreakCount1 0xAAC44 NextDamagedPmeter 0xAAC48 wetness 0xAAC4C gNextRainDrop 0xAAC50 NoRainIndoors 0xAAC54 gEffectsTimer 0xAAC58 SmashablesHit 0xAAC5C gcar_num 0xAAC60 debris_rotvec 0xAAC68 main_cop_light_pos 0xAAC6C LeftLight 0xAAC6E light_col 0xAAC70 next_leaf 0xAAC74 NextDamagedLamp 0xAAC78 gCarPoolsToDraw 0xAAC7C LightIndex 0xAAC80 CarLightFadeBack 0xAAC88 gHubcapTime 0xAAC90 FlashCnt.42 0xAAC94 cammapht2 0xAAC98 mapstuff 0xAAC9C MenuOffset 0xAACA0 time_taken 0xAACA4 menuactive 0xAACA8 PlayerWaypoints 0xAACAC CursorX 0xAACB0 CursorY 0xAACB4 tracking_car 0xAACB5 CameraChanged 0xAACB8 quick_replay 0xAACBC PlayMode 0xAACC0 PlaybackCamera 0xAACC4 ReplayContinue 0xAACC8 frame_advance_count 0xAACCC AutoDirect 0xAACD0 temp.61 0xAACD4 current_matrix 0xAACD8 numSpritesFound 0xAACDC transparent_buffer 0xAACE0 current_inv_matrix 0xAACE4 buildingsFound 0xAACE8 FrAng 0xAACEC current_offset 0xAACF0 tile_overflow_buffer 0xAACF4 vcount 0xAACF8 SubDivisionArrays 0xAACFC fasterToggle 0xAAD00 ot_slot 0xAAD04 Low2HighDetailTable 0xAAD08 Low2LowerDetailTable 0xAAD10 gTrailblazerConeModel 0xAAD18 ShinyTextureNum 0xAAD1C ShinyTexturePage 0xAAD20 firstX.8 0xAAD28 firstZ.9 0xAAD30 count.10 0xAAD38 offset.39 0xAAD40 speed.49 0xAAD44 rotating.57 0xAAD48 nearestTrain.70 0xAAD4C distanceFromNearestTrain.71 0xAAD50 rememberCameraAngle.105 0xAAD58 count.106 0xAAD60 foam 0xAAD68 event 0xAAD6C cameraEventsActive 0xAAD70 trackingEvent 0xAAD78 carsOnBoat 0xAAD80 boatOffset 0xAAD88 multiCar 0xAAD90 fixedEvent 0xAAD94 firstMissionEvent 0xAAD98 detonator 0xAADA0 doneFirstHavanaCameraHack 0xAADA8 cameraDelay 0xAADB0 xVis 0xAADB4 zVis 0xAADB8 debugSpeed 0xAADBC debugCount 0xAADC0 firstEvent 0xAADC4 debugOffset 0xAADC8 EventCop 0xAADD0 debugNode 0xAADD8 event_models_active 0xAADE0 last_cop_phrase 0xAADE4 FelonyDecreaseTime 0xAADE8 FelonyIncreaseTime 0xAADEC FelonyDecreaseTimer 0xAADF0 FelonyIncreaseTimer 0xAADF4 playerLastRoad 0xAADF8 test3 0xAADFC test4 0xAAE00 test5 0xAAE04 test6 0xAAE08 test7 0xAAE0C test8 0xAAE10 oldsp.12 0xAAE18 j_said.78 0xAAE1C xm_samples.90 0xAAE1D xm_samples.96 0xAAE20 rnd.139 0xAAE24 loudhail_time 0xAAE28 cop_model 0xAAE29 cop_bank 0xAAE2C horn_time 0xAAE30 phrase_top 0xAAE31 first_offence 0xAAE34 TimeSinceLastSpeech 0xAAE38 ScreenDepth 0xAAE40 hSubShad 0xAAE48 delta 0xAAE50 num_active_cars 0xAAE54 gTimeInWater 0xAAE58 continuous_track 0xAAE59 rear_only 0xAAE60 ExBoxDamage 0xAAE64 ExBombTimer 0xAAE68 TriggerBomb 0xAAE6C ExLastCarXVel 0xAAE70 ExLastCarZVel 0xAAE74 ExLastCarX 0xAAE78 ExLastCarZ 0xAAE80 ActiveCheats 0xAAE84 AvailableCheats 0xAAE88 loading_bar_pos 0xAAE8C load_steps 0xAAE90 t0.18 0xAAE94 t1.19 0xAAE95 t2.20 0xAAE98 oldsp.21 0xAAE9C null.27 0xAAEA0 PauseMode 0xAAEA4 gLoadedMotionCapture 0xAAEA8 cells 0xAAEAC scr_z 0xAAEB0 current_object_computed_value 0xAAEB4 car_models_lump 0xAAEB8 xa_timeout 0xAAEBC gPed1HeadModelPtr 0xAAEC0 gPed2HeadModelPtr 0xAAEC4 gPed3HeadModelPtr 0xAAEC8 gPed4HeadModelPtr 0xAAECC ObjectDrawnValue 0xAAED0 controller_bits 0xAAED4 handle 0xAAED8 cell_header 0xAAEDC playerDying 0xAAEE0 gDamWheelModelPtr 0xAAEE4 InWater 0xAAEE8 gBoxModelPtr 0xAAEEC gShowPlayerDamage 0xAAEF0 NightAmbient 0xAAEF4 cell_objects 0xAAEF8 saved_leadcar_pos 0xAAEFC palette_lump 0xAAF00 gFastWheelModelPtr 0xAAF04 lead_pad 0xAAF08 gSinkingTimer 0xAAF0C lead_analogue 0xAAF10 leadCarId 0xAAF14 map_lump 0xAAF18 CameraCnt 0xAAF1C gCleanWheelModelPtr 0xAAF20 gBobIndex 0xAAF24 saved_counter 0xAAF28 gDoCrates 0xAAF2C gLightsOn 0xAAF30 DawnCount 0xAAF34 gLoadedOverlay 0xAAF38 HitLeadCar 0xAAF3C gRotorPtr 0xAAF40 game_over 0xAAF44 cell_ptrs 0xAAF48 mallocptr 0xAAF4C gHubcapModelPtr 0xAAF50 lockAllTheDoors 0xAAF58 PVSEncodeTable 0xAAF5C units_across_halved 0xAAF60 old_region 0xAAF64 pvs_square 0xAAF68 pvs_objects_rejected 0xAAF6C num_regions 0xAAF70 regions_down 0xAAF74 units_down_halved 0xAAF78 camera_cell_x 0xAAF7C camera_cell_z 0xAAF80 current_barrel_region_xcell 0xAAF84 current_barrel_region_zcell 0xAAF88 initarea 0xAAF8C region_x 0xAAF90 region_z 0xAAF94 num_models_in_pack 0xAAF98 pvs_cells_rejected 0xAAF9C pvs_square_sq 0xAAFA0 view_dist 0xAAFA4 current_cell_x 0xAAFA8 current_cell_z 0xAAFAC regions_across 0xAAFB0 current_region 0xAAFB4 num_straddlers 0xAAFB8 cutscene_timer 0xAAFBC holdall 0xAAFC0 bodgevar 0xAAFC4 rio_alarm 0xAAFC8 xa 0xAAFD0 force_idle 0xAAFD8 jericho_in_back 0xAAFE0 force_siren 0xAAFE8 playercollected 0xAAFEC gMusicType 0xAAFF0 NumTempJunctions 0xAAFF4 MissionHeader 0xAAFF8 Driver2TempJunctionsPtr 0xAAFFC MissionScript 0xAB000 gPlayerDamageFactor 0xAB004 MissionTargets 0xAB008 MissionStrings 0xAB010 modelname_buffer 0xAB014 specmallocptr 0xAB018 specLoadBuffer 0xAB020 ThisMotion 0xAB024 pDrawingPed 0xAB028 Tangle 0xAB02C frames 0xAB030 svTemp 0xAB034 joints 0xAB038 rectTannerWindow 0xAB040 iCurrBone 0xAB044 gCurrentZ 0xAB048 initial.24 0xAB050 coplist 0xAB054 pcoplist 0xAB058 gLastModelCollisionCheck 0xAB060 VisibleMenu 0xAB064 ActiveMenu 0xAB068 ActiveMenuItem 0xAB06C PauseReturnValue 0xAB070 SfxVolumeText 0xAB078 MusicVolumeText 0xAB080 storedCam 0xAB084 oldCamView 0xAB088 camAngle 0xAB090 oldDir 0xAB094 pPlayerPed 0xAB098 collision_boxes_set 0xAB09C num_extra_boxes_set 0xAB0A0 oldWeather 0xAB0A4 seated_count 0xAB0A8 seated_pedestrian 0xAB0AC basic_car_interest 0xAB0B0 pFreePeds 0xAB0B4 pUsedPeds 0xAB0B8 maxSeated 0xAB0BC tannerPad 0xAB0C0 pcdTanner 0xAB0C4 carToGetIn 0xAB0C8 ping_in_pedestrians 0xAB0CC pHold 0xAB0D0 my_sly_var 0xAB0D8 combointensity 0xAB0DC gTempCarUVPtr 0xAB0E0 gFontColour 0xAB0E4 fontclutid 0xAB0E8 fontclutpos 0xAB0F0 fonttpage 0xAB0F8 JunctionLightsWE 0xAB0F9 JunctionLightsNS 0xAB100 numcv 0xAB104 lastcv 0xAB108 spolys 0xAB10C gShadowTextureNum 0xAB110 gShadowTexturePage 0xAB114 shadow_header 0xAB118 shadowuv 0xAB120 edgecount 0xAB122 nextindex 0xAB128 last_attempt_failed.9 0xAB12C skycolour 0xAB130 skyFade 0xAB138 old_camera_change 0xAB13C song_address 0xAB140 camera_change 0xAB148 bankaddr 0xAB150 music_address 0xAB158 param 0xAB160 result 0xAB168 target_address 0xAB16C current_sector 0xAB170 sectors_to_read 0xAB174 sectors_this_chunk 0xAB178 switch_spooltype 0xAB17C nTPchunks 0xAB180 nTPchunks_reading 0xAB184 nTPchunks_writing 0xAB188 tpage 0xAB190 ntpages 0xAB194 endchunk 0xAB198 RegionSpoolInfo 0xAB19C SpoolLumpOffset 0xAB1A0 spool_regioncounter 0xAB1A4 quickSpool 0xAB1A8 spuaddress 0xAB1AC n_sample_chunks 0xAB1B0 packed_cell_pointers 0xAB1B4 spoolerror 0xAB1B8 spool_regionpos 0xAB1BC buffer 0xAB1C0 modelMemory 0xAB1C4 num_samples 0xAB1C8 spoolactive 0xAB1CC current_music_id 0xAB1D0 tsetcounter 0xAB1D4 AreaData 0xAB1D8 specSpoolComplete 0xAB1DC models_ready 0xAB1E0 sample_chunk 0xAB1E4 allowSpecSpooling 0xAB1E8 new_area_location 0xAB1EC tsetpos 0xAB1F0 NumAreas 0xAB1F4 firstDamBlock 0xAB1F8 spoolcounter 0xAB1FC spoolinfo_offsets 0xAB200 loadbank_read 0xAB204 firstLowBlock 0xAB208 unpack_roadmap_tbl 0xAB210 nsectors 0xAB214 Music_And_AmbientOffsets 0xAB218 spoolpos 0xAB21C model_spool_buffer 0xAB220 lengthDamBlock 0xAB224 lastCleanBlock 0xAB228 damOffset 0xAB22C done 0xAB230 lengthLowBlock 0xAB234 send_bank 0xAB238 lowOffset 0xAB23C AreaTPages 0xAB240 LoadedArea 0xAB248 loading_region 0xAB250 unpack_roadmap_flag 0xAB254 loadbank_write 0xAB258 startSpecSpool 0xAB25C last_size 0xAB260 newmodels 0xAB264 spoolseek 0xAB268 chunk_complete 0xAB26C unpack_cellptr_flag 0xAB270 param.25 0xAB278 load_complete 0xAB279 endread 0xAB27C current_sector 0xAB280 sectors_left 0xAB284 sectors_read 0xAB288 current_address 0xAB28C paddp 0xAB290 vblcounter 0xAB298 MPlast 0xAB2A0 current 0xAB2A4 primptr 0xAB2A8 FrameCnt 0xAB2AC padd 0xAB2B0 MPcurrent 0xAB2B8 last 0xAB2C0 tpage 0xAB2C8 nspecpages 0xAB2CC NoTextureMemory 0xAB2D0 mapclutpos 0xAB2D8 specialSlot 0xAB2DC nperms 0xAB2E0 MaxSpecCluts 0xAB2E4 environmenttpage 0xAB2E8 tpage_amount 0xAB2F0 clutpos 0xAB2F8 speclist 0xAB2FC permlist 0xAB300 texturename_buffer 0xAB304 texture_lump_start 0xAB308 texamount 0xAB30C slotsused 0xAB310 tpage_position 0xAB318 impulse 0xAB320 CurrentChannel 0xAB322 ID 0xAB324 StartPos 0xAB328 pause_loc 0xAB32C olddatacallback 0xAB330 oldreadycallback 0xAB338 XMTime1 0xAB33C XMTime2 0xAB340 XMTime3 0xAB344 PALType 0xAB348 mh 0xAB34C ms 0xAB350 mu 0xAB354 BPMLimit 0xAB358 DVL 0xAB35C XMC 0xAB360 XM_FrameSpeed 0xAB364 DVR 0xAB368 JP_Do_Nothing 0xAB36C XMCU 0xAB370 mhu 0xAB374 CurrentCh 0xAB378 ret.30 0xAB37C MCbuffer128K 0xAB380 MClanguageBuffer 0xAB384 MCsaveBuffer 0xAB388 MCfilename 0xAB38C MCoptions 0xAB390 MCsp 0xAB394 gMemCardMode 0xAB6D0 CurrentGarage 0xAB6F0 GuitarPos 0xAB700 cycle_tex 0xAB7A8 Player2DamageBar 0xAB7C8 ProxyBar 0xAB7E8 DamageBar 0xAB808 FelonyBar 0xAB828 PlayerDamageBar 0xAB848 MapBuffer 0xABA58 maptile 0xABA68 map_matrix 0xABA88 civ_clut 0xAC688 ReplayStreams 0xAC8A8 Roadblock 0xAC8E0 cd.24 0xAC9B0 collisionResult.25 0xAC9D8 ThrownBombs 0xACA90 basePos 0xACAA0 face_camera 0xACAC0 viewer_position 0xACAD0 inv_camera_matrix 0xACAF0 camera_matrix 0xACB10 FrontWheelRotation.25 0xACB40 BackWheelRotation.26 0xACB68 NewCarModel 0xACC08 save_light_matrix 0xACC28 pbf 0xB87C0 NewLowCarModel 0xB8860 save_colour_matrix 0xB8880 cell_object_computed_values 0xB9080 cell_object_buffer 0xBD080 cd 0xBD150 civrseed 0xBD198 currentCar 0xBD438 currentPos 0xBD448 endPos 0xBD458 brakeLength 0xBD4A8 baseLoc 0xBD4B8 roadblockLoc 0xBD4C8 testVec 0xBD4D8 startPos 0xBD4E8 reservedSlots 0xBD500 randomLoc 0xBD510 rseed 0xBD558 felonyData 0xBD5F0 targetPoint 0xBD600 CarTail 0xBD610 lastKnownPosition 0xBD620 CopWorkMem 0xBD7E0 work_matrix.25 0xBD800 PlayerStartInfo 0xBD820 CutsceneBuffer 0xBF840 joypad_texture 0xBF850 collon_texture 0xBF860 leaf_alloc 0xBF8C8 clock 0xBF8D8 incar 0xBF8E8 litter_texture 0xBF8F8 pause 0xBF908 smoke 0xC0808 debris_mat 0xC0828 norot 0xC0848 movecampos 0xC0858 litter_rot 0xC09D8 addcam 0xC09E8 debris_rot1 0xC0B68 debris_rot2 0xC0CE8 debris_rot3 0xC0E68 delcam 0xC0E78 tannerShadow_texture 0xC0E88 Known_Lamps 0xC1080 debris 0xC19E0 smoke_alloc 0xC1A80 forearm1_texture 0xC1A90 pad_texture 0xC1AA0 sea_texture 0xC1AB0 NewLamp 0xC1B08 cop_texture 0xC1B18 sun_texture 0xC1B28 lightref_texture 0xC1B38 damaged_lamp 0xC1B60 ok 0xC1B70 editcam 0xC1B80 arm1_texture 0xC1B90 playcam 0xC1BA0 movecam 0xC1BB0 debris_alloc 0xC1C28 autocam 0xC1C38 lookcar 0xC1C48 gTyreTexture 0xC1C58 restart 0xC1C68 line_texture 0xC1C78 drop_texture 0xC1C88 moon_texture 0xC1C98 pool_texture 0xC1CA8 lensflare_texture 0xC1CB8 head1_texture 0xC1CC8 leaf_mat 0xC1CE8 chasecar 0xC1CF8 fixedcam 0xC1D08 frameadv 0xC1D18 bird_texture1 0xC1D28 bird_texture2 0xC1D38 lenschan 0xC1D48 leaf_rot 0xC1EC8 save2card 0xC1ED8 flare_texture 0xC1EE8 digit_texture 0xC1EF8 jeans_texture 0xC1F08 watch_texture 0xC1F18 light_texture 0xC1F28 paper_texture 0xC1F38 trail_texture 0xC1F48 leaf 0xC27E0 smoke_texture 0xC27F0 spark_texture 0xC2800 cross_texture 0xC2810 damaged_object 0xC2958 texturePedHead 0xC2968 gPoolPoly 0xC2980 light_pool_texture 0xC2990 choosecar 0xC29A0 chest1_texture 0xC29B0 playpause 0xC29C0 gRainAlloc 0xC2B28 gRain 0xC3938 debris_texture 0xC3948 gHDCarDamageZonePolys 0xC4180 gTempCarVertDump 0xC9400 gHubcap 0xC94B8 gHDCarDamageLevels 0xC99B8 gCarDamageZoneVerts 0xC9F98 ShadowPos 0xC9FA8 gTempHDCarUVDump 0xCB398 gTempLDCarUVDump 0xCBE10 GreyIcons 0xCBE28 car_distance.60 0xCBE78 anim_obj_buffer 0xCBEC8 spriteList 0xCBFF8 frustrum_matrix 0xCC018 matrixtable 0xCC818 planeColours 0xCC838 shadowMatrix 0xCC858 model_object_ptrs 0xCD058 ground_debris 0xCD158 current_camera_position 0xCD168 CompoundMatrix 0xCD968 vtab 0xCD9A8 wrongside 0xCD9D8 smashed_cones 0xCDA50 VeryShinyTable 0xCDB50 Car0_ShinyTable 0xCDC50 xList.6 0xCDD50 zList.7 0xCDE50 stage.90 0xCDE80 rememberCamera.97 0xCDE90 carEvent 0xCDEB0 eventCamera 0xCDEE8 events 0xCDEF8 carriageData 0xCDF20 envsnd 0xCE520 ESdata 0xCE650 EStags 0xCE660 car_noise 0xCE690 siren_noise 0xCE6B0 header_pt 0xCF5D0 song_pt 0xD0180 gSpeechQueue 0xD01A8 tunnels 0xD0550 ScreenNames 0xD0580 pScreenStack 0xD05A8 pButtonStack 0xD05D0 _tp.18 0xD09E0 _d0.19 0xD0DF0 _d1.20 0xD1200 active_car_list 0xD1250 cheats 0xD1268 car_data 0xD4BD0 car_cosmetics 0xD5070 bbox 0xD5250 SmokePos 0xD5260 bangPos 0xD5270 globemesh 0xD5420 explosion 0xD54D8 poly.9 0xD54F8 p.10 0xD5528 fade_gt4 0xD5598 fade_g4 0xD55E0 load_draw 0xD5640 load_disp 0xD5658 stupid_logic.22 0xD5668 buffer.26 0xD56A8 leadcar_pos 0xD56B8 gCarCleanModelPtr 0xD56D0 lightsOnDelay 0xD56E8 modelpointers 0xD6EE8 gCarDamModelPtr 0xD6F00 gCarLowModelPtr 0xD6F18 PVS_Buffers 0xD6F28 cell_objects_add 0xD6F40 gRamSlotPosition 0xD7140 nybblearray 0xD7340 regions_unpacked 0xD7350 cell_slots_add 0xD7368 CurrentPVS 0xD7528 pos 0xD7538 MissionStartData 0xD7620 MissionEndData 0xD7708 MissionStack 0xD7B08 MissionThreads 0xD7C08 Mission 0xD7C50 gLapTimes 0xD7C78 gStopCops 0xD7C88 tileTannerClear 0xD7CA8 cTannerVNumbers 0xD7D08 cJerichoVNumbers 0xD7D28 vTannerList 0xD83B8 pedestrians 0xD8DC8 MotionCaptureData 0xD8E28 vJerichoList 0xD9158 ft4TannerShadow 0xD91A8 cd 0xD9270 padbuffer 0xD92B8 Pads 0xD9348 VisibleMenus 0xD9358 ActiveItem 0xD9368 EnterNameText 0xD9388 ScoreName 0xD93B8 ScoreItems 0xD9408 ScoreTime 0xD9458 DrivingDebugHeader 0xD9470 EnterScoreText 0xD9490 collisionResult.124 0xD94C0 collisionResult.128 0xD94F0 cd 0xD95B8 pmJerichoModels 0xD95D0 tanner_collision_box 0xD95E0 pedestrian_roads 0xD95F0 extra_collision_boxes 0xD9640 collision_car_ptr 0xD9660 collision_box 0xD96E0 pmTannerModels 0xD9728 player 0xD9AC8 button_textures 0xD9B68 fontinfo 0xD9F68 AsciiTable 0xDA068 RoadMapDataRegions 0xDA078 RoadMapRegions 0xDA088 roadMapLumpData 0xDA098 ScoreTables 0xDA908 gPlayerScore 0xDA920 Cont.12 0xDA930 cv 0xDA990 tyre_save_positions 0xDA9D0 num_tyre_tracks 0xDA9E0 shadowPolys 0xDB020 smoke_count 0xDB030 track_buffer 0xDCC30 tyre_track_offset 0xDCC40 edgelist 0xDCC60 ShadowPolygon 0xDCC78 camverts 0xDD078 tyre_new_positions 0xDD0B8 direction 0xDD0C8 buffer.10 0xDD208 skytpage 0xDD248 skyclut 0xDD288 skytexuv 0xDD368 tabs.93 0xDD3B8 banks 0xDD3D8 channel_lookup 0xDD418 sound_attr 0xDD448 pause 0xDD4B8 musps 0xDD520 samples 0xDE470 lis_pos 0xDE480 channels 0xDEC00 cd_sprite 0xDEC30 dummyModel 0xDEC58 cd_palette 0xDEC98 spool_regioninfo 0xDED18 tsetinfo 0xDED98 unpack_cellptr_tbl 0xDEDA8 multiplayerregions 0xDEDB8 spooldata 0xDF0B8 pLodModels 0xE08B8 MPBuff 0xE0AB8 currentfileinfo 0xE0AD0 citystart 0xE0AF0 citylumps 0xE0BF0 tpageslots 0xE0C08 tpageloaded 0xE0C88 tsdname 0xE0D08 slot_clutpos 0xE0D58 tpage_texamts 0xE0F58 slot_tpagepos 0xE0FA8 tpage_ids 0xE11A8 buffer 0xE11C8 XAMissionMessages 0xE11E8 XM_HeaderAddress 0xE1208 xm_g_s_attr 0xE1248 XM_SngAddress 0xE12A8 xm_l_vag_spu_addr 0xE22A8 uxm_g_s_attr 0xE22E8 xm_r_attr 0xE4730 StMode 0xE47B8 _que 0xE6018 _spu_RQ 0xE62B0 _padRestPeriod 0xE62B8 _apiPadPatch 0x1C0C1C LoadFrontendScreens 0x1C0F24 LoadBackgroundFile 0x1C10F4 SetupBackgroundPolys 0x1C132C SetupScreenSprts 0x1C147C DrawScreen 0x1C18E4 DisplayOnScreenText 0x1C1AD0 SetupExtraPoly 0x1C1CF4 ReInitScreens 0x1C1E18 NewSelection 0x1C22A8 HandleKeyPress 0x1C2668 PadChecks 0x1C296C DoFrontEnd 0x1C2C2C SetFEDrawMode 0x1C2D90 FEPrintString 0x1C2FD8 FEPrintStringSized 0x1C31FC CentreScreen 0x1C3430 CarSelectScreen 0x1C3A60 VibroOnOffScreen 0x1C3B1C MissionSelectScreen 0x1C4338 MissionCityScreen 0x1C4600 CutSceneSelectScreen 0x1C4B30 CutSceneCitySelectScreen 0x1C50B0 SetVolumeScreen 0x1C55F8 DisplayScoreTable 0x1C59A0 ScoreScreen 0x1C5B4C CheatScreen 0x1C60A0 GameNameScreen 0x1C61AC FEInitCdIcon 0x1C62F8 FEDrawCDicon 0x1C6378 EndFrame 0x1C6404 CopDiffLevelScreen 0x1C64B0 SubtitlesOnOffScreen 0x1C64FC CityCutOffScreen 0x1C6548 ControllerScreen 0x1C6614 MainScreen 0x1C6654 ImmunityOnOffScreen 0x1C66A0 InvincibleOnOffScreen 0x1C66EC GamePlayScreen 0x1C6724 CheatNumlayerSelect 0x1C6774 gameNames 0x1C6874 cheatText 0x1C6888 CutSceneNames 0x1C68F8 MissionName 0x1C698C screen_limits 0x1C699C bDoingScores 0x1C69A0 cutSelection 0x1C69A4 bDoingCutSelect 0x1C69A8 cutGfxNames 0x1C69B8 CutAmounts 0x1C69CC CutAmountsTotal 0x1C69E0 cutUnlock 0x1C6A0C carSelection 0x1C6A10 gfxNames 0x1C6A20 fpUserFunctions 0x1C6A70 currCity 0x1C6A74 missionSetup 0x1C6A78 loaded 0x1C6A7B lastCity 0x1C6A7C lastCutCity 0x1C6A80 bInCutSelect 0x1C6A84 currPlayer 0x1C6A88 bDoingCarSelect 0x1C6A8C currSelIndex 0x1C6A90 bDrawExtra 0x1C6A94 bScreenSetup 0x1C6A98 storeRect 0x1C6AA0 bRedrawFrontend 0x1C6AA4 bWantCDReset 0x1C6AA8 bRequestedKey 0x1C6AAC bDoneAllready 0x1C6AB0 bMissionSelect 0x1C6AB4 allowVibration 0x1C6AB8 numPadsConnected 0x1C6ABC padsConnected 0x1C6AC4 mainScreenLoaded 0x1C6AC8 bCdIconSetup 0x1C6ACC carNumLookup 0x1C6AF4 CarAvailability 0x1C6B94 oldActionSet 0x1C6B98 minmaxSelections 0x1C6BB8 botch 0x1C6CE8 GameNum 0x1C6CEC CityNames 0x1C6CFC scoreCol 0x1C6D00 otherCol 0x1C6D04 contNames 0x1C6D20 cd_sprite 0x1C6D48 pNewScreen 0x1C6D50 PsxScreens 0x1CBCB8 pNewButton 0x1CBCC0 BackgroundPolys 0x1CBDB0 idle_timer 0x1CBDB8 extraDummy 0x1CBDD8 feFont 0x1CC1E0 ScreenTitle 0x1CC260 oldSfxLevel 0x1CC264 pCurrScreen 0x1CC268 ScreenDummy 0x1CC368 ScreenPolys 0x1CC4A8 ScreenSprts 0x1CC548 pCurrButton 0x1CC54C currMission 0x1CC550 In 0x1CC568 oldActionVal 0x1CC570 Out 0x1CC588 oldMusicLevel 0x1CC590 HighlightSprt 0x1CC5A8 HighlightDummy 0x1CC5C8 extraSprt 0x1CC5DC fePad 0xE7128 InitLead 0xE73E8 LeadUpdateState 0xE7994 LeadPadResponse 0xE7DE8 FakeMotion 0xE834C PosToIndex 0xE86BC BlockToMap 0xE98A4 IsOnMap 0xE9BB8 UpdateRoadPosition 0xEB1FC CheckCurrentRoad 0xEC1C4 SetTarget 0xEC5E4 SelectExit 0xEC99C FreeRoamer 0xECB28 hypot 0xECC14 toGo.22 0xECC18 angle.23 0xECC1C s.24 0xECC20 c.25 0xECC24 carLength.35 0xECC28 carWidth.36 0xECC2C left.39 0xECC30 right.40 0xECC34 ldist.41 0xECC38 rdist.42 0xECC40 newdata.43 0xECC60 nextJunction.55 0xECC70 basePosition.56 0xECC80 d.57 0xECC84 toGo.58 0xECC88 angle.59 0xECC8C s.60 0xECC90 c.61 0xECC94 angle.62 0xECC98 radius.63 0xECC9C dx.64 0xECCA0 dz.65 0xECCA4 fixedThresh.66 0xECCA8 diff.67 0xECCAC dx.68 0xECCB0 dz.69 0xECCB4 dx.70 0xECCB8 dz.71 0xECCBC dist.72 0xECCC0 offx.73 0xECCC4 offz.74 0xECCC8 angle.75 0xECCCC dx.76 0xECCD0 dz.77 0xECCD4 basex.78 0xECCD8 basez.79 0xECCDC dist.80 0xECCE0 offx.81 0xECCE4 offz.82 0xECCE8 dx.86 0xECCEC dz.87 0xECCF0 randState 0xECD34 randIndex 0xECD38 road_c 0xECD3C road_s 0xECD40 localMap 0xECDE8 roadAhead 0xECE90 LeadValues 0xE7194 WunCell 0xE735C InvalidateMap 0xE74B0 BloodyHell 0xE76C4 blocked 0xE7814 iterate 0xE7BD0 InitPathFinding 0xE7CA8 getInterpolatedDistance 0xE822C addCivs 0xE836C UpdateCopMap 0xE8F00 getHeadingToPlayer 0xE90A4 setDistance 0xE9138 cellsPerFrame 0xE913C slowWallTests 0xE9140 dirs 0xE9158 asf 0xE915C na 0xE91A0 OverlayOccupancyGrid 0xE99A8 pathFrames 0xE99AC DoExtraWorkForNFrames 0xE99B0 dunyet 0xE9AB0 distLogIndex 0xE9AB8 searchTarget 0xE9AC8 lastDistanceFound 0xE9ACC playerTargetDistanceSq 0xE9AD0 dbb 0xE9B00 distanceCache 0xF1B00 pathFrame 0xF1B08 heap 0xF2798 cellsThisFrame 0xF279C numHeapEntries 0xF27A0 distanceReturnedLog 0xF27C0 pathIterations 0xF3828 CardRemoved__6MCSLOT 0xF3994 CardInserted__6MCSLOT 0xF3B04 FormatCard__6MCSLOT 0xF3C74 ReadCardDir__6MCSLOT 0xF3DB8 ReadCardInfo__6MCSLOTPc 0xF41A0 ReadSlice__6MCSLOTiiP5SLICEP10FILEFORMAT 0xF43A0 read_block__6MCSLOTiPcR9BLOCKINFO 0xF46B4 write_block__6MCSLOTR9BLOCKINFOPc 0xF49E8 CreateBlock__6MCSLOTP10FILEFORMATP5SLICE 0xF502C DeleteBlock__6MCSLOTi 0xF512C Ascii2ShiftJis__FPsPc 0xF523C __6MCSLOTiiiiiiPc 0xF52F0 _._6MCSLOT 0xF534C card_stop__6MCSLOT 0xF5474 CheckCard__6MCSLOT 0xF555C card_event__6MCSLOTi 0xF5610 clear_event__6MCSLOT 0xF5668 invalidate_info__6MCSLOT 0xF56FC download_icon__6MCSLOTR9BLOCKINFOiiiii 0xF5860 CopyBlock__6MCSLOTi 0xF5918 PasteBlock__6MCSLOT 0xF5968 ReadHeader__6MCSLOTii 0xF5A60 RenameCopyBlock__6MCSLOTP10FILEFORMAT 0xF5B38 WriteSlice__6MCSLOTiiP5SLICEP10FILEFORMATPc 0xF5C70 SetPort__6MCSLOTii 0xF5D30 BlocksShared__6MCSLOTii 0xF5DC8 GetBlockSize__6MCSLOTi 0xF5DFC CardInfoRead__6MCSLOT 0xF5E08 GetBlockIconPtr__6MCSLOTi 0xF5E84 GetNoUsedBlocks__6MCSLOT 0xF5EA0 GetBlockTitlePtr__6MCSLOTi 0xF5EE4 GetBlockFilenamePtr__6MCSLOTi 0xF5F1C FilenameUsed__6MCSLOTPc 0xF5FBC GetNumGremBlocks__6MCSLOTPc 0xF6088 InsertSliceIntoCopyBuffer__6MCSLOTiPccccT2 0xF61F0 ExtractSliceFromCopyBuffer__6MCSLOTiPc 0xF628C GetSliceFilenamePtr__6MCSLOTii 0xF633C SliceUsed__6MCSLOTii 0xF63EC GetNoUsedSlices__6MCSLOTi 0xF6448 GetSliceIconRef__6MCSLOTiii 0xF64F4 GetNoSlices__6MCSLOTi 0xF6550 GremlinBlock__6MCSLOTi 0xF6588 delete_file 0xF65A8 __7DISPMANPlPPlP3PADP10FILEFORMATib 0xF72B8 DrawTitleBar__7DISPMAN 0xF7508 DrawCards__7DISPMAN 0xF7688 DrawMenu__7DISPMAN 0xF79C8 DrawKeyInfo__7DISPMAN 0xF7C4C DrawBlocks__7DISPMAN 0xF819C DrawSlices__7DISPMAN 0xF8B28 write_mess_in_box__7DISPMANG4RECTPciiii 0xF8D24 DrawBlockName__7DISPMAN 0xF8EE4 ActiveAreaLeft__7DISPMAN 0xF902C ActiveAreaRight__7DISPMAN 0xF9270 ActiveAreaUp__7DISPMAN 0xF941C ActiveAreaDown__7DISPMAN 0xF96F0 ActiveAreaSelect__7DISPMANii 0xF9BAC ActiveAreaConfirm__7DISPMAN 0xF9FAC intersect__7DISPMANG4RECTT1 0xFA174 Update__7DISPMAN 0xFA684 PrintKanji__7DISPMANPsiiiiii 0xFA97C darken__7DISPMANG4RECT 0xFACD4 DrawSprite__7DISPMANP9TIMSTRUCTiiiiii 0xFAED0 AddCircleG16__7DISPMANiiiiiiii 0xFB304 MessageBox__7DISPMANiPcbT3 0xFC950 ProgressBox__7DISPMANPci 0xFCC54 message_width__7DISPMANPcii 0xFCE00 justify_mess__7DISPMANPcii 0xFD000 write_mess__7DISPMANPciiiiiiii 0xFD410 font_ref__7DISPMANcb 0xFD658 Tim2VRAM__7DISPMANPlP9TIMSTRUCTibiiii 0xFD86C wipe_screen__7DISPMANii 0xFDAD8 _._7DISPMAN 0xFDBEC DrawEnterName__7DISPMANPc 0xFDC6C SetMenuOption__7DISPMANi 0xFDCBC SetActiveFunction__7DISPMANi 0xFDCC4 MoveActiveAreaTo__7DISPMANi 0xFDD0C SelectNewBlock__7DISPMANi 0xFDDD0 GetArea__7DISPMANii 0xFDE50 ActiveAreaCancel__7DISPMAN 0xFDF58 AddingBlock__7DISPMANi 0xFDF60 DeletingCurrBlock__7DISPMANi 0xFDF68 InvalidateArea__7DISPMANG4RECT 0xFE040 InvalidateArea__7DISPMANi 0xFE098 DrawArea__7DISPMANi 0xFE144 FlashOn__7DISPMAN 0xFE150 FlashOff__7DISPMAN 0xFE160 FindKanji__7DISPMANs 0xFE1B0 CentrePrintKanji__7DISPMANPsiiiiii 0xFE258 KanjiStrLen__FPsi 0xFE2F4 GetCurrBlock__7DISPMAN 0xFE300 GetCurrSlice__7DISPMAN 0xFE30C draw_card__7DISPMANiiPcb 0xFE434 AddIcon__7DISPMANP9TIMSTRUCTiiiiiib 0xFE598 AddMoveImage__7DISPMANP4RECTT1 0xFE61C AddSprite__7DISPMANP9TIMSTRUCTiiiiii 0xFE72C DrawBox__7DISPMANiiiiiii 0xFE834 write_mess_c__7DISPMANPciiiiiiii 0xFE908 download_block_icon__7DISPMANiiii 0xFEA44 move_screen__7DISPMANiii 0xFEB24 GetCyclesPerSecond__7DISPMAN 0xFEB70 __3PADPc 0xFECC0 GetPadData__3PADi 0xFF2CC port_name__3PADi 0xFF3C0 WaitUntilCardRemoved__3PADi 0xFF6E4 WaitUntilAnyCardInserted__3PAD 0xFFA1C check_ports__3PAD 0xFFC98 search_ports__3PADib 0xFFE44 _._3PAD 0xFFEA0 UpdateSlots__3PAD 0xFFEE0 NegConInserted__3PAD 0xFFF10 ControllerInserted__3PAD 0xFFF48 ControllerChanged__3PAD 0xFFF5C SetControllerType__3PAD 0x1000D0 MouseInserted__3PAD 0x100158 GetMouseX__3PAD 0x10016C GetMouseY__3PAD 0x100180 ResetPadData__3PAD 0x1001AC GetPortName__3PADi 0x100214 GetControllerPortName__3PAD 0x100244 CardSelected__3PADi 0x100260 CurrCardInfoRead__3PAD 0x10029C next_port__3PADi 0x1002A4 GetCurrNoUsedBlocks__3PAD 0x1002E0 CurrSlotBlocksShared__3PADii 0x10031C GetCurrSlotPtr__3PAD 0x100340 GetCurrSlot__3PAD 0x100354 GetDestSlotPtr__3PAD 0x10037C CardChanged__3PADi 0x1003B0 CardInserted__3PADi 0x1003E4 CycleSelectedSlot__3PAD 0x10042C CardFormatted__3PADi 0x100460 FormatCard__3PADi 0x1004C8 ParseLanguageFile__FPci 0x1005E0 cardman__FiiPcP10FILEFORMATP5SLICET2T2 0x102364 EnterName__FP3PADP7DISPMANPc 0x102710 card_manager 0x102744 LoadBackground__FPcT0 0x1027E8 g_black 0x1027E8 g_tim_buffer 0x1028F0 g_pointer 0x1029B8 g_memcard 0x102D68 g_arrows 0x103370 g_buttons 0x103FF0 g_abcd 0x1043F8 g_font0 0x1074CC g_font1 0x1095F0 g_font2 0x10EB20 add_prim 0x10EB44 _6MCSLOT.s_ev0 0x10EB48 _6MCSLOT.s_ev1 0x10EB4C _6MCSLOT.s_ev2 0x10EB50 _6MCSLOT.s_ev3 0x10EB54 _6MCSLOT.s_ev10 0x10EB58 _6MCSLOT.s_ev11 0x10EB5C _6MCSLOT.s_ev12 0x10EB60 _6MCSLOT.s_ev13 0x10EB64 _6MCSLOT.s_nullKanjiString 0x10EB68 _6MCSLOT.s_copyBufferSize 0x10EB6C _6MCSLOT.s_copyBufferPtr 0x10EB70 DM_CIRCLE 0x10EC70 _7DISPMAN.dispManPtr 0x10EC74 oTablePtr 0x10EC78 g_strActiveMouseArea 0x10EC80 g_PAD_FRB 0x10EC82 g_PAD_FLB 0x10EC84 g_PAD_FRT 0x10EC86 g_PAD_FLT 0x10EC88 g_PAD_RU 0x10EC8A g_PAD_RD 0x10EC8C g_PAD_RL 0x10EC8E g_PAD_RR 0x10EC90 g_PAD_LU 0x10EC92 g_PAD_LD 0x10EC94 g_PAD_LL 0x10EC96 g_PAD_LR 0x10EC98 g_PAD_SEL 0x10EC9A g_PAD_START 0x10EC9C g_controllerData 0x10ECE0 g_msg 0x10EE04 g_textBuffer 0x10EE08 g_nCManOptions 0x10EE0C validchars // 0 external declarations // 0 functions Source file(s) D:\DRIVER2\GAME\ASM\D2MAPASM.MIP, object file overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\C\DR2ROADS.C+D:\driver2\game\DR2ROADS.C, object file obj\dr2roads.obj overlay id // 57 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct DRIVER2_STRAIGHT { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 unsigned short length; // size=0, offset=8 short bing; // size=0, offset=10 short angle; // size=0, offset=12 short ConnectIdx[4]; // size=8, offset=14 char NumLanes; // size=0, offset=22 char LaneDirs; // size=0, offset=23 char AILanes; // size=0, offset=24 char packing; // size=0, offset=25 }; struct OLD_DRIVER2_JUNCTION { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short length; // size=0, offset=8 short width; // size=0, offset=10 short angle; // size=0, offset=12 short ExitIdx[4]; // size=8, offset=14 unsigned short flags; // size=0, offset=22 }; struct DRIVER2_JUNCTION { short ExitIdx[4]; // size=8, offset=0 unsigned long flags; // size=0, offset=8 }; struct DRIVER2_CURVE { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short start; // size=0, offset=8 short end; // size=0, offset=10 short ConnectIdx[4]; // size=8, offset=12 short gradient; // size=0, offset=20 short height; // size=0, offset=22 char NumLanes; // size=0, offset=24 char LaneDirs; // size=0, offset=25 char inside; // size=0, offset=26 char AILanes; // size=0, offset=27 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; struct _sdNode { int angle : 11; // offset=0.0 int dist : 12; // offset=1.3 int offset : 8; // offset=2.7 int node : 1; // offset=3.7 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; // 81 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct GAP_INFO GAP_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct DRIVER2_STRAIGHT DRIVER2_STRAIGHT; typedef struct OLD_DRIVER2_JUNCTION OLD_DRIVER2_JUNCTION; typedef struct DRIVER2_JUNCTION DRIVER2_JUNCTION; typedef struct DRIVER2_CURVE DRIVER2_CURVE; typedef struct _sdPlane sdPlane; typedef struct _sdNode sdNode; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _EVENT EVENT; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 9 external declarations extern struct _sdPlane sea; // offset 0x0009b320 extern int NumDriver2Straights; // offset 0x000aaa20 extern int NumDriver2Curves; // offset 0x000aaa10 extern int NumDriver2Junctions; // offset 0x000aaa24 extern struct DRIVER2_CURVE *Driver2CurvesPtr; // offset 0x000aaa14 extern struct DRIVER2_STRAIGHT *Driver2StraightsPtr; // offset 0x000aaa28 extern struct DRIVER2_JUNCTION *Driver2JunctionsPtr; // offset 0x000aaa2c extern int sdLevel; // offset 0x000aaa18 extern int region_buffer_xor; // offset 0x000aaa1c // 11 functions /* * Offset 0x12EF4, from D:\driver2\game\C\DR2ROADS.C (lines 164..201) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ FindSurfaceD2(struct VECTOR *pos /*$s0*/, struct VECTOR *normal /*$s1*/, struct VECTOR *out /*$s3*/, struct _sdPlane **plane /*$s2*/) { } /* * Offset 0x130D4, from D:\driver2\game\C\DR2ROADS.C (lines 205..247) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ sdHeightOnPlane(struct VECTOR *pos /*$t0*/, struct _sdPlane *plane /*$a1*/) { // line 1, offset 0x130d4 { // line 11, offset 0x13134 int angle; // $v0 int i; // $v0 struct DRIVER2_CURVE *curve; // $s0 } // line 23, offset 0x1319c { // line 26, offset 0x1319c int val; // $a3 { // line 35, offset 0x131bc int lx; // $v0 int ly; // $v1 } // line 39, offset 0x13218 } // line 42, offset 0x1322c } // line 43, offset 0x1322c /* * Offset 0x1322C, from D:\driver2\game\C\DR2ROADS.C (lines 295..388) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ RoadInCell(struct VECTOR *pos /*$s5*/) { // line 1, offset 0x1322c char *buffer; // $s2 struct XYPAIR cellPos; // stack offset -48 struct XYPAIR cell; // stack offset -40 short *surface; // $a0 struct _sdPlane *plane; // $s0 { // line 36, offset 0x13318 int moreLevels; // $s3 short *check; // $s1 struct _sdPlane *base; // $s4 } // line 77, offset 0x133e4 } // line 94, offset 0x1346c /* * Offset 0x1346C, from D:\driver2\game\C\DR2ROADS.C (lines 400..501) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 ra */ struct _sdPlane * /*$ra*/ sdGetCell(struct VECTOR *pos /*$s3*/) { // line 1, offset 0x1346c char *buffer; // $s1 short *surface; // $s0 int nextLevel; // $s2 struct _sdPlane *plane; // $a1 struct XYPAIR cell; // stack offset -40 struct XYPAIR cellPos; // stack offset -32 { // line 41, offset 0x1355c int y; // $a0 } // line 56, offset 0x135b8 { // line 63, offset 0x135cc short *BSPsurface; // $a0 } // line 81, offset 0x13634 } // line 102, offset 0x136c0 /* * Offset 0x136C0, from D:\driver2\game\C\DR2ROADS.C (lines 64..68) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ProcessStraightsDriver2Lump(char *lump_file /*$s0*/, int lump_size /*$a1*/) { // line 1, offset 0x136c0 } // line 5, offset 0x136f4 /* * Offset 0x136F4, from D:\driver2\game\C\DR2ROADS.C (lines 80..84) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ProcessCurvesDriver2Lump(char *lump_file /*$s0*/, int lump_size /*$a1*/) { // line 1, offset 0x136f4 } // line 5, offset 0x13728 /* * Offset 0x13728, from D:\driver2\game\C\DR2ROADS.C (lines 94..114) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ProcessJunctionsDriver2Lump(char *lump_file /*$s1*/, int lump_size /*$a1*/, int fix /*$s0*/) { // line 1, offset 0x13728 { // line 8, offset 0x1375c int loop; // $v1 struct OLD_DRIVER2_JUNCTION *old; // $a1 struct DRIVER2_JUNCTION *p; // $a0 { // line 13, offset 0x13778 int i; // $a1 } // line 19, offset 0x137a4 } // line 20, offset 0x137b8 } // line 21, offset 0x137cc /* * Offset 0x137CC, from D:\driver2\game\C\DR2ROADS.C (lines 146..161) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ MapHeight(struct VECTOR *pos /*$s0*/) { // line 1, offset 0x137cc int height; // $v0 struct _sdPlane *plane; // $v0 } // line 16, offset 0x1380c /* * Offset 0x1380C, from D:\driver2\game\C\DR2ROADS.C (lines 250..259) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ GetSurfaceIndex(struct VECTOR *pos /*$a0*/) { // line 2, offset 0x1380c struct _sdPlane *plane; // $v0 } // line 10, offset 0x13848 /* * Offset 0x13848, from D:\driver2\game\C\DR2ROADS.C (lines 505..523) * Stack frame base $sp, size 0 */ short * /*$ra*/ sdGetBSP(struct _sdNode *node /*$a3*/, struct XYPAIR *pos /*$a1*/) { // line 1, offset 0x13848 { // line 4, offset 0x13870 int dot; // $a0 } // line 17, offset 0x138d4 } // line 19, offset 0x138f0 /* * Offset 0x138F0, from D:\driver2\game\C\DR2ROADS.C (lines 266..292) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ struct _sdPlane * /*$ra*/ FindRoadInBSP(struct _sdNode *node /*$s0*/, struct _sdPlane *base /*$s1*/) { // line 2, offset 0x13908 struct _sdPlane *plane; // $v0 } // line 27, offset 0x13980 Source file(s) D:\driver2\game\C\OBJANIM.C+D:\driver2\game\OBJANIM.C, object file obj\objanim.OBJ overlay id // 81 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct DR_LOAD { unsigned long tag; // size=0, offset=0 unsigned long code[3]; // size=12, offset=4 unsigned long p[13]; // size=52, offset=16 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct ANIMATED_OBJECT { int internal_id; // size=0, offset=0 int model_num; // size=0, offset=4 char *name; // size=0, offset=8 char LitPoly; // size=0, offset=12 }; struct SMASHABLE_OBJECT { int modelIdx; // size=0, offset=0 char *name; // size=0, offset=4 int sound; // size=0, offset=8 int volume; // size=0, offset=12 int pitch; // size=0, offset=16 }; struct GARAGE_DOOR { struct CELL_OBJECT *cop; // size=16, offset=0 struct VECTOR_NOPAD old_pos; // size=12, offset=4 struct VECTOR_NOPAD pos; // size=12, offset=16 short rotation; // size=0, offset=28 char yang; // size=0, offset=30 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct CYCLE_OBJECT { char *name; // size=0, offset=0 short vx; // size=0, offset=4 short vy; // size=0, offset=6 short start1; // size=0, offset=8 short stop1; // size=0, offset=10 short speed1; // size=0, offset=12 short start2; // size=0, offset=14 short stop2; // size=0, offset=16 short speed2; // size=0, offset=18 }; // 114 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct DR_LOAD DR_LOAD; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct ANIMATED_OBJECT ANIMATED_OBJECT; typedef struct SMASHABLE_OBJECT SMASHABLE_OBJECT; typedef struct GARAGE_DOOR GARAGE_DOOR; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct _CAR_DATA CAR_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct DB DB; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct CYCLE_OBJECT CYCLE_OBJECT; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct MVERTEX SV5x5[5][5]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 23 external declarations extern struct SMASHABLE_OBJECT smashable[38]; // offset 0x0009b63c extern struct CYCLE_OBJECT Lev0[2]; // offset 0x0009b32c extern struct CYCLE_OBJECT Lev1[1]; // offset 0x0009b354 extern struct CYCLE_OBJECT Lev2[12]; // offset 0x0009b368 extern struct CYCLE_OBJECT Lev3[1]; // offset 0x0009b458 extern struct CYCLE_OBJECT *Lev_CycleObjPtrs[4]; // offset 0x0009b46c extern int Num_LevCycleObjs[4]; // offset 0x0009b47c extern struct ANIMATED_OBJECT Lev0AnimObjects[9]; // offset 0x0009b48c extern struct ANIMATED_OBJECT Lev1AnimObjects[5]; // offset 0x0009b51c extern struct ANIMATED_OBJECT Lev2AnimObjects[5]; // offset 0x0009b56c extern struct ANIMATED_OBJECT Lev3AnimObjects[4]; // offset 0x0009b5bc extern struct ANIMATED_OBJECT *Level_AnimatingObjectPtrs[4]; // offset 0x0009b5fc extern int Level_NumAnimatedObjects[8]; // offset 0x0009b60c extern struct VECTOR gMissionDoorPosition; // offset 0x0009b62c extern int GuitarType; // offset 0x000aa000 extern short cycle_timer; // offset 0x000aaa34 extern int num_cycle_obj; // offset 0x000aaa3c extern int cycle_phase; // offset 0x000aaa30 extern int num_anim_objects; // offset 0x000aaa38 extern struct TEXTURE_DETAILS cycle_tex[12]; // offset 0x000ab700 extern struct DR_LOAD cyclecluts[12]; // offset 0x000ab3a0 extern struct GARAGE_DOOR CurrentGarage; // offset 0x000ab6d0 extern struct VECTOR GuitarPos; // offset 0x000ab6f0 // 9 functions /* * Offset 0x13980, from D:\driver2\game\C\OBJANIM.C (lines 362..449) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ ColourCycle() { // line 3, offset 0x13980 int i; // $s5 struct CYCLE_OBJECT *cyc; // $s2 struct RECT vram; // stack offset -56 unsigned short *bufaddr; // $s0 unsigned short length; // $v0 unsigned short temp; // $s1 { // line 26, offset 0x13a4c int tnum; // $a1 { // line 39, offset 0x13aa4 } // line 48, offset 0x13aec { // line 53, offset 0x13b18 } // line 62, offset 0x13b60 } // line 81, offset 0x13c20 } // line 88, offset 0x13c7c /* * Offset 0x13CAC, from D:\driver2\game\C\OBJANIM.C (lines 481..527) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitAnimatingObjects() { // line 2, offset 0x13cac struct ANIMATED_OBJECT *aop; // $s1 int loop; // $s0 int count1; // $a0 int count; // $a2 struct MODEL *modelPtr; // $a0 } // line 47, offset 0x13df8 /* * Offset 0x13DF8, from D:\driver2\game\C\OBJANIM.C (lines 613..895) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ animate_object(struct CELL_OBJECT *cop /*$s2*/, int type /*$a1*/) { // line 1, offset 0x13df8 short yang; // $s1 char phase; // $a0 } // line 283, offset 0x146a4 /* * Offset 0x146A4, from D:\driver2\game\C\OBJANIM.C (lines 931..964) * Stack frame base $sp, size 0 */ void /*$ra*/ animate_garage_door() { // line 2, offset 0x146a4 int dx; // $a0 int dz; // $v1 int dist; // $a0 } // line 34, offset 0x14820 /* * Offset 0x14828, from D:\driver2\game\C\OBJANIM.C (lines 536..550) * Stack frame base $sp, size 0 */ void /*$ra*/ InitSpooledAnimObj(int model_number /*$a0*/) { // line 1, offset 0x14828 struct ANIMATED_OBJECT *aop; // $a1 int i; // $a2 } // line 15, offset 0x14898 /* * Offset 0x148A0, from D:\driver2\game\C\OBJANIM.C (lines 578..604) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ DrawAnimatingObject(struct MODEL *model /*$a0*/, struct CELL_OBJECT *cop /*$s3*/, struct VECTOR *pos /*$a2*/) { // line 1, offset 0x148a0 struct ANIMATED_OBJECT *aop; // $s1 int loop; // $s2 int type; // $s0 } // line 27, offset 0x14950 /* * Offset 0x14950, from D:\driver2\game\C\OBJANIM.C (lines 460..467) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ FindSmashableObjects() { // line 2, offset 0x14950 struct SMASHABLE_OBJECT *sip; // $s0 } // line 8, offset 0x149a8 /* * Offset 0x149A8, from D:\driver2\game\C\OBJANIM.C (lines 565..566) * Stack frame base $sp, size 0 */ void /*$ra*/ int_garage_door() { } /* * Offset 0x149B4, from D:\driver2\game\C\OBJANIM.C (lines 260..277) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitCyclingPals() { // line 2, offset 0x149b4 int i; // $s0 struct CYCLE_OBJECT *cyc; // $s1 struct RECT vram; // stack offset -24 } // line 18, offset 0x14a58 Source file(s) D:\driver2\game\C\OVERLAY.C+D:\driver2\game\OVERLAY.C, object file obj\overlay.OBJ overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct _PERCENTAGE_BAR { char *tag; // size=0, offset=0 short xpos; // size=0, offset=4 short ypos; // size=0, offset=6 short width; // size=0, offset=8 short height; // size=0, offset=10 unsigned short position; // size=0, offset=12 unsigned short max; // size=0, offset=14 struct COLOUR_BAND *pColourBand; // size=12, offset=16 int flags; // size=0, offset=20 int active; // size=0, offset=24 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 101 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_G4 POLY_G4; typedef struct TILE TILE; typedef struct DR_TPAGE DR_TPAGE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct _PERCENTAGE_BAR PERCENTAGE_BAR; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 9 external declarations static struct COLOUR_BAND felonyColour[3]; // offset 0x0009b934 static struct COLOUR_BAND playerDamageColour[3]; // offset 0x0009b958 static struct COLOUR_BAND damageColour[2]; // offset 0x0009b97c extern char OverlayFlashValue; // offset 0x000aaa40 extern struct _PERCENTAGE_BAR FelonyBar; // offset 0x000ab808 extern struct _PERCENTAGE_BAR DamageBar; // offset 0x000ab7e8 extern struct _PERCENTAGE_BAR ProxyBar; // offset 0x000ab7c8 extern struct _PERCENTAGE_BAR PlayerDamageBar; // offset 0x000ab828 extern struct _PERCENTAGE_BAR Player2DamageBar; // offset 0x000ab7a8 // 12 functions /* * Offset 0x14A58, from D:\driver2\game\C\OVERLAY.C (lines 270..320) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ InitOverlays() { } /* * Offset 0x14C3C, from D:\driver2\game\C\OVERLAY.C (lines 329..370) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DisplayOverlays() { } /* * Offset 0x14DA8, from D:\driver2\game\C\OVERLAY.C (lines 426..529) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawPercentageBar(struct _PERCENTAGE_BAR *bar /*$fp*/) { // line 1, offset 0x14da8 struct POLY_G4 *poly; // $s0 struct CVECTOR temp; // stack offset -56 int min_x; // $s1 int max_x; // $s7 int min_y; // $s2 int max_y; // stack offset -48 char *tag; // $s0 { // line 94, offset 0x15248 short tagX; // $s1 short tagY; // $s2 } // line 102, offset 0x152a4 } // line 104, offset 0x152d4 /* * Offset 0x152D4, from D:\driver2\game\C\OVERLAY.C (lines 532..628) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawProximityBar(struct _PERCENTAGE_BAR *bar /*$t3*/) { // line 1, offset 0x152d4 struct TILE *tile; // $a1 int min_x; // $s1 int max_x; // $s7 int min_y; // $s2 int max_y; // $fp short total; // $v1 char *tag; // $s0 { // line 87, offset 0x15760 short tagX; // $s1 short tagY; // $s2 } // line 95, offset 0x157c4 } // line 97, offset 0x157f4 /* * Offset 0x157F4, from D:\driver2\game\C\OVERLAY.C (lines 707..843) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DrawDrivingGameOverlays() { // line 2, offset 0x157f4 struct SCORE_ENTRY *table; // $s1 char string[32]; // stack offset -64 int i; // $s1 int x; // $s3 int y; // $s2 { // line 11, offset 0x1585c { // line 25, offset 0x158d4 } // line 25, offset 0x158d4 { // line 50, offset 0x159e4 } // line 63, offset 0x15aa8 } // line 136, offset 0x15e4c } // line 137, offset 0x15e70 /* * Offset 0x15E70, from D:\driver2\game\C\OVERLAY.C (lines 378..387) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetFullscreenDrawing() { // line 2, offset 0x15e70 struct DRAWENV drawenv; // stack offset -104 struct DR_ENV *dr_env; // $s0 } // line 10, offset 0x15f20 /* * Offset 0x15F20, from D:\driver2\game\C\OVERLAY.C (lines 395..405) * Stack frame base $sp, size 0 */ void /*$ra*/ InitPercentageBar(struct _PERCENTAGE_BAR *bar /*$a0*/, int size /*$a1*/, struct COLOUR_BAND *pColourBand /*$a2*/, char *tag /*$a3*/) { } /* * Offset 0x15F58, from D:\driver2\game\C\OVERLAY.C (lines 414..417) * Stack frame base $sp, size 0 */ void /*$ra*/ EnablePercentageBar(struct _PERCENTAGE_BAR *bar /*$a0*/, int max /*$a1*/) { } /* * Offset 0x15F6C, from D:\driver2\game\C\OVERLAY.C (lines 631..660) * Stack frame base $sp, size 0 */ void /*$ra*/ SetColourByValue(struct COLOUR_BAND *pColourBand /*$a3*/, int value /*$a1*/, struct CVECTOR *pOut /*$t0*/) { // line 1, offset 0x15f6c struct COLOUR_BAND *pPrevColourBand; // $a2 int scale; // $a0 int temp; // $a1 } // line 30, offset 0x16098 /* * Offset 0x16098, from D:\driver2\game\C\OVERLAY.C (lines 669..675) * Stack frame base $sp, size 0 */ void /*$ra*/ TransparencyOn(void *potz /*$a0*/, unsigned short tpage /*$a1*/) { // line 1, offset 0x16098 struct DR_TPAGE *null; // $a2 } // line 7, offset 0x16114 /* * Offset 0x16114, from D:\driver2\game\C\OVERLAY.C (lines 687..699) * Stack frame base $sp, size 0 */ void /*$ra*/ UpdateFlashValue() { // line 2, offset 0x16114 char size; // $v1 } // line 13, offset 0x16184 /* * Offset 0x16184, from D:\driver2\game\C\OVERLAY.C (lines 846..860) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ PrintScoreTableTime(int x /*$s0*/, int y /*$s1*/, int time /*$a0*/) { // line 1, offset 0x16184 char string[32]; // stack offset -48 int min; // $t0 int frac; // $v1 } // line 15, offset 0x16280 Source file(s) D:\driver2\game\C\OVERMAP.C+D:\driver2\game\OVERMAP.C, object file obj\overmap.OBJ overlay id // 86 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct LINE_F2 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 }; struct LINE_G2 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char p1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 }; struct LINE_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 unsigned long pad; // size=0, offset=24 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct TILE_1 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct COP_SIGHT_DATA { short surroundViewDistance; // size=0, offset=0 short frontViewDistance; // size=0, offset=2 short frontViewAngle; // size=0, offset=4 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPTEX { short u; // size=0, offset=0 short w; // size=0, offset=2 short v; // size=0, offset=4 short h; // size=0, offset=6 }; struct OVERMAP { int x_offset; // size=0, offset=0 int y_offset; // size=0, offset=4 int width; // size=0, offset=8 int height; // size=0, offset=12 char toptile; // size=0, offset=16 char dummy; // size=0, offset=17 int scale; // size=0, offset=20 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 112 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F3 POLY_F3; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct LINE_F2 LINE_F2; typedef struct LINE_G2 LINE_G2; typedef struct LINE_F4 LINE_F4; typedef struct TILE TILE; typedef struct TILE_1 TILE_1; typedef struct DR_AREA DR_AREA; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct COP_SIGHT_DATA COP_SIGHT_DATA; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPTEX MAPTEX; typedef struct OVERMAP OVERMAP; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 28 external declarations static struct OVERMAP overlaidmaps[4]; // offset 0x0009b994 static struct SXYPAIR MapSegmentPos[16]; // offset 0x0009b9f4 static struct XYPAIR NVertex[4]; // offset 0x0009ba34 static struct XYPAIR north[4]; // offset 0x0009ba54 static short big_north[4]; // offset 0x0009ba74 static struct VECTOR player_position; // offset 0x0009ba7c static char *palletedir[8]; // offset 0x0009ba8c extern int map_x_shift; // offset 0x000aa098 extern int map_z_shift; // offset 0x000aa09c static int gUseRotatedMap; // offset 0x000aa054 static int map_x_offset; // offset 0x000aa058 static int map_z_offset; // offset 0x000aa05c static int x_map; // offset 0x000aa060 static int y_map; // offset 0x000aa064 static int old_x_mod; // offset 0x000aa068 static int old_y_mod; // offset 0x000aa06c static int tilehnum; // offset 0x000aa070 static char tile_size; // offset 0x000aa074 static int flashtimer; // offset 0x000aa078 extern int first_paletised_page; // offset 0x000aaa5c static char *MapBitMaps; // offset 0x000aaa48 static struct RECT MapRect; // offset 0x000aaa50 static unsigned short MapTPage; // offset 0x000aaa58 static unsigned short MapClut; // offset 0x000aaa5a extern unsigned short civ_clut[8][32][6]; // offset 0x000aba88 static char MapBuffer[520]; // offset 0x000ab848 static char maptile[4][4]; // offset 0x000aba58 static struct MATRIX map_matrix; // offset 0x000aba68 // 27 functions /* * Offset 0x16280, from D:\driver2\game\C\OVERMAP.C (lines 685..758) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DrawTargetBlip(struct VECTOR *pos /*$t0*/, unsigned char r /*$s2*/, unsigned char g /*$s3*/, unsigned char b /*$s4*/, unsigned long flags /*stack 16*/, unsigned long flags /*$s1*/) { // line 1, offset 0x16280 struct POLY_FT4 *poly; // $t0 struct VECTOR vec; // stack offset -40 int ysize; // $a2 } // line 74, offset 0x16558 /* * Offset 0x16578, from D:\driver2\game\C\OVERMAP.C (lines 815..874) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawTargetArrow(struct VECTOR *pos /*$a2*/, unsigned long flags /*$s3*/) { // line 1, offset 0x16578 struct VECTOR vec; // stack offset -56 struct VECTOR vec2; // stack offset -40 struct POLY_FT3 *null; // $t1 struct POLY_G3 *poly; // $s2 int dx; // $s1 int dy; // $s0 } // line 60, offset 0x16814 /* * Offset 0x16814, from D:\driver2\game\C\OVERMAP.C (lines 883..945) * Stack frame base $sp, size 192 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DrawPlayerDot(struct VECTOR *pos /*$a1*/, short rot /*$s2*/, unsigned char r /*$s5*/, unsigned char g /*$s4*/, int b /*stack 16*/, unsigned long flags /*stack 20*/, unsigned char b /*$s3*/, unsigned long flags /*$s1*/) { // line 1, offset 0x16814 struct MATRIX matrix; // stack offset -168 struct VECTOR direction; // stack offset -136 struct SVECTOR apos[3]; // stack offset -120 struct VECTOR opos[3]; // stack offset -96 struct POLY_F3 *poly; // $t0 struct VECTOR vec; // stack offset -48 } // line 63, offset 0x16ac4 /* * Offset 0x16AE8, from D:\driver2\game\C\OVERMAP.C (lines 954..985) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ProcessOverlayLump(char *lump_ptr /*$s1*/, int lump_size /*$s0*/) { // line 1, offset 0x16ae8 struct TEXTURE_DETAILS info; // stack offset -32 int i; // $a1 int x; // $v0 int y; // $a0 } // line 32, offset 0x16c0c /* * Offset 0x16C0C, from D:\driver2\game\C\OVERMAP.C (lines 994..1035) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ unsigned long /*$ra*/ Long2DDistance(struct VECTOR *pPoint1 /*$a0*/, struct VECTOR *pPoint2 /*$a2*/) { // line 1, offset 0x16c0c struct VECTOR delta; // stack offset -24 unsigned int result; // $v0 { // line 7, offset 0x16c50 int Theta; // $v1 int tempTheta; // $v0 { // line 15, offset 0x16c70 int cos; // $v1 } // line 23, offset 0x16c9c { // line 28, offset 0x16ca4 int sin; // $v1 } // line 38, offset 0x16d04 } // line 39, offset 0x16d04 } // line 42, offset 0x16d14 /* * Offset 0x16D14, from D:\driver2\game\C\OVERMAP.C (lines 1077..1366) * Stack frame base $sp, size 808 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawOverheadMap() { // line 2, offset 0x16d14 int width; // $t5 int height; // $t4 int count; // $s2 int count1; // $s3 int tpage; // $t1 int x_mod; // $s5 int y_mod; // $fp int MeshWidth; // $s6 int MeshHeight; // $s7 long flag; // stack offset -104 struct SVECTOR MapMesh[5][5]; // stack offset -784 struct VECTOR MapMeshO[5][5]; // stack offset -584 struct MAPTEX MapTex[4]; // stack offset -184 struct SVECTOR direction; // stack offset -152 struct POLY_FT4 *spt; // $a3 struct POLY_F4 *sptb; // $a0 struct DR_AREA *draw_area; // $s2 struct RECT clipped_size; // stack offset -144 struct VECTOR translate; // stack offset -136 { // line 35, offset 0x16e24 static int ptab[16]; // offset 0x118 } // line 36, offset 0x16e24 { // line 48, offset 0x16ef8 static int ptab[12]; // offset 0x158 int intens; // $a1 } // line 58, offset 0x16fa8 { // line 62, offset 0x16fa8 { // line 62, offset 0x16fa8 struct VECTOR vec; // stack offset -120 struct TILE_1 *tile1; // $a0 } // line 65, offset 0x170f4 } // line 65, offset 0x170f4 { // line 69, offset 0x170f4 struct _CAR_DATA *cp; // $s0 } // line 84, offset 0x17218 { // line 91, offset 0x17240 } // line 93, offset 0x17240 { // line 108, offset 0x172c0 } // line 110, offset 0x172c0 { // line 125, offset 0x1734c } // line 127, offset 0x1734c { // line 142, offset 0x173e0 } // line 144, offset 0x173e0 } // line 290, offset 0x17c00 /* * Offset 0x17C30, from D:\driver2\game\C\OVERMAP.C (lines 1374..1636) * Stack frame base $sp, size 216 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawFullscreenMap() { // line 2, offset 0x17c30 struct TILE *polys; // $v0 struct POLY_FT4 *back; // $a1 struct POLY_FT3 *null; // $a2 struct SVECTOR Mesh[4]; // stack offset -192 struct VECTOR MeshO[4]; // stack offset -160 struct VECTOR target; // stack offset -96 long flag; // stack offset -64 long count; // $s4 int width; // stack offset -60 int height; // stack offset -56 int x; // $s7 int y; // $s3 int min_x; // $a0 int max_x; // $v0 int min_y; // $v1 int max_y; // $v1 { // line 65, offset 0x17e30 int px; // $a2 int pz; // $a1 } // line 126, offset 0x17f88 { // line 180, offset 0x17ff4 int clipped; // $s5 } // line 232, offset 0x18210 { // line 246, offset 0x182b0 { // line 246, offset 0x182b0 struct VECTOR vec; // stack offset -80 struct TILE_1 *tile1; // $v1 } // line 246, offset 0x182b0 } // line 246, offset 0x182b0 } // line 263, offset 0x183e8 /* * Offset 0x183E8, from D:\driver2\game\C\OVERMAP.C (lines 1645..1675) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ DrawCopIndicators() { // line 2, offset 0x183e8 static int ft[16]; // offset 0x188 struct _CAR_DATA *cp; // $s0 int fade; // $s1 int cc; // $s3 int cs; // $s2 { // line 17, offset 0x18480 int dx; // $a3 int dz; // $a1 int p; // $a1 int q; // $a0 int ap; // $v1 { // line 25, offset 0x18510 } // line 28, offset 0x18568 } // line 29, offset 0x18568 } // line 31, offset 0x185a0 /* * Offset 0x185A0, from D:\driver2\game\C\OVERMAP.C (lines 1697..1775) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawMultiplayerMap() { // line 2, offset 0x185a0 struct POLY_FT4 *poly; // $a2 struct LINE_F2 *line2; // $s1 struct VECTOR target; // stack offset -64 int i; // $s3 int y; // $s7 } // line 79, offset 0x18980 /* * Offset 0x18980, from D:\driver2\game\C\OVERMAP.C (lines 2319..2340) * Stack frame base $sp, size 0 */ void /*$ra*/ FlashOverheadMap(int r /*$a0*/, int g /*$a1*/, int b /*$a2*/) { // line 2, offset 0x18980 struct TILE *tile; // $a3 } // line 22, offset 0x18aa0 /* * Offset 0x18AA0, from D:\driver2\game\C\OVERMAP.C (lines 2350..2382) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ LoadMapTile(int tpage /*$a0*/, int x /*$a1*/, int y /*$a2*/) { // line 1, offset 0x18aa0 struct RECT MapSegment; // stack offset -16 int temp; // $a0 int count; // $a2 int idx; // $a3 } // line 33, offset 0x18bf4 /* * Offset 0x18BF4, from D:\driver2\game\C\OVERMAP.C (lines 2405..2426) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ draw_box() { // line 2, offset 0x18bf4 struct LINE_F4 *line4; // $s0 struct LINE_F2 *line2; // $s1 } // line 22, offset 0x18d54 /* * Offset 0x18D54, from D:\driver2\game\C\OVERMAP.C (lines 2435..2470) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ DrawN(struct VECTOR *pScreenPosition /*$s2*/, int direct /*$s7*/) { // line 1, offset 0x18d54 struct XYPAIR lastPoint; // stack offset -48 struct XYPAIR *pPoint; // $s0 char loop; // $s4 { // line 11, offset 0x18dc4 struct LINE_F2 *pLine; // $a2 } // line 34, offset 0x18ec4 } // line 36, offset 0x18f18 /* * Offset 0x18F18, from D:\driver2\game\C\OVERMAP.C (lines 2479..2525) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawCompass() { // line 2, offset 0x18f18 struct VECTOR position[5]; // stack offset -88 struct XYPAIR *pNorth; // $a1 int scale; // $a0 { // line 3, offset 0x18f18 char loop; // $t2 struct VECTOR *pPosition; // $a3 void *pot; // $s0 { // line 32, offset 0x190b8 struct LINE_G2 *pLine; // $a0 } // line 32, offset 0x190b8 } // line 46, offset 0x19194 } // line 47, offset 0x19194 /* * Offset 0x19194, from D:\driver2\game\C\OVERMAP.C (lines 2534..2568) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DrawBigCompass(struct VECTOR *root /*$a0*/, int angle /*$a1*/) { // line 1, offset 0x19194 struct VECTOR position[5]; // stack offset -96 struct VECTOR *pPosition; // $s0 char loop; // $s1 { // line 23, offset 0x19300 struct LINE_G2 *pLine; // $a1 } // line 23, offset 0x19300 } // line 35, offset 0x193b4 /* * Offset 0x193B4, from D:\driver2\game\C\OVERMAP.C (lines 2577..2606) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CopIndicator(int xpos /*$a3*/, int strength /*$a1*/) { // line 1, offset 0x193b4 struct POLY_F3 *tri; // $a2 int str2; // $fp void *pot; // stack offset -56 } // line 30, offset 0x19594 /* * Offset 0x19594, from D:\driver2\game\C\OVERMAP.C (lines 2609..2670) * Stack frame base $sp, size 184 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawSightCone(struct COP_SIGHT_DATA *pCopSightData /*$a0*/, struct VECTOR *pPosition /*$a1*/, int direction /*$t6*/) { // line 1, offset 0x19594 struct VECTOR vertex[9]; // stack offset -160 struct VECTOR *pVertex; // $t0 int angle; // $a3 int frontViewAngle; // $t1 int negFrontViewAngle; // $a2 int frontViewDistance; // $t4 int surroundViewDistance; // $t3 { // line 15, offset 0x195e8 int len; // $a1 { // line 27, offset 0x19600 int temp; // $v0 } // line 27, offset 0x19600 } // line 27, offset 0x19600 { // line 34, offset 0x1966c struct VECTOR *pVertex; // $a2 void *pot; // $a3 { // line 42, offset 0x196b8 struct POLY_G3 *poly; // $a1 struct VECTOR *pNextVertex; // $a0 } // line 50, offset 0x196dc } // line 61, offset 0x197bc } // line 62, offset 0x197bc /* * Offset 0x197BC, from D:\driver2\game\C\OVERMAP.C (lines 1043..1069) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ InitOverheadMap() { // line 2, offset 0x197bc int tpage; // $s3 int c; // $s2 int d; // $s1 } // line 27, offset 0x198bc /* * Offset 0x198E0, from D:\driver2\game\C\OVERMAP.C (lines 1678..1694) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitMultiplayerMap() { // line 2, offset 0x198e0 struct RECT rect; // stack offset -48 char filename[32]; // stack offset -40 } // line 17, offset 0x19994 /* * Offset 0x19994, from D:\driver2\game\C\OVERMAP.C (lines 1778..1794) * Stack frame base $sp, size 0 */ void /*$ra*/ WorldToMultiplayerMap(struct VECTOR *in /*$a3*/, struct VECTOR *out /*$a2*/) { // line 1, offset 0x19994 int x; // $v1 int z; // $a0 } // line 17, offset 0x19a60 /* * Offset 0x19A60, from D:\driver2\game\C\OVERMAP.C (lines 2392..2394) * Stack frame base $sp, size 0 */ void /*$ra*/ SetMapPos() { } /* * Offset 0x19AF0, from D:\driver2\game\C\OVERMAP.C (lines 2703..2763) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ WorldToOverheadMapPositions(struct VECTOR *pGlobalPosition /*$s1*/, struct VECTOR *pOverheadMapPosition /*$s3*/, int count /*$s2*/, char inputRelative /*$s5*/, int outputRelative /*stack 16*/) { // line 1, offset 0x19af0 struct MATRIX TempMatrix; // stack offset -80 int sin; // $a1 int cos; // $a2 int angle; // $v1 int scale; // $s0 { // line 42, offset 0x19c20 struct SVECTOR tempVector; // stack offset -48 long flag; // stack offset -40 } // line 57, offset 0x19cc0 } // line 61, offset 0x19d0c /* * Offset 0x19D0C, from D:\driver2\game\C\OVERMAP.C (lines 2771..2786) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetFullscreenMapMatrix() { // line 2, offset 0x19d0c struct VECTOR translate; // stack offset -32 struct SVECTOR direction; // stack offset -16 } // line 16, offset 0x19de8 /* * Offset 0x19DE8, from D:\driver2\game\C\OVERMAP.C (lines 2794..2797) * Stack frame base $sp, size 0 */ void /*$ra*/ WorldToFullscreenMap(struct VECTOR *in /*$a0*/, struct VECTOR *out /*$a1*/) { } /* * Offset 0x19E7C, from D:\driver2\game\C\OVERMAP.C (lines 2806..2818) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ void /*$ra*/ WorldToFullscreenMap2(struct VECTOR *in /*$a0*/, struct VECTOR *out /*$a1*/) { // line 1, offset 0x19e7c struct SVECTOR pos; // stack offset -24 long flag; // stack offset -16 } // line 13, offset 0x19f44 /* * Offset 0x19F44, from D:\driver2\game\C\OVERMAP.C (lines 1970..2033) * Stack frame base $sp, size 696 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ ProcessPalletLump(char *lump_ptr /*$a0*/, int lump_size /*$a1*/) { // line 1, offset 0x19f44 int total_cluts; // $v0 int clutValue; // $s1 int tpageindex; // $s2 int texnum; // $s3 int palette; // $s4 int clut_number; // $v1 unsigned short clutTable[320]; // stack offset -680 char *buffPtr; // $s0 { // line 43, offset 0x19fd0 } // line 43, offset 0x19fd0 } // line 64, offset 0x1a094 /* * Offset 0x1A094, from D:\driver2\game\C\OVERMAP.C (lines 2043..2193) * Stack frame base $sp, size 0 */ void /*$ra*/ load_civ_palettes(struct RECT *cluts /*$a0*/) { } Source file(s) D:\driver2\game\C\REPLAYS.C+D:\driver2\game\REPLAYS.C, object file obj\replays.OBJ overlay id // 69 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct REPLAY_PARAMETER_BLOCK { int RecordingEnd; // size=0, offset=0 struct VECTOR_NOPAD lead_car_start; // size=12, offset=4 short Lead_car_dir; // size=0, offset=16 unsigned char timeofday; // size=0, offset=18 unsigned char weather; // size=0, offset=19 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct REPLAY_SAVE_HEADER { unsigned long magic; // size=0, offset=0 unsigned char GameLevel; // size=0, offset=4 unsigned char GameType; // size=0, offset=5 unsigned char reserved1; // size=0, offset=6 unsigned char NumReplayStreams; // size=0, offset=7 unsigned char NumPlayers; // size=0, offset=8 unsigned char RandomChase; // size=0, offset=9 unsigned char CutsceneEvent; // size=0, offset=10 unsigned char gCopDifficultyLevel; // size=0, offset=11 struct MISSION_DATA SavedData; // size=228, offset=12 struct ACTIVE_CHEATS ActiveCheats; // size=4, offset=240 int wantedCar[2]; // size=8, offset=244 int MissionNumber; // size=0, offset=252 int HaveStoredData; // size=0, offset=256 int reserved2[6]; // size=24, offset=260 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct REPLAY_STREAM_HEADER { struct STREAM_SOURCE SourceType; // size=48, offset=0 int Size; // size=0, offset=48 int Length; // size=0, offset=52 }; struct REPLAY_STREAM { struct STREAM_SOURCE SourceType; // size=48, offset=0 struct PADRECORD *InitialPadRecordBuffer; // size=3, offset=48 struct PADRECORD *PadRecordBuffer; // size=3, offset=52 struct PADRECORD *PadRecordBufferEnd; // size=3, offset=56 unsigned char playbackrun; // size=0, offset=60 int length; // size=0, offset=64 }; struct _PING_PACKET { unsigned short frame; // size=0, offset=0 char carId; // size=0, offset=2 char cookieCount; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; // 94 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct REPLAY_PARAMETER_BLOCK REPLAY_PARAMETER_BLOCK; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct REPLAY_SAVE_HEADER REPLAY_SAVE_HEADER; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct REPLAY_STREAM_HEADER REPLAY_STREAM_HEADER; typedef struct REPLAY_STREAM REPLAY_STREAM; typedef struct _PING_PACKET PING_PACKET; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 16 external declarations static char AnalogueUnpack[16]; // offset 0x0009bb5c extern int ReplaySize; // offset 0x000aa0a0 extern char RecordingPads; // offset 0x000aa0a8 extern int pad_recorded; // offset 0x000aa0ac extern int NumReplayStreams; // offset 0x000aa0a4 extern int gOutOfTape; // offset 0x000aa0b0 extern struct REPLAY_PARAMETER_BLOCK *ReplayParameterPtr; // offset 0x000aaa74 extern char *replayptr; // offset 0x000aaa7c extern char *ReplayStart; // offset 0x000aaa64 extern struct SXYPAIR *PlayerWayRecordPtr; // offset 0x000aaa70 extern int way_distance; // offset 0x000aaa68 extern int TimeToWay; // offset 0x000aaa78 extern struct _PING_PACKET *PingBuffer; // offset 0x000aaa80 extern unsigned long PingBufferPos; // offset 0x000aaa6c static int TestCnt; // offset 0x000aaa60 extern struct REPLAY_STREAM ReplayStreams[8]; // offset 0x000ac688 // 12 functions /* * Offset 0x1A09C, from D:\driver2\game\C\REPLAYS.C (lines 498..649) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitPadRecording() { // line 2, offset 0x1a09c int i; // $s0 int remain; // $s0 } // line 152, offset 0x1a234 /* * Offset 0x1A234, from D:\driver2\game\C\REPLAYS.C (lines 657..732) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ SaveReplayToBuffer(char *buffer /*$s0*/) { // line 1, offset 0x1a234 struct REPLAY_SAVE_HEADER *header; // $s2 int i; // $a2 int size; // $s1 int numstreams; // $s6 } // line 76, offset 0x1a798 /* * Offset 0x1A798, from D:\driver2\game\C\REPLAYS.C (lines 740..812) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ LoadReplayFromBuffer(char *buffer /*$s1*/) { // line 2, offset 0x1a798 struct REPLAY_SAVE_HEADER *header; // $s3 struct REPLAY_STREAM_HEADER *sheader; // $t0 int i; // $a1 int size; // $s0 } // line 73, offset 0x1ad50 /* * Offset 0x1AD50, from D:\driver2\game\C\REPLAYS.C (lines 1310..1369) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ cjpRecord(int stream /*$s1*/, unsigned long *ppad /*$s4*/, char *psteer /*$s2*/, char *ptype /*$s3*/) { // line 1, offset 0x1ad50 unsigned long t0; // stack offset -32 int t1; // $s0 } // line 60, offset 0x1af14 /* * Offset 0x1AF34, from D:\driver2\game\C\REPLAYS.C (lines 1222..1268) * Stack frame base $sp, size 8 */ int /*$ra*/ valid_region(int x /*$a0*/, int z /*$a1*/) { // line 2, offset 0x1af34 struct XYPAIR region_coords; // stack offset -8 int region; // $a0 } // line 47, offset 0x1affc /* * Offset 0x1AFFC, from D:\driver2\game\C\REPLAYS.C (lines 1271..1290) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ cjpPlay(int stream /*$a0*/, unsigned long *ppad /*$s2*/, char *psteer /*$s0*/, char *ptype /*$s1*/) { // line 1, offset 0x1affc int ret; // $a0 unsigned long t0; // stack offset -24 int t1; // $v1 } // line 20, offset 0x1b090 /* * Offset 0x1B090, from D:\driver2\game\C\REPLAYS.C (lines 1182..1205) * Stack frame base $sp, size 0 */ char /*$ra*/ GetPingInfo(char *cookieCount /*$a2*/) { // line 1, offset 0x1b090 struct _PING_PACKET *pp; // $a1 char retCarId; // $v0 } // line 24, offset 0x1b118 /* * Offset 0x1B118, from D:\driver2\game\C\REPLAYS.C (lines 1059..1070) * Stack frame base $sp, size 56 * Saved registers at offset -8: ra */ int /*$ra*/ LoadAttractReplay(int mission /*$a2*/) { // line 1, offset 0x1b118 char filename[32]; // stack offset -40 } // line 12, offset 0x1b17c /* * Offset 0x1B17C, from D:\driver2\game\C\REPLAYS.C (lines 1383..1398) * Stack frame base $sp, size 0 */ void /*$ra*/ AllocateReplayStream(struct REPLAY_STREAM *stream /*$a0*/, int maxpad /*$a1*/) { } /* * Offset 0x1B1F0, from D:\driver2\game\C\REPLAYS.C (lines 1402..1437) * Stack frame base $sp, size 0 */ int /*$ra*/ Get(int stream /*$a0*/, unsigned long *pt0 /*$a1*/) { // line 1, offset 0x1b1f0 struct REPLAY_STREAM *rstream; // $a2 unsigned long t0; // $a0 } // line 36, offset 0x1b280 /* * Offset 0x1B280, from D:\driver2\game\C\REPLAYS.C (lines 1440..1476) * Stack frame base $sp, size 0 */ int /*$ra*/ Put(int stream /*$a0*/, unsigned long *pt0 /*$a1*/) { // line 2, offset 0x1b280 struct REPLAY_STREAM *rstream; // $a0 unsigned char **pstream; // $a3 unsigned long t0; // $a1 } // line 37, offset 0x1b364 /* * Offset 0x1B364, from D:\driver2\game\C\REPLAYS.C (lines 1479..1496) * Stack frame base $sp, size 0 */ void /*$ra*/ RecordWaypoint() { } Source file(s) D:\DRIVER2\GAME\ASM\RNC_2.MIP, object file obj\rnc_2.OBJ overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\C\SEARCH.C+D:\driver2\game\SEARCH.C, object file obj\search.OBJ overlay id // 21 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; // 39 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct UV UV; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; // 0 labels // 0 external declarations // 1 functions /* * Offset 0x1BA88, from D:\driver2\game\C\SEARCH.C (lines 12..17) * Stack frame base $sp, size 0 */ void /*$ra*/ InitTextureNames() { } Source file(s) D:\driver2\game\AI.C+D:\driver2\game\C\AI.C, object file obj\ai.OBJ overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct ROADBLOCK { struct VECTOR position; // size=16, offset=0 struct ADJACENT_ROAD_INFO adjacentRoadInfo; // size=10, offset=16 short RoadToBlock; // size=0, offset=26 short AdjacentRoad; // size=0, offset=28 short RoadblockTimer; // size=0, offset=30 int copRespawnTime; // size=0, offset=32 char NumCarsNeededForRoad; // size=0, offset=36 char NumCarsNeededForAdjacentRoad; // size=0, offset=37 char NumCarsSavedForBlock; // size=0, offset=38 char DirectionToRoadblock; // size=0, offset=39 char status; // size=0, offset=40 char AI_Slot[13]; // size=13, offset=41 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; // 107 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct ROADBLOCK ROADBLOCK; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 1 external declarations extern struct ROADBLOCK Roadblock; // offset 0x000ac8a8 // 3 functions /* * Offset 0x1BA90, from D:\driver2\game\C\AI.C (lines 324..340) * Stack frame base $sp, size 0 */ int /*$ra*/ TannerStuckInCar(int doSpeedCheck /*$a0*/) { // line 1, offset 0x1ba90 struct _CAR_DATA *cp; // $a2 } // line 17, offset 0x1bbb8 /* * Offset 0x1BBB8, from D:\driver2\game\C\AI.C (lines 275..277) * Stack frame base $sp, size 0 */ void /*$ra*/ StoreGameFlags() { } /* * Offset 0x1BBE8, from D:\driver2\game\C\AI.C (lines 297..319) * Stack frame base $sp, size 0 */ int /*$ra*/ TannerCanEnterCar(struct _CAR_DATA *cp /*$a0*/, int distToCarSq /*$a1*/) { // line 1, offset 0x1bbe8 { // line 13, offset 0x1bc7c struct SVECTOR *carCollBox; // $v0 int carRange; // $a0 } // line 20, offset 0x1bccc } // line 23, offset 0x1bcd4 Source file(s) C:\PS\INCLUDE\GTEREG.H+C:\PS\INCLUDE\INLINE_A.H+D:\DRIVER2\GAME\ASM\ASMTEST.MIP, object file obj\asmtest.OBJ overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\BCOLL3D.C+D:\driver2\game\C\BCOLL3D.C, object file obj\bcoll3d.OBJ overlay id // 38 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct TestResult { int depth; // size=0, offset=0 struct VECTOR location; // size=16, offset=4 struct VECTOR normal; // size=16, offset=20 }; // 58 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct TestResult TestResult; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; // 0 labels // 0 external declarations // 3 functions /* * Offset 0x1C160, from D:\driver2\game\C\BCOLL3D.C (lines 83..129) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 */ void /*$ra*/ PointFaceCheck(struct _CAR_DATA *cp0 /*$t7*/, struct _CAR_DATA *cp1 /*$t8*/, int i /*$t9*/, struct TestResult *least /*$a3*/, int nSign /*stack 16*/, int nSign /*$s0*/) { // line 1, offset 0x1c160 int k; // $t5 struct VECTOR normal; // stack offset -56 struct VECTOR diff; // stack offset -40 struct VECTOR point; // stack offset -24 int depth; // $t0 { // line 23, offset 0x1c250 int partialDepth; // $v1 } // line 36, offset 0x1c2ec } // line 47, offset 0x1c380 /* * Offset 0x1C380, from D:\driver2\game\C\BCOLL3D.C (lines 153..164) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ CarCarCollision3(struct _CAR_DATA *c0 /*$a0*/, struct _CAR_DATA *c1 /*$a1*/, int *depth /*$s2*/, struct VECTOR *where /*$s0*/, struct VECTOR *normal /*stack 16*/, struct VECTOR *normal /*$s1*/) { // line 1, offset 0x1c380 struct TestResult tr; // stack offset -56 int res; // $t1 } // line 12, offset 0x1c408 /* * Offset 0x1C408, from D:\driver2\game\C\BCOLL3D.C (lines 133..150) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ collided3d(struct _CAR_DATA *cp0 /*$s3*/, struct _CAR_DATA *cp1 /*$s2*/, struct TestResult *least /*$s1*/) { // line 1, offset 0x1c408 int i; // $s0 } // line 18, offset 0x1c51c Source file(s) D:\driver2\game\BCOLLIDE.C+D:\driver2\game\C\BCOLLIDE.C, object file obj\bcollide.OBJ overlay id // 79 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct BUILDING_BOX { struct VECTOR pos; // size=16, offset=0 int xsize; // size=0, offset=16 int zsize; // size=0, offset=20 int theta; // size=0, offset=24 int height; // size=0, offset=28 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct CRET2D { struct VECTOR hit; // size=16, offset=0 struct VECTOR surfNormal; // size=16, offset=16 int penetration; // size=0, offset=32 int neverfree; // size=0, offset=36 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct SMASHABLE_OBJECT { int modelIdx; // size=0, offset=0 char *name; // size=0, offset=4 int sound; // size=0, offset=8 int volume; // size=0, offset=12 int pitch; // size=0, offset=16 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 111 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct BUILDING_BOX BUILDING_BOX; typedef struct CDATA2D CDATA2D; typedef struct CRET2D CRET2D; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct SMASHABLE_OBJECT SMASHABLE_OBJECT; typedef struct UV UV; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 5 external declarations extern int mScale; // offset 0x000aa0c0 extern int bodySelect; // offset 0x000aa0bc extern int boxOverlap; // offset 0x000aaa88 extern int wibblewibblewoo; // offset 0x000aaa8c extern int mTheta; // offset 0x000aaa90 // 7 functions /* * Offset 0x1C51C, from D:\driver2\game\C\BCOLLIDE.C (lines 120..184) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 fp */ int /*$ra*/ bcollided2d(struct CDATA2D *body /*$t4*/, int needOverlap /*$fp*/) { // line 1, offset 0x1c51c struct VECTOR delta; // stack offset -56 int dtheta; // $v1 int ac; // $s6 int as; // $s5 int i; // $t7 int j; // $a2 int k; // $t5 { // line 40, offset 0x1c738 int xover; // $t0 int zover; // $a0 int tmp2; // $a2 int FE; // $a3 } // line 63, offset 0x1c890 } // line 65, offset 0x1c8c0 /* * Offset 0x1C8C0, from D:\driver2\game\C\BCOLLIDE.C (lines 195..272) * Stack frame base $sp, size 8 * Saved registers at offset -4: s0 s1 */ void /*$ra*/ bFindCollisionPoint(struct CDATA2D *body /*$t6*/, struct CRET2D *collisionResult /*$s0*/) { // line 1, offset 0x1c8c0 int carBarrierCollision; // $s1 int i; // $a3 int j; // $v1 int k; // $t0 int smallest; // $t4 int besti; // $t5 int bestk; // $t7 int sign; // $t3 int sign0; // $t0 int sign1; // $a3 { // line 17, offset 0x1c964 int upper; // $a1 int lower; // $v1 } // line 33, offset 0x1c9bc { // line 40, offset 0x1c9f0 int upper; // $a1 int lower; // $a0 } // line 54, offset 0x1ca60 } // line 78, offset 0x1cc30 /* * Offset 0x1CC30, from D:\driver2\game\C\BCOLLIDE.C (lines 275..356) * Stack frame base $sp, size 264 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ bFindCollisionTime(struct CDATA2D *cd /*$s5*/, struct CRET2D *collisionResult /*stack 4*/) { // line 1, offset 0x1cc30 int i; // $s4 int q; // $s0 int hit; // $t2 int neverfree; // $fp int time; // $s1 int step; // $s3 struct CDATA2D original[2]; // stack offset -248 } // line 82, offset 0x1ceec /* * Offset 0x1CEEC, from D:\driver2\game\C\BCOLLIDE.C (lines 384..464) * Stack frame base $sp, size 0 */ void /*$ra*/ ApplyDamage(struct _CAR_DATA *cp /*$a0*/, char region /*$a1*/, int value /*$a2*/, char fakeDamage /*$a3*/) { // line 1, offset 0x1ceec short *pRegion; // $t0 } // line 81, offset 0x1d0b0 /* * Offset 0x1D0B0, from D:\driver2\game\C\BCOLLIDE.C (lines 470..571) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ DamageCar3D(struct _CAR_DATA *cp /*$s1*/, long *delta[4] /*$t4*/, int strikeVel /*$t6*/, struct _CAR_DATA *pOtherCar /*$s2*/) { // line 1, offset 0x1d0b0 int l; // $v1 int w; // $v0 int region; // $a1 long nose[4]; // stack offset -56 long door[4]; // stack offset -40 int impact; // $s3 int QQQ; // $t7 { // line 79, offset 0x1d388 char fakeDamage; // $a3 char player_id; // $s0 char kludge; // $a3 } // line 98, offset 0x1d424 } // line 102, offset 0x1d454 /* * Offset 0x1D454, from D:\driver2\game\C\BCOLLIDE.C (lines 587..632) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DamageCar(struct _CAR_DATA *cp /*$s2*/, struct CDATA2D *cd /*$s1*/, struct CRET2D *collisionResult /*$s3*/, int strikeVel /*$s0*/) { // line 1, offset 0x1d454 struct VECTOR delta; // stack offset -48 int l; // $v1 int w; // $v0 int region; // $a1 int damage; // $a2 char player_id; // $s5 int impact; // $s4 int QQQ; // $t0 } // line 46, offset 0x1d668 /* * Offset 0x1D68C, from D:\driver2\game\C\BCOLLIDE.C (lines 839..1194) * Stack frame base $sp, size 200 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CarBuildingCollision(struct _CAR_DATA *cp /*$s3*/, struct BUILDING_BOX *building /*$s2*/, struct CELL_OBJECT *cop /*$s6*/, int mightBeABarrier /*$s1*/) { // line 1, offset 0x1d68c static struct CDATA2D cd[2]; // offset 0x0 static struct CRET2D collisionResult; // offset 0xd0 int debris_colour; // stack offset -48 struct VECTOR tempwhere; // stack offset -168 struct MODEL *pModel; // $s5 int player_id; // stack offset -44 { // line 27, offset 0x1d794 struct SVECTOR boxDisp; // stack offset -152 { // line 69, offset 0x1d8f4 int wbod; // $a1 } // line 79, offset 0x1d9a4 } // line 81, offset 0x1d9a4 { // line 138, offset 0x1da64 { // line 138, offset 0x1da64 struct VECTOR velocity; // stack offset -144 long pointVel[4]; // stack offset -128 long reaction[4]; // stack offset -112 long lever[4]; // stack offset -96 int strikeVel; // $s1 { // line 175, offset 0x1dc58 short scale; // $a2 } // line 195, offset 0x1dca4 { // line 211, offset 0x1dd04 { // line 219, offset 0x1dd28 struct SMASHABLE_OBJECT *sip; // $a1 struct SMASHABLE_OBJECT *match; // $s0 int chan; // $s1 int adjust; // $s2 } // line 240, offset 0x1de3c } // line 254, offset 0x1dec4 { // line 259, offset 0x1def4 struct VECTOR LeafPosition; // stack offset -80 } // line 259, offset 0x1def4 { // line 277, offset 0x1df50 { // line 280, offset 0x1df90 struct VECTOR lamp_velocity; // stack offset -64 } // line 284, offset 0x1dfc4 } // line 285, offset 0x1dfc4 { // line 304, offset 0x1e058 int twistY; // $a1 int lever_dot_n; // $a0 int displacementsquared; // $v1 int denom; // $v1 } // line 316, offset 0x1e170 } // line 345, offset 0x1e37c } // line 349, offset 0x1e384 } // line 356, offset 0x1e3e8 Source file(s) D:\driver2\game\BOMBERMAN.C+D:\driver2\game\C\BOMBERMAN.C, object file obj\bomberman.obj overlay id // 72 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct _ExOBJECT { int time; // size=0, offset=0 int speed; // size=0, offset=4 int hscale; // size=0, offset=8 int rscale; // size=0, offset=12 enum ExplosionType type; // size=2, offset=16 struct VECTOR pos; // size=16, offset=20 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct CRET2D { struct VECTOR hit; // size=16, offset=0 struct VECTOR surfNormal; // size=16, offset=16 int penetration; // size=0, offset=32 int neverfree; // size=0, offset=36 }; struct BOMB { unsigned char flags; // size=0, offset=0 unsigned char active; // size=0, offset=1 short rot_speed; // size=0, offset=2 struct VECTOR position; // size=16, offset=4 struct VECTOR velocity; // size=16, offset=20 }; // 106 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _ExOBJECT EXOBJECT; typedef struct CDATA2D CDATA2D; typedef struct CRET2D CRET2D; typedef struct BOMB BOMB; typedef unsigned int size_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 11 external declarations static int ThrownBombDelay; // offset 0x000aa0c4 static int CurrentBomb; // offset 0x000aa0c8 static int fullStrike; // offset 0x000aa0cc static int halfStrike; // offset 0x000aa0d0 static int gWantFlash; // offset 0x000aa0d4 static int flashval; // offset 0x000aa0d8 extern struct MODEL *gBombModel; // offset 0x000aa0dc extern struct _CAR_DATA *gBombTargetVehicle; // offset 0x000aa0e0 extern int littleBoxRange; // offset 0x000aa0e4 extern int minBoxSize; // offset 0x000aa0e8 static struct BOMB ThrownBombs[5]; // offset 0x000ac9d8 // 7 functions /* * Offset 0x1E3E8, from D:\driver2\game\C\BOMBERMAN.C (lines 245..356) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ HandleThrownBombs() { // line 2, offset 0x1e3e8 struct BOMB *bomb; // $s1 struct VECTOR velocity; // stack offset -48 struct _CAR_DATA *cp; // $s0 int i; // $s5 int y; // $a0 { // line 13, offset 0x1e42c } // line 56, offset 0x1e5c8 { // line 74, offset 0x1e670 int len; // $v1 } // line 85, offset 0x1e6e8 } // line 112, offset 0x1e7e8 /* * Offset 0x1E810, from D:\driver2\game\C\BOMBERMAN.C (lines 381..424) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DrawThrownBombs() { // line 2, offset 0x1e810 struct MATRIX object_matrix; // stack offset -80 struct MATRIX *finalmatrix; // $s2 struct BOMB *bomb; // $s0 struct VECTOR pos; // stack offset -48 int i; // $s3 { // line 16, offset 0x1e86c } // line 33, offset 0x1e998 { // line 39, offset 0x1e9b4 } // line 43, offset 0x1e9dc } // line 44, offset 0x1e9dc /* * Offset 0x1EA00, from D:\driver2\game\C\BOMBERMAN.C (lines 432..485) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ BombThePlayerToHellAndBack(int car /*$s3*/) { // line 1, offset 0x1ea00 struct BOMB *bomb; // $t3 } // line 54, offset 0x1ec3c /* * Offset 0x1EC58, from D:\driver2\game\C\BOMBERMAN.C (lines 496..522) * Stack frame base $sp, size 232 * Saved registers at offset -8: ra */ int /*$ra*/ BombCollisionCheck(struct _CAR_DATA *cp /*$a0*/, struct VECTOR *pPos /*$a1*/) { // line 1, offset 0x1ec58 struct CDATA2D cd[2]; // stack offset -216 int carLength[2]; // stack offset -16 { // line 1, offset 0x1ec58 } // line 1, offset 0x1ec58 } // line 27, offset 0x1ed18 /* * Offset 0x1ED18, from D:\driver2\game\C\BOMBERMAN.C (lines 534..739) * Stack frame base $sp, size 368 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ ExplosionCollisionCheck(struct _CAR_DATA *cp /*$s1*/, struct _ExOBJECT *pE /*$s3*/) { // line 1, offset 0x1ed18 struct CDATA2D cd[2]; // stack offset -352 int carLength[2]; // stack offset -152 static int setUsed; // offset 0x28 int tanner; // $s6 { // line 12, offset 0x1ed74 { // line 12, offset 0x1ed74 } // line 12, offset 0x1ed74 { // line 19, offset 0x1ee0c } // line 24, offset 0x1ee80 { // line 27, offset 0x1ee80 int x; // $a1 int z; // $v1 struct VECTOR *pos; // $v0 } // line 66, offset 0x1ef54 { // line 89, offset 0x1ef94 struct CRET2D collisionResult; // stack offset -144 { // line 92, offset 0x1ef94 struct VECTOR velocity; // stack offset -104 long pointVel[4]; // stack offset -88 long reaction[4]; // stack offset -72 long lever[4]; // stack offset -56 int strikeVel; // $s0 { // line 154, offset 0x1f210 } // line 161, offset 0x1f250 { // line 164, offset 0x1f250 int twistY; // $a1 int lever_dot_n; // $a0 int displacementsquared; // $v1 int denom; // $v1 } // line 176, offset 0x1f360 } // line 198, offset 0x1f4a8 } // line 199, offset 0x1f4a8 } // line 200, offset 0x1f4a8 } // line 206, offset 0x1f4f4 /* * Offset 0x1F4F4, from D:\driver2\game\C\BOMBERMAN.C (lines 747..760) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ AddFlash(struct VECTOR *pos /*$a0*/) { // line 1, offset 0x1f4f4 int dist; // $a0 } // line 14, offset 0x1f570 /* * Offset 0x1F570, from D:\driver2\game\C\BOMBERMAN.C (lines 222..234) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitThrownBombs() { // line 2, offset 0x1f570 int i; // $v1 } // line 13, offset 0x1f5f4 Source file(s) D:\driver2\game\C\CAMERA.C+D:\driver2\game\CAMERA.C, object file obj\camera.OBJ overlay id // 74 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct COLLISION_PACKET { short type; // size=0, offset=0 short xpos; // size=0, offset=2 short ypos; // size=0, offset=4 short zpos; // size=0, offset=6 short flags; // size=0, offset=8 short yang; // size=0, offset=10 short empty; // size=0, offset=12 short xsize; // size=0, offset=14 short ysize; // size=0, offset=16 short zsize; // size=0, offset=18 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct PAD { unsigned char active; // size=0, offset=0 unsigned char type; // size=0, offset=1 unsigned char dualshock; // size=0, offset=2 unsigned char reserved1; // size=0, offset=3 unsigned short direct; // size=0, offset=4 unsigned short dirnew; // size=0, offset=6 char diranalog[4]; // size=4, offset=8 unsigned short mapped; // size=0, offset=12 unsigned short mapnew; // size=0, offset=14 char mapanalog[4]; // size=4, offset=16 struct MAPPING mappings; // size=36, offset=20 unsigned char alarmShakeCounter; // size=0, offset=56 unsigned char asd; // size=0, offset=57 unsigned char sdf; // size=0, offset=58 unsigned char dfg; // size=0, offset=59 unsigned char delay; // size=0, offset=60 unsigned char port; // size=0, offset=61 unsigned char state; // size=0, offset=62 unsigned char dsactive; // size=0, offset=63 unsigned char *shakeptr; // size=0, offset=64 unsigned char motors[2]; // size=2, offset=68 unsigned char shake_type; // size=0, offset=70 unsigned char vibrate; // size=0, offset=71 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct CELL_ITERATOR { struct CELL_DATA *pcd; // size=2, offset=0 struct PACKED_CELL_OBJECT *ppco; // size=8, offset=4 struct XZPAIR near; // size=8, offset=8 int use_computed; // size=0, offset=16 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 102 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct COLLISION_PACKET COLLISION_PACKET; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _PLAYER PLAYER; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct DB DB; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct MAPPING MAPPING; typedef struct PAD PAD; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct CELL_ITERATOR CELL_ITERATOR; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _EVENT EVENT; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct MVERTEX SV5x5[5][5]; // 0 labels // 21 external declarations extern struct VECTOR CameraPos; // offset 0x0009bdb4 extern struct VECTOR camera_position; // offset 0x0009bdc4 extern struct MATRIX face_camera_work; // offset 0x0009bdd4 extern int gCameraDistance; // offset 0x000aa0fc extern int gCameraMaxDistance; // offset 0x000aa100 extern int gCameraAngle; // offset 0x000aa104 extern struct SVECTOR camera_angle; // offset 0x000aa0f0 extern int current_camera_angle; // offset 0x000aa0f8 extern char inGameCamera[4]; // offset 0x000aa108 extern int jtest53; // offset 0x000aa10c extern int headtarget; // offset 0x000aa110 extern int headposition; // offset 0x000aa114 extern int maxCameraDist; // offset 0x000aaa9c extern unsigned short paddCamera; // offset 0x000aaaa4 static long baseDir; // offset 0x000aaa98 extern struct _CAR_DATA *jcam; // offset 0x000aaaa0 extern struct MATRIX camera_matrix; // offset 0x000acaf0 extern struct MATRIX inv_camera_matrix; // offset 0x000acad0 extern struct MATRIX face_camera; // offset 0x000acaa0 static long basePos[3]; // offset 0x000aca90 extern struct VECTOR viewer_position; // offset 0x000acac0 // 10 functions /* * Offset 0x1F5F4, from D:\driver2\game\C\CAMERA.C (lines 422..543) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitCamera(struct _PLAYER *lp /*$s0*/) { // line 1, offset 0x1f5f4 struct SVECTOR boxDisp; // stack offset -16 { // line 6, offset 0x1f61c } // line 6, offset 0x1f61c { // line 19, offset 0x1f6ac struct _CAR_DATA *lcp; // $a0 } // line 19, offset 0x1f6ac { // line 32, offset 0x1f794 struct _EVENT *event; // $a1 } // line 33, offset 0x1f794 } // line 122, offset 0x1fa20 /* * Offset 0x1FA20, from D:\driver2\game\C\CAMERA.C (lines 553..595) * Stack frame base $sp, size 0 */ void /*$ra*/ ModifyCamera() { // line 2, offset 0x1fa20 struct PAD *locPad; // $a3 struct _PLAYER *lp; // $a2 { // line 15, offset 0x1fafc char *pNextCameraview; // $a0 } // line 25, offset 0x1fb48 { // line 32, offset 0x1fb64 int cam_ang; // $a0 int length; // $a1 } // line 40, offset 0x1fc04 } // line 43, offset 0x1fc10 /* * Offset 0x1FC18, from D:\driver2\game\C\CAMERA.C (lines 609..701) * Stack frame base $sp, size 184 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ CameraCollisionCheck() { // line 2, offset 0x1fc18 struct MODEL *model; // $v1 struct COLLISION_PACKET *collide; // $t2 struct CELL_OBJECT *cop; // $t3 struct CELL_ITERATOR ci; // stack offset -168 struct VECTOR nearpoint; // stack offset -144 struct VECTOR surfacenormal; // stack offset -128 struct VECTOR surfacepoint; // stack offset -112 int cell_x; // $a0 int cell_z; // $a1 int xd; // $v1 int zd; // $a0 int num_cb; // $t5 int box_loop; // $t4 int sphere_sq; // $a2 int camera_size; // $s0 int count; // $s1 struct VECTOR temp_cam; // stack offset -96 { // line 50, offset 0x1fdf4 struct MATRIX *mat; // $a2 struct VECTOR offset; // stack offset -80 struct VECTOR cam_vec; // stack offset -64 struct VECTOR normal; // stack offset -48 int xmin; // $a0 int xmax; // $a3 int ymin; // $t0 int ymax; // $v1 int zmin; // $a1 int zmax; // $a2 int tx; // $a3 int tz; // $a1 } // line 85, offset 0x1ffd0 } // line 93, offset 0x2003c /* * Offset 0x2003C, from D:\driver2\game\C\CAMERA.C (lines 777..892) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ PlaceCameraFollowCar(struct _PLAYER *lp /*$s2*/) { // line 1, offset 0x2003c int carheight; // $a0 int minimum_height; // $s1 int cammapht; // $s0 int new_angle; // $a0 int camPosVy; // $s1 struct VECTOR locCameraPos; // stack offset -48 int lbody; // $a0 int hbody; // $a3 int camExpandSpeed; // $s6 { // line 23, offset 0x20088 struct _CAR_DATA *camCar; // $v1 } // line 33, offset 0x2011c } // line 116, offset 0x2050c /* * Offset 0x2050C, from D:\driver2\game\C\CAMERA.C (lines 987..1076) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ PlaceCameraInCar(struct _PLAYER *lp /*$s3*/, int BumperCam /*$a1*/) { // line 1, offset 0x2050c struct _CAR_DATA *cp; // $s2 { // line 57, offset 0x207bc } // line 58, offset 0x207cc { // line 62, offset 0x207e0 } // line 65, offset 0x20800 } // line 90, offset 0x20904 /* * Offset 0x20904, from D:\driver2\game\C\CAMERA.C (lines 904..949) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ PlaceCameraAtLocation(struct _PLAYER *lp /*$s1*/, int zoom /*$s2*/) { // line 1, offset 0x20904 int d; // $s0 { // line 7, offset 0x20930 struct VECTOR temp; // stack offset -32 } // line 9, offset 0x20930 } // line 46, offset 0x209f8 /* * Offset 0x20A10, from D:\driver2\game\C\CAMERA.C (lines 716..756) * Stack frame base $sp, size 0 */ void /*$ra*/ TurnHead(struct _PLAYER *lp /*$a0*/) { // line 1, offset 0x20a10 } // line 41, offset 0x20b08 /* * Offset 0x20B08, from D:\driver2\game\C\CAMERA.C (lines 960..975) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ PointAtTarget(struct VECTOR *pPosition /*$a0*/, struct VECTOR *pTarget /*$a1*/, struct SVECTOR *pAngleVec /*$s0*/) { // line 1, offset 0x20b08 struct VECTOR delta; // stack offset -32 int d; // $s1 } // line 16, offset 0x20bc0 /* * Offset 0x20BC0, from D:\driver2\game\C\CAMERA.C (lines 1083..1113) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ int /*$ra*/ OK_To_Zoom() { // line 2, offset 0x20bc0 int old_z; // $s0 struct VECTOR temp; // stack offset -24 } // line 31, offset 0x20c70 /* * Offset 0x20C70, from D:\driver2\game\C\CAMERA.C (lines 1119..1122) * Stack frame base $sp, size 0 */ void /*$ra*/ SetBasePos(struct VECTOR *pVec /*$a0*/) { } Source file(s) D:\driver2\game\C\CARS.C+D:\driver2\game\CARS.C, object file obj\cars.OBJ overlay id // 83 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_GT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 unsigned char r1; // size=0, offset=16 unsigned char g1; // size=0, offset=17 unsigned char b1; // size=0, offset=18 unsigned char p1; // size=0, offset=19 short x1; // size=0, offset=20 short y1; // size=0, offset=22 unsigned char u1; // size=0, offset=24 unsigned char v1; // size=0, offset=25 unsigned short tpage; // size=0, offset=26 unsigned char r2; // size=0, offset=28 unsigned char g2; // size=0, offset=29 unsigned char b2; // size=0, offset=30 unsigned char p2; // size=0, offset=31 short x2; // size=0, offset=32 short y2; // size=0, offset=34 unsigned char u2; // size=0, offset=36 unsigned char v2; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT4LIT { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct CAR_MODEL { int numFT3; // size=0, offset=0 struct CAR_POLY *pFT3; // size=24, offset=4 int numGT3; // size=0, offset=8 struct CAR_POLY *pGT3; // size=24, offset=12 int numB3; // size=0, offset=16 struct CAR_POLY *pB3; // size=24, offset=20 struct SVECTOR *vlist; // size=8, offset=24 struct SVECTOR *nlist; // size=8, offset=28 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct plotCarGlobals { unsigned char *primptr; // size=0, offset=0 long *ot; // size=0, offset=4 unsigned long intensity; // size=0, offset=8 unsigned short *pciv_clut; // size=0, offset=12 unsigned long ShineyTPageASL16; // size=0, offset=16 unsigned long ShineyClutASL16; // size=0, offset=20 unsigned char *damageLevel; // size=0, offset=24 unsigned char *shineyTable; // size=0, offset=28 int ghost; // size=0, offset=32 }; // 113 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F3 POLY_F3; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_GT3 POLY_GT3; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT4LIT POLYFT4LIT; typedef struct _PLAYER PLAYER; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct TEX_INFO TEX_INFO; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct UV UV; typedef struct DB DB; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct CAR_POLY CAR_POLY; typedef struct CAR_MODEL CAR_MODEL; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct plotCarGlobals plotCarGlobals; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct MVERTEX SV5x5[5][5]; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; // 0 labels // 25 external declarations extern char carTpages[4][8]; // offset 0x0009be24 extern char specTpages[4][12]; // offset 0x0009bdf4 extern struct SVECTOR day_vectors[4]; // offset 0x0009be44 extern struct SVECTOR night_vectors[4]; // offset 0x0009be64 extern struct SVECTOR day_colours[4]; // offset 0x0009be84 extern struct SVECTOR night_colours[4]; // offset 0x0009bea4 extern struct MATRIX light_matrix; // offset 0x0009bec4 extern struct MATRIX colour_matrix; // offset 0x0009bee4 extern int trayoffset; // offset 0x000aa118 extern int gDoBonnets; // offset 0x000aa11c extern int civ_smoke_enabled; // offset 0x000aa120 extern int gCurrentResidentSlot; // offset 0x000aa124 extern int switch_detail_distance; // offset 0x000aa128 extern int myPalette; // offset 0x000aa12c extern struct SVECTOR carDisplayOffset; // offset 0x000aa138 extern int gForceLowDetailCars; // offset 0x000aaab4 extern int whichCP; // offset 0x000aaab0 extern int baseSpecCP; // offset 0x000aaab8 extern int num_cars_drawn; // offset 0x000aaabc extern unsigned long gUnderIntensity; // offset 0x000aaaac extern struct CAR_MODEL NewCarModel[5]; // offset 0x000acb68 extern struct CAR_MODEL NewLowCarModel[5]; // offset 0x000b87c0 extern struct MATRIX save_light_matrix; // offset 0x000acc08 extern struct MATRIX save_colour_matrix; // offset 0x000b8860 extern struct CAR_POLY pbf[2001]; // offset 0x000acc28 // 17 functions /* * Offset 0x20C94, from D:\driver2\game\C\CARS.C (lines 834..907) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ plotNewCarModel(struct CAR_MODEL *car /*$s0*/, int palette /*$s2*/) { // line 1, offset 0x20c94 struct plotCarGlobals _pg; // stack offset -72 struct SVECTOR v0; // stack offset -32 unsigned long lightlevel; // stack offset -24 } // line 74, offset 0x20e88 /* * Offset 0x20EA0, from D:\driver2\game\C\CARS.C (lines 1125..1250) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 s1 */ void /*$ra*/ plotCarPolyGT3(int numTris /*$a0*/, struct CAR_POLY *src /*$t1*/, struct SVECTOR *vlist /*$s0*/, struct SVECTOR *nlist /*$a3*/, struct plotCarGlobals *pg /*stack 16*/, int palette /*stack 20*/, struct plotCarGlobals *pg /*$t8*/, int palette /*$v0*/) { // line 1, offset 0x20ea0 struct POLY_GT3 *prim; // $t0 long *ot; // $s1 long GT3rgb; // stack offset -24 int i; // $t7 int v0; // $t3 int v1; // $t4 int v2; // $t2 int n0; // $t3 int n1; // $a2 int n2; // $a0 int r0; // stack offset -20 int r1; // stack offset -16 int r2; // $v0 int reg; // $a0 int clut_uv0; // $a1 int tpage_uv1; // $t6 int uv3_uv2; // $t5 unsigned short *clut_base; // $t9 { // line 1, offset 0x20ea0 int ofse; // $v1 } // line 1, offset 0x20ea0 { // line 106, offset 0x21040 int ofse; // $v1 } // line 106, offset 0x21040 } // line 126, offset 0x210b8 /* * Offset 0x210B8, from D:\driver2\game\C\CARS.C (lines 1442..1788) * Stack frame base $sp, size 344 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawCar(struct _CAR_DATA *cp /*$s3*/, int view /*$a1*/) { // line 1, offset 0x210b8 int WheelSpeed; // $s0 int model; // $fp struct _PLAYER *lp; // $a2 { // line 12, offset 0x21174 struct CVECTOR col; // stack offset -312 } // line 50, offset 0x21244 { // line 54, offset 0x21244 struct MATRIX temp_mat1; // stack offset -304 struct MATRIX temp_mat2; // stack offset -272 struct MATRIX final_mat; // stack offset -240 struct VECTOR pos; // stack offset -208 struct VECTOR pos1; // stack offset -192 struct SVECTOR temp_vec; // stack offset -176 int result; // $s4 { // line 77, offset 0x21290 struct VECTOR corners[4]; // stack offset -168 } // line 96, offset 0x21384 { // line 100, offset 0x21384 struct VECTOR d; // stack offset -104 struct VECTOR dist; // stack offset -88 } // line 117, offset 0x214d8 { // line 168, offset 0x2154c int i; // $a0 } // line 173, offset 0x21570 { // line 185, offset 0x215a4 struct MATRIX workmatrix; // stack offset -104 struct CAR_MODEL *CarModelPtr; // $s1 { // line 193, offset 0x21604 } // line 195, offset 0x21620 } // line 197, offset 0x21620 { // line 208, offset 0x21674 int damage; // $v1 { // line 264, offset 0x217bc struct CAR_MODEL *CarModelPtr; // $s0 { // line 264, offset 0x217bc struct MATRIX workmatrix; // stack offset -72 } // line 293, offset 0x218bc } // line 294, offset 0x218bc } // line 295, offset 0x218bc { // line 314, offset 0x2191c } // line 322, offset 0x21984 } // line 346, offset 0x21ac8 } // line 347, offset 0x21ac8 /* * Offset 0x21AF8, from D:\driver2\game\C\CARS.C (lines 1850..2045) * Stack frame base $sp, size 160 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawCarWheels(struct _CAR_DATA *cp /*$fp*/, struct MATRIX *RearMatrix /*stack 4*/, struct VECTOR *pos /*stack 8*/, int zclip /*$a3*/) { // line 1, offset 0x21af8 struct CAR_COSMETICS *car_cos; // $s0 struct MATRIX FrontMatrix; // stack offset -144 struct MODEL *WheelModel; // $s0 struct MODEL *WheelModelBack; // stack offset -56 struct MODEL *WheelModelFront; // stack offset -52 int i; // $s4 static short FrontWheelRotation[20]; // offset 0x0 static short BackWheelRotation[20]; // offset 0x30 short model; // $a0 short wheelSize; // $s2 { // line 16, offset 0x21ba8 int FrontWheelIncrement; // $a3 int BackWheelIncrement; // $t0 } // line 69, offset 0x21cd0 { // line 72, offset 0x21cd0 int c; // $t2 int s; // $t3 int FW1z; // $v0 int FW2z; // $a0 int BW1z; // $v0 int BW2z; // $a3 struct SVECTOR *VertPtr; // $t6 } // line 76, offset 0x21cd0 { // line 76, offset 0x21cd0 struct MATRIX SteerMatrix; // stack offset -112 } // line 76, offset 0x21cd0 { // line 138, offset 0x21fa4 struct SVECTOR *verts; // $s5 { // line 157, offset 0x21ff8 struct VECTOR WheelPos; // stack offset -80 struct SVECTOR sWheelPos; // stack offset -64 } // line 162, offset 0x22028 } // line 194, offset 0x22118 } // line 196, offset 0x22180 /* * Offset 0x22180, from D:\driver2\game\C\CARS.C (lines 2058..2142) * Stack frame base $sp, size 8 */ void /*$ra*/ DrawWheelObject(struct MODEL *model /*$t2*/, struct SVECTOR *verts /*$t4*/, int transparent /*$a2*/, int wheelnum /*$a3*/) { // line 1, offset 0x22180 struct POLY_FT4 *prims; // $t0 struct POLYFT4LIT *src; // $t1 int i; // $t2 int Z; // stack offset -4 int clut; // $t8 int tpage; // $t7 unsigned long bright; // $t6 unsigned long dim; // $t5 { // line 35, offset 0x22298 int flag1; // stack offset -8 long vl; // $a0 { // line 53, offset 0x22348 int r2; // $v1 } // line 53, offset 0x22348 } // line 83, offset 0x22430 } // line 85, offset 0x22458 /* * Offset 0x22458, from D:\driver2\game\C\CARS.C (lines 2198..2315) * Stack frame base $sp, size 112 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ ComputeCarLightingLevels(struct _CAR_DATA *cp /*$s1*/, char detail /*$s3*/) { // line 1, offset 0x22458 int light; // $s2 struct SVECTOR lightsourcevector; // stack offset -96 struct SVECTOR colour; // stack offset -88 struct VECTOR lightValues; // stack offset -80 struct VECTOR *orient; // $s0 { // line 72, offset 0x2270c struct MODEL *model; // $v1 struct SVECTOR *norms; // $a3 struct SVECTOR *ppads; // $a2 int num_norms; // $a1 int count; // $a1 struct CVECTOR c0; // stack offset -64 struct CVECTOR c1; // stack offset -56 struct CVECTOR c2; // stack offset -48 { // line 78, offset 0x2270c long GT3rgb; // stack offset -40 } // line 78, offset 0x2270c } // line 114, offset 0x22834 } // line 118, offset 0x22860 /* * Offset 0x22860, from D:\driver2\game\C\CARS.C (lines 2321..2347) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ buildNewCars() { } /* * Offset 0x22960, from D:\driver2\game\C\CARS.C (lines 2357..2592) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ buildNewCarFromModel(struct CAR_MODEL *car /*$s5*/, struct MODEL *model /*$s7*/, int first /*$a2*/) { // line 1, offset 0x22960 char *polylist; // $s0 int i; // $s2 int j; // $s3 int pass; // $s4 { // line 37, offset 0x22a9c struct CAR_POLY *p; // $s1 char ptype; // $s6 { // line 46, offset 0x22ae4 } // line 48, offset 0x22ae4 { // line 51, offset 0x22ae4 } // line 53, offset 0x22ae4 { // line 57, offset 0x22ae4 } // line 59, offset 0x22ae4 { // line 62, offset 0x22ae4 } // line 64, offset 0x22ae4 { // line 69, offset 0x22ae4 } // line 77, offset 0x22ae4 { // line 80, offset 0x22ae4 } // line 92, offset 0x22ae4 { // line 96, offset 0x22ae4 } // line 104, offset 0x22b1c { // line 107, offset 0x22b1c } // line 119, offset 0x22b7c { // line 123, offset 0x22b7c } // line 125, offset 0x22b7c { // line 129, offset 0x22b7c } // line 131, offset 0x22b7c { // line 135, offset 0x22b7c } // line 147, offset 0x22c10 { // line 150, offset 0x22c10 } // line 169, offset 0x22d24 { // line 173, offset 0x22d24 } // line 191, offset 0x22e2c { // line 194, offset 0x22e2c } // line 222, offset 0x22fdc } // line 225, offset 0x22fdc } // line 236, offset 0x23098 /* * Offset 0x230C8, from D:\driver2\game\C\CARS.C (lines 2595..2648) * Stack frame base $sp, size 0 */ void /*$ra*/ MangleWheelModels() { // line 2, offset 0x230c8 int i; // $v1 struct MODEL *m; // $t0 struct POLYFT4LIT *src; // $a0 { // line 15, offset 0x23110 int j; // $t1 } // line 46, offset 0x23354 } // line 54, offset 0x23390 /* * Offset 0x23390, from D:\driver2\game\C\CARS.C (lines 2697..2712) * Stack frame base $sp, size 0 */ char /*$ra*/ GetCarPalIndex(int tpage /*$a0*/) { // line 1, offset 0x23390 int i; // $a1 } // line 16, offset 0x233d4 /* * Offset 0x233DC, from D:\driver2\game\C\CARS.C (lines 1793..1835) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawCarObject(struct CAR_MODEL *car /*$s0*/, struct MATRIX *matrix /*$a1*/, struct VECTOR *pos /*$a2*/, struct VECTOR *pos1 /*$a3*/, int palette /*stack 16*/, struct _CAR_DATA *cp /*stack 20*/, int detail /*stack 24*/, int palette /*$s1*/, struct _CAR_DATA *cp /*$v1*/) { // line 1, offset 0x233dc { // line 1, offset 0x233dc struct SVECTOR cog; // stack offset -40 struct VECTOR modelLocation; // stack offset -32 } // line 1, offset 0x233dc { // line 1, offset 0x233dc static unsigned long savedSP; // offset 0x0 } // line 40, offset 0x234dc } // line 43, offset 0x234dc /* * Offset 0x234DC, from D:\driver2\game\C\CARS.C (lines 2152..2190) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ PlayerCarFX(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x234dc int WheelSpeed; // $s1 } // line 39, offset 0x235f8 /* * Offset 0x235F8, from D:\driver2\game\C\CARS.C (lines 2656..2676) * Stack frame base $sp, size 0 */ void /*$ra*/ setupLightingMatrices() { } /* * Offset 0x23750, from D:\driver2\game\C\CARS.C (lines 2685..2687) * Stack frame base $sp, size 0 */ void /*$ra*/ restoreLightingMatrices() { } /* * Offset 0x237B8, from D:\driver2\game\C\CARS.C (lines 917..969) * Stack frame base $sp, size 8 */ void /*$ra*/ plotCarPolyB3(int numTris /*$a0*/, struct CAR_POLY *src /*$a1*/, struct SVECTOR *vlist /*$a2*/, struct plotCarGlobals *pg /*$a3*/) { // line 1, offset 0x237b8 struct POLY_F3 *prim; // $t0 int i; // $t1 long *ot; // $t3 long F3rgb; // $t4 { // line 10, offset 0x237e0 int reg; // stack offset -8 } // line 50, offset 0x238ac } // line 53, offset 0x238c4 /* * Offset 0x238C4, from D:\driver2\game\C\CARS.C (lines 976..1054) * Stack frame base $sp, size 8 */ void /*$ra*/ plotCarPolyFT3(int numTris /*$a0*/, struct CAR_POLY *src /*$t1*/, struct SVECTOR *vlist /*$t4*/, struct plotCarGlobals *pg /*$t5*/) { // line 1, offset 0x238c4 struct POLY_FT3 *prim; // $t0 long *ot; // $t6 long FT3rgb; // stack offset -8 int i; // $t2 { // line 16, offset 0x23904 int reg; // stack offset -4 int clut_uv0; // $a2 int tpage_uv1; // $a3 int uv3_uv2; // $a1 { // line 22, offset 0x23904 int ofse; // $v1 } // line 22, offset 0x23904 } // line 76, offset 0x23a08 } // line 79, offset 0x23a20 /* * Offset 0x23A20, from D:\driver2\game\C\CARS.C (lines 1349..1427) * Stack frame base $sp, size 8 */ void /*$ra*/ plotCarPolyGT3nolight(int numTris /*$a0*/, struct CAR_POLY *src /*$t3*/, struct SVECTOR *vlist /*$t6*/, struct plotCarGlobals *pg /*$a3*/, int palette /*stack 16*/, int palette /*$v0*/) { // line 1, offset 0x23a20 struct POLY_FT3 *prim; // $t0 long *ot; // $t7 long GT3rgb; // stack offset -8 int i; // $t4 unsigned short *clut_base; // $t8 { // line 17, offset 0x23a68 int reg; // stack offset -4 int clut_uv0; // $a0 int tpage_uv1; // $t1 int uv3_uv2; // $t2 { // line 22, offset 0x23a68 int ofse; // $v1 } // line 22, offset 0x23a68 } // line 76, offset 0x23b94 } // line 79, offset 0x23bac Source file(s) D:\driver2\game\C\CELL.C+D:\driver2\game\CELL.C, object file obj\cell.obj overlay id // 60 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CELL_ITERATOR { struct CELL_DATA *pcd; // size=2, offset=0 struct PACKED_CELL_OBJECT *ppco; // size=8, offset=4 struct XZPAIR near; // size=8, offset=8 int use_computed; // size=0, offset=16 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; // 85 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct PSXBUTTON PSXBUTTON; typedef struct UV UV; typedef struct _CAR_DATA CAR_DATA; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct MAPPING MAPPING; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CELL_ITERATOR CELL_ITERATOR; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _EVENT EVENT; typedef struct GAP_INFO GAP_INFO; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 4 external declarations extern int cell_object_index; // offset 0x000aa140 extern int sizeof_cell_object_computed_values; // offset 0x000aaac0 extern unsigned char cell_object_computed_values[2048]; // offset 0x000b8880 extern struct CELL_OBJECT cell_object_buffer[1024]; // offset 0x000b9080 // 2 functions /* * Offset 0x23BAC, from D:\driver2\game\C\CELL.C (lines 67..141) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ struct PACKED_CELL_OBJECT * /*$ra*/ GetFirstPackedCop(int cellx /*$t3*/, int cellz /*$a1*/, struct CELL_ITERATOR *pci /*$a2*/, int use_computed /*$a3*/) { // line 1, offset 0x23bac struct PACKED_CELL_OBJECT *ppco; // $a1 unsigned short index; // $a0 unsigned short num; // $t0 int cbrx; // $t0 int cbrz; // $t1 int xoff; // $a0 int yoff; // $v0 int cbr; // $t2 { // line 34, offset 0x23c84 int event; // $t0 } // line 43, offset 0x23cc8 } // line 75, offset 0x23dc0 /* * Offset 0x23DC0, from D:\driver2\game\C\CELL.C (lines 57..59) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ ClearCopUsage() { } Source file(s) D:\driver2\game\C\CIV_AI.C+D:\driver2\game\CIV_AI.C, object file obj\civ_ai.OBJ overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct _EXTRA_CIV_DATA { int surfInd; // size=0, offset=0 int distAlongSegment; // size=0, offset=4 short angle; // size=0, offset=8 unsigned short ctrlState; // size=0, offset=10 int thrustState; // size=0, offset=12 unsigned char palette; // size=0, offset=16 unsigned char controlFlags; // size=0, offset=17 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct DRIVER2_STRAIGHT { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 unsigned short length; // size=0, offset=8 short bing; // size=0, offset=10 short angle; // size=0, offset=12 short ConnectIdx[4]; // size=8, offset=14 char NumLanes; // size=0, offset=22 char LaneDirs; // size=0, offset=23 char AILanes; // size=0, offset=24 char packing; // size=0, offset=25 }; struct DRIVER2_JUNCTION { short ExitIdx[4]; // size=8, offset=0 unsigned long flags; // size=0, offset=8 }; struct DRIVER2_CURVE { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short start; // size=0, offset=8 short end; // size=0, offset=10 short ConnectIdx[4]; // size=8, offset=12 short gradient; // size=0, offset=20 short height; // size=0, offset=22 char NumLanes; // size=0, offset=24 char LaneDirs; // size=0, offset=25 char inside; // size=0, offset=26 char AILanes; // size=0, offset=27 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 112 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F3 POLY_F3; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct _EXTRA_CIV_DATA EXTRA_CIV_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct TEX_INFO TEX_INFO; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct CAR_POLY CAR_POLY; typedef struct DRIVER2_STRAIGHT DRIVER2_STRAIGHT; typedef struct DRIVER2_JUNCTION DRIVER2_JUNCTION; typedef struct DRIVER2_CURVE DRIVER2_CURVE; typedef struct CDATA2D CDATA2D; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 83 external declarations extern int roadblockDelayDiff[3]; // offset 0x0009bf04 extern char speedLimits[3]; // offset 0x0009bf10 extern struct { int NumPingedIn; // size=0, offset=0 int OffRoad; // size=0, offset=4 int NotDrivable; // size=0, offset=8 int TooShortStr; // size=0, offset=12 int NearEndStr; // size=0, offset=16 int TooShortCrv; // size=0, offset=20 int NearEndCrv; // size=0, offset=24 int TooCloseNuddaCar; // size=0, offset=28 int TooClosePlayer; // size=0, offset=32 int InvalidRegion; // size=0, offset=36 } civPingTest; // offset 0x0009bf14 extern char modelRandomList[16]; // offset 0x0009bf3c extern int useStoredPings; // offset 0x000aa144 extern int testNumPingedOut; // offset 0x000aa148 extern int checkFrames; // offset 0x000aa14c extern int maxSteer; // offset 0x000aa150 extern int newAccel; // offset 0x000aa154 extern int roadblockDelay; // offset 0x000aa158 extern char cookieCount; // offset 0x000aa15c extern int testCar; // offset 0x000aa17c static unsigned char hornchanflag[2]; // offset 0x000aa160 static struct _CAR_DATA *horncarflag[2]; // offset 0x000aa164 extern struct DRIVER2_CURVE *testCrv; // offset 0x000aa16c extern int test23; // offset 0x000aa170 extern char PingOutCivsOnly; // offset 0x000aa174 extern int CAR_PAUSE_START; // offset 0x000aa178 extern int makeNextNodeCtrlNode; // offset 0x000aa180 extern int closeEncounter; // offset 0x000aa184 extern int sideMul; // offset 0x000aa188 extern int corner; // offset 0x000aa18c extern int sideShift; // offset 0x000aa190 extern int carAngle; // offset 0x000aa194 extern int EVENT_CAR_SPEED; // offset 0x000aa198 extern int testNum; // offset 0x000aab58 extern int distFurthestCivCarSq; // offset 0x000aaae4 extern int requestStationaryCivCar; // offset 0x000aab7c extern char furthestCivID; // offset 0x000aab64 extern int test555; // offset 0x000aaafc extern int test123; // offset 0x000aaaf4 extern int maxCivCars; // offset 0x000aab98 extern int maxCopCars; // offset 0x000aab94 extern int maxPlayerCars; // offset 0x000aab74 extern int numCivCars; // offset 0x000aaad4 extern int numCopCars; // offset 0x000aaad0 extern int numPlayerCars; // offset 0x000aab78 extern int numInactiveCars; // offset 0x000aaae8 extern int numRoadblockCars; // offset 0x000aab04 extern int requestRoadblock; // offset 0x000aab20 extern int roadblockCount; // offset 0x000aab8c extern int numParkedCars; // offset 0x000aab6c extern int maxParkedCars; // offset 0x000aab68 extern int frameStart; // offset 0x000aaaec extern int test42; // offset 0x000aaaf0 extern char junctionLightsPhase[2]; // offset 0x000aab90 extern char makeLimoPullOver; // offset 0x000aab00 extern char limoId; // offset 0x000aaaf8 extern struct CIV_ROUTE_ENTRY *tstNode1; // offset 0x000aab5c extern struct CIV_ROUTE_ENTRY *tstNode2; // offset 0x000aab60 extern int tmpNewRoad[2]; // offset 0x000aaad8 extern int tmpNewLane[2]; // offset 0x000aaac8 extern int laneFit[2]; // offset 0x000aab28 extern struct DRIVER2_STRAIGHT *tmpStr[2]; // offset 0x000aab18 extern struct DRIVER2_CURVE *tmpCrv[2]; // offset 0x000aab08 extern int currentRoadId; // offset 0x000aab70 extern short validExitIdx[4]; // offset 0x000aab38 extern int newExit; // offset 0x000aab4c extern int angle; // offset 0x000aaae0 extern int distFromCentre; // offset 0x000aab80 extern int radius; // offset 0x000aab14 extern int roadSeg; // offset 0x000aab30 extern int currentAngle; // offset 0x000aab54 extern char playerNum; // offset 0x000aab88 extern int dx; // offset 0x000aab40 extern int dy; // offset 0x000aab44 extern int dz; // offset 0x000aab48 extern unsigned int collDat; // offset 0x000aab24 extern int distObstacle; // offset 0x000aab50 extern int carnum; // offset 0x000aab10 extern struct CIV_ROUTE_ENTRY *startNode; // offset 0x000aab84 extern struct VECTOR roadblockLoc; // offset 0x000bd4b8 extern unsigned char reservedSlots[20]; // offset 0x000bd4e8 static struct CDATA2D cd[2]; // offset 0x000bd080 static long civrseed[17]; // offset 0x000bd150 extern unsigned int brakeLength[20]; // offset 0x000bd458 extern struct VECTOR randomLoc; // offset 0x000bd500 extern struct VECTOR baseLoc; // offset 0x000bd4a8 extern struct VECTOR testVec; // offset 0x000bd4c8 extern struct _CAR_DATA currentCar; // offset 0x000bd198 extern struct VECTOR startPos; // offset 0x000bd4d8 extern struct VECTOR endPos; // offset 0x000bd448 extern struct VECTOR currentPos; // offset 0x000bd438 // 29 functions /* * Offset 0x23DE8, from D:\driver2\game\C\CIV_AI.C (lines 717..785) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ InitCar(struct _CAR_DATA *cp /*$s0*/, int direction /*$s6*/, long *startPos[4] /*$s2*/, unsigned char control /*$s4*/, int model /*stack 16*/, int palette /*stack 20*/, char *extraData /*stack 24*/, unsigned char palette /*$s5*/, char *extraData /*$s1*/) { // line 1, offset 0x23de8 struct VECTOR tmpStart; // stack offset -48 } // line 69, offset 0x24028 /* * Offset 0x24028, from D:\driver2\game\C\CIV_AI.C (lines 981..1349) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ GetNextRoadInfo(struct _CAR_DATA *cp /*$s7*/, int randomExit /*$a1*/, int *turnAngle /*stack 8*/, int *startDist /*stack 12*/, struct CIV_ROUTE_ENTRY *oldNode /*stack 16*/, struct CIV_ROUTE_ENTRY *oldNode /*$t7*/) { // line 1, offset 0x24028 int oldOppDir; // $s4 int i; // $a1 int j; // $s6 int newRoad; // $s3 int numExits; // stack offset -88 int currentRoadExit; // $t6 int newNumLanes; // $a3 int newDir; // stack offset -84 int oppDir; // $s0 struct DRIVER2_JUNCTION *jn; // $t5 struct DRIVER2_CURVE *cv; // $s1 struct DRIVER2_STRAIGHT *st; // $s5 struct DRIVER2_STRAIGHT *tmpSt; // $a2 struct DRIVER2_CURVE *tmpCv; // $s1 short *jnExit; // $a2 int newLane; // $s2 char leftLane; // stack offset -80 char rightLane; // stack offset -76 { // line 61, offset 0x24734 char relExitId; // $fp static char validExitRelIdx[4][3][2]; // offset 0x0 int addRoad; // $t9 { // line 1, offset 0x24804 int currentRoadExit; // $t6 int newRoadExit; // $fp { // line 1, offset 0x24804 int exitMod; // $a0 int ret; // $a1 } // line 1, offset 0x24870 } // line 1, offset 0x24870 { // line 110, offset 0x24c18 int x; // $v1 int z; // $v0 int dir; // stack offset -84 struct DRIVER2_CURVE *cv; // $s1 { // line 110, offset 0x24c18 } // line 110, offset 0x24c18 } // line 110, offset 0x24c18 { // line 131, offset 0x25048 int exitId; // $a1 { // line 135, offset 0x2506c char lane; // $v0 } // line 151, offset 0x250c4 { // line 1, offset 0x25180 int currentRoadExit; // $t6 { // line 1, offset 0x25180 int exitMod; // $a1 int ret; // $a2 } // line 1, offset 0x251e0 } // line 1, offset 0x251e0 } // line 166, offset 0x251ec { // line 1, offset 0x251ec struct DRIVER2_JUNCTION *jn; // $t5 int currentExit; // $a2 int turnAngle; // $t1 struct _CAR_DATA *cp; // $s7 struct CIV_ROUTE_ENTRY *oldNode; // $t7 { // line 1, offset 0x251ec unsigned short jnFlags; // $a0 int i; // $a1 int exitId; // $a3 } // line 1, offset 0x252bc } // line 1, offset 0x252bc { // line 171, offset 0x252bc { // line 192, offset 0x25774 int x; // $v1 int z; // $v0 int dir; // stack offset -84 struct DRIVER2_CURVE *cv; // $s1 { // line 192, offset 0x25774 } // line 192, offset 0x25774 } // line 192, offset 0x25774 } // line 203, offset 0x25bc8 } // line 203, offset 0x25bc8 { // line 211, offset 0x25bd0 int i; // $a1 int dx; // $v1 int dz; // $a0 int numLanes; // $fp int *pNewLane; // $s3 int laneFromLeft; // $a3 int laneFromRight; // $v1 { // line 274, offset 0x25fe4 int preferredNewLane; // $t1 } // line 302, offset 0x26314 { // line 305, offset 0x26348 int preferredNewLane; // $s4 { // line 305, offset 0x26348 int x; // $v1 int z; // $v0 struct DRIVER2_CURVE *cv; // $s1 { // line 305, offset 0x26348 } // line 305, offset 0x26348 } // line 305, offset 0x26348 } // line 332, offset 0x2669c } // line 345, offset 0x267a4 } // line 369, offset 0x26964 /* * Offset 0x26964, from D:\driver2\game\C\CIV_AI.C (lines 1365..1424) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ InitNodeList(struct _CAR_DATA *cp /*$s6*/, char *extraData /*$s7*/) { // line 1, offset 0x26964 int i; // $v1 struct CIV_ROUTE_ENTRY *cr; // $s5 int dx; // $s1 int dz; // $s2 int surfInd; // $s4 { // line 32, offset 0x26a04 int theta; // $s0 int laneDist; // $s1 struct DRIVER2_STRAIGHT *str; // $s3 } // line 41, offset 0x26b60 { // line 46, offset 0x26b9c struct DRIVER2_CURVE *crv; // $s0 } // line 50, offset 0x26c4c } // line 60, offset 0x26cac /* * Offset 0x26CAC, from D:\driver2\game\C\CIV_AI.C (lines 1441..1503) * Stack frame base $sp, size 0 */ int /*$ra*/ GetNodePos(struct DRIVER2_STRAIGHT *straight /*$t1*/, struct DRIVER2_JUNCTION *junction /*$a1*/, struct DRIVER2_CURVE *curve /*$t0*/, int distAlongPath /*$a3*/, struct _CAR_DATA *cp /*stack 16*/, int *x /*stack 20*/, int *z /*stack 24*/, int laneNo /*stack 28*/, struct _CAR_DATA *cp /*$t2*/, int *x /*$t5*/, int *z /*$t6*/, int laneNo /*$a2*/) { // line 1, offset 0x26cac unsigned char oldLane; // $a0 unsigned char changeLaneCount; // $t3 } // line 63, offset 0x26f20 /* * Offset 0x26F20, from D:\driver2\game\C\CIV_AI.C (lines 1507..1622) * Stack frame base $sp, size 136 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CheckChangeLanes(struct DRIVER2_STRAIGHT *straight /*$s4*/, struct DRIVER2_CURVE *curve /*$s6*/, int distAlongSegment /*$a2*/, struct _CAR_DATA *cp /*$s3*/, int tryToPark /*stack 16*/) { // line 1, offset 0x26f20 unsigned char currentLane; // $s7 unsigned char newLane; // $s2 unsigned char trials; // $t3 unsigned char canProceed; // stack offset -88 unsigned char travelAlongRoad; // $s5 unsigned char turnRight; // stack offset -84 struct _CAR_DATA *cp1; // $s0 struct CIV_ROUTE_ENTRY tmpNode; // stack offset -120 { // line 65, offset 0x27290 struct VECTOR pos; // stack offset -104 int theta; // $a0 int length; // $a1 { // line 81, offset 0x27394 } // line 89, offset 0x27494 } // line 91, offset 0x274a4 } // line 116, offset 0x27530 /* * Offset 0x27530, from D:\driver2\game\C\CIV_AI.C (lines 1637..1827) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CreateNewNode(struct _CAR_DATA *cp /*$s4*/) { // line 1, offset 0x27530 int oldRoad; // $s1 int cr; // $a3 struct CIV_ROUTE_ENTRY *newNode; // $s6 struct CIV_ROUTE_ENTRY *oldNode; // $s3 struct DRIVER2_CURVE *curve; // $s0 struct DRIVER2_STRAIGHT *straight; // $s5 int turnAngle; // stack offset -56 { // line 1, offset 0x27530 struct _CAR_DATA *cp; // $s4 struct CIV_ROUTE_ENTRY *currentNode; // $v1 { // line 1, offset 0x27530 struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 1, offset 0x2757c } // line 1, offset 0x2757c { // line 1, offset 0x2758c struct _CAR_DATA *cp; // $s4 { // line 1, offset 0x2758c struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 1, offset 0x2759c } // line 1, offset 0x2759c { // line 1, offset 0x275a8 struct _CAR_DATA *cp; // $s4 { // line 1, offset 0x275a8 struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 1, offset 0x275b8 } // line 1, offset 0x275b8 { // line 1, offset 0x275c4 struct _CAR_DATA *cp; // $s4 { // line 1, offset 0x275c4 struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 1, offset 0x275d4 } // line 1, offset 0x275d4 { // line 16, offset 0x275f0 struct _CAR_DATA *cp; // $s4 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 16, offset 0x275f0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 16, offset 0x275f0 } // line 16, offset 0x275f0 { // line 18, offset 0x275f0 { // line 1, offset 0x275f0 struct _CAR_DATA *cp; // $s4 { // line 1, offset 0x275f0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x27600 } // line 1, offset 0x27600 } // line 21, offset 0x27610 { // line 22, offset 0x27634 struct _CAR_DATA *cp; // $s4 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 22, offset 0x27634 struct CIV_ROUTE_ENTRY *retNode; // $s2 } // line 22, offset 0x2764c } // line 22, offset 0x2764c { // line 44, offset 0x276e8 int travelDir; // $a1 int segmentEnd; // $a0 { // line 51, offset 0x277b0 int startDist; // stack offset -52 } // line 51, offset 0x27808 } // line 51, offset 0x27818 { // line 55, offset 0x2784c int travelDir; // $a2 int segmentEnd; // $t0 { // line 62, offset 0x27954 int startDist; // stack offset -48 } // line 62, offset 0x27990 } // line 63, offset 0x279a4 { // line 80, offset 0x27a18 struct CIV_ROUTE_ENTRY tmpNode; // stack offset -72 { // line 84, offset 0x27a58 int travelDir; // $a0 } // line 95, offset 0x27b18 { // line 102, offset 0x27b90 struct _CAR_DATA *playerCar; // $v0 int dx; // $v1 int dz; // $a0 } // line 107, offset 0x27c00 { // line 114, offset 0x27c38 int tryToPark; // $s1 } // line 136, offset 0x27da0 { // line 142, offset 0x27e04 int radOfCrv; // $s5 int cornerAngle; // $a3 int segLength; // $s0 int tmp; // $a1 int dx; // $s1 int dz; // $s0 { // line 152, offset 0x27ebc struct _CAR_DATA *cp; // $s4 { // line 152, offset 0x27ebc struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 155, offset 0x27f44 } // line 155, offset 0x27f44 { // line 163, offset 0x27f78 struct _CAR_DATA *cp; // $s4 { // line 163, offset 0x27f78 struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 166, offset 0x2800c } // line 166, offset 0x2800c } // line 169, offset 0x2800c { // line 173, offset 0x2800c { // line 1, offset 0x2800c struct _CAR_DATA *cp; // $s4 struct CIV_ROUTE_ENTRY *currentNode; // $s6 { // line 1, offset 0x2800c struct CIV_ROUTE_ENTRY *retNode; // $v0 } // line 1, offset 0x2800c } // line 1, offset 0x2800c } // line 177, offset 0x2801c } // line 177, offset 0x2801c } // line 191, offset 0x280d8 /* * Offset 0x280D8, from D:\driver2\game\C\CIV_AI.C (lines 1843..1886) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ InitCivState(struct _CAR_DATA *cp /*$s1*/, char *extraData /*$s2*/) { // line 1, offset 0x280d8 struct CIV_STATE *cs; // $s0 } // line 44, offset 0x282e8 /* * Offset 0x282E8, from D:\driver2\game\C\CIV_AI.C (lines 2016..2024) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ PingOutAllSpecialCivCars() { // line 2, offset 0x282e8 struct _CAR_DATA *lcp; // $s0 { // line 1, offset 0x28348 struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x283e4 } // line 9, offset 0x2840c /* * Offset 0x2840C, from D:\driver2\game\C\CIV_AI.C (lines 2028..2036) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ PingOutAllCivCarsAndCopCars() { // line 2, offset 0x2840c struct _CAR_DATA *lcp; // $s0 { // line 1, offset 0x2844c struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2852c } // line 9, offset 0x28554 /* * Offset 0x28554, from D:\driver2\game\C\CIV_AI.C (lines 2050..2080) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ CheckPingOut(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x28554 int dx; // $a0 int dz; // $v1 int dist; // $s1 { // line 1, offset 0x285b8 struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x28694 } // line 31, offset 0x286e0 /* * Offset 0x286E0, from D:\driver2\game\C\CIV_AI.C (lines 2176..2228) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ CreateCivCarWotDrivesABitThenStops(int direction /*$s5*/, long *startPos[4] /*$s2*/, long *stopPos[4] /*$a2*/, unsigned char internalModel /*$s4*/, int palette /*stack 16*/, unsigned char palette /*$s3*/) { // line 1, offset 0x286e0 struct _EXTRA_CIV_DATA civDat; // stack offset -56 struct _CAR_DATA *newCar; // $s1 struct CIV_ROUTE_ENTRY *stopNode; // $a0 struct CIV_ROUTE_ENTRY *spareNode; // $a1 { // line 1, offset 0x286e0 { // line 1, offset 0x286e0 char *slot; // $v1 struct _CAR_DATA *carCnt; // $a0 } // line 8, offset 0x28774 } // line 8, offset 0x28774 } // line 53, offset 0x28960 /* * Offset 0x28960, from D:\driver2\game\C\CIV_AI.C (lines 2248..2288) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ CreateStationaryCivCar(int direction /*$t4*/, long orientX /*$s2*/, long orientZ /*$s1*/, long *startPos[4] /*$a2*/, int externalModel /*stack 16*/, int palette /*stack 20*/, int controlFlags /*stack 24*/, unsigned char externalModel /*$t0*/, unsigned char palette /*$t3*/, unsigned char controlFlags /*$t2*/) { // line 1, offset 0x28960 struct _EXTRA_CIV_DATA civDat; // stack offset -72 struct _CAR_DATA *newCar; // $s0 long tmpRes[4]; // stack offset -48 long tmpQ[4]; // stack offset -32 { // line 1, offset 0x28a1c { // line 1, offset 0x28a1c char *slot; // $v1 struct _CAR_DATA *carCnt; // $a0 } // line 1, offset 0x28a68 } // line 1, offset 0x28a68 } // line 41, offset 0x28db4 /* * Offset 0x28DB4, from D:\driver2\game\C\CIV_AI.C (lines 2323..2655) * Stack frame base $sp, size 160 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ PingInCivCar(int minPingInDist /*stack 0*/) { // line 1, offset 0x28db4 struct _EXTRA_CIV_DATA civDat; // stack offset -128 int dir; // stack offset -52 int distAlongSegment; // $fp int lane; // $s7 struct _CAR_DATA *newCar; // $s1 struct DRIVER2_STRAIGHT *str; // $s6 struct DRIVER2_CURVE *crv; // $s5 unsigned char cookieCountStart; // $s4 int curveLength; // stack offset -48 unsigned char model; // $s4 unsigned char possibleLanes[12]; // stack offset -104 unsigned char carDistLanes[15]; // stack offset -88 char numPossibleLanes; // $s0 int lbody; // $s3 { // line 1, offset 0x28eec { // line 1, offset 0x28eec char *slot; // $a1 struct _CAR_DATA *carCnt; // $a0 } // line 1, offset 0x28f40 } // line 1, offset 0x28f40 { // line 70, offset 0x29000 char newCarId; // $v1 { // line 1, offset 0x29058 struct _CAR_DATA *cp; // $s1 } // line 1, offset 0x29140 } // line 79, offset 0x292a4 { // line 139, offset 0x29620 char frog; // $a0 char numLanes; // $a1 } // line 139, offset 0x29760 { // line 148, offset 0x29860 char frog; // $a0 char numLanes; // $a1 } // line 148, offset 0x29964 { // line 205, offset 0x29c48 int externalModel; // $v0 { // line 212, offset 0x29cc4 unsigned char palette; // $v0 } // line 216, offset 0x29d20 } // line 221, offset 0x29d5c { // line 227, offset 0x29db8 int theta; // $s0 int minDistAlong; // $s2 } // line 240, offset 0x29f10 { // line 244, offset 0x29f58 int minAngle; // $a1 } // line 255, offset 0x2a090 { // line 270, offset 0x2a0e8 long pos[4]; // stack offset -72 unsigned int distSq; // stack offset -56 { // line 270, offset 0x2a0e8 int *distToCarSq; // $t2 { // line 270, offset 0x2a0e8 int dz; // $v1 int dx; // $a0 int distSq; // $v0 unsigned int retDistSq; // $a2 struct _CAR_DATA *lcp; // $a1 } // line 278, offset 0x2a228 } // line 278, offset 0x2a228 { // line 288, offset 0x2a240 int x; // $t2 int y; // $a2 int z; // $t1 unsigned int distSq; // $a3 { // line 288, offset 0x2a240 int dz; // $v1 int dx; // $a0 int ret; // $t0 struct _CAR_DATA *lcp; // $a1 } // line 288, offset 0x2a340 } // line 288, offset 0x2a340 } // line 299, offset 0x2a37c } // line 333, offset 0x2a4c4 /* * Offset 0x2A4C4, from D:\driver2\game\C\CIV_AI.C (lines 2659..2689) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ AttemptUnPark(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x2a4c4 struct DRIVER2_STRAIGHT *str; // $s2 struct DRIVER2_CURVE *crv; // $s3 } // line 31, offset 0x2a5fc /* * Offset 0x2A5FC, from D:\driver2\game\C\CIV_AI.C (lines 2798..2948) * Stack frame base $sp, size 0 */ int /*$ra*/ CivAccelTrafficRules(struct _CAR_DATA *cp /*$t3*/, int *distToNode /*$a1*/) { // line 1, offset 0x2a5fc int lbody; // $t1 int wbody; // $t2 struct CIV_STATE *cs; // $a2 { // line 46, offset 0x2a71c int stopDist; // $t0 { // line 50, offset 0x2a794 int endSpeed; // $v0 } // line 55, offset 0x2a800 } // line 56, offset 0x2a800 { // line 65, offset 0x2a844 int ret; // $a1 int properVel; // $v1 int brakeDist; // $a3 { // line 103, offset 0x2a918 int endSpeed; // $v0 int currentDist; // $v1 } // line 103, offset 0x2a918 } // line 117, offset 0x2a9ec { // line 125, offset 0x2a9ec int roadClear; // $t8 int checkObstDist; // $t7 int numLanes; // $v0 { // line 134, offset 0x2aa0c struct _CAR_DATA *cp; // $t3 { // line 134, offset 0x2aa0c struct _CAR_DATA *lcp; // $a3 int normal; // $v0 int tangent; // $a0 int distToObstacle; // $t0 int ccarAng; // $t1 int scarAng; // $t2 } // line 134, offset 0x2ab2c } // line 134, offset 0x2ab2c { // line 1, offset 0x2ab44 struct _CAR_DATA *cp; // $t3 { // line 1, offset 0x2ab44 struct CIV_STATE *cs; // $v1 } // line 1, offset 0x2ab44 } // line 1, offset 0x2ab44 { // line 145, offset 0x2ab58 int ret; // $v1 } // line 148, offset 0x2aba8 } // line 149, offset 0x2aba8 } // line 151, offset 0x2aba8 /* * Offset 0x2ABA8, from D:\driver2\game\C\CIV_AI.C (lines 2950..3065) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ SetUpCivCollFlags() { // line 2, offset 0x2aba8 struct SVECTOR boxDisp; // stack offset -72 int carLength[2]; // stack offset -64 struct _CAR_DATA *cp0; // $s5 struct _CAR_DATA *cp1; // $s2 unsigned int dNewLBODY[2]; // stack offset -56 int dx; // $s0 int dz; // stack offset -48 { // line 35, offset 0x2ac14 int extraLength; // $a2 } // line 35, offset 0x2ac44 { // line 40, offset 0x2ad74 { // line 53, offset 0x2adc4 } // line 53, offset 0x2ae18 { // line 66, offset 0x2af60 int civCD; // $s7 int brake; // $a0 { // line 74, offset 0x2af90 unsigned int *blth; // $v1 } // line 74, offset 0x2afc0 { // line 83, offset 0x2b020 int i; // $a1 int h; // $a3 int rnd; // $a2 struct _CAR_DATA *cp; // $s0 { // line 90, offset 0x2b0c0 } // line 98, offset 0x2b190 } // line 100, offset 0x2b1a4 } // line 101, offset 0x2b1a4 } // line 102, offset 0x2b1a4 { // line 106, offset 0x2b1c8 unsigned char i; // $s0 } // line 115, offset 0x2b26c } // line 116, offset 0x2b26c /* * Offset 0x2B26C, from D:\driver2\game\C\CIV_AI.C (lines 3074..3148) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CivAccel(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x2b26c int ret; // $t1 int distToNode; // stack offset -16 int dx; // $v1 int dz; // $a0 { // line 32, offset 0x2b35c int tmpRet; // $a0 int lbody; // $a0 { // line 37, offset 0x2b388 int sf; // $v1 int c1; // $t0 int c2; // $a3 int c3; // $a1 { // line 52, offset 0x2b44c int tmp; // $v1 } // line 55, offset 0x2b4b8 } // line 58, offset 0x2b4c8 } // line 72, offset 0x2b528 } // line 75, offset 0x2b53c /* * Offset 0x2B53C, from D:\driver2\game\C\CIV_AI.C (lines 3166..3245) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ CivSteerAngle(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x2b53c int station; // $a3 int step; // $s2 int ret; // $a0 struct VECTOR locPath; // stack offset -56 struct VECTOR pathPoint; // stack offset -40 int lbody; // $s3 { // line 1, offset 0x2b53c { // line 1, offset 0x2b53c struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b53c struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 9, offset 0x2b590 } // line 9, offset 0x2b590 { // line 1, offset 0x2b5a0 struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b5a0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b5b0 } // line 1, offset 0x2b5b0 { // line 1, offset 0x2b5c0 struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b5c0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b5d0 } // line 1, offset 0x2b5d0 { // line 1, offset 0x2b5e0 struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b5e0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b5f0 } // line 1, offset 0x2b5f0 } // line 26, offset 0x2b610 { // line 1, offset 0x2b67c struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b67c struct CIV_ROUTE_ENTRY *retNode; // $a0 } // line 1, offset 0x2b690 } // line 1, offset 0x2b690 { // line 35, offset 0x2b6a0 struct CIV_ROUTE_ENTRY *crLoc; // $a1 struct CIV_ROUTE_ENTRY *cr; // $a0 } // line 46, offset 0x2b700 { // line 1, offset 0x2b748 struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b748 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b758 } // line 1, offset 0x2b758 { // line 70, offset 0x2b870 struct CIV_ROUTE_ENTRY *cr; // $a0 { // line 1, offset 0x2b8a0 struct _CAR_DATA *cp; // $s0 { // line 1, offset 0x2b8a0 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b8b0 } // line 1, offset 0x2b8b0 } // line 77, offset 0x2b8c0 } // line 80, offset 0x2b8e4 /* * Offset 0x2B8E4, from D:\driver2\game\C\CIV_AI.C (lines 3265..3319) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CivFindStation(struct _CAR_DATA *cp /*$s6*/) { // line 1, offset 0x2b8e4 struct CIV_ROUTE_ENTRY *rep; // $s3 int cx; // stack offset -48 int cz; // $fp { // line 1, offset 0x2b8e4 int loop; // $a0 { // line 1, offset 0x2b93c struct _CAR_DATA *cp; // $s6 { // line 1, offset 0x2b93c struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2b950 } // line 1, offset 0x2b950 } // line 12, offset 0x2b95c { // line 15, offset 0x2b964 struct _CAR_DATA *cp; // $s6 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 15, offset 0x2b964 struct CIV_ROUTE_ENTRY *retNode; // $s0 } // line 15, offset 0x2b964 } // line 15, offset 0x2b964 { // line 17, offset 0x2b964 int sx; // $s5 int sz; // $s4 int dx; // $s2 int dz; // $s1 int stepsize; // $a1 int square; // $a0 { // line 44, offset 0x2ba28 struct _CAR_DATA *cp; // $s6 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 44, offset 0x2ba28 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 44, offset 0x2ba38 } // line 44, offset 0x2ba38 { // line 1, offset 0x2ba48 struct _CAR_DATA *cp; // $s6 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 1, offset 0x2ba48 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2ba58 } // line 1, offset 0x2ba58 { // line 1, offset 0x2ba68 struct _CAR_DATA *cp; // $s6 struct CIV_ROUTE_ENTRY *currentNode; // $s3 { // line 1, offset 0x2ba68 struct CIV_ROUTE_ENTRY *retNode; // $v1 } // line 1, offset 0x2ba78 } // line 1, offset 0x2ba78 } // line 52, offset 0x2ba90 } // line 55, offset 0x2baec /* * Offset 0x2BAEC, from D:\driver2\game\C\CIV_AI.C (lines 3337..3384) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CivFindPointOnPath(struct _CAR_DATA *cp /*$s7*/, int station /*$s2*/, struct VECTOR *ppoint /*$fp*/) { // line 1, offset 0x2baec struct CIV_ROUTE_ENTRY *cprep; // $a0 struct CIV_ROUTE_ENTRY *start; // stack offset -48 { // line 9, offset 0x2bb50 struct _CAR_DATA *cp; // $s7 struct CIV_ROUTE_ENTRY *currentNode; // $a0 { // line 9, offset 0x2bb50 struct CIV_ROUTE_ENTRY *retNode; // $s0 } // line 9, offset 0x2bb50 } // line 9, offset 0x2bb50 { // line 11, offset 0x2bb50 int sx; // $s4 int sz; // $s5 int dx; // $s1 int dz; // $s3 int stepsize; // $a2 } // line 44, offset 0x2bc90 } // line 48, offset 0x2bcf4 /* * Offset 0x2BCF4, from D:\driver2\game\C\CIV_AI.C (lines 3398..3563) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CreateRoadblock() { // line 2, offset 0x2bcf4 struct _CAR_DATA *cp; // $v1 struct _CAR_DATA *lcp; // $s0 struct _CAR_DATA *newCar; // $s0 struct DRIVER2_STRAIGHT *str; // stack offset -72 struct DRIVER2_CURVE *crv; // $s7 int distAlongSegment; // $s2 int lbody; // $s4 int dir; // $s6 int numLanes; // stack offset -68 unsigned char externalCopModel; // stack offset -64 int delta; // $s4 int noMoreCars; // stack offset -60 int newCarId; // $v1 { // line 2, offset 0x2bcf4 int dir; // $s0 } // line 39, offset 0x2c078 { // line 44, offset 0x2c09c int theta; // $s0 } // line 53, offset 0x2c198 { // line 57, offset 0x2c1e0 int minAngle; // $a3 int curveLength; // $v1 } // line 93, offset 0x2c334 { // line 80, offset 0x2c3f8 { // line 85, offset 0x2c4c8 } // line 87, offset 0x2c4e4 { // line 1, offset 0x2c590 struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2c674 { // line 1, offset 0x2c708 struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2c7e4 } // line 112, offset 0x2c7f4 { // line 117, offset 0x2c830 struct VECTOR startPos2; // stack offset -88 int deltaAngle; // $a0 int dir2NextRow; // $a1 int faceDir; // $s1 int numSpareCars; // $a0 int count; // $s2 int numSpots; // $fp { // line 129, offset 0x2c948 int numCarsToAdd; // $s5 { // line 133, offset 0x2c97c { // line 1, offset 0x2cac4 struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2cba8 { // line 1, offset 0x2cc3c struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2cd18 } // line 157, offset 0x2cd28 } // line 158, offset 0x2cd34 } // line 159, offset 0x2cd34 } // line 166, offset 0x2cd74 /* * Offset 0x2CDA4, from D:\driver2\game\C\CIV_AI.C (lines 2144..2156) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitCivCars() { // line 2, offset 0x2cda4 } // line 13, offset 0x2ce10 /* * Offset 0x2CE10, from D:\driver2\game\C\CIV_AI.C (lines 2699..2739) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CivControl(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x2ce10 { // line 1, offset 0x2ce10 } // line 1, offset 0x2ce10 { // line 30, offset 0x2ce8c } // line 32, offset 0x2cec0 } // line 41, offset 0x2cf18 /* * Offset 0x2CF18, from D:\driver2\game\C\CIV_AI.C (lines 2116..2140) * Stack frame base $sp, size 0 */ int /*$ra*/ TrafficLightCycle(int exit /*$a0*/) { // line 1, offset 0x2cf18 int timeCnt; // $v1 } // line 25, offset 0x2cf80 /* * Offset 0x2CF80, from D:\driver2\game\C\CIV_AI.C (lines 1977..2012) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ PingOutCar(struct _CAR_DATA *cp /*$s0*/) { } /* * Offset 0x2D084, from D:\driver2\game\C\CIV_AI.C (lines 930..942) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ CivCarFX(struct _CAR_DATA *cp /*$s0*/) { } /* * Offset 0x2D11C, from D:\driver2\game\C\CIV_AI.C (lines 891..914) * Stack frame base $sp, size 0 */ struct _CAR_DATA * /*$ra*/ FindClosestCar(int x /*$t4*/, int y /*$a1*/, int z /*$a2*/, int *distToCarSq /*$a3*/) { // line 1, offset 0x2d11c struct _CAR_DATA *retCar; // $t2 struct _CAR_DATA *lcp; // $t0 unsigned int retDistSq; // $t1 int distSq; // $v0 int dx; // $a0 int dz; // $v1 } // line 24, offset 0x2d220 /* * Offset 0x2D220, from D:\driver2\game\C\CIV_AI.C (lines 2084..2086) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetUpTrafficLightPhase() { } /* * Offset 0x2D24C, from D:\driver2\game\C\CIV_AI.C (lines 918..926) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ NotTravellingAlongCurve(int x /*$a0*/, int z /*$a1*/, int dir /*$s0*/, struct DRIVER2_CURVE *cv /*$a3*/) { // line 1, offset 0x2d24c } // line 9, offset 0x2d298 Source file(s) D:\DRIVER2\GAME\ASM\COMPRES.MIP, object file obj\compres.OBJ overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\C\CONVERT.C+D:\driver2\game\CONVERT.C, object file obj\convert.OBJ overlay id // 56 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; // 89 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 7 external declarations extern struct MATRIX aspect; // offset 0x0009bf4c extern int horizonadd; // offset 0x000aa19c extern unsigned long mcgn; // offset 0x000aaba8 extern unsigned long srgn; // offset 0x000aabac static int randomcounter; // offset 0x000aaba0 static int randomindex; // offset 0x000aaba4 static long rseed[17]; // offset 0x000bd510 // 12 functions /* * Offset 0x2D304, from D:\driver2\game\C\CONVERT.C (lines 272..288) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ BuildWorldMatrix() { // line 2, offset 0x2d304 struct MATRIX newmatrix; // stack offset -48 } // line 17, offset 0x2d3f8 /* * Offset 0x2D3F8, from D:\driver2\game\C\CONVERT.C (lines 149..161) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ Calc_Object_MatrixYZX(struct MATRIX *mat /*$s0*/, struct SVECTOR *angles /*$s1*/) { } /* * Offset 0x2D470, from D:\driver2\game\C\CONVERT.C (lines 182..183) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ _RotMatrixX(struct MATRIX *m /*$v0*/, short ang /*$a1*/) { } /* * Offset 0x2D49C, from D:\driver2\game\C\CONVERT.C (lines 187..188) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ _RotMatrixY(struct MATRIX *m /*$v0*/, short ang /*$a1*/) { } /* * Offset 0x2D4C8, from D:\driver2\game\C\CONVERT.C (lines 192..193) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ _RotMatrixZ(struct MATRIX *m /*$v0*/, short ang /*$a1*/) { } /* * Offset 0x2D4F4, from D:\driver2\game\C\CONVERT.C (lines 199..200) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ RotMatrixXYZ(struct MATRIX *m /*$v0*/, struct SVECTOR *r /*$a1*/) { } /* * Offset 0x2D51C, from D:\driver2\game\C\CONVERT.C (lines 205..213) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ void /*$ra*/ _MatrixRotate(struct VECTOR *pos /*$s0*/) { // line 1, offset 0x2d51c struct VECTOR temp; // stack offset -24 } // line 9, offset 0x2d55c /* * Offset 0x2D55C, from D:\driver2\game\C\CONVERT.C (lines 240..252) * Stack frame base $sp, size 0 */ void /*$ra*/ InvertMatrix(struct MATRIX *a /*$a0*/, struct MATRIX *b /*$a1*/) { } /* * Offset 0x2D5C8, from D:\driver2\game\C\CONVERT.C (lines 334..360) * Stack frame base $sp, size 176 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ScaleCamera() { // line 2, offset 0x2d5c8 struct MATRIX temp; // stack offset -160 struct MATRIX temp2; // stack offset -128 struct MATRIX scale; // stack offset -96 struct MATRIX scaledcammat; // stack offset -64 struct VECTOR pos; // stack offset -32 struct SVECTOR tempang; // stack offset -16 } // line 27, offset 0x2d678 /* * Offset 0x2D678, from D:\driver2\game\C\CONVERT.C (lines 365..370) * Stack frame base $sp, size 0 */ void /*$ra*/ Getlong(char *dest /*$a0*/, char *source /*$a1*/) { } /* * Offset 0x2D6A8, from D:\driver2\game\C\CONVERT.C (lines 387..401) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ RandomInit(long i1 /*$a0*/, long i2 /*$a1*/) { // line 2, offset 0x2d6a8 int count; // $s0 } // line 15, offset 0x2d724 /* * Offset 0x2D724, from D:\driver2\game\C\CONVERT.C (lines 414..419) * Stack frame base $sp, size 0 */ long /*$ra*/ Random2(int step /*$a0*/) { // line 2, offset 0x2d724 unsigned int seed; // $a0 } // line 6, offset 0x2d78c Source file(s) D:\driver2\game\C\COP_AI.C+D:\driver2\game\COP_AI.C, object file obj\cop_ai.OBJ overlay id // 73 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct COP_SIGHT_DATA { short surroundViewDistance; // size=0, offset=0 short frontViewDistance; // size=0, offset=2 short frontViewAngle; // size=0, offset=4 }; struct COP_DATA { int autoMaxPowerScaleLimit; // size=0, offset=0 int autoDesiredSpeedScaleLimit; // size=0, offset=4 int autoRespawnScaleLimit; // size=0, offset=8 int autoBatterPlayerTrigger; // size=0, offset=12 int immortal; // size=0, offset=16 int roadblockTrigger; // size=0, offset=20 int cutOffPowerScale; // size=0, offset=24 int cutOffDistance; // size=0, offset=28 short trigger[5]; // size=10, offset=32 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct FELONY_DATA { struct FELONY_DELAY occurrenceDelay[12]; // size=48, offset=0 struct FELONY_DELAY reoccurrenceDelay[12]; // size=48, offset=48 struct FELONY_VALUE value[12]; // size=48, offset=96 int pursuitFelonyScale; // size=0, offset=144 }; enum AIZone : char { zoneFrnt = 0, zoneBack = 1, zoneLeft = 2, zoneRght = 3, }; struct iVectNT { int n; // size=0, offset=0 int t; // size=0, offset=4 }; // 108 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct COP_SIGHT_DATA COP_SIGHT_DATA; typedef struct COP_DATA COP_DATA; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct FELONY_DATA FELONY_DATA; typedef enum AIZone AIZone; typedef struct iVectNT iVectNT; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 32 external declarations extern struct COP_DATA gCopData; // offset 0x0009bf6c extern int speed1[3]; // offset 0x0009bf98 extern int speed2[3]; // offset 0x0009bfa4 static char sqtbl[65]; // offset 0x0009bfb0 extern int l1; // offset 0x000aa1a0 extern int l2; // offset 0x000aa1a4 extern int gMinimumCops; // offset 0x000aa1a8 extern int gPuppyDogCop; // offset 0x000aa1ac extern int gBatterPlayer; // offset 0x000aa1b0 extern int gCopDesiredSpeedScale; // offset 0x000aa1b4 extern int gCopMaxPowerScale; // offset 0x000aa1b8 extern short pedestrianFelony; // offset 0x000aa1bc extern int gCopRespawnTime; // offset 0x000aa1c0 extern int toggleCam; // offset 0x000aa1c4 extern int numActiveCops; // offset 0x000aabdc extern int CopsCanSeePlayer; // offset 0x000aabb8 extern int CopsAllowed; // offset 0x000aabc0 extern int copsAreInPursuit; // offset 0x000aabc4 extern int player_position_known; // offset 0x000aabd4 extern struct COP_SIGHT_DATA copSightData; // offset 0x000aabc8 extern int cop_respawn_timer; // offset 0x000aabd8 extern int requestCopCar; // offset 0x000aabe0 extern int LastHeading; // offset 0x000aabbc extern int pathStraight; // offset 0x000aabd0 extern int OutOfSightCount; // offset 0x000aabb4 extern struct _CAR_DATA *targetVehicle; // offset 0x000aabe4 static int said_picked_up; // offset 0x000aabb0 extern struct VECTOR lastKnownPosition; // offset 0x000bd610 extern struct FELONY_DATA felonyData; // offset 0x000bd558 extern struct VECTOR CarTail; // offset 0x000bd600 extern struct VECTOR targetPoint; // offset 0x000bd5f0 extern char CopWorkMem[444]; // offset 0x000bd620 // 12 functions /* * Offset 0x2D78C, from D:\driver2\game\C\COP_AI.C (lines 593..638) * Stack frame base $sp, size 152 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ WibbleDownTheRoad(struct VECTOR *from /*$a0*/, int distance /*$s1*/, struct VECTOR *to /*$s5*/) { // line 1, offset 0x2d78c int th; // $s0 int j; // $s3 int thl[4]; // stack offset -136 struct VECTOR pos; // stack offset -120 struct VECTOR dir; // stack offset -104 { // line 11, offset 0x2d810 struct VECTOR p2; // stack offset -88 struct VECTOR d2; // stack offset -72 int colour[3]; // stack offset -56 } // line 21, offset 0x2d89c } // line 46, offset 0x2d99c /* * Offset 0x2D99C, from D:\driver2\game\C\COP_AI.C (lines 643..704) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitCops() { } /* * Offset 0x2DAD8, from D:\driver2\game\C\COP_AI.C (lines 708..808) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ ControlCops() { // line 2, offset 0x2dad8 { // line 18, offset 0x2db34 int playerID; // $v1 } // line 21, offset 0x2db74 { // line 41, offset 0x2dc6c int heading; // $s1 int rnd; // $s0 } // line 66, offset 0x2dd9c { // line 76, offset 0x2ddfc int copsWereInPursuit; // $a1 } // line 90, offset 0x2de9c { // line 93, offset 0x2deac } // line 99, offset 0x2dee0 } // line 101, offset 0x2dee0 /* * Offset 0x2DEFC, from D:\driver2\game\C\COP_AI.C (lines 845..1202) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ CopControl1(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x2defc int currentSpeed; // $s7 int desiredSteerAngle; // $s4 { // line 48, offset 0x2dfc4 int dx; // $a1 int dz; // $a0 { // line 52, offset 0x2e018 } // line 60, offset 0x2e058 } // line 61, offset 0x2e058 { // line 67, offset 0x2e070 struct VECTOR pos; // stack offset -88 } // line 77, offset 0x2e23c { // line 90, offset 0x2e23c enum AIZone targetZone; // $a0 struct VECTOR doordir; // stack offset -72 int targetFound; // $a1 int cx; // $s5 int cz; // $s6 int dvx; // $s0 int dvz; // $s3 int dist; // $s2 int framesToImpact; // $a1 { // line 139, offset 0x2e360 int dz; // $a1 int idvx; // $v1 int idvz; // $v0 } // line 139, offset 0x2e360 { // line 204, offset 0x2e5e4 struct iVectNT path[2]; // stack offset -56 int slidevel; // $a3 { // line 260, offset 0x2e8e8 int plcrspd; // $a1 } // line 263, offset 0x2e954 } // line 279, offset 0x2ea28 { // line 295, offset 0x2ea78 int b; // $a0 } // line 300, offset 0x2eac0 { // line 304, offset 0x2eac0 int steerdif; // $v1 int speeddif; // $a2 int maxPower; // $a1 { // line 330, offset 0x2ebb8 int sf; // $v1 } // line 332, offset 0x2ebd0 } // line 343, offset 0x2ec64 } // line 343, offset 0x2ec64 { // line 352, offset 0x2ec84 } // line 356, offset 0x2ecac } // line 358, offset 0x2ecac /* * Offset 0x2ECD8, from D:\driver2\game\C\COP_AI.C (lines 1368..1541) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ ControlCopDetection() { // line 14, offset 0x2ecd8 int dx; // $v1 int dz; // $a0 struct VECTOR vec; // stack offset -64 int ccx; // stack offset -32 int ccz; // stack offset -28 char *scratch; // $s4 struct _CAR_DATA *lcp; // $s1 { // line 17, offset 0x2ecd8 { // line 17, offset 0x2ecd8 int angry; // $v1 } // line 23, offset 0x2eda8 } // line 23, offset 0x2eda8 { // line 48, offset 0x2edfc int dx; // $v1 int dz; // $v0 } // line 58, offset 0x2ee7c { // line 66, offset 0x2eed0 int distanceToPlayer; // $s0 int active; // $s2 { // line 1, offset 0x2ef70 struct _CAR_DATA *cp; // $s1 int distanceToPlayer; // $s0 { // line 1, offset 0x2ef70 int farDist; // $v1 int nearDist; // $v0 char result; // $s2 { // line 1, offset 0x2ef90 int theta; // $v1 struct VECTOR delta; // stack offset -48 { // line 1, offset 0x2f030 } // line 1, offset 0x2f034 } // line 1, offset 0x2f034 } // line 1, offset 0x2f034 } // line 1, offset 0x2f034 } // line 84, offset 0x2f050 { // line 110, offset 0x2f164 } // line 110, offset 0x2f164 { // line 123, offset 0x2f190 { // line 130, offset 0x2f1b8 } // line 150, offset 0x2f228 } // line 152, offset 0x2f238 { // line 157, offset 0x2f25c int rnd; // $s0 int dir; // $s1 } // line 161, offset 0x2f2c8 { // line 166, offset 0x2f2fc int rnd; // $s0 int dir; // $s1 } // line 168, offset 0x2f394 } // line 174, offset 0x2f3cc /* * Offset 0x2F3CC, from D:\driver2\game\C\COP_AI.C (lines 1583..1670) * Stack frame base $sp, size 0 */ void /*$ra*/ ControlNumberOfCops() { // line 2, offset 0x2f3cc int numWantedCops; // $t2 { // line 5, offset 0x2f3cc short *pTrigger; // $a2 } // line 13, offset 0x2f454 { // line 26, offset 0x2f4a0 int temp; // $a1 } // line 41, offset 0x2f54c { // line 50, offset 0x2f570 int num_closer; // $a2 int cutOffDistance; // $a1 { // line 55, offset 0x2f580 struct _CAR_DATA *lcp; // $a0 int tempDist; // $a3 { // line 64, offset 0x2f5ac int copDist; // $v1 } // line 75, offset 0x2f5cc } // line 78, offset 0x2f5dc } // line 81, offset 0x2f5e8 } // line 88, offset 0x2f60c /* * Offset 0x2F60C, from D:\driver2\game\C\COP_AI.C (lines 824..841) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ CopControl(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x2f60c } // line 18, offset 0x2f680 /* * Offset 0x2F680, from D:\driver2\game\C\COP_AI.C (lines 577..587) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitCopState(struct _CAR_DATA *cp /*$s0*/, char *extraData /*$a1*/) { } /* * Offset 0x2F6FC, from D:\driver2\game\C\COP_AI.C (lines 1562..1575) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PassiveCopTasks(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x2f6fc { // line 1, offset 0x2f76c struct _CAR_DATA *cp; // $s0 } // line 1, offset 0x2f7c4 } // line 14, offset 0x2f7f8 /* * Offset 0x2F7F8, from D:\driver2\game\C\COP_AI.C (lines 1267..1280) * Stack frame base $sp, size 0 */ void /*$ra*/ InitCopData(struct COP_DATA *pCopData /*$a0*/) { // line 1, offset 0x2f7f8 short *pTrigger; // $v1 short trigger; // $a2 } // line 14, offset 0x2f844 /* * Offset 0x2F844, from D:\driver2\game\C\COP_AI.C (lines 1308..1313) * Stack frame base $sp, size 0 */ void /*$ra*/ UpdateCopSightData() { // line 2, offset 0x2f844 int angry; // $v1 } // line 6, offset 0x2f8dc /* * Offset 0x2F8DC, from D:\driver2\game\C\COP_AI.C (lines 1231..1243) * Stack frame base $sp, size 0 */ int /*$ra*/ FindCost(int x /*$a0*/, int z /*$a1*/, int dvx /*$a2*/, int dvz /*$a3*/) { // line 1, offset 0x2f8dc int tx; // $v0 int tz; // $v0 int dx; // $a2 int dz; // $v1 int d; // $v0 } // line 13, offset 0x2f994 Source file(s) D:\driver2\game\C\COSMETIC.C+D:\driver2\game\COSMETIC.C, object file obj\cosmetic.OBJ overlay id // 62 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 84 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 1 external declarations extern char *CosmeticFiles[4]; // offset 0x0009bff4 // 10 functions /* * Offset 0x2F994, from D:\driver2\game\C\COSMETIC.C (lines 252..282) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ AddReverseLight(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x2f994 struct CAR_COSMETICS *car_cos; // $a1 struct SVECTOR v1; // stack offset -32 struct CVECTOR col; // stack offset -24 short cogOffset; // $s2 } // line 31, offset 0x2faec /* * Offset 0x2FAEC, from D:\driver2\game\C\COSMETIC.C (lines 325..396) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ AddIndicatorLight(struct _CAR_DATA *cp /*$s0*/, int Type /*$s6*/) { // line 1, offset 0x2faec struct CAR_COSMETICS *car_cos; // $a1 struct CVECTOR col; // stack offset -56 struct SVECTOR vfrnt; // stack offset -48 struct SVECTOR vback; // stack offset -40 char tempcol; // $s1 char *life; // $a0 char *life2; // $s3 short cogOffset; // $s2 } // line 72, offset 0x2fdbc /* * Offset 0x2FDE4, from D:\driver2\game\C\COSMETIC.C (lines 407..503) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ AddBrakeLight(struct _CAR_DATA *cp /*$s5*/) { // line 1, offset 0x2fde4 struct CAR_COSMETICS *car_cos; // $a1 struct SVECTOR v1; // stack offset -88 struct SVECTOR v2; // stack offset -80 struct SVECTOR vec; // stack offset -72 struct CVECTOR col; // stack offset -64 char *life2; // $s2 short doubleFlag; // stack offset -56 short verticalFlag; // stack offset -52 short offset; // $s1 short loop; // $fp short damIndex; // $v0 short cogOffset; // $a3 } // line 97, offset 0x30118 /* * Offset 0x30148, from D:\driver2\game\C\COSMETIC.C (lines 514..643) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ AddCopCarLight(struct _CAR_DATA *cp /*$t0*/) { // line 1, offset 0x30148 int size; // $a3 int light; // $s1 int pos; // $s3 int side; // $s4 int num_lights; // $t5 int count_speed; // $t4 char col1; // $a2 char col2; // $a1 static char xpos1[8]; // offset 0x10 int sign; // $t1 char *coplife; // $s2 struct SVECTOR v1; // stack offset -88 struct CVECTOR col; // stack offset -80 struct CAR_COSMETICS *car_cos; // $s0 short cogOffset; // $fp } // line 130, offset 0x30514 /* * Offset 0x30544, from D:\driver2\game\C\COSMETIC.C (lines 653..918) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ AddNightLights(struct _CAR_DATA *cp /*$s6*/) { // line 1, offset 0x30544 static struct MATRIX work_matrix; // offset 0x0 struct CAR_COSMETICS *car_cos; // $fp struct SVECTOR Position1; // stack offset -104 struct SVECTOR Position2; // stack offset -96 struct SVECTOR vec; // stack offset -88 struct CVECTOR col; // stack offset -80 int lit; // stack offset -72 int lightFlag; // $t0 char *life2; // stack offset -68 short damIndex; // $s5 short loop; // stack offset -64 short offset; // $s2 short doubleFlag; // stack offset -60 short verticalFlag; // stack offset -56 short cogOffset; // stack offset -52 } // line 266, offset 0x30d9c /* * Offset 0x30D9C, from D:\driver2\game\C\COSMETIC.C (lines 989..1037) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ AddSmokingEngine(struct _CAR_DATA *cp /*$s0*/, int black_smoke /*$s2*/, int WheelSpeed /*$s3*/) { // line 1, offset 0x30d9c struct VECTOR SmokePos; // stack offset -64 struct CAR_COSMETICS *car_cos; // $a0 struct VECTOR Drift; // stack offset -48 struct SVECTOR svec; // stack offset -32 } // line 49, offset 0x30f90 /* * Offset 0x30FAC, from D:\driver2\game\C\COSMETIC.C (lines 1048..1083) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ AddFlamingEngine(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x30fac struct VECTOR SmokePos; // stack offset -56 struct SVECTOR svec; // stack offset -40 struct CAR_COSMETICS *car_cos; // $a0 struct VECTOR Drift; // stack offset -32 } // line 36, offset 0x3114c /* * Offset 0x31160, from D:\driver2\game\C\COSMETIC.C (lines 188..202) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ LoadCosmetics(int level /*$a0*/) { // line 2, offset 0x31160 } // line 15, offset 0x311b0 /* * Offset 0x311B0, from D:\driver2\game\C\COSMETIC.C (lines 213..242) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ProcessCosmeticsLump(char *lump_ptr /*$s2*/, int lump_size /*$a1*/) { // line 1, offset 0x311b0 int i; // $t0 int model; // $a1 int offset; // $a0 { // line 23, offset 0x31238 } // line 27, offset 0x31338 } // line 30, offset 0x31360 /* * Offset 0x31360, from D:\driver2\game\C\COSMETIC.C (lines 293..310) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupSpecCosmetics(char *loadbuffer /*$a0*/) { // line 5, offset 0x31360 int *to; // $a1 int *from; // $a0 int *end; // $v1 } // line 18, offset 0x31398 Source file(s) D:\driver2\game\C\CUTSCENE.C+D:\driver2\game\CUTSCENE.C, object file obj\cutscene.obj overlay id // 74 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct PLAYBACKCAMERA { struct VECTOR_NOPAD position; // size=12, offset=0 struct SVECTOR angle; // size=8, offset=12 int FrameCnt; // size=0, offset=20 short CameraPosvy; // size=0, offset=24 short gCameraDistance; // size=0, offset=26 short gCameraMaxDistance; // size=0, offset=28 short gCameraAngle; // size=0, offset=30 char cameraview; // size=0, offset=32 char next; // size=0, offset=33 char prev; // size=0, offset=34 char idx; // size=0, offset=35 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct REPLAY_SAVE_HEADER { unsigned long magic; // size=0, offset=0 unsigned char GameLevel; // size=0, offset=4 unsigned char GameType; // size=0, offset=5 unsigned char reserved1; // size=0, offset=6 unsigned char NumReplayStreams; // size=0, offset=7 unsigned char NumPlayers; // size=0, offset=8 unsigned char RandomChase; // size=0, offset=9 unsigned char CutsceneEvent; // size=0, offset=10 unsigned char gCopDifficultyLevel; // size=0, offset=11 struct MISSION_DATA SavedData; // size=228, offset=12 struct ACTIVE_CHEATS ActiveCheats; // size=4, offset=240 int wantedCar[2]; // size=8, offset=244 int MissionNumber; // size=0, offset=252 int HaveStoredData; // size=0, offset=256 int reserved2[6]; // size=24, offset=260 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct REPLAY_STREAM_HEADER { struct STREAM_SOURCE SourceType; // size=48, offset=0 int Size; // size=0, offset=48 int Length; // size=0, offset=52 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct CUTSCENE_BUFFER { int numResident; // size=0, offset=0 unsigned char residentCutscenes[4]; // size=4, offset=4 char *residentPointers[4]; // size=16, offset=8 char *currentPointer; // size=0, offset=24 int bytesFree; // size=0, offset=28 char buffer[8192]; // size=8192, offset=32 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CUTSCENE_INFO { unsigned short offset; // size=0, offset=0 unsigned short size; // size=0, offset=2 }; struct CUTSCENE_HEADER { int maxsize; // size=0, offset=0 struct CUTSCENE_INFO data[15]; // size=60, offset=4 }; // 99 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct TILE TILE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct PLAYBACKCAMERA PLAYBACKCAMERA; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct REPLAY_SAVE_HEADER REPLAY_SAVE_HEADER; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct REPLAY_STREAM_HEADER REPLAY_STREAM_HEADER; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct CUTSCENE_BUFFER CUTSCENE_BUFFER; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct CUTSCENE_INFO CUTSCENE_INFO; typedef struct CUTSCENE_HEADER CUTSCENE_HEADER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 29 external declarations extern struct PLAYBACKCAMERA *CutsceneCamera; // offset 0x000aa1f8 extern int gInGameChaseActive; // offset 0x000aa1fc extern int gInGameCutsceneActive; // offset 0x000aa200 extern int CutsceneFrameCnt; // offset 0x000aa204 extern int CutsceneEventTrigger; // offset 0x000aa208 extern int gThePlayerCar; // offset 0x000aa20c extern int gInGameCutsceneDelay; // offset 0x000aa210 extern int gInGameCutsceneID; // offset 0x000aa214 extern int JustReturnedFromCutscene; // offset 0x000aa218 extern int gCutsceneAtEnd; // offset 0x000aa21c static char *CutsceneReplayStart; // offset 0x000aa1c8 static int CutsceneStreamIndex; // offset 0x000aa1cc static int NumCutsceneStreams; // offset 0x000aa1d0 static int CutsceneCameraOffset; // offset 0x000aa1d4 static struct PLAYBACKCAMERA *CutNextChange; // offset 0x000aa1d8 static struct PLAYBACKCAMERA *CutLastChange; // offset 0x000aa1dc static int PreLoadedCutscene; // offset 0x000aa1e0 static int gHaveInGameCutscene; // offset 0x000aa1e4 static int gCSDestroyPlayer; // offset 0x000aa1e8 static int CutsceneLength; // offset 0x000aa1ec static int BlackBorderHeight; // offset 0x000aa1f0 static int CutsceneInReplayBuffer; // offset 0x000aa1f4 static int SavedCameraCarId; // offset 0x000aabf0 static int SavedCameraView; // offset 0x000aabf4 static int SavedCameraAngle; // offset 0x000aabf8 static int SavedWorldCentreCarId; // offset 0x000aabfc static struct VECTOR *SavedSpoolXZ; // offset 0x000aac00 extern struct CUTSCENE_BUFFER CutsceneBuffer; // offset 0x000bd820 extern struct STREAM_SOURCE *PlayerStartInfo[8]; // offset 0x000bd800 // 21 functions /* * Offset 0x31398, from D:\driver2\game\C\CUTSCENE.C (lines 646..675) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawInGameCutscene() { // line 2, offset 0x31398 struct TILE *tile; // $s0 } // line 30, offset 0x314e8 /* * Offset 0x314E8, from D:\driver2\game\C\CUTSCENE.C (lines 683..724) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ TriggerChase(int *car /*$s2*/, int cutscene /*$a1*/) { // line 1, offset 0x314e8 void *inform; // $s3 int i; // $a0 int length; // $s1 { // line 12, offset 0x31558 } // line 38, offset 0x316a4 } // line 42, offset 0x316ec /* * Offset 0x316EC, from D:\driver2\game\C\CUTSCENE.C (lines 838..942) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ ReleaseInGameCutscene() { // line 2, offset 0x316ec { // line 7, offset 0x31748 struct STREAM_SOURCE *pinfo; // $a0 int i; // $s0 } // line 79, offset 0x31978 } // line 105, offset 0x31a20 /* * Offset 0x31A20, from D:\driver2\game\C\CUTSCENE.C (lines 1040..1190) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ TriggerInGameCutsceneSystem(int cutscene /*$a0*/) { // line 1, offset 0x31a20 static char padid[8]; // offset 0x0 int bDamageOverride; // stack offset -64 int i; // $s2 int id; // $v1 { // line 18, offset 0x31a64 { // line 54, offset 0x31bc4 int car; // $v1 int model; // $v1 int palette; // $a1 } // line 65, offset 0x31c1c { // line 85, offset 0x31cac { // line 90, offset 0x31d0c int car; // $v1 } // line 104, offset 0x31d90 } // line 112, offset 0x31d90 } // line 146, offset 0x31ea0 } // line 151, offset 0x31edc /* * Offset 0x31EDC, from D:\driver2\game\C\CUTSCENE.C (lines 1199..1212) * Stack frame base $sp, size 0 */ void /*$ra*/ SetNullPlayer(int plr /*$a0*/) { // line 1, offset 0x31edc } // line 14, offset 0x31f60 /* * Offset 0x31F60, from D:\driver2\game\C\CUTSCENE.C (lines 1221..1234) * Stack frame base $sp, size 0 */ void /*$ra*/ SetNullPlayerDontKill(int plr /*$a0*/) { // line 1, offset 0x31f60 } // line 14, offset 0x31fe0 /* * Offset 0x31FE0, from D:\driver2\game\C\CUTSCENE.C (lines 1244..1266) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DestroyPlayer(int plr /*$s0*/, int fully /*$a1*/) { } /* * Offset 0x32118, from D:\driver2\game\C\CUTSCENE.C (lines 1299..1354) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ LoadCutsceneToReplayBuffer(int residentCutscene /*$a0*/) { // line 2, offset 0x32118 struct REPLAY_SAVE_HEADER *rheader; // $a1 struct REPLAY_STREAM_HEADER *sheader; // $t1 char filename[64]; // stack offset -88 char *pt; // $s1 int i; // $a0 int size; // $s0 } // line 56, offset 0x3243c /* * Offset 0x3243C, from D:\driver2\game\C\CUTSCENE.C (lines 1362..1439) * Stack frame base $sp, size 456 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ LoadCutsceneToBuffer(int subindex /*$s3*/) { // line 1, offset 0x3243c struct CUTSCENE_HEADER header; // stack offset -440 struct REPLAY_SAVE_HEADER rheader; // stack offset -376 char filename[64]; // stack offset -88 int offset; // $a2 int size; // $s0 } // line 78, offset 0x325c0 /* * Offset 0x325C0, from D:\driver2\game\C\CUTSCENE.C (lines 566..585) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitInGameCutsceneVariables() { } /* * Offset 0x3262C, from D:\driver2\game\C\CUTSCENE.C (lines 594..643) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ HandleInGameCutscene() { // line 2, offset 0x3262c { // line 37, offset 0x3270c } // line 48, offset 0x32730 } // line 50, offset 0x32740 /* * Offset 0x32740, from D:\driver2\game\C\CUTSCENE.C (lines 732..769) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ TriggerInGameCutscene(int cutscene /*$s0*/) { // line 1, offset 0x32740 { // line 30, offset 0x327f0 } // line 37, offset 0x3282c } // line 38, offset 0x3282c /* * Offset 0x3283C, from D:\driver2\game\C\CUTSCENE.C (lines 778..829) * Stack frame base $sp, size 152 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CalcInGameCutsceneSize() { // line 39, offset 0x3283c struct CUTSCENE_HEADER header; // stack offset -136 char filename[64]; // stack offset -72 } // line 52, offset 0x328c8 /* * Offset 0x328C8, from D:\driver2\game\C\CUTSCENE.C (lines 951..952) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ PreLoadInGameCutscene(int chase /*$a0*/) { } /* * Offset 0x328E8, from D:\driver2\game\C\CUTSCENE.C (lines 965..997) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CutsceneCameraChange(int cameracnt /*$s0*/) { } /* * Offset 0x329B4, from D:\driver2\game\C\CUTSCENE.C (lines 1010..1032) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ LoadInGameCutscene(int subindex /*$s1*/) { // line 1, offset 0x329b4 int ret; // $s0 } // line 23, offset 0x32a34 /* * Offset 0x32A34, from D:\driver2\game\C\CUTSCENE.C (lines 1274..1290) * Stack frame base $sp, size 0 */ void /*$ra*/ FindNextCutChange(int cameracnt /*$a0*/) { // line 1, offset 0x32a34 int found; // $t0 int count; // $a3 int nextframe; // $a2 } // line 17, offset 0x32a98 /* * Offset 0x32A98, from D:\driver2\game\C\CUTSCENE.C (lines 1471..1497) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ LoadCutsceneInformation(int cutscene /*$s2*/) { // line 1, offset 0x32a98 int i; // $s1 } // line 27, offset 0x32b54 /* * Offset 0x32B54, from D:\driver2\game\C\CUTSCENE.C (lines 1505..1517) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ FreeCutsceneBuffer() { // line 2, offset 0x32b54 int i; // $v1 } // line 13, offset 0x32bc0 /* * Offset 0x32BC0, from D:\driver2\game\C\CUTSCENE.C (lines 1520..1532) * Stack frame base $sp, size 0 */ int /*$ra*/ IsCutsceneResident(int cutscene /*$a0*/) { // line 1, offset 0x32bc0 int i; // $a1 } // line 13, offset 0x32c08 /* * Offset 0x32C08, from D:\driver2\game\C\CUTSCENE.C (lines 1442..1463) * Stack frame base $sp, size 0 */ void /*$ra*/ ShowCutsceneError() { } Source file(s) D:\driver2\game\C\DEBRIS.C+D:\driver2\game\DEBRIS.C, object file obj\debris.OBJ overlay id // 96 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct POLY_GT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 unsigned char r1; // size=0, offset=16 unsigned char g1; // size=0, offset=17 unsigned char b1; // size=0, offset=18 unsigned char p1; // size=0, offset=19 short x1; // size=0, offset=20 short y1; // size=0, offset=22 unsigned char u1; // size=0, offset=24 unsigned char v1; // size=0, offset=25 unsigned short tpage; // size=0, offset=26 unsigned char r2; // size=0, offset=28 unsigned char g2; // size=0, offset=29 unsigned char b2; // size=0, offset=30 unsigned char p2; // size=0, offset=31 short x2; // size=0, offset=32 short y2; // size=0, offset=34 unsigned char u2; // size=0, offset=36 unsigned char v2; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_GT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 unsigned char r1; // size=0, offset=16 unsigned char g1; // size=0, offset=17 unsigned char b1; // size=0, offset=18 unsigned char p1; // size=0, offset=19 short x1; // size=0, offset=20 short y1; // size=0, offset=22 unsigned char u1; // size=0, offset=24 unsigned char v1; // size=0, offset=25 unsigned short tpage; // size=0, offset=26 unsigned char r2; // size=0, offset=28 unsigned char g2; // size=0, offset=29 unsigned char b2; // size=0, offset=30 unsigned char p2; // size=0, offset=31 short x2; // size=0, offset=32 short y2; // size=0, offset=34 unsigned char u2; // size=0, offset=36 unsigned char v2; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 unsigned char r3; // size=0, offset=40 unsigned char g3; // size=0, offset=41 unsigned char b3; // size=0, offset=42 unsigned char p3; // size=0, offset=43 short x3; // size=0, offset=44 short y3; // size=0, offset=46 unsigned char u3; // size=0, offset=48 unsigned char v3; // size=0, offset=49 unsigned short pad3; // size=0, offset=50 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT4 { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TPAN { unsigned char texture_page; // size=0, offset=0 unsigned char texture_number; // size=0, offset=1 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct SMOKE { struct UnpaddedHackVector position; // size=12, offset=0 struct UnpaddedCharVector drift; // size=3, offset=12 struct UnpaddedCharVector drift_change; // size=3, offset=15 struct UnpaddedHackVector final_tail_pos; // size=12, offset=20 unsigned char step; // size=0, offset=32 unsigned char pos; // size=0, offset=33 short start_w; // size=0, offset=34 short final_w; // size=0, offset=36 char life; // size=0, offset=38 char halflife; // size=0, offset=39 unsigned short flags; // size=0, offset=40 unsigned char num; // size=0, offset=42 unsigned char t_step; // size=0, offset=43 short transparency; // size=0, offset=44 }; struct DEBRIS { struct VECTOR position; // size=16, offset=0 struct SVECTOR direction; // size=8, offset=16 unsigned short life; // size=0, offset=24 unsigned short flags; // size=0, offset=26 unsigned short num; // size=0, offset=28 unsigned short pos; // size=0, offset=30 struct RGB rgb; // size=4, offset=32 char step; // size=0, offset=36 char type; // size=0, offset=37 }; struct LEAF { struct VECTOR position; // size=16, offset=0 struct SVECTOR direction; // size=8, offset=16 unsigned short life; // size=0, offset=24 unsigned short flags; // size=0, offset=26 unsigned short num; // size=0, offset=28 unsigned short pos; // size=0, offset=30 struct RGB rgb; // size=4, offset=32 char step; // size=0, offset=36 char type; // size=0, offset=37 short sin_index1; // size=0, offset=38 short sin_index2; // size=0, offset=40 char sin_addition1; // size=0, offset=42 char sin_addition2; // size=0, offset=43 }; struct DAMAGED_LAMP { struct CELL_OBJECT *cop; // size=16, offset=0 char damage; // size=0, offset=4 }; struct DAMAGED_OBJECT { struct CELL_OBJECT cop; // size=16, offset=0 char active; // size=0, offset=16 char damage; // size=0, offset=17 int rot_speed; // size=0, offset=20 struct SVECTOR velocity; // size=8, offset=24 int vx; // size=0, offset=32 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct TRI_POINT { struct BVECTOR v0; // size=4, offset=0 struct BVECTOR v1; // size=4, offset=4 struct BVECTOR v2; // size=4, offset=8 }; struct TRI_POINT_LONG { struct VECTOR_NOPAD v0; // size=12, offset=0 struct VECTOR_NOPAD v1; // size=12, offset=12 struct VECTOR_NOPAD v2; // size=12, offset=24 }; struct RAIN_TYPE { struct VECTOR_NOPAD position; // size=12, offset=0 struct SVECTOR oldposition; // size=8, offset=12 }; struct LAMP_STREAK { struct SXYPAIR light_trails[4]; // size=16, offset=0 int id; // size=0, offset=16 short clock; // size=0, offset=20 char set; // size=0, offset=22 }; struct ROUTE_DATA { short type; // size=0, offset=0 short height; // size=0, offset=2 short objectAngle; // size=0, offset=4 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; // 129 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct POLY_G4 POLY_G4; typedef struct POLY_GT3 POLY_GT3; typedef struct POLY_GT4 POLY_GT4; typedef struct TILE TILE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT4 POLYFT4; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct TPAN TPAN; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct DB DB; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct RGB16 RGB16; typedef struct SMOKE SMOKE; typedef struct DEBRIS DEBRIS; typedef struct LEAF LEAF; typedef struct DAMAGED_LAMP DAMAGED_LAMP; typedef struct DAMAGED_OBJECT DAMAGED_OBJECT; typedef struct BVECTOR BVECTOR; typedef struct TRI_POINT TRI_POINT; typedef struct TRI_POINT_LONG TRI_POINT_LONG; typedef struct RAIN_TYPE RAIN_TYPE; typedef struct LAMP_STREAK LAMP_STREAK; typedef struct ROUTE_DATA ROUTE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _EVENT EVENT; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef struct MVERTEX SV5x5[5][5]; // 0 labels // 120 external declarations extern char PoolPrimData[16]; // offset 0x0009c00c extern struct TRI_POINT *debris_rot_table[5]; // offset 0x0009c01c extern struct CVECTOR debris_colour[4][31]; // offset 0x0009c030 extern struct TRI_POINT_LONG debris1_vert; // offset 0x0009c220 extern struct TRI_POINT_LONG debris2_vert; // offset 0x0009c244 extern struct TRI_POINT_LONG leaf_vert; // offset 0x0009c268 extern struct TRI_POINT_LONG litter_vert; // offset 0x0009c28c extern struct TRI_POINT_LONG debris3_vert; // offset 0x0009c2b0 extern struct TRI_POINT_LONG *debris_data[5]; // offset 0x0009c2d4 extern unsigned char grassColour[4][3]; // offset 0x0009c2e8 extern int LightningTimer; // offset 0x000aa224 extern int variable_weather; // offset 0x000aa228 extern int gDoSmoke; // offset 0x000aa234 extern int gDoLeaves; // offset 0x000aa238 extern int gPlayerCarLights; // offset 0x000aa220 extern int gFlareScale; // offset 0x000aa22c extern int SmokeCnt; // offset 0x000aa230 extern char LeftLight; // offset 0x000aac6c extern char RightLight; // offset 0x000aac20 extern char gRainCount; // offset 0x000aac21 extern int gEffectsTimer; // offset 0x000aac54 extern int wetness; // offset 0x000aac48 extern int gNextRainDrop; // offset 0x000aac4c extern int next_debris; // offset 0x000aac3c extern int next_leaf; // offset 0x000aac70 extern int next_smoke; // offset 0x000aac24 extern int main_cop_light_pos; // offset 0x000aac68 extern short light_col; // offset 0x000aac6e extern int LightSortCorrect; // offset 0x000aac28 extern int gcar_num; // offset 0x000aac5c extern int NextDamagedLamp; // offset 0x000aac74 extern int NextDamagedPmeter; // offset 0x000aac44 extern struct SVECTOR debris_rotvec; // offset 0x000aac60 extern struct SVECTOR leaf_rotvec; // offset 0x000aac30 extern struct SMOKE *smoke_table; // offset 0x000aac2c static int ThunderTimer; // offset 0x000aac14 static int ThunderDistance; // offset 0x000aac18 extern int gCarPoolsToDraw; // offset 0x000aac78 extern int StreakCount1; // offset 0x000aac40 extern int LightIndex; // offset 0x000aac7c extern int NoRainIndoors; // offset 0x000aac50 extern int CarLightFadeFront; // offset 0x000aac38 extern int CarLightFadeBack; // offset 0x000aac80 extern int SmashablesHit; // offset 0x000aac58 static int plotted; // offset 0x000aac1c extern struct DEBRIS debris[60]; // offset 0x000c1080 extern struct MATRIX norot; // offset 0x000c0828 extern struct TEXTURE_DETAILS addcam; // offset 0x000c09d8 extern struct TEXTURE_DETAILS frameadv; // offset 0x000c1d08 extern struct TEXTURE_DETAILS autocam; // offset 0x000c1c28 extern struct TEXTURE_DETAILS chasecar; // offset 0x000c1ce8 extern struct TEXTURE_DETAILS choosecar; // offset 0x000c2990 extern struct TEXTURE_DETAILS clock; // offset 0x000bf8c8 extern struct TEXTURE_DETAILS delcam; // offset 0x000c0e68 extern struct TEXTURE_DETAILS editcam; // offset 0x000c1b70 extern struct TEXTURE_DETAILS fixedcam; // offset 0x000c1cf8 extern struct TEXTURE_DETAILS incar; // offset 0x000bf8d8 extern struct TEXTURE_DETAILS lenschan; // offset 0x000c1d38 extern struct TEXTURE_DETAILS lookcar; // offset 0x000c1c38 extern struct TEXTURE_DETAILS movecam; // offset 0x000c1ba0 extern struct TEXTURE_DETAILS movecampos; // offset 0x000c0848 extern struct TEXTURE_DETAILS ok; // offset 0x000c1b60 extern struct TEXTURE_DETAILS pause; // offset 0x000bf8f8 extern struct TEXTURE_DETAILS playcam; // offset 0x000c1b90 extern struct TEXTURE_DETAILS playpause; // offset 0x000c29b0 extern struct TEXTURE_DETAILS save2card; // offset 0x000c1ec8 extern struct TEXTURE_DETAILS restart; // offset 0x000c1c58 extern struct TEXTURE_DETAILS line_texture; // offset 0x000c1c68 extern struct TEXTURE_DETAILS bird_texture1; // offset 0x000c1d18 extern struct TEXTURE_DETAILS bird_texture2; // offset 0x000c1d28 extern struct TEXTURE_DETAILS light_pool_texture; // offset 0x000c2980 extern struct TEXTURE_DETAILS gTyreTexture; // offset 0x000c1c48 extern struct TEXTURE_DETAILS smoke_texture; // offset 0x000c27e0 extern struct TEXTURE_DETAILS litter_texture; // offset 0x000bf8e8 extern struct TEXTURE_DETAILS debris_texture; // offset 0x000c3938 extern struct TEXTURE_DETAILS pool_texture; // offset 0x000c1c98 extern struct TEXTURE_DETAILS spark_texture; // offset 0x000c27f0 extern struct TEXTURE_DETAILS cop_texture; // offset 0x000c1b08 extern struct TEXTURE_DETAILS light_texture; // offset 0x000c1f18 extern struct TEXTURE_DETAILS flare_texture; // offset 0x000c1ed8 extern struct TEXTURE_DETAILS sea_texture; // offset 0x000c1aa0 extern struct TEXTURE_DETAILS lensflare_texture; // offset 0x000c1ca8 extern struct TEXTURE_DETAILS trail_texture; // offset 0x000c1f38 extern struct TEXTURE_DETAILS cross_texture; // offset 0x000c2800 extern struct TEXTURE_DETAILS joypad_texture; // offset 0x000bf840 extern struct TEXTURE_DETAILS pad_texture; // offset 0x000c1a90 extern struct TEXTURE_DETAILS watch_texture; // offset 0x000c1f08 extern struct TEXTURE_DETAILS sun_texture; // offset 0x000c1b18 extern struct TEXTURE_DETAILS drop_texture; // offset 0x000c1c78 extern struct TEXTURE_DETAILS lightref_texture; // offset 0x000c1b28 extern struct TEXTURE_DETAILS digit_texture; // offset 0x000c1ee8 extern struct TEXTURE_DETAILS collon_texture; // offset 0x000bf850 extern struct TEXTURE_DETAILS jeans_texture; // offset 0x000c1ef8 extern struct TEXTURE_DETAILS arm1_texture; // offset 0x000c1b80 extern struct TEXTURE_DETAILS forearm1_texture; // offset 0x000c1a80 extern struct TEXTURE_DETAILS chest1_texture; // offset 0x000c29a0 extern struct TEXTURE_DETAILS head1_texture; // offset 0x000c1cb8 extern struct TEXTURE_DETAILS paper_texture; // offset 0x000c1f28 extern struct TEXTURE_DETAILS tannerShadow_texture; // offset 0x000c0e78 extern struct TEXTURE_DETAILS texturePedHead; // offset 0x000c2958 extern struct DAMAGED_LAMP damaged_lamp[5]; // offset 0x000c1b38 extern struct DAMAGED_OBJECT damaged_object[9]; // offset 0x000c2810 extern struct MATRIX debris_mat; // offset 0x000c0808 extern struct MATRIX leaf_mat; // offset 0x000c1cc8 extern struct TRI_POINT debris_rot1[32]; // offset 0x000c09e8 extern struct TRI_POINT debris_rot2[32]; // offset 0x000c0b68 extern struct TRI_POINT debris_rot3[32]; // offset 0x000c0ce8 extern struct TRI_POINT leaf_rot[32]; // offset 0x000c1d48 extern struct TRI_POINT litter_rot[32]; // offset 0x000c0858 extern struct LEAF leaf[50]; // offset 0x000c1f48 extern struct SMOKE smoke[80]; // offset 0x000bf908 extern struct RAIN_TYPE gRain[180]; // offset 0x000c2b28 extern struct TEXTURE_DETAILS moon_texture; // offset 0x000c1c88 extern short gRainAlloc[180]; // offset 0x000c29c0 extern short debris_alloc[60]; // offset 0x000c1bb0 extern short smoke_alloc[80]; // offset 0x000c19e0 extern short leaf_alloc[50]; // offset 0x000bf860 extern struct POLYFT4 gPoolPoly; // offset 0x000c2968 extern int NewLamp[21]; // offset 0x000c1ab0 extern struct LAMP_STREAK Known_Lamps[21]; // offset 0x000c0e88 // 52 functions /* * Offset 0x32C10, from D:\driver2\game\C\DEBRIS.C (lines 790..1028) * Stack frame base $sp, size 848 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ PlacePoolForCar(struct _CAR_DATA *cp /*$s4*/, struct CVECTOR *col /*stack 4*/, int front /*$a2*/) { // line 1, offset 0x32c10 int car_road_height; // $s2 struct SVECTOR s[27]; // stack offset -832 struct SVECTOR *ptr; // $s1 struct SVECTOR sout[27]; // stack offset -616 struct VECTOR s1[12]; // stack offset -400 struct VECTOR *ptr1; // $s0 struct POLY_FT4 *poly; // $t0 struct MATRIX final_matrix; // stack offset -208 struct VECTOR averagepos; // stack offset -176 int in_car; // $t0 int z; // stack offset -48 int sub_level; // $fp int count; // $s3 struct VECTOR mid_position; // stack offset -160 { // line 23, offset 0x32cec short farz; // $a2 short nearz; // $a0 } // line 108, offset 0x32ec0 { // line 114, offset 0x32ed0 } // line 130, offset 0x32f38 { // line 147, offset 0x32fb4 struct VECTOR toss; // stack offset -144 int temp_y; // $a1 } // line 161, offset 0x3306c { // line 164, offset 0x330a4 long n[4]; // stack offset -128 } // line 170, offset 0x3316c { // line 177, offset 0x331f0 int count; // $s2 { // line 206, offset 0x333c4 long z[15]; // stack offset -112 { // line 216, offset 0x3341c char *VertIdx; // $s0 { // line 228, offset 0x3349c } // line 233, offset 0x3352c } // line 234, offset 0x3352c } // line 235, offset 0x3353c } // line 237, offset 0x3353c } // line 239, offset 0x33544 /* * Offset 0x33574, from D:\driver2\game\C\DEBRIS.C (lines 1327..1427) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ AddLeaf(struct VECTOR *Position /*$s1*/, int num_leaves /*$s5*/, int Type /*$s3*/) { // line 1, offset 0x33574 struct LEAF *myleaf; // $a1 int num; // $v1 int loop; // $s2 int temprand; // $s0 { // line 16, offset 0x335d8 { // line 74, offset 0x336e4 } // line 79, offset 0x336f8 { // line 83, offset 0x3370c int temp; // $v0 } // line 83, offset 0x3370c { // line 89, offset 0x33738 int temp; // $v0 } // line 92, offset 0x3374c } // line 93, offset 0x3374c } // line 101, offset 0x33784 /* * Offset 0x337AC, from D:\driver2\game\C\DEBRIS.C (lines 1493..1554) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitDebrisNames() { // line 2, offset 0x337ac } // line 62, offset 0x33b9c /* * Offset 0x33B9C, from D:\driver2\game\C\DEBRIS.C (lines 1564..1673) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ InitDebris() { // line 2, offset 0x33b9c int loop; // $v1 int count; // $s0 struct TPAN texnum; // stack offset -88 struct TRI_POINT_LONG temptri; // stack offset -80 struct BVECTOR *debrisPTR; // $a0 { // line 37, offset 0x33cf4 { // line 41, offset 0x33d10 } // line 46, offset 0x33d80 } // line 63, offset 0x33e2c } // line 110, offset 0x33fa8 /* * Offset 0x33FA8, from D:\driver2\game\C\DEBRIS.C (lines 1753..1806) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ AddGroundDebris() { // line 2, offset 0x33fa8 struct VECTOR Position; // stack offset -48 int seed; // $s0 int number; // $v0 int count; // $s3 int xbound; // $a1 int zbound; // $a0 int type; // $a2 struct CELL_OBJECT *cop; // $s1 struct MODEL *model; // $s2 { // line 30, offset 0x3407c } // line 51, offset 0x34100 } // line 54, offset 0x34110 /* * Offset 0x34138, from D:\driver2\game\C\DEBRIS.C (lines 1815..1876) * Stack frame base $sp, size 144 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawSmashable_sprites() { // line 2, offset 0x34138 int count; // $s6 struct VECTOR pos; // stack offset -128 struct DAMAGED_OBJECT *dam; // $s2 { // line 11, offset 0x341a4 struct MATRIX object_matrix; // stack offset -112 struct MATRIX spritematrix; // stack offset -80 struct MATRIX *finalmatrix; // $s0 struct MODEL *model; // $s3 { // line 46, offset 0x3435c unsigned long colours; // $a0 } // line 55, offset 0x343b4 } // line 60, offset 0x343e8 } // line 62, offset 0x34424 /* * Offset 0x34424, from D:\driver2\game\C\DEBRIS.C (lines 1925..2038) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ AddSmallStreetLight(struct CELL_OBJECT *cop /*$s1*/, int x /*$s3*/, int y /*$s6*/, int z /*$s4*/, int type /*stack 16*/, int type /*$v1*/) { // line 1, offset 0x34424 struct VECTOR v1; // stack offset -112 struct VECTOR v2; // stack offset -96 struct VECTOR v3; // stack offset -80 struct SVECTOR pos; // stack offset -64 struct CVECTOR col; // stack offset -56 struct CVECTOR col1; // stack offset -48 int count; // $v1 short angle; // $s2 int halo_size; // $fp int size; // $s5 int LampId; // $s7 struct DAMAGED_LAMP *dam; // $s0 { // line 36, offset 0x344ec } // line 42, offset 0x34540 } // line 114, offset 0x34828 /* * Offset 0x34858, from D:\driver2\game\C\DEBRIS.C (lines 2049..2174) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ AddLightEffect(struct CELL_OBJECT *cop /*$t0*/, int x /*$t2*/, int y /*$a2*/, int z /*$a3*/, int type /*stack 16*/, int colour /*stack 20*/, char type /*$t3*/, char colour /*$t1*/) { // line 1, offset 0x34858 struct VECTOR v1; // stack offset -88 struct VECTOR v2; // stack offset -72 struct VECTOR v3; // stack offset -56 struct SVECTOR pos; // stack offset -40 struct CVECTOR col; // stack offset -32 struct CVECTOR col1; // stack offset -24 short angle; // $v1 int size; // $s1 } // line 126, offset 0x34c6c /* * Offset 0x34C6C, from D:\driver2\game\C\DEBRIS.C (lines 2178..2197) * Stack frame base $sp, size 0 */ void /*$ra*/ PreLampStreak() { // line 2, offset 0x34c6c int count; // $a3 } // line 20, offset 0x34d1c /* * Offset 0x34D1C, from D:\driver2\game\C\DEBRIS.C (lines 2230..2244) * Stack frame base $sp, size 0 */ int /*$ra*/ damage_lamp(struct CELL_OBJECT *cop /*$a2*/) { // line 1, offset 0x34d1c int count; // $v1 int old_damage; // $v0 } // line 15, offset 0x34dac /* * Offset 0x34DAC, from D:\driver2\game\C\DEBRIS.C (lines 2255..2317) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ damage_object(struct CELL_OBJECT *cop /*$s1*/, struct VECTOR *velocity /*$a1*/) { // line 1, offset 0x34dac struct DAMAGED_OBJECT *dam; // $s0 { // line 1, offset 0x34dac struct PACKED_CELL_OBJECT *pcop; // $a0 } // line 1, offset 0x34dac } // line 63, offset 0x34f64 /* * Offset 0x34F64, from D:\driver2\game\C\DEBRIS.C (lines 2326..2415) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ AddTrafficLight(struct CELL_OBJECT *cop /*$t4*/, int x /*$t6*/, int y /*$t7*/, int z /*$a3*/, int flag /*stack 16*/, int yang /*stack 20*/, short flag /*$a0*/, short yang /*$t5*/) { // line 1, offset 0x34f64 struct CVECTOR a; // stack offset -80 struct CVECTOR b; // stack offset -72 struct CVECTOR c; // stack offset -64 struct VECTOR v1; // stack offset -56 struct VECTOR v2; // stack offset -40 int lDiffAnglesX; // $s2 int lDiffAnglesY; // $s1 int AbsX; // $a2 int AbsY; // $a1 int tempfade; // $v0 { // line 1, offset 0x34f64 int c; // $t1 int s; // $t2 } // line 1, offset 0x34f64 } // line 90, offset 0x352b0 /* * Offset 0x352CC, from D:\driver2\game\C\DEBRIS.C (lines 2462..2513) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ ShowCarlight(struct SVECTOR *v1 /*$s6*/, struct _CAR_DATA *cp /*$s3*/, struct CVECTOR *col /*$s1*/, short size /*$s5*/, struct TEXTURE_DETAILS *texture /*stack 16*/, int flag /*stack 20*/, char flag /*$s4*/) { // line 1, offset 0x352cc int CarLightFade; // $a1 struct VECTOR v1t; // stack offset -72 struct VECTOR v1l; // stack offset -56 struct CVECTOR flareCol; // stack offset -40 int front; // $a0 } // line 52, offset 0x35534 /* * Offset 0x3555C, from D:\driver2\game\C\DEBRIS.C (lines 2523..2574) * Stack frame base $sp, size 40 */ void /*$ra*/ ShowLight1(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short size /*$a2*/, struct TEXTURE_DETAILS *texture /*$a3*/) { // line 1, offset 0x3555c struct SVECTOR vert[4]; // stack offset -40 struct POLY_FT4 *poly; // $t0 int z; // stack offset -8 } // line 52, offset 0x35748 /* * Offset 0x35750, from D:\driver2\game\C\DEBRIS.C (lines 2579..2793) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ ShowLight(struct VECTOR *v1 /*$s0*/, struct CVECTOR *col /*$s3*/, short size /*$s4*/, struct TEXTURE_DETAILS *texture /*$s2*/) { // line 1, offset 0x35750 struct SVECTOR vert[4]; // stack offset -88 struct POLY_FT4 *poly; // $s1 int z; // stack offset -40 int index; // $a1 int tail_width; // $s5 { // line 65, offset 0x35a54 int loop; // $a1 } // line 71, offset 0x35aac { // line 75, offset 0x35ad4 struct POLY_G4 *poly1; // $s0 int dx; // $a0 int dy; // $v0 int angle; // $v0 int width; // $s2 int c; // $a0 int s; // $a2 int length; // $v0 struct SVECTOR tail; // stack offset -56 struct SVECTOR head; // stack offset -48 } // line 130, offset 0x35eb8 { // line 148, offset 0x35f68 int loop; // $a3 } // line 154, offset 0x35fe8 { // line 158, offset 0x36024 struct POLY_G4 *poly1; // $s0 int dx; // $a2 int dy; // $a1 int angle; // $v0 int width; // $s1 int c; // $a2 int s; // $a1 int length; // $v0 struct SVECTOR tail; // stack offset -56 struct SVECTOR head; // stack offset -48 } // line 213, offset 0x36408 } // line 215, offset 0x36408 /* * Offset 0x3642C, from D:\driver2\game\C\DEBRIS.C (lines 2804..2857) * Stack frame base $sp, size 40 */ void /*$ra*/ ShowGroundLight(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short size /*$a2*/) { // line 1, offset 0x3642c struct SVECTOR vert[4]; // stack offset -40 struct POLY_FT4 *poly; // $t0 int z; // stack offset -8 } // line 54, offset 0x36680 /* * Offset 0x36688, from D:\driver2\game\C\DEBRIS.C (lines 2869..2932) * Stack frame base $sp, size 40 */ void /*$ra*/ RoundShadow(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short size /*$a2*/) { // line 1, offset 0x36688 struct SVECTOR vert[4]; // stack offset -40 struct POLY_FT4 *poly; // $t0 int z; // stack offset -8 } // line 64, offset 0x368d0 /* * Offset 0x368D8, from D:\driver2\game\C\DEBRIS.C (lines 2945..3015) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ShowFlare(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$s2*/, short size /*$a2*/, int rotation /*$a3*/) { // line 1, offset 0x368d8 struct SVECTOR vert[4]; // stack offset -96 struct POLY_FT4 *poly; // $t0 struct SVECTOR direction; // stack offset -64 struct MATRIX temp_matrix; // stack offset -56 int z; // stack offset -24 } // line 71, offset 0x36b54 /* * Offset 0x36B6C, from D:\driver2\game\C\DEBRIS.C (lines 3029..3086) * Stack frame base $sp, size 64 */ void /*$ra*/ DisplayWater(struct SMOKE *smoke /*$a0*/) { // line 1, offset 0x36b6c struct POLY_FT4 *poly; // $t1 struct VECTOR v; // stack offset -64 struct SVECTOR vert[4]; // stack offset -48 int size; // $t1 int z; // $v0 int z1; // stack offset -16 int z2; // stack offset -12 int z3; // stack offset -8 int z4; // stack offset -4 } // line 58, offset 0x36e18 /* * Offset 0x36E18, from D:\driver2\game\C\DEBRIS.C (lines 3102..3169) * Stack frame base $sp, size 40 */ void /*$ra*/ DisplaySpark(struct SMOKE *spark /*$t1*/) { // line 1, offset 0x36e18 int z; // stack offset -8 struct SVECTOR v[3]; // stack offset -40 struct SVECTOR TrailPos; // stack offset -16 struct POLY_G3 *poly; // $t0 { // line 33, offset 0x36f30 unsigned char *col; // $a0 } // line 48, offset 0x36fe0 } // line 68, offset 0x37150 /* * Offset 0x37158, from D:\driver2\game\C\DEBRIS.C (lines 3182..3214) * Stack frame base $sp, size 0 */ void /*$ra*/ GetSmokeDrift(struct VECTOR *Wind /*$t2*/) { // line 1, offset 0x37158 static int SinTabIndex1; // offset 0x158 static int SinTabIndex2; // offset 0x15c static int SinTabIndex3; // offset 0x160 static int WindMagnitude; // offset 0x164 static int SinX; // offset 0x0 static int CosX; // offset 0x4 } // line 33, offset 0x37250 /* * Offset 0x37250, from D:\driver2\game\C\DEBRIS.C (lines 3227..3284) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ Setup_Debris(struct VECTOR *ipos /*$fp*/, struct VECTOR *ispeed /*$s6*/, int num_debris /*$s7*/, int type /*$s5*/) { // line 1, offset 0x37250 struct DEBRIS *mydebris; // $s1 int num; // $v1 int loop; // $s4 int vx; // $s2 int vy; // $s3 int vz; // $a2 int seed; // $s0 int col; // $a3 { // line 18, offset 0x372f4 } // line 32, offset 0x373b4 } // line 58, offset 0x37444 /* * Offset 0x37474, from D:\driver2\game\C\DEBRIS.C (lines 3296..3462) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ Setup_Smoke(struct VECTOR *ipos /*$s1*/, int start_w /*$s3*/, int end_w /*$s4*/, int SmokeType /*$s7*/, int WheelSpeed /*stack 16*/, struct VECTOR *Drift /*stack 20*/, int Exhaust /*stack 24*/, int WheelSpeed /*$s6*/, struct VECTOR *Drift /*$fp*/) { // line 1, offset 0x37474 struct SMOKE *mysmoke; // $s0 int num; // $v1 { // line 39, offset 0x37594 } // line 39, offset 0x37594 { // line 76, offset 0x376a0 } // line 76, offset 0x376a0 { // line 86, offset 0x376ec } // line 91, offset 0x37728 { // line 127, offset 0x3780c } // line 138, offset 0x37884 } // line 167, offset 0x37920 /* * Offset 0x37950, from D:\driver2\game\C\DEBRIS.C (lines 3475..3549) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ Setup_Sparks(struct VECTOR *ipos /*$fp*/, struct VECTOR *ispeed /*$s7*/, int num_sparks /*stack 8*/, char SparkType /*$s5*/) { // line 1, offset 0x37950 struct SMOKE *mysmoke; // $s2 int num; // $s0 int loop; // $s4 int vx; // $s1 int vy; // $s0 int vz; // $v1 int randtemp; // $v0 { // line 12, offset 0x379a0 } // line 74, offset 0x37ad0 } // line 75, offset 0x37ae4 /* * Offset 0x37B14, from D:\driver2\game\C\DEBRIS.C (lines 3564..3647) * Stack frame base $sp, size 56 */ void /*$ra*/ DisplayDebris(struct DEBRIS *debris /*$t2*/, char type /*$t3*/) { // line 1, offset 0x37b14 int pos; // $a1 int z; // stack offset -8 struct SVECTOR v[4]; // stack offset -56 struct TRI_POINT *tv; // $t1 struct VECTOR debrisvec; // stack offset -24 struct POLY_FT3 *poly; // $t0 struct POLY_GT4 *poly1; // $t0 { // line 43, offset 0x37d94 unsigned long cbgr; // $v1 } // line 54, offset 0x37e10 } // line 84, offset 0x38000 /* * Offset 0x38008, from D:\driver2\game\C\DEBRIS.C (lines 3659..3966) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ HandleDebris() { // line 2, offset 0x38008 int count; // $s0 int i; // $s3 struct DEBRIS *lpDebris; // $s1 struct SMOKE *smokeptr; // $s0 struct VECTOR dummy; // stack offset -80 struct LEAF *lpLeaf; // $s1 int Height; // $v0 int SinX; // $s2 int CosX; // $v1 struct VECTOR Drift; // stack offset -64 { // line 193, offset 0x3841c int offshore; // $s1 struct ROUTE_DATA routeData; // stack offset -48 } // line 205, offset 0x384b4 { // line 294, offset 0x386f0 static int weather_level; // offset 0x168 } // line 307, offset 0x38750 } // line 308, offset 0x3877c /* * Offset 0x3877C, from D:\driver2\game\C\DEBRIS.C (lines 3983..4114) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DisplaySmoke(struct SMOKE *smoke /*$s0*/) { // line 1, offset 0x3877c struct POLY_FT4 *poly; // $t0 struct VECTOR v; // stack offset -80 struct SVECTOR smokemesh[4]; // stack offset -64 int x; // $s2 int negx; // $s1 int z; // stack offset -32 int smoke_z_offset; // $s3 int tmode; // $a3 int size; // $v0 int centrex; // $a1 int centrey; // $v1 { // line 58, offset 0x38970 char red; // $a0 char green; // $a1 char blue; // $v1 } // line 63, offset 0x3899c } // line 132, offset 0x38c98 /* * Offset 0x38CB4, from D:\driver2\game\C\DEBRIS.C (lines 4118..4140) * Stack frame base $sp, size 0 */ void /*$ra*/ add_haze(int top_col /*$a0*/, int bot_col /*$a1*/, short ot_pos /*$a2*/) { // line 1, offset 0x38cb4 struct TILE *polys; // $a1 } // line 23, offset 0x38e00 /* * Offset 0x38E08, from D:\driver2\game\C\DEBRIS.C (lines 4208..4299) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawRainDrops() { // line 2, offset 0x38e08 struct RAIN_TYPE *RainPtr; // $s0 struct POLY_GT3 *poly; // $a3 int Count; // $s2 int z; // stack offset -48 struct SVECTOR v[3]; // stack offset -88 struct VECTOR drift; // stack offset -64 int tpage; // $fp int clut; // $s7 int col; // $s1 { // line 51, offset 0x38fa4 int notfirst; // $a1 } // line 88, offset 0x39158 } // line 92, offset 0x3919c /* * Offset 0x3919C, from D:\driver2\game\C\DEBRIS.C (lines 4413..4476) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ AddRainDrops() { // line 2, offset 0x3919c struct SVECTOR v; // stack offset -48 struct RAIN_TYPE *RainPtr; // $a2 int RainIndex; // $s0 int RainNo; // $s1 int first; // $s3 static unsigned long rand; // offset 0x8 { // line 40, offset 0x39388 int depth; // $v0 } // line 43, offset 0x393b0 { // line 53, offset 0x393e4 struct ROUTE_DATA routeData; // stack offset -40 } // line 61, offset 0x39434 } // line 64, offset 0x39444 /* * Offset 0x39468, from D:\driver2\game\C\DEBRIS.C (lines 4489..4546) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DisplaySplashes() { // line 2, offset 0x39468 int SplashNo; // $s4 int SplashFrac; // $v0 struct VECTOR CamGnd; // stack offset -96 struct VECTOR Gnd1; // stack offset -80 struct VECTOR Gnd2; // stack offset -64 struct VECTOR Position; // stack offset -48 struct CVECTOR col; // stack offset -32 static unsigned long rand; // offset 0x170 int d1; // $a0 int d2; // $a2 } // line 58, offset 0x397a0 /* * Offset 0x397C0, from D:\driver2\game\C\DEBRIS.C (lines 4550..4601) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DisplayLightReflections(struct VECTOR *v1 /*$s1*/, struct CVECTOR *col /*$s3*/, short size /*$a2*/, struct TEXTURE_DETAILS *texture /*$s2*/) { // line 1, offset 0x397c0 struct SVECTOR vert[4]; // stack offset -80 struct POLY_FT4 *poly; // $a1 struct CVECTOR thiscol; // stack offset -48 int z; // stack offset -40 int tpage; // $s5 int clut; // $s4 } // line 52, offset 0x39a30 /* * Offset 0x39A54, from D:\driver2\game\C\DEBRIS.C (lines 1686..1691) * Stack frame base $sp, size 0 */ int /*$ra*/ AllocateDebris() { } /* * Offset 0x39A90, from D:\driver2\game\C\DEBRIS.C (lines 1297..1301) * Stack frame base $sp, size 0 */ int /*$ra*/ AllocateLeaf() { } /* * Offset 0x39ACC, from D:\driver2\game\C\DEBRIS.C (lines 1719..1724) * Stack frame base $sp, size 0 */ int /*$ra*/ AllocateSmoke() { } /* * Offset 0x39B08, from D:\driver2\game\C\DEBRIS.C (lines 2200..2216) * Stack frame base $sp, size 0 */ int /*$ra*/ find_lamp_streak(int LampId /*$a0*/) { // line 1, offset 0x39b08 int count; // $a1 } // line 17, offset 0x39b78 /* * Offset 0x39B78, from D:\driver2\game\C\DEBRIS.C (lines 4607..4630) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DoLightning() { // line 2, offset 0x39b78 } // line 24, offset 0x39c58 /* * Offset 0x39C68, from D:\driver2\game\C\DEBRIS.C (lines 2447..2451) * Stack frame base $sp, size 0 */ void /*$ra*/ FindCarLightFade(struct MATRIX *carToCamera /*$a0*/) { // line 2, offset 0x39c68 int zz; // $v0 } // line 5, offset 0x39c90 /* * Offset 0x39C90, from D:\driver2\game\C\DEBRIS.C (lines 2428..2436) * Stack frame base $sp, size 8 */ void /*$ra*/ InitFXPos(struct VECTOR *vec /*$a0*/, struct SVECTOR *svec /*$a1*/, struct _CAR_DATA *cp /*$a2*/) { // line 1, offset 0x39c90 struct SVECTOR svectmp; // stack offset -8 } // line 9, offset 0x39d68 /* * Offset 0x39D68, from D:\driver2\game\C\DEBRIS.C (lines 1704..1705) * Stack frame base $sp, size 0 */ void /*$ra*/ ReleaseDebris(short num /*$a0*/) { } /* * Offset 0x39D8C, from D:\driver2\game\C\DEBRIS.C (lines 1313..1314) * Stack frame base $sp, size 0 */ void /*$ra*/ ReleaseLeaf(short num /*$a0*/) { } /* * Offset 0x39DB0, from D:\driver2\game\C\DEBRIS.C (lines 4190..4191) * Stack frame base $sp, size 0 */ void /*$ra*/ ReleaseRainDrop(int RainIndex /*$a0*/) { } /* * Offset 0x39DD4, from D:\driver2\game\C\DEBRIS.C (lines 1737..1738) * Stack frame base $sp, size 0 */ void /*$ra*/ ReleaseSmoke(short num /*$a0*/) { } /* * Offset 0x39DF8, from D:\driver2\game\C\DEBRIS.C (lines 4152..4162) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupRain() { // line 2, offset 0x39df8 } // line 11, offset 0x39e54 /* * Offset 0x39E54, from D:\driver2\game\C\DEBRIS.C (lines 1437..1480) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SwirlLeaves(struct _CAR_DATA *cp /*$a0*/) { // line 1, offset 0x39e54 int count; // $s2 struct LEAF *lpLeaf; // $s0 int XDiff; // $v0 int ZDiff; // $a1 struct VECTOR *CarPos; // $s1 int WheelSpeed; // $a1 { // line 38, offset 0x39f60 } // line 40, offset 0x39f84 } // line 44, offset 0x39f90 /* * Offset 0x39FA8, from D:\driver2\game\C\DEBRIS.C (lines 4725..4741) * Stack frame base $sp, size 0 */ int /*$ra*/ GetDebrisColour(struct _CAR_DATA *cp /*$a0*/) { // line 1, offset 0x39fa8 int car_model; // $v1 int palette; // $a0 } // line 17, offset 0x3a000 /* * Offset 0x3A000, from D:\driver2\game\C\DEBRIS.C (lines 4651..4670) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DoWeather(int weather /*$a0*/) { } /* * Offset 0x3A0BC, from D:\driver2\game\C\DEBRIS.C (lines 4635..4635) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitThunder() { // line 1, offset 0x3a0bc } // line 1, offset 0x3a120 /* * Offset 0x3A120, from D:\driver2\game\C\DEBRIS.C (lines 4636..4636) * Stack frame base $sp, size 0 */ void /*$ra*/ RequestThunder() { } /* * Offset 0x3A144, from D:\driver2\game\C\DEBRIS.C (lines 4638..4646) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ DoThunder() { // line 2, offset 0x3a144 } // line 9, offset 0x3a224 /* * Offset 0x3A234, from D:\driver2\game\C\DEBRIS.C (lines 1886..1913) * Stack frame base $sp, size 0 */ int /*$ra*/ MoveSmashable_object() { // line 2, offset 0x3a234 int count; // $a3 struct DAMAGED_OBJECT *dam; // $a1 { // line 10, offset 0x3a258 int groundlevel; // $v0 } // line 25, offset 0x3a2c0 } // line 28, offset 0x3a2d4 /* * Offset 0x3A2D4, from D:\driver2\game\C\DEBRIS.C (lines 4173..4177) * Stack frame base $sp, size 0 */ int /*$ra*/ AllocateRainDrop() { } Source file(s) D:\driver2\game\C\DENTING.C+D:\driver2\game\DENTING.C, object file obj\denting.OBJ overlay id // 64 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct DENTUVS { char u3; // size=0, offset=0 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct HUBCAP { int Present[4]; // size=16, offset=0 struct VECTOR Offset[4]; // size=64, offset=16 struct MATRIX Orientation; // size=32, offset=80 struct MATRIX LocalOrientation; // size=32, offset=112 struct VECTOR Position; // size=16, offset=144 struct VECTOR Direction; // size=16, offset=160 float Height; // size=0, offset=176 int Duration; // size=0, offset=180 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 94 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct TEX_INFO TEX_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct DENTUVS DENTUVS; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct HUBCAP HUBCAP; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct UV UV; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct DB DB; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct MVERTEX SV5x5[5][5]; // 0 labels // 11 external declarations extern char *DentingFiles[4]; // offset 0x0009c2f4 extern int gDoShinyCars; // offset 0x000aa394 extern long gHubcapTime; // offset 0x000aac88 extern struct HUBCAP gHubcap; // offset 0x000c9400 extern struct DENTUVS gTempHDCarUVDump[20][255]; // offset 0x000c9fa8 extern struct DENTUVS gTempLDCarUVDump[20][134]; // offset 0x000cb398 extern struct SVECTOR gTempCarVertDump[20][132]; // offset 0x000c4180 extern unsigned char gCarDamageZoneVerts[5][6][50]; // offset 0x000c99b8 extern unsigned char gHDCarDamageZonePolys[5][6][70]; // offset 0x000c3948 extern unsigned char gHDCarDamageLevels[5][255]; // offset 0x000c94b8 extern struct VECTOR ShadowPos; // offset 0x000c9f98 // 9 functions /* * Offset 0x3A310, from D:\driver2\game\C\DENTING.C (lines 288..427) * Stack frame base $sp, size 24 * Saved registers at offset -8: s0 s1 s2 s3 s4 */ void /*$ra*/ DentCar(struct _CAR_DATA *cp /*$t7*/) { // line 1, offset 0x3a310 struct SVECTOR *VertPtr; // $t0 int MaxDamage; // $s0 unsigned char VertIndex; // $v0 unsigned char PolyIndex; // $v0 struct DENTUVS *dentptr; // $t1 unsigned char *DamPtr; // $a2 int model; // $t5 int Poly; // $a1 int Damage; // $v1 int Zone; // $a3 int VertNo; // $a2 short *tempDamage; // $t1 struct SVECTOR *DamVertPtr; // $a3 struct SVECTOR *CleanVertPtr; // $a1 struct MODEL *pCleanModel; // $t3 { // line 133, offset 0x3a690 } // line 135, offset 0x3a690 } // line 140, offset 0x3a6e4 /* * Offset 0x3A6E4, from D:\driver2\game\C\DENTING.C (lines 458..533) * Stack frame base $sp, size 0 */ void /*$ra*/ CreateDentableCar(struct _CAR_DATA *cp /*$t2*/) { // line 1, offset 0x3a6e4 struct DENTUVS *dentptr; // $a3 int Zone; // $v1 int count; // $a2 int model; // $t3 { // line 20, offset 0x3a710 struct SVECTOR *dst; // $a2 struct SVECTOR *src; // $a3 int count; // $t0 { // line 26, offset 0x3a748 int x; // $v0 int y; // $v1 int z; // $a0 } // line 26, offset 0x3a748 } // line 35, offset 0x3a770 } // line 76, offset 0x3a874 /* * Offset 0x3A874, from D:\driver2\game\C\DENTING.C (lines 549..572) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitHubcap() { // line 3, offset 0x3a874 } // line 24, offset 0x3a8f8 /* * Offset 0x3A8F8, from D:\driver2\game\C\DENTING.C (lines 600..693) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ LoseHubcap(int Hubcap /*$s3*/, int Velocity /*$a1*/) { // line 1, offset 0x3a8f8 struct _CAR_DATA *car_data_pt; // $s1 struct SVECTOR InitialLocalAngle; // stack offset -64 { // line 71, offset 0x3aa84 struct VECTOR R; // stack offset -56 struct VECTOR VW; // stack offset -40 long AY; // $t0 } // line 81, offset 0x3aae0 } // line 94, offset 0x3ab2c /* * Offset 0x3AB4C, from D:\driver2\game\C\DENTING.C (lines 706..804) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ MoveHubcap() { // line 2, offset 0x3ab4c struct _CAR_DATA *car_data_pt; // $a1 struct VECTOR Position; // stack offset -80 struct MATRIX Orientation; // stack offset -64 struct CVECTOR col; // stack offset -32 int VelocityMagnitude; // $s0 int CurrentMapHeight; // $a0 int savecombo; // $s0 { // line 25, offset 0x3abf8 } // line 28, offset 0x3ac18 { // line 32, offset 0x3ac28 } // line 35, offset 0x3ac58 { // line 56, offset 0x3aca4 } // line 74, offset 0x3ad24 } // line 99, offset 0x3ae44 /* * Offset 0x3AE60, from D:\driver2\game\C\DENTING.C (lines 838..867) * Stack frame base $sp, size 16 * Saved registers at offset -4: s0 s1 s2 s3 */ void /*$ra*/ ProcessDentLump(char *lump_ptr /*$t2*/, int lump_size /*$a1*/) { // line 1, offset 0x3ae60 int i; // $a3 int model; // $a0 int offset; // $a0 } // line 30, offset 0x3b1c0 /* * Offset 0x3B1C0, from D:\driver2\game\C\DENTING.C (lines 267..271) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitialiseDenting() { } /* * Offset 0x3B1F0, from D:\driver2\game\C\DENTING.C (lines 815..829) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ LoadDenting(int level /*$a0*/) { // line 2, offset 0x3b1f0 } // line 15, offset 0x3b240 /* * Offset 0x3B240, from D:\driver2\game\C\DENTING.C (lines 877..910) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupSpecDenting(char *loadbuffer /*$a0*/) { // line 1, offset 0x3b240 char *from; // $a0 char *to; // $v1 char *limit; // $a1 } // line 34, offset 0x3b2e4 Source file(s) D:\driver2\game\C\DIRECTOR.C+D:\driver2\game\DIRECTOR.C, object file obj\director.obj overlay id // 76 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct LINE_F2 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct PLAYBACKCAMERA { struct VECTOR_NOPAD position; // size=12, offset=0 struct SVECTOR angle; // size=8, offset=12 int FrameCnt; // size=0, offset=20 short CameraPosvy; // size=0, offset=24 short gCameraDistance; // size=0, offset=26 short gCameraMaxDistance; // size=0, offset=28 short gCameraAngle; // size=0, offset=30 char cameraview; // size=0, offset=32 char next; // size=0, offset=33 char prev; // size=0, offset=34 char idx; // size=0, offset=35 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct ROUTE_DATA { short type; // size=0, offset=0 short height; // size=0, offset=2 short objectAngle; // size=0, offset=4 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct REPLAY_ICON { short x; // size=0, offset=0 short y; // size=0, offset=2 struct TEXTURE_DETAILS *texture; // size=14, offset=4 char *TextPtr; // size=0, offset=8 short tx; // size=0, offset=12 short ty; // size=0, offset=14 }; // 101 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_G4 POLY_G4; typedef struct LINE_F2 LINE_F2; typedef struct SPRT SPRT; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct PLAYBACKCAMERA PLAYBACKCAMERA; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct ROUTE_DATA ROUTE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct _EVENT EVENT; typedef struct REPLAY_ICON REPLAY_ICON; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 36 external declarations static struct REPLAY_ICON replay_icons[23]; // offset 0x0009c304 static char menu0[2]; // offset 0x0009c474 static char menu1[10]; // offset 0x0009c478 static char menu2[5]; // offset 0x0009c484 static char menu3[2]; // offset 0x0009c48c static char menu4[2]; // offset 0x0009c490 static char menu5[5]; // offset 0x0009c494 static char menu6[7]; // offset 0x0009c49c extern int MIN_TRIPOD_CAMERA_HEIGHT; // offset 0x000aa3e4 extern int EditMode; // offset 0x000aa3e8 extern int SetFastForward; // offset 0x000aa3ec extern struct PLAYBACKCAMERA *NextChange; // offset 0x000aa3f0 extern struct PLAYBACKCAMERA *ThisChange; // offset 0x000aa3f4 extern struct PLAYBACKCAMERA *LastChange; // offset 0x000aa3f8 extern int editing_existing_camera; // offset 0x000aa3fc extern int FastForward; // offset 0x000aa400 extern int ClearCameras; // offset 0x000aa404 extern int attract_number; // offset 0x000aa408 extern int FastForwardCameraCnt; // offset 0x000aa40c extern int time_taken; // offset 0x000aaca0 extern int quick_replay; // offset 0x000aacb8 extern int AutoDirect; // offset 0x000aaccc extern int ReplayContinue; // offset 0x000aacc4 extern struct PLAYBACKCAMERA *PlaybackCamera; // offset 0x000aacc0 extern int frame_advance_count; // offset 0x000aacc8 extern int menuactive; // offset 0x000aaca4 extern int MenuOffset; // offset 0x000aac9c extern char tracking_car; // offset 0x000aacb4 extern short PlayerWaypoints; // offset 0x000aaca8 extern int PlayMode; // offset 0x000aacbc extern int CursorX; // offset 0x000aacac extern int CursorY; // offset 0x000aacb0 extern char CameraChanged; // offset 0x000aacb5 static int cammapht2; // offset 0x000aac94 static int mapstuff; // offset 0x000aac98 static char GreyIcons[24]; // offset 0x000cbe10 // 24 functions /* * Offset 0x3B2E4, from D:\driver2\game\C\DIRECTOR.C (lines 513..571) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ EditCamera(int CameraCnt /*$a0*/) { // line 2, offset 0x3b2e4 int count; // $t0 { // line 30, offset 0x3b414 int prev; // $a2 int next; // $v1 } // line 57, offset 0x3b51c } // line 59, offset 0x3b548 /* * Offset 0x3B548, from D:\driver2\game\C\DIRECTOR.C (lines 574..631) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ RecordCamera(int CameraCnt /*$s0*/) { // line 1, offset 0x3b548 struct PLAYBACKCAMERA *TempChange; // $a1 } // line 58, offset 0x3b794 /* * Offset 0x3B794, from D:\driver2\game\C\DIRECTOR.C (lines 658..706) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CheckCameraChange(int CameraCnt /*$s0*/) { } /* * Offset 0x3B8C8, from D:\driver2\game\C\DIRECTOR.C (lines 731..791) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ IsMovingCamera(struct PLAYBACKCAMERA *lastcam /*$t3*/, struct PLAYBACKCAMERA *nextcam /*$t0*/, int cameracnt /*$a2*/) { // line 1, offset 0x3b8c8 struct PLAYBACKCAMERA cam; // stack offset -56 long xdist; // $t5 long ydist; // $t6 long zdist; // $t4 long xangle; // $a3 long yangle; // $t1 long zangle; // $t2 int s; // $a0 int e; // $v1 int f; // $t8 int t; // $a2 int nextcview; // $a0 } // line 61, offset 0x3bba8 /* * Offset 0x3BBA8, from D:\driver2\game\C\DIRECTOR.C (lines 794..926) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 fp */ void /*$ra*/ CameraBar(int CameraCnt /*stack 0*/) { // line 1, offset 0x3bba8 struct POLY_G4 *camera; // $a2 struct LINE_F2 *bar; // $t2 int x; // $a2 int min_x; // $t1 int max_x; // $t0 int min_y; // $s3 char red; // $s0 char green; // $s4 char blue; // $fp int bar_x; // $s1 int first; // stack offset -48 int last; // $s7 unsigned long idx; // $t9 } // line 133, offset 0x3c184 /* * Offset 0x3C1B0, from D:\driver2\game\C\DIRECTOR.C (lines 966..1095) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ ShowIcons(char *menu /*$s3*/, int selected /*stack 4*/, int x_offset /*$s7*/) { // line 1, offset 0x3c1b0 static int FlashCnt; // offset 0x0 struct REPLAY_ICON *IconPtr; // $s0 struct SPRT *icon; // $a2 int count; // $s6 { // line 61, offset 0x3c340 struct TEXTURE_DETAILS *Icon_texture; // $s1 int min_x; // $v1 int min_y; // $a0 { // line 69, offset 0x3c364 } // line 71, offset 0x3c384 { // line 82, offset 0x3c3e4 int ramp; // $a0 } // line 93, offset 0x3c448 } // line 100, offset 0x3c470 } // line 130, offset 0x3c5bc /* * Offset 0x3C5BC, from D:\driver2\game\C\DIRECTOR.C (lines 1135..1183) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ ShowReplayMenu() { // line 2, offset 0x3c5bc { // line 4, offset 0x3c5e4 } // line 8, offset 0x3c608 { // line 12, offset 0x3c620 } // line 16, offset 0x3c63c { // line 43, offset 0x3c750 int strobe; // $v0 } // line 47, offset 0x3c798 } // line 49, offset 0x3c7a8 /* * Offset 0x3C7A8, from D:\driver2\game\C\DIRECTOR.C (lines 1186..1987) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ ControlReplay() { // line 2, offset 0x3c7a8 static int debounce; // offset 0x70 static int first_time; // offset 0x74 int move; // $s0 { // line 85, offset 0x3ca00 int speed; // $s2 { // line 95, offset 0x3ca68 } // line 99, offset 0x3ca8c { // line 102, offset 0x3caa4 int prev; // $v1 } // line 105, offset 0x3cadc { // line 141, offset 0x3cc34 struct ROUTE_DATA routeData; // stack offset -96 int road_height; // $s1 } // line 152, offset 0x3ccb0 { // line 161, offset 0x3ccbc struct VECTOR old_camera; // stack offset -88 int x; // $s5 int z; // $s4 int d; // $s3 int angle; // $s1 char cameraCar; // $a0 int dx; // $s1 int dz; // $s0 struct VECTOR basePos; // stack offset -72 struct VECTOR tmpPos; // stack offset -56 { // line 186, offset 0x3cd38 struct _EVENT *event; // $a1 } // line 190, offset 0x3cd68 { // line 224, offset 0x3ce64 int temp; // $v0 } // line 228, offset 0x3ce70 { // line 245, offset 0x3cf28 } // line 264, offset 0x3cf74 { // line 268, offset 0x3cf74 struct ROUTE_DATA routeData; // stack offset -40 int road_height; // $s1 } // line 289, offset 0x3d064 } // line 291, offset 0x3d088 } // line 320, offset 0x3d1c8 { // line 374, offset 0x3d50c { // line 496, offset 0x3d808 } // line 496, offset 0x3d808 { // line 605, offset 0x3da6c int prev1; // $a1 } // line 615, offset 0x3daac } // line 789, offset 0x3de0c } // line 802, offset 0x3de38 /* * Offset 0x3DE60, from D:\driver2\game\C\DIRECTOR.C (lines 1990..2105) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DoAutoDirect() { // line 2, offset 0x3de60 struct VECTOR pos; // stack offset -40 { // line 8, offset 0x3defc int new_view; // $v1 { // line 25, offset 0x3df94 } // line 35, offset 0x3df9c { // line 58, offset 0x3e058 int tmp; // $v0 } // line 67, offset 0x3e0d0 { // line 69, offset 0x3e0d0 int tmp; // $v0 } // line 75, offset 0x3e0f4 } // line 105, offset 0x3e2c4 } // line 116, offset 0x3e328 /* * Offset 0x3E328, from D:\driver2\game\C\DIRECTOR.C (lines 2108..2183) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ int /*$ra*/ SelectCameraCar(int current /*$t1*/) { // line 1, offset 0x3e328 int count; // $a2 { // line 15, offset 0x3e3a0 struct _EVENT *event; // $a0 struct _CAR_DATA *car; // $a3 struct XZPAIR pos; // stack offset -16 { // line 60, offset 0x3e484 int dist; // $v0 int dx; // $a1 int dz; // $a0 } // line 72, offset 0x3e50c } // line 73, offset 0x3e50c } // line 76, offset 0x3e53c /* * Offset 0x3E53C, from D:\driver2\game\C\DIRECTOR.C (lines 2186..2259) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ InvalidCamera(int car_num /*$a2*/) { // line 1, offset 0x3e53c { // line 7, offset 0x3e568 char invalidCamera; // $a3 { // line 14, offset 0x3e5d0 char numEventModels; // $a0 struct _EVENT *event; // $v1 struct XZPAIR pos; // stack offset -24 { // line 22, offset 0x3e628 int dist; // $v0 int dx; // $v1 int dz; // $a0 } // line 38, offset 0x3e6c0 } // line 39, offset 0x3e6c0 } // line 50, offset 0x3e6f8 } // line 74, offset 0x3e79c /* * Offset 0x3E79C, from D:\driver2\game\C\DIRECTOR.C (lines 445..466) * Stack frame base $sp, size 0 */ void /*$ra*/ InitDirectorVariables() { // line 2, offset 0x3e79c int count; // $a0 } // line 22, offset 0x3e808 /* * Offset 0x3E808, from D:\driver2\game\C\DIRECTOR.C (lines 476..490) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DeleteCurrentCamera(int CameraCnt /*$a0*/) { // line 2, offset 0x3e808 int prev; // $a1 int next; // $a0 } // line 15, offset 0x3e88c /* * Offset 0x3E89C, from D:\driver2\game\C\DIRECTOR.C (lines 493..507) * Stack frame base $sp, size 0 */ void /*$ra*/ setCamera(struct PLAYBACKCAMERA *Change /*$a0*/) { } /* * Offset 0x3E94C, from D:\driver2\game\C\DIRECTOR.C (lines 634..654) * Stack frame base $sp, size 0 */ void /*$ra*/ FindNextChange(int CameraCnt /*$a0*/) { // line 1, offset 0x3e94c int count; // $a3 int nextframe; // $a2 int found; // $t0 struct PLAYBACKCAMERA *RestoreChange; // $t1 } // line 21, offset 0x3e9b8 /* * Offset 0x3E9B8, from D:\driver2\game\C\DIRECTOR.C (lines 929..940) * Stack frame base $sp, size 0 */ struct PLAYBACKCAMERA * /*$ra*/ FindFreeCamera() { // line 2, offset 0x3e9b8 int count; // $a1 } // line 12, offset 0x3e9f8 /* * Offset 0x3E9F8, from D:\driver2\game\C\DIRECTOR.C (lines 943..947) * Stack frame base $sp, size 0 */ void /*$ra*/ deleteCamera(int count /*$a0*/) { } /* * Offset 0x3EA40, from D:\driver2\game\C\DIRECTOR.C (lines 951..963) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DeleteAllCameras() { // line 2, offset 0x3ea40 struct PLAYBACKCAMERA nextcamera; // stack offset -48 int count; // $s0 } // line 13, offset 0x3eaa4 /* * Offset 0x3EAA4, from D:\driver2\game\C\DIRECTOR.C (lines 1098..1132) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ ShowReplayOptions() { // line 2, offset 0x3eaa4 static int toggle_icons; // offset 0x6c } // line 35, offset 0x3eae0 /* * Offset 0x3EAF0, from D:\driver2\game\C\DIRECTOR.C (lines 2263..2274) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ NoMoreCamerasErrorMessage() { // line 2, offset 0x3eaf0 { // line 4, offset 0x3eb08 int strobe; // $v0 } // line 9, offset 0x3eb5c } // line 12, offset 0x3eb6c /* * Offset 0x3EB6C, from D:\driver2\game\C\DIRECTOR.C (lines 2279..2286) * Stack frame base $sp, size 0 */ int /*$ra*/ FirstCamera() { // line 2, offset 0x3eb6c } // line 8, offset 0x3eb9c /* * Offset 0x3EB9C, from D:\driver2\game\C\DIRECTOR.C (lines 2289..2295) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ dist(struct VECTOR *pos1 /*$a0*/, struct VECTOR *pos2 /*$a1*/) { // line 1, offset 0x3eb9c int dx; // $v0 int dz; // $a0 } // line 7, offset 0x3ec0c /* * Offset 0x3EC0C, from D:\driver2\game\C\DIRECTOR.C (lines 710..724) * Stack frame base $sp, size 0 */ void /*$ra*/ SetPlaybackCamera(struct PLAYBACKCAMERA *camera /*$a0*/) { } /* * Offset 0x3ECC4, from D:\driver2\game\C\DIRECTOR.C (lines 2303..2330) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetCameraReturnedFromCutscene(int CameraCnt /*$s0*/) { // line 1, offset 0x3ecc4 struct PLAYBACKCAMERA *next; // $a1 int count; // $a2 } // line 28, offset 0x3ed7c Source file(s) D:\driver2\game\C\DRAW.C+D:\driver2\game\DRAW.C, object file obj\draw.OBJ overlay id // 79 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT4LIT { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct _pct { struct DB *current; // size=128, offset=0 unsigned short *ptexture_pages[128]; // size=4, offset=4 unsigned short *ptexture_cluts[128][32]; // size=4, offset=8 long f4colourTable[32]; // size=128, offset=12 int *polySizes; // size=0, offset=140 char *primptr; // size=0, offset=144 unsigned long *ot; // size=0, offset=148 unsigned long clut; // size=0, offset=152 unsigned long tpage; // size=0, offset=156 unsigned long colour; // size=0, offset=160 int flags; // size=0, offset=164 struct SVECTOR *verts; // size=8, offset=168 unsigned long lastTexInfo; // size=0, offset=172 int scribble[8]; // size=32, offset=176 int model; // size=0, offset=208 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct MATRIX2 { short m[3][3]; // size=18, offset=0 short computed; // size=0, offset=18 char null[12]; // size=12, offset=20 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct Spool { unsigned short offset; // size=0, offset=0 unsigned char connected_areas[2]; // size=2, offset=2 unsigned char pvs_size; // size=0, offset=4 unsigned char cell_data_size[3]; // size=3, offset=5 unsigned char super_region; // size=0, offset=8 unsigned char num_connected_areas; // size=0, offset=9 unsigned char roadm_size; // size=0, offset=10 unsigned char roadh_size; // size=0, offset=11 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CELL_ITERATOR { struct CELL_DATA *pcd; // size=2, offset=0 struct PACKED_CELL_OBJECT *ppco; // size=8, offset=4 struct XZPAIR near; // size=8, offset=8 int use_computed; // size=0, offset=16 }; struct PL_POLYFT4 { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char th; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 }; // 106 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct TILE TILE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT4LIT POLYFT4LIT; typedef struct _pct plotContext; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct MATRIX2 MATRIX2; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct TEX_INFO TEX_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct DB DB; typedef struct UV UV; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct Spool Spool; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct CELL_ITERATOR CELL_ITERATOR; typedef struct PL_POLYFT4 PL_POLYFT4; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct MVERTEX SV5x5[5][5]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef unsigned int u32; // 0 labels // 30 external declarations extern struct VECTOR tunnel_dim[12]; // offset 0x0009c4a4 extern unsigned int farClip2Player; // offset 0x000aa41c extern int sprite_shadow; // offset 0x000aa420 extern char TransparentObject; // offset 0x000aa424 extern int lightning; // offset 0x000aa42c extern int groundDebrisIndex; // offset 0x000aa428 static int alleycount; // offset 0x000aa430 static int treecount; // offset 0x000aa434 extern int setupYet; // offset 0x000aa438 extern char *visiblelist; // offset 0x000aa43c extern int tcRoof; // offset 0x000aa440 extern int tcWall; // offset 0x000aa444 extern int tcRoad; // offset 0x000aa448 extern unsigned long *transparent_buffer; // offset 0x000aacdc extern int FrAng; // offset 0x000aace8 extern int numSpritesFound; // offset 0x000aacd8 extern int buildingsFound; // offset 0x000aace4 extern struct MATRIX *current_matrix; // offset 0x000aacd4 extern struct MATRIX *current_inv_matrix; // offset 0x000aace0 extern struct VECTOR *current_offset; // offset 0x000aacec extern struct MATRIX2 matrixtable[64]; // offset 0x000cc018 extern struct MATRIX2 CompoundMatrix[64]; // offset 0x000cd168 extern struct CELL_OBJECT ground_debris[16]; // offset 0x000cd058 extern struct VECTOR current_camera_position; // offset 0x000cd158 extern unsigned long anim_obj_buffer[20]; // offset 0x000cbe78 extern unsigned long planeColours[8]; // offset 0x000cc818 extern struct MATRIX frustrum_matrix; // offset 0x000cbff8 extern unsigned long model_object_ptrs[512]; // offset 0x000cc858 extern struct PACKED_CELL_OBJECT *spriteList[75]; // offset 0x000cbec8 extern struct MATRIX shadowMatrix; // offset 0x000cc838 // 18 functions /* * Offset 0x3ED7C, from D:\driver2\game\C\DRAW.C (lines 651..669) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ addSubdivSpriteShadow(struct POLYFT4LIT *src /*$t3*/, struct SVECTOR *verts /*$t2*/, int z /*$a2*/) { // line 1, offset 0x3ed7c unsigned long word0; // $a0 unsigned long vidx; // $t1 struct _pct *pc; // $t0 int w; // $s0 } // line 19, offset 0x3ef64 /* * Offset 0x3EF64, from D:\driver2\game\C\DRAW.C (lines 675..808) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawSprites(int numFound /*$a2*/) { // line 1, offset 0x3ef64 struct XZPAIR near; // stack offset -80 struct PACKED_CELL_OBJECT **list; // stack offset -64 unsigned long spriteColour; // stack offset -60 int numShadows; // stack offset -56 { // line 1, offset 0x3ef64 struct SVECTOR result; // stack offset -72 unsigned char lightLevel; // $a1 } // line 41, offset 0x3f0fc { // line 41, offset 0x3f0fc int i; // $t0 } // line 54, offset 0x3f174 { // line 68, offset 0x3f1f0 struct PACKED_CELL_OBJECT *ppco; // $fp struct MODEL *model; // $s4 int z; // stack offset -52 int yang; // $a0 { // line 95, offset 0x3f2a8 } // line 95, offset 0x3f2a8 { // line 101, offset 0x3f2f0 struct POLYFT4LIT *src; // $s0 struct SVECTOR *verts; // $s3 int i; // $s1 { // line 106, offset 0x3f338 unsigned long vidx; // $a3 } // line 107, offset 0x3f338 } // line 119, offset 0x3f49c } // line 132, offset 0x3f59c } // line 134, offset 0x3f5f0 /* * Offset 0x3F5F0, from D:\driver2\game\C\DRAW.C (lines 813..852) * Stack frame base $sp, size 0 */ struct PACKED_CELL_OBJECT * /*$ra*/ GetNextPackedCop(struct CELL_ITERATOR *pci /*$a0*/) { // line 1, offset 0x3f5f0 struct PACKED_CELL_OBJECT *ppco; // $a3 unsigned short num; // $a1 } // line 40, offset 0x3f6b0 /* * Offset 0x3F6B0, from D:\driver2\game\C\DRAW.C (lines 883..1122) * Stack frame base $sp, size 200 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawMapPSX(int *comp_val /*$t1*/) { // line 1, offset 0x3f6b0 struct CELL_ITERATOR ci; // stack offset -184 struct PACKED_CELL_OBJECT *ppco; // $s0 int i; // $s1 int dir; // $s7 int cellxpos; // $a0 int cellzpos; // $a1 int hloop; // $s4 int vloop; // $s5 int camx; // stack offset -112 int camz; // stack offset -108 char *PVS_ptr; // stack offset -104 int tiles_found; // stack offset -100 int other_models_found; // stack offset -96 int anim_objs; // $s6 struct MATRIX mRotStore; // stack offset -160 int rightcos; // stack offset -92 int rightsin; // stack offset -88 int leftcos; // stack offset -84 int leftsin; // stack offset -80 int backcos; // stack offset -76 int backsin; // stack offset -72 int rightPlane; // stack offset -68 int leftPlane; // stack offset -64 int backPlane; // $fp unsigned int farClipLimit; // stack offset -60 { // line 84, offset 0x3f964 struct MODEL *model; // $s2 { // line 92, offset 0x3f9b4 int model_shape_flags; // $s1 { // line 103, offset 0x3fa10 struct CELL_OBJECT *cop; // $a2 { // line 1, offset 0x3fa10 struct PACKED_CELL_OBJECT *ppco; // $s0 { // line 1, offset 0x3fa10 struct CELL_OBJECT *pco; // $a1 } // line 1, offset 0x3fab8 } // line 1, offset 0x3fab8 } // line 105, offset 0x3fac4 { // line 110, offset 0x3faf4 struct CELL_OBJECT *cop; // $a2 { // line 1, offset 0x3faf4 struct PACKED_CELL_OBJECT *ppco; // $s0 { // line 1, offset 0x3faf4 struct CELL_OBJECT *pco; // $a1 } // line 1, offset 0x3fb9c } // line 1, offset 0x3fb9c } // line 111, offset 0x3fb9c { // line 119, offset 0x3fbe8 int yang; // $a1 } // line 127, offset 0x3fcd0 { // line 135, offset 0x3fd0c struct CELL_OBJECT *cop; // $a2 { // line 1, offset 0x3fd0c struct PACKED_CELL_OBJECT *ppco; // $s0 { // line 1, offset 0x3fd0c struct CELL_OBJECT *pco; // $a1 } // line 1, offset 0x3fdb4 } // line 1, offset 0x3fdb4 } // line 138, offset 0x3fe00 { // line 149, offset 0x3fe34 struct CELL_OBJECT *cop; // $a2 { // line 1, offset 0x3fe34 struct PACKED_CELL_OBJECT *ppco; // $s0 { // line 1, offset 0x3fe34 struct CELL_OBJECT *pco; // $a1 } // line 1, offset 0x3fedc } // line 1, offset 0x3fedc } // line 159, offset 0x3ff34 } // line 162, offset 0x3ff34 } // line 163, offset 0x3ff34 { // line 188, offset 0x400cc } // line 189, offset 0x400d4 { // line 198, offset 0x400e4 } // line 200, offset 0x4010c { // line 206, offset 0x40138 struct VECTOR newpos; // stack offset -128 struct CELL_OBJECT *cop; // $s0 } // line 207, offset 0x40138 } // line 240, offset 0x40218 /* * Offset 0x40218, from D:\driver2\game\C\DRAW.C (lines 1125..1158) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupPlaneColours(unsigned long ambient /*$a3*/) { // line 1, offset 0x40218 { // line 15, offset 0x402b4 unsigned long r; // $t4 unsigned long g; // $t2 unsigned long b; // $a0 } // line 15, offset 0x402b4 } // line 34, offset 0x40408 /* * Offset 0x40408, from D:\driver2\game\C\DRAW.C (lines 1162..1199) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SetupDrawMapPSX() { // line 3, offset 0x40408 { // line 4, offset 0x40468 int region_x1; // $t0 int region_z1; // $a0 int current_barrel_region_x1; // $v0 int current_barrel_region_z1; // $a0 } // line 16, offset 0x4048c { // line 16, offset 0x4048c int theta; // $s2 } // line 34, offset 0x40500 } // line 38, offset 0x40534 /* * Offset 0x40534, from D:\driver2\game\C\DRAW.C (lines 1209..1214) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ InitFrustrumMatrix() { } /* * Offset 0x40608, from D:\driver2\game\C\DRAW.C (lines 1425..1477) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ProcessMapLump(char *lump_ptr /*$v0*/, int lump_size /*$a1*/) { // line 1, offset 0x40608 char *cellptr; // $s0 int cell_size; // $a3 int region_size; // $t0 } // line 53, offset 0x407d8 /* * Offset 0x407D8, from D:\driver2\game\C\DRAW.C (lines 1711..1823) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ DrawAllTheCars(int view /*$s6*/) { // line 1, offset 0x407d8 int loop; // $s0 int x; // $s2 int z; // $s1 int xd; // $a0 int zd; // $v1 struct _CAR_DATA *cars_to_draw[20]; // stack offset -112 int num_cars_to_draw; // $s4 static int car_distance[20]; // offset 0x0 static int temp; // offset 0x0 { // line 1, offset 0x407d8 struct _CAR_DATA *lcp; // $s0 { // line 27, offset 0x40860 int dist; // $v0 } // line 37, offset 0x408e0 } // line 40, offset 0x408f0 { // line 46, offset 0x408f8 int i; // $a0 { // line 51, offset 0x40920 struct _CAR_DATA *car; // $t4 int dist; // $t0 int j; // $a3 } // line 60, offset 0x409a0 } // line 63, offset 0x409c0 { // line 79, offset 0x409e4 int spacefree; // $a1 } // line 87, offset 0x40a2c } // line 113, offset 0x40a68 /* * Offset 0x40A90, from D:\driver2\game\C\DRAW.C (lines 1857..2039) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ PlotBuildingModelSubdivNxN(struct MODEL *model /*$t0*/, int rot /*stack 4*/, struct _pct *pc /*$s2*/, int n /*stack 12*/) { // line 1, offset 0x40a90 struct SVECTOR *verts; // $s4 struct PL_POLYFT4 *polys; // $s1 int i; // $s7 int asdf; // $fp { // line 19, offset 0x40b40 unsigned long word0; // $s0 { // line 29, offset 0x40b9c int Z; // stack offset -48 unsigned int vidx; // $s3 { // line 39, offset 0x40bd0 unsigned long th; // $v1 } // line 45, offset 0x40c10 { // line 83, offset 0x40e30 int diff; // $a1 int min; // $a2 { // line 88, offset 0x40e30 int max; // $v1 } // line 92, offset 0x40ea4 { // line 113, offset 0x40f10 int w; // $s0 } // line 116, offset 0x40f3c { // line 126, offset 0x41060 struct POLY_FT4 *prims; // $t2 int uv0; // $v1 int uv1; // $a2 int uv2; // $t3 int uv3; // $t1 { // line 137, offset 0x410a8 unsigned int r; // $a2 } // line 137, offset 0x410a8 { // line 137, offset 0x410a8 int r2; // $v1 } // line 137, offset 0x410a8 } // line 162, offset 0x41140 } // line 164, offset 0x41140 } // line 169, offset 0x41158 } // line 176, offset 0x41178 } // line 183, offset 0x411f4 /* * Offset 0x411F4, from D:\driver2\game\C\DRAW.C (lines 2053..2178) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ DrawAllBuildings(unsigned long *objects /*$t3*/, int num_buildings /*$s5*/, struct DB *disp /*$a2*/) { // line 1, offset 0x411f4 int i; // $s3 int model_number; // $v0 int prev_mat; // $s4 struct MODEL *model; // $a0 struct CELL_OBJECT *building; // $s0 { // line 38, offset 0x4132c int spacefree; // $a0 { // line 81, offset 0x4135c } // line 82, offset 0x41364 { // line 85, offset 0x41364 int zBias; // $v0 unsigned long *savedOT; // $s1 } // line 97, offset 0x41398 } // line 97, offset 0x41398 } // line 126, offset 0x4143c /* * Offset 0x4143C, from D:\driver2\game\C\DRAW.C (lines 2181..2223) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ RenderModel(struct MODEL *model /*$s2*/, struct MATRIX *matrix /*$a1*/, struct VECTOR *pos /*$a2*/, int zBias /*$s0*/, int flags /*stack 16*/, int flags /*$v1*/) { // line 1, offset 0x4143c int i; // $t0 unsigned long *savedOT; // $s1 { // line 10, offset 0x41468 struct MATRIX comb; // stack offset -48 } // line 15, offset 0x41498 { // line 29, offset 0x41538 int spacefree; // $a0 } // line 41, offset 0x415c0 } // line 43, offset 0x415e4 /* * Offset 0x415E4, from D:\driver2\game\C\DRAW.C (lines 2267..2285) * Stack frame base $sp, size 16 */ unsigned long /*$ra*/ normalIndex(struct SVECTOR *verts /*$a0*/, unsigned int vidx /*$a1*/) { // line 1, offset 0x415e4 int th23; // $a0 int nx; // $t4 int ny; // $v1 int nz; // $a2 struct SVECTOR p; // stack offset -16 struct SVECTOR q; // stack offset -8 { // line 1, offset 0x415e4 int x; // $a1 int y; // $a0 } // line 8, offset 0x41724 } // line 19, offset 0x417a4 /* * Offset 0x417A4, from D:\driver2\game\C\DRAW.C (lines 1219..1220) * Stack frame base $sp, size 0 */ void /*$ra*/ SetFrustrumMatrix() { } /* * Offset 0x417DC, from D:\driver2\game\C\DRAW.C (lines 1224..1225) * Stack frame base $sp, size 0 */ void /*$ra*/ Set_Inv_CameraMatrix() { } /* * Offset 0x41814, from D:\driver2\game\C\DRAW.C (lines 1324..1340) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ CalcObjectRotationMatrices() { // line 2, offset 0x41814 int i; // $s1 int j; // $a0 struct SVECTOR ang; // stack offset -56 struct MATRIX mat; // stack offset -48 } // line 17, offset 0x418bc /* * Offset 0x418BC, from D:\driver2\game\C\DRAW.C (lines 1344..1345) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ PlotMDL_less_than_128(struct MODEL *model /*$a0*/) { } /* * Offset 0x418E8, from D:\driver2\game\C\DRAW.C (lines 854..869) * Stack frame base $sp, size 0 */ struct CELL_OBJECT * /*$ra*/ UnpackCellObject(struct PACKED_CELL_OBJECT *ppco /*$a3*/, struct XZPAIR *near /*$t0*/) { // line 1, offset 0x418e8 struct CELL_OBJECT *pco; // $a2 } // line 16, offset 0x419a8 Source file(s) D:\DRIVER2\GAME\ASM\RNDRASM.MIP, object file obj\rndrasm.OBJ overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\C\TILE.C+D:\driver2\game\TILE.C, object file obj\tile.OBJ overlay id // 67 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _pct { struct DB *current; // size=0, offset=0 unsigned short *ptexture_pages[128]; // size=4, offset=4 unsigned short *ptexture_cluts[128][32]; // size=4, offset=8 long f4colourTable[32]; // size=128, offset=12 int *polySizes; // size=0, offset=140 char *primptr; // size=0, offset=144 unsigned long *ot; // size=0, offset=148 unsigned long clut; // size=0, offset=152 unsigned long tpage; // size=0, offset=156 unsigned long colour; // size=0, offset=160 int flags; // size=0, offset=164 struct SVECTOR *verts; // size=8, offset=168 unsigned long lastTexInfo; // size=0, offset=172 int scribble[8]; // size=32, offset=176 int model; // size=0, offset=208 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct MVERTEX { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 unsigned short uv; // size=0, offset=6 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct VERTEX { struct DVECTOR coord; // size=4, offset=0 struct UV_INFO uv_coord; // size=2, offset=4 unsigned char pad[2]; // size=2, offset=6 }; // 97 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT4 POLY_FT4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _pct plotContext; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct TEX_INFO TEX_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct DB DB; typedef struct MVERTEX MVERTEX; typedef struct UV UV; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct VERTEX VERTEX; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct MVERTEX SV5x5[5][5]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 9 external declarations extern int goFaster; // offset 0x000aa44c extern unsigned long *tile_overflow_buffer; // offset 0x000aacf0 extern unsigned short *Low2HighDetailTable; // offset 0x000aad04 extern unsigned short *Low2LowerDetailTable; // offset 0x000aad08 extern int fasterToggle; // offset 0x000aacfc extern char *SubDivisionArrays; // offset 0x000aacf8 extern int vcount; // offset 0x000aacf4 extern unsigned long *ot_slot; // offset 0x000aad00 extern struct VERTEX vtab[8]; // offset 0x000cd968 // 8 functions /* * Offset 0x41B10, from D:\driver2\game\C\TILE.C (lines 79..165) * Stack frame base $sp, size 16 * Saved registers at offset -8: s0 */ void /*$ra*/ Tile1x1(struct MODEL *model /*$a0*/) { // line 1, offset 0x41b10 int i; // $t3 unsigned char *polys; // $t0 struct SVECTOR *verts; // $t1 struct POLY_FT4 *prims; // $a2 unsigned long clut; // $t6 unsigned long tpage; // $a1 { // line 14, offset 0x41b4c unsigned long indices; // $a3 unsigned long texInfo; // $t2 { // line 14, offset 0x41b4c long *ot; // $t8 { // line 14, offset 0x41b4c int Z; // stack offset -16 unsigned long uv_01; // $t4 unsigned long uv_23; // $t5 0x1B4 otherhalf { // line 65, offset 0x41cc4 int r2; // $a0 } // line 65, offset 0x41cc4 } // line 82, offset 0x41d48 } // line 83, offset 0x41d48 } // line 84, offset 0x41d48 } // line 87, offset 0x41d7c /* * Offset 0x41D7C, from D:\driver2\game\C\TILE.C (lines 180..286) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ DrawTILES(int tile_amount /*$s2*/) { // line 1, offset 0x41d7c { // line 21, offset 0x41e84 } // line 24, offset 0x41ebc { // line 28, offset 0x41ebc struct PACKED_CELL_OBJECT **tilePointers; // $s3 int previous_matrix; // $s4 { // line 40, offset 0x41f34 int model_number; // $s0 int z; // $a1 { // line 43, offset 0x41f34 int yang; // $a1 struct PACKED_CELL_OBJECT *ppco; // $a0 } // line 61, offset 0x41fb8 { // line 90, offset 0x4202c struct MODEL *model; // $a0 } // line 99, offset 0x42060 } // line 102, offset 0x42060 } // line 105, offset 0x420b0 } // line 107, offset 0x420b0 /* * Offset 0x420B0, from D:\driver2\game\C\TILE.C (lines 292..352) * Stack frame base $sp, size 8 * Saved registers at offset -8: s0 */ void /*$ra*/ makeMesh(struct MVERTEX *VSP[5][5] /*$t4*/, int m /*$t2*/, int n /*$a2*/) { // line 1, offset 0x420b0 { // line 21, offset 0x420c8 int a; // $t0 int b; // $t1 } // line 21, offset 0x420c8 { // line 21, offset 0x420c8 int a; // $a3 } // line 21, offset 0x420c8 { // line 21, offset 0x420c8 int a; // $a0 int b; // $a1 } // line 21, offset 0x420c8 { // line 28, offset 0x421b4 int a; // $t0 int b; // $t1 } // line 28, offset 0x421b4 { // line 28, offset 0x421b4 int a; // $a3 } // line 28, offset 0x421b4 { // line 28, offset 0x421b4 int a; // $a0 int b; // $a1 } // line 28, offset 0x421b4 { // line 34, offset 0x4228c int k; // $s0 { // line 35, offset 0x4228c int a; // $t0 int b; // $t1 } // line 35, offset 0x4228c { // line 35, offset 0x4228c int a; // $a3 } // line 35, offset 0x4228c { // line 35, offset 0x4228c int a; // $a0 int b; // $a1 } // line 35, offset 0x4228c { // line 40, offset 0x42378 int a; // $t0 int b; // $t1 } // line 40, offset 0x42378 { // line 40, offset 0x42378 int a; // $a3 } // line 40, offset 0x42378 { // line 40, offset 0x42378 int a; // $a0 int b; // $a1 } // line 40, offset 0x42378 } // line 44, offset 0x42458 { // line 48, offset 0x42460 int a; // $t1 int b; // $t5 } // line 48, offset 0x42460 { // line 51, offset 0x424d0 int a; // $v0 int b; // $a1 } // line 51, offset 0x424d0 { // line 55, offset 0x4252c int a; // $t0 int b; // $t2 } // line 55, offset 0x4252c { // line 55, offset 0x4252c int a; // $t3 int b; // $v0 } // line 55, offset 0x4252c { // line 55, offset 0x4252c int a; // $a2 } // line 55, offset 0x4252c { // line 55, offset 0x4252c int a; // $t8 int b; // $a1 } // line 58, offset 0x42644 } // line 61, offset 0x42650 /* * Offset 0x42650, from D:\driver2\game\C\TILE.C (lines 359..485) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 s1 s2 s3 */ void /*$ra*/ drawMesh(struct MVERTEX *VSP[5][5] /*$s2*/, int m /*$s3*/, int n /*$s1*/, struct _pct *pc /*$a3*/) { // line 1, offset 0x42650 int j; // $t6 int k; // $t9 struct POLY_FT4 *prims; // $t1 { // line 11, offset 0x426b8 int Z1; // stack offset -24 int Z2; // stack offset -20 struct MVERTEX *VST[5][5]; // $t2 long *ot; // $t7 { // line 23, offset 0x42714 int r2; // $v0 } // line 23, offset 0x42714 { // line 103, offset 0x42a30 int r2; // $v0 } // line 121, offset 0x42ab4 } // line 124, offset 0x42ab4 } // line 127, offset 0x42aec /* * Offset 0x42AEC, from D:\driver2\game\C\TILE.C (lines 489..576) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SubdivNxM(char *polys /*$t4*/, unsigned long n /*$s1*/, unsigned long m /*$s0*/, int ofse /*$s2*/) { // line 1, offset 0x42aec struct MVERTEX *VSP[5][5]; // $t3 struct _pct *pc; // $t2 { // line 1, offset 0x42aec unsigned long indices; // $a0 struct SVECTOR *v0; // $t1 struct SVECTOR *v1; // $a1 struct SVECTOR *v2; // $t0 } // line 1, offset 0x42aec { // line 1, offset 0x42aec unsigned long uv_01; // $v1 unsigned long uv_23; // $a2 } // line 1, offset 0x42aec { // line 58, offset 0x42dec int Z; // stack offset -24 { // line 73, offset 0x42e60 unsigned long texInfo; // $a0 } // line 80, offset 0x42ed4 } // line 86, offset 0x42f04 } // line 88, offset 0x42f34 /* * Offset 0x42F34, from D:\driver2\game\C\TILE.C (lines 641..642) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessSubDivisionLump(char *lump_ptr /*$a0*/, int lump_size /*$a1*/) { } /* * Offset 0x42F40, from D:\driver2\game\C\TILE.C (lines 581..630) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ TileNxN(struct MODEL *model /*$s4*/, int levels /*$s2*/, int Dofse /*$s6*/) { // line 1, offset 0x42f40 int i; // $s3 char *polys; // $s0 char ttype; // $a3 unsigned long tiletypes; // $s1 int baseOffset; // $s5 } // line 50, offset 0x43090 /* * Offset 0x43090, from D:\driver2\game\C\TILE.C (lines 651..673) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessLowDetailTable(char *lump_ptr /*$a0*/, int lump_size /*$a1*/) { // line 1, offset 0x43090 int i; // $a1 } // line 23, offset 0x4310c Source file(s) D:\driver2\game\C\DRIVINGGAMES.C+D:\driver2\game\DRIVINGGAMES.C, object file obj\drivinggames.obj overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct TRAILBLAZER_DATA { int x; // size=0, offset=0 int z; // size=0, offset=4 short y; // size=0, offset=8 short rot; // size=0, offset=10 }; struct SMASHED_CONE { char cone; // size=0, offset=0 unsigned char active : 7; // offset=1.0 unsigned char side : 1; // offset=1.7 short rot_speed; // size=0, offset=2 struct VECTOR velocity; // size=16, offset=4 }; // 108 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct DB DB; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct CDATA2D CDATA2D; typedef struct TRAILBLAZER_DATA TRAILBLAZER_DATA; typedef struct SMASHED_CONE SMASHED_CONE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct MVERTEX SV5x5[5][5]; // 0 labels // 8 external declarations extern int gTrailblazerConeCount; // offset 0x000aa45c static int current_smashed_cone; // offset 0x000aa450 static int gTrailblazerPrevConeDelay; // offset 0x000aa454 extern struct TRAILBLAZER_DATA *gTrailblazerData; // offset 0x000aa458 extern int gTrailblazerConeIndex; // offset 0x000aa460 extern struct MODEL *gTrailblazerConeModel; // offset 0x000aad10 static int wrongside[2][6]; // offset 0x000cd9a8 static struct SMASHED_CONE smashed_cones[6]; // offset 0x000cd9d8 // 10 functions /* * Offset 0x4310C, from D:\driver2\game\C\DRIVINGGAMES.C (lines 231..287) * Stack frame base $sp, size 88 * Saved registers at offset -8: ra */ void /*$ra*/ InitDrivingGames() { // line 2, offset 0x4310c char filename[64]; // stack offset -72 int i; // $a0 int j; // $v1 } // line 57, offset 0x4326c /* * Offset 0x4326C, from D:\driver2\game\C\DRIVINGGAMES.C (lines 290..474) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ HandleDrivingGames() { // line 2, offset 0x4326c struct _CAR_DATA *cp; // $a2 struct VECTOR vel; // stack offset -96 int i; // $s3 int j; // $v1 int k; // $a0 int id; // $s2 int dist; // $a1 { // line 61, offset 0x43354 struct VECTOR pos1; // stack offset -80 struct VECTOR pos2; // stack offset -64 int x; // $t0 int z; // $a1 int r; // $v0 int side; // $s1 int radius; // $a0 } // line 123, offset 0x43658 { // line 145, offset 0x43700 struct VECTOR pos; // stack offset -80 } // line 166, offset 0x43800 } // line 185, offset 0x438dc /* * Offset 0x438DC, from D:\driver2\game\C\DRIVINGGAMES.C (lines 477..525) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawDrivingGames() { // line 2, offset 0x438dc struct VECTOR wpos; // stack offset -24 int i; // $s0 } // line 49, offset 0x439fc /* * Offset 0x439FC, from D:\driver2\game\C\DRIVINGGAMES.C (lines 545..565) * Stack frame base $sp, size 232 * Saved registers at offset -8: ra */ int /*$ra*/ CarConeCollision(struct VECTOR *pPos /*$a0*/, int car /*$a1*/) { // line 1, offset 0x439fc struct CDATA2D cd[2]; // stack offset -216 struct _CAR_DATA *cp1; // $t0 int carLength[2]; // stack offset -16 { // line 20, offset 0x43ad4 } // line 20, offset 0x43ad4 } // line 21, offset 0x43ae8 /* * Offset 0x43AE8, from D:\driver2\game\C\DRIVINGGAMES.C (lines 578..620) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SetSmashedCone(int cone /*$s1*/, struct VECTOR *velocity /*$a1*/, int player /*$s2*/, int side /*$a3*/) { // line 1, offset 0x43ae8 struct SMASHED_CONE *sc; // $s0 int chan; // $s0 } // line 43, offset 0x43ce0 /* * Offset 0x43CE0, from D:\driver2\game\C\DRIVINGGAMES.C (lines 628..654) * Stack frame base $sp, size 0 */ void /*$ra*/ MoveSmashedCones() { // line 2, offset 0x43ce0 int i; // $t0 } // line 27, offset 0x43de4 /* * Offset 0x43DEC, from D:\driver2\game\C\DRIVINGGAMES.C (lines 730..749) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DrawSmashedCone(struct SMASHED_CONE *sc /*$s0*/, struct VECTOR *wpos /*$s1*/) { // line 1, offset 0x43dec struct MATRIX object_matrix; // stack offset -64 struct MATRIX *finalmatrix; // $s2 struct VECTOR pos; // stack offset -32 } // line 20, offset 0x43f34 /* * Offset 0x43F34, from D:\driver2\game\C\DRIVINGGAMES.C (lines 757..791) * Stack frame base $sp, size 16 */ void /*$ra*/ GetConePos(int cone /*$a0*/, struct VECTOR *pos /*$t2*/, int side /*$a2*/) { // line 1, offset 0x43f34 struct VECTOR offset; // stack offset -16 int x; // $t3 int z; // $t4 int r; // $v1 int radius; // $a1 } // line 35, offset 0x44034 /* * Offset 0x44034, from D:\driver2\game\C\DRIVINGGAMES.C (lines 703..722) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawCone(struct VECTOR *position /*$s0*/, int cone /*$s1*/) { // line 1, offset 0x44034 struct MATRIX matrix; // stack offset -64 struct VECTOR pos; // stack offset -32 { // line 10, offset 0x44064 { // line 12, offset 0x44084 } // line 18, offset 0x44154 } // line 19, offset 0x44154 } // line 20, offset 0x44154 /* * Offset 0x44168, from D:\driver2\game\C\DRIVINGGAMES.C (lines 662..695) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawSmashedCones() { // line 2, offset 0x44168 struct SMASHED_CONE *sc; // $s0 struct VECTOR wpos; // stack offset -40 int i; // $s1 } // line 34, offset 0x44228 Source file(s) D:\driver2\game\C\E3STUFF.C, object file obj\e3stuff.obj overlay id // 59 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct POLYCOORD { short x; // size=0, offset=0 short y; // size=0, offset=2 short u; // size=0, offset=4 short v; // size=0, offset=6 short w; // size=0, offset=8 short h; // size=0, offset=10 }; // 92 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct SPRT SPRT; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct POLYCOORD POLYCOORD; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 3 external declarations static struct POLYCOORD polycoords[6]; // offset 0x0009e674 extern int gUseCopModel; // offset 0x000aa464 static int lastrequesteddisc; // offset 0x000aa468 // 7 functions /* * Offset 0x44244, from D:\driver2\game\C\E3STUFF.C (lines 171..250) * Stack frame base $sp, size 512 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ FadeInHiresScreen(char *filename /*stack 0*/) { // line 1, offset 0x44244 struct DISPENV disp; // stack offset -488 struct DRAWENV draw; // stack offset -464 struct SPRT prims[6]; // stack offset -368 struct POLY_FT3 nulls[6]; // stack offset -248 struct RECT rect; // stack offset -56 unsigned long ot; // stack offset -48 int i; // $t5 int col; // $s1 } // line 80, offset 0x445f4 /* * Offset 0x445F4, from D:\driver2\game\C\E3STUFF.C (lines 258..317) * Stack frame base $sp, size 520 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ FadeOutHiresScreen() { // line 2, offset 0x445f4 struct DISPENV disp; // stack offset -496 struct DRAWENV draw; // stack offset -472 struct SPRT prims[6]; // stack offset -376 struct POLY_FT3 nulls[6]; // stack offset -256 struct RECT rect; // stack offset -64 unsigned long ot; // stack offset -56 int i; // $t5 int col; // $s1 } // line 60, offset 0x448cc /* * Offset 0x448CC, from D:\driver2\game\C\E3STUFF.C (lines 391..434) * Stack frame base $sp, size 168 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SetPleaseWait(char *buffer /*$s2*/) { // line 1, offset 0x448cc struct DISPENV disp; // stack offset -144 struct DRAWENV draw; // stack offset -120 struct RECT rect; // stack offset -24 char *exe; // $a0 } // line 44, offset 0x44a40 /* * Offset 0x44A40, from D:\driver2\game\C\E3STUFF.C (lines 443..537) * Stack frame base $sp, size 184 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ CheckForCorrectDisc(int disc /*$s0*/) { // line 1, offset 0x44a40 struct DISPENV disp; // stack offset -160 struct DRAWENV draw; // stack offset -136 struct RECT rect; // stack offset -40 char *mess1; // $s6 char *mess2; // $s3 char *exe; // $s4 int ret; // $s0 int discerror; // $s5 { // line 49, offset 0x44b70 } // line 79, offset 0x44bf4 } // line 95, offset 0x44cb8 /* * Offset 0x44CE0, from D:\driver2\game\C\E3STUFF.C (lines 139..163) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ ShowHiresScreens(char **names /*$s1*/, int delay /*$s4*/, int wait /*$s3*/) { // line 1, offset 0x44ce0 char *filename; // $a0 int timedelay; // $s0 } // line 25, offset 0x44da0 /* * Offset 0x44DA0, from D:\driver2\game\C\E3STUFF.C (lines 350..381) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupDefDispEnv(struct DISPENV *env /*$s0*/, int x /*$a1*/, int y /*$a2*/, int w /*$a3*/, int h /*stack 16*/, int h /*$v0*/) { } /* * Offset 0x44E40, from D:\driver2\game\C\E3STUFF.C (lines 325..341) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ SetupDefDrawEnv(struct DRAWENV *env /*$a0*/, int x /*$a1*/, int y /*$a2*/, int w /*$a3*/, int h /*stack 16*/, int h /*$v0*/) { } Source file(s) D:\driver2\game\C\ENVIRO.C+D:\driver2\game\ENVIRO.C, object file obj\enviro.OBJ overlay id // 44 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TPAN { unsigned char texture_page; // size=0, offset=0 unsigned char texture_number; // size=0, offset=1 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; // 73 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct TPAN TPAN; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 5 external declarations extern short gPlayerCar0ShinyFaces[38]; // offset 0x0009e6bc extern int ShinyTexturePage; // offset 0x000aad1c extern int ShinyTextureNum; // offset 0x000aad18 extern char Car0_ShinyTable[256]; // offset 0x000cdb50 extern char VeryShinyTable[256]; // offset 0x000cda50 // 2 functions /* * Offset 0x44E88, from D:\driver2\game\C\ENVIRO.C (lines 46..66) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ Env_MakeColourAddTable(short *shinysrc /*$s0*/, char *polytable /*$s1*/, int length /*$a2*/) { // line 1, offset 0x44e88 short addval; // $a0 short polynum; // $v1 } // line 21, offset 0x44f08 /* * Offset 0x44F08, from D:\driver2\game\C\ENVIRO.C (lines 72..88) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ Init_Reflection_Mapping() { // line 2, offset 0x44f08 struct TPAN pos; // stack offset -16 int count; // $v1 } // line 17, offset 0x44f60 Source file(s) D:\driver2\game\C\ENVSOUND.C+D:\driver2\game\ENVSOUND.C, object file obj\envsound.obj overlay id // 27 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; // 52 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct _COP_DATA MS_COP_DATA; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 0 external declarations // 1 functions /* * Offset 0x44F60, from D:\driver2\game\C\ENVSOUND.C (lines 41..161) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ AddEnvSounds(int level /*$a0*/, int time /*$a1*/) { } Source file(s) D:\driver2\game\C\EVENT.C+D:\driver2\game\EVENT.C, object file obj\event.OBJ overlay id // 92 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct FixedEvent { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short active; // size=0, offset=18 unsigned short initialRotation; // size=0, offset=20 unsigned short finalRotation; // size=0, offset=22 unsigned short minSpeed; // size=0, offset=24 unsigned short maxSpeed; // size=0, offset=26 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 char *modelName; // size=0, offset=40 }; struct EventGlobal { int camera; // size=0, offset=0 int draw; // size=0, offset=4 struct _EVENT **track; // size=40, offset=8 struct _EVENT *cameraEvent; // size=40, offset=12 }; enum SpecialCamera : char { SPECIAL_CAMERA_SET = 0, SPECIAL_CAMERA_SET2 = 1, SPECIAL_CAMERA_RESET = 2, SPECIAL_CAMERA_WAIT = 3, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct MissionTrain { struct _EVENT *engine; // size=40, offset=0 int *node; // size=0, offset=4 int cornerSpeed; // size=0, offset=8 int initialStraightSpeed; // size=0, offset=12 int finalStraightSpeed; // size=0, offset=16 int start; // size=0, offset=20 int startDir; // size=0, offset=24 }; struct Foam { struct MODEL *model; // size=36, offset=0 int rotate; // size=0, offset=4 }; struct EventCarriage { short rotation; // size=0, offset=0 short vel; // size=0, offset=2 }; struct MultiCar { struct _EVENT *event; // size=40, offset=0 int count; // size=0, offset=4 }; struct Helicopter { int speed; // size=0, offset=0 short pitch; // size=0, offset=4 short dp; // size=0, offset=6 short roll; // size=0, offset=8 short dr; // size=0, offset=10 int lastX; // size=0, offset=12 int lastZ; // size=0, offset=16 struct TEXTURE_DETAILS rotorTexture; // size=14, offset=20 short rotorrot; // size=0, offset=34 short rotorvel; // size=0, offset=36 int cleanModel; // size=0, offset=40 int deadModel; // size=0, offset=44 }; struct Detonator { int timer; // size=0, offset=0 int count; // size=0, offset=4 }; struct CameraDelay { int delay; // size=0, offset=0 int type; // size=0, offset=4 }; enum VisType : char { VIS_INIT = 0, VIS_SORT = 1, VIS_ADD = 2, VIS_NEXT = 3, }; struct EventCamera { struct VECTOR position; // size=16, offset=0 short yAng; // size=0, offset=16 struct MATRIX matrix; // size=32, offset=20 int rotate; // size=0, offset=52 }; enum Station : char { EVENT_NO_STATION = 0, EVENT_APPROACHING = 1, EVENT_LEAVING = 2, }; struct MULTICAR_DATA { int x; // size=0, offset=0 int z; // size=0, offset=4 unsigned char palette; // size=0, offset=8 unsigned char model; // size=0, offset=9 short rot; // size=0, offset=10 }; // 111 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT4 POLY_FT4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct DB DB; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _sdPlane sdPlane; typedef struct _EVENT EVENT; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct MULTICAR_DATA MULTICAR_DATA; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct MVERTEX SV5x5[5][5]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 45 external declarations extern int ElTrainData[83]; // offset 0x0009e708 extern int VegasTrainData[7]; // offset 0x0009e854 extern int VegasParkedTrains[3]; // offset 0x0009e870 extern int HavanaFerryData[12]; // offset 0x0009e87c extern int RioFerryData[6]; // offset 0x0009e8ac extern int HavanaMiniData[4]; // offset 0x0009e8c4 static struct MissionTrain missionTrain[2]; // offset 0x0009e8d4 static struct FixedEvent chicagoDoor[3]; // offset 0x0009e90c static struct FixedEvent havanaFixed[3]; // offset 0x0009e990 static struct FixedEvent vegasDoor[5]; // offset 0x0009ea14 static struct FixedEvent rioDoor[6]; // offset 0x0009eaf0 static struct Helicopter HelicopterData; // offset 0x0009ebf8 extern int LiftingBridges[55]; // offset 0x0009ec28 static int ChicagoCameraHack[3]; // offset 0x0009ed04 static int HavanaCameraHack[9]; // offset 0x0009ed10 static int VegasCameraHack[16]; // offset 0x0009ed34 static int RioCameraHack[6]; // offset 0x0009ed74 extern int DistanceTriggerCarMoves; // offset 0x000aa4b8 static int eventHaze; // offset 0x000aa4bc extern int debugRotation; // offset 0x000aa510 extern struct CELL_OBJECT *EventCop; // offset 0x000aadc8 extern int event_models_active; // offset 0x000aadd8 static struct Foam foam; // offset 0x000aad60 static struct _EVENT *event; // offset 0x000aad68 extern struct _EVENT *firstEvent; // offset 0x000aadc0 static int cameraEventsActive; // offset 0x000aad6c static struct _EVENT *trackingEvent[2]; // offset 0x000aad70 static int carsOnBoat; // offset 0x000aad78 static struct SVECTOR boatOffset; // offset 0x000aad80 static struct MultiCar multiCar; // offset 0x000aad88 static struct FixedEvent *fixedEvent; // offset 0x000aad90 static struct _EVENT *firstMissionEvent; // offset 0x000aad94 static struct Detonator detonator; // offset 0x000aad98 static int doneFirstHavanaCameraHack; // offset 0x000aada0 static struct CameraDelay cameraDelay; // offset 0x000aada8 static unsigned short *xVis; // offset 0x000aadb0 static unsigned short *zVis; // offset 0x000aadb4 extern int *debugCount; // offset 0x000aadbc extern int debugNode[2]; // offset 0x000aadd0 extern int debugSpeed; // offset 0x000aadb8 extern int debugOffset; // offset 0x000aadc4 extern struct EventGlobal events; // offset 0x000cdee8 static struct _TARGET *carEvent[8]; // offset 0x000cde90 extern struct EventCarriage carriageData[10]; // offset 0x000cdef8 static struct EventCamera eventCamera; // offset 0x000cdeb0 // 31 functions /* * Offset 0x45AB8, from D:\driver2\game\C\EVENT.C (lines 249..293) * Stack frame base $sp, size 16 */ int /*$ra*/ GetVisValue(int index /*$t1*/, int zDir /*$a1*/) { // line 1, offset 0x45ab8 int value; // $v1 int radius; // $a0 { // line 7, offset 0x45ac8 int camera; // $a0 } // line 10, offset 0x45b28 { // line 14, offset 0x45b30 struct _EVENT *ev; // $a0 int multiple; // $a2 { // line 25, offset 0x45bbc struct VECTOR pos; // stack offset -16 } // line 32, offset 0x45c3c } // line 34, offset 0x45c40 } // line 45, offset 0x45c68 /* * Offset 0x45C68, from D:\driver2\game\C\EVENT.C (lines 297..399) * Stack frame base $sp, size 568 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ VisibilityLists(enum VisType type /*$a0*/, int i /*$s2*/) { // line 1, offset 0x45c68 static unsigned short xList[128]; // offset 0x0 static unsigned short zList[128]; // offset 0x100 static unsigned short *firstX[2]; // offset 0x0 static unsigned short *firstZ[2]; // offset 0x8 static int count; // offset 0x10 { // line 34, offset 0x45d98 static unsigned short *list[2]; // offset 0x50 int table[128]; // stack offset -552 int j; // $s0 { // line 42, offset 0x45e10 int tempList; // $t7 int k; // $t0 } // line 53, offset 0x45eb8 } // line 55, offset 0x45ecc { // line 58, offset 0x45f14 int camera; // $a1 } // line 64, offset 0x45f78 { // line 68, offset 0x45f90 struct _EVENT *ev; // $a0 } // line 87, offset 0x46068 { // line 90, offset 0x46068 struct _EVENT *ev; // $v1 } // line 101, offset 0x460bc } // line 103, offset 0x460ec /* * Offset 0x460EC, from D:\driver2\game\C\EVENT.C (lines 422..468) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ InitTrain(struct _EVENT *ev /*$s0*/, int count /*$s3*/, int type /*$a2*/) { // line 1, offset 0x460ec int height; // $s2 int length; // $s1 int *to; // $a0 } // line 47, offset 0x46258 /* * Offset 0x46258, from D:\driver2\game\C\EVENT.C (lines 515..963) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ SetUpEvents(int full /*stack 0*/) { // line 1, offset 0x46258 int count; // $s5 int *p; // $s2 int cEvents; // stack offset -52 struct _EVENT **e; // stack offset -56 { // line 25, offset 0x46310 int ElTrackModel; // stack offset -48 int carModel; // stack offset -44 int direction; // $fp int i; // $s3 { // line 36, offset 0x46334 int cBridges; // $s1 int timeOffset; // $a2 int loop; // $a3 } // line 91, offset 0x46548 { // line 110, offset 0x46628 int cCarriages; // $s0 int first; // $s1 { // line 119, offset 0x46630 } // line 120, offset 0x46644 } // line 149, offset 0x4675c } // line 188, offset 0x468c8 { // line 243, offset 0x46aa4 int trainModel; // $s5 int loop; // $s1 int carriages; // $s2 { // line 296, offset 0x46c34 int loop; // $t1 { // line 309, offset 0x46dd8 int detonatorModel; // $v0 } // line 314, offset 0x46e30 } // line 315, offset 0x46e30 } // line 319, offset 0x46e38 { // line 323, offset 0x46e38 int detonatorModel; // $s3 int loop; // $s1 { // line 367, offset 0x46f84 int loop; // $s1 { // line 373, offset 0x47094 struct XYPAIR offset; // stack offset -64 } // line 381, offset 0x471a0 } // line 389, offset 0x47218 { // line 394, offset 0x4724c } // line 431, offset 0x474bc } // line 433, offset 0x474bc } // line 449, offset 0x47538 /* * Offset 0x47538, from D:\driver2\game\C\EVENT.C (lines 991..1103) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ SetCamera(struct _EVENT *ev /*$s5*/) { // line 1, offset 0x47538 int rotation; // $s4 int axis; // $a3 struct VECTOR pivot; // stack offset -96 int iPivot; // $a2 int height; // $a1 struct SVECTOR offset; // stack offset -80 { // line 46, offset 0x47688 struct MATRIX matrix; // stack offset -72 struct SVECTOR temp; // stack offset -40 { // line 54, offset 0x4770c } // line 64, offset 0x4775c } // line 66, offset 0x4775c } // line 113, offset 0x479dc /* * Offset 0x479DC, from D:\driver2\game\C\EVENT.C (lines 1152..1208) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StepFromToEvent(struct _EVENT *ev /*$a3*/) { // line 1, offset 0x479dc { // line 8, offset 0x47a08 int *from; // $a1 int *to; // $t4 long *current; // $t0 int d; // $a0 int d2; // $t2 } // line 56, offset 0x47bc4 } // line 57, offset 0x47bd4 /* * Offset 0x47BD4, from D:\driver2\game\C\EVENT.C (lines 1214..1448) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ StepPathEvent(struct _EVENT *ev /*$s0*/) { // line 1, offset 0x47bd4 int *from; // $a1 int *to; // $t1 long *current; // $t3 static int speed; // offset 0x20 { // line 11, offset 0x47c08 int flags; // $v0 } // line 19, offset 0x47c34 { // line 28, offset 0x47c7c enum Station station; // $t2 { // line 62, offset 0x47d2c int direction; // $t2 int loop; // $a2 int *i; // $a0 int turn[4]; // stack offset -48 struct XZPAIR centre; // stack offset -32 struct XZPAIR offset; // stack offset -24 } // line 134, offset 0x47f98 { // line 141, offset 0x47fb0 int d; // $a0 int d1; // $v1 int dir; // $t4 } // line 233, offset 0x482f8 } // line 234, offset 0x482f8 } // line 235, offset 0x4830c /* * Offset 0x4830C, from D:\driver2\game\C\EVENT.C (lines 1478..1632) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ StepHelicopter(struct _EVENT *ev /*$s0*/) { // line 1, offset 0x4830c static int rotacc; // offset 0xa4 { // line 7, offset 0x48334 int b; // $a0 int c; // $t2 int d; // $v1 int t; // $a1 int t2; // $a3 int t3; // $v1 int dx1; // $a2 int dx2; // $t1 int dx3; // $t0 int dz1; // $v0 int dz2; // $a3 int dz3; // $a0 { // line 44, offset 0x484a0 struct XZPAIR vel; // stack offset -56 int direction; // $t1 int temp; // $t1 int dt; // $a0 int d2p; // $v1 int d2r; // $v1 int pitch; // $a1 int roll; // $a2 static int rotating; // offset 0x24 } // line 99, offset 0x487f4 { // line 112, offset 0x48854 struct VECTOR pos; // stack offset -48 } // line 113, offset 0x48854 } // line 131, offset 0x48930 { // line 135, offset 0x48948 struct VECTOR pos; // stack offset -56 struct VECTOR drift; // stack offset -32 } // line 135, offset 0x48948 } // line 155, offset 0x48a60 /* * Offset 0x48A60, from D:\driver2\game\C\EVENT.C (lines 1642..1950) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ StepEvents() { // line 3, offset 0x48a60 struct _EVENT *ev; // $s0 { // line 29, offset 0x48ac4 struct VECTOR old; // stack offset -72 int onBoatLastFrame; // $s7 { // line 34, offset 0x48acc int dist; // stack offset -48 int loop; // $s2 struct _CAR_DATA *cp; // $s1 } // line 57, offset 0x48b98 { // line 72, offset 0x48c40 int d2; // $a2 } // line 75, offset 0x48cb4 { // line 82, offset 0x48cd8 } // line 83, offset 0x48cfc { // line 87, offset 0x48d10 struct XZPAIR speed; // stack offset -56 { // line 91, offset 0x48d28 int loop; // $s2 int mask; // $s1 { // line 98, offset 0x48d60 struct VECTOR *pos; // $a0 struct VECTOR *vel; // $a1 } // line 133, offset 0x48e4c } // line 134, offset 0x48e64 } // line 135, offset 0x48e64 } // line 136, offset 0x48e64 { // line 155, offset 0x48f44 { // line 160, offset 0x48f54 int sign; // $t0 unsigned short *target; // $a3 } // line 178, offset 0x49070 } // line 183, offset 0x49080 { // line 220, offset 0x4914c int thisCamera; // $s1 int otherCamera; // $s2 int loop; // $s0 unsigned short *x; // $t0 unsigned short *z; // $a3 { // line 247, offset 0x49240 struct CELL_OBJECT *cop; // $a2 } // line 294, offset 0x492c4 } // line 299, offset 0x4930c } // line 309, offset 0x49364 /* * Offset 0x49364, from D:\driver2\game\C\EVENT.C (lines 2110..2156) * Stack frame base $sp, size 128 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ DrawFerrisWheel(struct MATRIX *matrix /*$s0*/, struct VECTOR *pos /*$s1*/) { // line 1, offset 0x49364 { // line 16, offset 0x49460 int loop; // $s3 struct MODEL *model; // $s2 struct VECTOR spoke[2]; // stack offset -104 { // line 28, offset 0x494e4 struct VECTOR offset; // stack offset -72 struct VECTOR carPos; // stack offset -56 int rotation; // $v0 } // line 32, offset 0x494e4 } // line 45, offset 0x49658 } // line 47, offset 0x49684 /* * Offset 0x49684, from D:\driver2\game\C\EVENT.C (lines 2159..2237) * Stack frame base $sp, size 136 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawRotor(struct VECTOR pos /*stack 0*/, struct MATRIX *matrix /*stack 16*/, struct MATRIX *matrix /*$s4*/) { // line 1, offset 0x49684 struct SVECTOR v[5]; // stack offset -120 struct MATRIX local; // stack offset -80 struct POLY_FT4 *poly; // $t0 struct TEXTURE_DETAILS *tex; // $t3 int z; // stack offset -48 char *firstPoly; // $a1 } // line 79, offset 0x49c38 /* * Offset 0x49C38, from D:\driver2\game\C\EVENT.C (lines 2240..2515) * Stack frame base $sp, size 232 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawEvents(int camera /*stack 0*/) { // line 1, offset 0x49c38 unsigned short *x; // $a1 unsigned short *z; // $a0 int thisCamera; // stack offset -56 int otherCamera; // stack offset -52 static struct _EVENT *nearestTrain; // offset 0x28 static int distanceFromNearestTrain; // offset 0x2c { // line 36, offset 0x49d14 struct _EVENT *ev; // $s1 { // line 49, offset 0x49e0c unsigned int dist; // $v1 } // line 58, offset 0x49e74 { // line 74, offset 0x49ea4 { // line 76, offset 0x49ed4 struct MATRIX matrix; // stack offset -208 struct MATRIX ext; // stack offset -176 struct VECTOR pos; // stack offset -144 int reflection; // $s5 int temp; // stack offset -48 { // line 89, offset 0x49f48 } // line 89, offset 0x49f48 { // line 95, offset 0x49fb4 { // line 106, offset 0x4a038 struct VECTOR shadow[4]; // stack offset -128 int loop; // $t0 { // line 111, offset 0x4a05c struct XZPAIR offset; // stack offset -64 int rotate; // $a1 } // line 118, offset 0x4a0e8 } // line 121, offset 0x4a118 { // line 133, offset 0x4a17c } // line 142, offset 0x4a1b8 } // line 143, offset 0x4a1b8 { // line 153, offset 0x4a218 } // line 153, offset 0x4a218 { // line 172, offset 0x4a304 int i; // $a0 } // line 179, offset 0x4a354 { // line 184, offset 0x4a368 } // line 201, offset 0x4a3e0 } // line 245, offset 0x4a540 } // line 245, offset 0x4a540 } // line 255, offset 0x4a588 { // line 270, offset 0x4a628 } // line 270, offset 0x4a628 } // line 276, offset 0x4a658 /* * Offset 0x4A688, from D:\driver2\game\C\EVENT.C (lines 2560..2680) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ struct _sdPlane * /*$ra*/ EventSurface(struct VECTOR *pos /*$a0*/, struct _sdPlane *plane /*$s1*/) { // line 1, offset 0x4a688 struct _EVENT *ev; // $s0 int i; // $a2 { // line 12, offset 0x4a700 int dist; // $a3 int end; // $a1 int cos; // $a2 } // line 63, offset 0x4a880 { // line 68, offset 0x4a894 int dist; // stack offset -24 { // line 72, offset 0x4a8a4 int sin; // $a3 int cos; // $a2 int height; // $t0 int offset; // $a0 } // line 104, offset 0x4aa20 } // line 105, offset 0x4aa20 } // line 121, offset 0x4aa78 /* * Offset 0x4AA78, from D:\driver2\game\C\EVENT.C (lines 2718..2991) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ struct VECTOR * /*$ra*/ TriggerEvent(int i /*$s4*/) { // line 1, offset 0x4aa78 static int stage[10]; // offset 0x200 struct VECTOR *pos; // $s7 { // line 8, offset 0x4aab0 int loop; // $v1 } // line 13, offset 0x4aad0 { // line 21, offset 0x4ab20 struct _EVENT *ev; // $a2 } // line 22, offset 0x4ab20 { // line 36, offset 0x4ac08 { // line 39, offset 0x4ac08 struct MissionTrain *train; // $s1 { // line 45, offset 0x4ac38 } // line 51, offset 0x4ac50 { // line 56, offset 0x4ac5c struct _EVENT *ev; // $s0 int count; // $s2 int offset; // $s6 { // line 67, offset 0x4acac int pos; // $a1 } // line 67, offset 0x4acac } // line 99, offset 0x4ad88 } // line 101, offset 0x4ad88 { // line 113, offset 0x4adb8 struct _EVENT *ev; // $v1 int count; // $a0 } // line 130, offset 0x4ae04 } // line 142, offset 0x4ae28 { // line 149, offset 0x4ae90 } // line 179, offset 0x4af60 { // line 187, offset 0x4afa8 { // line 189, offset 0x4afa8 int loop; // $s0 } // line 205, offset 0x4b044 } // line 223, offset 0x4b0d0 } // line 274, offset 0x4b29c /* * Offset 0x4B29C, from D:\driver2\game\C\EVENT.C (lines 2999..3141) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SpecialCamera(enum SpecialCamera type /*$t2*/, int change /*$a1*/) { // line 1, offset 0x4b29c static int rememberCamera[3]; // offset 0x230 static short boatCamera[6]; // offset 0x684 { // line 14, offset 0x4b2e4 int *hackCamera; // $a2 short *boat; // $t3 } // line 115, offset 0x4b540 } // line 143, offset 0x4b5fc /* * Offset 0x4B5FC, from D:\driver2\game\C\EVENT.C (lines 3152..3277) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ DetonatorTimer() { // line 2, offset 0x4b5fc static struct SVECTOR rememberCameraAngle; // offset 0x30 { // line 16, offset 0x4b698 { // line 23, offset 0x4b6b0 static int count; // offset 0x38 { // line 27, offset 0x4b6cc struct VECTOR pos; // stack offset -32 } // line 32, offset 0x4b700 { // line 36, offset 0x4b720 struct VECTOR pos; // stack offset -32 } // line 37, offset 0x4b720 } // line 52, offset 0x4b7c8 } // line 58, offset 0x4b7dc { // line 66, offset 0x4b864 struct _EVENT *ev; // $s0 struct VECTOR pos; // stack offset -32 { // line 95, offset 0x4b9b0 struct VECTOR *epicentre; // $v1 } // line 108, offset 0x4ba08 } // line 123, offset 0x4ba8c } // line 126, offset 0x4bab0 /* * Offset 0x4BAB0, from D:\driver2\game\C\EVENT.C (lines 3288..3312) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ MultiCarEvent(struct _TARGET *target /*$a0*/) { // line 1, offset 0x4bab0 struct MULTICAR_DATA *data; // $s0 int i; // $s1 struct _EVENT *ev; // $s2 { // line 13, offset 0x4baf8 int n; // $a1 } // line 15, offset 0x4baf8 } // line 25, offset 0x4bbd4 /* * Offset 0x4BBD4, from D:\driver2\game\C\EVENT.C (lines 483..511) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitEvents() { } /* * Offset 0x4BC50, from D:\driver2\game\C\EVENT.C (lines 1107..1124) * Stack frame base $sp, size 0 */ void /*$ra*/ EventCollisions(struct _CAR_DATA *cp /*$a2*/, int type /*$a1*/) { // line 1, offset 0x4bc50 static struct SVECTOR offset; // offset 0x18 } // line 18, offset 0x4bd2c /* * Offset 0x4BD2C, from D:\driver2\game\C\EVENT.C (lines 2994..2995) * Stack frame base $sp, size 0 */ void /*$ra*/ OffsetTarget(struct VECTOR *target /*$a0*/) { } /* * Offset 0x4BD6C, from D:\driver2\game\C\EVENT.C (lines 2684..2693) * Stack frame base $sp, size 0 */ void /*$ra*/ MakeEventTrackable(struct _EVENT *ev /*$a0*/) { // line 1, offset 0x4bd6c struct _EVENT **p; // $v1 } // line 10, offset 0x4bda0 /* * Offset 0x4BDA0, from D:\driver2\game\C\EVENT.C (lines 2527..2557) * Stack frame base $sp, size 0 */ int /*$ra*/ OnBoat(struct VECTOR *pos /*$t1*/, struct _EVENT *ev /*$a1*/, int *dist /*$a2*/) { // line 1, offset 0x4bda0 int halfBoatWidth; // $t0 int halfBoatLength; // $a0 } // line 31, offset 0x4be24 /* * Offset 0x4BE24, from D:\driver2\game\C\EVENT.C (lines 2520..2523) * Stack frame base $sp, size 0 */ void /*$ra*/ BoatOffset(struct SVECTOR *offset /*$a0*/, struct _EVENT *ev /*$a1*/) { } /* * Offset 0x4BE5C, from D:\driver2\game\C\EVENT.C (lines 402..414) * Stack frame base $sp, size 0 */ void /*$ra*/ SetElTrainRotation(struct _EVENT *ev /*$a1*/) { } /* * Offset 0x4BEB8, from D:\driver2\game\C\EVENT.C (lines 471..478) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitDoor(struct FixedEvent *ev /*$a0*/, struct _EVENT ***e /*$a1*/, int *cEvents /*$a2*/) { } /* * Offset 0x4BF54, from D:\driver2\game\C\EVENT.C (lines 974..979) * Stack frame base $sp, size 16 * Saved registers at offset -4: s0 s1 s2 s3 */ void /*$ra*/ InitEventCamera() { } /* * Offset 0x4C014, from D:\driver2\game\C\EVENT.C (lines 983..987) * Stack frame base $sp, size 0 */ void /*$ra*/ ResetEventCamera() { } /* * Offset 0x4C0A4, from D:\driver2\game\C\EVENT.C (lines 1127..1149) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ NextNode(struct _EVENT *ev /*$a0*/) { } /* * Offset 0x4C158, from D:\driver2\game\C\EVENT.C (lines 1452..1475) * Stack frame base $sp, size 0 */ int /*$ra*/ GetBridgeRotation(int timer /*$a0*/) { // line 1, offset 0x4c158 int angle; // $v1 } // line 24, offset 0x4c208 /* * Offset 0x4C208, from D:\driver2\game\C\EVENT.C (lines 2696..2714) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ TriggerDoor(struct FixedEvent *door /*$a3*/, int *stage /*$a1*/, int sound /*$a2*/) { } /* * Offset 0x4C280, from D:\driver2\game\C\EVENT.C (lines 3144..3149) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ScreenShake(int count /*$a0*/, struct SVECTOR *ang /*$s0*/) { // line 1, offset 0x4c280 } // line 6, offset 0x4c330 Source file(s) D:\driver2\game\C\FELONY.C+D:\driver2\game\FELONY.C, object file obj\felony.obj overlay id // 70 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct FELONY_DATA { struct FELONY_DELAY occurrenceDelay[12]; // size=48, offset=0 struct FELONY_DELAY reoccurrenceDelay[12]; // size=48, offset=48 struct FELONY_VALUE value[12]; // size=48, offset=96 int pursuitFelonyScale; // size=0, offset=144 }; struct DRIVER2_STRAIGHT { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 unsigned short length; // size=0, offset=8 short bing; // size=0, offset=10 short angle; // size=0, offset=12 short ConnectIdx[4]; // size=8, offset=14 char NumLanes; // size=0, offset=22 char LaneDirs; // size=0, offset=23 char AILanes; // size=0, offset=24 char packing; // size=0, offset=25 }; struct DRIVER2_JUNCTION { short ExitIdx[4]; // size=8, offset=0 unsigned long flags; // size=0, offset=8 }; struct DRIVER2_CURVE { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short start; // size=0, offset=8 short end; // size=0, offset=10 short ConnectIdx[4]; // size=8, offset=12 short gradient; // size=0, offset=20 short height; // size=0, offset=22 char NumLanes; // size=0, offset=24 char LaneDirs; // size=0, offset=25 char inside; // size=0, offset=26 char AILanes; // size=0, offset=27 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; // 105 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct FELONY_DATA FELONY_DATA; typedef struct DRIVER2_STRAIGHT DRIVER2_STRAIGHT; typedef struct DRIVER2_JUNCTION DRIVER2_JUNCTION; typedef struct DRIVER2_CURVE DRIVER2_CURVE; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; // 0 labels // 15 external declarations extern short initialOccurrenceDelay[12]; // offset 0x0009ed98 extern short initialReccurrenceDelay[12]; // offset 0x0009edb0 extern struct FELONY_VALUE initialFelonyValue[12]; // offset 0x0009edc8 extern int test3; // offset 0x000aadf8 extern int test4; // offset 0x000aadfc extern int test5; // offset 0x000aae00 extern int test6; // offset 0x000aae04 extern int test7; // offset 0x000aae08 extern int test8; // offset 0x000aae0c extern int FelonyIncreaseTime; // offset 0x000aade8 extern int FelonyDecreaseTime; // offset 0x000aade4 extern int FelonyIncreaseTimer; // offset 0x000aadf0 extern int FelonyDecreaseTimer; // offset 0x000aadec extern short playerLastRoad; // offset 0x000aadf4 extern char last_cop_phrase; // offset 0x000aade0 // 9 functions /* * Offset 0x4C330, from D:\driver2\game\C\FELONY.C (lines 476..587) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ NoteFelony(struct FELONY_DATA *pFelonyData /*$a3*/, char type /*$s3*/, short scale /*$t0*/) { // line 1, offset 0x4c330 int felonyTooLowForRoadblocks; // $s4 { // line 2, offset 0x4c3a8 struct FELONY_DELAY *pFelonyDelay; // $v1 } // line 19, offset 0x4c3cc { // line 36, offset 0x4c400 int additionalFelonyPoints; // $a0 } // line 52, offset 0x4c514 { // line 77, offset 0x4c630 char rnd; // $s1 int dir; // $a3 } // line 107, offset 0x4c804 } // line 112, offset 0x4c894 /* * Offset 0x4C8B4, from D:\driver2\game\C\FELONY.C (lines 597..658) * Stack frame base $sp, size 0 */ void /*$ra*/ AdjustFelony(struct FELONY_DATA *pFelonyData /*$a0*/) { // line 1, offset 0x4c8b4 { // line 52, offset 0x4cbe8 struct FELONY_DELAY *pFelonyDelay; // $v1 } // line 61, offset 0x4cc28 } // line 62, offset 0x4cc28 /* * Offset 0x4CC28, from D:\driver2\game\C\FELONY.C (lines 668..805) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CheckPlayerMiscFelonies() { // line 2, offset 0x4cc28 struct FELONY_DATA *pFelonyData; // $s4 struct DRIVER2_CURVE *cv; // $s5 struct DRIVER2_STRAIGHT *st; // $s6 struct _CAR_DATA *cp; // $s3 struct VECTOR *carPos; // $s2 int surfInd; // $s0 { // line 22, offset 0x4ccc0 char i; // $a1 { // line 31, offset 0x4cd64 struct DRIVER2_JUNCTION *jn; // $a2 short exitId; // $s1 } // line 47, offset 0x4ce0c } // line 48, offset 0x4ce0c { // line 48, offset 0x4ce0c char goingWrongWay; // $s7 int lane; // $s0 int dx; // $v1 int dz; // $a0 { // line 70, offset 0x4cfac } // line 80, offset 0x4d0d8 } // line 90, offset 0x4d0f8 { // line 111, offset 0x4d198 int maxSpeed; // $a0 int limit; // $v1 } // line 137, offset 0x4d250 } // line 138, offset 0x4d250 /* * Offset 0x4D280, from D:\driver2\game\C\FELONY.C (lines 810..819) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitFelonySystem() { } /* * Offset 0x4D2B8, from D:\driver2\game\C\FELONY.C (lines 824..852) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CarHitByPlayer(struct _CAR_DATA *victim /*$a0*/, int howHard /*$a2*/) { } /* * Offset 0x4D364, from D:\driver2\game\C\FELONY.C (lines 413..421) * Stack frame base $sp, size 0 */ void /*$ra*/ InitFelonyDelayArray(struct FELONY_DELAY *pFelonyDelay /*$a0*/, short *pMaximum /*$a1*/, int count /*$a2*/) { // line 1, offset 0x4d364 struct FELONY_DELAY *pCurrent; // $a0 } // line 9, offset 0x4d3a0 /* * Offset 0x4D3A0, from D:\driver2\game\C\FELONY.C (lines 431..445) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitFelonyData(struct FELONY_DATA *pFelonyData /*$s0*/) { // line 1, offset 0x4d3a0 { // line 1, offset 0x4d3a0 struct FELONY_VALUE *pSrc; // $v1 struct FELONY_VALUE *pDest; // $s0 struct FELONY_VALUE *pEnd; // $a0 } // line 14, offset 0x4d420 } // line 15, offset 0x4d420 /* * Offset 0x4D420, from D:\driver2\game\C\FELONY.C (lines 450..451) * Stack frame base $sp, size 0 */ int /*$ra*/ GetCarHeading(int direction /*$a0*/) { } /* * Offset 0x4D430, from D:\driver2\game\C\FELONY.C (lines 454..465) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ char /*$ra*/ GetCarDirectionOfTravel(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x4d430 int direction; // $v0 } // line 12, offset 0x4d478 Source file(s) D:\driver2\game\C\FMVPLAY.C+D:\driver2\game\FMVPLAY.C, object file obj\fmvplay.obj overlay id // 28 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct RENDER_ARG { unsigned char render; // size=0, offset=0 unsigned char credits; // size=0, offset=1 unsigned short recap; // size=0, offset=2 }; struct RENDER_ARGS { unsigned char nRenders; // size=0, offset=0 unsigned char subtitle; // size=0, offset=1 char screenx; // size=0, offset=2 char screeny; // size=0, offset=3 struct RENDER_ARG Args[4]; // size=16, offset=4 }; // 53 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct RENDER_ARG RENDER_ARG; typedef struct RENDER_ARGS RENDER_ARGS; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 0 external declarations // 3 functions /* * Offset 0x4D478, from D:\driver2\game\C\FMVPLAY.C (lines 23..47) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ ReInitSystem() { // line 2, offset 0x4d478 } // line 25, offset 0x4d518 /* * Offset 0x4D518, from D:\driver2\game\C\FMVPLAY.C (lines 68..95) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ PlayFMV(unsigned char render /*$s0*/) { // line 1, offset 0x4d518 struct RENDER_ARGS args; // stack offset -40 { // line 7, offset 0x4d544 } // line 7, offset 0x4d544 { // line 12, offset 0x4d570 } // line 13, offset 0x4d578 } // line 28, offset 0x4d5d0 /* * Offset 0x4D5D0, from D:\driver2\game\C\FMVPLAY.C (lines 107..140) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PlayRender(struct RENDER_ARGS *args /*$s0*/) { // line 1, offset 0x4d5d0 static unsigned long oldsp; // offset 0x0 { // line 22, offset 0x4d634 } // line 31, offset 0x4d678 } // line 34, offset 0x4d690 Source file(s) D:\driver2\game\C\GAMESND.C+D:\driver2\game\GAMESND.C, object file obj\gamesnd.OBJ overlay id // 80 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __envsound { unsigned char type; // size=0, offset=0 unsigned char flags; // size=0, offset=1 struct VECTOR pos; // size=16, offset=4 struct VECTOR pos2; // size=16, offset=20 int bank; // size=0, offset=36 int sample; // size=0, offset=40 int vol; // size=0, offset=44 }; struct __envsoundtags { int frame_cnt; // size=0, offset=0 int func_cnt; // size=0, offset=4 int num_envsnds; // size=0, offset=8 int envsnd_cnt; // size=0, offset=12 }; struct __envsoundinfo { struct VECTOR eff_pos[4]; // size=64, offset=0 struct VECTOR cam_pos; // size=16, offset=64 float g[4]; // size=16, offset=80 int this[4]; // size=16, offset=96 int playing_sound[4]; // size=16, offset=112 int chan[4]; // size=16, offset=128 unsigned long flags; // size=0, offset=144 }; struct SPEECH_QUEUE { char allowed; // size=0, offset=0 char chan; // size=0, offset=1 char is_playing; // size=0, offset=2 int count; // size=0, offset=4 char reverb; // size=0, offset=8 int slot[7]; // size=28, offset=12 }; struct __othercarsound { int car; // size=0, offset=0 int chan; // size=0, offset=4 char in_use; // size=0, offset=8 char stopped; // size=0, offset=9 char idle; // size=0, offset=10 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct __tunnelinfo { char num_tunnels; // size=0, offset=0 char tunnel_cnt; // size=0, offset=1 struct __tunnelcoords coords[29]; // size=928, offset=4 }; struct __bitfield64 { long h; // size=0, offset=0 long l; // size=0, offset=4 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct XMCHANNEL { unsigned short Octave; // size=0, offset=0 short LVol; // size=0, offset=2 short RVol; // size=0, offset=4 short OldLVol; // size=0, offset=6 short OldRVol; // size=0, offset=8 unsigned short OldPeriod; // size=0, offset=10 unsigned char OldSample; // size=0, offset=12 unsigned long OldSOff; // size=0, offset=16 unsigned long SOffset; // size=0, offset=20 unsigned char nothing; // size=0, offset=24 unsigned char ChDead; // size=0, offset=25 unsigned char panenvflg; // size=0, offset=26 unsigned char panenvpts; // size=0, offset=27 unsigned char panenvsus; // size=0, offset=28 unsigned char panenvbeg; // size=0, offset=29 unsigned char panenvend; // size=0, offset=30 short panenvp; // size=0, offset=32 unsigned short panenva; // size=0, offset=34 unsigned short panenvb; // size=0, offset=36 unsigned short keyoffspd; // size=0, offset=38 unsigned char envflg; // size=0, offset=40 unsigned char envpts; // size=0, offset=41 unsigned char envsus; // size=0, offset=42 unsigned char envbeg; // size=0, offset=43 unsigned char envend; // size=0, offset=44 short envp; // size=0, offset=46 unsigned short enva; // size=0, offset=48 unsigned short envb; // size=0, offset=50 unsigned char ins; // size=0, offset=52 unsigned char vol; // size=0, offset=53 unsigned char dat; // size=0, offset=54 unsigned char datold; // size=0, offset=55 unsigned char eff; // size=0, offset=56 unsigned char not; // size=0, offset=57 unsigned char oldvslide; // size=0, offset=58 unsigned char oldfvslide; // size=0, offset=59 unsigned char oldfslide; // size=0, offset=60 short fadevol; // size=0, offset=62 unsigned char keyon; // size=0, offset=64 unsigned char kick; // size=0, offset=65 unsigned char sample; // size=0, offset=66 short handle; // size=0, offset=68 unsigned long start; // size=0, offset=72 unsigned char panning; // size=0, offset=76 unsigned char pansspd; // size=0, offset=77 char volume; // size=0, offset=78 unsigned short period; // size=0, offset=80 unsigned short SPUPitch; // size=0, offset=82 char transpose; // size=0, offset=84 unsigned char note; // size=0, offset=85 short ownper; // size=0, offset=86 short ownvol; // size=0, offset=88 short UserVol; // size=0, offset=90 char retrig; // size=0, offset=92 unsigned short c2spd; // size=0, offset=94 char tmpvolume; // size=0, offset=96 unsigned short tmpperiod; // size=0, offset=98 unsigned short wantedperiod; // size=0, offset=100 unsigned short slidespeed; // size=0, offset=102 unsigned short portspeed; // size=0, offset=104 unsigned char s3mtremor; // size=0, offset=106 unsigned char s3mvolslide; // size=0, offset=107 unsigned char s3mrtgspeed; // size=0, offset=108 unsigned char s3mrtgslide; // size=0, offset=109 unsigned char glissando; // size=0, offset=110 unsigned char wavecontrol; // size=0, offset=111 char vibpos; // size=0, offset=112 unsigned char vibspd; // size=0, offset=113 unsigned char vibdepth; // size=0, offset=114 char trmpos; // size=0, offset=115 unsigned char trmspd; // size=0, offset=116 unsigned char trmdepth; // size=0, offset=117 unsigned char SPUChannel; // size=0, offset=118 unsigned char Dolby; // size=0, offset=119 }; struct GEAR_DESC { int lowidl_ws; // size=0, offset=0 int low_ws; // size=0, offset=4 int hi_ws; // size=0, offset=8 int ratio_ac; // size=0, offset=12 int ratio_id; // size=0, offset=16 }; // 114 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __envsound envsound; typedef struct __envsoundtags envsoundtags; typedef struct __envsoundinfo envsoundinfo; typedef struct SPEECH_QUEUE SPEECH_QUEUE; typedef struct __othercarsound othercarsound; typedef struct __tunnelcoords tunnelcoords; typedef struct __tunnelinfo tunnelinfo; typedef struct __bitfield64 bitfield64; typedef struct CAR_POLY CAR_POLY; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct XMCHANNEL XMCHANNEL; typedef struct GEAR_DESC GEAR_DESC; typedef void *va_list; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 21 external declarations extern struct GEAR_DESC geard[2][4]; // offset 0x0009ef5c extern int coptrackpos[8]; // offset 0x0009effc extern int maxrevdrop; // offset 0x000aa518 extern int maxrevrise; // offset 0x000aa51c static int copmusic; // offset 0x000aa520 extern int TimeSinceLastSpeech; // offset 0x000aae34 extern char first_offence; // offset 0x000aae31 extern char phrase_top; // offset 0x000aae30 static int loudhail_time; // offset 0x000aae24 static char cop_model; // offset 0x000aae28 static char cop_bank; // offset 0x000aae29 static unsigned int horn_time; // offset 0x000aae2c extern struct SPEECH_QUEUE gSpeechQueue; // offset 0x000d0180 extern struct __tunnelinfo tunnels; // offset 0x000d01a8 static struct __envsound envsnd[32]; // offset 0x000cdf20 static struct __envsoundinfo ESdata[2]; // offset 0x000ce520 static struct __envsoundtags EStags; // offset 0x000ce650 static struct __othercarsound car_noise[4]; // offset 0x000ce660 static struct __othercarsound siren_noise[2]; // offset 0x000ce690 static char header_pt[3868]; // offset 0x000ce6b0 static char song_pt[2992]; // offset 0x000cf5d0 // 40 functions /* * Offset 0x4D690, from D:\driver2\game\C\GAMESND.C (lines 171..182) * Stack frame base $sp, size 0 */ int /*$ra*/ ResidentModelsBodge() { // line 1, offset 0x4d690 int i; // $a1 int j; // $a2 } // line 12, offset 0x4d784 /* * Offset 0x4D784, from D:\driver2\game\C\GAMESND.C (lines 228..294) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ LoadLevelSFX(int missionNum /*$s1*/) { // line 1, offset 0x4d784 char city_night_fx; // $s2 int i; // $s0 { // line 38, offset 0x4dad8 int mission; // $a1 } // line 41, offset 0x4dc70 } // line 67, offset 0x4de30 /* * Offset 0x4DE30, from D:\driver2\game\C\GAMESND.C (lines 305..363) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ StartGameSounds() { // line 2, offset 0x4de30 struct VECTOR *cp; // $s2 int i; // $s1 { // line 10, offset 0x4de94 int siren; // $a2 int car_model; // $s0 } // line 28, offset 0x4e07c } // line 59, offset 0x4e188 /* * Offset 0x4E188, from D:\driver2\game\C\GAMESND.C (lines 404..438) * Stack frame base $sp, size 0 */ unsigned short /*$ra*/ GetEngineRevs(struct _CAR_DATA *cp /*$t2*/) { // line 1, offset 0x4e188 int gear; // $a1 int lastgear; // $a0 int ws; // $a2 int acc; // $t1 int type; // $t0 } // line 35, offset 0x4e2e8 /* * Offset 0x4E2E8, from D:\driver2\game\C\GAMESND.C (lines 458..512) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ ControlCarRevs(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x4e2e8 unsigned short oldRevs; // $s2 unsigned short desiredRevs; // $v1 unsigned short newRevs; // $a0 int acc; // $s3 char spin; // $s4 char player_id; // $s1 { // line 40, offset 0x4e414 int revsmax; // $a3 } // line 46, offset 0x4e4d4 } // line 55, offset 0x4e560 /* * Offset 0x4E560, from D:\driver2\game\C\GAMESND.C (lines 595..634) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ControlSpeech(struct SPEECH_QUEUE *pSpeechQueue /*$s0*/) { // line 1, offset 0x4e560 } // line 40, offset 0x4e700 /* * Offset 0x4E710, from D:\driver2\game\C\GAMESND.C (lines 721..725) * Stack frame base $sp, size 0 */ void /*$ra*/ InitDopplerSFX() { // line 1, offset 0x4e710 int i; // $v1 } // line 5, offset 0x4e790 /* * Offset 0x4E790, from D:\driver2\game\C\GAMESND.C (lines 734..943) * Stack frame base $sp, size 200 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DoDopplerSFX() { // line 1, offset 0x4e790 int i; // $s1 int j; // $s0 int num_noisy_cars; // $s5 unsigned long car_dist[20]; // stack offset -176 unsigned short indexlist[20]; // stack offset -96 struct _CAR_DATA *car_ptr; // $s2 struct VECTOR *pp; // $a1 unsigned long car_flags; // $s4 char sirens; // stack offset -56 { // line 91, offset 0x4ecb8 int siren; // $v0 } // line 108, offset 0x4edc8 { // line 156, offset 0x4f09c int model; // $v1 } // line 158, offset 0x4f134 { // line 175, offset 0x4f1bc char old_idle; // $a1 { // line 180, offset 0x4f240 int model; // $v1 } // line 190, offset 0x4f314 } // line 195, offset 0x4f368 } // line 210, offset 0x4f4a0 /* * Offset 0x4F4A0, from D:\driver2\game\C\GAMESND.C (lines 946..961) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DoPoliceLoudhailer(int cars /*$s1*/, unsigned short *indexlist /*$s2*/, unsigned long *dist /*$s3*/) { // line 1, offset 0x4f4a0 int i; // $t1 int rnd; // $t0 int time; // $s0 { // line 5, offset 0x4f560 struct _CAR_DATA *car_ptr; // $a3 } // line 13, offset 0x4f624 } // line 16, offset 0x4f64c /* * Offset 0x4F668, from D:\driver2\game\C\GAMESND.C (lines 975..1011) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CollisionSound(char player_id /*$s0*/, struct _CAR_DATA *cp /*$s5*/, int impact /*$s2*/, int car_car /*$s7*/) { // line 1, offset 0x4f668 long *here; // $s3 char chan; // $s1 char crash; // $s6 char size; // $s4 { // line 8, offset 0x4f6f0 unsigned long p0dst; // $a1 unsigned long p1dst; // $a0 } // line 9, offset 0x4f6f0 { // line 18, offset 0x4f784 { // line 25, offset 0x4f898 } // line 32, offset 0x4f930 } // line 36, offset 0x4f954 } // line 37, offset 0x4f954 /* * Offset 0x4F984, from D:\driver2\game\C\GAMESND.C (lines 1019..1047) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ ExplosionSound(struct VECTOR *pos /*$s4*/, int type /*$s0*/) { // line 1, offset 0x4f984 int bang; // $s5 int pitch; // $t0 int rnd; // $s3 struct VECTOR P; // stack offset -48 int sc1; // $s2 int sc2; // $s1 } // line 29, offset 0x4fb70 /* * Offset 0x4FB94, from D:\driver2\game\C\GAMESND.C (lines 1052..1059) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ JerichoSpeak() { // line 1, offset 0x4fb94 static unsigned int j_said; // offset 0x0 int rnd; // $a1 } // line 8, offset 0x4fc90 /* * Offset 0x4FC90, from D:\driver2\game\C\GAMESND.C (lines 1103..1182) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ SoundTasks() { // line 1, offset 0x4fc90 int i; // $s2 struct _CAR_DATA *cp; // $s1 } // line 80, offset 0x500e4 /* * Offset 0x500E4, from D:\driver2\game\C\GAMESND.C (lines 1195..1255) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ InitMusic(int musicnum /*$s0*/) { // line 1, offset 0x500e4 static char *music_pt; // offset 0xc static char *sample_pt; // offset 0x10 static char xm_samples; // offset 0x4 int musicpos[3]; // stack offset -32 char *name; // $s1 int sample_len; // $s0 int music_len; // $t0 { // line 45, offset 0x501a4 } // line 52, offset 0x50208 } // line 61, offset 0x5027c /* * Offset 0x5027C, from D:\driver2\game\C\GAMESND.C (lines 1350..1363) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ Tunnels(struct __tunnelinfo *T /*$a0*/) { // line 1, offset 0x5027c int i; // $t2 int verb; // $t4 } // line 14, offset 0x50400 /* * Offset 0x50400, from D:\driver2\game\C\GAMESND.C (lines 1366..1430) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ AddTunnels(int level /*$a0*/) { } /* * Offset 0x50C08, from D:\driver2\game\C\GAMESND.C (lines 1577..1634) * Stack frame base $sp, size 0 */ int /*$ra*/ AddEnvSnd(int type /*$t4*/, char flags /*$a1*/, int bank /*$a2*/, int sample /*$a3*/, int vol /*stack 16*/, long px /*stack 20*/, long pz /*stack 24*/, int vol /*$v1*/, long px /*$t2*/) { // line 1, offset 0x50c08 void *data; // $a1 struct __envsound *ep; // $t1 struct __envsoundtags *T; // $t0 long s; // $a1 } // line 58, offset 0x50e08 /* * Offset 0x50E08, from D:\driver2\game\C\GAMESND.C (lines 1646..1703) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ IdentifyZone(struct __envsound *ep /*$a3*/, struct __envsoundinfo *E /*stack 4*/, int pl /*$a2*/) { // line 1, offset 0x50e08 int i; // $s7 int j; // $fp int tmp[4]; // stack offset -96 float d; // $s0 float _g[4]; // stack offset -80 struct __bitfield64 zones; // stack offset -64 } // line 58, offset 0x514bc /* * Offset 0x514BC, from D:\driver2\game\C\GAMESND.C (lines 1706..1741) * Stack frame base $sp, size 8 * Saved registers at offset -4: s0 s1 */ void /*$ra*/ CalcEffPos(struct __envsound *ep /*$s1*/, struct __envsoundinfo *E /*$a1*/, int pl /*$a2*/) { // line 1, offset 0x514bc int j; // $t5 int me; // $t2 } // line 36, offset 0x517d0 /* * Offset 0x517D0, from D:\driver2\game\C\GAMESND.C (lines 1744..1809) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CalcEffPos2(struct __envsound *ep /*stack 0*/, struct __envsoundinfo *E /*$s7*/, int pl /*$a2*/) { // line 1, offset 0x517d0 int j; // stack offset -56 int me; // $s5 { // line 12, offset 0x518d8 } // line 12, offset 0x518d8 } // line 66, offset 0x51f0c /* * Offset 0x51F0C, from D:\driver2\game\C\GAMESND.C (lines 1812..1840) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ UpdateEnvSnd(struct __envsound *ep /*stack 0*/, struct __envsoundinfo *E /*$s4*/, int pl /*stack 8*/) { // line 1, offset 0x51f0c int i; // stack offset -48 } // line 29, offset 0x52168 /* * Offset 0x52168, from D:\driver2\game\C\GAMESND.C (lines 1545..1549) * Stack frame base $sp, size 0 */ int /*$ra*/ SetEnvSndVol(int snd /*$a0*/, int vol /*$a1*/) { // line 1, offset 0x52168 int was; // $v0 } // line 5, offset 0x52190 /* * Offset 0x52190, from D:\driver2\game\C\GAMESND.C (lines 665..669) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ CopSay(int phrase /*$s1*/, int direction /*$s2*/) { } /* * Offset 0x5228C, from D:\driver2\game\C\GAMESND.C (lines 562..582) * Stack frame base $sp, size 0 */ char /*$ra*/ PlaySpeech(struct SPEECH_QUEUE *pSpeechQueue /*$a0*/, int sound /*$a1*/) { // line 1, offset 0x5228c char result; // $v0 int i; // $a2 } // line 21, offset 0x522ec /* * Offset 0x522EC, from D:\driver2\game\C\GAMESND.C (lines 127..150) * Stack frame base $sp, size 0 */ int /*$ra*/ CarHasSiren(int index /*$a0*/) { } /* * Offset 0x52388, from D:\driver2\game\C\GAMESND.C (lines 1510..1537) * Stack frame base $sp, size 0 */ void /*$ra*/ InitEnvSnd(int num_envsnds /*$a0*/) { // line 1, offset 0x52388 int i; // $v1 int p; // $a1 struct __envsoundtags *T; // $t1 } // line 28, offset 0x5243c /* * Offset 0x5243C, from D:\driver2\game\C\GAMESND.C (lines 1317..1324) * Stack frame base $sp, size 0 */ void /*$ra*/ InitTunnels(char n /*$a0*/) { // line 1, offset 0x5243c struct __tunnelinfo *T; // $a1 } // line 8, offset 0x52460 /* * Offset 0x52460, from D:\driver2\game\C\GAMESND.C (lines 98..118) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ LoadBankFromLump(int bank /*$s3*/, int lump /*$s2*/) { // line 1, offset 0x52460 static unsigned int blockLimit[73]; // offset 0x10 int size; // $s0 char *name; // $s1 } // line 21, offset 0x52510 /* * Offset 0x52510, from D:\driver2\game\C\GAMESND.C (lines 161..168) * Stack frame base $sp, size 0 */ int /*$ra*/ SpecialVehicleKludge(char vehicle2 /*$a0*/) { // line 1, offset 0x52510 static char kludge_bank[4][3]; // offset 0x134 } // line 8, offset 0x52540 /* * Offset 0x52540, from D:\driver2\game\C\GAMESND.C (lines 197..218) * Stack frame base $sp, size 0 */ int /*$ra*/ MapCarIndexToBank(int index /*$a1*/) { // line 1, offset 0x52540 int *RM; // $a2 static char car_banks[4][9]; // offset 0x140 } // line 22, offset 0x525f8 /* * Offset 0x525F8, from D:\driver2\game\C\GAMESND.C (lines 515..529) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ DoSpeech(int chan /*$a0*/, int sound /*$a2*/) { } /* * Offset 0x52654, from D:\driver2\game\C\GAMESND.C (lines 587..590) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitSpeechQueue(struct SPEECH_QUEUE *pSpeechQueue /*$s0*/) { } /* * Offset 0x52694, from D:\driver2\game\C\GAMESND.C (lines 677..679) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ BodSay(int phrase /*$a1*/) { } /* * Offset 0x526D0, from D:\driver2\game\C\GAMESND.C (lines 686..690) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ MissionSay(int phrase /*$a0*/) { // line 1, offset 0x526d0 } // line 5, offset 0x526fc /* * Offset 0x5270C, from D:\driver2\game\C\GAMESND.C (lines 700..712) * Stack frame base $sp, size 16 */ long /*$ra*/ jsqrt(unsigned long a /*$a0*/) { // line 1, offset 0x5270c long b1; // $a1 long b0; // $v1 } // line 13, offset 0x527c0 /* * Offset 0x527C0, from D:\driver2\game\C\GAMESND.C (lines 1085..1098) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ FunkUpDaBGMTunez(int funk /*$a0*/) { } /* * Offset 0x52848, from D:\driver2\game\C\GAMESND.C (lines 1331..1343) * Stack frame base $sp, size 0 */ int /*$ra*/ AddTunnel(long x1 /*$t1*/, long y1 /*$a1*/, long z1 /*$a2*/, long x2 /*$a3*/, long y2 /*stack 16*/, long z2 /*stack 20*/, long y2 /*$v1*/, long z2 /*$v0*/) { // line 1, offset 0x52848 struct __tunnelinfo *T; // $t0 } // line 13, offset 0x528fc /* * Offset 0x52904, from D:\driver2\game\C\GAMESND.C (lines 1555..1560) * Stack frame base $sp, size 0 */ void /*$ra*/ SetEnvSndPos(int snd /*$a0*/, long px /*$a1*/, long pz /*$a2*/) { } /* * Offset 0x52948, from D:\driver2\game\C\GAMESND.C (lines 1852..1852) * Stack frame base $sp, size 0 */ void /*$ra*/ InitLeadHorn() { } /* * Offset 0x52954, from D:\driver2\game\C\GAMESND.C (lines 1855..1866) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ LeadHorn(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x52954 static unsigned int rnd; // offset 0x8 } // line 12, offset 0x52a28 Source file(s) D:\driver2\game\C\GLAUNCH.C+D:\driver2\game\GLAUNCH.C, object file obj\glaunch.obj overlay id // 46 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PSXSCREEN { char index; // size=0, offset=0 unsigned char numButtons; // size=0, offset=1 char userFunctionNum; // size=0, offset=2 struct PSXBUTTON buttons[8]; // size=480, offset=4 }; enum GAMEMODE : char { GAMEMODE_NORMAL = 0, GAMEMODE_QUIT = 1, GAMEMODE_RESTART = 2, GAMEMODE_REPLAY = 3, GAMEMODE_DIRECTOR = 4, GAMEMODE_NEXTMISSION = 5, GAMEMODE_DEMO = 6, }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct RENDER_ARG { unsigned char render; // size=0, offset=0 unsigned char credits; // size=0, offset=1 unsigned short recap; // size=0, offset=2 }; struct RENDER_ARGS { unsigned char nRenders; // size=0, offset=0 unsigned char subtitle; // size=0, offset=1 char screenx; // size=0, offset=2 char screeny; // size=0, offset=3 struct RENDER_ARG Args[4]; // size=16, offset=4 }; struct MISSION_STEP { unsigned char flags : 3; // offset=0.0 unsigned char recap : 5; // offset=0.3 unsigned char data : 7; // offset=1.0 unsigned char disc : 1; // offset=1.7 }; // 75 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PSXSCREEN PSXSCREEN; typedef enum GAMEMODE GAMEMODE; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct RENDER_ARG RENDER_ARG; typedef struct RENDER_ARGS RENDER_ARGS; typedef struct MISSION_STEP MISSION_STEP; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 19 external declarations extern int feVariableSave[4]; // offset 0x0009f0cc static struct MISSION_STEP MissionLadder[68]; // offset 0x0009f01c static unsigned short RecapFrameLength[19]; // offset 0x0009f0a4 extern int bReturnToMain; // offset 0x000aa544 extern enum GAMEMODE CurrentGameMode; // offset 0x000aa548 extern enum GAMEMODE WantedGameMode; // offset 0x000aa549 extern int fakeOtherPlayer; // offset 0x000aa54c extern int gMissionLadderPos; // offset 0x000aa550 extern int gChaseNumber; // offset 0x000aa538 extern int gRandomChase; // offset 0x000aa53c extern int gSubGameNumber; // offset 0x000aa540 extern int gFurthestMission; // offset 0x000aa554 extern int gWantNight; // offset 0x000aa558 extern int gIdleReplay; // offset 0x000aa55c static int gLastChase; // offset 0x000aa534 extern int ScreenDepth; // offset 0x000aae38 extern struct PSXSCREEN *pScreenStack[10]; // offset 0x000d0580 extern struct PSXBUTTON *pButtonStack[10]; // offset 0x000d05a8 extern char *ScreenNames[12]; // offset 0x000d0550 // 8 functions /* * Offset 0x52A28, from D:\driver2\game\C\GLAUNCH.C (lines 834..1010) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ GameStart() { // line 2, offset 0x52a28 struct RECT rect; // stack offset -16 int oldVMode; // $s0 int SurvivalCopSettingsBackup; // $s0 } // line 177, offset 0x52e98 /* * Offset 0x52E98, from D:\driver2\game\C\GLAUNCH.C (lines 1030..1102) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ReInitFrontend() { // line 2, offset 0x52e98 struct RECT rect; // stack offset -24 } // line 73, offset 0x52fe8 /* * Offset 0x52FE8, from D:\driver2\game\C\GLAUNCH.C (lines 1105..1214) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ RunMissionLadder(int newgame /*$a1*/) { // line 1, offset 0x52fe8 struct MISSION_STEP *CurrentStep; // $s0 struct RENDER_ARGS RenderArgs; // stack offset -48 int quit; // $s3 { // line 38, offset 0x530a4 } // line 38, offset 0x530a4 { // line 43, offset 0x530b4 } // line 44, offset 0x530bc { // line 48, offset 0x530cc } // line 52, offset 0x530e8 { // line 58, offset 0x53134 { // line 67, offset 0x53198 } // line 70, offset 0x531ac } // line 107, offset 0x5328c } // line 110, offset 0x532b8 /* * Offset 0x532B8, from D:\driver2\game\C\GLAUNCH.C (lines 1279..1414) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ LaunchGame() { // line 2, offset 0x532b8 struct RECT rect; // stack offset -16 int quit; // $s0 } // line 136, offset 0x535d8 /* * Offset 0x535D8, from D:\driver2\game\C\GLAUNCH.C (lines 1222..1249) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ GetRandomChase() { // line 2, offset 0x535d8 int bump; // $s1 } // line 28, offset 0x5369c /* * Offset 0x536B0, from D:\driver2\game\C\GLAUNCH.C (lines 1018..1020) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StartRender(int renderNum /*$a0*/) { } /* * Offset 0x536D8, from D:\driver2\game\C\GLAUNCH.C (lines 1252..1267) * Stack frame base $sp, size 0 */ int /*$ra*/ FindPrevMissionFromLadderPos(int pos /*$a0*/) { // line 2, offset 0x536d8 } // line 16, offset 0x53740 /* * Offset 0x53740, from D:\driver2\game\C\GLAUNCH.C (lines 1417..1456) * Stack frame base $sp, size 0 */ int /*$ra*/ FindMissionLadderPos(int mission /*$a0*/) { // line 1, offset 0x53740 struct MISSION_STEP *step; // $a1 int pos; // $a2 } // line 40, offset 0x53814 Source file(s) D:\driver2\game\C\HANDLING.C+D:\driver2\game\HANDLING.C, object file obj\handling.OBJ overlay id // 80 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct BOUND_BOX { int x0; // size=0, offset=0 int y0; // size=0, offset=4 int z0; // size=0, offset=8 int x1; // size=0, offset=12 int y1; // size=0, offset=16 int z1; // size=0, offset=20 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_TYPE { char frictionScaleRatio; // size=0, offset=0 char aggressiveBraking; // size=0, offset=1 char fourWheelDrive; // size=0, offset=2 char autoBrakeOn; // size=0, offset=3 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CHEATS { int RearWheelSteer; // size=0, offset=0 int MiniCars; // size=0, offset=4 int Stilts; // size=0, offset=8 int LowGravity; // size=0, offset=12 int Australia; // size=0, offset=16 int MagicMirror; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; // 111 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct TILE TILE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct _CAR_DATA CAR_DATA; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct BOUND_BOX BOUND_BOX; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_TYPE HANDLING_TYPE; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CHEATS CHEATS; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct UV UV; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _sdPlane sdPlane; typedef struct MR_TIMER MR_TIMER; typedef struct CAR_POLY CAR_POLY; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct __tunnelcoords tunnelcoords; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 21 external declarations extern struct _HANDLING_TYPE handlingType[7]; // offset 0x0009f0dc extern struct CAR_COSMETICS src_cosmetics[20]; // offset 0x0009f0f8 extern int playerghost; // offset 0x000aa574 extern int autobrakeon; // offset 0x000aa560 extern int gPlayerCarDamage; // offset 0x000aa564 extern char DebrisTimer; // offset 0x000aa568 extern int last_track_state; // offset 0x000aa56c extern int doWheels; // offset 0x000aa570 extern int playerhitcopsanyway; // offset 0x000aa578 extern long *savemapinfo; // offset 0x000aa57c extern int num_active_cars; // offset 0x000aae50 extern int gTimeInWater; // offset 0x000aae54 static int hSubShad; // offset 0x000aae40 extern char continuous_track; // offset 0x000aae58 extern char rear_only; // offset 0x000aae59 extern struct SVECTOR delta; // offset 0x000aae48 extern struct CAR_COSMETICS car_cosmetics[5]; // offset 0x000d4bd0 extern struct CHEATS cheats; // offset 0x000d1250 extern struct _CAR_DATA car_data[22]; // offset 0x000d1268 extern struct BOUND_BOX bbox[20]; // offset 0x000d5070 extern struct _CAR_DATA *active_car_list[20]; // offset 0x000d1200 // 19 functions /* * Offset 0x5381C, from D:\driver2\game\C\HANDLING.C (lines 998..1039) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ InitCarPhysics(struct _CAR_DATA *cp /*$s0*/, long *startpos[4] /*$t0*/, int direction /*$a2*/) { // line 1, offset 0x5381c int ty; // $v1 int dz; // $s1 int odz; // $a3 { // line 6, offset 0x53890 unsigned long *dst; // $a1 } // line 6, offset 0x53890 } // line 42, offset 0x539e8 /* * Offset 0x539E8, from D:\driver2\game\C\HANDLING.C (lines 1055..1074) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ TempBuildHandlingMatrix(struct _CAR_DATA *cp /*$s0*/, int init /*$a1*/) { // line 1, offset 0x539e8 int ty; // $v1 int dz; // $a3 } // line 20, offset 0x53b08 /* * Offset 0x53B08, from D:\driver2\game\C\HANDLING.C (lines 1079..1102) * Stack frame base $sp, size 0 */ void /*$ra*/ UpdateCarPoints(struct CAR_COSMETICS *carCos /*$a0*/) { // line 1, offset 0x53b08 struct SVECTOR *groundCollPoints; // $a1 struct SVECTOR *wheelPoints; // $a3 int i; // $a2 } // line 24, offset 0x53c00 /* * Offset 0x53C00, from D:\driver2\game\C\HANDLING.C (lines 1192..1698) * Stack frame base $sp, size 272 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ GlobalTimeStep() { // line 2, offset 0x53c00 int i; // $fp int RKstep; // stack offset -84 int subframe; // stack offset -80 struct _CAR_DATA *c0; // $s0 static union RigidBodyState _tp[20]; // offset 0x0 static union RigidBodyState _d0[20]; // offset 0x410 static union RigidBodyState _d1[20]; // offset 0x820 { // line 76, offset 0x53c6c struct _CAR_DATA *c0; // $t2 union RigidBodyState *st; // $t1 { // line 91, offset 0x53d2c int s; // $v0 } // line 101, offset 0x53d90 { // line 109, offset 0x53e18 long AV[4]; // stack offset -248 long delta_orientation[4]; // stack offset -232 } // line 129, offset 0x53ff8 } // line 130, offset 0x53ff8 { // line 142, offset 0x54024 union RigidBodyState *thisDelta; // stack offset -76 { // line 148, offset 0x54038 struct _CAR_DATA *c0; // $s4 { // line 156, offset 0x54094 union RigidBodyState *thisState_i; // $s6 int j; // stack offset -72 { // line 1, offset 0x540ec union RigidBodyState *state; // $s6 union RigidBodyState *delta; // $a3 struct _CAR_DATA *cp; // $s4 { // line 1, offset 0x540ec long AV[4]; // stack offset -248 } // line 1, offset 0x540ec } // line 1, offset 0x540ec { // line 175, offset 0x542d8 struct _CAR_DATA *c1; // $s3 union RigidBodyState *thisState_j; // $s0 { // line 183, offset 0x54340 int strength; // $s5 long centre0[4]; // stack offset -248 long centre1[4]; // stack offset -232 long normal[4]; // stack offset -216 long collisionpoint[4]; // stack offset -200 { // line 186, offset 0x54340 struct BOUND_BOX *bb1; // $a2 struct BOUND_BOX *bb2; // $a0 } // line 217, offset 0x54440 { // line 222, offset 0x54440 int depth; // stack offset -88 } // line 227, offset 0x54460 { // line 227, offset 0x54460 long lever0[4]; // stack offset -184 long lever1[4]; // stack offset -168 long torque[4]; // stack offset -152 long pointVel0[4]; // stack offset -136 long pointVel1[4]; // stack offset -120 int strikeVel; // stack offset -68 { // line 227, offset 0x54460 int is; // $v0 int wanted; // $v1 } // line 227, offset 0x54460 { // line 295, offset 0x54870 struct VECTOR velocity; // stack offset -104 { // line 314, offset 0x54924 int debris1; // $s0 int debris2; // $s2 } // line 326, offset 0x5497c } // line 327, offset 0x5497c { // line 334, offset 0x549bc int do1; // $a0 int do2; // $t5 int m1; // $t3 int m2; // $a1 { // line 356, offset 0x54a50 long force[4]; // stack offset -104 int strength1; // $a0 int twistY; // $t4 } // line 385, offset 0x54ca0 { // line 389, offset 0x54ca8 long force[4]; // stack offset -104 int strength2; // $a1 int twistY; // $t2 } // line 418, offset 0x54edc } // line 419, offset 0x54edc } // line 426, offset 0x54f58 } // line 427, offset 0x54f58 } // line 428, offset 0x54f58 } // line 429, offset 0x54f7c } // line 430, offset 0x54f7c { // line 434, offset 0x54fa4 struct _CAR_DATA *c0; // $a1 { // line 438, offset 0x54fc4 union RigidBodyState *st; // $t2 union RigidBodyState *tp; // $a0 union RigidBodyState *d0; // $a2 union RigidBodyState *d1; // $v1 int j; // $t1 } // line 454, offset 0x550b0 } // line 455, offset 0x550b0 } // line 456, offset 0x550c8 { // line 460, offset 0x550f4 int carsDentedThisFrame; // $s2 { // line 463, offset 0x55104 { // line 464, offset 0x55104 unsigned long *dst; // $a1 } // line 464, offset 0x55104 { // line 478, offset 0x55188 } // line 481, offset 0x55198 } // line 483, offset 0x55198 } // line 487, offset 0x551ec } // line 507, offset 0x551ec /* * Offset 0x551EC, from D:\driver2\game\C\HANDLING.C (lines 1704..1740) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ SetShadowPoints(struct _CAR_DATA *c0 /*$s4*/) { // line 1, offset 0x551ec int j; // $s2 struct CAR_COSMETICS *car_cos; // $v1 struct _sdPlane *surfacePtr; // stack offset -48 { // line 14, offset 0x552a8 struct SVECTOR disp; // stack offset -104 struct VECTOR pointPos; // stack offset -96 struct VECTOR surfaceNormal; // stack offset -80 struct VECTOR surfacePoint; // stack offset -64 } // line 35, offset 0x55388 } // line 37, offset 0x553cc /* * Offset 0x553CC, from D:\driver2\game\C\HANDLING.C (lines 1753..1777) * Stack frame base $sp, size 0 */ void /*$ra*/ LongQuaternion2Matrix(long *qua[4] /*$a0*/, struct MATRIX *m /*$a1*/) { // line 1, offset 0x553cc int xx; // $t3 int xy; // $a3 int xz; // $t2 int xw; // $t0 int yy; // $t7 int yz; // $a2 int yw; // $t5 int zz; // $v1 int zw; // $a0 } // line 25, offset 0x554f0 /* * Offset 0x554F0, from D:\driver2\game\C\HANDLING.C (lines 1802..1843) * Stack frame base $sp, size 0 */ void /*$ra*/ initOBox(struct _CAR_DATA *cp /*$a2*/) { // line 1, offset 0x554f0 struct SVECTOR *boxDisp; // $a0 { // line 1, offset 0x554f0 int length; // $a1 } // line 40, offset 0x556e0 } // line 42, offset 0x556e0 /* * Offset 0x556E0, from D:\driver2\game\C\HANDLING.C (lines 1930..2013) * Stack frame base $sp, size 0 */ void /*$ra*/ CheckCarToCarCollisions() { // line 2, offset 0x556e0 struct _CAR_DATA *cp; // $t2 struct BOUND_BOX *bp; // $t1 struct BOUND_BOX *bb1; // $t0 struct BOUND_BOX *bb2; // $a1 int lbod; // $v1 int wbod; // $a0 int hbod; // $t0 struct SVECTOR *colBox; // $a1 int loop1; // $t4 int loop2; // $a3 { // line 17, offset 0x5570c int wx; // $v1 int wz; // $a2 } // line 52, offset 0x5592c } // line 84, offset 0x55a94 /* * Offset 0x55A9C, from D:\driver2\game\C\HANDLING.C (lines 2027..2374) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ ProcessCarPad(struct _CAR_DATA *cp /*$s0*/, unsigned long pad /*$s3*/, char PadSteer /*$s4*/, char use_analogue /*$s5*/) { // line 1, offset 0x55a9c int player_id; // $s1 { // line 131, offset 0x55cd8 int int_steer; // $v0 int analog_angle; // $v1 } // line 153, offset 0x55d90 { // line 233, offset 0x55ef0 int rws; // $v0 } // line 243, offset 0x55f80 { // line 255, offset 0x55fe4 int playerCar; // $v0 int dist; // $a0 int dx; // $a0 int dz; // $v0 } // line 272, offset 0x56080 { // line 276, offset 0x56090 int targetCarId; // $v1 { // line 293, offset 0x560d4 struct _CAR_DATA *tp; // $a1 int cx; // $v1 int cz; // $v0 int chase_square_dist; // $v0 { // line 300, offset 0x5610c int averagePower; // $a0 } // line 302, offset 0x56148 } // line 313, offset 0x56258 } // line 315, offset 0x56258 } // line 348, offset 0x562ac /* * Offset 0x562AC, from D:\driver2\game\C\HANDLING.C (lines 2397..2410) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ TerminateSkidding(int player_id /*$a0*/) { } /* * Offset 0x56350, from D:\driver2\game\C\HANDLING.C (lines 2414..2559) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ CheckCarEffects(struct _CAR_DATA *cp /*$s2*/, int player_id /*$s3*/) { // line 1, offset 0x56350 int skidsound; // $s1 int cnt; // $a0 int wheels_on_ground; // $s5 char lay_down_tracks; // $s7 char desired_skid; // $a1 char desired_wheel; // $a1 { // line 86, offset 0x565e8 int pitch; // $v0 } // line 90, offset 0x56644 { // line 93, offset 0x56660 int wnse; // $a0 } // line 96, offset 0x566a8 { // line 119, offset 0x567a8 int pitch; // $t0 } // line 123, offset 0x56810 { // line 132, offset 0x56840 } // line 136, offset 0x56868 } // line 146, offset 0x568ac /* * Offset 0x568D8, from D:\driver2\game\C\HANDLING.C (lines 2575..2603) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ jump_debris(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x568d8 int count; // $a1 { // line 24, offset 0x56964 struct VECTOR position; // stack offset -48 struct VECTOR velocity; // stack offset -32 } // line 28, offset 0x569f8 } // line 29, offset 0x569f8 /* * Offset 0x56A0C, from D:\driver2\game\C\HANDLING.C (lines 1875..1898) * Stack frame base $sp, size 0 */ void /*$ra*/ StepCarPhysics(struct _CAR_DATA *cp /*$a2*/) { // line 1, offset 0x56a0c struct _HANDLING_TYPE *hp; // $v0 } // line 24, offset 0x56a64 /* * Offset 0x56A6C, from D:\driver2\game\C\HANDLING.C (lines 1911..1916) * Stack frame base $sp, size 0 */ void /*$ra*/ InitialiseCarHandling() { } /* * Offset 0x56A74, from D:\driver2\game\C\HANDLING.C (lines 2607..2611) * Stack frame base $sp, size 0 */ void /*$ra*/ nose_down(struct _CAR_DATA *cp /*$a0*/) { } /* * Offset 0x56AE4, from D:\driver2\game\C\HANDLING.C (lines 1854..1861) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ RebuildCarMatrix(union RigidBodyState *st /*$a2*/, struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x56ae4 { // line 1, offset 0x56ae4 int sm; // $v1 { // line 5, offset 0x56b8c int osm; // $v0 } // line 5, offset 0x56c00 } // line 5, offset 0x56c00 } // line 8, offset 0x56c24 /* * Offset 0x56C24, from D:\driver2\game\C\HANDLING.C (lines 1106..1129) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ FixCarCos(struct CAR_COSMETICS *carCos /*$s0*/, int externalModelNumber /*$a1*/) { // line 1, offset 0x56c24 int current; // $v0 } // line 24, offset 0x56cb8 /* * Offset 0x56CB8, from D:\driver2\game\C\HANDLING.C (lines 2389..2394) * Stack frame base $sp, size 0 */ void /*$ra*/ InitSkidding() { // line 1, offset 0x56cb8 int i; // $a0 } // line 6, offset 0x56cec /* * Offset 0x56CEC, from D:\driver2\game\C\HANDLING.C (lines 2664..2668) * Stack frame base $sp, size 0 */ int /*$ra*/ GetPlayerId(struct _CAR_DATA *cp /*$a0*/) { // line 1, offset 0x56cec int i; // $a1 int p_id; // $a3 } // line 5, offset 0x56d54 Source file(s) D:\driver2\game\C\JOB_FX.C+D:\driver2\game\JOB_FX.C, object file obj\job_fx.OBJ overlay id // 70 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct _ExOBJECT { int time; // size=0, offset=0 int speed; // size=0, offset=4 int hscale; // size=0, offset=8 int rscale; // size=0, offset=12 enum ExplosionType type; // size=2, offset=16 struct VECTOR pos; // size=16, offset=20 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct BOXINFO { struct VECTOR vel; // size=16, offset=0 struct VECTOR pos; // size=16, offset=16 int sf; // size=0, offset=32 int xs; // size=0, offset=36 int zs; // size=0, offset=40 int w; // size=0, offset=44 int h; // size=0, offset=48 int zb; // size=0, offset=52 int ypos; // size=0, offset=56 }; // 98 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT4 POLY_FT4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct MAPPING MAPPING; typedef struct UV UV; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct _ExOBJECT EXOBJECT; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct BOXINFO BOXINFO; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 16 external declarations extern struct BOXINFO theBox; // offset 0x000a0368 static struct VECTOR Drift; // offset 0x000a03a4 static struct MATRIX SS; // offset 0x000a03b4 extern int crateoffset; // offset 0x000aa580 extern int littleBangTime; // offset 0x000aa584 extern int TriggerBomb; // offset 0x000aae68 extern int ExBombTimer; // offset 0x000aae64 extern int ExLastCarX; // offset 0x000aae74 extern int ExLastCarZ; // offset 0x000aae78 extern int ExBoxDamage; // offset 0x000aae60 extern int ExLastCarXVel; // offset 0x000aae6c extern int ExLastCarZVel; // offset 0x000aae70 extern struct _ExOBJECT explosion[5]; // offset 0x000d5420 static struct VECTOR SmokePos; // offset 0x000d5250 extern struct VECTOR bangPos; // offset 0x000d5260 extern struct SVECTOR globemesh[54]; // offset 0x000d5270 // 6 functions /* * Offset 0x56D54, from D:\driver2\game\C\JOB_FX.C (lines 129..168) * Stack frame base $sp, size 8 * Saved registers at offset -8: s0 */ void /*$ra*/ AddExplosion(struct VECTOR pos /*stack 0*/, int type /*stack 16*/, enum ExplosionType type /*$t0*/) { // line 1, offset 0x56d54 int i; // $t1 } // line 40, offset 0x56e44 /* * Offset 0x56E44, from D:\driver2\game\C\JOB_FX.C (lines 178..222) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ HandleExplosion() { // line 2, offset 0x56e44 int i; // $s5 struct _CAR_DATA *cp; // $s0 { // line 34, offset 0x56f4c } // line 42, offset 0x56f84 } // line 45, offset 0x56f94 /* * Offset 0x56FC0, from D:\driver2\game\C\JOB_FX.C (lines 557..581) * Stack frame base $sp, size 0 */ void /*$ra*/ initExplosion() { // line 2, offset 0x56fc0 int i; // $t0 } // line 25, offset 0x572a8 /* * Offset 0x572A8, from D:\driver2\game\C\JOB_FX.C (lines 588..754) * Stack frame base $sp, size 152 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawExplosion(int time /*stack 0*/, struct VECTOR position /*stack 4*/, int hscale /*stack 20*/, int rscale /*stack 24*/) { // line 1, offset 0x572a8 int i; // $t1 int j; // $s3 struct POLY_FT4 *poly; // $a2 struct SVECTOR *src; // $t0 struct VECTOR v; // stack offset -136 int rgb; // $s0 int z; // stack offset -56 int sf1; // $t0 int sf2; // $a0 unsigned long u0; // $s2 unsigned long u1; // $s1 unsigned long u2; // $s5 unsigned long u3; // $s4 { // line 1, offset 0x572a8 int transparency; // $t2 int green; // $t1 int blue; // $v1 } // line 1, offset 0x572a8 { // line 43, offset 0x573f0 struct MATRIX workmatrix; // stack offset -120 int sf; // $v0 int s; // $v1 int c; // $a3 } // line 50, offset 0x57444 { // line 97, offset 0x57720 int transparency; // $a0 int red; // $a1 int green; // $a2 int blue; // $v1 } // line 97, offset 0x57720 { // line 110, offset 0x577a4 struct MATRIX workmatrix; // stack offset -88 int sf; // $v0 int s; // $v1 int c; // $a3 } // line 119, offset 0x577f8 } // line 167, offset 0x57b0c /* * Offset 0x57B0C, from D:\driver2\game\C\JOB_FX.C (lines 110..120) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitExObjects() { // line 2, offset 0x57b0c int i; // $v1 } // line 11, offset 0x57b50 /* * Offset 0x57B50, from D:\driver2\game\C\JOB_FX.C (lines 232..245) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DrawAllExplosions() { // line 2, offset 0x57b50 int i; // $s1 { // line 8, offset 0x57b94 int hscale; // $v1 int rscale; // $a0 } // line 12, offset 0x57bc0 } // line 14, offset 0x57bf0 Source file(s) D:\driver2\game\C\LEADAI.C+D:\driver2\game\LEADAI.C, object file obj\leadai.obj overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct COLLISION_PACKET { short type; // size=0, offset=0 short xpos; // size=0, offset=2 short ypos; // size=0, offset=4 short zpos; // size=0, offset=6 short flags; // size=0, offset=8 short yang; // size=0, offset=10 short empty; // size=0, offset=12 short xsize; // size=0, offset=14 short ysize; // size=0, offset=16 short zsize; // size=0, offset=18 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct DRIVER2_STRAIGHT { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 unsigned short length; // size=0, offset=8 short bing; // size=0, offset=10 short angle; // size=0, offset=12 short ConnectIdx[4]; // size=8, offset=14 char NumLanes; // size=0, offset=22 char LaneDirs; // size=0, offset=23 char AILanes; // size=0, offset=24 char packing; // size=0, offset=25 }; struct DRIVER2_JUNCTION { short ExitIdx[4]; // size=8, offset=0 unsigned long flags; // size=0, offset=8 }; struct DRIVER2_CURVE { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short start; // size=0, offset=8 short end; // size=0, offset=10 short ConnectIdx[4]; // size=8, offset=12 short gradient; // size=0, offset=20 short height; // size=0, offset=22 char NumLanes; // size=0, offset=24 char LaneDirs; // size=0, offset=25 char inside; // size=0, offset=26 char AILanes; // size=0, offset=27 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct CELL_ITERATOR { struct CELL_DATA *pcd; // size=2, offset=0 struct PACKED_CELL_OBJECT *ppco; // size=8, offset=4 struct XZPAIR near; // size=8, offset=8 int use_computed; // size=0, offset=16 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; struct MAP_DATA { struct _CAR_DATA *cp; // size=0, offset=0 struct VECTOR *base; // size=16, offset=4 struct VECTOR *pos; // size=16, offset=8 struct VECTOR *vel; // size=16, offset=12 struct VECTOR *size; // size=16, offset=16 int intention; // size=0, offset=20 int *map; // size=0, offset=24 int *local; // size=0, offset=28 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; // 104 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct COLLISION_PACKET COLLISION_PACKET; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct DB DB; typedef struct DRIVER2_STRAIGHT DRIVER2_STRAIGHT; typedef struct DRIVER2_JUNCTION DRIVER2_JUNCTION; typedef struct DRIVER2_CURVE DRIVER2_CURVE; typedef struct GAP_INFO GAP_INFO; typedef struct CELL_ITERATOR CELL_ITERATOR; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef struct MAP_DATA MAP_DATA; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct CAR_POLY CAR_POLY; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct MVERTEX SV5x5[5][5]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 8 external declarations static int pathParams[5]; // offset 0x000ecbe8 extern struct LEAD_PARAMETERS LeadValues; // offset 0x000ece90 static int randState[17]; // offset 0x000eccf0 static int randIndex; // offset 0x000ecd34 extern int road_s; // offset 0x000ecd3c extern int road_c; // offset 0x000ecd38 extern int roadAhead[41]; // offset 0x000ecde8 extern int localMap[41]; // offset 0x000ecd40 // 14 functions /* * Offset 0xE70A0, from D:\driver2\game\C\LEADAI.C (lines 205..208) * Stack frame base $sp, size 0 */ int /*$ra*/ leadRand() { } /* * Offset 0xE7128, from D:\driver2\game\C\LEADAI.C (lines 278..377) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitLead(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0xe7128 { // line 41, offset 0xe71a0 struct DRIVER2_STRAIGHT *straight; // $a3 struct DRIVER2_CURVE *curve; // $t0 int i; // $a2 int dx; // $a0 int dz; // $a1 int sqrdist; // $v1 int min; // $t1 } // line 74, offset 0xe7310 } // line 100, offset 0xe73e8 /* * Offset 0xE73E8, from D:\driver2\game\C\LEADAI.C (lines 382..563) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ LeadUpdateState(struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0xe73e8 int dif; // $t0 int avel; // $s1 { // line 17, offset 0xe7498 struct VECTOR tmpStart; // stack offset -48 } // line 30, offset 0xe74ec { // line 124, offset 0xe7768 int dist; // $t1 } // line 153, offset 0xe792c { // line 160, offset 0xe7938 struct VECTOR pos; // stack offset -32 } // line 175, offset 0xe7980 } // line 182, offset 0xe7980 /* * Offset 0xE7994, from D:\driver2\game\C\LEADAI.C (lines 566..714) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ unsigned long /*$ra*/ LeadPadResponse(struct _CAR_DATA *cp /*$t0*/) { // line 1, offset 0xe7994 int dif; // $t2 int avel; // $t1 unsigned long t0; // $s0 { // line 34, offset 0xe7a4c } // line 60, offset 0xe7b18 { // line 95, offset 0xe7bc8 int deltaVel; // $a1 int deltaAVel; // $a3 int deltaPos; // $a0 int deltaTh; // $t2 int steerDelta; // $a0 } // line 122, offset 0xe7d50 { // line 128, offset 0xe7d58 int diff; // $a0 } // line 141, offset 0xe7dd4 } // line 149, offset 0xe7de8 /* * Offset 0xE7DE8, from D:\driver2\game\C\LEADAI.C (lines 718..887) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ FakeMotion(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0xe7de8 { // line 6, offset 0xe7e40 struct DRIVER2_STRAIGHT *straight; // $t1 static int d; // offset 0x0 static int toGo; // offset 0x4 static int angle; // offset 0x8 static int s; // offset 0xc static int c; // offset 0x10 int dx; // $a2 int dz; // $t3 int nextJunction; // $t0 { // line 39, offset 0xe7fa4 struct DRIVER2_JUNCTION *junction; // $s0 } // line 39, offset 0xe7fa4 } // line 60, offset 0xe8010 { // line 63, offset 0xe8010 struct DRIVER2_CURVE *curve; // $s0 int angle; // $a3 int toGo; // $v0 int radius; // $a2 int dx; // $a0 int dz; // $a1 int nextJunction; // $a2 { // line 95, offset 0xe8104 struct DRIVER2_JUNCTION *junction; // $s0 } // line 95, offset 0xe8104 { // line 130, offset 0xe81f0 struct DRIVER2_JUNCTION *junction; // $s0 } // line 130, offset 0xe81f0 } // line 156, offset 0xe82e0 { // line 159, offset 0xe82e0 struct DRIVER2_JUNCTION *junction; // $s0 } // line 167, offset 0xe8338 } // line 170, offset 0xe8338 /* * Offset 0xE834C, from D:\driver2\game\C\LEADAI.C (lines 932..1047) * Stack frame base $sp, size 0 */ void /*$ra*/ PosToIndex(int *normal /*$t1*/, int *tangent /*$t4*/, int intention /*$a2*/, struct _CAR_DATA *cp /*$a3*/) { // line 1, offset 0xe834c { // line 18, offset 0xe8398 int dist; // $a1 } // line 26, offset 0xe8420 { // line 38, offset 0xe84b0 int w; // $t2 int w80; // $t0 int t; // $a1 int t80; // $a3 { // line 47, offset 0xe85f0 int temp; // $v1 } // line 47, offset 0xe85f0 { // line 54, offset 0xe8614 int temp; // $a0 } // line 56, offset 0xe8614 { // line 66, offset 0xe865c } // line 70, offset 0xe8690 } // line 113, offset 0xe86b4 } // line 116, offset 0xe86b4 /* * Offset 0xE86BC, from D:\driver2\game\C\LEADAI.C (lines 1053..1559) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ BlockToMap(struct MAP_DATA *data /*$s3*/) { // line 1, offset 0xe86bc static int carLength; // offset 0x14 static int carWidth; // offset 0x18 static int length; // offset 0x14 static int width; // offset 0x18 static int left; // offset 0x1c static int right; // offset 0x20 static int ldist; // offset 0x24 static int rdist; // offset 0x28 static struct MAP_DATA newdata; // offset 0x30 { // line 21, offset 0xe873c int dx; // $t4 int dz; // $t3 int v; // $v1 int tangent; // $s0 int normal; // $s1 } // line 108, offset 0xe8ab0 { // line 113, offset 0xe8ab0 struct DRIVER2_CURVE *curve; // $s1 int dx; // $s6 int dz; // $s5 int v; // $a0 int angle; // $a2 int s; // $s4 int c; // $s2 int tangent; // $s0 int normal; // $s1 } // line 211, offset 0xe8e48 { // line 218, offset 0xe8e48 int dx; // $s0 int dz; // $s2 int angle; // $s5 int s; // $t3 int c; // $t2 int tangent; // $s1 int normal; // $s0 int i; // $s2 { // line 248, offset 0xe8f7c int corners[4][3]; // stack offset -112 int diff; // $v0 int overlap; // $s1 int quad1; // $a1 int quad2; // $v1 { // line 297, offset 0xe9184 int temp; // $v1 } // line 301, offset 0xe91b0 { // line 310, offset 0xe921c int vx; // $a1 int vz; // $t0 int theta; // $v0 } // line 328, offset 0xe9324 } // line 329, offset 0xe9324 { // line 334, offset 0xe9350 int temp; // $a0 } // line 354, offset 0xe93f0 } // line 358, offset 0xe93f0 { // line 372, offset 0xe9424 int *nearest; // $s2 int *furthest; // $s4 int *ndist; // $s1 int *fdist; // $s0 { // line 390, offset 0xe94a4 int temp; // stack offset -64 int tdist; // stack offset -60 } // line 414, offset 0xe9560 } // line 415, offset 0xe9560 { // line 429, offset 0xe95a0 int locall; // stack offset -56 int localr; // stack offset -48 int localld; // stack offset -52 int localrd; // stack offset -44 { // line 439, offset 0xe9614 int i; // $a2 } // line 446, offset 0xe9664 { // line 446, offset 0xe9664 int i; // $a0 } // line 459, offset 0xe96ec } // line 460, offset 0xe96ec { // line 469, offset 0xe9734 int tangent; // $a2 int i; // $a1 } // line 480, offset 0xe97b0 { // line 493, offset 0xe97b0 int dtan; // $a3 int tangent; // $a2 int i; // $a1 } // line 505, offset 0xe9874 } // line 507, offset 0xe9874 /* * Offset 0xE98A4, from D:\driver2\game\C\LEADAI.C (lines 1563..1649) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ IsOnMap(int x /*$t0*/, int z /*$a1*/, struct VECTOR *basePos /*$a2*/, int intention /*$s4*/, struct _CAR_DATA *cp /*stack 16*/, struct _CAR_DATA *cp /*$s3*/) { // line 1, offset 0xe98a4 int dx; // $s1 int dz; // $s2 { // line 14, offset 0xe9938 int tangent; // stack offset -44 int normal; // stack offset -48 } // line 28, offset 0xe99f4 { // line 33, offset 0xe99f4 struct DRIVER2_CURVE *curve; // $s0 int tangent; // stack offset -36 int normal; // stack offset -40 } // line 59, offset 0xe9b20 { // line 65, offset 0xe9b20 int tangent; // stack offset -28 int normal; // stack offset -32 } // line 79, offset 0xe9b94 } // line 87, offset 0xe9bb8 /* * Offset 0xE9BB8, from D:\driver2\game\C\LEADAI.C (lines 1657..2238) * Stack frame base $sp, size 368 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ UpdateRoadPosition(struct _CAR_DATA *cp /*$s3*/, struct VECTOR *basePos /*stack 4*/, int intention /*stack 8*/) { // line 1, offset 0xe9bb8 int sindex; // $t0 int i; // $s0 int di; // $a2 struct _CAR_DATA *lcp; // $s0 int laneAvoid; // stack offset -56 { // line 23, offset 0xe9c4c int cell_x; // $s4 int x1; // $a0 { // line 36, offset 0xe9cb0 int cell_z; // $s0 int z1; // $s1 { // line 43, offset 0xe9cfc int cbrx; // $a3 int cbrz; // $a2 int cbr; // $a0 { // line 57, offset 0xe9d94 struct CELL_OBJECT *cop; // $s1 struct CELL_ITERATOR ci; // stack offset -344 { // line 64, offset 0xe9db0 struct COLLISION_PACKET *collide; // $s0 struct MODEL *model; // $a0 int num_cb; // $a0 int box_loop; // $s2 { // line 82, offset 0xe9e4c struct MATRIX *mat; // $a1 struct VECTOR offset; // stack offset -320 struct VECTOR vel; // stack offset -304 struct VECTOR size; // stack offset -288 struct MAP_DATA data; // stack offset -272 { // line 96, offset 0xe9ef8 int sb; // $t0 int cb; // $a1 int theta; // $v1 int xsize; // $a0 int zsize; // $a3 } // line 110, offset 0xe9fd8 } // line 118, offset 0xe9fd8 } // line 138, offset 0xea068 } // line 140, offset 0xea088 } // line 141, offset 0xea088 } // line 142, offset 0xea098 } // line 143, offset 0xea0ac { // line 157, offset 0xea0cc struct SVECTOR *colBox; // $a3 struct VECTOR pos; // stack offset -344 struct VECTOR vel; // stack offset -328 struct VECTOR size; // stack offset -312 struct MAP_DATA data; // stack offset -296 } // line 188, offset 0xea260 { // line 203, offset 0xea2f4 int left; // $a3 int right; // $a2 } // line 232, offset 0xea3d8 { // line 247, offset 0xea410 int smallest; // $s1 } // line 266, offset 0xea4e0 { // line 274, offset 0xea4ec int tmpMap[41]; // stack offset -240 { // line 280, offset 0xea528 int count; // $t0 int j; // $a1 } // line 287, offset 0xea594 } // line 289, offset 0xea5c4 { // line 349, offset 0xea8ac int i; // stack offset -68 int penalty; // $a2 int left; // stack offset -72 int right; // stack offset -64 int centre; // stack offset -60 } // line 389, offset 0xeaaa0 { // line 412, offset 0xead80 int biggest; // $a3 { // line 433, offset 0xeaeac } // line 433, offset 0xeaeac } // line 442, offset 0xeaee0 { // line 446, offset 0xeaee0 int biggest; // $a1 } // line 456, offset 0xeaf4c { // line 477, offset 0xeaffc int smallForward; // $a1 int smallBack; // $v0 } // line 494, offset 0xeb060 { // line 569, offset 0xeb0c4 struct _CAR_DATA *cp; // $s3 int sindex; // $a0 int intention; // stack offset 8 } // line 569, offset 0xeb1cc } // line 582, offset 0xeb1cc /* * Offset 0xEB1FC, from D:\driver2\game\C\LEADAI.C (lines 2242..2640) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CheckCurrentRoad(struct _CAR_DATA *cp /*$s3*/) { // line 1, offset 0xeb1fc static int heading; // offset 0x1c int cr; // $s5 static int jdist; // offset 0x20 static int nextJunction; // offset 0x50 static struct VECTOR basePosition; // offset 0x60 int checkNext; // $s6 { // line 36, offset 0xeb300 struct DRIVER2_STRAIGHT *straight; // $t3 static int d; // offset 0x70 static int toGo; // offset 0x74 static int angle; // offset 0x78 static int s; // offset 0x7c static int c; // offset 0x80 int dx; // $t5 int dz; // $t6 } // line 77, offset 0xeb578 { // line 86, offset 0xeb5c4 struct DRIVER2_CURVE *curve; // $s2 static int angle; // offset 0x84 static int radius; // offset 0x88 static int dx; // offset 0x8c static int dz; // offset 0x90 static int fixedThresh; // offset 0x94 } // line 144, offset 0xeb8f8 { // line 173, offset 0xeb974 static int diff; // offset 0x98 { // line 178, offset 0xeb98c struct DRIVER2_JUNCTION *junction; // $s0 } // line 186, offset 0xeb9d4 { // line 198, offset 0xeba14 struct DRIVER2_STRAIGHT *straight; // $v1 } // line 204, offset 0xeba5c { // line 207, offset 0xeba5c struct DRIVER2_CURVE *curve; // $v1 static int dx; // offset 0x9c static int dz; // offset 0xa0 } // line 218, offset 0xebae8 { // line 233, offset 0xebb2c struct DRIVER2_STRAIGHT *straight; // $t1 static int dx; // offset 0xa4 static int dz; // offset 0xa8 static int dist; // offset 0xac static int offx; // offset 0xb0 static int offz; // offset 0xb4 } // line 233, offset 0xebb2c { // line 262, offset 0xebc5c struct DRIVER2_CURVE *curve; // $s4 static int angle; // offset 0xb8 int radius; // $s2 static int dx; // offset 0xbc static int dz; // offset 0xc0 static int basex; // offset 0xc4 static int basez; // offset 0xc8 static int dist; // offset 0xcc static int offx; // offset 0xd0 static int offz; // offset 0xd4 } // line 302, offset 0xebe44 } // line 352, offset 0xebfd0 { // line 387, offset 0xec158 } // line 388, offset 0xec158 } // line 399, offset 0xec194 /* * Offset 0xEC1C4, from D:\driver2\game\C\LEADAI.C (lines 2644..2759) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ SetTarget(struct _CAR_DATA *cp /*$s1*/, int cr /*$a0*/, int heading /*$s4*/, int *nextJunction /*$s3*/) { // line 1, offset 0xec1c4 { // line 13, offset 0xec1fc static int dx; // offset 0xd8 static int dz; // offset 0xdc } // line 24, offset 0xec278 { // line 31, offset 0xec298 struct DRIVER2_STRAIGHT *straight; // $t5 int dx; // $a1 int dz; // $a0 int rx; // $v1 int rz; // $a2 int ux; // $t0 int uz; // $t4 int d; // $v1 int angle; // $v0 int mul; // $v1 } // line 51, offset 0xec33c { // line 76, offset 0xec444 struct DRIVER2_CURVE *curve; // $s0 int angle; // $a1 int radius; // $a2 } // line 110, offset 0xec5c4 } // line 116, offset 0xec5c4 /* * Offset 0xEC5E4, from D:\driver2\game\C\LEADAI.C (lines 2763..2842) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SelectExit(struct _CAR_DATA *cp /*$s3*/, struct DRIVER2_JUNCTION *junction /*$a3*/) { // line 1, offset 0xec5e4 int onward; // $s1 int numExits; // $s2 int el[4][2]; // stack offset -56 int tmp; // $a1 int i; // $a2 int total; // $s0 { // line 18, offset 0xec6f4 } // line 25, offset 0xec71c { // line 29, offset 0xec79c } // line 36, offset 0xec7c8 { // line 40, offset 0xec844 } // line 47, offset 0xec870 } // line 80, offset 0xec99c /* * Offset 0xEC99C, from D:\driver2\game\C\LEADAI.C (lines 2848..2970) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ unsigned long /*$ra*/ FreeRoamer(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0xec99c { // line 117, offset 0xeca4c struct _CAR_DATA *pCar; // $v0 { // line 117, offset 0xeca4c int seed; // $a0 { // line 117, offset 0xeca4c int i; // $s0 } // line 118, offset 0xecb04 } // line 118, offset 0xecb04 } // line 119, offset 0xecb04 } // line 123, offset 0xecb28 /* * Offset 0xECB28, from D:\driver2\game\C\LEADAI.C (lines 2993..3006) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ unsigned long /*$ra*/ hypot(long x /*$s1*/, long y /*$a1*/) { // line 1, offset 0xecb28 { // line 4, offset 0xecb5c long t; // $v0 } // line 4, offset 0xecb64 { // line 8, offset 0xecbb4 } // line 13, offset 0xecbe8 } // line 14, offset 0xecbe8 Source file(s) D:\driver2\game\C\LOADSAVE.C+D:\driver2\game\LOADSAVE.C, object file obj\loadsave.obj overlay id // 37 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct GAME_SAVE_HEADER { unsigned long magic; // size=0, offset=0 unsigned char gMissionLadderPos; // size=0, offset=4 unsigned char pad1; // size=0, offset=5 unsigned char pad2; // size=0, offset=6 unsigned char pad3; // size=0, offset=7 struct MISSION_DATA SavedData; // size=228, offset=8 int reserved[8]; // size=32, offset=236 }; struct CONFIG_SAVE_HEADER { unsigned long magic; // size=0, offset=0 int gMasterVolume; // size=0, offset=4 int gMusicVolume; // size=0, offset=8 int gSoundMode; // size=0, offset=12 int gVibration; // size=0, offset=16 int gCopDifficultyLevel; // size=0, offset=20 int gFurthestMission; // size=0, offset=24 struct MAPPING PadMapping[2]; // size=72, offset=28 struct SCORE_TABLES ScoreTables; // size=2160, offset=100 int PALAdjustX; // size=0, offset=2260 int PALAdjustY; // size=0, offset=2264 int NTSCAdjustX; // size=0, offset=2268 int NTSCAdjustY; // size=0, offset=2272 int gSubtitles; // size=0, offset=2276 struct ACTIVE_CHEATS AvailableCheats; // size=4, offset=2280 int reserved[6]; // size=24, offset=2284 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; // 66 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct GAME_SAVE_HEADER GAME_SAVE_HEADER; typedef struct CONFIG_SAVE_HEADER CONFIG_SAVE_HEADER; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 2 external declarations extern struct ACTIVE_CHEATS AvailableCheats; // offset 0x000aae84 extern struct ACTIVE_CHEATS ActiveCheats; // offset 0x000aae80 // 9 functions /* * Offset 0x57BF0, from D:\driver2\game\C\LOADSAVE.C (lines 109..137) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ SaveConfigData(char *buffer /*$a0*/) { // line 1, offset 0x57bf0 struct CONFIG_SAVE_HEADER *header; // $s0 int i; // $t0 } // line 29, offset 0x57df0 /* * Offset 0x57DF0, from D:\driver2\game\C\LOADSAVE.C (lines 140..167) * Stack frame base $sp, size 0 */ int /*$ra*/ LoadConfigData(char *buffer /*$a0*/) { // line 1, offset 0x57df0 struct CONFIG_SAVE_HEADER *header; // $t3 int i; // $t4 } // line 28, offset 0x57fd4 /* * Offset 0x57FD4, from D:\driver2\game\C\LOADSAVE.C (lines 37..45) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ CalcReplayDataSize() { // line 2, offset 0x57fd4 } // line 9, offset 0x57ff4 /* * Offset 0x57FF4, from D:\driver2\game\C\LOADSAVE.C (lines 48..53) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ SaveReplayData(char *buffer /*$a0*/) { // line 2, offset 0x57ff4 } // line 6, offset 0x58014 /* * Offset 0x58014, from D:\driver2\game\C\LOADSAVE.C (lines 56..57) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ LoadReplayData(char *buffer /*$a0*/) { } /* * Offset 0x58034, from D:\driver2\game\C\LOADSAVE.C (lines 62..65) * Stack frame base $sp, size 0 */ int /*$ra*/ CalcGameDataSize() { } /* * Offset 0x5803C, from D:\driver2\game\C\LOADSAVE.C (lines 69..82) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ SaveGameData(char *buffer /*$s0*/) { // line 1, offset 0x5803c } // line 14, offset 0x580cc /* * Offset 0x580CC, from D:\driver2\game\C\LOADSAVE.C (lines 85..98) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ LoadGameData(char *buffer /*$a0*/) { // line 1, offset 0x580cc struct GAME_SAVE_HEADER *header; // $a0 } // line 14, offset 0x58164 /* * Offset 0x58164, from D:\driver2\game\C\LOADSAVE.C (lines 102..105) * Stack frame base $sp, size 0 */ int /*$ra*/ CalcConfigDataSize() { } Source file(s) D:\driver2\game\C\LOADVIEW.C+D:\driver2\game\LOADVIEW.C, object file obj\LoadView.obj overlay id // 66 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct POLY_GT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 unsigned char r1; // size=0, offset=16 unsigned char g1; // size=0, offset=17 unsigned char b1; // size=0, offset=18 unsigned char p1; // size=0, offset=19 short x1; // size=0, offset=20 short y1; // size=0, offset=22 unsigned char u1; // size=0, offset=24 unsigned char v1; // size=0, offset=25 unsigned short tpage; // size=0, offset=26 unsigned char r2; // size=0, offset=28 unsigned char g2; // size=0, offset=29 unsigned char b2; // size=0, offset=30 unsigned char p2; // size=0, offset=31 short x2; // size=0, offset=32 short y2; // size=0, offset=34 unsigned char u2; // size=0, offset=36 unsigned char v2; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 unsigned char r3; // size=0, offset=40 unsigned char g3; // size=0, offset=41 unsigned char b3; // size=0, offset=42 unsigned char p3; // size=0, offset=43 short x3; // size=0, offset=44 short y3; // size=0, offset=46 unsigned char u3; // size=0, offset=48 unsigned char v3; // size=0, offset=49 unsigned short pad3; // size=0, offset=50 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 99 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G4 POLY_G4; typedef struct POLY_GT4 POLY_GT4; typedef struct SPRT SPRT; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct MAPPING MAPPING; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 14 external declarations extern int screen_fade_value; // offset 0x000aa588 extern int screen_fade_start; // offset 0x000aa58c extern int screen_fade_end; // offset 0x000aa590 extern int screen_fade_speed; // offset 0x000aa594 extern int FadingScreen; // offset 0x000aa598 extern int bMissionTitleFade; // offset 0x000aa59c static int bWantFade; // offset 0x000aa5a0 static int fadeVal; // offset 0x000aa5a4 static int loading_bar_pos; // offset 0x000aae88 static int load_steps; // offset 0x000aae8c extern struct DISPENV load_disp; // offset 0x000d5640 extern struct DRAWENV load_draw; // offset 0x000d55e0 static struct POLY_GT4 fade_gt4[2]; // offset 0x000d5528 static struct POLY_G4 fade_g4[2]; // offset 0x000d5598 // 8 functions /* * Offset 0x5816C, from D:\driver2\game\C\LOADVIEW.C (lines 200..235) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ShowLoading() { // line 2, offset 0x5816c struct POLY_G4 poly; // stack offset -56 int col; // $s0 } // line 36, offset 0x58298 /* * Offset 0x582AC, from D:\driver2\game\C\LOADVIEW.C (lines 268..314) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ FadeGameScreen(int flag /*$t0*/, int speed /*$t1*/) { // line 1, offset 0x582ac static struct POLY_F4 poly; // offset 0x0 static struct POLY_FT4 p; // offset 0x20 int do_fade; // $v0 { // line 23, offset 0x582ec int val; // $a3 } // line 42, offset 0x583c8 } // line 47, offset 0x583f4 /* * Offset 0x583F4, from D:\driver2\game\C\LOADVIEW.C (lines 327..468) * Stack frame base $sp, size 288 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ ShowLoadingScreen(char *screen_name /*$fp*/, int effect /*$s7*/, int loading_steps /*$a2*/) { // line 1, offset 0x583f4 int fcount; // $s0 int j; // $s2 int done; // $fp struct RECT dest; // stack offset -264 struct SPRT prims[4]; // stack offset -256 struct POLY_FT3 nulls[4]; // stack offset -176 int fade; // $s5 int fade_step; // stack offset -48 } // line 142, offset 0x58794 /* * Offset 0x58794, from D:\driver2\game\C\LOADVIEW.C (lines 527..548) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupFadePolys() { // line 3, offset 0x58794 int i; // $a1 } // line 22, offset 0x58824 /* * Offset 0x58824, from D:\driver2\game\C\LOADVIEW.C (lines 556..576) * Stack frame base $sp, size 0 */ void /*$ra*/ DrawFadePoly() { // line 2, offset 0x58824 struct POLY_G4 *fl_g4; // $a2 } // line 21, offset 0x589b0 /* * Offset 0x589B0, from D:\driver2\game\C\LOADVIEW.C (lines 248..253) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupScreenFade(int start /*$a0*/, int end /*$a1*/, int speed /*$a2*/) { } /* * Offset 0x589D0, from D:\driver2\game\C\LOADVIEW.C (lines 482..512) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ CloseShutters(int speed /*$s5*/, int width /*$s1*/, int height /*$s4*/) { // line 1, offset 0x589d0 struct POLY_F4 poly[2]; // stack offset -80 int h; // $s0 int done; // $s2 } // line 31, offset 0x58b08 /* * Offset 0x58B08, from D:\driver2\game\C\LOADVIEW.C (lines 585..621) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DisplayMissionTitle() { // line 2, offset 0x58b08 { // line 17, offset 0x58b88 } // line 21, offset 0x58bb8 } // line 37, offset 0x58c08 Source file(s) D:\driver2\game\C\MAIN.C+D:\driver2\game\MAIN.C, object file obj\MAIN.OBJ overlay id // 95 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; enum GAMEMODE : char { GAMEMODE_NORMAL = 0, GAMEMODE_QUIT = 1, GAMEMODE_RESTART = 2, GAMEMODE_REPLAY = 3, GAMEMODE_DIRECTOR = 4, GAMEMODE_NEXTMISSION = 5, GAMEMODE_DEMO = 6, }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; enum GAMETYPE : char { GAME_MISSION = 0, GAME_TAKEADRIVE = 1, GAME_IDLEDEMO = 2, GAME_PURSUIT = 3, GAME_GETAWAY = 4, GAME_GATERACE = 5, GAME_CHECKPOINT = 6, GAME_TRAILBLAZER = 7, GAME_SURVIVAL = 8, GAME_INVALIDGAME1 = 9, GAME_REPLAYMISSION = 10, GAME_COPSANDROBBERS = 11, GAME_CAPTURETHEFLAG = 12, GAME_SECRET = 13, GAME_CONTINUEMISSION = 14, GAME_LOADEDREPLAY = 15, }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct OUT_CELL_FILE_HEADER { int cells_across; // size=0, offset=0 int cells_down; // size=0, offset=4 int cell_size; // size=0, offset=8 int num_regions; // size=0, offset=12 int region_size; // size=0, offset=16 int num_cell_objects; // size=0, offset=20 int num_cell_data; // size=0, offset=24 int ambient_light_level; // size=0, offset=28 struct VECTOR_NOPAD light_source; // size=12, offset=32 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct DRIVER2_JUNCTION { short ExitIdx[4]; // size=8, offset=0 unsigned long flags; // size=0, offset=8 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct RENDER_ARG { unsigned char render; // size=0, offset=0 unsigned char credits; // size=0, offset=1 unsigned short recap; // size=0, offset=2 }; enum EXIT_VALUE : char { MENU_QUIT_NONE = 0, MENU_QUIT_CONTINUE = 1, MENU_QUIT_QUIT = 2, MENU_QUIT_RESTART = 3, MENU_QUIT_DIRECTOR = 4, MENU_QUIT_QUICKREPLAY = 5, MENU_QUIT_BACKMENU = 6, MENU_QUIT_NEXTMISSION = 7, }; struct MENU_HEADER { char *Title; // size=0, offset=0 struct XYWH Bound; // size=8, offset=4 unsigned char NumItems; // size=0, offset=12 struct MENU_ITEM *MenuItems; // size=20, offset=16 }; struct MENU_ITEM { char *Text; // size=0, offset=0 unsigned char Type; // size=0, offset=4 unsigned char Justify; // size=0, offset=5 void *func(); // size=0, offset=8 enum EXIT_VALUE ExitValue; // size=1, offset=12 struct MENU_HEADER *SubMenu; // size=0, offset=16 }; struct XYWH { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; // 131 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT3 POLY_FT3; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef enum GAMEMODE GAMEMODE; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef enum GAMETYPE GAMETYPE; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct TEX_INFO TEX_INFO; typedef struct OUT_CELL_FILE_HEADER OUT_CELL_FILE_HEADER; typedef struct DB DB; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct DRIVER2_JUNCTION DRIVER2_JUNCTION; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct RENDER_ARG RENDER_ARG; typedef enum EXIT_VALUE EXIT_VALUE; typedef struct MENU_HEADER MENU_HEADER; typedef struct MENU_ITEM MENU_ITEM; typedef struct XYWH XYWH; typedef struct __tunnelcoords tunnelcoords; typedef struct _EVENT EVENT; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef struct MVERTEX SV5x5[5][5]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; // 0 labels // 106 external declarations extern char *LevelFiles[4]; // offset 0x000a03d4 extern char *LevelPalettes[8]; // offset 0x000a03e4 extern char *LoadingScreenNames[4]; // offset 0x000a0404 extern int PlayerCar; // offset 0x000aa5f8 extern unsigned char LoadedLevel; // offset 0x000aa5b4 extern char NewLevel; // offset 0x000aa5b5 extern char IconsLoaded; // offset 0x000aa5b6 extern char gLeadCarModel; // offset 0x000aa5b7 extern char gNoSaveAllowed; // offset 0x000aa5b8 extern char gDoneQuickReplay; // offset 0x000aa5b9 extern char gRightWayUp; // offset 0x000aa5ba extern char ghost_mode; // offset 0x000aa5bb extern char paused; // offset 0x000aa5bc extern char CamerasSaved; // offset 0x000aa5bd extern char final_replays; // offset 0x000aa5be extern char cameraview; // offset 0x000aa5bf extern char ReplayMode; // offset 0x000aa5c0 extern char NoPlayerControl; // offset 0x000aa5c1 extern short CurrentRoad; // offset 0x000aa5c2 extern short CurrentJunction; // offset 0x000aa5c4 extern int gNumCitiesOpen; // offset 0x000aa5c8 extern enum GAMETYPE GameType; // offset 0x000aa5cc extern enum GAMETYPE StoredGameType; // offset 0x000aa5cd extern int gCurrentMissionNumber; // offset 0x000aa5d0 extern int gCurrentChaseNumber; // offset 0x000aa5d4 extern int CurrentPlayerView; // offset 0x000aa5d8 extern int persuit_mode; // offset 0x000aa5dc extern int GameLevel; // offset 0x000aa5e0 extern int PlayerCarModel; // offset 0x000aa5e4 extern int AttractMode; // offset 0x000aa5e8 extern int gCopDifficultyLevel; // offset 0x000aa5ec extern int pauseflag; // offset 0x000aa5f0 extern int lead_car; // offset 0x000aa5f4 extern int CameraCar; // offset 0x000aa5fc extern int TargetCar; // offset 0x000aa600 extern unsigned char defaultPlayerModel[2]; // offset 0x000aa604 extern unsigned char defaultPlayerPalette; // offset 0x000aa606 extern int gameinit; // offset 0x000aa608 extern int gInFrontend; // offset 0x000aa60c extern int gLoadedReplay; // offset 0x000aa610 extern int gShowMap; // offset 0x000aa614 extern int gVibration; // offset 0x000aa618 extern int gInvincibleCar; // offset 0x000aa61c extern int gPlayerImmune; // offset 0x000aa620 extern int gNight; // offset 0x000aa624 extern int gStopPadReads; // offset 0x000aa628 extern int leadAIRequired; // offset 0x000aa62c extern int leadAILoaded; // offset 0x000aa630 extern int pathAILoaded; // offset 0x000aa634 extern int ObjectDrawnCounter; // offset 0x000aa644 extern int gSubtitles; // offset 0x000aa640 extern int wantedCar[2]; // offset 0x000aa638 extern int tannerDeathTimer; // offset 0x000aa5b0 static int WantPause; // offset 0x000aa5a8 static int gDieWithFade; // offset 0x000aa5ac extern int leadCarId; // offset 0x000aaf10 extern char *palette_lump; // offset 0x000aaefc extern char *car_models_lump; // offset 0x000aaeb4 extern char *map_lump; // offset 0x000aaf14 extern char InWater; // offset 0x000aaee4 extern char *mallocptr; // offset 0x000aaf48 extern char lockAllTheDoors; // offset 0x000aaf50 extern unsigned char lead_analogue; // offset 0x000aaf0c extern unsigned short controller_bits; // offset 0x000aaed0 extern unsigned long lead_pad; // offset 0x000aaf04 extern int playerDying; // offset 0x000aaedc extern int game_over; // offset 0x000aaf40 extern int HitLeadCar; // offset 0x000aaf38 extern int gDoCrates; // offset 0x000aaf28 extern int DawnCount; // offset 0x000aaf30 extern int NightAmbient; // offset 0x000aaef0 extern int gBobIndex; // offset 0x000aaf20 extern int gSinkingTimer; // offset 0x000aaf08 extern int saved_counter; // offset 0x000aaf24 extern int saved_leadcar_pos; // offset 0x000aaef8 extern int handle; // offset 0x000aaed4 extern int CameraCnt; // offset 0x000aaf18 extern int scr_z; // offset 0x000aaeac extern int gLoadedOverlay; // offset 0x000aaf34 extern int gLoadedMotionCapture; // offset 0x000aaea4 extern int gLightsOn; // offset 0x000aaf2c extern int gShowPlayerDamage; // offset 0x000aaeec extern struct MODEL *gHubcapModelPtr; // offset 0x000aaf4c extern struct MODEL *gCleanWheelModelPtr; // offset 0x000aaf1c extern struct MODEL *gFastWheelModelPtr; // offset 0x000aaf00 extern struct MODEL *gDamWheelModelPtr; // offset 0x000aaee0 extern struct MODEL *gPed1HeadModelPtr; // offset 0x000aaebc extern struct MODEL *gPed2HeadModelPtr; // offset 0x000aaec0 extern struct MODEL *gPed3HeadModelPtr; // offset 0x000aaec4 extern struct MODEL *gPed4HeadModelPtr; // offset 0x000aaec8 extern struct MODEL *gBoxModelPtr; // offset 0x000aaee8 extern struct MODEL *gRotorPtr; // offset 0x000aaf3c extern unsigned short *cell_ptrs; // offset 0x000aaf44 extern int current_object_computed_value; // offset 0x000aaeb0 extern unsigned int ObjectDrawnValue; // offset 0x000aaecc extern struct CELL_DATA *cells; // offset 0x000aaea8 extern struct PACKED_CELL_OBJECT *cell_objects; // offset 0x000aaef4 static enum PAUSEMODE PauseMode; // offset 0x000aaea0 extern int xa_timeout; // offset 0x000aaeb8 extern struct OUT_CELL_FILE_HEADER *cell_header; // offset 0x000aaed8 extern struct MODEL *modelpointers[1536]; // offset 0x000d56e8 extern struct VECTOR leadcar_pos; // offset 0x000d56a8 extern unsigned char lightsOnDelay[20]; // offset 0x000d56d0 extern struct MODEL *gCarCleanModelPtr[5]; // offset 0x000d56b8 extern struct MODEL *gCarDamModelPtr[5]; // offset 0x000d6ee8 extern struct MODEL *gCarLowModelPtr[5]; // offset 0x000d6f00 // 20 functions /* * Offset 0x58C08, from D:\driver2\game\C\MAIN.C (lines 2672..2893) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ ProcessLumps(char *lump_ptr /*$s1*/, int lump_size /*$a1*/) { // line 1, offset 0x58c08 int quit; // $s3 int lump_type; // $v1 int seg_size; // $s0 { // line 14, offset 0x58d94 { // line 173, offset 0x58f7c struct DRIVER2_JUNCTION *dst; // $a0 unsigned long *src; // $a2 int i; // $v1 } // line 186, offset 0x58fc4 { // line 193, offset 0x58fcc struct DRIVER2_JUNCTION *dst; // $a0 unsigned long *src; // $a2 int i; // $v1 } // line 206, offset 0x59018 } // line 218, offset 0x59024 } // line 222, offset 0x59050 /* * Offset 0x59050, from D:\driver2\game\C\MAIN.C (lines 2896..2966) * Stack frame base $sp, size 112 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ LoadGameLevel() { // line 2, offset 0x59050 int sector; // stack offset -32 int nsectors; // $s1 char name[64]; // stack offset -96 char *malloc_lump; // $s2 } // line 71, offset 0x59238 /* * Offset 0x59238, from D:\driver2\game\C\MAIN.C (lines 3003..3066) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitModelNames() { // line 2, offset 0x59238 } // line 64, offset 0x59330 /* * Offset 0x59330, from D:\driver2\game\C\MAIN.C (lines 3114..3508) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ GameInit() { // line 8, offset 0x59330 { // line 112, offset 0x594c0 } // line 114, offset 0x594d4 { // line 149, offset 0x595b4 } // line 149, offset 0x595b4 { // line 157, offset 0x595dc } // line 163, offset 0x59604 { // line 191, offset 0x596b0 struct STREAM_SOURCE *pinfo; // $s0 char padid; // stack offset -48 int i; // $s2 } // line 245, offset 0x5980c { // line 328, offset 0x59944 int loop; // $s0 { // line 331, offset 0x5994c } // line 331, offset 0x5994c } // line 333, offset 0x5996c { // line 341, offset 0x5998c int i; // $v1 } // line 346, offset 0x599b8 { // line 350, offset 0x599b8 } // line 361, offset 0x599b8 { // line 390, offset 0x59a0c } // line 392, offset 0x59a14 } // line 395, offset 0x59a44 /* * Offset 0x59A44, from D:\driver2\game\C\MAIN.C (lines 3555..4038) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ StepSim() { // line 2, offset 0x59a44 static unsigned long t0; // offset 0x0 static char t1; // offset 0x4 static char t2; // offset 0x5 static int oldsp; // offset 0x8 struct _CAR_DATA *lcp; // $s0 int i; // $s2 { // line 78, offset 0x59c70 int eekTimer; // $s0 { // line 84, offset 0x59cc4 } // line 86, offset 0x59cc4 } // line 90, offset 0x59d20 { // line 94, offset 0x59d6c } // line 98, offset 0x59d6c { // line 1, offset 0x59fd8 } // line 1, offset 0x59fd8 { // line 283, offset 0x5a220 int padsteer; // $a1 { // line 313, offset 0x5a320 } // line 317, offset 0x5a33c { // line 324, offset 0x5a374 } // line 324, offset 0x5a374 } // line 324, offset 0x5a374 { // line 331, offset 0x5a394 } // line 333, offset 0x5a3c8 { // line 428, offset 0x5a650 int i; // $s1 int j; // $s0 static int stupid_logic[4]; // offset 0x0 { // line 448, offset 0x5a744 } // line 450, offset 0x5a794 } // line 451, offset 0x5a7b0 { // line 478, offset 0x5a894 } // line 481, offset 0x5a8ac } // line 484, offset 0x5a8dc /* * Offset 0x5A8DC, from D:\driver2\game\C\MAIN.C (lines 4046..4187) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ GameLoop() { // line 2, offset 0x5a8dc int i; // $s0 struct RECT dest; // stack offset -24 { // line 79, offset 0x5aa2c static struct POLY_FT3 buffer[2]; // offset 0x10 static struct POLY_FT3 *null; // offset 0xc } // line 94, offset 0x5aa98 } // line 142, offset 0x5ab28 /* * Offset 0x5AB28, from D:\driver2\game\C\MAIN.C (lines 4196..4546) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ StepGame() { // line 2, offset 0x5ab28 { // line 42, offset 0x5ab60 } // line 44, offset 0x5ab70 { // line 56, offset 0x5abd8 int i; // $a1 } // line 66, offset 0x5ac3c { // line 140, offset 0x5ae20 } // line 149, offset 0x5ae50 { // line 165, offset 0x5aec0 } // line 172, offset 0x5aed0 { // line 199, offset 0x5af6c int strobe; // $v0 } // line 202, offset 0x5afb8 { // line 340, offset 0x5b2e4 } // line 342, offset 0x5b31c } // line 351, offset 0x5b384 /* * Offset 0x5B384, from D:\driver2\game\C\MAIN.C (lines 4767..4867) * Stack frame base $sp, size 72 * Saved registers at offset -8: ra */ int /*$ra*/ main() { // line 1, offset 0x5b384 { // line 1, offset 0x5b384 { // line 1, offset 0x5b384 char *PALScreenNames[4]; // stack offset -24 char *NTSCScreenNames[4]; // stack offset -40 char *OPMScreenNames[4]; // stack offset -56 } // line 1, offset 0x5b384 } // line 1, offset 0x5b384 } // line 101, offset 0x5b54c /* * Offset 0x5B54C, from D:\driver2\game\C\MAIN.C (lines 4893..4971) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ UpdatePlayerInformation() { // line 2, offset 0x5b54c struct _CAR_DATA *cp; // $s1 int count; // $s0 int scale; // $v1 int wheel; // $t1 int wheelsonwater; // $t2 } // line 79, offset 0x5b888 /* * Offset 0x5B888, from D:\driver2\game\C\MAIN.C (lines 5021..5131) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ RenderGame2(int view /*$s3*/) { // line 1, offset 0x5b888 int spaceFree; // $a1 int notInDreaAndStevesEvilLair; // $s0 { // line 46, offset 0x5b9a4 int strobe; // $v0 } // line 49, offset 0x5b9ec { // line 52, offset 0x5b9ec int i; // $s1 } // line 56, offset 0x5ba84 { // line 69, offset 0x5bae4 struct POLY_F4 *poly; // $v1 int col; // $a1 } // line 92, offset 0x5bc20 { // line 100, offset 0x5bc40 } // line 104, offset 0x5bc88 } // line 111, offset 0x5bce4 /* * Offset 0x5BCE4, from D:\driver2\game\C\MAIN.C (lines 5272..5340) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ InitGameVariables() { // line 2, offset 0x5bce4 } // line 69, offset 0x5bf74 /* * Offset 0x5BF74, from D:\driver2\game\C\MAIN.C (lines 5345..5364) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DealWithHorn(char *hr /*$s2*/, int i /*$s1*/) { // line 1, offset 0x5bf74 struct _CAR_DATA *car; // $s0 { // line 3, offset 0x5c014 } // line 18, offset 0x5c124 } // line 20, offset 0x5c154 /* * Offset 0x5C16C, from D:\driver2\game\C\MAIN.C (lines 5367..5479) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ Havana3DOcclusion(void *func() /*$a3*/, int *param /*$fp*/) { // line 1, offset 0x5c16c int outside; // $s6 int otAltered; // $s5 { // line 12, offset 0x5c208 int draw; // $s2 int loop; // $s0 } // line 106, offset 0x5c414 } // line 113, offset 0x5c458 /* * Offset 0x5C458, from D:\driver2\game\C\MAIN.C (lines 4549..4582) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DrawGame() { // line 2, offset 0x5c458 static unsigned long frame; // offset 0xc8 { // line 6, offset 0x5c480 } // line 12, offset 0x5c4d0 { // line 18, offset 0x5c4ec } // line 28, offset 0x5c554 } // line 34, offset 0x5c574 /* * Offset 0x5C574, from D:\driver2\game\C\MAIN.C (lines 4586..4589) * Stack frame base $sp, size 0 */ void /*$ra*/ EndGame(enum GAMEMODE mode /*$a0*/) { } /* * Offset 0x5C590, from D:\driver2\game\C\MAIN.C (lines 4593..4599) * Stack frame base $sp, size 0 */ void /*$ra*/ EnablePause(enum PAUSEMODE mode /*$a0*/) { } /* * Offset 0x5C5D0, from D:\driver2\game\C\MAIN.C (lines 4602..4617) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CheckForPause() { // line 2, offset 0x5c5d0 { // line 1, offset 0x5c5e4 } // line 1, offset 0x5c614 } // line 16, offset 0x5c668 /* * Offset 0x5C668, from D:\driver2\game\C\MAIN.C (lines 4870..4887) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ FadeScreen(int end_value /*$a1*/) { // line 1, offset 0x5c668 int tmp2; // $s1 } // line 18, offset 0x5c6e0 /* * Offset 0x5C6E0, from D:\driver2\game\C\MAIN.C (lines 5260..5268) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ RenderGame() { // line 2, offset 0x5c6e0 { // line 2, offset 0x5c6e0 { // line 2, offset 0x5c6e0 static unsigned long frame; // offset 0xc8 { // line 1, offset 0x5c714 } // line 1, offset 0x5c764 { // line 1, offset 0x5c780 } // line 1, offset 0x5c7e8 } // line 1, offset 0x5c7e8 } // line 1, offset 0x5c7e8 } // line 9, offset 0x5c81c /* * Offset 0x5C81C, from D:\driver2\game\C\MAIN.C (lines 2973..2990) * Stack frame base $sp, size 0 */ int /*$ra*/ ReplayLog_Fnarr_He_Said_Log(int val /*$a0*/) { } Source file(s) D:\driver2\game\C\MAP.C+D:\driver2\game\MAP.C, object file obj\map.oBJ overlay id // 57 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct AREA_LOAD_INFO { int xoffset; // size=0, offset=0 int zoffset; // size=0, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct ROAD_MAP_LUMP_DATA { int width; // size=0, offset=0 int height; // size=0, offset=4 int unitXMid; // size=0, offset=8 int unitZMid; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct Spool { unsigned short offset; // size=0, offset=0 unsigned char connected_areas[2]; // size=2, offset=2 unsigned char pvs_size; // size=0, offset=4 unsigned char cell_data_size[3]; // size=3, offset=5 unsigned char super_region; // size=0, offset=8 unsigned char num_connected_areas; // size=0, offset=9 unsigned char roadm_size; // size=0, offset=10 unsigned char roadh_size; // size=0, offset=11 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 83 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct AREA_LOAD_INFO AREA_LOAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct TEX_INFO TEX_INFO; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct ROAD_MAP_LUMP_DATA ROAD_MAP_LUMP_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct Spool Spool; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 33 external declarations extern int cells_across; // offset 0x000aa67c extern int cells_down; // offset 0x000aa680 extern int regions_across; // offset 0x000aafac extern int regions_down; // offset 0x000aaf70 extern int current_region; // offset 0x000aafb0 extern int units_across_halved; // offset 0x000aaf5c extern int units_down_halved; // offset 0x000aaf74 extern int current_cell_x; // offset 0x000aafa4 extern int current_cell_z; // offset 0x000aafa8 extern int num_models_in_pack; // offset 0x000aaf94 extern int view_dist; // offset 0x000aafa0 extern int pvs_cells_rejected; // offset 0x000aaf98 extern int pvs_objects_rejected; // offset 0x000aaf68 extern int pvs_square; // offset 0x000aaf64 extern int pvs_square_sq; // offset 0x000aaf9c extern int camera_cell_x; // offset 0x000aaf78 extern int camera_cell_z; // offset 0x000aaf7c extern int num_regions; // offset 0x000aaf6c extern int num_straddlers; // offset 0x000aafb4 extern int current_barrel_region_xcell; // offset 0x000aaf80 extern int current_barrel_region_zcell; // offset 0x000aaf84 extern int region_x; // offset 0x000aaf8c extern int region_z; // offset 0x000aaf90 extern int initarea; // offset 0x000aaf88 extern int old_region; // offset 0x000aaf60 static unsigned char *PVSEncodeTable; // offset 0x000aaf58 extern char *PVS_Buffers[4]; // offset 0x000d6f18 extern int cell_slots_add[5]; // offset 0x000d7350 extern int cell_objects_add[5]; // offset 0x000d6f28 extern int regions_unpacked[4]; // offset 0x000d7340 extern char *gRamSlotPosition[128]; // offset 0x000d6f40 extern char CurrentPVS[444]; // offset 0x000d7368 extern char nybblearray[512]; // offset 0x000d7140 // 16 functions /* * Offset 0x5C824, from D:\driver2\game\C\MAP.C (lines 438..597) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CheckUnpackNewRegions() { // line 2, offset 0x5c824 struct AREA_LOAD_INFO regions_to_unpack[3]; // stack offset -104 int leftright_unpack; // $a1 int topbottom_unpack; // $a2 int num_regions_to_unpack; // $s5 int x; // $a2 int z; // $v1 int loop; // $s6 int barrel_region; // $s1 int sortcount; // $s4 int i; // $v1 int j; // $a2 struct SVECTOR sortregions[4]; // stack offset -80 unsigned short sortorder[4]; // stack offset -48 int force_load_boundary; // $a0 { // line 101, offset 0x5c9f4 int region_to_unpack; // $s0 struct Spool *spoolptr; // $a1 { // line 121, offset 0x5ca74 } // line 141, offset 0x5cb00 } // line 142, offset 0x5cb00 { // line 146, offset 0x5cb28 } // line 156, offset 0x5cb94 } // line 160, offset 0x5cc00 /* * Offset 0x5CC00, from D:\driver2\game\C\MAP.C (lines 612..653) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ControlMap() { // line 2, offset 0x5cc00 int x; // $a2 int z; // $a1 { // line 27, offset 0x5cce4 } // line 28, offset 0x5ccec { // line 36, offset 0x5cd10 } // line 37, offset 0x5cd20 } // line 42, offset 0x5cd80 /* * Offset 0x5CD80, from D:\driver2\game\C\MAP.C (lines 677..743) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitMap() { // line 2, offset 0x5cd80 int i; // $s0 int tpage; // $v0 char result[8]; // stack offset -24 { // line 30, offset 0x5ce30 { // line 39, offset 0x5ce88 int region; // $a3 int barrel_region; // $a1 struct Spool *spoolptr; // $v1 { // line 49, offset 0x5cef4 } // line 55, offset 0x5cf20 } // line 56, offset 0x5cf20 } // line 65, offset 0x5cf90 { // line 1, offset 0x5cf90 } // line 1, offset 0x5cfa8 } // line 67, offset 0x5cfa8 /* * Offset 0x5CFA8, from D:\driver2\game\C\MAP.C (lines 824..912) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ PVSDecode(char *output /*$s2*/, char *celldata /*$s3*/, unsigned short sz /*$s0*/, int havanaCorruptCellBodge /*$s4*/) { // line 1, offset 0x5cfa8 char *decodeBuf; // $s1 { // line 1, offset 0x5cfa8 int pixelIndex; // $t0 int i; // $a0 int ni; // $a3 0x8EC spod { // line 11, offset 0x5cff4 } // line 11, offset 0x5cff4 { // line 18, offset 0x5d03c int symIndex; // $a2 int sym; // $a0 { // line 1, offset 0x5d0a8 unsigned char *pt; // $v0 } // line 1, offset 0x5d0a8 { // line 1, offset 0x5d0bc unsigned char *pt; // $v0 } // line 1, offset 0x5d0bc } // line 45, offset 0x5d104 } // line 48, offset 0x5d110 { // line 49, offset 0x5d110 int i; // $a2 int j; // $v1 int sz; // $a3 char *op; // $a1 } // line 80, offset 0x5d1e4 { // line 82, offset 0x5d1e4 int i; // $v1 } // line 87, offset 0x5d224 } // line 89, offset 0x5d224 /* * Offset 0x5D224, from D:\driver2\game\C\MAP.C (lines 928..962) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ GetPVSRegionCell2(int source_region /*$a0*/, int region /*$a1*/, int cell /*$t2*/, char *output /*$a3*/) { // line 1, offset 0x5d224 char *bp; // $a2 char *tbp; // $a1 int j; // $v1 unsigned short length; // $t0 { // line 17, offset 0x5d29c unsigned char *pt; // $a0 } // line 17, offset 0x5d29c { // line 17, offset 0x5d29c } // line 17, offset 0x5d29c { // line 1, offset 0x5d32c char *output; // $a0 { // line 1, offset 0x5d32c int k; // $v1 } // line 1, offset 0x5d35c } // line 1, offset 0x5d35c } // line 35, offset 0x5d35c /* * Offset 0x5D36C, from D:\driver2\game\C\MAP.C (lines 311..359) * Stack frame base $sp, size 0 */ void /*$ra*/ InitCellData() { // line 2, offset 0x5d36c char *alloclist; // $a2 int loop; // $v1 } // line 49, offset 0x5d40c /* * Offset 0x5D40C, from D:\driver2\game\C\MAP.C (lines 289..292) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ struct MODEL * /*$ra*/ FindModelPtrWithName(char *name /*$s4*/) { // line 1, offset 0x5d40c int dummy; // stack offset -32 { // line 1, offset 0x5d40c char *name; // $s4 int *num; // $s2 { // line 1, offset 0x5d40c int count; // $s1 char *temp; // $s0 } // line 1, offset 0x5d4a4 } // line 1, offset 0x5d4a4 } // line 4, offset 0x5d4c4 /* * Offset 0x5D4C4, from D:\driver2\game\C\MAP.C (lines 295..299) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ FindModelIdxWithName(char *name /*$s3*/) { // line 1, offset 0x5d4c4 int i; // stack offset -32 { // line 1, offset 0x5d4c4 char *name; // $s3 int *num; // $s2 { // line 1, offset 0x5d4c4 int count; // $s1 char *temp; // $s0 } // line 1, offset 0x5d540 } // line 1, offset 0x5d540 } // line 5, offset 0x5d560 /* * Offset 0x5D560, from D:\driver2\game\C\MAP.C (lines 400..419) * Stack frame base $sp, size 0 */ int /*$ra*/ PositionVisible(struct VECTOR *pos /*$a0*/) { // line 1, offset 0x5d560 int dx; // $a1 int dz; // $a0 int cellx; // $v1 int cellz; // $v0 } // line 20, offset 0x5d61c /* * Offset 0x5D61C, from D:\driver2\game\C\MAP.C (lines 378..397) * Stack frame base $sp, size 0 */ int /*$ra*/ newPositionVisible(struct VECTOR *pos /*$a0*/, char *pvs /*$a1*/, int ccx /*$a2*/, int ccz /*$a3*/) { // line 1, offset 0x5d61c int dx; // $a2 int dz; // $a0 int cellx; // $v1 int cellz; // $v0 } // line 20, offset 0x5d6c4 /* * Offset 0x5D6C4, from D:\driver2\game\C\MAP.C (lines 252..252) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessRoadsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { } /* * Offset 0x5D6CC, from D:\driver2\game\C\MAP.C (lines 247..248) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessJunctionsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { } /* * Offset 0x5D6D4, from D:\driver2\game\C\MAP.C (lines 253..253) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessRoadBoundsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { } /* * Offset 0x5D6DC, from D:\driver2\game\C\MAP.C (lines 254..254) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessJuncBoundsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { } /* * Offset 0x5D6E4, from D:\driver2\game\C\MAP.C (lines 756..778) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ GetVisSetAtPosition(struct VECTOR *pos /*$a0*/, char *tgt /*$t3*/, int *ccx /*$a1*/, int *ccz /*$a3*/) { // line 1, offset 0x5d6e4 int x; // $t2 int z; // $t1 int cx; // $t0 int cz; // $a2 int rx; // $a3 int rz; // $a0 { // line 11, offset 0x5d76c int barrel_region_x; // $v0 int barrel_region_z; // $a0 } // line 22, offset 0x5d7bc } // line 23, offset 0x5d7bc /* * Offset 0x5D7BC, from D:\driver2\game\C\MAP.C (lines 237..242) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ NewProcessRoadMapLump(struct ROAD_MAP_LUMP_DATA *pRoadMapLumpData /*$s0*/, char *pLumpFile /*$s1*/) { // line 1, offset 0x5d7bc } // line 6, offset 0x5d814 Source file(s) D:\driver2\game\C\MC_SND.C+D:\driver2\game\MC_SND.C, object file obj\mc_snd.oBJ overlay id // 69 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct __io { char in; // size=0, offset=0 char out; // size=0, offset=1 }; struct __xa_request { short delay; // size=0, offset=0 char bank; // size=0, offset=2 char track; // size=0, offset=3 char mission; // size=0, offset=4 char cutscene; // size=0, offset=5 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; // 103 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct __io io; typedef struct __xa_request xa_request; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef struct CAR_POLY CAR_POLY; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct _EVENT EVENT; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 13 external declarations static char missionstarts[42]; // offset 0x000a0414 static struct __io id_map[49]; // offset 0x000a0440 static struct __xa_request xa_data[26]; // offset 0x000a04a4 extern char es_mobile[1]; // offset 0x000aa684 extern char force_idle[8]; // offset 0x000aafd0 extern char force_siren[8]; // offset 0x000aafe0 extern int jericho_in_back; // offset 0x000aafd8 static int cutscene_timer; // offset 0x000aafb8 static int holdall; // offset 0x000aafbc static int bodgevar; // offset 0x000aafc0 static int rio_alarm; // offset 0x000aafc4 static struct __xa_request xa; // offset 0x000aafc8 static long pos[4]; // offset 0x000d7528 // 10 functions /* * Offset 0x5D814, from D:\driver2\game\C\MC_SND.C (lines 88..105) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ char /*$ra*/ GetMissionSound(char id /*$s1*/) { // line 1, offset 0x5d814 char c; // $s0 char start; // $s2 char end; // $a0 char rnd; // $t1 } // line 18, offset 0x5d950 /* * Offset 0x5D950, from D:\driver2\game\C\MC_SND.C (lines 187..270) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DoCutsceneSound() { // line 1, offset 0x5d950 { // line 4, offset 0x5d99c { // line 37, offset 0x5da88 { // line 39, offset 0x5dab0 long *here; // $t0 } // line 41, offset 0x5daec } // line 42, offset 0x5daec { // line 57, offset 0x5db9c { // line 58, offset 0x5dbac struct _CAR_DATA *you; // $s0 } // line 61, offset 0x5dbf0 } // line 63, offset 0x5dc1c } // line 82, offset 0x5dd00 } // line 84, offset 0x5dd10 /* * Offset 0x5DD10, from D:\driver2\game\C\MC_SND.C (lines 279..307) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ InitializeMissionSound() { // line 1, offset 0x5dd10 int i; // $a1 } // line 29, offset 0x5e020 /* * Offset 0x5E020, from D:\driver2\game\C\MC_SND.C (lines 321..627) * Stack frame base $sp, size 128 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DoMissionSound() { // line 1, offset 0x5e020 int i; // $a2 { // line 79, offset 0x5e1e4 long *pos; // $s5 long *vel; // $s4 { // line 83, offset 0x5e25c int chan; // $s1 } // line 83, offset 0x5e25c } // line 83, offset 0x5e25c { // line 154, offset 0x5e348 struct VECTOR Q[3]; // stack offset -96 struct VECTOR P; // stack offset -48 } // line 157, offset 0x5e410 { // line 159, offset 0x5e424 int i; // $s0 } // line 163, offset 0x5e5b8 { // line 202, offset 0x5e6f0 struct VECTOR Q[3]; // stack offset -96 struct VECTOR P; // stack offset -48 } // line 205, offset 0x5e7b8 { // line 207, offset 0x5e7cc int i; // $s0 } // line 211, offset 0x5e968 { // line 236, offset 0x5ea74 long V[3]; // stack offset -96 long *C; // $a1 } // line 245, offset 0x5eb98 } // line 307, offset 0x5ee00 /* * Offset 0x5EE00, from D:\driver2\game\C\MC_SND.C (lines 652..740) * Stack frame base $sp, size 0 */ char /*$ra*/ SilenceThisCar(int car /*$a1*/) { } /* * Offset 0x5F12C, from D:\driver2\game\C\MC_SND.C (lines 145..156) * Stack frame base $sp, size 0 */ void /*$ra*/ RequestXA() { // line 1, offset 0x5f12c } // line 12, offset 0x5f1b4 /* * Offset 0x5F1B4, from D:\driver2\game\C\MC_SND.C (lines 164..169) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ HandleRequestedXA() { // line 2, offset 0x5f1b4 } // line 6, offset 0x5f224 /* * Offset 0x5F224, from D:\driver2\game\C\MC_SND.C (lines 176..180) * Stack frame base $sp, size 0 */ void /*$ra*/ InitializeCutsceneSound(int cutscene /*$a0*/) { // line 1, offset 0x5f224 int i; // $a0 } // line 5, offset 0x5f25c /* * Offset 0x5F25C, from D:\driver2\game\C\MC_SND.C (lines 636..641) * Stack frame base $sp, size 0 */ void /*$ra*/ SetMSoundVar(int var /*$a0*/, struct VECTOR *V /*$a1*/) { } /* * Offset 0x5F294, from D:\driver2\game\C\MC_SND.C (lines 749..756) * Stack frame base $sp, size 0 */ void /*$ra*/ AdjustPlayerCarVolume() { } Source file(s) D:\driver2\game\C\MDRAW.C+D:\driver2\game\MDRAW.C, object file obj\mdraw.obj overlay id // 66 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 101 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 1 external declarations extern int gDisplayPosition; // offset 0x000aa688 // 12 functions /* * Offset 0x5F2FC, from D:\driver2\game\C\MDRAW.C (lines 58..123) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DrawMission() { // line 2, offset 0x5f2fc { // line 10, offset 0x5f390 char *string; // $s1 } // line 27, offset 0x5f418 } // line 66, offset 0x5f554 /* * Offset 0x5F56C, from D:\driver2\game\C\MDRAW.C (lines 312..416) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawWorldTarget(struct _TARGET *target /*$s0*/) { // line 1, offset 0x5f56c struct VECTOR tv; // stack offset -32 int slot; // $v1 int flags; // $s1 } // line 105, offset 0x5f850 /* * Offset 0x5F864, from D:\driver2\game\C\MDRAW.C (lines 419..516) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawMultiplayerTarget(struct _TARGET *target /*$s0*/) { // line 1, offset 0x5f864 struct VECTOR tv; // stack offset -40 unsigned char r; // $s3 unsigned char g; // $s2 unsigned char b; // $s1 } // line 98, offset 0x5fa6c /* * Offset 0x5FA88, from D:\driver2\game\C\MDRAW.C (lines 126..152) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawTimer(struct MR_TIMER *timer /*$s1*/) { // line 1, offset 0x5fa88 char string[16]; // stack offset -32 } // line 27, offset 0x5fb68 /* * Offset 0x5FB7C, from D:\driver2\game\C\MDRAW.C (lines 155..160) * Stack frame base $sp, size 56 * Saved registers at offset -8: ra */ void /*$ra*/ DisplayPlayerPosition() { // line 2, offset 0x5fb7c char string[32]; // stack offset -40 } // line 6, offset 0x5fbc4 /* * Offset 0x5FBC4, from D:\driver2\game\C\MDRAW.C (lines 163..176) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DrawMessage(int y /*$s1*/, char *string /*$s0*/) { // line 1, offset 0x5fbc4 { // line 4, offset 0x5fbe0 } // line 13, offset 0x5fc28 } // line 14, offset 0x5fc3c /* * Offset 0x5FC3C, from D:\driver2\game\C\MDRAW.C (lines 179..187) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawWorldTargets() { // line 2, offset 0x5fc3c int i; // $s0 } // line 9, offset 0x5fc7c /* * Offset 0x5FC8C, from D:\driver2\game\C\MDRAW.C (lines 190..198) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawOverheadTargets() { // line 2, offset 0x5fc8c int i; // $s0 } // line 9, offset 0x5fccc /* * Offset 0x5FCDC, from D:\driver2\game\C\MDRAW.C (lines 201..209) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawFullscreenTargets() { // line 2, offset 0x5fcdc int i; // $s0 } // line 9, offset 0x5fd1c /* * Offset 0x5FD2C, from D:\driver2\game\C\MDRAW.C (lines 212..220) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawMultiplayerTargets() { // line 2, offset 0x5fd2c int i; // $s0 } // line 9, offset 0x5fd6c /* * Offset 0x5FD7C, from D:\driver2\game\C\MDRAW.C (lines 230..268) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawOverheadTarget(struct _TARGET *target /*$s0*/) { // line 1, offset 0x5fd7c struct VECTOR tv; // stack offset -24 } // line 39, offset 0x5fe84 /* * Offset 0x5FE94, from D:\driver2\game\C\MDRAW.C (lines 271..309) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawFullscreenTarget(struct _TARGET *target /*$s0*/) { // line 1, offset 0x5fe94 struct VECTOR tv; // stack offset -24 } // line 39, offset 0x5ff9c Source file(s) D:\driver2\game\C\MGENERIC.C+D:\driver2\game\MGENERIC.C, object file obj\mgeneric.obj overlay id // 66 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; // 101 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 3 external declarations extern int gHaveStoredData; // offset 0x000aa6a0 extern struct MISSION_DATA MissionStartData; // offset 0x000d7538 extern struct MISSION_DATA MissionEndData; // offset 0x000d7620 // 6 functions /* * Offset 0x5FFAC, from D:\driver2\game\C\MGENERIC.C (lines 109..147) * Stack frame base $sp, size 0 */ void /*$ra*/ StorePlayerPosition(struct SAVED_PLAYER_POS *data /*$a2*/) { // line 1, offset 0x5ffac unsigned short type; // $a0 } // line 39, offset 0x60248 /* * Offset 0x60248, from D:\driver2\game\C\MGENERIC.C (lines 150..177) * Stack frame base $sp, size 0 */ void /*$ra*/ RestorePlayerPosition(struct SAVED_PLAYER_POS *data /*$a2*/) { // line 1, offset 0x60248 } // line 28, offset 0x603b0 /* * Offset 0x603B0, from D:\driver2\game\C\MGENERIC.C (lines 180..211) * Stack frame base $sp, size 0 */ void /*$ra*/ StoreCarPosition(struct _TARGET *target /*$t1*/, struct SAVED_CAR_POS *data /*$t0*/) { // line 1, offset 0x603b0 int slot; // $v1 } // line 32, offset 0x604dc /* * Offset 0x604E4, from D:\driver2\game\C\MGENERIC.C (lines 214..262) * Stack frame base $sp, size 0 */ void /*$ra*/ RestoreCarPosition(struct SAVED_CAR_POS *data /*$a3*/) { } /* * Offset 0x60740, from D:\driver2\game\C\MGENERIC.C (lines 62..83) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ StoreEndData() { // line 2, offset 0x60740 struct _TARGET *target; // $s0 struct SAVED_CAR_POS *carpos; // $s2 int i; // $s1 } // line 22, offset 0x607e4 /* * Offset 0x607E4, from D:\driver2\game\C\MGENERIC.C (lines 86..103) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ RestoreStartData() { // line 2, offset 0x607e4 struct SAVED_CAR_POS *carpos; // $s0 int i; // $s1 } // line 18, offset 0x60838 Source file(s) D:\driver2\game\C\MISSION.C+D:\driver2\game\MISSION.C, object file obj\mission.obj overlay id // 83 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _MISSION { int id; // size=0, offset=0 int size; // size=0, offset=4 int city; // size=0, offset=8 int time; // size=0, offset=12 int weather; // size=0, offset=16 struct XYPAIR playerStartPosition; // size=8, offset=20 int playerStartRotation; // size=0, offset=28 int type; // size=0, offset=32 short timer; // size=0, offset=36 short timerFlags; // size=0, offset=38 int strings; // size=0, offset=40 struct _COP_DATA cops; // size=16, offset=44 int msgCarWrecked; // size=0, offset=60 int msgOutOfTime; // size=0, offset=64 int msgComplete; // size=0, offset=68 int region; // size=0, offset=72 int route; // size=0, offset=76 int msgDrowned; // size=0, offset=80 int playerCarModel; // size=0, offset=84 int playerCarColour; // size=0, offset=88 int maxDamage; // size=0, offset=92 int residentModels[5]; // size=20, offset=96 int nCutscenes; // size=0, offset=116 int title; // size=0, offset=120 int msgPoliceCar; // size=0, offset=124 int msgDoorsLocked; // size=0, offset=128 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _ROUTE_INFO { int nJunctions; // size=0, offset=0 char data[1000][4]; // size=4000, offset=4 struct LEAD_PARAMETERS parameters; // size=64, offset=4004 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct MR_MISSION { int active; // size=0, offset=0 int gameover_delay; // size=0, offset=4 enum PAUSEMODE gameover_mode; // size=1, offset=8 short message_timer[2]; // size=4, offset=10 short message_priority[2]; // size=4, offset=14 char *message_string[2]; // size=8, offset=20 struct MR_TIMER timer[2]; // size=24, offset=28 struct _TARGET *CarTarget; // size=64, offset=52 struct _TARGET *ChaseTarget; // size=64, offset=56 int PhantomCarId; // size=0, offset=60 int ChaseHitDelay; // size=0, offset=64 char *StealMessage; // size=0, offset=68 }; struct STOPCOPS { struct VECTOR_NOPAD pos; // size=12, offset=0 int radius; // size=0, offset=12 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; enum FAIL_REASON : char { FAILED_OUTOFTIME = 0, FAILED_CnR_LOSTHIM = 1, FAILED_MESSAGESET = 2, }; struct MR_THREAD { unsigned char active; // size=0, offset=0 unsigned char player; // size=0, offset=1 unsigned long *initial_sp; // size=0, offset=4 unsigned long *pc; // size=0, offset=8 unsigned long *sp; // size=0, offset=12 }; // 115 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _PLAYER PLAYER; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _MISSION MS_MISSION; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _ROUTE_INFO MS_ROUTE_INFO; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct MR_MISSION MR_MISSION; typedef struct STOPCOPS STOPCOPS; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct CAR_POLY CAR_POLY; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct _EVENT EVENT; typedef enum FAIL_REASON FAIL_REASON; typedef struct MR_THREAD MR_THREAD; typedef unsigned int size_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 46 external declarations static char *gameNames[64]; // offset 0x000a0540 static char *cheatText[5]; // offset 0x000a0640 static char *CutSceneNames[28]; // offset 0x000a0654 static char *MissionName[37]; // offset 0x000a06c4 extern int gStartOnFoot; // offset 0x000aa6f4 extern int gTimeOfDay; // offset 0x000aa6f8 extern int gWeather; // offset 0x000aa6fc extern int gTannerActionNeeded; // offset 0x000aa700 extern int gPlayerWithTheFlag; // offset 0x000aa704 extern int gCarWithABerm; // offset 0x000aa708 extern int gCantDrive; // offset 0x000aa70c extern int MaxPlayerDamage[2]; // offset 0x000aa710 extern int TAIL_TOOCLOSE; // offset 0x000aa718 extern int TAIL_GETTINGCLOSE; // offset 0x000aa71c extern int TAIL_GETTINGFAR; // offset 0x000aa720 extern int TAIL_TOOFAR; // offset 0x000aa724 extern int gNumRaceTrackLaps; // offset 0x000aa728 extern char *gMissionTitle; // offset 0x000aa72c extern enum PAUSEMODE gMissionCompletionState; // offset 0x000aa730 extern int gDontPingInCops; // offset 0x000aa734 extern int g321GoDelay; // offset 0x000aa738 extern int gGotInStolenCar; // offset 0x000aa73c extern int gCopCarTheftAttempted; // offset 0x000aa740 extern int gLockPickingAttempted; // offset 0x000aa744 extern int gDontResetCarDamage; // offset 0x000aa748 static char *carSelectPlayerText[2]; // offset 0x000aa6a4 static char *MissionLoadAddress; // offset 0x000aa6dc static int cop_adjust; // offset 0x000aa6e0 static char NewLeadDelay; // offset 0x000aa6e4 static int prevCopsInPursuit; // offset 0x000aa6e8 static int last_flag; // offset 0x000aa6ec static int lastsay; // offset 0x000aa6f0 extern struct _MISSION *MissionHeader; // offset 0x000aaff4 extern struct _TARGET *MissionTargets; // offset 0x000ab004 extern unsigned long *MissionScript; // offset 0x000aaffc extern char *MissionStrings; // offset 0x000ab008 extern int gMusicType; // offset 0x000aafec extern int gPlayerDamageFactor; // offset 0x000ab000 extern unsigned long *Driver2TempJunctionsPtr; // offset 0x000aaff8 extern int NumTempJunctions; // offset 0x000aaff0 static unsigned char playercollected[2]; // offset 0x000aafe8 extern struct MR_MISSION Mission; // offset 0x000d7c08 extern int gLapTimes[2][5]; // offset 0x000d7c50 extern struct STOPCOPS gStopCops; // offset 0x000d7c78 static unsigned long MissionStack[16][16]; // offset 0x000d7708 static struct MR_THREAD MissionThreads[16]; // offset 0x000d7b08 // 42 functions /* * Offset 0x6084C, from D:\driver2\game\C\MISSION.C (lines 1347..1434) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ InitialiseMissionDefaults() { // line 2, offset 0x6084c int i; // $a0 } // line 88, offset 0x60a74 /* * Offset 0x60A74, from D:\driver2\game\C\MISSION.C (lines 1437..1878) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ LoadMission(int missionnum /*$s0*/) { // line 1, offset 0x60a74 char filename[32]; // stack offset -64 unsigned long header; // stack offset -32 unsigned long offset; // $s0 unsigned long length; // $s1 int size; // $t1 int i; // $v0 { // line 240, offset 0x60d88 int flags; // $a1 int time; // $a2 } // line 261, offset 0x60e04 { // line 330, offset 0x60f84 struct _ROUTE_INFO *rinfo; // $s0 } // line 356, offset 0x61024 { // line 393, offset 0x610fc int num; // $v1 } // line 404, offset 0x61128 } // line 442, offset 0x61258 /* * Offset 0x61274, from D:\driver2\game\C\MISSION.C (lines 1881..1959) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ HandleMission() { } /* * Offset 0x614A4, from D:\driver2\game\C\MISSION.C (lines 1962..2012) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ HandleTimer(struct MR_TIMER *timer /*$s0*/) { } /* * Offset 0x61684, from D:\driver2\game\C\MISSION.C (lines 2015..2042) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ RegisterChaseHit(int car1 /*$a0*/, int car2 /*$a1*/) { } /* * Offset 0x61784, from D:\driver2\game\C\MISSION.C (lines 2140..2220) * Stack frame base $sp, size 720 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ Swap2Cars(int curslot /*$a3*/, int newslot /*$s1*/) { // line 1, offset 0x61784 struct _CAR_DATA cd; // stack offset -704 struct _CAR_DATA *cp; // $s0 int ctrlNodeCurId; // $s4 int pnodeCurId; // $s5 int ctrlNodeNewId; // $t2 int pnodeNewId; // $t3 } // line 81, offset 0x61c5c /* * Offset 0x61C5C, from D:\driver2\game\C\MISSION.C (lines 2234..2276) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ HandleMissionThreads() { // line 2, offset 0x61c5c struct MR_THREAD *thread; // $s0 int running; // $s1 unsigned long value; // $a1 int i; // $a0 } // line 43, offset 0x61e3c /* * Offset 0x61E3C, from D:\driver2\game\C\MISSION.C (lines 2279..2438) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ MRCommand(struct MR_THREAD *thread /*$s1*/, unsigned long cmd /*$a1*/) { // line 1, offset 0x61e3c unsigned long val1; // $s0 unsigned long val2; // $s0 } // line 160, offset 0x62470 /* * Offset 0x62470, from D:\driver2\game\C\MISSION.C (lines 2701..3293) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ MRProcessTarget(struct MR_THREAD *thread /*$s7*/, struct _TARGET *target /*$s5*/) { // line 1, offset 0x62470 struct VECTOR tv; // stack offset -96 struct VECTOR pv; // stack offset -80 int ret; // $fp unsigned long dist; // $s6 int slot; // stack offset -48 int message; // $v0 int sample; // $a0 { // line 158, offset 0x629bc unsigned long message; // $s1 unsigned long timer; // $s0 unsigned long delay; // $s2 } // line 173, offset 0x62a2c { // line 233, offset 0x62bfc int direction; // $s0 long pos[4]; // stack offset -64 int *inform; // $s4 struct _CAR_DATA *cp; // $v0 } // line 239, offset 0x62bfc { // line 368, offset 0x63028 long pos[4]; // stack offset -64 } // line 375, offset 0x63090 { // line 403, offset 0x6319c } // line 403, offset 0x6319c { // line 434, offset 0x63254 } // line 434, offset 0x63254 { // line 457, offset 0x63318 } // line 457, offset 0x63318 } // line 593, offset 0x63728 /* * Offset 0x63728, from D:\driver2\game\C\MISSION.C (lines 3311..3389) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ MRCreateCar(struct _TARGET *target /*$s1*/) { // line 1, offset 0x63728 long pos[4]; // stack offset -64 int actAsCop; // $s2 int damaged; // $s7 int model; // $s4 int palette; // $s5 int dir; // $s3 int rot; // $a2 int id; // $s0 char playerid; // stack offset -48 } // line 79, offset 0x639a0 /* * Offset 0x639A0, from D:\driver2\game\C\MISSION.C (lines 3398..3449) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ PreProcessTargets() { // line 2, offset 0x639a0 struct _TARGET *target; // $s0 int i; // $s1 } // line 52, offset 0x63b78 /* * Offset 0x63B78, from D:\driver2\game\C\MISSION.C (lines 3469..3588) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ HandleGameOver() { // line 3, offset 0x63b78 { // line 5, offset 0x63bb8 struct _PLAYER *lp; // $s0 struct _CAR_DATA *cp; // $a2 int i; // $s2 int playersdead; // $s3 { // line 41, offset 0x63ce4 int surfInd; // $v1 } // line 53, offset 0x63d7c } // line 96, offset 0x63ee4 } // line 120, offset 0x63f84 /* * Offset 0x63F84, from D:\driver2\game\C\MISSION.C (lines 3623..3681) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetMissionComplete() { } /* * Offset 0x641A8, from D:\driver2\game\C\MISSION.C (lines 3716..3738) * Stack frame base $sp, size 0 */ void /*$ra*/ ActivateNextFlag() { // line 2, offset 0x641a8 int i; // $a3 int j; // $a1 } // line 23, offset 0x64268 /* * Offset 0x64268, from D:\driver2\game\C\MISSION.C (lines 2046..2056) * Stack frame base $sp, size 0 */ void /*$ra*/ PauseMissionTimer(int pause /*$a0*/) { } /* * Offset 0x642A8, from D:\driver2\game\C\MISSION.C (lines 2060..2078) * Stack frame base $sp, size 0 */ void /*$ra*/ SetMissionMessage(char *message /*$a0*/, int priority /*$a1*/, int seconds /*$a2*/) { // line 1, offset 0x642a8 int i; // $a3 } // line 19, offset 0x64340 /* * Offset 0x64348, from D:\driver2\game\C\MISSION.C (lines 2081..2091) * Stack frame base $sp, size 0 */ void /*$ra*/ SetPlayerMessage(int player /*$a0*/, char *message /*$a1*/, int priority /*$a2*/, int seconds /*$a3*/) { } /* * Offset 0x643C4, from D:\driver2\game\C\MISSION.C (lines 2094..2114) * Stack frame base $sp, size 0 */ int /*$ra*/ TargetComplete(struct _TARGET *target /*$a0*/, int player /*$a1*/) { // line 1, offset 0x643c4 unsigned long complete; // $a0 } // line 21, offset 0x64408 /* * Offset 0x64408, from D:\driver2\game\C\MISSION.C (lines 2117..2137) * Stack frame base $sp, size 0 */ int /*$ra*/ TargetActive(struct _TARGET *target /*$a0*/, int player /*$a1*/) { // line 1, offset 0x64408 unsigned long active; // $a0 } // line 21, offset 0x6444c /* * Offset 0x6444C, from D:\driver2\game\C\MISSION.C (lines 2223..2227) * Stack frame base $sp, size 0 */ void /*$ra*/ SetConfusedCar(int slot /*$a0*/) { } /* * Offset 0x64498, from D:\driver2\game\C\MISSION.C (lines 2441..2491) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ MROperator(struct MR_THREAD *thread /*$s3*/, unsigned long op /*$s0*/) { // line 1, offset 0x64498 int result; // $s2 long val1; // $s1 long val2; // $a1 } // line 51, offset 0x645ac /* * Offset 0x645AC, from D:\driver2\game\C\MISSION.C (lines 2494..2510) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ MRFunction(struct MR_THREAD *thread /*$s0*/, unsigned long fnc /*$a1*/) { // line 1, offset 0x645ac } // line 17, offset 0x64614 /* * Offset 0x64614, from D:\driver2\game\C\MISSION.C (lines 2514..2518) * Stack frame base $sp, size 0 */ void /*$ra*/ MRInitialiseThread(struct MR_THREAD *thread /*$a0*/, unsigned long *pc /*$a1*/, unsigned char player /*$a2*/) { } /* * Offset 0x64630, from D:\driver2\game\C\MISSION.C (lines 2526..2542) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ MRStartThread(struct MR_THREAD *callingthread /*$t0*/, unsigned long addr /*$a1*/, unsigned char player /*$a2*/) { // line 1, offset 0x64630 int i; // $v1 } // line 17, offset 0x64680 /* * Offset 0x64690, from D:\driver2\game\C\MISSION.C (lines 2545..2547) * Stack frame base $sp, size 0 */ int /*$ra*/ MRStopThread(struct MR_THREAD *thread /*$a0*/) { } /* * Offset 0x6469C, from D:\driver2\game\C\MISSION.C (lines 2551..2556) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ MRCommitThreadGenocide() { // line 2, offset 0x6469c int i; // $s0 } // line 6, offset 0x646e0 /* * Offset 0x646E0, from D:\driver2\game\C\MISSION.C (lines 2560..2571) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ MRJump(struct MR_THREAD *thread /*$a2*/, long jump /*$a1*/) { } /* * Offset 0x6472C, from D:\driver2\game\C\MISSION.C (lines 2575..2581) * Stack frame base $sp, size 0 */ void /*$ra*/ MRPush(struct MR_THREAD *thread /*$a0*/, long value /*$a1*/) { } /* * Offset 0x64744, from D:\driver2\game\C\MISSION.C (lines 2585..2596) * Stack frame base $sp, size 0 */ long /*$ra*/ MRPop(struct MR_THREAD *thread /*$a0*/) { // line 1, offset 0x64744 } // line 12, offset 0x64760 /* * Offset 0x64760, from D:\driver2\game\C\MISSION.C (lines 2600..2619) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ long /*$ra*/ MRGetParam(struct MR_THREAD *thread /*$s0*/) { // line 1, offset 0x64760 long value; // $a1 } // line 20, offset 0x647cc /* * Offset 0x647CC, from D:\driver2\game\C\MISSION.C (lines 2622..2644) * Stack frame base $sp, size 0 */ long /*$ra*/ MRGetVariable(struct MR_THREAD *thread /*$a2*/, unsigned long var /*$a1*/) { } /* * Offset 0x648B0, from D:\driver2\game\C\MISSION.C (lines 2648..2696) * Stack frame base $sp, size 0 */ void /*$ra*/ MRSetVariable(struct MR_THREAD *thread /*$v1*/, unsigned long var /*$a1*/, long value /*$a2*/) { } /* * Offset 0x649E4, from D:\driver2\game\C\MISSION.C (lines 3296..3301) * Stack frame base $sp, size 0 */ int /*$ra*/ MRRequestCar(struct _TARGET *target /*$a0*/) { } /* * Offset 0x64A24, from D:\driver2\game\C\MISSION.C (lines 3305..3307) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ MRHandleCarRequests() { } /* * Offset 0x64A50, from D:\driver2\game\C\MISSION.C (lines 3392..3394) * Stack frame base $sp, size 0 */ void /*$ra*/ MRCancelCarRequest(struct _TARGET *target /*$a0*/) { } /* * Offset 0x64A74, from D:\driver2\game\C\MISSION.C (lines 3452..3466) * Stack frame base $sp, size 0 */ int /*$ra*/ Handle321Go() { // line 2, offset 0x64a74 } // line 15, offset 0x64ad0 /* * Offset 0x64AD0, from D:\driver2\game\C\MISSION.C (lines 3591..3620) * Stack frame base $sp, size 0 */ void /*$ra*/ CompleteAllActiveTargets(int player /*$a0*/) { // line 2, offset 0x64ad0 int i; // $a1 int flag1; // $a3 int flag2; // $a2 } // line 30, offset 0x64b38 /* * Offset 0x64B38, from D:\driver2\game\C\MISSION.C (lines 3684..3700) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetMissionFailed(enum FAIL_REASON reason /*$a0*/) { } /* * Offset 0x64BD8, from D:\driver2\game\C\MISSION.C (lines 3704..3712) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetMissionOver(enum PAUSEMODE mode /*$a0*/) { } /* * Offset 0x64C24, from D:\driver2\game\C\MISSION.C (lines 3760..3767) * Stack frame base $sp, size 0 */ int /*$ra*/ CalcLapTime(int player /*$a0*/, int time /*$a1*/, int lap /*$a2*/) { // line 1, offset 0x64c24 int i; // $a2 int ptime; // $a3 } // line 8, offset 0x64c60 /* * Offset 0x64C60, from D:\driver2\game\C\MISSION.C (lines 3770..3777) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetCarToBeStolen(struct _TARGET *target /*$s0*/, int player /*$s1*/) { } /* * Offset 0x64CD0, from D:\driver2\game\C\MISSION.C (lines 3781..3786) * Stack frame base $sp, size 0 */ void /*$ra*/ MakePhantomCarEqualPlayerCar() { } Source file(s) D:\driver2\game\C\MODELS.C+D:\driver2\game\MODELS.C, object file obj\models.OBJ overlay id // 56 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 80 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 4 external declarations extern char specModelValid; // offset 0x000aa74c extern char *modelname_buffer; // offset 0x000ab010 extern char *specmallocptr; // offset 0x000ab014 extern char *specLoadBuffer; // offset 0x000ab018 // 3 functions /* * Offset 0x64CFC, from D:\driver2\game\C\MODELS.C (lines 33..93) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessMDSLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { // line 1, offset 0x64cfc int i; // $a2 int size; // $v0 int modelamt; // $a3 char *mdsfile; // $a0 struct MODEL *model; // $a0 struct MODEL *parentmodel; // $a1 } // line 61, offset 0x64e6c /* * Offset 0x64E6C, from D:\driver2\game\C\MODELS.C (lines 212..347) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ ProcessCarModelLump(char *lump_ptr /*$s2*/, int lump_size /*$a1*/) { // line 2, offset 0x64e6c int offset; // $a0 int i; // $s3 int car_model; // $a0 int specMemReq; // $s4 { // line 19, offset 0x64eb0 struct MODEL *model; // $v0 int mem; // $a1 } // line 74, offset 0x64f88 } // line 136, offset 0x65134 /* * Offset 0x65134, from D:\driver2\game\C\MODELS.C (lines 391..431) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ struct MODEL * /*$ra*/ GetCarModel(char *src /*$s2*/, char **dest /*$s1*/, int KeepNormals /*$s3*/) { // line 1, offset 0x65134 struct MODEL *model; // $s0 int size; // $a2 char *mem; // $v1 { // line 28, offset 0x6519c } // line 38, offset 0x651ec } // line 41, offset 0x6520c Source file(s) D:\driver2\game\C\MOTION_C.C+D:\driver2\game\MOTION_C.C, object file obj\motion_c.OBJ overlay id // 79 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct TILE { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short w; // size=0, offset=12 short h; // size=0, offset=14 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT3 { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char pad; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO pad2; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct BONE { enum LIMBS id; // size=1, offset=0 struct BONE *pParent; // size=68, offset=4 char numChildren; // size=0, offset=8 struct BONE *pChildren[3]; // size=12, offset=12 struct SVECTOR_NOPAD *pvOrigPos; // size=6, offset=24 struct SVECTOR *pvRotation; // size=8, offset=28 struct VECTOR vOffset; // size=16, offset=32 struct VECTOR vCurrPos; // size=16, offset=48 struct MODEL **pModel; // size=36, offset=64 }; enum LIMBS : char { ROOT = 0, LOWERBACK = 1, JOINT_1 = 2, NECK = 3, HEAD = 4, LSHOULDER = 5, LELBOW = 6, LHAND = 7, LFINGERS = 8, RSHOULDER = 9, RELBOW = 10, RHAND = 11, RFINGERS = 12, HIPS = 13, LHIP = 14, LKNEE = 15, LFOOT = 16, LTOE = 17, RHIP = 18, RKNEE = 19, RFOOT = 20, RTOE = 21, JOINT = 22, }; enum TEXTURE_PALS : char { NO_PAL = 0, JEANS_PAL = 1, ARM_PAL = 2, CHEST_PAL = 3, }; struct PED_DATA { char cWidth; // size=0, offset=0 unsigned char cAdj; // size=0, offset=1 struct TEXTURE_DETAILS *ptd; // size=14, offset=4 enum TEXTURE_PALS texPal; // size=1, offset=8 }; // 105 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct TILE TILE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT3 POLYFT3; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct DB DB; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct BONE BONE; typedef enum LIMBS LIMBS; typedef enum TEXTURE_PALS TEXTURE_PALS; typedef struct PED_DATA PED_DATA; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef struct MVERTEX SV5x5[5][5]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 33 external declarations extern char MotionSpeed[7]; // offset 0x000a07a0 extern enum LIMBS lRoutes[5][8]; // offset 0x000a0758 extern char *motion_files[8]; // offset 0x000a0780 extern struct PED_DATA MainPed[23]; // offset 0x000a07a8 extern struct BONE Skel[23]; // offset 0x000a08bc extern int boneIdvals[15]; // offset 0x000a0ed8 extern int bAllreadyRotated; // offset 0x000aa750 extern int bDoingShadow; // offset 0x000aa754 extern int vStored; // offset 0x000aa758 extern int zVal; // offset 0x000aa75c extern char *motion_dir; // offset 0x000aa79c extern int bLoadedAllMC; // offset 0x000aa7a0 extern int bDisplayBones; // offset 0x000aa7a4 extern int myVal; // offset 0x000aa7a8 extern int bodyShiftValue; // offset 0x000aa7ac extern int palnumber; // offset 0x000aa7b0 extern int gCurrentZ; // offset 0x000ab044 extern struct RECT rectTannerWindow; // offset 0x000ab038 extern int ThisMotion; // offset 0x000ab020 extern int frames; // offset 0x000ab02c extern int joints; // offset 0x000ab034 extern struct SVECTOR_NOPAD *svTemp; // offset 0x000ab030 extern int iCurrBone; // offset 0x000ab040 extern struct PEDESTRIAN *pDrawingPed; // offset 0x000ab024 extern int Tangle; // offset 0x000ab028 extern struct PEDESTRIAN pedestrians[28]; // offset 0x000d83b8 extern struct TILE tileTannerClear[2]; // offset 0x000d7c88 extern struct POLY_FT4 ft4TannerShadow[2]; // offset 0x000d9158 extern int MotionCaptureData[24]; // offset 0x000d8dc8 extern int cTannerVNumbers[24]; // offset 0x000d7ca8 extern struct SVECTOR vTannerList[210]; // offset 0x000d7d28 extern int cJerichoVNumbers[7]; // offset 0x000d7d08 extern struct SVECTOR vJerichoList[102]; // offset 0x000d8e28 // 18 functions /* * Offset 0x6520C, from D:\driver2\game\C\MOTION_C.C (lines 978..1208) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawBodySprite(int boneId /*$s1*/, long v1 /*$a1*/, long v2 /*$a2*/, int sz /*$s7*/, int sy /*stack 16*/, int sy /*$v1*/) { // line 1, offset 0x6520c struct TEXTURE_DETAILS *body_texture; // $s2 int x0; // $s5 int x1; // $s6 int y0; // $fp int y1; // stack offset -48 int dx1; // $s4 int dy1; // $s3 int z; // $a3 int z2; // $a3 int dx2; // $t5 int dy2; // $t3 int width; // $t0 int sort_fix; // $a3 int angle; // $t3 int c; // $t0 int s; // $a2 int clut; // $a2 int tpage; // $t0 struct POLY_FT4 *prims; // $t2 int z1; // stack offset -44 int pal; // $v1 { // line 125, offset 0x655b0 int tp; // $v1 } // line 155, offset 0x6564c } // line 231, offset 0x6594c /* * Offset 0x6594C, from D:\driver2\game\C\MOTION_C.C (lines 1289..1345) * Stack frame base $sp, size 0 */ void /*$ra*/ StoreVertexLists() { // line 2, offset 0x6594c int i; // $t1 int j; // $a3 int numVerts; // $t3 struct MODEL *pModel; // $t0 struct SVECTOR *pVerts; // $a2 int counter; // $t4 struct BONE *pBone; // $a0 } // line 57, offset 0x65ad8 /* * Offset 0x65AD8, from D:\driver2\game\C\MOTION_C.C (lines 1355..1412) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupTannerSkeleton() { // line 2, offset 0x65ad8 int i; // $t1 struct BONE *pBone; // $a3 char *pC; // $v0 struct SVECTOR *store; // $t4 struct SVECTOR_NOPAD *pSVNP; // $v1 } // line 58, offset 0x65cd8 /* * Offset 0x65CD8, from D:\driver2\game\C\MOTION_C.C (lines 1421..1598) * Stack frame base $sp, size 152 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ newShowTanner() { // line 2, offset 0x65cd8 struct VECTOR *playerPos; // $a2 struct VECTOR *camPos; // $a1 struct VECTOR *vJPos; // $s1 struct VECTOR v; // stack offset -128 struct MODEL *pModel; // $t0 struct SVECTOR *mVerts; // $a1 int i; // $s2 int j; // $a3 int c; // $a3 int id; // $a2 int limbs; // $a0 struct BONE *pBone; // $s0 int lval; // $t1 { // line 109, offset 0x660a0 struct BONE *pBone; // $s0 struct VECTOR *v1; // $a2 struct VECTOR *v2; // $a1 { // line 109, offset 0x660a0 struct SVECTOR *data; // $t1 long t1; // stack offset -92 long t0; // stack offset -96 int z2; // stack offset -80 int z1; // stack offset -84 int z; // stack offset -88 } // line 109, offset 0x661c4 } // line 109, offset 0x661c4 { // line 115, offset 0x661f8 struct BONE *pBone; // $s0 struct VECTOR *v1; // $a0 struct VECTOR *v2; // $a2 { // line 115, offset 0x661f8 struct SVECTOR *data; // $t0 long t1; // stack offset -72 long t0; // stack offset -76 int z2; // stack offset -60 int z1; // stack offset -64 int z; // stack offset -68 } // line 115, offset 0x661f8 } // line 115, offset 0x661f8 { // line 121, offset 0x66330 struct SVECTOR v1; // stack offset -112 struct SVECTOR v2; // stack offset -104 } // line 123, offset 0x66330 { // line 148, offset 0x6648c struct BONE *pBone; // $s0 struct VECTOR *v1; // $a2 struct VECTOR *v2; // $a1 { // line 148, offset 0x6648c struct SVECTOR *data; // $t1 long t1; // stack offset -52 long t0; // stack offset -56 int z2; // stack offset -40 int z1; // stack offset -44 int z; // stack offset -48 } // line 148, offset 0x6648c } // line 148, offset 0x6648c { // line 154, offset 0x665c8 int bias; // $a3 } // line 167, offset 0x665f4 } // line 178, offset 0x66648 /* * Offset 0x66648, from D:\driver2\game\C\MOTION_C.C (lines 1606..1765) * Stack frame base $sp, size 1104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ newRotateBones(struct BONE *poBone /*$a0*/) { // line 2, offset 0x66648 struct MATRIX mStore[32]; // stack offset -1088 struct MATRIX *pMatrix; // $s2 struct MATRIX *oMatrix; // $s5 struct SVECTOR *svBone; // $s6 struct VECTOR *vBoneRotated; // $s3 struct BONE *pBone; // $s1 int id; // $s0 struct SVECTOR *pVerts; // $a3 struct SVECTOR *pmVerts; // $s0 int numVerts; // $t0 struct MODEL *pModel; // $v0 int i; // $a2 struct SVECTOR *pD; // $a0 int c; // $s4 int j; // $a1 struct VECTOR sv; // stack offset -64 { // line 3, offset 0x66648 int cx; // $t2 int sx; // $a3 int cy; // $a0 int sy; // $t0 int cz; // $t3 int sz; // $t6 int stmp; // $v0 } // line 3, offset 0x66648 } // line 160, offset 0x66fb8 /* * Offset 0x66FB8, from D:\driver2\game\C\MOTION_C.C (lines 1774..1821) * Stack frame base $sp, size 0 */ struct SVECTOR * /*$ra*/ GetModelVertPtr(int boneId /*$a1*/, int modelType /*$a1*/) { } /* * Offset 0x670CC, from D:\driver2\game\C\MOTION_C.C (lines 1834..2000) * Stack frame base $sp, size 184 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawCiv(struct PEDESTRIAN *pPed /*$fp*/) { // line 1, offset 0x670cc int i; // $s5 struct DVECTOR *outpoints; // $t9 long *outlongs; // $s5 struct SVECTOR *psrLerpData; // $t8 long *zbuff; // $s4 struct SVECTOR *pLerpData; // $s0 struct SVECTOR pos; // stack offset -160 struct VECTOR pos1; // stack offset -152 struct SVECTOR *vert1; // $a1 struct SVECTOR *vert2; // $a0 struct SVECTOR temp1; // stack offset -136 struct SVECTOR temp2; // stack offset -128 int cnt3; // $a2 int bHeadModel; // stack offset -56 int shift; // $t0 int frame; // $a2 struct MATRIX workmatrix; // stack offset -120 int j; // $s7 { // line 74, offset 0x672b8 int cx; // $v1 int sx; // $a0 int cy; // $a1 int sy; // $t0 int cz; // $t3 int sz; // $t6 int stmp; // $t7 } // line 74, offset 0x672b8 { // line 130, offset 0x677c0 struct SVECTOR sV; // stack offset -88 struct SVECTOR sV2; // stack offset -80 struct VECTOR v; // stack offset -72 } // line 142, offset 0x677fc { // line 151, offset 0x677fc struct CVECTOR cv; // stack offset -88 struct VECTOR pos; // stack offset -80 int phase; // $s0 } // line 164, offset 0x678a0 } // line 167, offset 0x678a0 /* * Offset 0x678D0, from D:\driver2\game\C\MOTION_C.C (lines 2041..2112) * Stack frame base $sp, size 128 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawTanner(struct PEDESTRIAN *pPed /*$s2*/) { // line 1, offset 0x678d0 struct VECTOR v; // stack offset -112 struct CVECTOR cV; // stack offset -96 struct MATRIX mRotStore; // stack offset -88 struct MATRIX iMatrix; // stack offset -56 { // line 1, offset 0x678d0 } // line 20, offset 0x679e0 { // line 26, offset 0x679e0 int cx; // $a2 int sx; // $t0 int cy; // $a0 int sy; // $t2 int cz; // $t5 int sz; // $s0 int stmp; // $v1 } // line 26, offset 0x679e0 } // line 72, offset 0x67d44 /* * Offset 0x67D44, from D:\driver2\game\C\MOTION_C.C (lines 2120..2192) * Stack frame base $sp, size 144 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ DrawCharacter(struct PEDESTRIAN *pPed /*$s1*/) { // line 1, offset 0x67d44 struct MATRIX mRotStore; // stack offset -128 struct MATRIX iMatrix; // stack offset -96 struct CVECTOR cV; // stack offset -64 struct VECTOR v; // stack offset -56 { // line 1, offset 0x67d44 int cx; // $t0 int sx; // $a3 int cy; // $a0 int sy; // $t2 int cz; // $a2 int sz; // $t7 int stmp; // $v1 } // line 1, offset 0x67d44 { // line 55, offset 0x68134 struct CVECTOR cv; // stack offset -40 struct VECTOR pos; // stack offset -32 int phase; // $s0 } // line 69, offset 0x681d0 } // line 73, offset 0x681ec /* * Offset 0x681EC, from D:\driver2\game\C\MOTION_C.C (lines 2201..2246) * Stack frame base $sp, size 8 */ void /*$ra*/ InitTannerShadow() { // line 2, offset 0x681ec struct CVECTOR cV; // stack offset -8 int i; // $a3 } // line 46, offset 0x68358 /* * Offset 0x68358, from D:\driver2\game\C\MOTION_C.C (lines 2258..2433) * Stack frame base $sp, size 296 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ TannerShadow(struct VECTOR *pPedPos /*$s6*/, struct SVECTOR *pLightPos /*$s7*/, struct CVECTOR *col /*$a2*/, short angle /*$a3*/) { // line 1, offset 0x68358 int z; // $a1 int z0; // stack offset -72 int z1; // stack offset -68 int z2; // stack offset -64 int z3; // stack offset -60 struct SVECTOR vert[4]; // stack offset -272 struct VECTOR d; // stack offset -240 struct DR_ENV *pDE; // $s3 struct DRAWENV drEnv; // stack offset -224 struct VECTOR cp; // stack offset -128 struct SVECTOR ca; // stack offset -112 struct VECTOR v1; // stack offset -104 int i; // $s4 struct VECTOR myVector; // stack offset -88 int avalue2; // $v0 int w; // $v1 { // line 117, offset 0x68818 } // line 117, offset 0x68818 } // line 176, offset 0x68b2c /* * Offset 0x68B2C, from D:\driver2\game\C\MOTION_C.C (lines 2442..2553) * Stack frame base $sp, size 200 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ DoCivHead(struct SVECTOR *vert1 /*$s1*/, struct SVECTOR *vert2 /*$s3*/) { // line 1, offset 0x68b2c struct VECTOR headpos; // stack offset -184 struct SVECTOR final_rotation; // stack offset -168 struct SVECTOR spos1; // stack offset -160 struct MODEL *model; // $s5 struct MATRIX work2matrix; // stack offset -152 struct MATRIX mRotStore; // stack offset -120 struct VECTOR pos1; // stack offset -88 int pal; // $v1 int ci; // $s6 { // line 53, offset 0x68d38 int cx; // $v1 int sx; // $a0 int cy; // $a1 int sy; // $t0 int cz; // $t3 int sz; // $t6 int stmp; // $a3 } // line 53, offset 0x68d38 { // line 65, offset 0x68f98 int cx; // $v1 int sx; // $t3 int cy; // $t1 int sy; // $a3 int stmp; // $v0 } // line 65, offset 0x68f98 { // line 93, offset 0x69274 struct MATRIX comb; // stack offset -72 } // line 95, offset 0x69274 } // line 112, offset 0x6940c /* * Offset 0x69438, from D:\driver2\game\C\MOTION_C.C (lines 2562..2682) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DrawObject(struct MODEL *model /*$t8*/, struct MATRIX *matrix /*$a1*/, struct VECTOR *pos /*$a2*/, int z_correct /*$a3*/) { // line 1, offset 0x69438 struct DVECTOR *outpoints; // $t7 short *zbuff; // $t5 struct SVECTOR *verts; // $t6 char *polys; // $s0 int cnt3; // $t1 int i; // $s1 int z0; // stack offset -40 int z1; // stack offset -36 int z2; // stack offset -32 long *outlongs; // $s2 int z; // stack offset -28 { // line 92, offset 0x697d4 } // line 101, offset 0x69840 } // line 121, offset 0x69874 /* * Offset 0x69874, from D:\driver2\game\C\MOTION_C.C (lines 2690..2723) * Stack frame base $sp, size 0 */ void /*$ra*/ wjmDraw3() { // line 2, offset 0x69874 struct POLYFT3 *src; // $a3 short *zbuff; // $t2 long *outlongs; // $a2 struct POLY_FT3 *prims; // $t1 unsigned long clut; // $t0 unsigned long tpage; // $a1 int z; // $a2 } // line 34, offset 0x69a38 /* * Offset 0x69A38, from D:\driver2\game\C\MOTION_C.C (lines 853..864) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ProcessMotionLump(char *lump_ptr /*$a0*/, int lump_size /*$s0*/) { } /* * Offset 0x69AB8, from D:\driver2\game\C\MOTION_C.C (lines 944..945) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupPedMotionData(struct PEDESTRIAN *pPed /*$a0*/) { } /* * Offset 0x69AD8, from D:\driver2\game\C\MOTION_C.C (lines 2011..2032) * Stack frame base $sp, size 0 */ void /*$ra*/ SetSkelModelPointers(int type /*$a0*/) { } /* * Offset 0x69B6C, from D:\driver2\game\C\MOTION_C.C (lines 955..966) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupPedestrian(struct PEDESTRIAN *pedptr /*$a0*/) { } Source file(s) D:\driver2\game\C\OBJCOLL.C+D:\driver2\game\OBJCOLL.C, object file obj\objcoll.OBJ overlay id // 74 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct COLLISION_PACKET { short type; // size=0, offset=0 short xpos; // size=0, offset=2 short ypos; // size=0, offset=4 short zpos; // size=0, offset=6 short flags; // size=0, offset=8 short yang; // size=0, offset=10 short empty; // size=0, offset=12 short xsize; // size=0, offset=14 short ysize; // size=0, offset=16 short zsize; // size=0, offset=18 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct XZPAIR { int x; // size=0, offset=0 int z; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct CELL_DATA { unsigned short num; // size=0, offset=0 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PACKED_CELL_OBJECT { struct USVECTOR_NOPAD pos; // size=6, offset=0 unsigned short value; // size=0, offset=6 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct BUILDING_BOX { struct VECTOR pos; // size=16, offset=0 int xsize; // size=0, offset=16 int zsize; // size=0, offset=20 int theta; // size=0, offset=24 int height; // size=0, offset=28 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _EVENT { struct VECTOR position; // size=16, offset=0 short rotation; // size=0, offset=16 short timer; // size=0, offset=18 int *data; // size=0, offset=20 int *node; // size=0, offset=24 short flags; // size=0, offset=28 short radius; // size=0, offset=30 int model; // size=0, offset=32 struct _EVENT *next; // size=40, offset=36 }; struct CELL_ITERATOR { struct CELL_DATA *pcd; // size=2, offset=0 struct PACKED_CELL_OBJECT *ppco; // size=8, offset=4 struct XZPAIR near; // size=8, offset=8 int use_computed; // size=0, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct tRay { long org[4]; // size=16, offset=0 long dir[4]; // size=16, offset=16 }; struct tRange { int lower; // size=0, offset=0 int upper; // size=0, offset=4 }; struct tAABB { struct tRange slab[3]; // size=24, offset=0 }; // 109 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct COLLISION_PACKET COLLISION_PACKET; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct XZPAIR XZPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct CELL_DATA CELL_DATA; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PACKED_CELL_OBJECT PACKED_CELL_OBJECT; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct BUILDING_BOX BUILDING_BOX; typedef struct CDATA2D CDATA2D; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct GAP_INFO GAP_INFO; typedef struct _COP_DATA MS_COP_DATA; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _EVENT EVENT; typedef struct CELL_ITERATOR CELL_ITERATOR; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct tRay tRay; typedef struct tRange tRange; typedef struct tAABB tAABB; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct MVERTEX SV5x5[5][5]; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 6 external declarations extern int testRadius; // offset 0x000aa7b4 extern int test777; // offset 0x000aa7b8 extern unsigned short gLastModelCollisionCheck; // offset 0x000ab058 extern struct PACKED_CELL_OBJECT **pcoplist; // offset 0x000ab054 extern struct CELL_OBJECT **coplist; // offset 0x000ab050 static struct CDATA2D cd[2]; // offset 0x000d91a8 // 11 functions /* * Offset 0x69BA4, from D:\driver2\game\C\OBJCOLL.C (lines 63..152) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ char /*$ra*/ CellEmpty(struct VECTOR *pPosition /*$s1*/, int radius /*$s2*/) { // line 1, offset 0x69ba4 struct CELL_ITERATOR ci; // stack offset -48 int cell_x; // $a0 struct CELL_OBJECT *pCellObject; // $a2 struct MODEL *pModel; // $a3 { // line 37, offset 0x69c60 int sphere_sq; // $v0 int xd; // $t5 int zd; // $t4 { // line 51, offset 0x69cc4 int box_loop; // $t3 int num_cb; // $t6 struct COLLISION_PACKET *collide; // $t0 { // line 56, offset 0x69ce8 unsigned int zs; // $t2 unsigned int xs; // $t1 int cs; // $a2 int sn; // $a0 } // line 75, offset 0x69dc8 } // line 76, offset 0x69dd8 } // line 78, offset 0x69dd8 } // line 90, offset 0x69e1c /* * Offset 0x69E1C, from D:\driver2\game\C\OBJCOLL.C (lines 217..254) * Stack frame base $sp, size 24 */ int /*$ra*/ RaySlabsIntersection(struct tRay *ray /*$t5*/, struct tAABB *bbox /*$t4*/) { // line 1, offset 0x69e1c int i; // $t1 struct tRange inside; // stack offset -24 { // line 9, offset 0x69e40 struct tRange cabbage; // stack offset -16 struct tRange scaledCabbage; // stack offset -8 int dir; // $a2 } // line 36, offset 0x69f94 } // line 38, offset 0x69fb4 /* * Offset 0x69FB4, from D:\driver2\game\C\OBJCOLL.C (lines 259..359) * Stack frame base $sp, size 200 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ char /*$ra*/ lineClear(struct VECTOR *v1 /*stack 0*/, struct VECTOR *v2 /*stack 4*/) { // line 1, offset 0x69fb4 int we; // stack offset -56 int ocx; // $t2 int ocz; // $t3 struct VECTOR pos; // stack offset -184 struct VECTOR va; // stack offset -168 struct VECTOR vb; // stack offset -152 { // line 20, offset 0x6a074 int cell_x; // $fp int cell_z; // $s7 struct CELL_ITERATOR ci; // stack offset -136 struct CELL_OBJECT *pCellObject; // $s4 { // line 40, offset 0x6a134 struct MODEL *pModel; // $a1 { // line 48, offset 0x6a170 int sphere_sq; // $v0 int xd; // $a0 int zd; // $v1 { // line 59, offset 0x6a1d4 int box_loop; // $s5 int num_cb; // $s6 struct COLLISION_PACKET *collide; // $s3 { // line 64, offset 0x6a1f0 struct MATRIX *mat; // $a0 int cx; // $v1 int cy; // $a2 int cz; // $v0 int cs; // $t1 int sn; // $t5 { // line 64, offset 0x6a1f0 struct tRay ray; // stack offset -112 struct tAABB box; // stack offset -80 } // line 88, offset 0x6a414 } // line 89, offset 0x6a414 } // line 90, offset 0x6a424 } // line 92, offset 0x6a424 } // line 93, offset 0x6a424 } // line 96, offset 0x6a444 } // line 101, offset 0x6a498 /* * Offset 0x6A498, from D:\driver2\game\C\OBJCOLL.C (lines 391..431) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ CollisionCopList(struct XZPAIR *pos /*$a0*/, int *count /*$s0*/) { // line 1, offset 0x6a498 static struct XZPAIR initial; // offset 0x0 { // line 11, offset 0x6a4e8 struct XZPAIR cell; // stack offset -72 int i; // $a0 int j; // $t1 { // line 20, offset 0x6a508 struct CELL_ITERATOR ci; // stack offset -64 struct XZPAIR cbr; // stack offset -40 int barrelRegion; // $v0 struct CELL_OBJECT *cop; // $a0 } // line 38, offset 0x6a5f8 } // line 40, offset 0x6a628 } // line 41, offset 0x6a64c /* * Offset 0x6A64C, from D:\driver2\game\C\OBJCOLL.C (lines 439..596) * Stack frame base $sp, size 168 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CheckScenaryCollisions(struct _CAR_DATA *cp /*$s7*/) { // line 1, offset 0x6a64c struct MODEL *model; // stack offset -76 struct CELL_OBJECT *cop; // $s5 struct VECTOR player_pos; // stack offset -152 struct COLLISION_PACKET *collide; // $s1 int cell_x; // $a0 int xd; // $v1 int zd; // $a0 int num_cb; // stack offset -72 int box_loop; // $s6 int sphere_sq; // $v0 int x1; // stack offset -68 struct BUILDING_BOX bbox; // stack offset -136 int mdcount; // stack offset -80 int coll_test_count; // $t0 struct XZPAIR box; // stack offset -104 int lbody; // stack offset -64 int extraDist; // stack offset -60 { // line 80, offset 0x6a934 struct BUILDING_BOX *pbox; // $s4 struct MATRIX *mat; // $a1 struct VECTOR offset; // stack offset -96 } // line 152, offset 0x6ad48 } // line 158, offset 0x6ad8c /* * Offset 0x6ADBC, from D:\driver2\game\C\OBJCOLL.C (lines 609..720) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ QuickBuildingCollisionCheck(struct VECTOR *pPos /*$s5*/, int dir /*stack 4*/, int l /*stack 8*/, int w /*$fp*/, int extra /*stack 16*/) { // line 1, offset 0x6adbc struct MODEL *model; // $a1 struct CELL_OBJECT *cop; // $s3 struct VECTOR player_pos; // stack offset -112 struct COLLISION_PACKET *collide; // $s0 int cell_x; // $a0 int xd; // $v1 int zd; // $a0 int num_cb; // $s7 int box_loop; // $s4 int sphere_sq; // $v0 int x1; // $s6 struct BUILDING_BOX bbox; // stack offset -96 int mdcount; // stack offset -48 { // line 60, offset 0x6afa4 struct BUILDING_BOX *pbox; // $s1 struct MATRIX *mat; // $a1 struct VECTOR offset; // stack offset -64 { // line 76, offset 0x6b0f0 } // line 103, offset 0x6b1bc } // line 105, offset 0x6b1bc } // line 112, offset 0x6b220 /* * Offset 0x6B220, from D:\driver2\game\C\OBJCOLL.C (lines 735..752) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DoScenaryCollisions() { // line 2, offset 0x6b220 struct _CAR_DATA *lcp; // $s0 } // line 18, offset 0x6b2ec /* * Offset 0x6B2EC, from D:\driver2\game\C\OBJCOLL.C (lines 155..174) * Stack frame base $sp, size 0 */ int /*$ra*/ GlobalPositionToCellNumber(struct VECTOR *pPosition /*$a0*/) { // line 1, offset 0x6b2ec int cellX; // $a3 int cellZ; // $a1 int cbrX; // $t1 int cbrZ; // $t0 int cbr; // $t2 int xOff; // $a3 int yOff; // $a0 } // line 20, offset 0x6b3e4 /* * Offset 0x6B3E4, from D:\driver2\game\C\OBJCOLL.C (lines 183..204) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ char /*$ra*/ CellAtPositionEmpty(struct VECTOR *pPosition /*$s0*/, int radius /*$s1*/) { // line 1, offset 0x6b3e4 } // line 22, offset 0x6b430 /* * Offset 0x6B430, from D:\driver2\game\C\OBJCOLL.C (lines 377..383) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ SetCopListCell(int x /*$a0*/, int z /*$a1*/) { // line 2, offset 0x6b430 struct XZPAIR cell; // stack offset -16 } // line 7, offset 0x6b45c /* * Offset 0x6B45C, from D:\driver2\game\C\OBJCOLL.C (lines 386..387) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ BuildCollisionCopList(int *count /*$a1*/) { } Source file(s) D:\driver2\game\C\PAD.C+D:\driver2\game\PAD.C, object file obj\pad.OBJ overlay id // 59 complex types struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; struct PADRAW { unsigned char status; // size=0, offset=0 unsigned char id; // size=0, offset=1 unsigned char buttons[2]; // size=2, offset=2 unsigned char analog[4]; // size=4, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct PAD { unsigned char active; // size=0, offset=0 unsigned char type; // size=0, offset=1 unsigned char dualshock; // size=0, offset=2 unsigned char reserved1; // size=0, offset=3 unsigned short direct; // size=0, offset=4 unsigned short dirnew; // size=0, offset=6 char diranalog[4]; // size=4, offset=8 unsigned short mapped; // size=0, offset=12 unsigned short mapnew; // size=0, offset=14 char mapanalog[4]; // size=4, offset=16 struct MAPPING mappings; // size=36, offset=20 unsigned char alarmShakeCounter; // size=0, offset=56 unsigned char asd; // size=0, offset=57 unsigned char sdf; // size=0, offset=58 unsigned char dfg; // size=0, offset=59 unsigned char delay; // size=0, offset=60 unsigned char port; // size=0, offset=61 unsigned char state; // size=0, offset=62 unsigned char dsactive; // size=0, offset=63 unsigned char *shakeptr; // size=0, offset=64 unsigned char motors[2]; // size=2, offset=68 unsigned char shake_type; // size=0, offset=70 unsigned char vibrate; // size=0, offset=71 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; enum EXIT_VALUE : char { MENU_QUIT_NONE = 0, MENU_QUIT_CONTINUE = 1, MENU_QUIT_QUIT = 2, MENU_QUIT_RESTART = 3, MENU_QUIT_DIRECTOR = 4, MENU_QUIT_QUICKREPLAY = 5, MENU_QUIT_BACKMENU = 6, MENU_QUIT_NEXTMISSION = 7, }; struct MENU_HEADER { char *Title; // size=0, offset=0 struct XYWH Bound; // size=8, offset=4 unsigned char NumItems; // size=0, offset=12 struct MENU_ITEM *MenuItems; // size=20, offset=16 }; struct MENU_ITEM { char *Text; // size=0, offset=0 unsigned char Type; // size=0, offset=4 unsigned char Justify; // size=0, offset=5 void *func(); // size=0, offset=8 enum EXIT_VALUE ExitValue; // size=1, offset=12 struct MENU_HEADER *SubMenu; // size=0, offset=16 }; struct XYWH { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct DUPLICATION { char *buffer; // size=0, offset=0 int size; // size=0, offset=4 }; // 86 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef struct PADRAW PADRAW; typedef struct MAPPING MAPPING; typedef struct PAD PAD; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef enum EXIT_VALUE EXIT_VALUE; typedef struct MENU_HEADER MENU_HEADER; typedef struct MENU_ITEM MENU_ITEM; typedef struct XYWH XYWH; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct DUPLICATION DUPLICATION; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 11 external declarations static unsigned char High_shake_data[21]; // offset 0x000a0f14 static unsigned char Med_shake_data[13]; // offset 0x000a0f2c static unsigned char Low_shake_data[10]; // offset 0x000a0f3c static unsigned char *shake_data[3]; // offset 0x000a0f48 extern int pad_connected; // offset 0x000aa7d0 static unsigned char align[6]; // offset 0x000aa7bc static unsigned char dummymotors[2]; // offset 0x000aa7c4 static struct DUPLICATION DuplicatePadData; // offset 0x000aa7c8 extern int gDualShockMax; // offset 0x000aa7d4 extern struct PAD Pads[2]; // offset 0x000d92b8 static char padbuffer[2][34]; // offset 0x000d9270 // 11 functions /* * Offset 0x6B480, from D:\driver2\game\C\PAD.C (lines 75..110) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ InitControllers() { // line 2, offset 0x6b480 int i; // $s3 int j; // $a1 } // line 36, offset 0x6b5a8 /* * Offset 0x6B5A8, from D:\driver2\game\C\PAD.C (lines 132..188) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ ReadControllers() { // line 2, offset 0x6b5a8 int i; // $s3 int pad; // $s2 } // line 57, offset 0x6b6f0 /* * Offset 0x6B6F0, from D:\driver2\game\C\PAD.C (lines 257..320) * Stack frame base $sp, size 0 */ void /*$ra*/ MapPad(int pad /*$t2*/, struct PADRAW *pData /*$a3*/) { // line 1, offset 0x6b6f0 unsigned short i; // $a3 unsigned short buttons; // $t0 unsigned short mapped; // $t1 } // line 64, offset 0x6b8d8 /* * Offset 0x6B8E0, from D:\driver2\game\C\PAD.C (lines 336..449) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ HandleDualShock() { // line 2, offset 0x6b8e0 int state; // $v1 int port; // $s3 int pad; // $s5 int dsload; // $s7 } // line 114, offset 0x6bbc4 /* * Offset 0x6BBC4, from D:\driver2\game\C\PAD.C (lines 452..495) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ HandlePadVibration(int pad /*$t1*/) { // line 1, offset 0x6bbc4 int speed; // $a3 } // line 44, offset 0x6bde8 /* * Offset 0x6BDF8, from D:\driver2\game\C\PAD.C (lines 113..123) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CloseControllers() { // line 2, offset 0x6bdf8 int i; // $v1 } // line 11, offset 0x6be38 /* * Offset 0x6BE38, from D:\driver2\game\C\PAD.C (lines 191..206) * Stack frame base $sp, size 0 */ void /*$ra*/ SetPadVibration(int pad /*$a3*/, unsigned char type /*$a1*/) { } /* * Offset 0x6BEB4, from D:\driver2\game\C\PAD.C (lines 209..215) * Stack frame base $sp, size 0 */ void /*$ra*/ StopPadVibration(int pad /*$a0*/) { } /* * Offset 0x6BEEC, from D:\driver2\game\C\PAD.C (lines 228..229) * Stack frame base $sp, size 0 */ void /*$ra*/ StopDualShockMotors() { } /* * Offset 0x6BEF4, from D:\driver2\game\C\PAD.C (lines 232..242) * Stack frame base $sp, size 0 */ void /*$ra*/ SetDuplicatePadData(char *buffer /*$a0*/, int size /*$a1*/) { } /* * Offset 0x6BF24, from D:\driver2\game\C\PAD.C (lines 323..327) * Stack frame base $sp, size 0 */ void /*$ra*/ ClearPad(int pad /*$a0*/) { } Source file(s) D:\driver2\game\C\PATHFIND.C+D:\driver2\game\PATHFIND.C, object file obj\pathfind.OBJ overlay id // 75 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct tNode { int vx; // size=0, offset=0 int vy; // size=0, offset=4 int vz; // size=0, offset=8 unsigned short dist; // size=0, offset=12 unsigned short ptoey; // size=0, offset=14 }; // 108 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT4 POLY_FT4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct _CAR_DATA CAR_DATA; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct UV UV; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct CAR_POLY CAR_POLY; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct tNode tNode; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef short int16; typedef long int32; // 0 labels // 23 external declarations extern int OverlayOccupancyGrid; // offset 0x000e91a0 extern struct { short dx; // size=0, offset=0 short dz; // size=0, offset=2 } ends[6][2]; // offset 0x000e9108 extern unsigned int cellsPerFrame; // offset 0x000e9138 extern int slowWallTests; // offset 0x000e913c extern struct { short dx; // size=0, offset=0 short dz; // size=0, offset=2 } dirs[6]; // offset 0x000e9140 extern int asf; // offset 0x000e9158 extern int na; // offset 0x000e915c extern int lastDistanceFound; // offset 0x000e9ac8 extern int distLogIndex; // offset 0x000e9ab0 extern int distanceReturnedLog[8]; // offset 0x000f27a0 extern struct VECTOR searchTarget; // offset 0x000e9ab8 extern unsigned int numHeapEntries; // offset 0x000f279c extern struct tNode heap[201]; // offset 0x000f1b08 static char omap[128][16]; // offset 0x000e91a8 extern long dunyet[32][2]; // offset 0x000e99b0 extern unsigned int cellsThisFrame; // offset 0x000f2798 extern unsigned short distanceCache[16384]; // offset 0x000e9b00 extern int pathIterations; // offset 0x000f27c0 extern int pathFrames; // offset 0x000e99a8 extern int pathFrame; // offset 0x000f1b00 extern int playerTargetDistanceSq; // offset 0x000e9acc extern int DoExtraWorkForNFrames; // offset 0x000e99ac extern struct tNode dbb[3]; // offset 0x000e9ad0 // 12 functions /* * Offset 0xE7000, from D:\driver2\game\C\PATHFIND.C (lines 314..362) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 s1 */ struct tNode /*$ra*/ popNode() { // line 1, offset 0xe7000 unsigned int lNumHeapEntries; // $s0 struct tNode res; // stack offset -24 unsigned short f; // $t8 unsigned int child; // $a1 unsigned int here; // $t5 { // line 11, offset 0xe7058 unsigned int lastEntry; // $t4 { // line 15, offset 0xe7070 int d; // $t3 int d2; // $t2 int d3; // $a3 int d4; // $t1 } // line 32, offset 0xe70b8 } // line 33, offset 0xe7110 { // line 35, offset 0xe7110 int d; // $a2 int d2; // $a3 int d3; // $t1 int d4; // $t2 } // line 44, offset 0xe715c } // line 47, offset 0xe715c /* * Offset 0xE7194, from D:\driver2\game\C\PATHFIND.C (lines 426..449) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ WunCell(struct VECTOR *pbase /*$s0*/) { // line 1, offset 0xe7194 int i; // $s2 int j; // $s4 struct VECTOR v[2]; // stack offset -88 struct VECTOR pos; // stack offset -56 { // line 14, offset 0xe723c { // line 14, offset 0xe723c int z; // $a1 int x; // $a2 } // line 20, offset 0xe72c8 } // line 20, offset 0xe72c8 } // line 24, offset 0xe735c /* * Offset 0xE735C, from D:\driver2\game\C\PATHFIND.C (lines 453..486) * Stack frame base $sp, size 16 */ void /*$ra*/ InvalidateMap() { // line 2, offset 0xe735c struct VECTOR bPos; // stack offset -16 int count; // $t4 int dir; // $t1 int p; // $t2 int q; // $t3 { // line 12, offset 0xe73a8 int tile; // $a0 int mask; // $a1 int diff; // $a1 int i; // $v0 } // line 15, offset 0xe73a8 } // line 34, offset 0xe74b0 /* * Offset 0xE74B0, from D:\driver2\game\C\PATHFIND.C (lines 495..564) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ BloodyHell() { // line 2, offset 0xe74b0 struct VECTOR bPos; // stack offset -48 int count; // $s4 int dir; // $s0 int p; // $s1 int q; // $s2 unsigned int howMany; // $s3 0x69C raa { // line 22, offset 0xe755c int tile; // $a0 int mask; // $a1 int diff; // $v0 int i; // $v0 } // line 42, offset 0xe75e4 } // line 70, offset 0xe76c4 /* * Offset 0xE76C4, from D:\driver2\game\C\PATHFIND.C (lines 567..589) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ int /*$ra*/ blocked(struct tNode *v1 /*$a3*/, struct tNode *v2 /*$a2*/) { // line 1, offset 0xe76c4 struct VECTOR pos; // stack offset -24 int res; // $a0 { // line 8, offset 0xe76e0 { // line 8, offset 0xe76e0 int z; // $a2 int x; // $v1 } // line 11, offset 0xe774c } // line 11, offset 0xe774c { // line 18, offset 0xe7790 { // line 18, offset 0xe7790 int z; // $v1 int x; // $a0 } // line 18, offset 0xe7790 } // line 18, offset 0xe7790 } // line 23, offset 0xe7814 /* * Offset 0xE7814, from D:\driver2\game\C\PATHFIND.C (lines 712..775) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ iterate() { // line 2, offset 0xe7814 int dir; // $s2 struct tNode itHere; // stack offset -48 struct tNode *nbr; // $s4 { // line 12, offset 0xe7870 int nearBy; // $v1 int computed; // $s1 { // line 14, offset 0xe7870 int dx; // $v0 int dz; // $a0 } // line 15, offset 0xe7870 { // line 15, offset 0xe7870 { // line 15, offset 0xe7870 int res; // $a0 } // line 15, offset 0xe7870 } // line 15, offset 0xe7870 } // line 51, offset 0xe797c { // line 56, offset 0xe79b4 int nr; // $a0 int nl; // $v1 { // line 58, offset 0xe7a08 unsigned int a; // $v1 { // line 58, offset 0xe7a08 { // line 1, offset 0xe7a44 unsigned int r; // $v0 } // line 1, offset 0xe7a68 } // line 1, offset 0xe7a68 } // line 1, offset 0xe7a68 { // line 61, offset 0xe7aac struct tNode *pnode; // $s0 { // line 61, offset 0xe7aac unsigned int parent; // $a2 unsigned int i; // $a3 } // line 61, offset 0xe7b98 } // line 61, offset 0xe7b98 } // line 62, offset 0xe7b98 } // line 64, offset 0xe7ba8 /* * Offset 0xE7BD0, from D:\driver2\game\C\PATHFIND.C (lines 801..818) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitPathFinding() { // line 2, offset 0xe7bd0 int i; // $a0 { // line 1, offset 0xe7bd0 } // line 1, offset 0xe7bd0 { // line 1, offset 0xe7bd0 } // line 1, offset 0xe7bd0 } // line 18, offset 0xe7ca8 /* * Offset 0xE7CA8, from D:\driver2\game\C\PATHFIND.C (lines 821..879) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ getInterpolatedDistance(struct VECTOR *pos /*$s2*/) { // line 1, offset 0xe7ca8 struct tNode n; // stack offset -72 int fx; // $s4 int fz; // $s5 int a; // $s3 int b; // $s2 int c; // $v1 int min; // $s0 int flag; // $fp { // line 1, offset 0xe7ca8 struct VECTOR *where; // $s2 struct tNode *node; // $s0 { // line 1, offset 0xe7ca8 int x; // $v1 { // line 1, offset 0xe7ca8 struct tNode *pos; // $s0 { // line 1, offset 0xe7ca8 struct VECTOR sp; // stack offset -56 { // line 1, offset 0xe7ca8 { // line 1, offset 0xe7ca8 int z; // $v0 int x; // $a0 } // line 1, offset 0xe7ca8 } // line 1, offset 0xe7ca8 { // line 1, offset 0xe7d78 int res; // $v0 } // line 1, offset 0xe7d9c } // line 1, offset 0xe7da0 } // line 1, offset 0xe7da0 } // line 1, offset 0xe7da0 } // line 1, offset 0xe7da0 { // line 1, offset 0xe7da0 { // line 1, offset 0xe7da0 int res; // $v0 } // line 1, offset 0xe7da0 } // line 1, offset 0xe7da0 { // line 1, offset 0xe7da0 { // line 1, offset 0xe7da0 struct VECTOR sp; // stack offset -56 { // line 1, offset 0xe7da0 { // line 1, offset 0xe7da0 int x; // $a3 int z; // $v0 } // line 1, offset 0xe7da0 } // line 1, offset 0xe7da0 { // line 1, offset 0xe7e84 int res; // $v0 } // line 1, offset 0xe7ea8 } // line 1, offset 0xe7eac } // line 1, offset 0xe7eac { // line 18, offset 0xe7eac { // line 18, offset 0xe7eac int res; // $a0 } // line 18, offset 0xe7eac } // line 18, offset 0xe7eac { // line 27, offset 0xe7f28 { // line 27, offset 0xe7f28 struct VECTOR sp; // stack offset -56 { // line 27, offset 0xe7f28 { // line 27, offset 0xe7f28 int x; // $v1 int z; // $v0 } // line 27, offset 0xe7f28 } // line 27, offset 0xe7f28 { // line 1, offset 0xe7f8c int res; // $v0 } // line 1, offset 0xe7fb0 } // line 1, offset 0xe7fb4 } // line 1, offset 0xe7fb4 { // line 29, offset 0xe7fb4 { // line 29, offset 0xe7fb4 int res; // $a0 } // line 29, offset 0xe7fb4 } // line 29, offset 0xe7fb4 { // line 43, offset 0xe807c { // line 43, offset 0xe807c struct VECTOR sp; // stack offset -56 { // line 43, offset 0xe807c { // line 43, offset 0xe807c int x; // $v1 int z; // $v0 } // line 43, offset 0xe807c } // line 43, offset 0xe807c { // line 1, offset 0xe80d8 int res; // $v0 } // line 1, offset 0xe80fc } // line 1, offset 0xe8100 } // line 1, offset 0xe8100 { // line 44, offset 0xe8100 { // line 44, offset 0xe8100 int res; // $a0 } // line 44, offset 0xe8100 } // line 44, offset 0xe8100 } // line 59, offset 0xe822c /* * Offset 0xE822C, from D:\driver2\game\C\PATHFIND.C (lines 891..924) * Stack frame base $sp, size 0 */ void /*$ra*/ addCivs() { // line 2, offset 0xe822c struct _CAR_DATA *cp; // $t5 { // line 7, offset 0xe8260 int where; // $a3 { // line 9, offset 0xe8260 int vx; // $a3 int vz; // $a1 int x; // $a3 int z; // $t0 } // line 9, offset 0xe8260 { // line 9, offset 0xe8260 int vx; // $t1 int vz; // $t2 int x; // $t1 int z; // $a1 } // line 31, offset 0xe8354 } // line 32, offset 0xe8354 } // line 34, offset 0xe836c /* * Offset 0xE836C, from D:\driver2\game\C\PATHFIND.C (lines 933..1045) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ UpdateCopMap() { // line 2, offset 0xe836c { // line 6, offset 0xe83c0 } // line 6, offset 0xe83c0 { // line 13, offset 0xe83fc struct tNode startNode; // stack offset -72 { // line 19, offset 0xe843c struct _CAR_DATA *cp; // $a0 } // line 19, offset 0xe843c { // line 1, offset 0xe8500 { // line 1, offset 0xe8500 { // line 1, offset 0xe8500 { // line 1, offset 0xe8500 int i; // $a1 { // line 1, offset 0xe8524 int d; // $v0 } // line 1, offset 0xe8554 } // line 1, offset 0xe8564 } // line 1, offset 0xe8564 } // line 1, offset 0xe8564 } // line 1, offset 0xe8564 { // line 1, offset 0xe8564 { // line 1, offset 0xe8564 int x; // $v0 { // line 1, offset 0xe8564 { // line 1, offset 0xe8564 struct VECTOR sp; // stack offset -56 { // line 1, offset 0xe8564 { // line 1, offset 0xe8564 int z; // $v0 int x; // $v1 } // line 1, offset 0xe8564 } // line 1, offset 0xe8564 { // line 1, offset 0xe8604 int res; // $v0 } // line 1, offset 0xe8628 } // line 1, offset 0xe862c } // line 1, offset 0xe862c } // line 1, offset 0xe862c } // line 1, offset 0xe862c { // line 1, offset 0xe862c struct tNode n; // stack offset -56 int fx; // $v1 int fz; // $v0 { // line 1, offset 0xe8660 { // line 1, offset 0xe8660 int dz; // $a0 int dx; // $v0 } // line 1, offset 0xe8660 } // line 1, offset 0xe8660 { // line 1, offset 0xe8660 { // line 1, offset 0xe8660 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 1, offset 0xe8774 } // line 1, offset 0xe8774 { // line 53, offset 0xe8774 { // line 53, offset 0xe8774 int dz; // $a0 int dx; // $v0 } // line 53, offset 0xe8774 } // line 53, offset 0xe8774 { // line 53, offset 0xe8774 { // line 53, offset 0xe8774 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 54, offset 0xe88b4 } // line 54, offset 0xe88b4 { // line 56, offset 0xe88b4 { // line 56, offset 0xe88b4 int dz; // $a0 int dx; // $v0 } // line 56, offset 0xe88b4 } // line 56, offset 0xe88b4 { // line 56, offset 0xe88b4 { // line 56, offset 0xe88b4 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 57, offset 0xe89bc } // line 57, offset 0xe89bc { // line 1, offset 0xe89c4 { // line 1, offset 0xe89c4 int dz; // $a0 int dx; // $v0 } // line 1, offset 0xe89c4 } // line 1, offset 0xe89c4 { // line 1, offset 0xe89c4 { // line 1, offset 0xe89c4 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 1, offset 0xe8ad8 } // line 1, offset 0xe8ad8 { // line 63, offset 0xe8ad8 { // line 63, offset 0xe8ad8 int dz; // $a0 int dx; // $v0 } // line 63, offset 0xe8ad8 } // line 63, offset 0xe8ad8 { // line 63, offset 0xe8ad8 { // line 63, offset 0xe8ad8 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 64, offset 0xe8c18 } // line 64, offset 0xe8c18 { // line 66, offset 0xe8c18 { // line 66, offset 0xe8c18 int dz; // $a0 int dx; // $v0 } // line 66, offset 0xe8c18 } // line 66, offset 0xe8c18 { // line 66, offset 0xe8c18 { // line 66, offset 0xe8c18 unsigned int parent; // $a2 unsigned int i; // $a3 } // line 66, offset 0xe8d18 } // line 66, offset 0xe8d18 } // line 66, offset 0xe8d18 } // line 66, offset 0xe8d18 { // line 77, offset 0xe8d54 int i; // $s0 { // line 1, offset 0xe8df4 } // line 1, offset 0xe8dfc } // line 91, offset 0xe8dfc { // line 94, offset 0xe8dfc int i; // $a1 int maxRet; // $a0 } // line 105, offset 0xe8e70 { // line 108, offset 0xe8e70 int dx; // $a0 int dy; // $v1 int dz; // $v0 } // line 112, offset 0xe8f00 } // line 113, offset 0xe8f00 /* * Offset 0xE8F00, from D:\driver2\game\C\PATHFIND.C (lines 1050..1111) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ getHeadingToPlayer(int vx /*$s4*/, int vy /*$a1*/, int vz /*$s3*/) { // line 1, offset 0xe8f00 int d1; // $s2 int d2; // $s1 int d3; // $s0 struct VECTOR pos; // stack offset -48 { // line 1, offset 0xe8f00 int dx; // $a3 int dy; // $v1 int dz; // $v0 int playerHereDistSq; // $a3 { // line 21, offset 0xe8f98 } // line 23, offset 0xe8f98 } // line 24, offset 0xe8f98 { // line 48, offset 0xe8ff8 } // line 50, offset 0xe9024 { // line 52, offset 0xe9030 } // line 60, offset 0xe9058 { // line 56, offset 0xe9058 } // line 61, offset 0xe90a4 } // line 62, offset 0xe90a4 /* * Offset 0xE90A4, from D:\driver2\game\C\PATHFIND.C (lines 659..663) * Stack frame base $sp, size 0 */ void /*$ra*/ setDistance(struct tNode *n /*$a0*/, unsigned short dist /*$a1*/) { } Source file(s) D:\driver2\game\C\PAUSE.C+D:\driver2\game\PAUSE.C, object file obj\pause.obj overlay id // 65 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct PLAYER_SCORE { int time; // size=0, offset=0 int P2time; // size=0, offset=4 short items; // size=0, offset=8 short P2items; // size=0, offset=10 char name[6]; // size=6, offset=12 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; enum EXIT_VALUE : char { MENU_QUIT_NONE = 0, MENU_QUIT_CONTINUE = 1, MENU_QUIT_QUIT = 2, MENU_QUIT_RESTART = 3, MENU_QUIT_DIRECTOR = 4, MENU_QUIT_QUICKREPLAY = 5, MENU_QUIT_BACKMENU = 6, MENU_QUIT_NEXTMISSION = 7, }; struct MENU_HEADER { char *Title; // size=0, offset=0 struct XYWH Bound; // size=8, offset=4 unsigned char NumItems; // size=0, offset=12 struct MENU_ITEM *MenuItems; // size=20, offset=16 }; struct MENU_ITEM { char *Text; // size=0, offset=0 unsigned char Type; // size=0, offset=4 unsigned char Justify; // size=0, offset=5 void *func(); // size=0, offset=8 enum EXIT_VALUE ExitValue; // size=1, offset=12 struct MENU_HEADER *SubMenu; // size=0, offset=16 }; struct XYWH { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; // 97 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct PLAYER_SCORE PLAYER_SCORE; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef enum EXIT_VALUE EXIT_VALUE; typedef struct MENU_HEADER MENU_HEADER; typedef struct MENU_ITEM MENU_ITEM; typedef struct XYWH XYWH; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; // 0 labels // 52 external declarations extern struct MENU_HEADER YesNoRestartHeader; // offset 0x000a1604 extern struct MENU_HEADER YesNoQuitHeader; // offset 0x000a1618 static struct MENU_HEADER PauseMenuHeader; // offset 0x000a14f4 static struct MENU_HEADER CutscenePauseMenuHeader; // offset 0x000a151c static struct MENU_ITEM MainPauseItems[9]; // offset 0x000a0f54 static struct MENU_ITEM MultiplayerPauseItems[7]; // offset 0x000a1008 static struct MENU_ITEM CutscenePauseItems[6]; // offset 0x000a1094 static struct MENU_ITEM MissionCompleteItems[8]; // offset 0x000a110c static struct MENU_ITEM MissionFailedItems[6]; // offset 0x000a11ac static struct MENU_ITEM TakeARideFinishedItems[6]; // offset 0x000a1224 static struct MENU_ITEM DrivingGameFinishedItems[7]; // offset 0x000a129c static struct MENU_ITEM MultiplayerFinishedItems[5]; // offset 0x000a1328 static struct MENU_ITEM ChaseGameFinishedItems[6]; // offset 0x000a138c static struct MENU_ITEM YesNoRestartItems[3]; // offset 0x000a1404 static struct MENU_ITEM YesNoQuitItems[3]; // offset 0x000a1440 static struct MENU_ITEM NoPadItems[1]; // offset 0x000a147c static struct MENU_ITEM NoMultiPadItems[2]; // offset 0x000a1490 static struct MENU_ITEM InvalidPadItems[1]; // offset 0x000a14b8 static struct MENU_ITEM InvalidMultiPadItems[2]; // offset 0x000a14cc static struct MENU_HEADER MultiplayerPauseHeader; // offset 0x000a1508 static struct MENU_HEADER MissionCompleteHeader; // offset 0x000a1530 static struct MENU_HEADER MissionFailedHeader; // offset 0x000a1544 static struct MENU_HEADER TakeARideFinishedHeader; // offset 0x000a1558 static struct MENU_HEADER DrivingGameFinishedHeader; // offset 0x000a156c static struct MENU_HEADER MultiplayerFinishedHeader; // offset 0x000a1580 static struct MENU_HEADER ChaseGameFinishedHeader; // offset 0x000a1594 static struct MENU_HEADER NoPadHeader; // offset 0x000a15a8 static struct MENU_HEADER NoMultiPadHeader; // offset 0x000a15bc static struct MENU_HEADER InvalidPadHeader; // offset 0x000a15d0 static struct MENU_HEADER InvalidMultiPadHeader; // offset 0x000a15e4 static int playerwithcontrol[3]; // offset 0x000a15f8 static char validchars[68]; // offset 0x000a162c extern int gDrawPauseMenus; // offset 0x000aa7f8 extern char gNoReplaySaveAllowed; // offset 0x000aa7fc static int gEnteringScore; // offset 0x000aa7d8 static int gScorePosition; // offset 0x000aa7dc static int gScoreEntered; // offset 0x000aa7e0 static int allownameentry; // offset 0x000aa7f4 static int VisibleMenu; // offset 0x000ab060 static struct MENU_HEADER *ActiveMenu; // offset 0x000ab064 static int ActiveMenuItem; // offset 0x000ab068 static int PauseReturnValue; // offset 0x000ab06c static char SfxVolumeText[8]; // offset 0x000ab070 static char MusicVolumeText[8]; // offset 0x000ab078 extern char EnterScoreText[32]; // offset 0x000d9470 static struct MENU_HEADER *VisibleMenus[3]; // offset 0x000d9348 static struct MENU_ITEM *ActiveItem[3]; // offset 0x000d9358 static char EnterNameText[32]; // offset 0x000d9368 static char ScoreName[5][7]; // offset 0x000d9388 static char ScoreItems[5][16]; // offset 0x000d93b8 static char ScoreTime[5][16]; // offset 0x000d9408 static struct MENU_HEADER DrivingDebugHeader; // offset 0x000d9458 // 16 functions /* * Offset 0x6BF50, from D:\driver2\game\C\PAUSE.C (lines 1004..1136) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ ShowPauseMenu(enum PAUSEMODE mode /*$s0*/) { // line 1, offset 0x6bf50 enum PAUSEMODE passed_mode; // $s2 { // line 58, offset 0x6c0c0 } // line 81, offset 0x6c140 { // line 88, offset 0x6c178 struct RECT rect; // stack offset -32 } // line 97, offset 0x6c1fc } // line 133, offset 0x6c2ac /* * Offset 0x6C2AC, from D:\driver2\game\C\PAUSE.C (lines 1216..1387) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitaliseMenu(enum PAUSEMODE mode /*$a2*/) { // line 1, offset 0x6c2ac struct MENU_ITEM *pItem; // $a0 int i; // $a1 } // line 172, offset 0x6c6b8 /* * Offset 0x6C6B8, from D:\driver2\game\C\PAUSE.C (lines 1401..1430) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupMenu(struct MENU_HEADER *menu /*$a0*/, int back /*$a1*/) { // line 1, offset 0x6c6b8 struct MENU_ITEM *pItem; // $a2 int count; // $a3 } // line 30, offset 0x6c7f4 /* * Offset 0x6C7F4, from D:\driver2\game\C\PAUSE.C (lines 1443..1527) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawVisibleMenus() { // line 2, offset 0x6c7f4 struct MENU_HEADER *pActive; // $s5 struct MENU_ITEM *pItem; // $s1 struct POLY_FT3 *null; // $a0 int i; // stack offset -48 int ypos; // $s3 int xpos; // $fp int width; // $s4 { // line 30, offset 0x6c8c0 unsigned char r; // $s6 unsigned char b; // $s7 int x1; // $s0 int x2; // $s2 } // line 66, offset 0x6ca40 } // line 85, offset 0x6cbe8 /* * Offset 0x6CBE8, from D:\driver2\game\C\PAUSE.C (lines 1543..1704) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ControlMenu() { // line 2, offset 0x6cbe8 static int debounce; // offset 0x30 unsigned short paddata; // $a2 unsigned short paddirect; // $a3 { // line 53, offset 0x6ccd4 int doit; // $v1 } // line 78, offset 0x6cd78 { // line 132, offset 0x6cf54 int i; // $a0 } // line 139, offset 0x6cfb8 { // line 149, offset 0x6cfd8 int i; // $a0 } // line 160, offset 0x6d034 } // line 162, offset 0x6d034 /* * Offset 0x6D044, from D:\driver2\game\C\PAUSE.C (lines 1787..1940) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ EnterScoreName() { // line 2, offset 0x6d044 struct SCORE_ENTRY *table; // stack offset -40 char *username; // $s3 unsigned short npad; // $a1 int so; // $s0 int co; // $s1 int delay; // $s2 char c; // $a0 char toggle; // $s6 } // line 154, offset 0x6d324 /* * Offset 0x6D324, from D:\driver2\game\C\PAUSE.C (lines 1943..2011) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ CreateScoreNames(struct SCORE_ENTRY *table /*$s0*/, struct PLAYER_SCORE *score /*stack 4*/, int position /*stack 8*/) { // line 1, offset 0x6d324 char *text; // $s1 int min; // $t1 int frac; // $v0 int i; // $s5 } // line 69, offset 0x6d664 /* * Offset 0x6D694, from D:\driver2\game\C\PAUSE.C (lines 2020..2074) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawHighScoreMenu(int selection /*stack 0*/) { // line 1, offset 0x6d694 struct POLY_FT3 *null; // $a0 char text[4]; // stack offset -48 unsigned char r; // $s3 unsigned char g; // $s5 unsigned char b; // $s2 int i; // $s0 int ypos; // $s4 } // line 55, offset 0x6d9b0 /* * Offset 0x6D9B0, from D:\driver2\game\C\PAUSE.C (lines 1153..1154) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SaveReplay(int direction /*$a0*/) { } /* * Offset 0x6D9D4, from D:\driver2\game\C\PAUSE.C (lines 1158..1159) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SaveGame(int direction /*$a0*/) { } /* * Offset 0x6D9F8, from D:\driver2\game\C\PAUSE.C (lines 1163..1164) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ EnterName() { } /* * Offset 0x6DA18, from D:\driver2\game\C\PAUSE.C (lines 1185..1205) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ MaxMenuStringLength(struct MENU_HEADER *pMenu /*$v0*/) { // line 1, offset 0x6da18 struct MENU_ITEM *pItems; // $s1 int max; // $s2 int temp; // $s0 } // line 21, offset 0x6dad0 /* * Offset 0x6DAD0, from D:\driver2\game\C\PAUSE.C (lines 1710..1721) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PauseMap(int direction /*$a0*/) { } /* * Offset 0x6DB34, from D:\driver2\game\C\PAUSE.C (lines 1725..1743) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SfxVolume(int direction /*$a0*/) { // line 1, offset 0x6db34 } // line 19, offset 0x6dc04 /* * Offset 0x6DC04, from D:\driver2\game\C\PAUSE.C (lines 1746..1764) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ MusicVolume(int direction /*$a0*/) { // line 1, offset 0x6dc04 } // line 19, offset 0x6dcd4 /* * Offset 0x6DCD4, from D:\driver2\game\C\PAUSE.C (lines 1139..1149) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DrawPauseMenus() { } Source file(s) D:\driver2\game\C\PEDEST.C+D:\driver2\game\PEDEST.C, object file obj\pedest.OBJ overlay id // 86 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct SEATED_PEDESTRIANS { int x; // size=0, offset=0 int z; // size=0, offset=4 short rotation; // size=0, offset=8 char index; // size=0, offset=10 char pad; // size=0, offset=11 }; struct CAR_COLLISION_BOX { int min_x; // size=0, offset=0 int max_x; // size=0, offset=4 int min_z; // size=0, offset=8 int max_z; // size=0, offset=12 }; struct PEDESTRIAN_ROADS { short pos; // size=0, offset=0 short north; // size=0, offset=2 short south; // size=0, offset=4 short east; // size=0, offset=6 short west; // size=0, offset=8 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct DRIVER2_STRAIGHT { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 unsigned short length; // size=0, offset=8 short bing; // size=0, offset=10 short angle; // size=0, offset=12 short ConnectIdx[4]; // size=8, offset=14 char NumLanes; // size=0, offset=22 char LaneDirs; // size=0, offset=23 char AILanes; // size=0, offset=24 char packing; // size=0, offset=25 }; struct DRIVER2_CURVE { int Midx; // size=0, offset=0 int Midz; // size=0, offset=4 short start; // size=0, offset=8 short end; // size=0, offset=10 short ConnectIdx[4]; // size=8, offset=12 short gradient; // size=0, offset=20 short height; // size=0, offset=22 char NumLanes; // size=0, offset=24 char LaneDirs; // size=0, offset=25 char inside; // size=0, offset=26 char AILanes; // size=0, offset=27 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct CDATA2D { struct VECTOR x; // size=16, offset=0 struct VECTOR axis[2]; // size=32, offset=16 struct VECTOR vel; // size=16, offset=48 int theta; // size=0, offset=64 int length[2]; // size=8, offset=68 int dist[2]; // size=8, offset=76 int limit[2]; // size=8, offset=84 int avel; // size=0, offset=92 int isCameraOrTanner; // size=0, offset=96 }; struct CRET2D { struct VECTOR hit; // size=16, offset=0 struct VECTOR surfNormal; // size=16, offset=16 int penetration; // size=0, offset=32 int neverfree; // size=0, offset=36 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; // 118 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _PLAYER PLAYER; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct SEATED_PEDESTRIANS SEATED_PEDESTRIANS; typedef struct CAR_COLLISION_BOX CAR_COLLISION_BOX; typedef struct PEDESTRIAN_ROADS PEDESTRIAN_ROADS; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct DRIVER2_STRAIGHT DRIVER2_STRAIGHT; typedef struct DRIVER2_CURVE DRIVER2_CURVE; typedef struct _sdPlane sdPlane; typedef struct MR_TIMER MR_TIMER; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct CDATA2D CDATA2D; typedef struct CRET2D CRET2D; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; // 0 labels // 54 external declarations extern struct VECTOR tannerLookAngle; // offset 0x000a16a8 extern long force[4]; // offset 0x000a16b8 extern long point[4]; // offset 0x000a16c8 static int num_pedestrians; // offset 0x000aa838 static int numTannerPeds; // offset 0x000aa83c extern int bReverseYRotation; // offset 0x000aa860 extern int bTannerSitting; // offset 0x000aa840 extern int bKillTanner; // offset 0x000aa85c extern int pinginPedAngle; // offset 0x000aa844 extern int iAllowWatch; // offset 0x000aa848 extern int iFreezeTimer; // offset 0x000aa84c extern int bFreezeAnimation; // offset 0x000aa850 extern int bReverseAnimation; // offset 0x000aa854 extern int max_pedestrians; // offset 0x000aa858 extern int bAvoidTanner; // offset 0x000aa864 extern int bAvoidBomb; // offset 0x000aa868 extern int iIdleTimer; // offset 0x000aa86c extern int bKilled; // offset 0x000aa870 extern int bStopTanner; // offset 0x000aa874 static int numCopPeds; // offset 0x000aa878 extern int tannerTurnStep; // offset 0x000aa87c extern int tannerTurnMax; // offset 0x000aa880 extern int tannerTurn; // offset 0x000aa884 extern int bPower; // offset 0x000aa888 extern int powerCounter; // offset 0x000aa88c extern struct _CAR_DATA *pCivCarToGetIn; // offset 0x000aa8b4 extern int allreadydone; // offset 0x000aa8bc extern struct PEDESTRIAN *pPlayerPed; // offset 0x000ab094 extern struct PEDESTRIAN *pUsedPeds; // offset 0x000ab0b4 extern struct _CAR_DATA *pcdTanner; // offset 0x000ab0c0 extern struct SEATED_PEDESTRIANS *seated_pedestrian; // offset 0x000ab0a8 extern int seated_count; // offset 0x000ab0a4 extern int maxSeated; // offset 0x000ab0b8 extern int basic_car_interest; // offset 0x000ab0ac extern struct _CAR_DATA *carToGetIn; // offset 0x000ab0c4 extern int collision_boxes_set; // offset 0x000ab098 extern int num_extra_boxes_set; // offset 0x000ab09c extern char ping_in_pedestrians; // offset 0x000ab0c8 extern struct PEDESTRIAN *pFreePeds; // offset 0x000ab0b0 extern unsigned long tannerPad; // offset 0x000ab0bc static int storedCam; // offset 0x000ab080 static int oldCamView; // offset 0x000ab084 static struct SVECTOR camAngle; // offset 0x000ab088 static int oldDir; // offset 0x000ab090 extern int oldWeather; // offset 0x000ab0a0 extern struct PEDESTRIAN *pHold; // offset 0x000ab0cc extern struct MODEL *pmTannerModels[17]; // offset 0x000d96e0 extern struct MODEL *pmJerichoModels[6]; // offset 0x000d95b8 static struct CDATA2D cd[2]; // offset 0x000d94f0 extern struct CAR_COLLISION_BOX collision_box[8]; // offset 0x000d9660 extern struct CAR_COLLISION_BOX tanner_collision_box; // offset 0x000d95d0 extern struct CAR_COLLISION_BOX extra_collision_boxes[5]; // offset 0x000d95f0 extern struct _CAR_DATA *collision_car_ptr[8]; // offset 0x000d9640 extern struct PEDESTRIAN_ROADS pedestrian_roads; // offset 0x000d95e0 // 64 functions /* * Offset 0x6DD34, from D:\driver2\game\C\PEDEST.C (lines 1137..1181) * Stack frame base $sp, size 0 */ void /*$ra*/ IHaveThePower() { // line 2, offset 0x6dd34 struct _CAR_DATA *cp; // $t4 { // line 15, offset 0x6ddb8 } // line 33, offset 0x6df20 } // line 45, offset 0x6df54 /* * Offset 0x6DF54, from D:\driver2\game\C\PEDEST.C (lines 1191..1366) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ProcessTannerPad(struct PEDESTRIAN *pPed /*$s1*/, unsigned long pad /*$a1*/, char PadSteer /*$a2*/, char use_analogue /*$a3*/) { // line 1, offset 0x6df54 struct VECTOR vec; // stack offset -88 int mapheight; // $s2 struct VECTOR normal; // stack offset -72 struct VECTOR out; // stack offset -56 struct _sdPlane *SurfacePtr; // stack offset -24 { // line 33, offset 0x6dfc8 struct VECTOR tVec; // stack offset -40 struct _sdPlane *plane; // $v0 int mH; // $v1 int sI; // $a0 } // line 86, offset 0x6e104 { // line 168, offset 0x6e390 } // line 174, offset 0x6e3f0 } // line 176, offset 0x6e3f0 /* * Offset 0x6E408, from D:\driver2\game\C\PEDEST.C (lines 1375..1432) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitTanner() { // line 2, offset 0x6e408 } // line 58, offset 0x6e5c4 /* * Offset 0x6E5C4, from D:\driver2\game\C\PEDEST.C (lines 1466..1512) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitPedestrians() { // line 2, offset 0x6e5c4 int loop; // $a1 struct SEATED_PEDESTRIANS *seatedptr; // $s2 } // line 47, offset 0x6e6c4 /* * Offset 0x6E6C4, from D:\driver2\game\C\PEDEST.C (lines 1623..1834) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ ActivatePlayerPedestrian(struct _CAR_DATA *pCar /*$s6*/, char *padId /*stack 4*/, int direction /*$a1*/, long *position[4] /*$a3*/, int playerType /*stack 16*/, enum PED_MODEL_TYPES playerType /*stack -56*/) { // line 1, offset 0x6e6c4 struct PEDESTRIAN *pPed; // $s1 struct PEDESTRIAN *pSPed; // $a0 struct VECTOR v; // stack offset -72 int nx; // $s4 int nz; // $s2 long w; // $s0 long x; // $s5 long y; // stack offset -52 long z; // $s1 long d; // stack offset -48 int side; // $fp int id; // $s3 { // line 65, offset 0x6e7d4 { // line 140, offset 0x6ea48 } // line 140, offset 0x6ea48 { // line 184, offset 0x6eb48 } // line 184, offset 0x6eb48 } // line 184, offset 0x6eb48 } // line 212, offset 0x6ec88 /* * Offset 0x6EC88, from D:\driver2\game\C\PEDEST.C (lines 1877..1967) * Stack frame base $sp, size 168 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ PlaceRoadBlockCops() { // line 2, offset 0x6ec88 struct _CAR_DATA *pCar; // $a0 struct _CAR_DATA *pCopCars[16]; // stack offset -152 int numCops; // $fp { // line 19, offset 0x6ed1c int x; // $s2 int z; // $s0 int w; // $s0 int i; // $s7 int s1; // $s1 int s2; // $a3 struct VECTOR vert; // stack offset -88 long disp[4]; // stack offset -72 long dir[4]; // stack offset -56 int alpha; // $s1 } // line 89, offset 0x6efdc } // line 91, offset 0x6efdc /* * Offset 0x6F00C, from D:\driver2\game\C\PEDEST.C (lines 1975..2044) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ CreatePedAtLocation(long *pPos[4] /*$s2*/, int pedType /*$s1*/) { // line 1, offset 0x6f00c struct PEDESTRIAN *pPed; // $s0 } // line 70, offset 0x6f16c /* * Offset 0x6F16C, from D:\driver2\game\C\PEDEST.C (lines 2168..2240) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ ControlPedestrians() { // line 2, offset 0x6f16c struct PEDESTRIAN *pPed; // $s0 struct PEDESTRIAN *pPedNext; // $s2 struct _CAR_DATA *pCar; // $v0 { // line 57, offset 0x6f26c } // line 65, offset 0x6f2b0 } // line 73, offset 0x6f2dc /* * Offset 0x6F2DC, from D:\driver2\game\C\PEDEST.C (lines 2385..2512) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedDoNothing(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x6F5AC, from D:\driver2\game\C\PEDEST.C (lines 2523..2631) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedUserRunner(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x6f5ac } // line 109, offset 0x6f80c /* * Offset 0x6F80C, from D:\driver2\game\C\PEDEST.C (lines 2827..2890) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ SetupGetOutCar(struct PEDESTRIAN *pPed /*$s5*/, struct _CAR_DATA *pCar /*$s3*/, int side /*$s7*/) { // line 1, offset 0x6f80c int alpha; // $s2 long disp[4]; // stack offset -80 long dir[4]; // stack offset -64 struct SVECTOR vert; // stack offset -48 int x; // $s4 int z; // $s0 int a; // $s6 int nx; // $a3 int nz; // $a1 } // line 64, offset 0x6fa3c /* * Offset 0x6FA3C, from D:\driver2\game\C\PEDEST.C (lines 2898..2987) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SetupGetInCar(struct PEDESTRIAN *pPed /*$s2*/) { // line 1, offset 0x6fa3c int alpha; // $s1 long disp[4]; // stack offset -72 long dir[4]; // stack offset -56 struct SVECTOR vert; // stack offset -40 { // line 36, offset 0x6fb2c int x; // $t1 int z; // $t2 int a; // $a0 int nx; // $a3 int nz; // $a1 } // line 59, offset 0x6fc24 { // line 70, offset 0x6fc70 long pos[4]; // stack offset -32 } // line 71, offset 0x6fc70 } // line 90, offset 0x6fd08 /* * Offset 0x6FD08, from D:\driver2\game\C\PEDEST.C (lines 3074..3149) * Stack frame base $sp, size 0 */ void /*$ra*/ TannerCameraHandler(struct PEDESTRIAN *pPed /*$a0*/) { // line 2, offset 0x6fd08 int padsteer; // $a3 int maxY; // $t1 int maxX; // $t5 int range; // $t0 int minX; // $t4 int extra; // $a3 } // line 76, offset 0x6ff48 /* * Offset 0x6FF48, from D:\driver2\game\C\PEDEST.C (lines 3157..3218) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ void /*$ra*/ TannerSitDown(struct PEDESTRIAN *pPed /*$a2*/) { // line 1, offset 0x6ff48 struct VECTOR angle; // stack offset -24 } // line 62, offset 0x700d0 /* * Offset 0x700D0, from D:\driver2\game\C\PEDEST.C (lines 3227..3349) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ AnimatePed(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x700d0 { // line 11, offset 0x700f0 int mapheight; // $a3 int reverse; // $s1 { // line 14, offset 0x700f0 struct VECTOR vec; // stack offset -32 } // line 39, offset 0x7015c { // line 103, offset 0x7030c int sfc; // $v1 } // line 108, offset 0x703bc } // line 121, offset 0x70468 } // line 123, offset 0x70468 /* * Offset 0x7047C, from D:\driver2\game\C\PEDEST.C (lines 3447..3631) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ PingInPedestrians() { // line 2, offset 0x7047c int bFound; // $s1 struct VECTOR randomLoc; // stack offset -88 struct VECTOR baseLoc; // stack offset -72 int i; // $s2 int pingInDist; // $a2 struct VECTOR position; // stack offset -56 struct VECTOR target; // stack offset -40 struct PEDESTRIAN *pedestrian; // $s1 { // line 37, offset 0x70518 { // line 55, offset 0x705f8 struct PEDESTRIAN *pPed; // $a2 { // line 73, offset 0x70628 int x; // $v1 int z; // $v0 int radius; // $v1 } // line 75, offset 0x70628 } // line 77, offset 0x70674 } // line 79, offset 0x70674 { // line 87, offset 0x706ac { // line 136, offset 0x707f4 int rval; // $v1 } // line 175, offset 0x70858 } // line 180, offset 0x70858 } // line 185, offset 0x70858 /* * Offset 0x70878, from D:\driver2\game\C\PEDEST.C (lines 3685..3752) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ FindPointOfCollision(struct _CAR_DATA *pCar /*$s3*/, struct VECTOR *pPos /*$a1*/) { // line 1, offset 0x70878 int tb1; // $v1 int tb2; // $v0 int minX; // $a3 int maxX; // $t0 int minZ; // $v0 int maxZ; // $a0 int x; // $t1 int z; // $a1 int s1; // $a2 int s2; // $v1 int carLength[2]; // stack offset -40 static struct CRET2D collisionResult; // offset 0x0 } // line 68, offset 0x70a9c /* * Offset 0x70A9C, from D:\driver2\game\C\PEDEST.C (lines 3762..3906) * Stack frame base $sp, size 136 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ TannerCarCollisionCheck(struct VECTOR *pPos /*$s5*/, int dir /*$a1*/, int bQuick /*stack 8*/) { // line 1, offset 0x70a9c int carLength[2]; // stack offset -120 struct _CAR_DATA *cp0; // $s0 struct _CAR_DATA *cp1; // $s1 static struct CRET2D collisionResult; // offset 0x30 unsigned int dNewLBODY[2]; // stack offset -112 int speed; // $v0 { // line 36, offset 0x70b2c { // line 36, offset 0x70b2c } // line 36, offset 0x70b2c { // line 53, offset 0x70c04 struct VECTOR velocity; // stack offset -104 long pointVel[4]; // stack offset -88 long reaction[4]; // stack offset -72 long lever[4]; // stack offset -56 int strikeVel; // $t1 { // line 84, offset 0x70d84 } // line 95, offset 0x70d84 { // line 99, offset 0x70db0 int twistY; // $a2 int lever_dot_n; // $a0 int displacementsquared; // $a1 int denom; // $a0 } // line 112, offset 0x70e8c } // line 133, offset 0x70fd8 } // line 142, offset 0x71008 } // line 145, offset 0x71054 /* * Offset 0x71054, from D:\driver2\game\C\PEDEST.C (lines 3946..4039) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetupCivJump(struct PEDESTRIAN *pPed /*$s1*/, struct _CAR_DATA *cp /*$s0*/) { // line 1, offset 0x71054 long disp[4]; // stack offset -48 long dir[4]; // stack offset -32 int angle; // $s0 { // line 14, offset 0x710c0 short scale; // $a2 } // line 21, offset 0x710e4 { // line 62, offset 0x711e8 } // line 81, offset 0x712ac } // line 94, offset 0x71324 /* * Offset 0x71324, from D:\driver2\game\C\PEDEST.C (lines 4101..4181) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ CivPedWalk(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x71324 int turn; // $a1 int offset1; // $t0 int offset2; // $v1 int lookahead; // $s3 int speed; // $s1 } // line 81, offset 0x715fc /* * Offset 0x715FC, from D:\driver2\game\C\PEDEST.C (lines 4508..4609) * Stack frame base $sp, size 32 */ void /*$ra*/ CorrectPathPosition(struct PEDESTRIAN *pedestrian /*$a0*/, struct VECTOR *position /*$a1*/) { // line 2, offset 0x715fc struct VECTOR vec; // stack offset -16 } // line 102, offset 0x715fc /* * Offset 0x71608, from D:\driver2\game\C\PEDEST.C (lines 4619..4733) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ CalcPedestrianDirection(int last_dir /*$a0*/, int wx /*$s5*/, int wz /*$s6*/, struct VECTOR *target /*$s3*/) { // line 1, offset 0x71608 int dir; // $s2 int num; // $s1 int rx; // $v1 int rz; // $a0 int mask; // $s0 { // line 50, offset 0x716c0 } // line 62, offset 0x7170c } // line 115, offset 0x717ac /* * Offset 0x717AC, from D:\driver2\game\C\PEDEST.C (lines 4984..5022) * Stack frame base $sp, size 0 */ struct SEATED_PEDESTRIANS * /*$ra*/ FindTannerASeat(struct PEDESTRIAN *pPed /*$t4*/) { // line 1, offset 0x717ac struct SEATED_PEDESTRIANS *seatedptr; // $a2 struct SEATED_PEDESTRIANS *theOne; // $t1 int dx; // $a0 int dz; // $v1 int distsqr; // $v0 int bestSqr; // $t2 } // line 39, offset 0x718c8 /* * Offset 0x718C8, from D:\driver2\game\C\PEDEST.C (lines 5031..5075) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ add_seated(struct SEATED_PEDESTRIANS *seatedptr /*$s0*/, int seat_index /*$s2*/) { // line 1, offset 0x718c8 struct PEDESTRIAN *pedestrian; // $s1 int index; // $v0 } // line 45, offset 0x71a44 /* * Offset 0x71A5C, from D:\driver2\game\C\PEDEST.C (lines 5084..5109) * Stack frame base $sp, size 16 */ void /*$ra*/ set_coll_box(int index /*$t2*/, struct _CAR_DATA *cp /*$t0*/, int offset /*$t3*/) { // line 1, offset 0x71a5c struct VECTOR BoxCentre; // stack offset -16 int boxsize; // $t1 } // line 26, offset 0x71b74 /* * Offset 0x71B7C, from D:\driver2\game\C\PEDEST.C (lines 5118..5170) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ BuildCarCollisionBox() { // line 2, offset 0x71b7c struct _CAR_DATA *cp; // $s3 int count1; // $s4 int i; // $t1 { // line 28, offset 0x71cbc int x; // $a0 int z; // $a2 } // line 37, offset 0x71d58 } // line 53, offset 0x71e0c /* * Offset 0x71E0C, from D:\driver2\game\C\PEDEST.C (lines 5249..5317) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 ra */ void /*$ra*/ CalculatePedestrianInterest(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x71e0c int interest; // $a2 int dist; // $v1 struct _CAR_DATA *pCar; // $a2 struct VECTOR v1; // stack offset -40 struct VECTOR v2; // stack offset -24 } // line 69, offset 0x71f44 /* * Offset 0x71F54, from D:\driver2\game\C\PEDEST.C (lines 1521..1533) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DestroyPedestrians() { // line 2, offset 0x71f54 } // line 13, offset 0x71fb4 /* * Offset 0x71FB4, from D:\driver2\game\C\PEDEST.C (lines 1567..1615) * Stack frame base $sp, size 0 */ void /*$ra*/ DestroyPedestrian(struct PEDESTRIAN *pPed /*$a1*/) { // line 1, offset 0x71fb4 { // line 38, offset 0x72064 struct SEATED_PEDESTRIANS *seatedptr; // $a0 } // line 41, offset 0x72090 } // line 49, offset 0x720ac /* * Offset 0x720AC, from D:\driver2\game\C\PEDEST.C (lines 1842..1868) * Stack frame base $sp, size 0 */ struct PEDESTRIAN * /*$ra*/ CreatePedestrian() { // line 2, offset 0x720ac } // line 27, offset 0x72114 /* * Offset 0x7211C, from D:\driver2\game\C\PEDEST.C (lines 4221..4456) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ HandlePedestrians() { // line 2, offset 0x7211c } // line 236, offset 0x7215c /* * Offset 0x7216C, from D:\driver2\game\C\PEDEST.C (lines 3357..3395) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DeActivatePlayerPedestrian(struct PEDESTRIAN *pPed /*$s3*/) { // line 1, offset 0x7216c int distToCarSq; // stack offset -32 struct _CAR_DATA *closestCar; // $s1 struct _PLAYER *pPlayer; // $v0 struct VECTOR point; // stack offset -48 int getIn; // $s2 { // line 27, offset 0x7221c } // line 38, offset 0x72274 } // line 39, offset 0x72290 /* * Offset 0x72290, from D:\driver2\game\C\PEDEST.C (lines 2052..2136) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DrawAllPedestrians() { // line 2, offset 0x72290 struct PEDESTRIAN *pPed; // $s0 int pedType; // $s2 struct MATRIX mStore; // stack offset -56 { // line 19, offset 0x7231c { // line 26, offset 0x7234c } // line 26, offset 0x7234c } // line 33, offset 0x72364 { // line 49, offset 0x723d4 } // line 54, offset 0x72400 } // line 85, offset 0x72430 /* * Offset 0x72430, from D:\driver2\game\C\PEDEST.C (lines 2145..2157) * Stack frame base $sp, size 0 */ int /*$ra*/ TannerActionHappening() { // line 2, offset 0x72430 struct PEDESTRIAN *pPed; // $a0 } // line 13, offset 0x72478 /* * Offset 0x72478, from D:\driver2\game\C\PEDEST.C (lines 1440..1458) * Stack frame base $sp, size 0 */ void /*$ra*/ SetTannerPosition(struct VECTOR *pVec /*$a0*/) { // line 1, offset 0x72478 struct PEDESTRIAN *pPed; // $a1 } // line 19, offset 0x72500 /* * Offset 0x72500, from D:\driver2\game\C\PEDEST.C (lines 4924..4934) * Stack frame base $sp, size 0 */ void /*$ra*/ SetPedestrianTurn(struct PEDESTRIAN *pedestrian /*$a0*/, int turn /*$a1*/) { // line 1, offset 0x72500 int dir; // $a2 int speed; // $v1 } // line 11, offset 0x72584 /* * Offset 0x72584, from D:\driver2\game\C\PEDEST.C (lines 5325..5334) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ PedSurfaceType(struct VECTOR *ped_pos /*$a0*/) { // line 5, offset 0x72584 struct _sdPlane *sfc_ptr; // $v0 } // line 10, offset 0x725b8 /* * Offset 0x725B8, from D:\driver2\game\C\PEDEST.C (lines 4845..4916) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ int /*$ra*/ IsPavement(int x /*$a0*/, int y /*$a1*/, int z /*$a2*/, struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x725b8 struct VECTOR vec; // stack offset -24 int r; // $v1 } // line 72, offset 0x72644 /* * Offset 0x72644, from D:\driver2\game\C\PEDEST.C (lines 4943..4976) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ struct SEATED_PEDESTRIANS * /*$ra*/ FindSeated() { // line 2, offset 0x72644 struct SEATED_PEDESTRIANS *seatedptr; // $s0 { // line 7, offset 0x7266c int dx; // $v1 int dz; // $v0 int distsqr; // $v1 int count1; // $a2 } // line 32, offset 0x72724 } // line 34, offset 0x72738 /* * Offset 0x72738, from D:\driver2\game\C\PEDEST.C (lines 5178..5222) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ struct _CAR_DATA * /*$ra*/ CheckForCar(struct PEDESTRIAN *pedestrian /*$s3*/) { // line 1, offset 0x72738 int count; // $s0 { // line 5, offset 0x72770 } // line 26, offset 0x72790 { // line 28, offset 0x727b4 } // line 35, offset 0x727b4 { // line 39, offset 0x72800 } // line 43, offset 0x7281c } // line 45, offset 0x7283c /* * Offset 0x7283C, from D:\driver2\game\C\PEDEST.C (lines 4465..4495) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedestrianActionInit_WalkToTarget(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x7283c int dir; // $v1 } // line 31, offset 0x728b8 /* * Offset 0x728C8, from D:\driver2\game\C\PEDEST.C (lines 3060..3064) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupTannerSitDown(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x72904, from D:\driver2\game\C\PEDEST.C (lines 3026..3031) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupPressButton(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x72944, from D:\driver2\game\C\PEDEST.C (lines 2639..2693) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedUserWalker(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x72944 static int speed; // offset 0x80 } // line 55, offset 0x72a10 /* * Offset 0x72A10, from D:\driver2\game\C\PEDEST.C (lines 2702..2787) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedCarryOutAnimation(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x72B5C, from D:\driver2\game\C\PEDEST.C (lines 2994..3017) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedGetInCar(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x72b5c long disp[4]; // stack offset -48 long dir[4]; // stack offset -32 struct SVECTOR vert; // stack offset -16 } // line 24, offset 0x72bec /* * Offset 0x72BEC, from D:\driver2\game\C\PEDEST.C (lines 2796..2816) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ PedGetOutCar(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x72C90, from D:\driver2\game\C\PEDEST.C (lines 3040..3051) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PedPressButton(struct PEDESTRIAN *pPed /*$v1*/) { } /* * Offset 0x72CE0, from D:\driver2\game\C\PEDEST.C (lines 3402..3403) * Stack frame base $sp, size 0 */ void /*$ra*/ CivPedDoNothing(struct PEDESTRIAN *pPed /*$a0*/) { } /* * Offset 0x72CE8, from D:\driver2\game\C\PEDEST.C (lines 4190..4207) * Stack frame base $sp, size 0 */ void /*$ra*/ CivPedSit(struct PEDESTRIAN *pPed /*$a0*/) { // line 2, offset 0x72ce8 } // line 18, offset 0x72cf0 /* * Offset 0x72CF0, from D:\driver2\game\C\PEDEST.C (lines 4047..4072) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ CivPedJump(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x72cf0 } // line 26, offset 0x72da0 /* * Offset 0x72DA0, from D:\driver2\game\C\PEDEST.C (lines 2353..2376) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ void /*$ra*/ CopStand(struct PEDESTRIAN *pPed /*$s0*/) { // line 1, offset 0x72da0 struct VECTOR v; // stack offset -24 } // line 24, offset 0x72dfc /* * Offset 0x72DFC, from D:\driver2\game\C\PEDEST.C (lines 2325..2345) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ CivGetIn(struct PEDESTRIAN *pPed /*$s2*/) { // line 1, offset 0x72dfc struct DRIVER2_STRAIGHT *str; // $s1 struct DRIVER2_CURVE *crv; // $s0 { // line 1, offset 0x72dfc } // line 20, offset 0x72ee4 } // line 21, offset 0x72ee4 /* * Offset 0x72EE4, from D:\driver2\game\C\PEDEST.C (lines 3640..3674) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ TannerCollision(struct PEDESTRIAN *pPed /*$s1*/) { // line 1, offset 0x72ee4 } // line 35, offset 0x72fbc /* * Offset 0x72FD0, from D:\driver2\game\C\PEDEST.C (lines 1541..1558) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ DestroyCivPedestrians() { // line 2, offset 0x72fd0 struct PEDESTRIAN *pPed; // $v1 struct PEDESTRIAN *pHPed; // $s0 } // line 18, offset 0x73038 /* * Offset 0x73038, from D:\driver2\game\C\PEDEST.C (lines 2256..2266) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupDoNowt(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x7307C, from D:\driver2\game\C\PEDEST.C (lines 2275..2282) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupWalker(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x730B8, from D:\driver2\game\C\PEDEST.C (lines 2291..2298) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupRunner(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x730FC, from D:\driver2\game\C\PEDEST.C (lines 2302..2309) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupBack(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x7313C, from D:\driver2\game\C\PEDEST.C (lines 3411..3434) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetupCivPedRouteData(struct VECTOR *pPos /*$s1*/) { // line 1, offset 0x7313c struct VECTOR baseLoc; // stack offset -32 } // line 24, offset 0x731f8 /* * Offset 0x731F8, from D:\driver2\game\C\PEDEST.C (lines 3915..3937) * Stack frame base $sp, size 0 */ int /*$ra*/ PingOutPed(struct PEDESTRIAN *pPed /*$a2*/) { // line 1, offset 0x731f8 int px; // $a0 int pz; // $v1 int ps; // $a0 } // line 23, offset 0x73270 /* * Offset 0x73270, from D:\driver2\game\C\PEDEST.C (lines 4080..4092) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupCivPedWalk(struct PEDESTRIAN *pPed /*$s0*/) { } /* * Offset 0x732C0, from D:\driver2\game\C\PEDEST.C (lines 5231..5240) * Stack frame base $sp, size 0 */ int /*$ra*/ CheckForPlayerCar(struct PEDESTRIAN *pedestrian /*$a0*/, struct CAR_COLLISION_BOX *collision_box /*$a1*/) { } /* * Offset 0x73328, from D:\driver2\game\C\PEDEST.C (lines 5344..5345) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessChairLump(char *lump_file /*$a0*/, int lump_size /*$a1*/) { } Source file(s) D:\driver2\game\C\PLAYERS.C+D:\driver2\game\PLAYERS.C, object file obj\players.OBJ overlay id // 67 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct FELONY_DELAY { short current; // size=0, offset=0 short maximum; // size=0, offset=2 }; struct FELONY_VALUE { short placid; // size=0, offset=0 short angry; // size=0, offset=2 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; // 101 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _PLAYER PLAYER; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct FELONY_DELAY FELONY_DELAY; typedef struct FELONY_VALUE FELONY_VALUE; typedef struct __tunnelcoords tunnelcoords; typedef struct CAR_POLY CAR_POLY; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 5 external declarations extern long levelstartpos[8][4]; // offset 0x000a16d8 extern int numPlayersToCreate; // offset 0x000aa8c4 extern int lastCarCameraView; // offset 0x000aa8c0 extern int my_sly_var; // offset 0x000ab0d0 extern struct _PLAYER player[8]; // offset 0x000d9728 // 7 functions /* * Offset 0x73334, from D:\driver2\game\C\PLAYERS.C (lines 130..180) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ChangeCarPlayerToPed(int playerID /*$s0*/) { // line 1, offset 0x73334 struct _CAR_DATA *lcp; // $s2 } // line 51, offset 0x7350c /* * Offset 0x7350C, from D:\driver2\game\C\PLAYERS.C (lines 184..243) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ ChangePedPlayerToCar(int playerID /*$s4*/, struct _CAR_DATA *newCar /*$s2*/) { // line 1, offset 0x7350c struct _PLAYER *lPlayer; // $s1 int siren; // $s5 long *pos; // $s3 int carParked; // $s6 } // line 60, offset 0x73898 /* * Offset 0x73898, from D:\driver2\game\C\PLAYERS.C (lines 247..285) * Stack frame base $sp, size 0 */ void /*$ra*/ UpdatePlayers() { // line 2, offset 0x73898 struct _PLAYER *locPlayer; // $t0 struct _CAR_DATA *cp; // $v1 } // line 39, offset 0x739d8 /* * Offset 0x739D8, from D:\driver2\game\C\PLAYERS.C (lines 75..126) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ InitPlayer(struct _PLAYER *locPlayer /*$s1*/, struct _CAR_DATA *cp /*$s2*/, char carCtrlType /*$s3*/, int direction /*$s6*/, long *startPos[4] /*stack 16*/, int externModel /*stack 20*/, int palette /*stack 24*/, char *padid /*stack 28*/, long *startPos[4] /*$s4*/, unsigned char externModel /*$s0*/, unsigned char palette /*$s5*/, char *padid /*$s7*/) { // line 1, offset 0x739d8 } // line 52, offset 0x73c0c /* * Offset 0x73C0C, from D:\driver2\game\C\PLAYERS.C (lines 298..302) * Stack frame base $sp, size 0 */ void /*$ra*/ RequestSlightPauseBeforeCarSoundStarts(char player_id /*$a0*/) { } /* * Offset 0x73C54, from D:\driver2\game\C\PLAYERS.C (lines 305..306) * Stack frame base $sp, size 0 */ void /*$ra*/ HaveCarSoundStraightAway(char player_id /*$a0*/) { } /* * Offset 0x73C8C, from D:\driver2\game\C\PLAYERS.C (lines 310..311) * Stack frame base $sp, size 0 */ void /*$ra*/ MakeTheCarShutUp(char player_id /*$a0*/) { } Source file(s) , object file obj\poly.oBJ overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file overlay id // 21 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct DENTUVS { char u3; // size=0, offset=0 }; // 39 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct DENTUVS DENTUVS; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; // 0 labels // 3 external declarations extern int PolySizes[56]; // offset 0x000a1758 extern struct DENTUVS *gTempCarUVPtr; // offset 0x000ab0dc extern int combointensity; // offset 0x000ab0d8 // 0 functions Source file(s) D:\driver2\game\C\PRES.C+D:\driver2\game\PRES.C, object file obj\pres.OBJ overlay id // 51 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct OUT_FONTINFO { unsigned char x; // size=0, offset=0 unsigned char y; // size=0, offset=1 char offx; // size=0, offset=2 char offy; // size=0, offset=3 unsigned char width; // size=0, offset=4 unsigned char height; // size=0, offset=5 unsigned short pad; // size=0, offset=6 }; struct FONT_DIGIT { char xOffset; // size=0, offset=0 char width; // size=0, offset=1 }; // 76 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct SPRT SPRT; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct TEX_INFO TEX_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct UV UV; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct OUT_FONTINFO OUT_FONTINFO; typedef struct FONT_DIGIT FONT_DIGIT; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; // 0 labels // 9 external declarations static struct FONT_DIGIT fontDigit[12]; // offset 0x000a1838 static char *button_names[11]; // offset 0x000a1850 extern short fonttpage; // offset 0x000ab0f0 extern short fontclutid; // offset 0x000ab0e4 extern struct RECT fontclutpos; // offset 0x000ab0e8 static struct CVECTOR gFontColour; // offset 0x000ab0e0 extern char AsciiTable[256]; // offset 0x000d9f68 extern struct OUT_FONTINFO fontinfo[128]; // offset 0x000d9b68 static struct TEXTURE_DETAILS button_textures[11]; // offset 0x000d9ac8 // 17 functions /* * Offset 0x73CC8, from D:\driver2\game\C\PRES.C (lines 360..407) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ LoadFont(char *buffer /*$a0*/) { // line 1, offset 0x73cc8 struct RECT dest; // stack offset -24 char *file; // $s1 int i; // $v1 int nchars; // $s0 } // line 48, offset 0x73ea0 /* * Offset 0x73EA0, from D:\driver2\game\C\PRES.C (lines 457..535) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ PrintString(char *string /*$s3*/, int x /*$s2*/, int y /*$s6*/) { // line 1, offset 0x73ea0 struct OUT_FONTINFO *pFontInfo; // $a1 struct SPRT *font; // $s0 unsigned char width; // $s1 unsigned char c; // $s1 int index; // $v1 } // line 79, offset 0x74140 /* * Offset 0x74140, from D:\driver2\game\C\PRES.C (lines 539..605) * Stack frame base $sp, size 8 * Saved registers at offset -4: s0 s1 */ short /*$ra*/ PrintDigit(int x /*$t3*/, int y /*$s1*/, char *string /*$a2*/) { // line 1, offset 0x74140 struct FONT_DIGIT *pDigit; // $a1 struct SPRT *font; // $t0 char width; // $a3 char fixedWidth; // $t1 char vOff; // $t2 char h; // $a0 { // line 13, offset 0x74190 char let; // $v1 char convLet; // $a0 } // line 44, offset 0x741f4 } // line 67, offset 0x74364 /* * Offset 0x74364, from D:\driver2\game\C\PRES.C (lines 643..710) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ PrintStringBoxed(char *string /*$s2*/, int ix /*$s5*/, int iy /*$a2*/) { // line 1, offset 0x74364 struct OUT_FONTINFO *pFontInfo; // $a1 struct SPRT *font; // $s0 char word[32]; // stack offset -64 char *wpt; // $t0 char c; // $a0 int x; // $s1 int y; // $s3 int index; // $a1 int wordcount; // $s4 } // line 68, offset 0x745dc /* * Offset 0x745DC, from D:\driver2\game\C\PRES.C (lines 726..793) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ PrintScaledString(int y /*$s4*/, char *string /*$s1*/, int scale /*$s2*/) { // line 1, offset 0x745dc struct FONT_DIGIT *pDigit; // $a2 struct POLY_FT4 *font; // $t0 int x; // $s0 int width; // $t3 int height; // $t6 int y0; // $t1 int x1; // $t5 int y1; // $v0 unsigned char vOff; // $t8 char c; // $a0 } // line 68, offset 0x74858 /* * Offset 0x74858, from D:\driver2\game\C\PRES.C (lines 819..852) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void * /*$ra*/ DrawButton(unsigned char button /*$a0*/, void *prim /*$s1*/, int x /*$a2*/, int y /*$a3*/) { // line 1, offset 0x74858 struct TEXTURE_DETAILS *btn; // $a1 struct POLY_FT3 *null; // $s0 } // line 34, offset 0x74a10 /* * Offset 0x74A10, from D:\driver2\game\C\PRES.C (lines 228..231) * Stack frame base $sp, size 0 */ void /*$ra*/ SetTextColour(unsigned char Red /*$a0*/, unsigned char Green /*$a1*/, unsigned char Blue /*$a2*/) { } /* * Offset 0x74A24, from D:\driver2\game\C\PRES.C (lines 245..268) * Stack frame base $sp, size 0 */ int /*$ra*/ StringWidth(char *pString /*$a0*/) { // line 1, offset 0x74a24 int w; // $a2 char let; // $a1 { // line 11, offset 0x74a60 char convLet; // $v1 } // line 21, offset 0x74a98 } // line 24, offset 0x74ab0 /* * Offset 0x74AB0, from D:\driver2\game\C\PRES.C (lines 285..322) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ OutputString(char *pString /*$s2*/, int formatting /*$s0*/, int x /*$a2*/, int y /*$s3*/, int xw /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int xw /*$v1*/) { // line 1, offset 0x74ab0 int xpos; // $s1 { // line 17, offset 0x74b14 } // line 17, offset 0x74b14 } // line 38, offset 0x74b8c /* * Offset 0x74B8C, from D:\driver2\game\C\PRES.C (lines 333..336) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ PrintStringRightAligned(char *pString /*$s1*/, int x /*$s0*/, int y /*$s2*/) { } /* * Offset 0x74BD8, from D:\driver2\game\C\PRES.C (lines 347..351) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ PrintStringCentred(char *pString /*$s1*/, short y /*$a1*/) { // line 1, offset 0x74bd8 } // line 5, offset 0x74c28 /* * Offset 0x74C28, from D:\driver2\game\C\PRES.C (lines 416..425) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ StoreClut2(unsigned long *pDest /*$a1*/, int x /*$a1*/, int y /*$a2*/) { // line 1, offset 0x74c28 struct RECT rect; // stack offset -16 } // line 10, offset 0x74c64 /* * Offset 0x74C64, from D:\driver2\game\C\PRES.C (lines 434..454) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SetCLUT16Flags(unsigned short clutID /*$a0*/, unsigned short mask /*$s2*/, char transparent /*$s0*/) { // line 1, offset 0x74c64 unsigned short buffer[16]; // stack offset -56 unsigned short *pCurrent; // $a0 char ctr; // $a1 int x; // $s3 int y; // $s1 } // line 21, offset 0x74d34 /* * Offset 0x74D34, from D:\driver2\game\C\PRES.C (lines 612..614) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ PrintStringFeature(char *string /*$a0*/, int x /*$a1*/, int y /*$a2*/, int w /*$a3*/, int h /*stack 16*/, int transparent /*stack 20*/) { } /* * Offset 0x74D54, from D:\driver2\game\C\PRES.C (lines 800..816) * Stack frame base $sp, size 0 */ char * /*$ra*/ GetNextWord(char *string /*$a0*/, char *word /*$a1*/) { // line 1, offset 0x74d54 char c; // $v1 } // line 17, offset 0x74d94 /* * Offset 0x74D94, from D:\driver2\game\C\PRES.C (lines 855..870) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void * /*$ra*/ SetFontTPage(void *prim /*$a0*/) { // line 1, offset 0x74d94 struct POLY_FT3 *null; // $s0 } // line 16, offset 0x74e54 /* * Offset 0x74E54, from D:\driver2\game\C\PRES.C (lines 713..718) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitButtonTextures() { // line 2, offset 0x74e54 int i; // $s0 } // line 6, offset 0x74eb4 Source file(s) D:\driver2\game\C\ROADBITS.C, object file obj\roadbits.OBJ overlay id // 25 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct ROAD_MAP_LUMP_DATA { int width; // size=0, offset=0 int height; // size=0, offset=4 int unitXMid; // size=0, offset=8 int unitZMid; // size=0, offset=12 }; struct ROUTE_DATA { short type; // size=0, offset=0 short height; // size=0, offset=2 short objectAngle; // size=0, offset=4 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; // 43 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct ROAD_MAP_LUMP_DATA ROAD_MAP_LUMP_DATA; typedef struct ROUTE_DATA ROUTE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; // 0 labels // 5 external declarations extern char JunctionLightsNS; // offset 0x000ab0f9 extern char JunctionLightsWE; // offset 0x000ab0f8 extern struct ROAD_MAP_LUMP_DATA roadMapLumpData; // offset 0x000da088 extern int RoadMapRegions[4]; // offset 0x000da078 extern short *RoadMapDataRegions[4]; // offset 0x000da068 // 1 functions /* * Offset 0x74EB4, from D:\driver2\game\C\ROADBITS.C (lines 147..153) * Stack frame base $sp, size 0 */ char /*$ra*/ ROADS_GetRouteData(int x /*$a0*/, int z /*$a1*/, struct ROUTE_DATA *pRouteData /*$a2*/) { } Source file(s) D:\driver2\game\C\SCORES.C+D:\driver2\game\SCORES.C, object file obj\scores.obj overlay id // 61 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct PLAYER_SCORE { int time; // size=0, offset=0 int P2time; // size=0, offset=4 short items; // size=0, offset=8 short P2items; // size=0, offset=10 char name[6]; // size=6, offset=12 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 83 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct _CAR_DATA CAR_DATA; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct MAPPING MAPPING; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct PLAYER_SCORE PLAYER_SCORE; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; // 0 labels // 2 external declarations extern struct SCORE_TABLES ScoreTables; // offset 0x000da098 extern struct PLAYER_SCORE gPlayerScore; // offset 0x000da908 // 8 functions /* * Offset 0x74EC0, from D:\driver2\game\C\SCORES.C (lines 58..83) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ InitialiseScoreTables() { // line 2, offset 0x74ec0 int i; // $s3 int j; // $s1 } // line 26, offset 0x7503c /* * Offset 0x7503C, from D:\driver2\game\C\SCORES.C (lines 86..125) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ OnScoreTable(struct SCORE_ENTRY **tablept /*$s1*/) { // line 1, offset 0x7503c struct SCORE_ENTRY *table; // $s0 int position; // $v0 } // line 40, offset 0x751f8 /* * Offset 0x751F8, from D:\driver2\game\C\SCORES.C (lines 133..148) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ AddScoreToTable(struct SCORE_ENTRY *table /*$a2*/, int entry /*$a1*/) { // line 1, offset 0x751f8 int i; // $a3 } // line 16, offset 0x7526c /* * Offset 0x7526C, from D:\driver2\game\C\SCORES.C (lines 162..177) * Stack frame base $sp, size 0 */ int /*$ra*/ CheckGetawayPlacing(struct SCORE_ENTRY *table /*$a0*/) { // line 1, offset 0x7526c int i; // $v1 } // line 16, offset 0x752bc /* * Offset 0x752BC, from D:\driver2\game\C\SCORES.C (lines 188..208) * Stack frame base $sp, size 0 */ int /*$ra*/ CheckTrailblazerPlacing(struct SCORE_ENTRY *table /*$a0*/) { // line 1, offset 0x752bc int i; // $a2 } // line 21, offset 0x75338 /* * Offset 0x75338, from D:\driver2\game\C\SCORES.C (lines 218..233) * Stack frame base $sp, size 0 */ int /*$ra*/ CheckCheckpointPlacing(struct SCORE_ENTRY *table /*$a0*/) { // line 1, offset 0x75338 int i; // $v1 } // line 16, offset 0x75388 /* * Offset 0x75388, from D:\driver2\game\C\SCORES.C (lines 243..258) * Stack frame base $sp, size 0 */ int /*$ra*/ CheckSurvivalPlacing(struct SCORE_ENTRY *table /*$a0*/) { // line 1, offset 0x75388 int i; // $v1 } // line 16, offset 0x753d8 /* * Offset 0x753D8, from D:\driver2\game\C\SCORES.C (lines 261..271) * Stack frame base $sp, size 0 */ void /*$ra*/ ResetTable(struct SCORE_ENTRY *table /*$a0*/) { // line 1, offset 0x753d8 int i; // $v1 } // line 11, offset 0x75408 Source file(s) D:\driver2\game\C\SHADOW.C+D:\driver2\game\SHADOW.C, object file obj\shadow.OBJ overlay id // 67 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct TEXINF { unsigned short id; // size=0, offset=0 unsigned short nameoffset; // size=0, offset=2 unsigned char x; // size=0, offset=4 unsigned char y; // size=0, offset=5 unsigned char width; // size=0, offset=6 unsigned char height; // size=0, offset=7 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT4 { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct POLYFT4LIT { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TPAN { unsigned char texture_page; // size=0, offset=0 unsigned char texture_number; // size=0, offset=1 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct ROUTE_DATA { short type; // size=0, offset=0 short height; // size=0, offset=2 short objectAngle; // size=0, offset=4 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SHADOWHDR { unsigned long num_common_verts; // size=0, offset=0 unsigned short num_verts_total; // size=0, offset=4 unsigned short num_polys_total; // size=0, offset=6 unsigned short vert_offsets[4]; // size=8, offset=8 unsigned short nverts[4]; // size=8, offset=16 unsigned short npolys[4]; // size=8, offset=24 unsigned long *poly_block[4]; // size=16, offset=32 struct SVECTOR *vertices; // size=8, offset=48 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct TYRE_TRACK { char type; // size=0, offset=0 char shade; // size=0, offset=1 char shade_type; // size=0, offset=2 char surface; // size=0, offset=3 struct SVECTOR_NOPAD p1; // size=6, offset=4 struct SVECTOR_NOPAD p2; // size=6, offset=10 struct SVECTOR_NOPAD p3; // size=6, offset=16 struct SVECTOR_NOPAD p4; // size=6, offset=22 }; struct S_XYZ { short x; // size=0, offset=0 short y; // size=0, offset=2 short z; // size=0, offset=4 }; // 88 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F3 POLY_F3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct POLY_G4 POLY_G4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct TEXINF TEXINF; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT4 POLYFT4; typedef struct POLYFT4LIT POLYFT4LIT; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_POLY CAR_POLY; typedef struct UV UV; typedef struct TPAN TPAN; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct ROUTE_DATA ROUTE_DATA; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SHADOWHDR SHADOWHDR; typedef struct _sdPlane sdPlane; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct TYRE_TRACK TYRE_TRACK; typedef struct S_XYZ S_XYZ; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 30 external declarations extern struct VECTOR dummy; // offset 0x000a187c extern struct VECTOR frustpos; // offset 0x000a188c extern struct MATRIX tempmatrix; // offset 0x000a189c extern int *idx; // offset 0x000aa900 extern struct SVECTOR *rotated; // offset 0x000aa904 extern struct S_XYZ *distance; // offset 0x000aa908 extern struct VECTOR *pos; // offset 0x000aa90c extern struct DVECTOR *outvertices; // offset 0x000aa910 extern unsigned long *outcoords; // offset 0x000aa914 extern int gShadowTexturePage; // offset 0x000ab110 extern int gShadowTextureNum; // offset 0x000ab10c extern struct UV shadowuv; // offset 0x000ab118 extern struct SHADOWHDR *shadow_header; // offset 0x000ab114 extern unsigned short edgecount; // offset 0x000ab120 extern unsigned short nextindex; // offset 0x000ab122 static int numcv; // offset 0x000ab100 static int lastcv; // offset 0x000ab104 extern struct POLY_F3 *spolys; // offset 0x000ab108 extern int smoke_count[4]; // offset 0x000db020 extern struct POLYFT4 ShadowPolygon; // offset 0x000dcc60 extern struct VECTOR tyre_save_positions[4]; // offset 0x000da990 extern struct VECTOR tyre_new_positions[4]; // offset 0x000dd078 extern int num_tyre_tracks[4]; // offset 0x000da9d0 extern int tyre_track_offset[4]; // offset 0x000dcc30 extern struct TYRE_TRACK track_buffer[4][64]; // offset 0x000db030 extern struct POLY_FT4 shadowPolys[2][20]; // offset 0x000da9e0 extern unsigned short edgelist[16]; // offset 0x000dcc40 extern struct VECTOR direction; // offset 0x000dd0b8 static struct SVECTOR cv[12]; // offset 0x000da930 extern struct SVECTOR camverts[128]; // offset 0x000dcc78 // 11 functions /* * Offset 0x75408, from D:\driver2\game\C\SHADOW.C (lines 272..297) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ GetTyreTrackPositions(struct _CAR_DATA *cp /*$s3*/, int player_id /*$s7*/) { // line 1, offset 0x75408 struct CAR_COSMETICS *car_cos; // $s4 struct VECTOR WheelPos; // stack offset -88 struct VECTOR target_pos; // stack offset -72 struct VECTOR normal; // stack offset -56 int loop; // $s2 { // line 11, offset 0x75458 } // line 16, offset 0x75480 } // line 26, offset 0x75540 /* * Offset 0x75540, from D:\driver2\game\C\SHADOW.C (lines 330..505) * Stack frame base $sp, size 200 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ AddTyreTrack(int wheel /*$s2*/, int tracksAndSmoke /*$s6*/, int padid /*$s0*/) { // line 1, offset 0x75540 struct VECTOR New1; // stack offset -168 struct VECTOR New2; // stack offset -152 struct VECTOR New3; // stack offset -136 struct VECTOR New4; // stack offset -120 struct VECTOR *old; // $s5 struct VECTOR *new; // $s3 struct TYRE_TRACK *tt_p; // $s1 int x; // $v1 int z; // $a1 int c; // $t1 int s; // $t0 unsigned int index; // $a2 static int Cont[4]; // offset 0x0 struct VECTOR psxoffset; // stack offset -104 struct VECTOR SmokeDrift; // stack offset -88 struct VECTOR SmokePosition; // stack offset -72 char trackSurface; // $s0 { // line 34, offset 0x75610 struct ROUTE_DATA routeData; // stack offset -56 struct _sdPlane *SurfaceDataPtr; // $v0 } // line 69, offset 0x7569c { // line 74, offset 0x756a8 } // line 81, offset 0x756d0 { // line 91, offset 0x7572c struct VECTOR grass_vector; // stack offset -48 } // line 91, offset 0x7572c } // line 176, offset 0x759b8 /* * Offset 0x759E0, from D:\driver2\game\C\SHADOW.C (lines 517..644) * Stack frame base $sp, size 136 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 */ void /*$ra*/ DrawTyreTracks() { // line 2, offset 0x759e0 struct VECTOR p[4]; // stack offset -136 struct SVECTOR ps[4]; // stack offset -72 struct TYRE_TRACK *tt_p; // $t0 int z; // stack offset -40 int temp; // $a2 int loop; // $t7 int wheel_loop; // $s0 int index; // $t2 char last_duff; // $s1 struct POLY_FT4 *poly; // $a3 struct POLY_FT4 *lasttyre; // $t8 } // line 128, offset 0x75f34 /* * Offset 0x75F34, from D:\driver2\game\C\SHADOW.C (lines 659..696) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ InitShadow() { // line 2, offset 0x75f34 struct TPAN pos; // stack offset -16 struct TEXINF *texinf; // $v0 int i; // $a2 int j; // $a3 { // line 23, offset 0x76090 } // line 25, offset 0x76090 } // line 38, offset 0x76108 /* * Offset 0x76108, from D:\driver2\game\C\SHADOW.C (lines 717..860) * Stack frame base $sp, size 0 */ void /*$ra*/ SubdivShadow(long z0 /*$t7*/, long z1 /*$t9*/, long z2 /*$t8*/, long z3 /*$t6*/, struct POLY_FT4 *sps /*stack 16*/, struct POLY_FT4 *sps /*$t5*/) { // line 1, offset 0x76108 struct POLY_FT4 *spd; // $t3 int i; // $t4 { // line 18, offset 0x761b8 unsigned long A0; // $v1 unsigned long A1; // $a1 unsigned long E0; // $a3 unsigned long E1; // $t0 unsigned long C0; // $a0 unsigned long C1; // $a2 unsigned long B0; // $v1 unsigned long B1; // $a1 unsigned long D0; // $a0 unsigned long D1; // $a2 } // line 18, offset 0x761b8 { // line 18, offset 0x761b8 unsigned long A0; // $a1 unsigned long A1; // $a2 unsigned long E0; // $a3 unsigned long E1; // $t0 unsigned long C0; // $a0 unsigned long C1; // $v1 unsigned long B0; // $a1 unsigned long B1; // $a2 unsigned long D0; // $a0 unsigned long D1; // $v1 } // line 18, offset 0x761b8 } // line 144, offset 0x766cc /* * Offset 0x766CC, from D:\driver2\game\C\SHADOW.C (lines 864..932) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ PlaceShadowForCar(struct VECTOR *shadowPoints /*$t0*/, int slot /*$s0*/, struct VECTOR *CarPos /*$a2*/, int zclip /*$a3*/) { // line 1, offset 0x766cc struct SVECTOR points[4]; // stack offset -64 long z; // $a0 long z0; // stack offset -32 long z1; // stack offset -28 long z2; // stack offset -24 long z3; // stack offset -20 struct POLY_FT4 *spt; // $a3 } // line 69, offset 0x76a40 /* * Offset 0x76A40, from D:\driver2\game\C\SHADOW.C (lines 1038..1078) * Stack frame base $sp, size 0 */ int /*$ra*/ clipAgainstZ() { // line 2, offset 0x76a40 int srccount; // $t4 int dstcount; // $t5 struct SVECTOR *current; // $t2 struct SVECTOR *previous; // $t1 struct SVECTOR *dst; // $a3 int flags; // $t3 { // line 19, offset 0x76ac0 int q; // $a2 } // line 19, offset 0x76ac0 { // line 25, offset 0x76bb8 int q; // $a2 } // line 25, offset 0x76bb8 } // line 41, offset 0x76cd4 /* * Offset 0x76CD4, from D:\driver2\game\C\SHADOW.C (lines 1081..1155) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ void /*$ra*/ clippedPoly() { // line 2, offset 0x76cd4 int i; // $a3 int j; // $t0 int z1; // $v1 struct POLY_G3 *pg3; // $s0 int z[3]; // stack offset -24 } // line 75, offset 0x77128 /* * Offset 0x77138, from D:\driver2\game\C\SHADOW.C (lines 1160..1221) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ sQuad(struct SVECTOR *v0 /*$a0*/, struct SVECTOR *v1 /*$s5*/, struct SVECTOR *v2 /*$s6*/, struct SVECTOR *v3 /*$s4*/) { // line 1, offset 0x77138 int z1; // $v0 int z[4]; // stack offset -48 { // line 8, offset 0x771b4 struct POLY_G4 *pf4; // $t2 } // line 30, offset 0x772b4 } // line 62, offset 0x77524 /* * Offset 0x77524, from D:\driver2\game\C\SHADOW.C (lines 253..261) * Stack frame base $sp, size 0 */ void /*$ra*/ InitTyreTracks() { // line 2, offset 0x77524 int loop; // $a0 } // line 9, offset 0x77558 /* * Offset 0x77558, from D:\driver2\game\C\SHADOW.C (lines 306..308) * Stack frame base $sp, size 0 */ void /*$ra*/ SetTyreTrackOldPositions(int player_id /*$a0*/) { } Source file(s) D:\driver2\game\C\SKY.C+D:\driver2\game\SKY.C, object file obj\sky.OBJ overlay id // 76 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct POLYFT4 { unsigned char id; // size=0, offset=0 unsigned char texture_set; // size=0, offset=1 unsigned char texture_id; // size=0, offset=2 unsigned char spare; // size=0, offset=3 unsigned char v0; // size=0, offset=4 unsigned char v1; // size=0, offset=5 unsigned char v2; // size=0, offset=6 unsigned char v3; // size=0, offset=7 struct UV_INFO uv0; // size=2, offset=8 struct UV_INFO uv1; // size=2, offset=10 struct UV_INFO uv2; // size=2, offset=12 struct UV_INFO uv3; // size=2, offset=14 struct RGB color; // size=4, offset=16 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct FLAREREC { struct RGB16 transparency; // size=8, offset=0 char size; // size=0, offset=8 short gapmod; // size=0, offset=10 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; // 108 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct DR_MOVE DR_MOVE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct POLYFT4 POLYFT4; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct UV UV; typedef struct _CAR_DATA CAR_DATA; typedef struct RGB16 RGB16; typedef struct FLAREREC FLAREREC; typedef struct BVECTOR BVECTOR; typedef struct MAPPING MAPPING; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 19 external declarations extern struct SVECTOR sun_position[4]; // offset 0x000a1924 extern struct SVECTOR moon_position[4]; // offset 0x000a1944 static int sky_y_offset[4]; // offset 0x000a18dc static unsigned char HorizonLookup[4][4]; // offset 0x000a18ec static unsigned char HorizonTextures[40]; // offset 0x000a18fc static struct SVECTOR moon_shadow_position[4]; // offset 0x000a1964 static struct FLAREREC flare_info[8]; // offset 0x000a1984 extern int tunnelDir[3][2]; // offset 0x000a19e4 extern struct VECTOR tunnelPos[3][2]; // offset 0x000a19fc extern int gTunnelNum; // offset 0x000aa930 extern int gDrawLowerSky; // offset 0x000aa924 static long skyred; // offset 0x000aa918 static long skygreen; // offset 0x000aa91c static long skyblue; // offset 0x000aa920 static int skycolour; // offset 0x000ab12c extern int skyFade; // offset 0x000ab130 static short skytpage[28]; // offset 0x000dd208 static short skyclut[28]; // offset 0x000dd248 static struct UV skytexuv[28]; // offset 0x000dd288 // 9 functions /* * Offset 0x775C8, from D:\driver2\game\C\SKY.C (lines 145..318) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ LoadSky() { // line 2, offset 0x775c8 struct RECT rect; // stack offset -96 char name[16]; // stack offset -88 int x; // $s6 int y; // $a1 int i; // $t1 int u; // $v1 int v; // $s2 int skynum; // $a2 int offset; // stack offset -72 { // line 11, offset 0x77608 int flipped; // $t0 int single; // $s5 int ry; // $a2 } // line 113, offset 0x777d0 } // line 174, offset 0x7795c /* * Offset 0x7795C, from D:\driver2\game\C\SKY.C (lines 327..340) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DrawSkyDome() { } /* * Offset 0x77A8C, from D:\driver2\game\C\SKY.C (lines 351..517) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DrawLensFlare() { // line 2, offset 0x77a8c static char last_attempt_failed; // offset 0x0 static short buffer[160]; // offset 0x0 struct DVECTOR sun_pers_conv_position; // stack offset -64 struct RECT source; // stack offset -56 struct DR_MOVE *sample_sun; // $s0 int distance_to_sun; // $s0 int xpos; // $t1 int ypos; // $v0 int xgap; // $s4 int ygap; // $s2 int flarez; // stack offset -40 int shade; // $t4 int sun_intensity; // $s3 struct POLY_FT4 *polys; // $a1 struct CVECTOR col; // stack offset -48 int r; // $a2 int g; // $a3 int b; // $a0 { // line 36, offset 0x77b58 int bufferX; // $a0 int bufferY; // $v1 unsigned short *pwBuffer; // $s0 } // line 54, offset 0x77bc0 { // line 95, offset 0x77d34 int temp; // $v0 { // line 107, offset 0x77dd0 struct FLAREREC *pFlareInfo; // $t3 int flaresize; // $t0 } // line 144, offset 0x77fac } // line 145, offset 0x77fac } // line 167, offset 0x78098 /* * Offset 0x780BC, from D:\driver2\game\C\SKY.C (lines 527..599) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 s3 */ void /*$ra*/ DisplaySun(struct DVECTOR *pos /*$a0*/, struct CVECTOR *col /*$a1*/, int flare_col /*$a2*/) { // line 1, offset 0x780bc struct POLY_FT4 *polys; // $a1 struct POLY_FT3 *null; // $a3 struct VECTOR output; // stack offset -32 int width; // $t5 int height; // $t4 } // line 73, offset 0x78544 /* * Offset 0x78544, from D:\driver2\game\C\SKY.C (lines 609..648) * Stack frame base $sp, size 16 */ void /*$ra*/ DisplayMoon(struct DVECTOR *pos /*$t4*/, struct CVECTOR *col /*$t6*/, int flip /*$a2*/) { // line 1, offset 0x78544 struct POLY_FT3 *null; // $a0 struct VECTOR output; // stack offset -16 int width; // $t5 int height; // $t3 } // line 40, offset 0x787b0 /* * Offset 0x787B0, from D:\driver2\game\C\SKY.C (lines 679..776) * Stack frame base $sp, size 0 */ void /*$ra*/ TunnelSkyFade() { // line 2, offset 0x787b0 int tun; // $a3 { // line 16, offset 0x787d8 int diffX; // $v1 int diffZ; // $v0 int dX; // $v1 int dZ; // $v0 int len; // $a1 struct VECTOR *v1; // $t1 struct VECTOR *v2; // $t0 { // line 46, offset 0x78874 int l2; // $v1 } // line 66, offset 0x788e8 } // line 97, offset 0x7895c } // line 98, offset 0x7895c /* * Offset 0x78964, from D:\driver2\game\C\SKY.C (lines 785..842) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ calc_sky_brightness() { } /* * Offset 0x78B18, from D:\driver2\game\C\SKY.C (lines 855..893) * Stack frame base $sp, size 0 */ void /*$ra*/ PlotSkyPoly(int skytexnum /*$t5*/, unsigned char r /*$a1*/, unsigned char g /*$a2*/, unsigned char b /*$a3*/, int offset /*stack 16*/, int offset /*$t4*/) { // line 1, offset 0x78b18 struct POLYFT4 *src; // $t1 struct DVECTOR *outpoints; // $t0 struct POLY_FT4 *prims; // $t2 } // line 39, offset 0x78ebc /* * Offset 0x78EC4, from D:\driver2\game\C\SKY.C (lines 896..944) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ PlotHorizonMDL(struct MODEL *model /*$s6*/, int horizontaboffset /*$a1*/) { // line 1, offset 0x78ec4 struct SVECTOR *verts; // $v1 char *polys; // $s1 int i; // $s0 int p; // stack offset -56 int flag; // stack offset -52 short *zbuff; // $t5 int z; // stack offset -48 unsigned char r; // $s5 unsigned char g; // $s4 unsigned char b; // $s3 } // line 49, offset 0x790b4 Source file(s) D:\driver2\game\C\SOUND.C+D:\driver2\game\SOUND.C, object file obj\sound.OBJ overlay id // 55 complex types struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuReverbAttr { unsigned long mask; // size=0, offset=0 long mode; // size=0, offset=4 struct SpuVolume depth; // size=4, offset=8 long delay; // size=0, offset=12 long feedback; // size=0, offset=16 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuCommonAttr { unsigned long mask; // size=0, offset=0 struct SpuVolume mvol; // size=4, offset=4 struct SpuVolume mvolmode; // size=4, offset=8 struct SpuVolume mvolx; // size=4, offset=12 struct SpuExtAttr cd; // size=12, offset=16 struct SpuExtAttr ext; // size=12, offset=28 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct _PLAYER { long pos[4]; // size=16, offset=0 int dir; // size=0, offset=16 struct VECTOR *spoolXZ; // size=16, offset=20 struct VECTOR cameraPos; // size=16, offset=24 int cameraDist; // size=0, offset=40 int maxCameraDist; // size=0, offset=44 int cameraAngle; // size=0, offset=48 int headPos; // size=0, offset=52 int headTarget; // size=0, offset=56 int viewChange; // size=0, offset=60 char dying; // size=0, offset=64 char upsideDown; // size=0, offset=65 char onGrass; // size=0, offset=66 char targetCarId; // size=0, offset=67 char cameraView; // size=0, offset=68 char headTimer; // size=0, offset=69 char playerType; // size=0, offset=70 char worldCentreCarId; // size=0, offset=71 char playerCarId; // size=0, offset=72 char cameraCarId; // size=0, offset=73 char padid; // size=0, offset=74 char car_is_sounding; // size=0, offset=75 long camera_vel[3]; // size=12, offset=76 int snd_cam_ang; // size=0, offset=88 struct __skidinfo skidding; // size=2, offset=92 struct __skidinfo wheelnoise; // size=2, offset=94 struct __horninfo horn; // size=3, offset=96 int car_sound_timer; // size=0, offset=100 short revsvol; // size=0, offset=104 short idlevol; // size=0, offset=106 struct PEDESTRIAN *pPed; // size=92, offset=108 int crash_timer; // size=0, offset=112 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct __LSBDinfo { int addr; // size=0, offset=0 int memtop; // size=0, offset=4 int count[7]; // size=28, offset=8 int bnktop[7]; // size=28, offset=36 int append; // size=0, offset=64 }; struct CHANNEL_DATA { struct SpuVoiceAttr attr; // size=64, offset=0 unsigned char loop; // size=0, offset=64 unsigned char locked; // size=0, offset=65 unsigned short time; // size=0, offset=66 long samplerate; // size=0, offset=68 char player; // size=0, offset=72 long srcvolume; // size=0, offset=76 long volumeScale; // size=0, offset=80 unsigned short srcpitch; // size=0, offset=84 unsigned short dopplerScale; // size=0, offset=86 long cameradist; // size=0, offset=88 long lastcameradist; // size=0, offset=92 struct VECTOR *srcposition; // size=16, offset=96 struct VECTOR position; // size=16, offset=100 long *srcvelocity; // size=0, offset=116 }; struct SAMPLE_DATA { unsigned long address; // size=0, offset=0 unsigned long length; // size=0, offset=4 unsigned long loop; // size=0, offset=8 unsigned long samplerate; // size=0, offset=12 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct __pauseinfo { unsigned short pitch[16]; // size=32, offset=0 unsigned short voll[16]; // size=32, offset=32 unsigned short volr[16]; // size=32, offset=64 unsigned short max; // size=0, offset=96 unsigned short lev; // size=0, offset=98 }; // 85 typedefs typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuReverbAttr SpuReverbAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuCommonAttr SpuCommonAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct _PLAYER PLAYER; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct __LSBDinfo LSBDinfo; typedef struct CHANNEL_DATA CHANNEL_DATA; typedef struct SAMPLE_DATA SAMPLE_DATA; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct __tunnelcoords tunnelcoords; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct __pauseinfo pauseinfo; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 27 external declarations extern long dummylong[3]; // offset 0x000a1a5c extern int gSoundMode; // offset 0x000aa934 extern int gSurround; // offset 0x000aa938 extern int Song_ID; // offset 0x000aa954 extern int VABID; // offset 0x000aa958 extern int gMusicVolume; // offset 0x000aa95c extern int gMasterVolume; // offset 0x000aa960 extern int gAllowMusic; // offset 0x000aa964 extern int gAllowSfx; // offset 0x000aa968 static long banksize[2]; // offset 0x000aa93c static int sound_paused; // offset 0x000aa944 extern int music_paused; // offset 0x000aa948 static int master_volume; // offset 0x000aa94c static int stop_sound_handler; // offset 0x000aa950 extern long bankaddr[2]; // offset 0x000ab148 extern char *music_address; // offset 0x000ab150 extern char *song_address; // offset 0x000ab13c extern char camera_change; // offset 0x000ab140 extern char old_camera_change; // offset 0x000ab138 extern struct CHANNEL_DATA channels[16]; // offset 0x000de480 extern struct SAMPLE_DATA samples[7][35]; // offset 0x000dd520 static char banks[24]; // offset 0x000dd3b8 static unsigned long channel_lookup[16]; // offset 0x000dd3d8 static struct SpuCommonAttr sound_attr; // offset 0x000dd418 extern struct VECTOR lis_pos; // offset 0x000de470 static struct __pauseinfo pause; // offset 0x000dd448 static struct __pauseinfo musps; // offset 0x000dd4b8 // 41 functions /* * Offset 0x790E4, from D:\driver2\game\C\SOUND.C (lines 114..160) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ InitSound() { // line 2, offset 0x790e4 int ct; // $s0 } // line 47, offset 0x791d4 /* * Offset 0x791D4, from D:\driver2\game\C\SOUND.C (lines 163..177) * Stack frame base $sp, size 0 */ void /*$ra*/ ClearChannelFields(int channel /*$a0*/) { } /* * Offset 0x79250, from D:\driver2\game\C\SOUND.C (lines 187..221) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ResetSound() { // line 2, offset 0x79250 int ct; // $s0 } // line 35, offset 0x79330 /* * Offset 0x79330, from D:\driver2\game\C\SOUND.C (lines 399..442) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ CompleteSoundSetup(int channel /*$s2*/, int bank /*$s0*/, int sample /*$s5*/, int pitch /*$s1*/, int proximity /*stack 16*/) { // line 1, offset 0x79330 long bpf; // $a1 long rate; // $a1 } // line 44, offset 0x79504 /* * Offset 0x79504, from D:\driver2\game\C\SOUND.C (lines 450..469) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetChannelPitch(int channel /*$a0*/, int pitch /*$a1*/) { // line 1, offset 0x79504 long rate; // $a0 } // line 20, offset 0x795b4 /* * Offset 0x795C4, from D:\driver2\game\C\SOUND.C (lines 501..526) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ComputeDoppler(struct CHANNEL_DATA *ch /*$s1*/) { // line 1, offset 0x795c4 int dist; // $s0 int seperationrate; // $v0 struct _PLAYER *pl; // $s0 } // line 26, offset 0x79720 /* * Offset 0x79734, from D:\driver2\game\C\SOUND.C (lines 635..654) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PauseXM() { // line 1, offset 0x79734 int fade; // $v1 } // line 20, offset 0x79794 /* * Offset 0x79794, from D:\driver2\game\C\SOUND.C (lines 657..680) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ PauseSFX() { // line 1, offset 0x79794 int i; // $s1 int fade; // $s3 } // line 24, offset 0x79958 /* * Offset 0x79958, from D:\driver2\game\C\SOUND.C (lines 698..716) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ UnPauseXM() { // line 1, offset 0x79958 int fade; // $a1 } // line 19, offset 0x799b0 /* * Offset 0x799B0, from D:\driver2\game\C\SOUND.C (lines 720..741) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ UnPauseSFX() { // line 1, offset 0x799b0 int i; // $s1 int fade; // $s2 } // line 22, offset 0x79b38 /* * Offset 0x79B38, from D:\driver2\game\C\SOUND.C (lines 822..837) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SoundHandler() { // line 2, offset 0x79b38 int ct; // $a0 long off; // $a1 } // line 16, offset 0x79bbc /* * Offset 0x79BCC, from D:\driver2\game\C\SOUND.C (lines 904..976) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ LoadSoundBankDynamic(char *address /*$s2*/, int length /*$s6*/, int dbank /*$a2*/) { // line 1, offset 0x79bcc static struct __LSBDinfo tabs; // offset 0x0 int i; // $a3 int num_samples; // $s1 int slength; // $s0 } // line 73, offset 0x79e04 /* * Offset 0x79E04, from D:\driver2\game\C\SOUND.C (lines 1124..1155) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ GetFreeChannel() { // line 1, offset 0x79e04 int ct; // $a0 int least; // $s1 int il; // $s0 char status[24]; // stack offset -40 } // line 32, offset 0x79f38 /* * Offset 0x79F38, from D:\driver2\game\C\SOUND.C (lines 1163..1229) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ UpdateVolumeAttributesS(int channel /*$s2*/, int proximity /*$s5*/) { // line 1, offset 0x79f38 int volume; // $s1 int vol; // $a2 long ang; // $s0 long dist; // $s6 int player_id; // $a3 struct VECTOR *pos; // $s3 struct VECTOR *cam_pos; // $s4 int cam_ang; // $fp long damp; // $v1 { // line 52, offset 0x7a1b4 } // line 54, offset 0x7a200 } // line 67, offset 0x7a330 /* * Offset 0x7A360, from D:\driver2\game\C\SOUND.C (lines 1257..1294) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 ra */ int /*$ra*/ CalculateVolume(int channel /*$a2*/) { // line 1, offset 0x7a360 int volume; // $s0 struct VECTOR *pp; // $a3 { // line 9, offset 0x7a3f4 int distance; // $v1 { // line 14, offset 0x7a3f4 struct VECTOR ofse; // stack offset -24 } // line 17, offset 0x7a3f4 { // line 29, offset 0x7a4ac int fade; // $a0 } // line 34, offset 0x7a504 } // line 36, offset 0x7a520 } // line 38, offset 0x7a534 /* * Offset 0x7A534, from D:\driver2\game\C\SOUND.C (lines 1326..1357) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ FESound(int sample /*$s0*/) { // line 1, offset 0x7a534 long bpf; // $a1 long rate; // $a1 long pitch; // $s5 int channel; // $s6 } // line 32, offset 0x7a6c0 /* * Offset 0x7A6C0, from D:\driver2\game\C\SOUND.C (lines 233..244) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetReverbState(int on /*$a0*/) { } /* * Offset 0x7A704, from D:\driver2\game\C\SOUND.C (lines 253..263) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetReverbInGameState(int on /*$a0*/) { // line 1, offset 0x7a704 long cl; // $a1 } // line 11, offset 0x7a75c /* * Offset 0x7A75C, from D:\driver2\game\C\SOUND.C (lines 274..280) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ SetReverbChannelState(int ch /*$a0*/, int on /*$s0*/) { // line 1, offset 0x7a75c long cl; // $s1 int prev; // $s2 } // line 7, offset 0x7a7b0 /* * Offset 0x7A7B0, from D:\driver2\game\C\SOUND.C (lines 288..296) * Stack frame base $sp, size 0 */ void /*$ra*/ SetMasterVolume(int vol /*$a0*/) { } /* * Offset 0x7A7F8, from D:\driver2\game\C\SOUND.C (lines 323..329) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ StartSound(int channel /*$a0*/, int bank /*$s1*/, int sample /*$s2*/, int volume /*$s0*/, int pitch /*stack 16*/) { } /* * Offset 0x7A894, from D:\driver2\game\C\SOUND.C (lines 357..370) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ Start3DSoundVolPitch(int channel /*$s1*/, int bank /*$s0*/, int sample /*$s4*/, int x /*$s3*/, int y /*stack 16*/, int z /*stack 20*/, int volume /*stack 24*/, int pitch /*stack 28*/, int y /*$v0*/, int z /*$v0*/, int volume /*$v0*/, int pitch /*$s2*/) { } /* * Offset 0x7A994, from D:\driver2\game\C\SOUND.C (lines 342..353) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ Start3DTrackingSound(int channel /*$s1*/, int bank /*$s0*/, int sample /*$s3*/, struct VECTOR *position /*$s2*/, long *velocity /*stack 16*/, long *velocity /*$v1*/) { } /* * Offset 0x7AA78, from D:\driver2\game\C\SOUND.C (lines 477..494) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SetChannelVolume(int channel /*$s0*/, int volume /*$t1*/, int proximity /*$a2*/) { // line 1, offset 0x7aa78 } // line 18, offset 0x7ab24 /* * Offset 0x7AB3C, from D:\driver2\game\C\SOUND.C (lines 1303..1318) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ AllocateReverb(long mode /*$s1*/, long depth /*$s0*/) { // line 1, offset 0x7ab3c struct SpuReverbAttr r_attr; // stack offset -40 } // line 16, offset 0x7ab94 /* * Offset 0x7ABA8, from D:\driver2\game\C\SOUND.C (lines 307..311) * Stack frame base $sp, size 0 */ char /*$ra*/ SetPlayerOwnsChannel(int chan /*$a0*/, char player /*$a1*/) { // line 1, offset 0x7aba8 } // line 5, offset 0x7abcc /* * Offset 0x7ABCC, from D:\driver2\game\C\SOUND.C (lines 588..611) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ SetChannelPosition3(int channel /*$s1*/, struct VECTOR *position /*$a0*/, long *velocity /*$t0*/, int volume /*$t2*/, int pitch /*stack 16*/, int proximity /*stack 20*/) { // line 1, offset 0x7abcc } // line 24, offset 0x7acc0 /* * Offset 0x7ACD8, from D:\driver2\game\C\SOUND.C (lines 683..688) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PauseSound() { } /* * Offset 0x7AD10, from D:\driver2\game\C\SOUND.C (lines 744..752) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ UnPauseSound() { // line 1, offset 0x7ad10 } // line 9, offset 0x7ad40 /* * Offset 0x7AD40, from D:\driver2\game\C\SOUND.C (lines 760..772) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ StopChannel(int channel /*$s2*/) { // line 1, offset 0x7ad40 { // line 3, offset 0x7ad64 unsigned char l; // $s3 int vsync; // $s0 } // line 11, offset 0x7add8 } // line 13, offset 0x7adf4 /* * Offset 0x7ADF4, from D:\driver2\game\C\SOUND.C (lines 780..789) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ StopAllChannels() { // line 2, offset 0x7adf4 int ct; // $s0 } // line 10, offset 0x7ae34 /* * Offset 0x7AE34, from D:\driver2\game\C\SOUND.C (lines 797..802) * Stack frame base $sp, size 0 */ void /*$ra*/ LockChannel(int channel /*$a0*/) { } /* * Offset 0x7AE64, from D:\driver2\game\C\SOUND.C (lines 811..811) * Stack frame base $sp, size 0 */ void /*$ra*/ UnlockChannel(int c /*$a0*/) { } /* * Offset 0x7AE90, from D:\driver2\game\C\SOUND.C (lines 845..875) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ LoadSoundBank(char *address /*$s3*/, int length /*$s2*/, int bank /*$s1*/) { // line 1, offset 0x7ae90 int num_samples; // $s4 int slength; // $s2 int spuaddress; // $s1 int ct; // $v1 } // line 31, offset 0x7af84 /* * Offset 0x7AF84, from D:\driver2\game\C\SOUND.C (lines 993..1002) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ FreeXM() { } /* * Offset 0x7AFD0, from D:\driver2\game\C\SOUND.C (lines 1012..1027) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ StartXM(int reverb /*$s2*/) { // line 1, offset 0x7afd0 int ct; // $s0 } // line 16, offset 0x7b050 /* * Offset 0x7B050, from D:\driver2\game\C\SOUND.C (lines 1035..1037) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StopXM() { } /* * Offset 0x7B074, from D:\driver2\game\C\SOUND.C (lines 1073..1084) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetXMVolume(int volume /*$a0*/) { // line 1, offset 0x7b074 int vol; // $a1 } // line 12, offset 0x7b0c4 /* * Offset 0x7B0C4, from D:\driver2\game\C\SOUND.C (lines 1232..1248) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ UpdateVolumeAttributesM(int channel /*$s0*/) { // line 1, offset 0x7b0c4 int volume; // $a1 int vol; // $a0 } // line 17, offset 0x7b178 /* * Offset 0x7B178, from D:\driver2\game\C\SOUND.C (lines 1371..1380) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ VsyncProc() { } /* * Offset 0x7B1C4, from D:\driver2\game\C\SOUND.C (lines 882..887) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ UpdateXMSamples(int num_samps /*$s2*/) { // line 1, offset 0x7b1c4 int i; // $s0 } // line 6, offset 0x7b228 Source file(s) D:\driver2\game\C\SPOOL.C+D:\driver2\game\SPOOL.C, object file obj\spool.OBJ overlay id // 70 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct SPOOLQ { unsigned char type; // size=0, offset=0 unsigned char data; // size=0, offset=1 unsigned short nsectors; // size=0, offset=2 unsigned long sector; // size=0, offset=4 char *addr; // size=0, offset=8 void *func(); // size=0, offset=12 }; struct SPL_REGIONINFO { unsigned short region_to_unpack; // size=0, offset=0 unsigned short target_barrel_region; // size=0, offset=2 int nsectors; // size=0, offset=4 char *cell_addr; // size=0, offset=8 char *roadm_addr; // size=0, offset=12 }; struct Spool { unsigned short offset; // size=0, offset=0 unsigned char connected_areas[2]; // size=2, offset=2 unsigned char pvs_size; // size=0, offset=4 unsigned char cell_data_size[3]; // size=3, offset=5 unsigned char super_region; // size=0, offset=8 unsigned char num_connected_areas; // size=0, offset=9 unsigned char roadm_size; // size=0, offset=10 unsigned char roadh_size; // size=0, offset=11 }; struct AreaDataStr { unsigned short gfx_offset; // size=0, offset=0 unsigned short model_offset; // size=0, offset=2 unsigned short music_offset; // size=0, offset=4 unsigned short ambient_offset; // size=0, offset=6 unsigned char model_size; // size=0, offset=8 unsigned char pad; // size=0, offset=9 unsigned char num_tpages; // size=0, offset=10 unsigned char ambient_size; // size=0, offset=11 unsigned char music_size; // size=0, offset=12 unsigned char music_samples_size; // size=0, offset=13 unsigned char music_id; // size=0, offset=14 unsigned char ambient_id; // size=0, offset=15 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct AREA_LOAD_INFO { int xoffset; // size=0, offset=0 int zoffset; // size=0, offset=4 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct TEX_INFO { char name[8]; // size=8, offset=0 char tset; // size=0, offset=8 char u; // size=0, offset=9 char v; // size=0, offset=10 char w; // size=0, offset=11 char h; // size=0, offset=12 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct TEXTURE_LOOKUP { struct TEX_INFO *Damage[6]; // size=24, offset=0 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; // 104 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT4 POLY_FT4; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct SPOOLQ SPOOLQ; typedef struct SPL_REGIONINFO SPL_REGIONINFO; typedef struct Spool Spool; typedef struct AreaDataStr AreaDataStr; typedef struct GAP_INFO GAP_INFO; typedef struct UV UV; typedef struct AREA_LOAD_INFO AREA_LOAD_INFO; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct TEX_INFO TEX_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct _CAR_DATA CAR_DATA; typedef struct TEXTURE_LOOKUP TEXTURE_LOOKUP; typedef struct CAR_POLY CAR_POLY; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned char DAMAGEZONEVERTS[5][6][50]; typedef unsigned char HDDAMAGEZONEPOLYS[5][6][70]; typedef char HDDAMAGELEVELS[5][255]; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; // 0 labels // 85 external declarations static int pvsSize[4]; // offset 0x000a1a68 extern int SpecialByRegion[4][20]; // offset 0x000a1a78 extern int spoolpos_writing; // offset 0x000aa974 extern int doSpooling; // offset 0x000aa980 extern int LoadingArea; // offset 0x000aa96c extern int spoolpos_reading; // offset 0x000aa970 extern int type; // offset 0x000aa978 extern int music_is_loading; // offset 0x000aa97c extern int error_bounds; // offset 0x000aa984 extern int times; // offset 0x000aa988 extern int specialState; // offset 0x000aa98c extern int specBlocksToLoad; // offset 0x000aa990 extern char *packed_cell_pointers; // offset 0x000ab1b0 extern int LoadedArea; // offset 0x000ab240 extern int spoolactive; // offset 0x000ab1c8 extern int spoolpos; // offset 0x000ab218 extern int spoolcounter; // offset 0x000ab1f8 extern short loading_region[4]; // offset 0x000ab248 extern int spool_regionpos; // offset 0x000ab1b8 extern int spool_regioncounter; // offset 0x000ab1a0 extern unsigned short *spoolinfo_offsets; // offset 0x000ab1fc extern char *RegionSpoolInfo; // offset 0x000ab198 extern char *model_spool_buffer; // offset 0x000ab21c extern int SpoolLumpOffset; // offset 0x000ab19c extern int new_area_location; // offset 0x000ab1e8 extern int NumAreas; // offset 0x000ab1f0 extern struct AreaDataStr *AreaData; // offset 0x000ab1d4 extern unsigned char *AreaTPages; // offset 0x000ab23c extern struct SXYPAIR *Music_And_AmbientOffsets; // offset 0x000ab214 extern int spoolerror; // offset 0x000ab1b4 extern int spoolseek; // offset 0x000ab264 extern int tsetpos; // offset 0x000ab1ec extern int tsetcounter; // offset 0x000ab1d0 extern int unpack_roadmap_flag; // offset 0x000ab250 extern unsigned long unpack_roadmap_tbl[2]; // offset 0x000ab208 extern int unpack_cellptr_flag; // offset 0x000ab26c extern int models_ready; // offset 0x000ab1dc extern unsigned short *newmodels; // offset 0x000ab260 extern char *buffer; // offset 0x000ab1bc extern int done; // offset 0x000ab22c extern int nsectors; // offset 0x000ab210 static unsigned char param[8]; // offset 0x000ab158 static unsigned char result[8]; // offset 0x000ab160 static char *target_address; // offset 0x000ab168 static int current_sector; // offset 0x000ab16c static int sectors_to_read; // offset 0x000ab170 static int sectors_this_chunk; // offset 0x000ab174 extern int chunk_complete; // offset 0x000ab268 static int switch_spooltype; // offset 0x000ab178 static int nTPchunks; // offset 0x000ab17c static int nTPchunks_reading; // offset 0x000ab180 static int nTPchunks_writing; // offset 0x000ab184 static struct RECT tpage; // offset 0x000ab188 static int ntpages; // offset 0x000ab190 static int endchunk; // offset 0x000ab194 extern int loadbank_read; // offset 0x000ab200 extern int loadbank_write; // offset 0x000ab254 extern int sample_chunk; // offset 0x000ab1e0 extern int n_sample_chunks; // offset 0x000ab1ac extern int last_size; // offset 0x000ab25c extern int send_bank; // offset 0x000ab234 extern int spuaddress; // offset 0x000ab1a8 extern int num_samples; // offset 0x000ab1c4 extern int current_music_id; // offset 0x000ab1cc extern int firstLowBlock; // offset 0x000ab204 extern int firstDamBlock; // offset 0x000ab1f4 extern int lengthLowBlock; // offset 0x000ab230 extern int lengthDamBlock; // offset 0x000ab220 extern int lastCleanBlock; // offset 0x000ab224 extern int lowOffset; // offset 0x000ab238 extern int damOffset; // offset 0x000ab228 extern int *modelMemory; // offset 0x000ab1c0 extern int quickSpool; // offset 0x000ab1a4 extern int startSpecSpool; // offset 0x000ab258 extern int specSpoolComplete; // offset 0x000ab1d8 extern int allowSpecSpooling; // offset 0x000ab1e4 extern struct SPOOLQ spooldata[48]; // offset 0x000dedb8 extern struct SPL_REGIONINFO spool_regioninfo[8]; // offset 0x000dec98 extern int multiplayerregions[4]; // offset 0x000deda8 extern int tsetinfo[32]; // offset 0x000ded18 extern unsigned long unpack_cellptr_tbl[3]; // offset 0x000ded98 static struct POLY_FT4 cd_sprite; // offset 0x000dec00 extern unsigned short cd_palette[32]; // offset 0x000dec58 extern struct MODEL *pLodModels[1536]; // offset 0x000df0b8 static struct MODEL dummyModel; // offset 0x000dec30 // 48 functions /* * Offset 0x7B228, from D:\driver2\game\C\SPOOL.C (lines 532..587) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ test_changemode() { // line 2, offset 0x7b228 struct SPOOLQ *current; // $a3 } // line 56, offset 0x7b3b4 /* * Offset 0x7B3C4, from D:\driver2\game\C\SPOOL.C (lines 625..770) * Stack frame base $sp, size 160 * Saved registers at offset -8: s0 */ int /*$ra*/ check_regions_present() { // line 2, offset 0x7b3c4 struct AREA_LOAD_INFO regions_to_unpack[3]; // stack offset -160 int leftright_unpack; // $a2 int topbottom_unpack; // $a3 int num_regions_to_unpack; // $a1 int x; // $v1 int z; // $v0 int loop; // $t1 int retval; // $a3 int region_to_unpack; // $a0 int barrel_region; // $v1 char textbuf[128]; // stack offset -136 } // line 146, offset 0x7b6c4 /* * Offset 0x7B6C4, from D:\driver2\game\C\SPOOL.C (lines 925..976) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ UpdateSpool() { // line 2, offset 0x7b6c4 struct SPOOLQ *current; // $s0 struct CdlLOC pos; // stack offset -16 } // line 52, offset 0x7b87c /* * Offset 0x7B88C, from D:\driver2\game\C\SPOOL.C (lines 1161..1234) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SendTPage() { // line 2, offset 0x7b88c int tpage2send; // $s2 int slot; // $s0 int old; // $v1 char *tpageaddress; // $t0 { // line 15, offset 0x7b900 struct RECT cluts; // stack offset -32 int npalettes; // $s1 int i; // $a3 unsigned long *clutptr; // $a1 } // line 47, offset 0x7ba24 } // line 74, offset 0x7bb14 /* * Offset 0x7BB14, from D:\driver2\game\C\SPOOL.C (lines 1262..1332) * Stack frame base $sp, size 128 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ LoadInAreaTSets(int area /*$t4*/) { // line 1, offset 0x7bb14 unsigned char *tpages; // $s1 int ntpages_to_load; // $s3 int i; // $s0 int slot; // $a0 int j; // $a1 int offset; // $s4 int availableslots[16]; // stack offset -104 int navailable; // $s2 char *loadaddr; // $fp } // line 71, offset 0x7bd84 /* * Offset 0x7BD84, from D:\driver2\game\C\SPOOL.C (lines 1337..1379) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SendSBK() { // line 2, offset 0x7bd84 char *address; // $s0 int slength; // $s1 int i; // $a1 unsigned long *source; // $v0 unsigned long *dest; // $a0 } // line 43, offset 0x7bebc /* * Offset 0x7BEBC, from D:\driver2\game\C\SPOOL.C (lines 1484..1542) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ init_spooled_models() { // line 2, offset 0x7bebc int i; // $s1 int nmodels; // $s4 int size; // $s2 int model_number; // $a1 char *addr; // $s0 struct MODEL *parentmodel; // $a1 { // line 35, offset 0x7bfbc } // line 37, offset 0x7bfd0 { // line 44, offset 0x7c004 } // line 52, offset 0x7c048 } // line 59, offset 0x7c08c /* * Offset 0x7C08C, from D:\driver2\game\C\SPOOL.C (lines 1574..1665) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CheckLoadAreaData(int cellx /*$t9*/, int cellz /*$a1*/) { // line 1, offset 0x7c08c int i; // $a2 int nAreas; // $t0 struct Spool *spoolptr; // $t1 int load; // $a3 int force_load_boundary; // $a0 } // line 92, offset 0x7c27c /* * Offset 0x7C28C, from D:\driver2\game\C\SPOOL.C (lines 1713..1775) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ LoadRegionData(int region /*$s4*/, int target_region /*$s5*/) { // line 1, offset 0x7c28c int offset; // $s0 char *target_unpacked_data; // $t1 struct Spool *spoolptr; // $s1 char *roadmap_buffer; // $s6 char *cell_buffer; // $s3 } // line 63, offset 0x7c464 /* * Offset 0x7C464, from D:\driver2\game\C\SPOOL.C (lines 1815..1917) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessSpoolInfoLump(char *lump_ptr /*$a2*/, int lump_size /*$a1*/) { // line 1, offset 0x7c464 int i; // $t2 int size; // $v1 int slots_count; // $t0 int objects_count; // $t1 int num_of_regions; // $v0 char *alloclist; // $a3 } // line 103, offset 0x7c5c0 /* * Offset 0x7C5C0, from D:\driver2\game\C\SPOOL.C (lines 2351..2436) * Stack frame base $sp, size 0 */ void /*$ra*/ unpack_cellpointers() { // line 2, offset 0x7c5c0 int target_barrel_region; // $t0 char *source_packed_data; // $v0 int bitpos; // $a3 int loop; // $a2 int packtype; // $a0 unsigned short cell; // $a0 unsigned short *short_ptr; // $a1 unsigned short pcode; // $t1 } // line 86, offset 0x7c74c /* * Offset 0x7C74C, from D:\driver2\game\C\SPOOL.C (lines 2509..2545) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ SpecClutsSpooled() { // line 2, offset 0x7c74c char *loadaddr; // $s4 int i; // $s1 int j; // $s2 int tpage; // $s0 struct RECT specCluts; // stack offset -48 { // line 13, offset 0x7c7f4 int index; // $a3 { // line 28, offset 0x7c91c } // line 28, offset 0x7c91c } // line 33, offset 0x7c95c } // line 37, offset 0x7c9b8 /* * Offset 0x7C9B8, from D:\driver2\game\C\SPOOL.C (lines 2549..2590) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CleanModelSpooled() { // line 3, offset 0x7c9b8 int *loadaddr; // $a1 int *mem; // $a3 { // line 27, offset 0x7ca80 } // line 38, offset 0x7cad0 } // line 42, offset 0x7cafc /* * Offset 0x7CAFC, from D:\driver2\game\C\SPOOL.C (lines 2594..2632) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DamagedModelSpooled() { // line 2, offset 0x7cafc int *loadaddr; // $a1 int *mem; // $a3 { // line 26, offset 0x7cbc0 } // line 35, offset 0x7cbf8 } // line 39, offset 0x7cc24 /* * Offset 0x7CC24, from D:\driver2\game\C\SPOOL.C (lines 2635..2675) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ LowModelSpooled() { // line 2, offset 0x7cc24 int *loadaddr; // $a1 int *mem; // $a3 { // line 26, offset 0x7cce8 } // line 37, offset 0x7cd38 } // line 41, offset 0x7cd64 /* * Offset 0x7CD64, from D:\driver2\game\C\SPOOL.C (lines 2680..2716) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CleanSpooled() { // line 3, offset 0x7cd64 char *loadaddr; // $a1 { // line 22, offset 0x7ce8c struct MODEL *tempModel; // $a1 } // line 33, offset 0x7cee0 } // line 37, offset 0x7cf0c /* * Offset 0x7CF0C, from D:\driver2\game\C\SPOOL.C (lines 2744..2792) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ Tada() { // line 2, offset 0x7cf0c char *loadaddr; // $s1 { // line 7, offset 0x7cf60 struct RECT tpage; // stack offset -32 int spec_tpage; // $a0 } // line 20, offset 0x7d018 { // line 23, offset 0x7d018 struct RECT tpage; // stack offset -24 int spec_tpage; // $a0 } // line 36, offset 0x7d0ec { // line 39, offset 0x7d0ec } // line 45, offset 0x7d130 } // line 49, offset 0x7d144 /* * Offset 0x7D144, from D:\driver2\game\C\SPOOL.C (lines 2799..2924) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SpecialStartNextBlock() { // line 2, offset 0x7d144 char *loadaddr; // $s0 int fileSector; // $t0 } // line 126, offset 0x7d4d0 /* * Offset 0x7D4E0, from D:\driver2\game\C\SPOOL.C (lines 2956..3021) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ CheckSpecialSpool() { // line 2, offset 0x7d4e0 struct _CAR_DATA *lcp; // $a0 int ret; // $a3 { // line 9, offset 0x7d51c } // line 13, offset 0x7d53c } // line 66, offset 0x7d6c8 /* * Offset 0x7D6D8, from D:\driver2\game\C\SPOOL.C (lines 3063..3158) * Stack frame base $sp, size 0 */ void /*$ra*/ InitSpecSpool() { } /* * Offset 0x7D978, from D:\driver2\game\C\SPOOL.C (lines 2442..2468) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ Unpack_CellPtrs() { // line 2, offset 0x7d978 int region_to_unpack; // $a1 int target_barrel_region; // $a1 char *source_packed_data; // $v1 } // line 27, offset 0x7d9cc /* * Offset 0x7D9CC, from D:\driver2\game\C\SPOOL.C (lines 1970..1989) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ GotRegion() { // line 2, offset 0x7d9cc int cbr; // $a1 } // line 20, offset 0x7da60 /* * Offset 0x7DA60, from D:\driver2\game\C\SPOOL.C (lines 2246..2275) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ data_cb_misc() { // line 2, offset 0x7da60 { // line 4, offset 0x7da74 struct SPOOLQ *current; // $v0 } // line 29, offset 0x7db28 } // line 30, offset 0x7db38 /* * Offset 0x7DB38, from D:\driver2\game\C\SPOOL.C (lines 2278..2298) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ready_cb_misc(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/) { } /* * Offset 0x7DBCC, from D:\driver2\game\C\SPOOL.C (lines 2171..2200) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ data_cb_soundbank() { // line 2, offset 0x7dbcc { // line 4, offset 0x7dbe0 } // line 29, offset 0x7dc94 } // line 30, offset 0x7dca4 /* * Offset 0x7DCA4, from D:\driver2\game\C\SPOOL.C (lines 2203..2243) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ready_cb_soundbank(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/) { // line 1, offset 0x7dca4 { // line 14, offset 0x7dd04 struct SPOOLQ *current; // $a0 } // line 34, offset 0x7dd70 } // line 41, offset 0x7dd98 /* * Offset 0x7DDA8, from D:\driver2\game\C\SPOOL.C (lines 2132..2167) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ data_cb_regions() { // line 2, offset 0x7dda8 { // line 4, offset 0x7ddbc struct SPOOLQ *current; // $v0 } // line 35, offset 0x7de80 } // line 36, offset 0x7de90 /* * Offset 0x7DE90, from D:\driver2\game\C\SPOOL.C (lines 2090..2128) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ready_cb_regions(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/) { // line 1, offset 0x7de90 { // line 20, offset 0x7df08 struct SPOOLQ *current; // $v1 } // line 20, offset 0x7df08 } // line 39, offset 0x7df64 /* * Offset 0x7DF64, from D:\driver2\game\C\SPOOL.C (lines 1993..2033) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ data_cb_textures() { // line 2, offset 0x7df64 { // line 4, offset 0x7df78 } // line 40, offset 0x7e068 } // line 41, offset 0x7e078 /* * Offset 0x7E078, from D:\driver2\game\C\SPOOL.C (lines 2036..2085) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ready_cb_textures(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/) { // line 1, offset 0x7e078 { // line 14, offset 0x7e0d8 struct SPOOLQ *current; // $a2 } // line 44, offset 0x7e188 } // line 50, offset 0x7e198 /* * Offset 0x7E1A8, from D:\driver2\game\C\SPOOL.C (lines 591..613) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ changemode(struct SPOOLQ *current /*$a0*/) { } /* * Offset 0x7E24C, from D:\driver2\game\C\SPOOL.C (lines 836..855) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ DrawCDicon() { // line 2, offset 0x7e24c unsigned short *palette; // $a1 int temp; // $a2 int i; // $a0 struct RECT dest; // stack offset -16 } // line 20, offset 0x7e2cc /* * Offset 0x7E2CC, from D:\driver2\game\C\SPOOL.C (lines 859..917) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ CheckValidSpoolData() { // line 2, offset 0x7e2cc struct RECT dest; // stack offset -16 } // line 59, offset 0x7e35c /* * Offset 0x7E36C, from D:\driver2\game\C\SPOOL.C (lines 1104..1125) * Stack frame base $sp, size 0 */ void /*$ra*/ RequestSpool(int type /*$a0*/, int data /*$a1*/, int offset /*$a2*/, int loadsize /*$a3*/, char *address /*stack 16*/, void *func() /*stack 20*/, char *address /*$v0*/, void *func() /*$v1*/) { // line 1, offset 0x7e36c struct SPOOLQ *next; // $t0 int sector; // $v0 } // line 22, offset 0x7e3e4 /* * Offset 0x7E3E4, from D:\driver2\game\C\SPOOL.C (lines 1670..1710) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ClearRegion(int target_region /*$a0*/) { // line 1, offset 0x7e3e4 int loop; // $a1 unsigned short *cell_ptrs_s; // $v1 unsigned long *pvsptr; // $v0 } // line 41, offset 0x7e494 /* * Offset 0x7E494, from D:\driver2\game\C\SPOOL.C (lines 1129..1157) * Stack frame base $sp, size 168 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ InitSpooling() { // line 2, offset 0x7e494 int i; // $s0 char namebuffer[128]; // stack offset -152 struct CdlLOC pos; // stack offset -24 } // line 29, offset 0x7e528 /* * Offset 0x7E528, from D:\driver2\game\C\SPOOL.C (lines 1239..1255) * Stack frame base $sp, size 0 */ void /*$ra*/ SpoolSYNC() { } /* * Offset 0x7E540, from D:\driver2\game\C\SPOOL.C (lines 1545..1552) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetupModels() { } /* * Offset 0x7E580, from D:\driver2\game\C\SPOOL.C (lines 1559..1570) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ LoadInAreaModels(int area /*$a0*/) { // line 2, offset 0x7e580 int offset; // $a2 int length; // $a3 } // line 12, offset 0x7e5dc /* * Offset 0x7E5DC, from D:\driver2\game\C\SPOOL.C (lines 1779..1811) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ UnpackRegion(int region_to_unpack /*$s1*/, int target_barrel_region /*$s0*/) { // line 1, offset 0x7e5dc } // line 33, offset 0x7e658 /* * Offset 0x7E66C, from D:\driver2\game\C\SPOOL.C (lines 1928..1941) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ WaitCloseLid() { // line 2, offset 0x7e66c void *old(); // $s1 } // line 14, offset 0x7e6d8 /* * Offset 0x7E6D8, from D:\driver2\game\C\SPOOL.C (lines 1945..1962) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ FoundError(char *name /*$a0*/, unsigned char intr /*$a1*/, unsigned char *result /*$a2*/) { // line 2, offset 0x7e6d8 struct CdlLOC p; // stack offset -16 } // line 18, offset 0x7e724 /* * Offset 0x7E724, from D:\driver2\game\C\SPOOL.C (lines 2302..2320) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StartSpooling() { // line 2, offset 0x7e724 } // line 19, offset 0x7e7b0 /* * Offset 0x7E7C0, from D:\driver2\game\C\SPOOL.C (lines 2720..2740) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ LowSpooled() { // line 3, offset 0x7e7c0 char *loadaddr; // $v1 { // line 8, offset 0x7e7d8 struct MODEL *tempModel; // $a1 } // line 17, offset 0x7e820 } // line 21, offset 0x7e84c /* * Offset 0x7E84C, from D:\driver2\game\C\SPOOL.C (lines 3025..3041) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ QuickSpoolSpecial() { } /* * Offset 0x7E8DC, from D:\driver2\game\C\SPOOL.C (lines 3046..3059) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PrepareSecretCar() { } /* * Offset 0x7E958, from D:\driver2\game\C\SPOOL.C (lines 818..826) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ stopgame() { // line 4, offset 0x7e958 } // line 9, offset 0x7e9a0 /* * Offset 0x7E9A0, from D:\driver2\game\C\SPOOL.C (lines 829..832) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ startgame() { // line 2, offset 0x7e9a0 } // line 4, offset 0x7e9d0 Source file(s) D:\driver2\game\C\SYSTEM.C+D:\driver2\game\SYSTEM.C, object file obj\system.OBJ overlay id // 65 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct CdlFILE { struct CdlLOC pos; // size=4, offset=0 unsigned long size; // size=0, offset=4 char name[16]; // size=16, offset=8 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct DRAW_MODE { short x1; // size=0, offset=0 short y1; // size=0, offset=2 short x2; // size=0, offset=4 short y2; // size=0, offset=6 short width; // size=0, offset=8 short height; // size=0, offset=10 short framex; // size=0, offset=12 short framey; // size=0, offset=14 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; enum CDTYPE : char { CDTYPE_NODISC = 0, CDTYPE_SHELLOPEN = 1, CDTYPE_DISCERROR = 2, CDTYPE_WRONGDISC = 3, CDTYPE_CORRECTDISC = 4, }; enum CITYTYPE : char { CITYTYPE_DAY = 0, CITYTYPE_NIGHT = 1, CITYTYPE_MULTI_DAY = 2, CITYTYPE_MULTI_NIGHT = 3, }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 98 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct CdlFILE CdlFILE; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct DRAW_MODE DRAW_MODE; typedef struct DB DB; typedef enum CDTYPE CDTYPE; typedef enum CITYTYPE CITYTYPE; typedef struct MAPPING MAPPING; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 28 external declarations extern struct DRAW_MODE draw_mode_pal; // offset 0x000a1bb8 extern struct DRAW_MODE draw_mode_ntsc; // offset 0x000a1bc8 extern char currentfilename[128]; // offset 0x000a1bd8 extern char NumPlayers; // offset 0x000aa99e extern int gMultiplayerLevels; // offset 0x000aa9a4 static enum CITYTYPE lasttype; // offset 0x000aa99c static enum CITYTYPE lastcity; // offset 0x000aa99d extern int DoNotSwap; // offset 0x000aa9a0 extern int cak; // offset 0x000aa9ac extern int FrameCnt; // offset 0x000ab2a8 extern short padd; // offset 0x000ab2ac extern short paddp; // offset 0x000ab28c extern struct DB *current; // offset 0x000ab2a0 extern struct DB *last; // offset 0x000ab2b8 extern int vblcounter; // offset 0x000ab290 extern struct DB *MPcurrent[2]; // offset 0x000ab2b0 extern struct DB *MPlast[2]; // offset 0x000ab298 extern char *primptr; // offset 0x000ab2a4 static unsigned char load_complete; // offset 0x000ab278 static unsigned char endread; // offset 0x000ab279 static int current_sector; // offset 0x000ab27c static int sectors_left; // offset 0x000ab280 static int sectors_read; // offset 0x000ab284 static char *current_address; // offset 0x000ab288 extern struct DB MPBuff[2][2]; // offset 0x000e08b8 extern struct XYPAIR citylumps[8][4]; // offset 0x000e0af0 extern int citystart[8]; // offset 0x000e0ad0 extern struct CdlFILE currentfileinfo; // offset 0x000e0ab8 // 23 functions /* * Offset 0x7E9D0, from D:\driver2\game\C\SYSTEM.C (lines 759..878) * Stack frame base $sp, size 2208 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ LoadfileSeg(char *name /*$v0*/, char *addr /*$s1*/, int offset /*$s5*/, int loadsize /*$fp*/) { // line 1, offset 0x7e9d0 char namebuffer[64]; // stack offset -2192 unsigned char result[8]; // stack offset -2128 int sector; // $s2 int nsectors; // $s5 char sectorbuffer[2048]; // stack offset -2120 struct CdlFILE info; // stack offset -72 struct CdlLOC pos; // stack offset -48 int i; // $a2 int toload; // $s4 int first; // $a0 } // line 120, offset 0x7ecf0 /* * Offset 0x7ECF0, from D:\driver2\game\C\SYSTEM.C (lines 1310..1339) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SwapDrawBuffers2(int player /*$s0*/) { // line 1, offset 0x7ecf0 int toggle; // $v1 } // line 30, offset 0x7eddc /* * Offset 0x7EDDC, from D:\driver2\game\C\SYSTEM.C (lines 1364..1410) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetupDrawBuffers() { // line 2, offset 0x7eddc struct RECT rect; // stack offset -24 int i; // $v1 } // line 47, offset 0x7ef0c /* * Offset 0x7EF0C, from D:\driver2\game\C\SYSTEM.C (lines 1429..1522) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ SetupDrawBufferData(int num_players /*stack 0*/) { // line 1, offset 0x7ef0c unsigned long *otpt; // $s2 unsigned char *primpt; // $s1 unsigned char *PRIMpt; // $fp int x[2]; // stack offset -72 int y[2]; // stack offset -64 int i; // $s3 int j; // $s6 int toggle; // $s7 int height; // stack offset -56 } // line 94, offset 0x7f118 /* * Offset 0x7F118, from D:\driver2\game\C\SYSTEM.C (lines 1577..1654) * Stack frame base $sp, size 136 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SetCityType(enum CITYTYPE type /*$a0*/) { // line 1, offset 0x7f118 struct CdlFILE cdfile; // stack offset -120 struct XYPAIR *info; // $s2 char namebuffer[64]; // stack offset -96 unsigned char result[8]; // stack offset -32 int i; // $a2 int sector; // $s0 } // line 78, offset 0x7f338 /* * Offset 0x7F354, from D:\driver2\game\C\SYSTEM.C (lines 646..669) * Stack frame base $sp, size 104 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ Loadfile(char *name /*$a2*/, char *addr /*$s2*/) { // line 1, offset 0x7f354 char namebuffer[64]; // stack offset -88 unsigned char result[8]; // stack offset -24 int nread; // $s0 } // line 24, offset 0x7f3e8 /* * Offset 0x7F3E8, from D:\driver2\game\C\SYSTEM.C (lines 389..415) * Stack frame base $sp, size 0 */ void /*$ra*/ ClearMem(char *mem /*$a0*/, int size /*$a1*/) { // line 1, offset 0x7f3e8 char *end; // $v1 } // line 27, offset 0x7f47c /* * Offset 0x7F47C, from D:\driver2\game\C\SYSTEM.C (lines 427..458) * Stack frame base $sp, size 0 */ void /*$ra*/ setMem8(unsigned char *mem /*$a0*/, unsigned char val /*$a1*/, int size /*$a2*/) { // line 1, offset 0x7f47c unsigned char *end; // $v1 unsigned long lval; // $a3 } // line 32, offset 0x7f524 /* * Offset 0x7F524, from D:\driver2\game\C\SYSTEM.C (lines 469..494) * Stack frame base $sp, size 0 */ void /*$ra*/ setMem16(unsigned short *mem /*$a0*/, unsigned short val /*$a1*/, int size /*$a2*/) { // line 1, offset 0x7f524 unsigned short *end; // $a3 unsigned long lval; // $a2 } // line 26, offset 0x7f5b4 /* * Offset 0x7F5B4, from D:\driver2\game\C\SYSTEM.C (lines 1566..1568) * Stack frame base $sp, size 0 */ void /*$ra*/ ResetCityType() { } /* * Offset 0x7F5C8, from D:\driver2\game\C\SYSTEM.C (lines 1682..1707) * Stack frame base $sp, size 192 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ FileExists(char *filename /*$a2*/) { // line 1, offset 0x7f5c8 struct CdlFILE cdfile; // stack offset -176 char namebuffer[128]; // stack offset -152 unsigned char result[8]; // stack offset -24 int retries; // $s1 } // line 26, offset 0x7f640 /* * Offset 0x7F640, from D:\driver2\game\C\SYSTEM.C (lines 1723..1761) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 ra */ enum CDTYPE /*$ra*/ DiscSwapped(char *filename /*$s1*/) { // line 1, offset 0x7f640 struct CdlFILE cdfile; // stack offset -40 int ret; // $v1 } // line 39, offset 0x7f6fc /* * Offset 0x7F6FC, from D:\driver2\game\C\SYSTEM.C (lines 1253..1302) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SwapDrawBuffers() { // line 2, offset 0x7f6fc } // line 50, offset 0x7f7c0 /* * Offset 0x7F7C0, from D:\driver2\game\C\SYSTEM.C (lines 1535..1543) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ InitaliseDrawEnv(struct DB *pBuff /*$s0*/, int x /*$s4*/, int y /*$s3*/, int w /*$s1*/, int h /*stack 16*/, int h /*$s2*/) { } /* * Offset 0x7F848, from D:\driver2\game\C\SYSTEM.C (lines 580..583) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ Init_FileSystem() { } /* * Offset 0x7F870, from D:\driver2\game\C\SYSTEM.C (lines 622..632) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ DoCDRetry() { // line 2, offset 0x7f870 static int retries; // offset 0xc unsigned char result[8]; // stack offset -16 } // line 11, offset 0x7f8b8 /* * Offset 0x7F8B8, from D:\driver2\game\C\SYSTEM.C (lines 952..966) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ReportMode(int on /*$s0*/) { // line 1, offset 0x7f8b8 static unsigned char param[8]; // offset 0x0 } // line 15, offset 0x7f8f4 /* * Offset 0x7F904, from D:\driver2\game\C\SYSTEM.C (lines 1017..1034) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ loadsectors(char *addr /*$a0*/, int sector /*$v0*/, int nsectors /*$a2*/) { // line 1, offset 0x7f904 struct CdlLOC pos; // stack offset -16 } // line 18, offset 0x7f984 /* * Offset 0x7F984, from D:\driver2\game\C\SYSTEM.C (lines 1221..1229) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ EnableDisplay() { // line 2, offset 0x7f984 int i; // $s1 } // line 9, offset 0x7f9f0 /* * Offset 0x7F9F0, from D:\driver2\game\C\SYSTEM.C (lines 1239..1240) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DisableDisplay() { } /* * Offset 0x7FA10, from D:\driver2\game\C\SYSTEM.C (lines 1349..1353) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ UpdatePadData() { } /* * Offset 0x7FA44, from D:\driver2\game\C\SYSTEM.C (lines 978..983) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ data_ready() { } /* * Offset 0x7FA74, from D:\driver2\game\C\SYSTEM.C (lines 987..1014) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ void /*$ra*/ sector_ready(unsigned char intr /*$a0*/, unsigned char *result /*$a1*/) { // line 1, offset 0x7fa74 { // line 17, offset 0x7fae4 struct CdlLOC p; // stack offset -16 } // line 27, offset 0x7fb34 } // line 28, offset 0x7fb44 Source file(s) D:\driver2\game\C\TARGETS.C+D:\driver2\game\TARGETS.C, object file obj\targets.obj overlay id // 70 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct COLOUR_BAND { struct CVECTOR colour; // size=4, offset=0 int value; // size=0, offset=4 int flags; // size=0, offset=8 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct TARGET_ARROW_MODEL { struct SVECTOR *pVerts; // size=8, offset=0 char *pTris; // size=0, offset=4 char numTris; // size=0, offset=8 }; // 105 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F3 POLY_F3; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct COLOUR_BAND COLOUR_BAND; typedef struct UV UV; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct __tunnelcoords tunnelcoords; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct TARGET_ARROW_MODEL TARGET_ARROW_MODEL; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct _PERCENTAGE_BAR *LPPERCENTAGE_BAR; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 7 external declarations static struct SVECTOR targetArrowVerts[43]; // offset 0x000a1c58 static char normalTargetArrowTris[9]; // offset 0x000a1db0 static char loseTailTargetArrowTris[24]; // offset 0x000a1dbc static char windowTargetArrowTris[30]; // offset 0x000a1dd4 static char maxSpeedTargetArrowTris[18]; // offset 0x000a1df4 static struct TARGET_ARROW_MODEL targetArrowModel[4]; // offset 0x000a1e08 extern int gDraw3DArrowBlue; // offset 0x000aa9b0 // 4 functions /* * Offset 0x7FB44, from D:\driver2\game\C\TARGETS.C (lines 213..261) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ Draw3DTarget(struct VECTOR *position /*$s0*/, int flags /*$s2*/) { // line 1, offset 0x7fb44 struct VECTOR pos; // stack offset -32 int shadow; // $s1 } // line 49, offset 0x7fd48 /* * Offset 0x7FD48, from D:\driver2\game\C\TARGETS.C (lines 267..329) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ DrawTargetArrowModel(struct TARGET_ARROW_MODEL *pTargetArrowModel /*$s1*/, struct VECTOR *pPosition /*$s2*/, int shadow /*$s4*/, int invert /*$s3*/) { // line 1, offset 0x7fd48 { // line 4, offset 0x7fd9c struct VECTOR tempVec; // stack offset -56 struct SVECTOR *pVerts; // $s0 struct SVECTOR temp; // stack offset -40 char *pVertIndex; // $a3 { // line 16, offset 0x7fe2c struct POLY_F3 *poly; // $t0 int z; // stack offset -32 } // line 56, offset 0x80044 } // line 62, offset 0x800d8 } // line 63, offset 0x800f8 /* * Offset 0x800F8, from D:\driver2\game\C\TARGETS.C (lines 412..488) * Stack frame base $sp, size 144 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawStopZone(struct VECTOR *pPosition /*$s5*/) { // line 1, offset 0x800f8 struct VECTOR *pVector; // $s0 struct VECTOR pStopZonePt[4]; // stack offset -128 struct POLY_FT4 *pPoly; // $s1 long *pOut; // $s2 long sz; // stack offset -48 { // line 18, offset 0x801fc struct SVECTOR temp; // stack offset -64 long p; // stack offset -56 long flag; // stack offset -52 } // line 53, offset 0x8030c } // line 77, offset 0x8047c /* * Offset 0x8047C, from D:\driver2\game\C\TARGETS.C (lines 496..510) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ WorldToCameraPositions(struct VECTOR *pGlobalPositionIn /*$s1*/, struct VECTOR *pCameraPositionOut /*$s0*/, int count /*$s2*/) { // line 1, offset 0x8047c { // line 4, offset 0x804b8 struct VECTOR temp; // stack offset -48 } // line 6, offset 0x804b8 } // line 15, offset 0x80528 Source file(s) D:\driver2\game\C\TEXTURE.C+D:\driver2\game\TEXTURE.C, object file obj\texture.OBJ overlay id // 67 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct MODEL { unsigned short shape_flags; // size=0, offset=0 unsigned short flags2; // size=0, offset=2 short instance_number; // size=0, offset=4 unsigned char tri_verts; // size=0, offset=6 unsigned char zBias; // size=0, offset=7 short bounding_sphere; // size=0, offset=8 unsigned short num_point_normals; // size=0, offset=10 unsigned short num_vertices; // size=0, offset=12 unsigned short num_polys; // size=0, offset=14 int vertices; // size=0, offset=16 int poly_block; // size=0, offset=20 int normals; // size=0, offset=24 int point_normals; // size=0, offset=28 int collision_block; // size=0, offset=32 }; struct TEXINF { unsigned short id; // size=0, offset=0 unsigned short nameoffset; // size=0, offset=2 unsigned char x; // size=0, offset=4 unsigned char y; // size=0, offset=5 unsigned char width; // size=0, offset=6 unsigned char height; // size=0, offset=7 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct TPAN { unsigned char texture_page; // size=0, offset=0 unsigned char texture_number; // size=0, offset=1 }; struct TEXTURE_DETAILS { struct UV coords; // size=8, offset=0 unsigned short tpageid; // size=0, offset=8 unsigned short clutid; // size=0, offset=10 char texture_number; // size=0, offset=12 char texture_page; // size=0, offset=13 }; struct TP { unsigned long flags; // size=0, offset=0 unsigned long offset; // size=0, offset=4 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; // 100 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct MODEL MODEL; typedef struct TEXINF TEXINF; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct UV UV; typedef struct TPAN TPAN; typedef struct TEXTURE_DETAILS TEXTURE_DETAILS; typedef struct TP TP; typedef struct CAR_POLY CAR_POLY; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 28 external declarations extern struct SXYPAIR tpagepos[20]; // offset 0x000a1e38 extern int LevelTab[32]; // offset 0x000a1e88 extern short specspooldata[3]; // offset 0x000aa9b8 extern int texture_is_icon; // offset 0x000aa9b4 extern int NoTextureMemory; // offset 0x000ab2cc extern struct RECT mapclutpos; // offset 0x000ab2d0 extern struct RECT clutpos; // offset 0x000ab2f0 extern int tpage_amount; // offset 0x000ab2e8 extern int texamount; // offset 0x000ab308 extern int nperms; // offset 0x000ab2dc extern struct XYPAIR *permlist; // offset 0x000ab2fc extern struct TP *tpage_position; // offset 0x000ab310 extern int texture_lump_start; // offset 0x000ab304 extern int slotsused; // offset 0x000ab30c extern char *texturename_buffer; // offset 0x000ab300 extern short specialSlot; // offset 0x000ab2d8 extern int MaxSpecCluts; // offset 0x000ab2e0 extern int environmenttpage; // offset 0x000ab2e4 extern struct RECT tpage; // offset 0x000ab2c0 extern int nspecpages; // offset 0x000ab2c8 extern struct XYPAIR *speclist; // offset 0x000ab2f8 extern struct TEXINF *tpage_ids[128]; // offset 0x000e0fa8 extern int tpage_texamts[128]; // offset 0x000e0d58 extern unsigned char tpageslots[19]; // offset 0x000e0bf0 extern unsigned char tpageloaded[128]; // offset 0x000e0c08 extern struct DVECTOR slot_clutpos[19]; // offset 0x000e0d08 extern struct DVECTOR slot_tpagepos[19]; // offset 0x000e0f58 extern char tsdname[128]; // offset 0x000e0c88 // 11 functions /* * Offset 0x80528, from D:\driver2\game\C\TEXTURE.C (lines 126..152) * Stack frame base $sp, size 0 */ void /*$ra*/ IncrementTPageNum(struct RECT *tpage /*$t0*/) { // line 1, offset 0x80528 int i; // $a3 } // line 27, offset 0x805ec /* * Offset 0x805EC, from D:\driver2\game\C\TEXTURE.C (lines 191..257) * Stack frame base $sp, size 0 */ int /*$ra*/ Find_TexID(struct MODEL *model /*$t0*/, int t_id /*$a1*/) { // line 1, offset 0x805ec char *polylist; // $a2 int i; // $a3 { // line 12, offset 0x80638 } // line 15, offset 0x80650 { // line 18, offset 0x80650 } // line 21, offset 0x80650 { // line 24, offset 0x80650 } // line 27, offset 0x80650 { // line 31, offset 0x80650 } // line 34, offset 0x80650 { // line 38, offset 0x80650 } // line 41, offset 0x80650 { // line 44, offset 0x80650 } // line 47, offset 0x80650 { // line 50, offset 0x80650 } // line 53, offset 0x80650 { // line 56, offset 0x80650 } // line 59, offset 0x80650 } // line 67, offset 0x80688 /* * Offset 0x80688, from D:\driver2\game\C\TEXTURE.C (lines 378..574) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ LoadPermanentTPages(int *sector /*$fp*/) { // line 1, offset 0x80688 int tloop; // $s1 int i; // $s1 int tset; // $s0 int nsectors; // $s3 char *tpagebuffer; // $s2 { // line 67, offset 0x808dc int specmodel; // $a1 int page1; // $s6 int page2; // $s5 { // line 87, offset 0x80984 int temp; // $s4 int clutsLoaded; // $s7 } // line 126, offset 0x80ad8 } // line 127, offset 0x80ad8 } // line 197, offset 0x80bb0 /* * Offset 0x80BB0, from D:\driver2\game\C\TEXTURE.C (lines 602..646) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ GetTextureDetails(char *name /*stack 0*/, struct TEXTURE_DETAILS *info /*$s3*/) { // line 1, offset 0x80bb0 int i; // $s2 int j; // $s1 int texamt; // $s4 struct TEXINF *texinf; // $v1 char *nametable; // stack offset -56 } // line 45, offset 0x80d70 /* * Offset 0x80DA0, from D:\driver2\game\C\TEXTURE.C (lines 290..299) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ struct TEXINF * /*$ra*/ GetTextureInfoName(char *name /*$a0*/, struct TPAN *result /*$s0*/) { // line 1, offset 0x80da0 int tpagenum; // stack offset -16 int texturenum; // stack offset -12 } // line 10, offset 0x80ddc /* * Offset 0x80DDC, from D:\driver2\game\C\TEXTURE.C (lines 116..122) * Stack frame base $sp, size 0 */ void /*$ra*/ IncrementClutNum(struct RECT *clut /*$a0*/) { } /* * Offset 0x80E14, from D:\driver2\game\C\TEXTURE.C (lines 155..184) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ LoadTPageAndCluts(struct RECT *tpage /*$s5*/, struct RECT *cluts /*$s2*/, int tpage2send /*$s6*/, char *tpageaddress /*$s0*/) { // line 1, offset 0x80e14 int i; // $s3 int npalettes; // $s4 struct RECT temptpage; // stack offset -40 } // line 30, offset 0x80f3c /* * Offset 0x80F3C, from D:\driver2\game\C\TEXTURE.C (lines 261..286) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ struct TEXINF * /*$ra*/ GetTEXINFName(char *name /*$fp*/, int *tpagenum /*stack 4*/, int *texturenum /*stack 8*/) { // line 1, offset 0x80f3c int i; // $s4 int j; // $s1 int texamt; // $s2 struct TEXINF *texinf; // $s3 char *nametable; // $s6 } // line 26, offset 0x81038 /* * Offset 0x81038, from D:\driver2\game\C\TEXTURE.C (lines 334..342) * Stack frame base $sp, size 0 */ void /*$ra*/ update_slotinfo(int tpage /*$a0*/, int slot /*$a1*/, struct RECT *pos /*$a2*/) { } /* * Offset 0x81080, from D:\driver2\game\C\TEXTURE.C (lines 347..374) * Stack frame base $sp, size 0 */ void /*$ra*/ ProcessTextureInfo(char *lump_ptr /*$a1*/) { // line 1, offset 0x81080 int i; // $a0 } // line 28, offset 0x81118 /* * Offset 0x81118, from D:\driver2\game\C\TEXTURE.C (lines 578..598) * Stack frame base $sp, size 104 * Saved registers at offset -8: ra */ void /*$ra*/ ReloadIcons() { // line 2, offset 0x81118 struct RECT tpage; // stack offset -88 struct RECT clutpos; // stack offset -80 char name[64]; // stack offset -72 } // line 21, offset 0x81140 Source file(s) D:\driver2\game\C\TIME.C+D:\driver2\game\TIME.C, object file obj\time.obj overlay id // 18 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; // 36 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; // 0 labels // 0 external declarations // 1 functions /* * Offset 0x81140, from D:\driver2\game\C\TIME.C (lines 5..7) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ GetTimeStamp(char *buffer /*$a0*/) { } Source file(s) D:\driver2\game\C\WHEELFORCES.C+D:\driver2\game\WHEELFORCES.C, object file obj\wheelfor.OBJ overlay id // 77 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct CELL_OBJECT { struct VECTOR_NOPAD pos; // size=12, offset=0 unsigned char pad; // size=0, offset=12 unsigned char yang; // size=0, offset=13 unsigned short type; // size=0, offset=14 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_TYPE { char frictionScaleRatio; // size=0, offset=0 char aggressiveBraking; // size=0, offset=1 char fourWheelDrive; // size=0, offset=2 char autoBrakeOn; // size=0, offset=3 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct CAR_LOCALS { long vel[4]; // size=16, offset=0 long avel[4]; // size=16, offset=16 int extraangulardamping; // size=0, offset=32 int aggressive; // size=0, offset=36 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct GAP_INFO { struct DVECTOR offset; // size=4, offset=0 char clear; // size=0, offset=4 }; struct ADJACENT_ROAD_INFO { struct DVECTOR offset; // size=4, offset=0 struct GAP_INFO gap; // size=6, offset=4 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct RGB16 { short r; // size=0, offset=0 short g; // size=0, offset=2 short b; // size=0, offset=4 short pad; // size=0, offset=6 }; struct UnpaddedHackVector { int vx; // size=0, offset=0 int vz; // size=0, offset=4 short vy; // size=0, offset=8 }; struct UnpaddedCharVector { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 }; struct BVECTOR { char vx; // size=0, offset=0 char vy; // size=0, offset=1 char vz; // size=0, offset=2 char pad; // size=0, offset=3 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; enum ExplosionType : short { BIG_BANG = 0, LITTLE_BANG = 1, HEY_MOMMA = 666, BANG_USED = 999, }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct _sdPlane { short surface; // size=0, offset=0 short a; // size=0, offset=2 short b; // size=0, offset=4 short c; // size=0, offset=6 int d; // size=0, offset=8 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct CAR_POLY { int vindices; // size=0, offset=0 int nindices; // size=0, offset=4 int clut_uv0; // size=0, offset=8 int tpage_uv1; // size=0, offset=12 int uv3_uv2; // size=0, offset=16 short originalindex; // size=0, offset=20 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct __tunnelcoords { struct VECTOR p1; // size=16, offset=0 struct VECTOR p2; // size=16, offset=16 }; // 108 typedefs typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct CELL_OBJECT CELL_OBJECT; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct _CAR_DATA CAR_DATA; typedef struct PSXBUTTON PSXBUTTON; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_TYPE HANDLING_TYPE; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct CAR_LOCALS CAR_LOCALS; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct GAP_INFO GAP_INFO; typedef struct ADJACENT_ROAD_INFO ADJACENT_ROAD_INFO; typedef struct MAPPING MAPPING; typedef struct UV UV; typedef struct RGB16 RGB16; typedef struct BVECTOR BVECTOR; typedef struct PEDESTRIAN PEDESTRIAN; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct _sdPlane sdPlane; typedef struct MR_TIMER MR_TIMER; typedef struct CAR_POLY CAR_POLY; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct __tunnelcoords tunnelcoords; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 2 external declarations extern struct _sdPlane *dbSurfacePtr; // offset 0x000aa9cc extern int impulse; // offset 0x000ab318 // 5 functions /* * Offset 0x81178, from D:\driver2\game\C\WHEELFORCES.C (lines 98..281) * Stack frame base $sp, size 264 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ StepOneCar(struct _CAR_DATA *cp /*$s1*/) { // line 1, offset 0x81178 struct CAR_LOCALS _cl; // stack offset -248 struct CAR_LOCALS *cl; // $s3 int i; // $s0 int speed; // $v1 struct _sdPlane *SurfacePtr; // stack offset -48 { // line 24, offset 0x81214 int a; // $v1 int b; // $a0 } // line 33, offset 0x8127c { // line 35, offset 0x8127c long deepestNormal[4]; // stack offset -208 long deepestLever[4]; // stack offset -192 long deepestPoint[4]; // stack offset -176 int lift; // $s5 int count; // $a0 int friToUse; // $s6 struct SVECTOR *carDisp; // $a1 { // line 58, offset 0x81314 long pointPos[4]; // stack offset -160 long surfacePoint[4]; // stack offset -144 long surfaceNormal[4]; // stack offset -128 long lever[4]; // stack offset -112 int newLift; // $a0 } // line 98, offset 0x81410 { // line 103, offset 0x81428 long pointVel[4]; // stack offset -112 long reaction[4]; // stack offset -96 int strikeVel; // $a2 int componant; // $t3 static int frictionLimit[6]; // offset 0x0 { // line 111, offset 0x81428 int lever_dot_n; // $v1 int twistY; // $v0 int displacementsquared; // $a0 int denom; // $a0 } // line 111, offset 0x81428 { // line 128, offset 0x81630 int loss; // $v1 int limit; // $a1 } // line 132, offset 0x8166c { // line 137, offset 0x816b8 { // line 139, offset 0x816cc struct VECTOR direction; // stack offset -80 } // line 139, offset 0x816cc { // line 144, offset 0x8170c struct VECTOR direction; // stack offset -64 } // line 146, offset 0x81744 } // line 151, offset 0x8179c } // line 152, offset 0x8179c { // line 158, offset 0x8186c struct VECTOR offset; // stack offset -112 } // line 171, offset 0x81944 } // line 172, offset 0x81944 } // line 184, offset 0x8198c /* * Offset 0x8198C, from D:\driver2\game\C\WHEELFORCES.C (lines 288..393) * Stack frame base $sp, size 0 */ void /*$ra*/ GetFrictionScalesDriver1(struct _CAR_DATA *cp /*$t0*/, struct CAR_LOCALS *cl /*$a1*/, int *frontFS /*$a2*/, int *rearFS /*$a3*/) { // line 1, offset 0x8198c struct _HANDLING_TYPE *hp; // $t2 { // line 18, offset 0x81a1c int q; // $v1 } // line 26, offset 0x81a98 { // line 99, offset 0x81dc8 int traction; // $a0 } // line 105, offset 0x81e20 } // line 106, offset 0x81e20 /* * Offset 0x81E20, from D:\driver2\game\C\WHEELFORCES.C (lines 412..438) * Stack frame base $sp, size 16 */ void /*$ra*/ ConvertTorqueToAngularAcceleration(struct _CAR_DATA *cp /*$a0*/, struct CAR_LOCALS *cl /*$t5*/) { // line 1, offset 0x81e20 long nose[4]; // stack offset -16 int zd; // $a3 int i; // $t4 int twistY; // $t0 int twistZ; // $v1 } // line 27, offset 0x81f50 /* * Offset 0x81F50, from D:\driver2\game\C\WHEELFORCES.C (lines 442..693) * Stack frame base $sp, size 208 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ AddWheelForcesDriver1(struct _CAR_DATA *cp /*$s2*/, struct CAR_LOCALS *cl /*$s7*/) { // line 1, offset 0x81f50 int oldSpeed; // $v1 int frictionScale; // $fp int frontFS; // stack offset -96 int rearFS; // stack offset -92 int i; // stack offset -84 int cdx; // stack offset -80 int cdz; // stack offset -76 int sdx; // stack offset -72 int sdz; // stack offset -68 int friction_coef; // $s6 struct CAR_COSMETICS *car_cos; // stack offset -64 struct _sdPlane *SurfacePtr; // stack offset -88 int player_id; // stack offset -60 { // line 27, offset 0x820a4 int oldCompression; // $s5 int newCompression; // $s3 int susForce; // $s0 long wheelPos[4]; // stack offset -176 long surfacePoint[4]; // stack offset -160 long surfaceNormal[4]; // stack offset -144 { // line 46, offset 0x82140 short typ; // $v1 } // line 55, offset 0x821d8 { // line 71, offset 0x82284 int chan; // $s1 } // line 83, offset 0x8231c { // line 95, offset 0x82380 struct VECTOR force; // stack offset -128 long pointVel[4]; // stack offset -112 int lfx; // $a2 int lfz; // $t2 int sidevel; // $t0 int slidevel; // $t1 { // line 112, offset 0x8248c } // line 117, offset 0x824f0 { // line 150, offset 0x82630 int hack; // $v0 int hx; // $v0 int hz; // $v1 } // line 150, offset 0x82630 { // line 203, offset 0x828f0 int a; // $v1 } // line 206, offset 0x82928 } // line 229, offset 0x82a04 } // line 237, offset 0x82adc } // line 252, offset 0x82bd0 /* * Offset 0x82BD0, from D:\driver2\game\C\WHEELFORCES.C (lines 66..82) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ StepCars() { // line 2, offset 0x82bd0 struct _CAR_DATA **ppCar; // $s0 struct _CAR_DATA **end; // $s1 { // line 7, offset 0x82c0c } // line 10, offset 0x82c0c { // line 14, offset 0x82c34 } // line 15, offset 0x82c34 } // line 17, offset 0x82c64 Source file(s) D:\driver2\game\C\XAPLAY.C+D:\driver2\game\XAPLAY.C, object file obj\xaplay.obj overlay id // 29 complex types struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct CdlFILTER { unsigned char file; // size=0, offset=0 unsigned char chan; // size=0, offset=1 unsigned short pad; // size=0, offset=2 }; struct CdlFILE { struct CdlLOC pos; // size=4, offset=0 unsigned long size; // size=0, offset=4 char name[16]; // size=16, offset=8 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct XA_TRACK { int start; // size=0, offset=0 int end; // size=0, offset=4 }; // 54 typedefs typedef struct CdlLOC CdlLOC; typedef struct CdlFILTER CdlFILTER; typedef struct CdlFILE CdlFILE; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct SndVolume2 SndVolume2; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct XA_TRACK XA_TRACK; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *CdlCB(); typedef void *SsMarkCallbackProc(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); // 0 labels // 11 external declarations extern char *XANames[4]; // offset 0x000a1f20 static unsigned long finished_count; // offset 0x000aa9d0 static int gPlaying; // offset 0x000aa9d4 extern unsigned short gChannel; // offset 0x000aa9d8 static int xa_prepared; // offset 0x000aa9dc static unsigned short CurrentChannel; // offset 0x000ab320 static unsigned short ID; // offset 0x000ab322 static int StartPos; // offset 0x000ab324 static struct CdlLOC pause_loc; // offset 0x000ab328 static unsigned long buffer[8]; // offset 0x000e11a8 extern struct XA_TRACK XAMissionMessages[4]; // offset 0x000e11c8 // 11 functions /* * Offset 0x82C64, from D:\driver2\game\C\XAPLAY.C (lines 265..289) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ PlayXA(int num /*$a3*/, int index /*$t0*/) { // line 1, offset 0x82c64 struct CdlFILTER filt; // stack offset -40 struct CdlLOC loc; // stack offset -32 unsigned char res[8]; // stack offset -24 } // line 25, offset 0x82d48 /* * Offset 0x82D60, from D:\driver2\game\C\XAPLAY.C (lines 155..166) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ GetXAData(int number /*$a0*/) { // line 1, offset 0x82d60 int i; // $s0 struct CdlFILE fp; // stack offset -32 } // line 12, offset 0x82dac /* * Offset 0x82DAC, from D:\driver2\game\C\XAPLAY.C (lines 226..248) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ PrepareXA() { // line 2, offset 0x82dac unsigned char param[4]; // stack offset -16 } // line 23, offset 0x82e58 /* * Offset 0x82E68, from D:\driver2\game\C\XAPLAY.C (lines 320..336) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ UnprepareXA() { // line 2, offset 0x82e68 unsigned char param[4]; // stack offset -16 } // line 17, offset 0x82eb0 /* * Offset 0x82EC0, from D:\driver2\game\C\XAPLAY.C (lines 128..143) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ GetMissionXAData(int number /*$s0*/) { // line 1, offset 0x82ec0 struct CdlFILE fp; // stack offset -32 } // line 16, offset 0x82f18 /* * Offset 0x82F18, from D:\driver2\game\C\XAPLAY.C (lines 185..196) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetXAVolume(int volume /*$a0*/) { // line 1, offset 0x82f18 } // line 12, offset 0x82f78 /* * Offset 0x82F78, from D:\driver2\game\C\XAPLAY.C (lines 343..348) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StopXA() { } /* * Offset 0x82FC4, from D:\driver2\game\C\XAPLAY.C (lines 386..407) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ResumeXA() { // line 2, offset 0x82fc4 struct CdlFILTER filt; // stack offset -32 unsigned char res[8]; // stack offset -24 } // line 22, offset 0x83064 /* * Offset 0x83078, from D:\driver2\game\C\XAPLAY.C (lines 418..432) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ PauseXA() { // line 1, offset 0x83078 unsigned char res[8]; // stack offset -16 } // line 15, offset 0x830e0 /* * Offset 0x830F0, from D:\driver2\game\C\XAPLAY.C (lines 310..310) * Stack frame base $sp, size 0 */ int /*$ra*/ XAPrepared() { } /* * Offset 0x830FC, from D:\driver2\game\C\XAPLAY.C (lines 355..376) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ cbready(int intr /*$s1*/, unsigned char *result /*$a1*/) { } Source file(s) D:\driver2\game\C\XMPLAY.C+D:\driver2\game\XMPLAY.C, object file obj\xmplay.obj overlay id // 14 complex types struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuReverbAttr { unsigned long mask; // size=0, offset=0 long mode; // size=0, offset=4 struct SpuVolume depth; // size=4, offset=8 long delay; // size=0, offset=12 long feedback; // size=0, offset=16 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct XM_HeaderInfo { unsigned short BPM; // size=0, offset=0 unsigned short Speed; // size=0, offset=2 }; struct XM_VABInfo { unsigned char *Address; // size=0, offset=0 unsigned long Size; // size=0, offset=4 }; struct XM_Feedback { unsigned char Volume; // size=0, offset=0 short Panning; // size=0, offset=2 int CurrentStart; // size=0, offset=4 short PlayNext; // size=0, offset=8 unsigned short SongLength; // size=0, offset=10 unsigned char Status; // size=0, offset=12 unsigned short PatternPos; // size=0, offset=14 short SongPos; // size=0, offset=16 unsigned short CurrentPattern; // size=0, offset=18 unsigned short SongSpeed; // size=0, offset=20 unsigned short SongBPM; // size=0, offset=22 int SongLoop; // size=0, offset=24 int ActiveVoices; // size=0, offset=28 }; struct XMHEADER { unsigned short version; // size=0, offset=0 unsigned short songlength; // size=0, offset=2 unsigned short restart; // size=0, offset=4 unsigned short numchn; // size=0, offset=6 unsigned short numpat; // size=0, offset=8 unsigned short numins; // size=0, offset=10 unsigned short flags; // size=0, offset=12 unsigned short tempo; // size=0, offset=14 unsigned short bpm; // size=0, offset=16 unsigned short XMChannels; // size=0, offset=18 unsigned short XMPSXChannels; // size=0, offset=20 unsigned long *JAP_PAT_ADDR[256]; // size=1024, offset=24 unsigned long *JAP_PAT_ADDR2[256]; // size=1024, offset=1048 unsigned long *JAP_InstrumentOffset[128]; // size=512, offset=2072 unsigned long *JAP_SampAddr[128]; // size=512, offset=2584 unsigned long *JAP_SampHdrAddr[128]; // size=512, offset=3096 unsigned char jorders[256]; // size=256, offset=3608 int S3MPanning; // size=0, offset=3864 }; struct XMCHANNEL { unsigned short Octave; // size=0, offset=0 short LVol; // size=0, offset=2 short RVol; // size=0, offset=4 short OldLVol; // size=0, offset=6 short OldRVol; // size=0, offset=8 unsigned short OldPeriod; // size=0, offset=10 unsigned char OldSample; // size=0, offset=12 unsigned long OldSOff; // size=0, offset=16 unsigned long SOffset; // size=0, offset=20 unsigned char nothing; // size=0, offset=24 unsigned char ChDead; // size=0, offset=25 unsigned char panenvflg; // size=0, offset=26 unsigned char panenvpts; // size=0, offset=27 unsigned char panenvsus; // size=0, offset=28 unsigned char panenvbeg; // size=0, offset=29 unsigned char panenvend; // size=0, offset=30 short panenvp; // size=0, offset=32 unsigned short panenva; // size=0, offset=34 unsigned short panenvb; // size=0, offset=36 unsigned short keyoffspd; // size=0, offset=38 unsigned char envflg; // size=0, offset=40 unsigned char envpts; // size=0, offset=41 unsigned char envsus; // size=0, offset=42 unsigned char envbeg; // size=0, offset=43 unsigned char envend; // size=0, offset=44 short envp; // size=0, offset=46 unsigned short enva; // size=0, offset=48 unsigned short envb; // size=0, offset=50 unsigned char ins; // size=0, offset=52 unsigned char vol; // size=0, offset=53 unsigned char dat; // size=0, offset=54 unsigned char datold; // size=0, offset=55 unsigned char eff; // size=0, offset=56 unsigned char not; // size=0, offset=57 unsigned char oldvslide; // size=0, offset=58 unsigned char oldfvslide; // size=0, offset=59 unsigned char oldfslide; // size=0, offset=60 short fadevol; // size=0, offset=62 unsigned char keyon; // size=0, offset=64 unsigned char kick; // size=0, offset=65 unsigned char sample; // size=0, offset=66 short handle; // size=0, offset=68 unsigned long start; // size=0, offset=72 unsigned char panning; // size=0, offset=76 unsigned char pansspd; // size=0, offset=77 char volume; // size=0, offset=78 unsigned short period; // size=0, offset=80 unsigned short SPUPitch; // size=0, offset=82 char transpose; // size=0, offset=84 unsigned char note; // size=0, offset=85 short ownper; // size=0, offset=86 short ownvol; // size=0, offset=88 short UserVol; // size=0, offset=90 char retrig; // size=0, offset=92 unsigned short c2spd; // size=0, offset=94 char tmpvolume; // size=0, offset=96 unsigned short tmpperiod; // size=0, offset=98 unsigned short wantedperiod; // size=0, offset=100 unsigned short slidespeed; // size=0, offset=102 unsigned short portspeed; // size=0, offset=104 unsigned char s3mtremor; // size=0, offset=106 unsigned char s3mvolslide; // size=0, offset=107 unsigned char s3mrtgspeed; // size=0, offset=108 unsigned char s3mrtgslide; // size=0, offset=109 unsigned char glissando; // size=0, offset=110 unsigned char wavecontrol; // size=0, offset=111 char vibpos; // size=0, offset=112 unsigned char vibspd; // size=0, offset=113 unsigned char vibdepth; // size=0, offset=114 char trmpos; // size=0, offset=115 unsigned char trmspd; // size=0, offset=116 unsigned char trmdepth; // size=0, offset=117 unsigned char SPUChannel; // size=0, offset=118 unsigned char Dolby; // size=0, offset=119 }; struct XMSONG { unsigned char Status; // size=0, offset=0 int HeaderNum; // size=0, offset=4 int CurPos; // size=0, offset=8 unsigned short reppos; // size=0, offset=12 unsigned short repcnt; // size=0, offset=14 unsigned short vbtick; // size=0, offset=16 unsigned short patbrk; // size=0, offset=18 unsigned char patdly; // size=0, offset=20 unsigned char patdly2; // size=0, offset=21 unsigned short numrow; // size=0, offset=22 short posjmp; // size=0, offset=24 unsigned short PatternPos; // size=0, offset=26 short SongPos; // size=0, offset=28 unsigned short CurrentPattern; // size=0, offset=30 unsigned short SongSpeed; // size=0, offset=32 unsigned short SongBPM; // size=0, offset=34 int SongLoop; // size=0, offset=36 unsigned char SongVolume; // size=0, offset=40 unsigned char MasterVolume; // size=0, offset=41 int XMActiveVoices; // size=0, offset=44 int NotAmiga; // size=0, offset=48 unsigned char XMPlay; // size=0, offset=52 int FirstCh; // size=0, offset=56 int JBPM; // size=0, offset=60 int PCounter; // size=0, offset=64 unsigned short PatSize; // size=0, offset=68 unsigned long *PatAdr; // size=0, offset=72 unsigned long *PatAdr2; // size=0, offset=76 int PlayMask; // size=0, offset=80 int SFXNum; // size=0, offset=84 struct XMCHANNEL XM_Chnl[24]; // size=2880, offset=88 int JUp; // size=0, offset=2968 short PlayNext; // size=0, offset=2972 short BPlayNext; // size=0, offset=2974 short BPlayFlag; // size=0, offset=2976 int CurrentStart; // size=0, offset=2980 unsigned char VabID; // size=0, offset=2984 short UserPan; // size=0, offset=2986 unsigned char MaxChans; // size=0, offset=2988 }; // 32 typedefs typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuReverbAttr SpuReverbAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct XM_HeaderInfo XM_HeaderInfo; typedef struct XM_VABInfo XM_VABInfo; typedef struct XM_Feedback XM_Feedback; typedef struct XMHEADER XMHEADER; typedef struct XMCHANNEL XMCHANNEL; typedef struct XMSONG XMSONG; typedef unsigned int size_t; typedef unsigned long wchar_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; // 0 labels // 38 external declarations extern short iVABID[8]; // offset 0x000a1f30 extern short XMSongIDs[24]; // offset 0x000a1f40 extern short XMSPU_SFX[24]; // offset 0x000a1f70 extern unsigned short lintab[768]; // offset 0x000a1fa0 extern unsigned short logtab[104]; // offset 0x000a25a0 static unsigned char VibratoTable[32]; // offset 0x000a2670 extern int JPPer; // offset 0x000aaa04 extern int XM_SCAN; // offset 0x000aa9e0 extern int JPError; // offset 0x000aa9e4 extern char MonoMode; // offset 0x000aa9e8 extern int XM_NSA; // offset 0x000aa9ec extern int XM_HA; // offset 0x000aa9f0 extern int tt; // offset 0x000aa9f4 extern int aa; // offset 0x000aa9f8 extern int dd; // offset 0x000aa9fc extern int de; // offset 0x000aaa00 extern int XMTime1; // offset 0x000ab338 extern int XMTime2; // offset 0x000ab33c extern int XMTime3; // offset 0x000ab340 extern int JP_Do_Nothing; // offset 0x000ab368 extern int BPMLimit; // offset 0x000ab354 extern int PALType; // offset 0x000ab344 extern int XM_FrameSpeed; // offset 0x000ab360 extern struct XMCHANNEL *XMC; // offset 0x000ab35c extern struct XMCHANNEL *XMCU; // offset 0x000ab36c extern struct XMHEADER *mh; // offset 0x000ab348 extern struct XMHEADER *mhu; // offset 0x000ab370 extern struct XMSONG *ms; // offset 0x000ab34c extern struct XMSONG *mu; // offset 0x000ab350 extern int CurrentCh; // offset 0x000ab374 extern int DVL; // offset 0x000ab358 extern int DVR; // offset 0x000ab364 extern struct SpuVoiceAttr xm_g_s_attr; // offset 0x000e1208 extern struct SpuVoiceAttr uxm_g_s_attr; // offset 0x000e22a8 extern struct SpuReverbAttr xm_r_attr; // offset 0x000e22e8 extern unsigned long xm_l_vag_spu_addr[8][128]; // offset 0x000e12a8 extern unsigned char *XM_SngAddress[24]; // offset 0x000e1248 extern unsigned char *XM_HeaderAddress[8]; // offset 0x000e11e8 // 69 functions /* * Offset 0x831B0, from D:\driver2\game\C\XMPLAY.C (lines 454..520) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ InitXMData(unsigned char *mpp /*$s5*/, int XM_ID /*$a1*/, int S3MPan /*$a2*/) { // line 1, offset 0x831b0 int t; // $s2 int a; // $s4 int c; // $s3 unsigned long b; // $a2 unsigned short b2; // $v1 } // line 67, offset 0x8344c /* * Offset 0x8344C, from D:\driver2\game\C\XMPLAY.C (lines 627..777) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ XM_Init(int VabID /*$s5*/, int XM_ID /*$s4*/, int SongID /*$s0*/, int FirstCh /*$s2*/, int Loop /*stack 16*/, int PlayMask /*stack 20*/, int PlayType /*stack 24*/, int SFXNum /*stack 28*/, int Loop /*$v0*/, int PlayMask /*$v1*/, int PlayType /*$s6*/, int SFXNum /*$s1*/) { // line 1, offset 0x8344c int i; // $s1 int pmsk; // $v1 int Chn; // $s0 int t; // $a2 int SngID; // $s3 int fr; // $a3 } // line 151, offset 0x8392c /* * Offset 0x8392C, from D:\driver2\game\C\XMPLAY.C (lines 788..875) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ JPlayNote(unsigned char *j /*$s0*/, int pmsk /*$s3*/) { // line 1, offset 0x8392c unsigned char b; // $s1 int ret; // $s2 unsigned char note; // $s4 } // line 88, offset 0x83b64 /* * Offset 0x83B64, from D:\driver2\game\C\XMPLAY.C (lines 885..1003) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ JPlayEffects() { // line 2, offset 0x83b64 unsigned char vol; // $a1 unsigned char eff; // $s1 unsigned char dat; // $s0 } // line 119, offset 0x83da4 /* * Offset 0x83DA4, from D:\driver2\game\C\XMPLAY.C (lines 1012..1173) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SPE(unsigned char eff /*$a0*/, unsigned char dat /*$s0*/) { // line 1, offset 0x83da4 int hi; // $v1 int lo; // $a0 } // line 162, offset 0x841b0 /* * Offset 0x841B0, from D:\driver2\game\C\XMPLAY.C (lines 1182..1319) * Stack frame base $sp, size 0 */ void /*$ra*/ DoEEffects(unsigned char dat /*$a0*/) { // line 1, offset 0x841b0 unsigned char nib; // $a1 } // line 138, offset 0x84524 /* * Offset 0x84524, from D:\driver2\game\C\XMPLAY.C (lines 1448..1508) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetPer() { // line 2, offset 0x84524 unsigned long *j; // $a1 } // line 61, offset 0x846c8 /* * Offset 0x846D8, from D:\driver2\game\C\XMPLAY.C (lines 1596..1671) * Stack frame base $sp, size 8 */ void /*$ra*/ DoS3MRetrig(unsigned char inf /*$a0*/) { // line 1, offset 0x846d8 unsigned char hi; // $a1 } // line 76, offset 0x848f0 /* * Offset 0x848F0, from D:\driver2\game\C\XMPLAY.C (lines 1710..1745) * Stack frame base $sp, size 0 */ void /*$ra*/ DoVibrato() { // line 2, offset 0x848f0 unsigned char q; // $a1 unsigned short temp; // $a2 } // line 36, offset 0x849f0 /* * Offset 0x849F0, from D:\driver2\game\C\XMPLAY.C (lines 1754..1793) * Stack frame base $sp, size 0 */ void /*$ra*/ DoTremolo() { // line 2, offset 0x849f0 unsigned char q; // $a2 unsigned short temp; // $a3 } // line 40, offset 0x84b3c /* * Offset 0x84B3C, from D:\driver2\game\C\XMPLAY.C (lines 1921..2094) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ UpdatePatternData(int SC /*$a0*/) { // line 1, offset 0x84b3c int SP; // $s1 int t; // $s0 int pmsk; // $a2 int FindOffset; // $t0 unsigned char *pataddr; // $a0 unsigned char patdat; // $a1 } // line 174, offset 0x85018 /* * Offset 0x85034, from D:\driver2\game\C\XMPLAY.C (lines 2195..2280) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ ApplyEffs() { // line 2, offset 0x85034 short envpan; // $s2 short envvol; // $s1 int t; // $s3 int pmsk; // $v1 short vlm; // $s0 short Pn; // $a1 unsigned char MaxChans; // $s4 } // line 86, offset 0x85350 /* * Offset 0x85374, from D:\driver2\game\C\XMPLAY.C (lines 2322..2358) * Stack frame base $sp, size 0 */ void /*$ra*/ DoDolbySS() { } /* * Offset 0x85448, from D:\driver2\game\C\XMPLAY.C (lines 2398..2502) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ UpdateHardware() { // line 2, offset 0x85448 int t; // $s2 int prd; // $s0 int SPUKeyOn; // $s6 int pmsk; // $v1 int Chnl; // $s1 unsigned char MaxChans; // $s3 int i; // $v1 } // line 105, offset 0x8577c /* * Offset 0x857A4, from D:\driver2\game\C\XMPLAY.C (lines 2564..2626) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ short /*$ra*/ ProcessEnvelope(short v /*$a2*/, unsigned char keyon /*$a1*/, int JSmp /*$a2*/) { // line 1, offset 0x857a4 unsigned char a2; // $s2 unsigned char b; // $s0 unsigned short p; // $s1 unsigned long *j; // $s5 short bpos; // $s3 } // line 63, offset 0x85974 /* * Offset 0x85974, from D:\driver2\game\C\XMPLAY.C (lines 2635..2698) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ short /*$ra*/ ProcessPanEnvelope(short v /*$a2*/, unsigned char keyon /*$a1*/, int JSmp /*$a2*/) { // line 1, offset 0x85974 unsigned char a2; // $s2 unsigned char b; // $s0 unsigned short p; // $s1 unsigned long *j; // $s5 short bpos; // $s3 } // line 64, offset 0x85b44 /* * Offset 0x85B44, from D:\driver2\game\C\XMPLAY.C (lines 3206..3225) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ XM_Restart(int Song_ID /*$a1*/) { // line 1, offset 0x85b44 int t; // $s0 } // line 20, offset 0x85c24 /* * Offset 0x85C38, from D:\driver2\game\C\XMPLAY.C (lines 3160..3178) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ XM_Pause(int Song_ID /*$a1*/) { // line 1, offset 0x85c38 int t; // $s0 } // line 19, offset 0x85d04 /* * Offset 0x85D18, from D:\driver2\game\C\XMPLAY.C (lines 331..341) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ XM_Exit() { // line 2, offset 0x85d18 int i; // $s0 } // line 11, offset 0x85d78 /* * Offset 0x85D78, from D:\driver2\game\C\XMPLAY.C (lines 374..384) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ XM_Update() { // line 2, offset 0x85d78 } // line 11, offset 0x85db8 /* * Offset 0x85DC8, from D:\driver2\game\C\XMPLAY.C (lines 429..439) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ XM_PlayStop(int Song_ID /*$a1*/) { } /* * Offset 0x85E38, from D:\driver2\game\C\XMPLAY.C (lines 409..419) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_PlayStart(int Song_ID /*$a2*/, int PlayMask /*$a1*/) { } /* * Offset 0x85E8C, from D:\driver2\game\C\XMPLAY.C (lines 2707..2735) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_SetSongPos(int Song_ID /*$a2*/, unsigned short pos /*$a1*/) { // line 1, offset 0x85e8c int t; // $a2 } // line 29, offset 0x85f74 /* * Offset 0x85F7C, from D:\driver2\game\C\XMPLAY.C (lines 592..608) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_OnceOffInit(int PAL /*$a0*/) { } /* * Offset 0x85FB4, from D:\driver2\game\C\XMPLAY.C (lines 345..350) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ XM_CloseVAB(int VabID /*$a1*/) { } /* * Offset 0x86008, from D:\driver2\game\C\XMPLAY.C (lines 3273..3283) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_SetMasterVol(int Song_ID /*$a2*/, unsigned char Vol /*$a1*/) { } /* * Offset 0x8605C, from D:\driver2\game\C\XMPLAY.C (lines 3331..3332) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ XM_FreeVAG(int addr /*$a0*/) { } /* * Offset 0x8607C, from D:\driver2\game\C\XMPLAY.C (lines 1855..1883) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ UpdateWithTimer(int SC /*$a3*/) { } /* * Offset 0x86178, from D:\driver2\game\C\XMPLAY.C (lines 1887..1915) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ XM_DoFullUpdate(int SC /*$s1*/) { } /* * Offset 0x86234, from D:\driver2\game\C\XMPLAY.C (lines 3351..3354) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ XM_Quit(int SongID /*$s0*/) { } /* * Offset 0x86278, from D:\driver2\game\C\XMPLAY.C (lines 3449..3458) * Stack frame base $sp, size 0 */ int /*$ra*/ XM_GetFreeVAB() { // line 2, offset 0x86278 int i; // $v1 } // line 10, offset 0x862b0 /* * Offset 0x862B8, from D:\driver2\game\C\XMPLAY.C (lines 3461..3463) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_SetVAGAddress(int VabID /*$a0*/, int slot /*$a1*/, int addr /*$a2*/) { } /* * Offset 0x862F0, from D:\driver2\game\C\XMPLAY.C (lines 354..366) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_CloseVAB2(int VabID /*$a3*/) { // line 1, offset 0x862f0 int i; // $v0 } // line 13, offset 0x86358 /* * Offset 0x86358, from D:\driver2\game\C\XMPLAY.C (lines 3511..3516) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_SetSongAddress(unsigned char *Address /*$a0*/) { } /* * Offset 0x8639C, from D:\driver2\game\C\XMPLAY.C (lines 3506..3507) * Stack frame base $sp, size 0 */ int /*$ra*/ XM_GetSongSize() { } /* * Offset 0x863A4, from D:\driver2\game\C\XMPLAY.C (lines 3527..3528) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_FreeAllSongIDs() { } /* * Offset 0x863B0, from D:\driver2\game\C\XMPLAY.C (lines 3537..3542) * Stack frame base $sp, size 0 */ void /*$ra*/ XM_SetFileHeaderAddress(unsigned char *Address /*$a0*/) { } /* * Offset 0x863E4, from D:\driver2\game\C\XMPLAY.C (lines 3532..3533) * Stack frame base $sp, size 0 */ int /*$ra*/ XM_GetFileHeaderSize() { } /* * Offset 0x863EC, from D:\driver2\game\C\XMPLAY.C (lines 256..280) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 ra */ unsigned short /*$ra*/ GetLogPeriod(unsigned char note /*$a0*/, unsigned short fine /*$a1*/) { // line 1, offset 0x863ec } // line 25, offset 0x86484 /* * Offset 0x86484, from D:\driver2\game\C\XMPLAY.C (lines 1831..1850) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ UpdateXMData() { // line 2, offset 0x86484 int SC; // $s0 } // line 20, offset 0x86520 /* * Offset 0x86538, from D:\driver2\game\C\XMPLAY.C (lines 1817..1821) * Stack frame base $sp, size 0 */ short /*$ra*/ DoVol(unsigned long a /*$v0*/, short b /*$a1*/, short c /*$a2*/) { } /* * Offset 0x86560, from D:\driver2\game\C\XMPLAY.C (lines 1802..1803) * Stack frame base $sp, size 0 */ short /*$ra*/ DoPan(short envpan /*$a0*/, short pan /*$a1*/) { } /* * Offset 0x865B4, from D:\driver2\game\C\XMPLAY.C (lines 1545..1552) * Stack frame base $sp, size 0 */ void /*$ra*/ DoVolSlide(unsigned char dat /*$a1*/) { } /* * Offset 0x86644, from D:\driver2\game\C\XMPLAY.C (lines 1680..1701) * Stack frame base $sp, size 0 */ void /*$ra*/ DoToneSlide() { // line 2, offset 0x86644 int dist; // $v1 } // line 22, offset 0x866ac /* * Offset 0x866AC, from D:\driver2\game\C\XMPLAY.C (lines 1561..1587) * Stack frame base $sp, size 0 */ void /*$ra*/ DoXMPanSlide(unsigned char inf /*$a0*/) { // line 1, offset 0x866ac unsigned char lo; // $v0 unsigned char hi; // $a0 short pan; // $v1 } // line 27, offset 0x86730 /* * Offset 0x86738, from D:\driver2\game\C\XMPLAY.C (lines 1517..1536) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ Arpeggio(unsigned char dat /*$a1*/) { // line 1, offset 0x86738 unsigned char note; // $a2 } // line 20, offset 0x867e4 /* * Offset 0x867E4, from D:\driver2\game\C\XMPLAY.C (lines 1372..1432) * Stack frame base $sp, size 0 */ void /*$ra*/ SetInstr(unsigned char inst /*$a0*/) { // line 1, offset 0x867e4 unsigned long *j; // $a2 } // line 61, offset 0x868d8 /* * Offset 0x868E0, from D:\driver2\game\C\XMPLAY.C (lines 1328..1362) * Stack frame base $sp, size 0 */ void /*$ra*/ SetNote(unsigned char note /*$a0*/) { // line 1, offset 0x868e0 unsigned char *j; // $a0 } // line 35, offset 0x869b8 /* * Offset 0x869C0, from D:\driver2\game\C\XMPLAY.C (lines 568..583) * Stack frame base $sp, size 0 */ unsigned long /*$ra*/ GetLong(unsigned char *mpp /*$a0*/) { // line 1, offset 0x869c0 } // line 16, offset 0x869ec /* * Offset 0x869EC, from D:\driver2\game\C\XMPLAY.C (lines 237..247) * Stack frame base $sp, size 0 */ short /*$ra*/ Interpolate(short p /*$a0*/, short p1 /*$a1*/, short p2 /*$a2*/, short v1 /*$a3*/, int v2 /*stack 16*/) { // line 1, offset 0x869ec } // line 11, offset 0x86a6c /* * Offset 0x86A6C, from D:\driver2\game\C\XMPLAY.C (lines 288..289) * Stack frame base $sp, size 0 */ unsigned short /*$ra*/ JPGetPeriod(unsigned char note /*$a0*/, short fine /*$a1*/) { } /* * Offset 0x86AA0, from D:\driver2\game\C\XMPLAY.C (lines 299..306) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ unsigned short /*$ra*/ GetPeriod(unsigned char note /*$a2*/, unsigned short c2spd /*$a1*/) { // line 1, offset 0x86aa0 } // line 8, offset 0x86af0 /* * Offset 0x86AF0, from D:\driver2\game\C\XMPLAY.C (lines 2540..2555) * Stack frame base $sp, size 0 */ long /*$ra*/ GetFreq2(long period /*$v1*/) { // line 2, offset 0x86af0 int okt; // $a1 long frequency; // $a0 } // line 16, offset 0x86b48 /* * Offset 0x86B48, from D:\driver2\game\C\XMPLAY.C (lines 3068..3082) * Stack frame base $sp, size 48 * Saved registers at offset -8: ra */ void /*$ra*/ CurrentKeyStat() { // line 2, offset 0x86b48 int t; // $a1 char KeyStat[24]; // stack offset -32 } // line 15, offset 0x86bf4 /* * Offset 0x86BF4, from D:\driver2\game\C\XMPLAY.C (lines 3091..3094) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ StpCh(int Channel /*$a0*/) { } /* * Offset 0x86C18, from D:\driver2\game\C\XMPLAY.C (lines 3115..3116) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetFrq(int Channel /*$a0*/, int Pitch /*$a1*/) { } /* * Offset 0x86C38, from D:\driver2\game\C\XMPLAY.C (lines 3104..3105) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetVol(int Channel /*$a0*/, int LVol /*$a1*/, int RVol /*$a2*/) { } /* * Offset 0x86C64, from D:\driver2\game\C\XMPLAY.C (lines 3003..3025) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ PlaySFX(int VBID /*$a0*/, int Channel /*$a1*/, int Inst /*$a2*/, int Pitch /*$a3*/, int LV /*stack 16*/, int RV /*stack 20*/, int LV /*$v0*/, int RV /*$t2*/) { // line 1, offset 0x86c64 } // line 23, offset 0x86cf8 /* * Offset 0x86CF8, from D:\driver2\game\C\XMPLAY.C (lines 3308..3322) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ClearSPU(int VBID /*$a0*/) { // line 1, offset 0x86cf8 int i; // $s1 int Amount; // $a1 } // line 15, offset 0x86d74 /* * Offset 0x86D74, from D:\driver2\game\C\XMPLAY.C (lines 3035..3057) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ InitSPUChannel(int Channel /*$a0*/) { } /* * Offset 0x86DDC, from D:\driver2\game\C\XMPLAY.C (lines 3126..3150) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ SilenceXM(int Song_ID /*$a0*/) { // line 2, offset 0x86ddc int t; // $s0 int i; // $s1 int c; // $a0 int pmsk; // $v0 } // line 25, offset 0x86ebc /* * Offset 0x86EBC, from D:\driver2\game\C\XMPLAY.C (lines 2289..2312) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ UpdateEffs() { // line 2, offset 0x86ebc int t; // $s0 int pmsk; // $v1 unsigned char MaxChans; // $s1 } // line 24, offset 0x86f54 /* * Offset 0x86F70, from D:\driver2\game\C\XMPLAY.C (lines 2516..2526) * Stack frame base $sp, size 0 */ int /*$ra*/ IntVols(int Vol1 /*$a0*/, int Vol2 /*$a1*/) { // line 1, offset 0x86f70 int a; // $v1 } // line 11, offset 0x86fa0 /* * Offset 0x86FA0, from D:\driver2\game\C\XMPLAY.C (lines 3337..3348) * Stack frame base $sp, size 0 */ int /*$ra*/ GetFreeSongID() { // line 2, offset 0x86fa0 int i; // $v1 } // line 12, offset 0x86ff0 /* * Offset 0x86FF0, from D:\driver2\game\C\XMPLAY.C (lines 3359..3367) * Stack frame base $sp, size 0 */ void /*$ra*/ JPClearSPUFlags(int SongID /*$a0*/) { // line 1, offset 0x86ff0 int i; // $a1 } // line 9, offset 0x87024 /* * Offset 0x87024, from D:\driver2\game\C\XMPLAY.C (lines 2099..2113) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ CalcPlayPos(int StartPos /*$s4*/) { // line 1, offset 0x87024 int SP; // $s1 int t; // $s0 int i; // $a1 } // line 15, offset 0x870dc /* * Offset 0x870DC, from D:\driver2\game\C\XMPLAY.C (lines 2143..2186) * Stack frame base $sp, size 0 */ int /*$ra*/ JCalcPat(unsigned char *j /*$a0*/) { // line 2, offset 0x870dc unsigned char b; // $v1 int ret; // $a1 } // line 44, offset 0x8714c /* * Offset 0x8714C, from D:\driver2\game\C\XMPLAY.C (lines 2116..2138) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ PACKEDCalcPlayPos(int StartPos /*$s3*/) { // line 1, offset 0x8714c int SP; // $s0 int i; // $a1 unsigned char *pataddr; // $a0 unsigned char patdat; // $v1 } // line 23, offset 0x87228 /* * Offset 0x87228, from D:\driver2\game\C\XMPLAY.C (lines 2368..2395) * Stack frame base $sp, size 0 */ int /*$ra*/ GetEmpty(int old /*$t1*/) { // line 1, offset 0x87228 int i; // $a3 struct XMCHANNEL *j; // $a0 } // line 28, offset 0x872f0 Source file(s) D:\driver2\game\FEMAIN.C+D:\driver2\game\FRONTEND\FEMAIN.C, object file obj\femain.obj overlay id // 77 complex types struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct MATRIX { short m[3][3]; // size=18, offset=0 long t[3]; // size=12, offset=20 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_FT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct SVECTOR_NOPAD { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct XYPAIR { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct SXYPAIR { short x; // size=0, offset=0 short y; // size=0, offset=2 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct PSXSCREEN { char index; // size=0, offset=0 unsigned char numButtons; // size=0, offset=1 char userFunctionNum; // size=0, offset=2 struct PSXBUTTON buttons[8]; // size=480, offset=4 }; struct PADRECORD { unsigned char pad; // size=0, offset=0 char analogue; // size=0, offset=1 unsigned char run; // size=0, offset=2 }; enum PAUSEMODE : char { PAUSEMODE_PAUSE = 0, PAUSEMODE_PAUSEP1 = 1, PAUSEMODE_PAUSEP2 = 2, PAUSEMODE_GAMEOVER = 3, PAUSEMODE_COMPLETE = 4, PAUSEMODE_PADERROR = 5, }; struct DRAW_MODE { short x1; // size=0, offset=0 short y1; // size=0, offset=2 short x2; // size=0, offset=4 short y2; // size=0, offset=6 short width; // size=0, offset=8 short height; // size=0, offset=10 short framex; // size=0, offset=12 short framey; // size=0, offset=14 }; struct DB { char *primptr; // size=0, offset=0 unsigned long *ot; // size=0, offset=4 char *primtab; // size=0, offset=8 int id; // size=0, offset=12 struct DRAWENV draw; // size=92, offset=16 struct DISPENV disp; // size=20, offset=108 }; struct UV { unsigned char u0; // size=0, offset=0 unsigned char v0; // size=0, offset=1 unsigned char u1; // size=0, offset=2 unsigned char v1; // size=0, offset=3 unsigned char u2; // size=0, offset=4 unsigned char v2; // size=0, offset=5 unsigned char u3; // size=0, offset=6 unsigned char v3; // size=0, offset=7 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct ARC_ENTRY { short offset; // size=0, offset=0 short length; // size=0, offset=2 }; struct USVECTOR_NOPAD { unsigned short vx; // size=0, offset=0 unsigned short vy; // size=0, offset=2 unsigned short vz; // size=0, offset=4 }; struct _COP_DATA { int speed; // size=0, offset=0 int power; // size=0, offset=4 int min; // size=0, offset=8 int max; // size=0, offset=12 }; struct _TARGET { int data[16]; // size=64, offset=0 }; struct LEAD_PARAMETERS { int tEnd; // size=0, offset=0 int tAvelLimit; // size=0, offset=4 int tDist; // size=0, offset=8 int tDistMul; // size=0, offset=12 int tWidth; // size=0, offset=16 int tWidthMul; // size=0, offset=20 int tWidth80; // size=0, offset=24 int tWidth80Mul; // size=0, offset=28 int hEnd; // size=0, offset=32 int dEnd; // size=0, offset=36 int hDist; // size=0, offset=40 int hDistMul; // size=0, offset=44 int hWidth; // size=0, offset=48 int hWidthMul; // size=0, offset=52 int hWidth80; // size=0, offset=56 int hWidth80Mul; // size=0, offset=60 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct STREAM_SOURCE { unsigned char type; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 char controlType; // size=0, offset=3 unsigned short flags; // size=0, offset=4 unsigned short rotation; // size=0, offset=6 struct VECTOR_NOPAD position; // size=12, offset=8 int totaldamage; // size=0, offset=20 int damage[6]; // size=24, offset=24 }; struct MR_TIMER { short x; // size=0, offset=0 short y; // size=0, offset=2 unsigned char flags; // size=0, offset=4 unsigned char min; // size=0, offset=5 unsigned char sec; // size=0, offset=6 unsigned char frac; // size=0, offset=7 long count; // size=0, offset=8 }; struct _CAR_DATA { struct _HANDLING_DATA hd; // size=240, offset=0 union RigidBodyState st; // size=52, offset=240 struct _APPEARANCE_DATA ap; // size=100, offset=292 unsigned char hndType; // size=0, offset=392 unsigned char controlType; // size=0, offset=393 unsigned char controlFlags; // size=0, offset=394 char id; // size=0, offset=395 union { char *padid; // size=0, offset=0 struct CIV_STATE c; // size=252, offset=0 struct COP p; // size=40, offset=0 struct LEAD_CAR l; // size=104, offset=0 } ai; // size=252, offset=396 int *inform; // size=0, offset=648 short thrust; // size=0, offset=652 short felonyRating; // size=0, offset=654 char handbrake; // size=0, offset=656 char wheelspin; // size=0, offset=657 char wasOnGround; // size=0, offset=658 char lowDetail; // size=0, offset=659 short wheel_angle; // size=0, offset=660 unsigned short totalDamage; // size=0, offset=662 long lastPad; // size=0, offset=664 }; struct CIV_ROUTE_ENTRY { short dir; // size=0, offset=0 unsigned short pathType; // size=0, offset=2 int distAlongSegment; // size=0, offset=4 int x; // size=0, offset=8 int z; // size=0, offset=12 }; struct CIV_STATE { int currentRoad; // size=0, offset=0 int currentNode; // size=0, offset=4 struct CIV_ROUTE_ENTRY *ctrlNode; // size=16, offset=8 unsigned char ctrlState; // size=0, offset=12 unsigned char trafficLightPhaseId; // size=0, offset=13 unsigned char changeLane; // size=0, offset=14 unsigned char turnDir; // size=0, offset=15 char brakeLight; // size=0, offset=16 unsigned char oldLane; // size=0, offset=17 unsigned char changeLaneCount; // size=0, offset=18 unsigned char pad3; // size=0, offset=19 int turnNode; // size=0, offset=20 int changeLaneIndicateCount; // size=0, offset=24 int carPauseCnt; // size=0, offset=28 int velRatio; // size=0, offset=32 struct CIV_ROUTE_ENTRY targetRoute[13]; // size=208, offset=36 struct CIV_ROUTE_ENTRY *pnode; // size=16, offset=244 unsigned char maxSpeed; // size=0, offset=248 unsigned char thrustState; // size=0, offset=249 unsigned char carMustDie; // size=0, offset=250 unsigned char currentLane; // size=0, offset=251 }; struct CAR_COSMETICS { struct SVECTOR headLight; // size=8, offset=0 struct SVECTOR frontInd; // size=8, offset=8 struct SVECTOR backInd; // size=8, offset=16 struct SVECTOR brakeLight; // size=8, offset=24 struct SVECTOR revLight; // size=8, offset=32 struct SVECTOR policeLight; // size=8, offset=40 struct SVECTOR exhaust; // size=8, offset=48 struct SVECTOR smoke; // size=8, offset=56 struct SVECTOR fire; // size=8, offset=64 struct SVECTOR wheelDisp[4]; // size=32, offset=72 short extraInfo; // size=0, offset=104 short powerRatio; // size=0, offset=106 short cbYoffset; // size=0, offset=108 short susCoeff; // size=0, offset=110 short traction; // size=0, offset=112 short wheelSize; // size=0, offset=114 struct SVECTOR cPoints[12]; // size=96, offset=116 struct SVECTOR colBox; // size=8, offset=212 struct SVECTOR cog; // size=8, offset=220 short twistRateX; // size=0, offset=228 short twistRateY; // size=0, offset=230 short twistRateZ; // size=0, offset=232 short mass; // size=0, offset=234 }; struct VECTOR2 { int vx; // size=0, offset=0 int vz; // size=0, offset=4 }; struct COP { struct VECTOR2 targetHistory[2]; // size=16, offset=0 char routeInMemory; // size=0, offset=16 char justPinged; // size=0, offset=17 char close_pursuit; // size=0, offset=18 char dying; // size=0, offset=19 unsigned short DistanceToPlayer; // size=0, offset=20 short desiredSpeed; // size=0, offset=22 short recalcTimer; // size=0, offset=24 short stuckTimer; // size=0, offset=26 short lastRecoverStrategy; // size=0, offset=28 short recoveryTimer; // size=0, offset=30 short hiddenTimer; // size=0, offset=32 short frontLClear; // size=0, offset=34 short frontRClear; // size=0, offset=36 }; struct LEAD_CAR { char dstate; // size=0, offset=0 char ctt; // size=0, offset=1 short targetDir; // size=0, offset=2 int targetX; // size=0, offset=4 int targetZ; // size=0, offset=8 int currentRoad; // size=0, offset=12 int lastRoad; // size=0, offset=16 int nextJunction; // size=0, offset=20 int nextTurn; // size=0, offset=24 int nextExit; // size=0, offset=28 int stuckCount; // size=0, offset=32 int panicCount; // size=0, offset=36 int recoverTime; // size=0, offset=40 int roadPosition; // size=0, offset=44 int roadForward; // size=0, offset=48 int boringness; // size=0, offset=52 int avoid; // size=0, offset=56 int lastTarget; // size=0, offset=60 int offRoad; // size=0, offset=64 int width; // size=0, offset=68 int d; // size=0, offset=72 int base_Normal; // size=0, offset=76 int base_Angle; // size=0, offset=80 int base_Dir; // size=0, offset=84 int outsideSpoolRegion; // size=0, offset=88 int direction; // size=0, offset=92 int lastDirection; // size=0, offset=96 char takeDamage; // size=0, offset=100 }; union RigidBodyState { long v[13]; // size=52, offset=0 struct { long fposition[3]; // size=12, offset=0 long orientation[4]; // size=16, offset=12 long linearVelocity[3]; // size=12, offset=28 long angularVelocity[3]; // size=12, offset=40 } n; // size=52, offset=0 }; struct WHEEL { char susCompression; // size=0, offset=0 char locked; // size=0, offset=1 char onGrass; // size=0, offset=2 unsigned char surface; // size=0, offset=3 }; struct OrientedBox { struct VECTOR_NOPAD location; // size=12, offset=0 struct SVECTOR_NOPAD radii[3]; // size=18, offset=12 short length[3]; // size=6, offset=30 }; struct _HANDLING_DATA { struct MATRIX where; // size=32, offset=0 struct MATRIX drawCarMat; // size=32, offset=32 long acc[4]; // size=16, offset=64 long aacc[4]; // size=16, offset=80 int wheel_speed; // size=0, offset=96 int speed; // size=0, offset=100 int direction; // size=0, offset=104 char gear; // size=0, offset=108 char changingGear; // size=0, offset=109 char mayBeColliding; // size=0, offset=110 char autoBrake; // size=0, offset=111 struct WHEEL wheel[4]; // size=16, offset=112 short revs; // size=0, offset=128 struct VECTOR shadowPoints[4]; // size=64, offset=132 int front_vel; // size=0, offset=196 int rear_vel; // size=0, offset=200 struct OrientedBox oBox; // size=36, offset=204 }; struct _APPEARANCE_DATA { struct SXYPAIR light_trails[4][4]; // size=64, offset=0 struct CAR_COSMETICS *carCos; // size=236, offset=64 short old_clock[4]; // size=8, offset=68 char life; // size=0, offset=76 char coplife; // size=0, offset=77 short qy; // size=0, offset=78 short qw; // size=0, offset=80 char life2; // size=0, offset=82 char model; // size=0, offset=83 char palette; // size=0, offset=84 char needsDenting; // size=0, offset=85 short damage[6]; // size=12, offset=86 }; struct PEDESTRIAN { struct PEDESTRIAN *pNext; // size=92, offset=0 struct PEDESTRIAN *pPrev; // size=92, offset=4 void *fpRestState(); // size=0, offset=8 void *fpAgitatedState(); // size=0, offset=12 char padId; // size=0, offset=16 enum PED_MODEL_TYPES pedType; // size=1, offset=17 struct VECTOR_NOPAD position; // size=12, offset=20 struct SVECTOR dir; // size=8, offset=32 struct SVECTOR velocity; // size=8, offset=40 struct VECTOR target; // size=16, offset=48 int flags; // size=0, offset=64 short head_pos; // size=0, offset=68 short head_rot; // size=0, offset=70 short index; // size=0, offset=72 short last_dir; // size=0, offset=74 short interest; // size=0, offset=76 char frame1; // size=0, offset=78 char *motion; // size=0, offset=80 char speed; // size=0, offset=84 char doing_turn; // size=0, offset=85 char finished_turn; // size=0, offset=86 char seat_index; // size=0, offset=87 unsigned char pallet; // size=0, offset=88 enum PED_ACTION_TYPE type; // size=1, offset=89 }; enum PED_ACTION_TYPE : char { PED_ACTION_WALK = 0, PED_ACTION_RUN = 1, PED_ACTION_BACK = 2, PED_ACTION_GETINCAR = 3, PED_ACTION_GETOUTCAR = 4, PED_ACTION_TIME = 5, PED_ACTION_PRESSBUTTON = 6, PED_ACTION_SIT = 7, PED_ACTION_CIVWALK = 8, PED_ACTION_CIVRUN = 9, PED_ACTION_JUMP = 10, PED_ACTION_CIVSIT = 11, PED_ACTION_COPSTAND = 12, PED_ACTION_COPCROUCH = 13, PED_ACTION_TALK = 14, PED_ACTION_STOPPING = 15, }; enum PED_MODEL_TYPES : char { TANNER_MODEL = 0, OTHER_MODEL = 1, OTHER_SPRITE = 2, CIVILIAN = 3, }; struct __skidinfo { char chan; // size=0, offset=0 char sound; // size=0, offset=1 }; struct __horninfo { char on; // size=0, offset=0 char time; // size=0, offset=1 char request; // size=0, offset=2 }; struct RENDER_ARG { unsigned char render; // size=0, offset=0 unsigned char credits; // size=0, offset=1 unsigned short recap; // size=0, offset=2 }; struct RENDER_ARGS { unsigned char nRenders; // size=0, offset=0 unsigned char subtitle; // size=0, offset=1 char screenx; // size=0, offset=2 char screeny; // size=0, offset=3 struct RENDER_ARG Args[4]; // size=16, offset=4 }; struct FE_CHARDATA { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 unsigned char w; // size=0, offset=2 unsigned char h; // size=0, offset=3 }; struct FE_FONT { int NumFonts; // size=0, offset=0 struct FE_CHARDATA CharInfo[256]; // size=1024, offset=4 }; struct SCREEN_LIMITS { short minx; // size=0, offset=0 short miny; // size=0, offset=2 short maxx; // size=0, offset=4 short maxy; // size=0, offset=6 }; struct BOTCH { int missNum; // size=0, offset=0 char **name; // size=0, offset=4 }; // 111 typedefs typedef struct CdlLOC CdlLOC; typedef struct MATRIX MATRIX; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_FT3 POLY_FT3; typedef struct POLY_FT4 POLY_FT4; typedef struct SPRT SPRT; typedef struct DR_MOVE DR_MOVE; typedef struct SndVolume2 SndVolume2; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct SVECTOR_NOPAD SVECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct XYPAIR XYPAIR; typedef struct SXYPAIR SXYPAIR; typedef struct PSXBUTTON PSXBUTTON; typedef struct PSXSCREEN PSXSCREEN; typedef struct PADRECORD PADRECORD; typedef enum PAUSEMODE PAUSEMODE; typedef struct DRAW_MODE DRAW_MODE; typedef struct DB DB; typedef struct UV UV; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct ARC_ENTRY ARC_ENTRY; typedef struct USVECTOR_NOPAD USVECTOR_NOPAD; typedef struct _COP_DATA MS_COP_DATA; typedef struct _TARGET MS_TARGET; typedef struct LEAD_PARAMETERS LEAD_PARAMETERS; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct STREAM_SOURCE STREAM_SOURCE; typedef struct MR_TIMER MR_TIMER; typedef struct _CAR_DATA CAR_DATA; typedef struct CIV_ROUTE_ENTRY CIV_ROUTE_ENTRY; typedef struct CIV_STATE CIV_STATE; typedef struct CAR_COSMETICS CAR_COSMETICS; typedef struct VECTOR2 VECTOR2; typedef struct COP COP; typedef struct LEAD_CAR LEAD_CAR; typedef union RigidBodyState RigidBodyState; typedef struct WHEEL WHEEL; typedef struct OrientedBox OrientedBox; typedef struct _HANDLING_DATA HANDLING_DATA; typedef struct _APPEARANCE_DATA APPEARANCE_DATA; typedef struct PEDESTRIAN PEDESTRIAN; typedef enum PED_ACTION_TYPE PED_ACTION_TYPE; typedef enum PED_MODEL_TYPES PED_MODEL_TYPES; typedef struct __skidinfo skidinfo; typedef struct __horninfo horninfo; typedef struct RENDER_ARG RENDER_ARG; typedef struct RENDER_ARGS RENDER_ARGS; typedef struct FE_CHARDATA FE_CHARDATA; typedef struct FE_FONT FE_FONT; typedef struct SCREEN_LIMITS SCREEN_LIMITS; typedef struct BOTCH BOTCH; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *CdlCB(); typedef void *SsMarkCallbackProc(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; typedef long LONGQUATERNION[4]; typedef unsigned long ulong; typedef struct PEDESTRIAN *LPPEDESTRIAN; typedef struct SEATED_PEDESTRIANS *SEATEDPTR; typedef struct PEDESTRIAN_ROADS *LPPEDESTRIAN_ROADS; // 0 labels // 71 external declarations extern int bRedrawFrontend; // offset 0x001c6aa0 static char *carSelectPlayerText[2]; // offset 0x001c676c static char *gameNames[64]; // offset 0x001c6774 static char *cheatText[5]; // offset 0x001c6874 static char *CutSceneNames[28]; // offset 0x001c6888 static char *MissionName[37]; // offset 0x001c68f8 extern struct SCREEN_LIMITS screen_limits[2]; // offset 0x001c698c extern int bDoingScores; // offset 0x001c699c extern int cutSelection; // offset 0x001c69a0 extern int bDoingCutSelect; // offset 0x001c69a4 extern char *cutGfxNames[4]; // offset 0x001c69a8 extern int CutAmounts[5]; // offset 0x001c69b8 extern int CutAmountsTotal[5]; // offset 0x001c69cc extern char cutUnlock[41]; // offset 0x001c69e0 extern int carSelection; // offset 0x001c6a0c extern char *gfxNames[4]; // offset 0x001c6a10 extern int currCity; // offset 0x001c6a70 extern int missionSetup; // offset 0x001c6a74 extern char loaded[3]; // offset 0x001c6a78 extern char lastCity; // offset 0x001c6a7b extern char lastCutCity; // offset 0x001c6a7c extern int bInCutSelect; // offset 0x001c6a80 extern int currPlayer; // offset 0x001c6a84 extern int bDoingCarSelect; // offset 0x001c6a88 extern int currSelIndex; // offset 0x001c6a8c extern int bDrawExtra; // offset 0x001c6a90 extern int bScreenSetup; // offset 0x001c6a94 extern struct RECT storeRect; // offset 0x001c6a98 extern int bWantCDReset; // offset 0x001c6aa4 extern int bRequestedKey; // offset 0x001c6aa8 extern int bDoneAllready; // offset 0x001c6aac extern int bMissionSelect; // offset 0x001c6ab0 extern int allowVibration; // offset 0x001c6ab4 extern int numPadsConnected; // offset 0x001c6ab8 extern int padsConnected[2]; // offset 0x001c6abc extern int mainScreenLoaded; // offset 0x001c6ac4 extern int bCdIconSetup; // offset 0x001c6ac8 extern char carNumLookup[4][10]; // offset 0x001c6acc extern int CarAvailability[4][10]; // offset 0x001c6af4 extern int oldActionSet; // offset 0x001c6b94 extern int minmaxSelections[4][2]; // offset 0x001c6b98 extern struct BOTCH botch[38]; // offset 0x001c6bb8 extern int GameNum; // offset 0x001c6ce8 extern char *CityNames[4]; // offset 0x001c6cec extern struct CVECTOR scoreCol; // offset 0x001c6cfc extern struct CVECTOR otherCol; // offset 0x001c6d00 extern char *contNames[2]; // offset 0x001c6d04 extern short fePad; // offset 0x001cc5dc extern int currMission; // offset 0x001cc54c extern struct SPRT extraSprt; // offset 0x001cc5c8 extern struct POLY_FT3 extraDummy; // offset 0x001cbdb8 extern struct FE_FONT feFont; // offset 0x001cbdd8 extern struct DR_MOVE In; // offset 0x001cc550 extern struct DR_MOVE Out; // offset 0x001cc570 extern int idle_timer; // offset 0x001cbdb0 extern struct PSXSCREEN PsxScreens[42]; // offset 0x001c6d50 extern struct PSXSCREEN *pCurrScreen; // offset 0x001cc264 extern struct PSXBUTTON *pCurrButton; // offset 0x001cc548 extern struct PSXSCREEN *pNewScreen; // offset 0x001c6d48 extern struct PSXBUTTON *pNewButton; // offset 0x001cbcb8 extern struct POLY_FT4 ScreenPolys[8]; // offset 0x001cc368 extern struct POLY_FT4 BackgroundPolys[6]; // offset 0x001cbcc0 extern struct SPRT HighlightSprt; // offset 0x001cc590 extern struct POLY_FT3 HighlightDummy; // offset 0x001cc5a8 extern struct SPRT ScreenSprts[8]; // offset 0x001cc4a8 extern struct POLY_FT3 ScreenDummy[8]; // offset 0x001cc268 extern char ScreenTitle[128]; // offset 0x001cc1e0 extern int oldActionVal; // offset 0x001cc568 extern int oldSfxLevel; // offset 0x001cc260 extern int oldMusicLevel; // offset 0x001cc588 static struct POLY_FT4 cd_sprite; // offset 0x001c6d20 // 40 functions /* * Offset 0x1C0974, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1205..1361) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ SetVariable(int var /*$a0*/) { // line 1, offset 0x1c0974 int code; // $v1 int value; // $a2 } // line 157, offset 0x1c0c1c /* * Offset 0x1C0C1C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1371..1453) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ LoadFrontendScreens() { // line 2, offset 0x1c0c1c int iTpage; // $s0 int iNumScreens; // $t6 int i; // $t0 int j; // $a3 struct RECT rect; // stack offset -40 char *ptr; // $a2 } // line 83, offset 0x1c0f24 /* * Offset 0x1C0F24, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1461..1508) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ LoadBackgroundFile(char *name /*$s4*/) { // line 1, offset 0x1c0f24 int iTpage; // $s2 struct RECT rect; // stack offset -72 int p; // $s0 int pages[7]; // stack offset -64 } // line 48, offset 0x1c10f4 /* * Offset 0x1C10F4, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1516..1579) * Stack frame base $sp, size 0 */ void /*$ra*/ SetupBackgroundPolys() { // line 2, offset 0x1c10f4 int i; // $v1 int tpage; // $t3 } // line 64, offset 0x1c132c /* * Offset 0x1C132C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1588..1649) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SetupScreenSprts(struct PSXSCREEN *pScr /*$a0*/) { // line 1, offset 0x1c132c int tpage; // $a1 struct POLY_FT3 *null; // $v0 } // line 62, offset 0x1c147c /* * Offset 0x1C147C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1658..1759) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawScreen(struct PSXSCREEN *pScr /*stack 0*/) { // line 1, offset 0x1c147c int i; // $s1 char version_info[32]; // stack offset -88 int numBtnsToDraw; // stack offset -56 } // line 102, offset 0x1c18b4 /* * Offset 0x1C18E4, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1769..1846) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ DisplayOnScreenText() { // line 2, offset 0x1c18e4 int i; // $s0 char text[32]; // stack offset -64 { // line 26, offset 0x1c19dc { // line 28, offset 0x1c19e4 } // line 29, offset 0x1c19ec } // line 30, offset 0x1c19ec { // line 38, offset 0x1c1a4c int extraVal; // $t1 } // line 41, offset 0x1c1aac } // line 78, offset 0x1c1ad0 /* * Offset 0x1C1AD0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1855..1915) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ SetupExtraPoly(char *fileName /*$s5*/, int offset /*$s1*/, int offset2 /*$s0*/) { // line 1, offset 0x1c1ad0 int i; // $s0 int tpage; // $v1 struct RECT rect; // stack offset -40 } // line 61, offset 0x1c1cf4 /* * Offset 0x1C1CF4, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1941..1979) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ReInitScreens() { } /* * Offset 0x1C1E18, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 1991..2084) * Stack frame base $sp, size 80 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ NewSelection(short dir /*$s3*/) { // line 1, offset 0x1c1e18 struct RECT rect; // stack offset -48 struct PSXBUTTON *pNewB; // $s2 } // line 94, offset 0x1c227c /* * Offset 0x1C22A8, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2093..2231) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ HandleKeyPress() { // line 2, offset 0x1c22a8 { // line 19, offset 0x1c2340 int action; // $s0 { // line 48, offset 0x1c244c } // line 73, offset 0x1c2510 } // line 93, offset 0x1c2564 } // line 139, offset 0x1c2668 /* * Offset 0x1C2668, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2300..2416) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ PadChecks() { // line 2, offset 0x1c2668 int i; // $a2 int oldnum; // $s2 } // line 117, offset 0x1c296c /* * Offset 0x1C296C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2423..2587) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DoFrontEnd() { // line 2, offset 0x1c296c static unsigned char result[8]; // offset 0x0 } // line 165, offset 0x1c2c2c /* * Offset 0x1C2C2C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2630..2686) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ SetFEDrawMode() { // line 2, offset 0x1c2c2c struct DRAW_MODE *dm; // $s3 } // line 57, offset 0x1c2d90 /* * Offset 0x1C2D90, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2745..2808) * Stack frame base $sp, size 24 * Saved registers at offset -8: s0 s1 s2 s3 s4 */ int /*$ra*/ FEPrintString(char *string /*$t1*/, int x /*$t2*/, int y /*$s4*/, int justification /*$a3*/, int r /*stack 16*/, int g /*stack 20*/, int b /*stack 24*/, unsigned char r /*$t9*/, unsigned char g /*$t8*/, unsigned char b /*$t7*/) { // line 1, offset 0x1c2d90 struct FE_CHARDATA *pFontInfo; // $a0 struct SPRT *font; // $t0 unsigned char let; // $a0 int counter; // $t4 { // line 1, offset 0x1c2dec char *pString; // $a1 { // line 1, offset 0x1c2dec char let; // $v1 int w; // $a2 } // line 1, offset 0x1c2e38 } // line 1, offset 0x1c2e38 { // line 47, offset 0x1c2f28 int tpage; // $v1 } // line 47, offset 0x1c2f28 } // line 64, offset 0x1c2fd8 /* * Offset 0x1C2FD8, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2817..2879) * Stack frame base $sp, size 24 * Saved registers at offset -8: s0 s1 s2 s3 s4 */ int /*$ra*/ FEPrintStringSized(char *string /*$t2*/, int x /*$t1*/, int y /*$t7*/, int scale /*$a3*/, int transparent /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int transparent /*$s4*/, unsigned char r /*$s2*/, unsigned char g /*$s1*/, unsigned char b /*$s0*/) { // line 1, offset 0x1c2fd8 struct POLY_FT4 *font; // $t0 struct FE_CHARDATA *pFontInfo; // $a2 char let; // $v1 int tpage; // $v0 int w; // $t3 int h; // $t4 } // line 63, offset 0x1c31fc /* * Offset 0x1C31FC, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2894..2986) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ CentreScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C3430, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3029..3211) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ CarSelectScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c3430 int i; // $a0 struct RECT rect; // stack offset -32 { // line 116, offset 0x1c373c int lastVal; // $a3 { // line 1, offset 0x1c37bc { // line 1, offset 0x1c37bc struct RECT rect; // stack offset -24 } // line 1, offset 0x1c37bc } // line 1, offset 0x1c37bc } // line 1, offset 0x1c37bc { // line 135, offset 0x1c37d0 int lastVal; // $a3 { // line 1, offset 0x1c3858 { // line 1, offset 0x1c3858 struct RECT rect; // stack offset -24 } // line 1, offset 0x1c3858 } // line 1, offset 0x1c3858 } // line 1, offset 0x1c3858 } // line 183, offset 0x1c3a60 /* * Offset 0x1C3A60, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3256..3303) * Stack frame base $sp, size 0 */ int /*$ra*/ VibroOnOffScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C3B1C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3394..3624) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ MissionSelectScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c3b1c int i; // $a1 { // line 29, offset 0x1c3bdc int usedB; // $s2 int done; // $t0 int bP; // $a3 int bN; // $s5 int shift; // $a3 } // line 158, offset 0x1c40d8 } // line 231, offset 0x1c4338 /* * Offset 0x1C4338, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3632..3719) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ int /*$ra*/ MissionCityScreen(int bSetup /*$a0*/) { // line 6, offset 0x1c4338 { // line 71, offset 0x1c449c { // line 71, offset 0x1c449c struct RECT rect; // stack offset -16 } // line 71, offset 0x1c449c } // line 71, offset 0x1c449c { // line 77, offset 0x1c44c4 { // line 77, offset 0x1c44c4 struct RECT rect; // stack offset -16 } // line 77, offset 0x1c44c4 } // line 77, offset 0x1c44c4 } // line 88, offset 0x1c4600 /* * Offset 0x1C4600, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3728..3846) * Stack frame base $sp, size 64 * Saved registers at offset -8: ra */ int /*$ra*/ CutSceneSelectScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c4600 struct RENDER_ARGS renderArgs; // stack offset -48 int extraVal; // $a0 struct RECT rect; // stack offset -24 { // line 61, offset 0x1c4798 { // line 61, offset 0x1c4798 struct RECT rect; // stack offset -16 } // line 61, offset 0x1c4798 } // line 61, offset 0x1c4798 { // line 1, offset 0x1c4844 int offset; // $a1 { // line 1, offset 0x1c4844 struct RECT rect; // stack offset -16 } // line 1, offset 0x1c4844 } // line 1, offset 0x1c4844 { // line 80, offset 0x1c4900 { // line 80, offset 0x1c4900 struct RECT rect; // stack offset -16 } // line 80, offset 0x1c4900 } // line 80, offset 0x1c4900 { // line 85, offset 0x1c4940 { // line 85, offset 0x1c4940 struct RECT rect; // stack offset -16 } // line 85, offset 0x1c4940 } // line 85, offset 0x1c4940 } // line 119, offset 0x1c4b30 /* * Offset 0x1C4B30, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3855..3994) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ int /*$ra*/ CutSceneCitySelectScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c4b30 struct RECT rect; // stack offset -24 { // line 1, offset 0x1c4e6c { // line 1, offset 0x1c4e6c struct RECT rect; // stack offset -16 } // line 1, offset 0x1c4e6c } // line 1, offset 0x1c4e6c { // line 1, offset 0x1c4e6c { // line 1, offset 0x1c4e6c struct RECT rect; // stack offset -16 } // line 1, offset 0x1c4e6c } // line 1, offset 0x1c4e6c { // line 1, offset 0x1c4eb4 { // line 1, offset 0x1c4eb4 struct RECT rect; // stack offset -16 } // line 1, offset 0x1c4eb4 } // line 1, offset 0x1c4eb4 { // line 1, offset 0x1c4fac { // line 1, offset 0x1c4fac struct RECT rect; // stack offset -16 } // line 1, offset 0x1c50a0 } // line 1, offset 0x1c50a0 } // line 140, offset 0x1c50b0 /* * Offset 0x1C50B0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4005..4147) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ SetVolumeScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c50b0 int last; // $s2 char text[4]; // stack offset -48 int ypos[2]; // stack offset -40 struct RECT rect; // stack offset -32 { // line 43, offset 0x1c5254 { // line 43, offset 0x1c5254 struct DB *db_hold; // $a1 } // line 43, offset 0x1c5254 } // line 43, offset 0x1c5254 { // line 65, offset 0x1c5284 { // line 65, offset 0x1c5284 struct DB *db_hold; // $a1 } // line 65, offset 0x1c5284 } // line 65, offset 0x1c5284 { // line 92, offset 0x1c52cc { // line 92, offset 0x1c52cc struct DB *db_hold; // $a1 } // line 92, offset 0x1c52cc } // line 92, offset 0x1c52cc { // line 114, offset 0x1c5420 { // line 114, offset 0x1c5420 struct DB *db_hold; // $a1 } // line 117, offset 0x1c5530 } // line 117, offset 0x1c5530 } // line 143, offset 0x1c55f8 /* * Offset 0x1C55F8, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4165..4220) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DisplayScoreTable() { // line 2, offset 0x1c55f8 int offset; // $a2 int i; // $s4 char text[32]; // stack offset -80 struct SCORE_ENTRY *pSE; // stack offset -48 int min; // $v1 int frac; // $t0 } // line 56, offset 0x1c59a0 /* * Offset 0x1C59A0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4227..4313) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ ScoreScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C5B4C, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4434..4567) * Stack frame base $sp, size 120 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CheatScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c5b4c int numOpen; // $s5 int i; // $s1 int k; // $s6 int *uc; // $s2 unsigned char cheatOn[12]; // stack offset -104 int hackLookup1[4]; // stack offset -88 int hackLookup2[4]; // stack offset -72 { // line 39, offset 0x1c5c6c int evilRuss[4]; // stack offset -56 } // line 126, offset 0x1c606c } // line 134, offset 0x1c60a0 /* * Offset 0x1C60A0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4642..4655) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ GameNameScreen(int bSetup /*$a0*/) { // line 2, offset 0x1c60a0 int offset; // $s3 } // line 14, offset 0x1c61ac /* * Offset 0x1C61AC, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4671..4708) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ FEInitCdIcon() { // line 2, offset 0x1c61ac int i; // $a0 struct RECT dest; // stack offset -24 unsigned short *palette; // $a2 } // line 38, offset 0x1c62f8 /* * Offset 0x1C62F8, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4716..4734) * Stack frame base $sp, size 32 * Saved registers at offset -8: ra */ void /*$ra*/ FEDrawCDicon() { // line 2, offset 0x1c62f8 unsigned short *palette; // $a1 int temp; // $a2 int i; // $a0 struct RECT dest; // stack offset -16 } // line 19, offset 0x1c6378 /* * Offset 0x1C6378, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 2695..2715) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ EndFrame() { // line 2, offset 0x1c6378 struct DB *db_hold; // $a1 } // line 21, offset 0x1c6404 /* * Offset 0x1C6404, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 3220..3243) * Stack frame base $sp, size 0 */ int /*$ra*/ CopDiffLevelScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C64B0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4322..4335) * Stack frame base $sp, size 0 */ int /*$ra*/ SubtitlesOnOffScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C64FC, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4345..4363) * Stack frame base $sp, size 0 */ int /*$ra*/ CityCutOffScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C6548, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4378..4402) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ ControllerScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C6614, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4412..4425) * Stack frame base $sp, size 0 */ int /*$ra*/ MainScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C6654, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4575..4588) * Stack frame base $sp, size 0 */ int /*$ra*/ ImmunityOnOffScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C66A0, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4597..4610) * Stack frame base $sp, size 0 */ int /*$ra*/ InvincibleOnOffScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C66EC, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4619..4633) * Stack frame base $sp, size 0 */ int /*$ra*/ GamePlayScreen(int bSetup /*$a0*/) { } /* * Offset 0x1C6724, from D:\driver2\game\FRONTEND\FEMAIN.C (lines 4742..4756) * Stack frame base $sp, size 0 */ int /*$ra*/ CheatNumlayerSelect(int bSetup /*$a0*/) { } Source file(s) D:\driver2\game\MAIN.C+D:\driver2\game\MEMCARD\MAIN.C, object file memcard\obj\main.obj overlay id // 38 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct SLICE { char title[20]; // size=20, offset=0 char sliceIconRefs[3]; // size=3, offset=20 char *sliceData; // size=0, offset=24 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct SpuVolume { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct SpuVoiceAttr { unsigned long voice; // size=0, offset=0 unsigned long mask; // size=0, offset=4 struct SpuVolume volume; // size=4, offset=8 struct SpuVolume volmode; // size=4, offset=12 struct SpuVolume volumex; // size=4, offset=16 unsigned short pitch; // size=0, offset=20 unsigned short note; // size=0, offset=22 unsigned short sample_note; // size=0, offset=24 short envx; // size=0, offset=26 unsigned long addr; // size=0, offset=28 unsigned long loop_addr; // size=0, offset=32 long a_mode; // size=0, offset=36 long s_mode; // size=0, offset=40 long r_mode; // size=0, offset=44 unsigned short ar; // size=0, offset=48 unsigned short dr; // size=0, offset=50 unsigned short sr; // size=0, offset=52 unsigned short rr; // size=0, offset=54 unsigned short sl; // size=0, offset=56 unsigned short adsr1; // size=0, offset=58 unsigned short adsr2; // size=0, offset=60 }; struct SpuExtAttr { struct SpuVolume volume; // size=4, offset=0 long reverb; // size=0, offset=4 long mix; // size=0, offset=8 }; struct SpuStVoiceAttr { char status; // size=0, offset=0 char pad1; // size=0, offset=1 char pad2; // size=0, offset=2 char pad3; // size=0, offset=3 long last_size; // size=0, offset=4 unsigned long buf_addr; // size=0, offset=8 unsigned long data_addr; // size=0, offset=12 }; struct MAPPING { unsigned short button_lookup[16]; // size=32, offset=0 unsigned short swap_analog; // size=0, offset=32 unsigned short reserved1; // size=0, offset=34 }; struct SAVED_PLAYER_POS { unsigned short type; // size=0, offset=0 short direction; // size=0, offset=2 long vx; // size=0, offset=4 long vy; // size=0, offset=8 long vz; // size=0, offset=12 unsigned long felony; // size=0, offset=16 unsigned short totaldamage; // size=0, offset=20 short damage[6]; // size=12, offset=22 }; struct SAVED_CAR_POS { char active; // size=0, offset=0 unsigned char model; // size=0, offset=1 unsigned char palette; // size=0, offset=2 unsigned short totaldamage; // size=0, offset=4 unsigned short damage[6]; // size=12, offset=6 short direction; // size=0, offset=18 long vx; // size=0, offset=20 long vy; // size=0, offset=24 long vz; // size=0, offset=28 }; struct MISSION_DATA { struct SAVED_PLAYER_POS PlayerPos; // size=36, offset=0 struct SAVED_CAR_POS CarPos[6]; // size=192, offset=36 }; struct SCORE_ENTRY { int time; // size=0, offset=0 short items; // size=0, offset=4 char name[6]; // size=6, offset=6 }; struct SCORE_TABLES { struct SCORE_ENTRY GetawayTable[4][2][5]; // size=480, offset=0 struct SCORE_ENTRY GateRaceTable[4][2][5]; // size=480, offset=480 struct SCORE_ENTRY CheckpointTable[4][2][5]; // size=480, offset=960 struct SCORE_ENTRY TrailblazerTable[4][2][5]; // size=480, offset=1440 struct SCORE_ENTRY SurvivalTable[4][1][5]; // size=240, offset=1920 }; struct ACTIVE_CHEATS { unsigned char cheat1 : 1; // offset=0.0 unsigned char cheat2 : 1; // offset=0.1 unsigned char cheat3 : 1; // offset=0.2 unsigned char cheat4 : 1; // offset=0.3 unsigned char cheat5 : 1; // offset=0.4 unsigned char cheat6 : 1; // offset=0.5 unsigned char cheat7 : 1; // offset=0.6 unsigned char cheat8 : 1; // offset=0.7 unsigned char cheat9 : 1; // offset=1.0 unsigned char cheat10 : 1; // offset=1.1 unsigned char cheat11 : 1; // offset=1.2 unsigned char reserved1 : 5; // offset=1.3 unsigned char reserved2; // size=0, offset=2 unsigned char reserved3; // size=0, offset=3 }; struct REPLAY_SAVE_HEADER { unsigned long magic; // size=0, offset=0 unsigned char GameLevel; // size=0, offset=4 unsigned char GameType; // size=0, offset=5 unsigned char reserved1; // size=0, offset=6 unsigned char NumReplayStreams; // size=0, offset=7 unsigned char NumPlayers; // size=0, offset=8 unsigned char RandomChase; // size=0, offset=9 unsigned char CutsceneEvent; // size=0, offset=10 unsigned char gCopDifficultyLevel; // size=0, offset=11 struct MISSION_DATA SavedData; // size=228, offset=12 struct ACTIVE_CHEATS ActiveCheats; // size=4, offset=240 int wantedCar[2]; // size=8, offset=244 int MissionNumber; // size=0, offset=252 int HaveStoredData; // size=0, offset=256 int reserved2[6]; // size=24, offset=260 }; struct GAME_SAVE_HEADER { unsigned long magic; // size=0, offset=0 unsigned char gMissionLadderPos; // size=0, offset=4 unsigned char pad1; // size=0, offset=5 unsigned char pad2; // size=0, offset=6 unsigned char pad3; // size=0, offset=7 struct MISSION_DATA SavedData; // size=228, offset=8 int reserved[8]; // size=32, offset=236 }; struct CONFIG_SAVE_HEADER { unsigned long magic; // size=0, offset=0 int gMasterVolume; // size=0, offset=4 int gMusicVolume; // size=0, offset=8 int gSoundMode; // size=0, offset=12 int gVibration; // size=0, offset=16 int gCopDifficultyLevel; // size=0, offset=20 int gFurthestMission; // size=0, offset=24 struct MAPPING PadMapping[2]; // size=72, offset=28 struct SCORE_TABLES ScoreTables; // size=2160, offset=100 int PALAdjustX; // size=0, offset=2260 int PALAdjustY; // size=0, offset=2264 int NTSCAdjustX; // size=0, offset=2268 int NTSCAdjustY; // size=0, offset=2272 int gSubtitles; // size=0, offset=2276 struct ACTIVE_CHEATS AvailableCheats; // size=4, offset=2280 int reserved[6]; // size=24, offset=2284 }; // 67 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct FILEFORMAT FILEFORMAT; typedef struct SLICE SLICE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct SpuVolume SpuVolume; typedef struct SpuVoiceAttr SpuVoiceAttr; typedef struct SpuExtAttr SpuExtAttr; typedef struct SpuStVoiceAttr SpuStVoiceAttr; typedef struct MAPPING MAPPING; typedef struct SAVED_PLAYER_POS SAVED_PLAYER_POS; typedef struct SAVED_CAR_POS SAVED_CAR_POS; typedef struct MISSION_DATA MISSION_DATA; typedef struct SCORE_ENTRY SCORE_ENTRY; typedef struct SCORE_TABLES SCORE_TABLES; typedef struct ACTIVE_CHEATS ACTIVE_CHEATS; typedef struct REPLAY_SAVE_HEADER REPLAY_SAVE_HEADER; typedef struct GAME_SAVE_HEADER GAME_SAVE_HEADER; typedef struct CONFIG_SAVE_HEADER CONFIG_SAVE_HEADER; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef void *SpuIRQCallbackProc(); typedef void *SpuTransferCallbackProc(); typedef void *SpuStCallbackProc(); typedef unsigned char uchar; typedef char schar; typedef unsigned int uint; typedef void envsoundfunc(); typedef unsigned long wchar_t; typedef struct PADRAW *LPPADRAW; typedef struct MAPPING *LPMAPPING; typedef struct PAD *LPPAD; // 0 labels // 9 external declarations static struct FILEFORMAT fileFormat; // offset 0x000a2690 static struct SLICE slice; // offset 0x000a27e4 extern unsigned short gMemCardMode; // offset 0x000ab394 static char *MCbuffer128K; // offset 0x000ab37c static char *MClanguageBuffer; // offset 0x000ab380 static char *MCsaveBuffer; // offset 0x000ab384 static char *MCfilename; // offset 0x000ab388 static int MCoptions; // offset 0x000ab38c static unsigned long MCsp; // offset 0x000ab390 // 13 functions /* * Offset 0x872F0, from D:\driver2\game\MEMCARD\MAIN.C (lines 120..267) * Stack frame base $fp, size 56 * Saved registers at offset -8: s0 fp ra */ int /*$ra*/ CallMemoryCard(int flags /*stack 0*/, int ingame /*stack 4*/) { // line 3, offset 0x8730c struct REPLAY_SAVE_HEADER *rheader; // stack offset -40 struct GAME_SAVE_HEADER *gheader; // stack offset -36 struct CONFIG_SAVE_HEADER *cheader; // stack offset -32 char *pt; // stack offset -28 int ret; // stack offset -24 int size; // stack offset -20 { // line 21, offset 0x87368 } // line 23, offset 0x8737c { // line 129, offset 0x8783c } // line 135, offset 0x87868 } // line 148, offset 0x878b8 /* * Offset 0x878D4, from D:\driver2\game\MEMCARD\MAIN.C (lines 270..272) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_SelectSound() { } /* * Offset 0x87908, from D:\driver2\game\MEMCARD\MAIN.C (lines 275..277) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_ConfirmSound() { } /* * Offset 0x8793C, from D:\driver2\game\MEMCARD\MAIN.C (lines 280..282) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_CancelSound() { } /* * Offset 0x87970, from D:\driver2\game\MEMCARD\MAIN.C (lines 285..287) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_ErrorSound() { } /* * Offset 0x879A4, from D:\driver2\game\MEMCARD\MAIN.C (lines 290..293) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_InitControllerLibrary(char *a /*stack 0*/, int b /*stack 4*/, char *c /*stack 8*/, int d /*stack 12*/) { } /* * Offset 0x879F4, from D:\driver2\game\MEMCARD\MAIN.C (lines 296..299) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_DeInitControllerLibrary() { } /* * Offset 0x87A34, from D:\driver2\game\MEMCARD\MAIN.C (lines 302..304) * Stack frame base $fp, size 24 * Saved registers at offset -4: fp ra */ void /*$ra*/ libcman_ReadControllers() { } /* * Offset 0x87A64, from D:\driver2\game\MEMCARD\MAIN.C (lines 371..441) * Stack frame base $fp, size 88 * Saved registers at offset -4: fp ra */ int /*$ra*/ DoMemoryCard() { // line 2, offset 0x87a74 struct RECT rect; // stack offset -56 char filename[32]; // stack offset -48 char l; // stack offset -16 int options; // stack offset -12 static int ret; // offset 0x0 } // line 71, offset 0x87ccc /* * Offset 0x87CE4, from D:\driver2\game\MEMCARD\MAIN.C (lines 444..459) * Stack frame base $fp, size 32 * Saved registers at offset -4: fp ra */ char * /*$ra*/ LoadMemCardOverlay() { // line 2, offset 0x87cf4 char *pt; // stack offset -16 int ovsize; // stack offset -12 } // line 16, offset 0x87d50 /* * Offset 0x87D68, from D:\driver2\game\MEMCARD\MAIN.C (lines 462..469) * Stack frame base $fp, size 40 * Saved registers at offset -4: fp ra */ void /*$ra*/ StorePermanentTPage() { // line 2, offset 0x87d78 struct RECT rect; // stack offset -24 unsigned long *buffer; // stack offset -16 } // line 8, offset 0x87dc4 /* * Offset 0x87DDC, from D:\driver2\game\MEMCARD\MAIN.C (lines 472..479) * Stack frame base $fp, size 40 * Saved registers at offset -4: fp ra */ void /*$ra*/ RestorePermanentTPage() { // line 2, offset 0x87dec struct RECT rect; // stack offset -24 unsigned long *buffer; // stack offset -16 } // line 8, offset 0x87e38 /* * Offset 0x87E50, from D:\driver2\game\MEMCARD\MAIN.C (lines 482..505) * Stack frame base $fp, size 32 * Saved registers at offset -4: fp ra */ void /*$ra*/ PutCorrectIcon(int which /*stack 0*/) { // line 2, offset 0x87e64 unsigned char *clut; // stack offset -16 unsigned char *icon; // stack offset -12 } // line 24, offset 0x87f38 Source file(s) D:\DRIVER2\GAME\MEMCARD\MAINASM.S, object file memcard\obj\mainasm.obj overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) D:\driver2\game\MEMCARD\SLOT.CPP+D:\driver2\game\SLOT.CPP, object file memcard\obj\slot.obj overlay id // 47 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct MouseData { unsigned short buttons; // size=0, offset=0 char xOffset; // size=0, offset=2 char yOffset; // size=0, offset=3 }; struct NegconData { unsigned short digitalButtons; // size=0, offset=0 char centralTwist; // size=0, offset=2 char buttonI; // size=0, offset=3 char buttonII; // size=0, offset=4 char topLeft; // size=0, offset=5 }; struct AnalogjoyData { unsigned short digitalButtons; // size=0, offset=0 unsigned char right_x; // size=0, offset=2 unsigned char right_y; // size=0, offset=3 unsigned char left_x; // size=0, offset=4 unsigned char left_y; // size=0, offset=5 }; union ._122 { unsigned short pad; // size=0, offset=0 struct NegconData negcon; // size=6, offset=0 struct MouseData mouse; // size=4, offset=0 }; struct TapCtrllerData { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._122 data; // size=6, offset=2 }; struct MultiTapData { struct TapCtrllerData ctrllers[4]; // size=32, offset=0 }; union ._125 { unsigned short pad; // size=0, offset=0 struct MouseData mouse; // size=4, offset=0 struct NegconData negcon; // size=6, offset=0 struct AnalogjoyData joystick; // size=6, offset=0 struct MultiTapData tap; // size=32, offset=0 }; struct _CARD { char Magic[2]; // size=2, offset=0 char Type; // size=0, offset=2 char BlockEntry; // size=0, offset=3 char Title[64]; // size=64, offset=4 char reserve[28]; // size=28, offset=68 char Clut[32]; // size=32, offset=96 char Icon[3][128]; // size=384, offset=128 }; struct TIMSTRUCT { unsigned short clut; // size=0, offset=0 unsigned short tpage; // size=0, offset=2 unsigned short x; // size=0, offset=4 unsigned short y; // size=0, offset=6 unsigned short w; // size=0, offset=8 unsigned short h; // size=0, offset=10 }; struct FONTTABSTRUCT { struct TIMSTRUCT timStruct; // size=12, offset=0 short width; // size=0, offset=12 short height; // size=0, offset=14 }; struct KANJILOOKUP { short sjisCode; // size=0, offset=0 unsigned int used; // size=0, offset=4 struct TIMSTRUCT timStruct; // size=12, offset=8 }; struct SLICEHEADER { int size; // size=0, offset=0 char title[20]; // size=20, offset=4 char iconRef[3]; // size=3, offset=24 char used; // size=0, offset=27 short checksum; // size=0, offset=28 short pad; // size=0, offset=30 }; struct BLOCKINFO { unsigned int infoOK; // size=0, offset=0 int id; // size=0, offset=4 int size; // size=0, offset=8 int freeBytes; // size=0, offset=12 struct DIRENTRY dirEntry; // size=40, offset=16 struct _CARD header; // size=512, offset=56 struct TIMSTRUCT iconTim; // size=12, offset=568 unsigned int gremBlock; // size=0, offset=580 int sliceCount; // size=0, offset=584 int usedSlices; // size=0, offset=588 struct SLICEHEADER sliceHeader[16]; // size=512, offset=592 }; struct CARDINFO { int usedBlocks; // size=0, offset=0 struct BLOCKINFO blockInfo[15]; // size=16560, offset=4 unsigned int dirOK; // size=0, offset=16564 unsigned int infoOK; // size=0, offset=16568 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct SLICE { char title[20]; // size=20, offset=0 char sliceIconRefs[3]; // size=3, offset=20 char *sliceData; // size=0, offset=24 }; struct MCSLOT { struct CARDINFO m_cardInfo; // size=16572, offset=0 int m_port; // size=0, offset=16572 int m_card; // size=0, offset=16576 int m_chan; // size=0, offset=16580 char m_device[6]; // size=6, offset=16584 int m_blocksRead; // size=0, offset=16592 int m_readFilePtr; // size=0, offset=16596 int m_readBytes; // size=0, offset=16600 int m_fromReadBytes; // size=0, offset=16604 int m_toReadBytes; // size=0, offset=16608 int m_writeFilePtr; // size=0, offset=16612 int m_writeBytes; // size=0, offset=16616 int m_fromWriteBytes; // size=0, offset=16620 int m_toWriteBytes; // size=0, offset=16624 int m_iconX; // size=0, offset=16628 int m_iconY; // size=0, offset=16632 int m_clutX; // size=0, offset=16636 int m_clutY; // size=0, offset=16640 unsigned int m_doCheckSum; // size=0, offset=16644 short m_checkSumWork; // size=0, offset=16648 short m_checkSum; // size=0, offset=16650 }; struct PAD { struct MCSLOT m_mcSlot0; // size=16652, offset=0 struct MCSLOT m_mcSlot1; // size=16652, offset=16652 int m_mouseX; // size=0, offset=33304 int m_mouseY; // size=0, offset=33308 int m_scanPort; // size=0, offset=33312 unsigned int m_cardChanged[2]; // size=8, offset=33316 unsigned int m_bControllerChanged; // size=0, offset=33324 unsigned int m_bMouseTested; // size=0, offset=33328 unsigned int m_bUsingMouse; // size=0, offset=33332 unsigned int m_bUsingNegCon; // size=0, offset=33336 unsigned int m_bControllerInserted; // size=0, offset=33340 int m_nLastControllerType; // size=0, offset=33344 char slotString[3]; // size=3, offset=33348 struct MCSLOT *m_slotObjPtrs[2]; // size=8, offset=33352 int m_slotObjPorts[2]; // size=8, offset=33360 int m_currSlotObj; // size=0, offset=33368 int m_portStatus[8]; // size=32, offset=33372 }; // 67 typedefs typedef struct TCB TCB; typedef struct EXEC EXEC; typedef struct DIRENTRY DIRENTRY; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct SPRT SPRT; typedef struct DR_AREA DR_AREA; typedef struct DR_MOVE DR_MOVE; typedef struct DR_TPAGE DR_TPAGE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct MouseData MouseData; typedef struct NegconData NegconData; typedef struct AnalogjoyData AnalogjoyData; typedef struct TapCtrllerData TapCtrllerData; typedef struct MultiTapData MultiTapData; typedef struct _CARD _CARD; typedef struct TIMSTRUCT TIMSTRUCT; typedef struct FONTTABSTRUCT FONTTABSTRUCT; typedef struct KANJILOOKUP KANJILOOKUP; typedef struct SLICEHEADER SLICEHEADER; typedef struct BLOCKINFO BLOCKINFO; typedef struct CARDINFO CARDINFO; typedef struct FILEFORMAT FILEFORMAT; typedef struct SLICE SLICE; typedef struct MCSLOT MCSLOT; typedef struct PAD PAD; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned short PadData; // 0 labels // 1 external declarations extern struct BLOCKINFO _6MCSLOT.s_copyBlockInfo; // offset 0x0010ee38 // 43 functions /* * Offset 0xF3644, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 99..137) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ card_start__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf3644 } // line 39, offset 0xf3828 /* * Offset 0xF3828, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 383..406) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ unsigned int /*$ra*/ CardRemoved__6MCSLOT(struct MCSLOT *this /*$s6*/) { // line 1, offset 0xf3828 int card_status; // $v0 { // line 1, offset 0xf3828 struct MCSLOT *this; // $s6 int timeout; // $s0 { // line 1, offset 0xf3828 { // line 1, offset 0xf387c { // line 1, offset 0xf387c } // line 1, offset 0xf3890 { // line 1, offset 0xf3890 } // line 1, offset 0xf38a4 { // line 1, offset 0xf38a4 } // line 1, offset 0xf38b8 { // line 1, offset 0xf38b8 } // line 1, offset 0xf38cc } // line 1, offset 0xf38cc } // line 1, offset 0xf38d4 } // line 1, offset 0xf38d4 { // line 11, offset 0xf38d4 { // line 11, offset 0xf38e4 { // line 11, offset 0xf38e4 struct MCSLOT *this; // $s6 { // line 11, offset 0xf38e4 } // line 11, offset 0xf38e4 } // line 11, offset 0xf38e4 } // line 24, offset 0xf3924 } // line 24, offset 0xf3924 { // line 24, offset 0xf3924 struct MCSLOT *this; // $s6 { // line 24, offset 0xf3924 } // line 24, offset 0xf3924 } // line 24, offset 0xf3924 } // line 24, offset 0xf3994 /* * Offset 0xF3994, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 418..441) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ unsigned int /*$ra*/ CardInserted__6MCSLOT(struct MCSLOT *this /*$s6*/) { // line 1, offset 0xf3994 int card_status; // $v1 { // line 1, offset 0xf3994 struct MCSLOT *this; // $s6 int timeout; // $s0 { // line 1, offset 0xf3994 { // line 1, offset 0xf39e8 { // line 1, offset 0xf39e8 } // line 1, offset 0xf39fc { // line 1, offset 0xf39fc } // line 1, offset 0xf3a10 { // line 1, offset 0xf3a10 } // line 1, offset 0xf3a24 { // line 1, offset 0xf3a24 } // line 1, offset 0xf3a38 } // line 1, offset 0xf3a38 } // line 1, offset 0xf3a40 } // line 1, offset 0xf3a40 { // line 11, offset 0xf3a40 { // line 12, offset 0xf3a54 { // line 1, offset 0xf3a54 struct MCSLOT *this; // $s6 { // line 1, offset 0xf3a54 } // line 1, offset 0xf3a54 } // line 1, offset 0xf3a54 } // line 19, offset 0xf3aa8 } // line 19, offset 0xf3aa8 { // line 1, offset 0xf3aa8 struct MCSLOT *this; // $s6 { // line 1, offset 0xf3aa8 } // line 1, offset 0xf3aa8 } // line 1, offset 0xf3aa8 } // line 24, offset 0xf3b04 /* * Offset 0xF3B04, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 489..508) * Stack frame base $sp, size 176 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ int /*$ra*/ FormatCard__6MCSLOT(struct MCSLOT *this /*$s2*/) { // line 1, offset 0xf3b04 char buffer[128]; // stack offset -160 { // line 1, offset 0xf3b04 struct MCSLOT *this; // $s2 { // line 1, offset 0xf3b04 } // line 1, offset 0xf3b04 } // line 1, offset 0xf3b04 { // line 1, offset 0xf3b04 { // line 1, offset 0xf3b04 struct MCSLOT *this; // $s2 int timeout; // $s3 { // line 1, offset 0xf3b04 { // line 1, offset 0xf3bb4 { // line 1, offset 0xf3bb4 } // line 1, offset 0xf3bc8 { // line 1, offset 0xf3bc8 } // line 1, offset 0xf3bdc { // line 1, offset 0xf3bdc } // line 1, offset 0xf3bf0 { // line 1, offset 0xf3bf0 } // line 1, offset 0xf3c04 } // line 1, offset 0xf3c04 } // line 1, offset 0xf3c0c } // line 1, offset 0xf3c0c } // line 15, offset 0xf3c28 } // line 20, offset 0xf3c74 /* * Offset 0xF3C74, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 520..570) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ ReadCardDir__6MCSLOT(struct MCSLOT *this /*$s3*/) { // line 1, offset 0xf3c74 long size; // $a1 char path[7]; // stack offset -48 struct DIRENTRY *entryPtr; // $s0 { // line 17, offset 0xf3cf4 } // line 40, offset 0xf3d6c } // line 49, offset 0xf3d8c /* * Offset 0xF3DB8, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 618..699) * Stack frame base $sp, size 96 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ ReadCardInfo__6MCSLOTPc(struct MCSLOT *this /*$s1*/, char *managerFilename /*$s0*/) { // line 1, offset 0xf3db8 int i; // $a2 int n; // $s0 char filename[32]; // stack offset -64 int filePtr; // $s2 { // line 11, offset 0xf3df4 { // line 12, offset 0xf3e0c { // line 13, offset 0xf3e0c { // line 14, offset 0xf3e38 { // line 16, offset 0xf3e38 { // line 21, offset 0xf3e70 } // line 24, offset 0xf3eb0 } // line 26, offset 0xf3eb0 { // line 30, offset 0xf3eb0 { // line 31, offset 0xf3ed4 { // line 32, offset 0xf3ed4 { // line 35, offset 0xf3f4c { // line 37, offset 0xf3f4c } // line 37, offset 0xf3f88 } // line 54, offset 0xf4060 } // line 55, offset 0xf4094 } // line 57, offset 0xf4094 } // line 61, offset 0xf40e4 } // line 68, offset 0xf4130 } // line 68, offset 0xf4130 } // line 73, offset 0xf4130 } // line 79, offset 0xf4168 } // line 82, offset 0xf41a0 /* * Offset 0xF41A0, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 912..939) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ ReadSlice__6MCSLOTiiP5SLICEP10FILEFORMAT(struct MCSLOT *this /*$t0*/, int block /*$a1*/, int slice /*$a2*/, struct SLICE *slicePtr /*$a3*/, struct FILEFORMAT *fileFormatPtr /*stack 16*/, struct FILEFORMAT *fileFormatPtr /*$t5*/) { // line 1, offset 0xf41a0 } // line 28, offset 0xf43a0 /* * Offset 0xF43A0, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 950..1116) * Stack frame base $sp, size 216 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ read_block__6MCSLOTiPcR9BLOCKINFO(struct MCSLOT *this /*$s1*/, int block /*$a1*/, char *bufferPtr /*$fp*/, struct BLOCKINFO *blockInfo /*$s7*/) { // line 1, offset 0xf43a0 int n; // $s5 char verifyBuffer[128]; // stack offset -200 char filename[32]; // stack offset -72 long bytesRead; // $v0 unsigned int verifyFailed; // $v0 int retry; // $s0 { // line 1, offset 0xf43a0 { // line 12, offset 0xf43e4 } // line 39, offset 0xf44a0 } // line 39, offset 0xf44a0 { // line 44, offset 0xf44a0 { // line 45, offset 0xf44b8 { // line 48, offset 0xf44b8 { // line 48, offset 0xf44c0 { // line 50, offset 0xf44c0 { // line 55, offset 0xf44ec { // line 58, offset 0xf44f4 { // line 61, offset 0xf44f4 { // line 62, offset 0xf44f4 { // line 67, offset 0xf4524 } // line 67, offset 0xf4524 } // line 67, offset 0xf4524 } // line 67, offset 0xf4524 { // line 85, offset 0xf4530 { // line 86, offset 0xf4530 { // line 91, offset 0xf455c } // line 91, offset 0xf455c } // line 91, offset 0xf455c } // line 91, offset 0xf455c { // line 106, offset 0xf4564 { // line 109, offset 0xf4584 } // line 109, offset 0xf4584 } // line 109, offset 0xf4584 } // line 109, offset 0xf4584 } // line 121, offset 0xf458c } // line 121, offset 0xf458c } // line 126, offset 0xf458c } // line 127, offset 0xf45b4 } // line 130, offset 0xf45dc { // line 132, offset 0xf45dc { // line 134, offset 0xf45dc { // line 142, offset 0xf4608 { // line 143, offset 0xf4608 int check; // $a1 } // line 146, offset 0xf4640 } // line 158, offset 0xf4678 } // line 158, offset 0xf4678 } // line 167, offset 0xf46b4 } // line 167, offset 0xf46b4 } // line 167, offset 0xf46b4 /* * Offset 0xF46B4, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1261..1464) * Stack frame base $sp, size 216 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ write_block__6MCSLOTR9BLOCKINFOPc(struct MCSLOT *this /*$s1*/, struct BLOCKINFO *blockInfo /*$s7*/, char *bufferPtr /*$fp*/) { // line 1, offset 0xf46b4 int n; // $s5 char verifyBuffer[128]; // stack offset -200 char filename[32]; // stack offset -72 int filePtr; // $v0 long bytes; // $v0 unsigned int verifyFailed; // $v0 int retry; // $s0 { // line 1, offset 0xf46b4 { // line 12, offset 0xf46f8 } // line 47, offset 0xf478c } // line 47, offset 0xf478c { // line 51, offset 0xf478c { // line 54, offset 0xf47c0 { // line 56, offset 0xf47c0 { // line 56, offset 0xf47cc { // line 58, offset 0xf47cc { // line 64, offset 0xf4814 { // line 66, offset 0xf481c { // line 69, offset 0xf481c { // line 71, offset 0xf481c { // line 76, offset 0xf484c } // line 76, offset 0xf484c } // line 76, offset 0xf484c } // line 76, offset 0xf484c { // line 94, offset 0xf4858 { // line 95, offset 0xf4858 { // line 100, offset 0xf4884 } // line 100, offset 0xf4884 } // line 100, offset 0xf4884 } // line 100, offset 0xf4884 { // line 117, offset 0xf488c { // line 120, offset 0xf48ac } // line 120, offset 0xf48ac } // line 120, offset 0xf48ac } // line 120, offset 0xf48ac } // line 134, offset 0xf48b4 } // line 134, offset 0xf48b4 } // line 139, offset 0xf48b4 } // line 140, offset 0xf48dc } // line 143, offset 0xf4924 { // line 145, offset 0xf4924 { // line 148, offset 0xf4924 struct MCSLOT *this; // $s1 { // line 148, offset 0xf4924 { // line 148, offset 0xf4924 int n; // $a1 } // line 150, offset 0xf496c { // line 1, offset 0xf496c { // line 1, offset 0xf497c } // line 1, offset 0xf498c } // line 1, offset 0xf498c { // line 1, offset 0xf498c { // line 1, offset 0xf499c } // line 1, offset 0xf49ac } // line 1, offset 0xf49ac } // line 1, offset 0xf49ac } // line 1, offset 0xf49ac } // line 204, offset 0xf49e8 } // line 204, offset 0xf49e8 } // line 204, offset 0xf49e8 /* * Offset 0xF49E8, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1473..1629) * Stack frame base $sp, size 704 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ CreateBlock__6MCSLOTP10FILEFORMATP5SLICE(struct MCSLOT *this /*$s5*/, struct FILEFORMAT *fileFormatPtr /*$s4*/, struct SLICE *slicePtr /*stack 8*/) { // line 1, offset 0xf49e8 int i; // $a1 int n; // $s0 struct _CARD header; // stack offset -680 char filename[32]; // stack offset -168 int filePtr; // $s1 int bytes; // $s3 int blockNum; // $fp char charBuffer[64]; // stack offset -136 struct SLICEHEADER emptySlice; // stack offset -72 char *charPtr; // $a2 { // line 94, offset 0xf4d98 { // line 97, offset 0xf4db0 } // line 104, offset 0xf4ddc } // line 107, offset 0xf4ddc { // line 111, offset 0xf4ddc { // line 112, offset 0xf4df0 { // line 113, offset 0xf4df0 { // line 121, offset 0xf4e28 } // line 141, offset 0xf4f28 } // line 142, offset 0xf4f4c } // line 147, offset 0xf4f74 } // line 147, offset 0xf4f74 { // line 152, offset 0xf4f74 struct MCSLOT *this; // $s5 { // line 152, offset 0xf4f74 { // line 152, offset 0xf4f74 int n; // $a1 } // line 152, offset 0xf4fb8 { // line 1, offset 0xf4fb8 { // line 1, offset 0xf4fc8 } // line 1, offset 0xf4fd8 } // line 1, offset 0xf4fd8 { // line 1, offset 0xf4fd8 { // line 1, offset 0xf4fe8 } // line 1, offset 0xf4ff8 } // line 1, offset 0xf4ff8 } // line 1, offset 0xf4ff8 } // line 1, offset 0xf4ff8 } // line 157, offset 0xf502c /* * Offset 0xF502C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1640..1667) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ DeleteBlock__6MCSLOTi(struct MCSLOT *this /*$s1*/, int block /*$a1*/) { // line 1, offset 0xf502c char filename[32]; // stack offset -48 { // line 1, offset 0xf502c { // line 7, offset 0xf506c { // line 9, offset 0xf506c struct MCSLOT *this; // $s1 { // line 9, offset 0xf506c { // line 9, offset 0xf506c int n; // $a1 } // line 11, offset 0xf50cc { // line 1, offset 0xf50cc { // line 1, offset 0xf50dc } // line 1, offset 0xf50ec } // line 1, offset 0xf50ec { // line 1, offset 0xf50ec { // line 1, offset 0xf50fc } // line 1, offset 0xf510c } // line 1, offset 0xf510c } // line 1, offset 0xf510c } // line 1, offset 0xf510c } // line 26, offset 0xf5114 } // line 28, offset 0xf512c } // line 28, offset 0xf512c /* * Offset 0xF512C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2067..2115) * Stack frame base $sp, size 0 */ void /*$ra*/ Ascii2ShiftJis__FPsPc(short *dest /*$a0*/, char *source /*$a1*/) { // line 1, offset 0xf512c char a; // $a2 short scode; // $v1 } // line 49, offset 0xf523c /* * Offset 0xF523C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 58..86) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ struct MCSLOT * /*$ra*/ __6MCSLOTiiiiiiPc(struct MCSLOT *this /*$s0*/, int port /*$a1*/, int card /*$a2*/, int iconX /*$a3*/, int iconY /*stack 16*/, int clutX /*stack 20*/, int clutY /*stack 24*/, char *bufferPtr /*stack 28*/, int iconY /*$a1*/, int clutX /*$a2*/, int clutY /*$t1*/, char *bufferPtr /*$s1*/) { // line 1, offset 0xf523c } // line 29, offset 0xf52d8 /* * Offset 0xF52F0, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 159..169) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ _._6MCSLOT(struct MCSLOT *this /*$s0*/, int __in_chrg /*$s1*/) { // line 1, offset 0xf52f0 } // line 11, offset 0xf5324 /* * Offset 0xF534C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 193..217) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ card_stop__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf534c } // line 25, offset 0xf5474 /* * Offset 0xF5474, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 235..298) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ CheckCard__6MCSLOT(struct MCSLOT *this /*$s0*/) { // line 1, offset 0xf5474 int card_status; // $v1 { // line 1, offset 0xf5474 { // line 13, offset 0xf54c0 } // line 64, offset 0xf555c } // line 64, offset 0xf555c } // line 64, offset 0xf555c /* * Offset 0xF555C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 311..326) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ card_event__6MCSLOTi(struct MCSLOT *this /*$a0*/, int timeout /*$s0*/) { // line 1, offset 0xf555c { // line 5, offset 0xf5584 { // line 7, offset 0xf5584 } // line 7, offset 0xf55a4 { // line 9, offset 0xf55a4 } // line 9, offset 0xf55c0 { // line 11, offset 0xf55c0 } // line 11, offset 0xf55d4 { // line 13, offset 0xf55d4 } // line 13, offset 0xf55f0 } // line 13, offset 0xf55f0 } // line 16, offset 0xf5610 /* * Offset 0xF5610, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 332..336) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ clear_event__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf5610 } // line 5, offset 0xf5668 /* * Offset 0xF5668, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 579..601) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ invalidate_info__6MCSLOT(struct MCSLOT *this /*$s0*/) { // line 1, offset 0xf5668 { // line 1, offset 0xf5668 int n; // $v1 } // line 11, offset 0xf56a8 { // line 14, offset 0xf56a8 { // line 15, offset 0xf56b8 } // line 17, offset 0xf56c8 } // line 17, offset 0xf56c8 { // line 20, offset 0xf56c8 { // line 21, offset 0xf56d8 } // line 23, offset 0xf56e8 } // line 23, offset 0xf56e8 } // line 23, offset 0xf56e8 /* * Offset 0xF56FC, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 712..753) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ void /*$ra*/ download_icon__6MCSLOTR9BLOCKINFOiiiii(struct MCSLOT *this /*$a0*/, struct BLOCKINFO *blockInfo /*$s2*/, int iconX /*$s3*/, int iconY /*$s4*/, int clutX /*stack 16*/, int clutY /*stack 20*/, int icon /*stack 24*/, int clutX /*$v1*/, int clutY /*$v0*/, int icon /*$s1*/) { // line 1, offset 0xf56fc struct RECT rect; // stack offset -32 struct TIMSTRUCT *timPtr; // $s0 { // line 1, offset 0xf56fc int n; // $a0 } // line 22, offset 0xf5790 } // line 42, offset 0xf5860 /* * Offset 0xF5860, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 764..778) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ CopyBlock__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/) { // line 1, offset 0xf5860 } // line 15, offset 0xf5918 /* * Offset 0xF5918, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1130..1136) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ PasteBlock__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf5918 } // line 7, offset 0xf5968 /* * Offset 0xF5968, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1146..1163) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ ReadHeader__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/) { // line 1, offset 0xf5968 } // line 18, offset 0xf5a60 /* * Offset 0xF5A60, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1173..1178) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ RenameCopyBlock__6MCSLOTP10FILEFORMAT(struct MCSLOT *this /*$a0*/, struct FILEFORMAT *fileFormatPtr /*$s1*/) { // line 1, offset 0xf5a60 struct _CARD *headerptr; // $s0 } // line 6, offset 0xf5b24 /* * Offset 0xF5B38, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1187..1248) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ WriteSlice__6MCSLOTiiP5SLICEP10FILEFORMATPc(struct MCSLOT *this /*$s0*/, int block /*$s4*/, int slice /*$s1*/, struct SLICE *slicePtr /*$a2*/, struct FILEFORMAT *fileFormatPtr /*stack 16*/, char *bufferPtr /*stack 20*/, struct FILEFORMAT *fileFormatPtr /*$s3*/) { // line 1, offset 0xf5b38 } // line 62, offset 0xf5c70 /* * Offset 0xF5C70, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1675..1683) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetPort__6MCSLOTii(struct MCSLOT *this /*$s0*/, int port /*$a1*/, int card /*$a2*/) { // line 1, offset 0xf5c70 { // line 1, offset 0xf5c70 struct MCSLOT *this; // $s0 { // line 1, offset 0xf5c70 { // line 1, offset 0xf5c70 int n; // $v1 } // line 7, offset 0xf5cdc { // line 1, offset 0xf5cdc { // line 1, offset 0xf5cec } // line 1, offset 0xf5cfc } // line 1, offset 0xf5cfc { // line 1, offset 0xf5cfc { // line 1, offset 0xf5d0c } // line 1, offset 0xf5d1c } // line 1, offset 0xf5d1c } // line 1, offset 0xf5d1c } // line 1, offset 0xf5d30 } // line 9, offset 0xf5d30 /* * Offset 0xF5D30, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1710..1720) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ BlocksShared__6MCSLOTii(struct MCSLOT *this /*$t0*/, int block1 /*$a1*/, int block2 /*$a2*/) { // line 1, offset 0xf5d30 } // line 9, offset 0xf5dc0 /* * Offset 0xF5DC8, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1723..1726) * Stack frame base $sp, size 0 */ int /*$ra*/ GetBlockSize__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/) { // line 1, offset 0xf5dc8 } // line 4, offset 0xf5dfc /* * Offset 0xF5DFC, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1731..1732) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ CardInfoRead__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf5dfc } // line 2, offset 0xf5e08 /* * Offset 0xF5E08, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1755..1762) * Stack frame base $sp, size 0 */ struct TIMSTRUCT * /*$ra*/ GetBlockIconPtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/) { // line 1, offset 0xf5e08 } // line 8, offset 0xf5e84 /* * Offset 0xF5E84, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1788..1793) * Stack frame base $sp, size 0 */ int /*$ra*/ GetNoUsedBlocks__6MCSLOT(struct MCSLOT *this /*$a0*/) { // line 1, offset 0xf5e84 } // line 6, offset 0xf5ea0 /* * Offset 0xF5EA0, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1806..1812) * Stack frame base $sp, size 0 */ short * /*$ra*/ GetBlockTitlePtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/) { // line 1, offset 0xf5ea0 } // line 7, offset 0xf5ee4 /* * Offset 0xF5EE4, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1822..1829) * Stack frame base $sp, size 0 */ char * /*$ra*/ GetBlockFilenamePtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/) { // line 1, offset 0xf5ee4 } // line 8, offset 0xf5f1c /* * Offset 0xF5F1C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1836..1850) * Stack frame base $sp, size 40 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ int /*$ra*/ FilenameUsed__6MCSLOTPc(struct MCSLOT *this /*$s3*/, char *filename /*$s4*/) { // line 1, offset 0xf5f1c int n; // $s0 } // line 15, offset 0xf5fbc /* * Offset 0xF5FBC, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1872..1887) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ int /*$ra*/ GetNumGremBlocks__6MCSLOTPc(struct MCSLOT *this /*$s3*/, char *filename /*$s5*/) { // line 1, offset 0xf5fbc int n; // $s2 int files; // $s4 { // line 7, offset 0xf5ffc { // line 7, offset 0xf6014 { // line 9, offset 0xf6014 } // line 12, offset 0xf6048 } // line 12, offset 0xf6048 } // line 14, offset 0xf6060 } // line 16, offset 0xf6088 /* * Offset 0xF6088, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1896..1950) * Stack frame base $sp, size 88 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ InsertSliceIntoCopyBuffer__6MCSLOTiPccccT2(struct MCSLOT *this /*$a0*/, int slice /*$s4*/, char *sliceName /*$a2*/, char icon0 /*$s7*/, int icon1 /*stack 16*/, int icon2 /*stack 20*/, char *dataPtr /*stack 24*/, char icon1 /*$s5*/, char icon2 /*$s6*/, char *dataPtr /*$s2*/) { // line 1, offset 0xf6088 struct SLICEHEADER *sliceHeaderPtr; // $s1 char *sliceDataPtr; // $a3 int sliceSize; // $a2 struct SLICEHEADER dummySlice; // stack offset -72 int check; // $a1 } // line 55, offset 0xf61f0 /* * Offset 0xF61F0, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1955..1977) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ ExtractSliceFromCopyBuffer__6MCSLOTiPc(struct MCSLOT *this /*$a0*/, int slice /*$a1*/, char *bufferPtr /*$a0*/) { // line 1, offset 0xf61f0 struct SLICEHEADER *sliceHeaderPtr; // $a2 char *sliceDataPtr; // $a1 } // line 23, offset 0xf628c /* * Offset 0xF628C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 1982..1996) * Stack frame base $sp, size 0 */ char * /*$ra*/ GetSliceFilenamePtr__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/) { // line 1, offset 0xf628c } // line 15, offset 0xf633c /* * Offset 0xF633C, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2001..2015) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ SliceUsed__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/) { // line 1, offset 0xf633c } // line 15, offset 0xf63e4 /* * Offset 0xF63EC, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2019..2026) * Stack frame base $sp, size 0 */ int /*$ra*/ GetNoUsedSlices__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/) { // line 1, offset 0xf63ec } // line 8, offset 0xf6448 /* * Offset 0xF6448, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2030..2040) * Stack frame base $sp, size 0 */ int /*$ra*/ GetSliceIconRef__6MCSLOTiii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/, int ref /*$a3*/) { // line 1, offset 0xf6448 } // line 11, offset 0xf64f4 /* * Offset 0xF64F4, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2044..2051) * Stack frame base $sp, size 0 */ int /*$ra*/ GetNoSlices__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/) { // line 1, offset 0xf64f4 } // line 8, offset 0xf6550 /* * Offset 0xF6550, from D:\driver2\game\MEMCARD\SLOT.CPP (lines 2055..2058) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ GremlinBlock__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/) { // line 1, offset 0xf6550 } // line 4, offset 0xf6588 Source file(s) D:\driver2\game\MEMCARD\DELETE.C, object file memcard\obj\delete.obj overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 1 functions /* * Offset 0xF6588, from D:\driver2\game\MEMCARD\DELETE.C (lines 10..16) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ long /*$ra*/ delete_file(char *filename /*$a0*/) { // line 5, offset 0xf6588 } // line 7, offset 0xf65a8 Source file(s) D:\driver2\game\DISPLAY.CPP+D:\driver2\game\MEMCARD\DISPLAY.CPP, object file memcard\obj\display.obj overlay id // 53 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct POLY_G4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char r3; // size=0, offset=28 unsigned char g3; // size=0, offset=29 unsigned char b3; // size=0, offset=30 unsigned char pad3; // size=0, offset=31 short x3; // size=0, offset=32 short y3; // size=0, offset=34 }; struct POLY_GT3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 unsigned char r1; // size=0, offset=16 unsigned char g1; // size=0, offset=17 unsigned char b1; // size=0, offset=18 unsigned char p1; // size=0, offset=19 short x1; // size=0, offset=20 short y1; // size=0, offset=22 unsigned char u1; // size=0, offset=24 unsigned char v1; // size=0, offset=25 unsigned short tpage; // size=0, offset=26 unsigned char r2; // size=0, offset=28 unsigned char g2; // size=0, offset=29 unsigned char b2; // size=0, offset=30 unsigned char p2; // size=0, offset=31 short x2; // size=0, offset=32 short y2; // size=0, offset=34 unsigned char u2; // size=0, offset=36 unsigned char v2; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct LINE_F2 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 }; struct LINE_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 unsigned long pad; // size=0, offset=24 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct DR_LOAD { unsigned long tag; // size=0, offset=0 unsigned long code[3]; // size=12, offset=4 unsigned long p[13]; // size=52, offset=16 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct MouseData { unsigned short buttons; // size=0, offset=0 char xOffset; // size=0, offset=2 char yOffset; // size=0, offset=3 }; struct NegconData { unsigned short digitalButtons; // size=0, offset=0 char centralTwist; // size=0, offset=2 char buttonI; // size=0, offset=3 char buttonII; // size=0, offset=4 char topLeft; // size=0, offset=5 }; struct AnalogjoyData { unsigned short digitalButtons; // size=0, offset=0 unsigned char right_x; // size=0, offset=2 unsigned char right_y; // size=0, offset=3 unsigned char left_x; // size=0, offset=4 unsigned char left_y; // size=0, offset=5 }; union ._122 { unsigned short pad; // size=0, offset=0 struct NegconData negcon; // size=6, offset=0 struct MouseData mouse; // size=4, offset=0 }; struct TapCtrllerData { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._122 data; // size=6, offset=2 }; struct MultiTapData { struct TapCtrllerData ctrllers[4]; // size=32, offset=0 }; union ._125 { unsigned short pad; // size=0, offset=0 struct MouseData mouse; // size=4, offset=0 struct NegconData negcon; // size=6, offset=0 struct AnalogjoyData joystick; // size=6, offset=0 struct MultiTapData tap; // size=32, offset=0 }; struct _CARD { char Magic[2]; // size=2, offset=0 char Type; // size=0, offset=2 char BlockEntry; // size=0, offset=3 char Title[64]; // size=64, offset=4 char reserve[28]; // size=28, offset=68 char Clut[32]; // size=32, offset=96 char Icon[3][128]; // size=384, offset=128 }; struct POINT { int x; // size=0, offset=0 int y; // size=0, offset=4 }; struct TIMSTRUCT { unsigned short clut; // size=0, offset=0 unsigned short tpage; // size=0, offset=2 unsigned short x; // size=0, offset=4 unsigned short y; // size=0, offset=6 unsigned short w; // size=0, offset=8 unsigned short h; // size=0, offset=10 }; struct FONTTABSTRUCT { struct TIMSTRUCT timStruct; // size=12, offset=0 short width; // size=0, offset=12 short height; // size=0, offset=14 }; struct KANJILOOKUP { short sjisCode; // size=0, offset=0 unsigned int used; // size=0, offset=4 struct TIMSTRUCT timStruct; // size=12, offset=8 }; struct SLICEHEADER { int size; // size=0, offset=0 char title[20]; // size=20, offset=4 char iconRef[3]; // size=3, offset=24 char used; // size=0, offset=27 short checksum; // size=0, offset=28 short pad; // size=0, offset=30 }; struct BLOCKINFO { unsigned int infoOK; // size=0, offset=0 int id; // size=0, offset=4 int size; // size=0, offset=8 int freeBytes; // size=0, offset=12 struct DIRENTRY dirEntry; // size=40, offset=16 struct _CARD header; // size=512, offset=56 struct TIMSTRUCT iconTim; // size=12, offset=568 unsigned int gremBlock; // size=0, offset=580 int sliceCount; // size=0, offset=584 int usedSlices; // size=0, offset=588 struct SLICEHEADER sliceHeader[16]; // size=512, offset=592 }; struct CARDINFO { int usedBlocks; // size=0, offset=0 struct BLOCKINFO blockInfo[15]; // size=16560, offset=4 unsigned int dirOK; // size=0, offset=16564 unsigned int infoOK; // size=0, offset=16568 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct MCSLOT { struct CARDINFO m_cardInfo; // size=16572, offset=0 int m_port; // size=0, offset=16572 int m_card; // size=0, offset=16576 int m_chan; // size=0, offset=16580 char m_device[6]; // size=6, offset=16584 int m_blocksRead; // size=0, offset=16592 int m_readFilePtr; // size=0, offset=16596 int m_readBytes; // size=0, offset=16600 int m_fromReadBytes; // size=0, offset=16604 int m_toReadBytes; // size=0, offset=16608 int m_writeFilePtr; // size=0, offset=16612 int m_writeBytes; // size=0, offset=16616 int m_fromWriteBytes; // size=0, offset=16620 int m_toWriteBytes; // size=0, offset=16624 int m_iconX; // size=0, offset=16628 int m_iconY; // size=0, offset=16632 int m_clutX; // size=0, offset=16636 int m_clutY; // size=0, offset=16640 unsigned int m_doCheckSum; // size=0, offset=16644 short m_checkSumWork; // size=0, offset=16648 short m_checkSum; // size=0, offset=16650 }; struct PAD { struct MCSLOT m_mcSlot0; // size=16652, offset=0 struct MCSLOT m_mcSlot1; // size=16652, offset=16652 int m_mouseX; // size=0, offset=33304 int m_mouseY; // size=0, offset=33308 int m_scanPort; // size=0, offset=33312 unsigned int m_cardChanged[2]; // size=8, offset=33316 unsigned int m_bControllerChanged; // size=0, offset=33324 unsigned int m_bMouseTested; // size=0, offset=33328 unsigned int m_bUsingMouse; // size=0, offset=33332 unsigned int m_bUsingNegCon; // size=0, offset=33336 unsigned int m_bControllerInserted; // size=0, offset=33340 int m_nLastControllerType; // size=0, offset=33344 char slotString[3]; // size=3, offset=33348 struct MCSLOT *m_slotObjPtrs[2]; // size=8, offset=33352 int m_slotObjPorts[2]; // size=8, offset=33360 int m_currSlotObj; // size=0, offset=33368 int m_portStatus[8]; // size=32, offset=33372 }; struct DISPMAN { unsigned int m_displayingMessage; // size=0, offset=0 int m_language; // size=0, offset=4 char m_textBuffer[256]; // size=256, offset=8 struct DR_AREA m_sliceClipArea; // size=12, offset=264 struct DR_AREA m_screenClipArea; // size=12, offset=276 struct RECT m_backRect[7]; // size=56, offset=288 struct RECT m_srcRect[7]; // size=56, offset=344 int s_screenMode; // size=0, offset=400 int dispWidth; // size=0, offset=404 int dispHeight; // size=0, offset=408 int dispXOffset; // size=0, offset=412 int dispYOffset; // size=0, offset=416 struct DRAWENV m_drawEnv; // size=92, offset=420 struct DISPENV m_dispEnv; // size=20, offset=512 struct DRAWENV m_oldDrawEnv; // size=92, offset=532 struct DISPENV m_oldDispEnv; // size=20, offset=624 int spriteCount; // size=0, offset=644 int polyCountFT4; // size=0, offset=648 int polyCountG3; // size=0, offset=652 int polyCountF4; // size=0, offset=656 int moveCount; // size=0, offset=660 int m_dirtyMouseX; // size=0, offset=664 int m_dirtyMouseY; // size=0, offset=668 unsigned short m_dirtyMouseBuffer[256]; // size=512, offset=672 char m_kanjiTimBuffer[350]; // size=350, offset=1184 struct SPRT sprites[200]; // size=4000, offset=1536 struct DR_TPAGE tpages[200]; // size=1600, offset=5536 struct POLY_FT4 polysFT4[25]; // size=1000, offset=7136 struct POLY_F4 polysF4[0]; // size=0, offset=8136 struct POLY_G3 polysG3[20]; // size=560, offset=8136 struct DR_MOVE moves[2]; // size=48, offset=8696 int m_dispX; // size=0, offset=8744 int m_dispY; // size=0, offset=8748 int m_flashCount; // size=0, offset=8752 int m_flash; // size=0, offset=8756 unsigned int m_flashOn; // size=0, offset=8760 unsigned int m_invalidArea[7]; // size=28, offset=8764 int m_addingBlock; // size=0, offset=8792 int m_deletingBlock; // size=0, offset=8796 struct FONTTABSTRUCT m_fontTable[3][76]; // size=3648, offset=8800 struct KANJILOOKUP m_kanjiFontTable[256]; // size=5120, offset=12448 struct TIMSTRUCT m_darkTimStruct; // size=12, offset=17568 struct TIMSTRUCT m_pointerTimStruct; // size=12, offset=17580 struct TIMSTRUCT m_lightTimStruct; // size=12, offset=17592 struct TIMSTRUCT m_cardTimStruct; // size=12, offset=17604 struct TIMSTRUCT m_buttonTimStructs[4]; // size=48, offset=17616 struct TIMSTRUCT m_arrowTimStruct[2]; // size=24, offset=17664 struct TIMSTRUCT m_sliceIconTimStructs[16]; // size=192, offset=17688 struct TIMSTRUCT m_createBlockTimStruct; // size=12, offset=17880 struct PAD *m_padPtr; // size=33404, offset=17892 long *m_backImagePtr; // size=0, offset=17896 int m_updateQueue[7]; // size=28, offset=17900 int m_kanjiChars; // size=0, offset=17928 int m_activeArea; // size=0, offset=17932 int m_menuSelect; // size=0, offset=17936 int m_blockSelect; // size=0, offset=17940 int m_sliceSelect; // size=0, offset=17944 int m_sliceMenuOffset; // size=0, offset=17948 int m_sliceMenuRem; // size=0, offset=17952 int m_sliceMenuInc; // size=0, offset=17956 int m_activeFunction; // size=0, offset=17960 int m_mainFunction; // size=0, offset=17964 int m_maxKanji; // size=0, offset=17968 unsigned int m_menuActive[4]; // size=16, offset=17972 char *m_menuText[4]; // size=16, offset=17988 char *m_infoText[3]; // size=12, offset=18004 char *m_titleText; // size=0, offset=18016 char *m_blockNameText; // size=0, offset=18020 char m_saveFilename[32]; // size=32, offset=18024 struct FILEFORMAT *m_fileFormatPtr; // size=340, offset=18056 }; // 73 typedefs typedef struct TCB TCB; typedef struct EXEC EXEC; typedef struct DIRENTRY DIRENTRY; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct POLY_G4 POLY_G4; typedef struct POLY_GT3 POLY_GT3; typedef struct LINE_F2 LINE_F2; typedef struct LINE_F4 LINE_F4; typedef struct SPRT SPRT; typedef struct DR_AREA DR_AREA; typedef struct DR_MOVE DR_MOVE; typedef struct DR_LOAD DR_LOAD; typedef struct DR_TPAGE DR_TPAGE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct MouseData MouseData; typedef struct NegconData NegconData; typedef struct AnalogjoyData AnalogjoyData; typedef struct TapCtrllerData TapCtrllerData; typedef struct MultiTapData MultiTapData; typedef struct _CARD _CARD; typedef struct POINT POINT; typedef struct TIMSTRUCT TIMSTRUCT; typedef struct FONTTABSTRUCT FONTTABSTRUCT; typedef struct KANJILOOKUP KANJILOOKUP; typedef struct SLICEHEADER SLICEHEADER; typedef struct BLOCKINFO BLOCKINFO; typedef struct CARDINFO CARDINFO; typedef struct FILEFORMAT FILEFORMAT; typedef struct MCSLOT MCSLOT; typedef struct PAD PAD; typedef struct DISPMAN DISPMAN; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned short PadData; // 0 labels // 3 external declarations extern unsigned long *oTablePtr; // offset 0x0010ec74 extern struct RECT g_strActiveMouseArea; // offset 0x0010ec78 extern int DM_CIRCLE[16][2][2]; // offset 0x0010eb70 // 58 functions /* * Offset 0xF65A8, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 49..388) * Stack frame base $sp, size 152 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ struct DISPMAN * /*$ra*/ __7DISPMANPlPPlP3PADP10FILEFORMATib(struct DISPMAN *this /*$s2*/, long *imagePtr /*$a1*/, long **sliceIconPtrs /*stack 8*/, struct PAD *pad /*$a3*/, struct FILEFORMAT *fileFormatPtr /*stack 16*/, int language /*stack 20*/, unsigned int save /*stack 24*/, struct FILEFORMAT *fileFormatPtr /*$v0*/, int language /*$s0*/) { // line 1, offset 0xf65a8 int n; // $s1 struct RECT rect; // stack offset -112 } // line 340, offset 0xf727c /* * Offset 0xF72B8, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 472..550) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawTitleBar__7DISPMAN(struct DISPMAN *this /*$s3*/) { // line 1, offset 0xf72b8 char *titleText; // $s2 { // line 1, offset 0xf72b8 { // line 6, offset 0xf72e4 { // line 56, offset 0xf740c { // line 58, offset 0xf742c char *titleText2; // $s0 int i; // $t0 } // line 72, offset 0xf7454 } // line 76, offset 0xf74e8 } // line 79, offset 0xf74ec } // line 79, offset 0xf74ec } // line 79, offset 0xf74ec /* * Offset 0xF7508, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 555..589) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ DrawCards__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf7508 } // line 35, offset 0xf7670 /* * Offset 0xF7688, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 602..693) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawMenu__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf7688 } // line 92, offset 0xf79ac /* * Offset 0xF79C8, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 701..741) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ DrawKeyInfo__7DISPMAN(struct DISPMAN *this /*$s3*/) { // line 1, offset 0xf79c8 } // line 41, offset 0xf7c30 /* * Offset 0xF7C4C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 747..833) * Stack frame base $sp, size 96 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawBlocks__7DISPMAN(struct DISPMAN *this /*$s1*/) { // line 1, offset 0xf7c4c int x; // $s6 int y; // $s2 } // line 87, offset 0xf816c /* * Offset 0xF819C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 839..1027) * Stack frame base $sp, size 144 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ DrawSlices__7DISPMAN(struct DISPMAN *this /*$s2*/) { // line 1, offset 0xf819c int n; // $s3 char textBuffer[50]; // stack offset -104 int iconRef; // $v1 int maxIcons; // $s1 { // line 29, offset 0xf82bc { // line 30, offset 0xf82cc { // line 31, offset 0xf82cc { // line 35, offset 0xf8304 { // line 38, offset 0xf8304 { // line 48, offset 0xf83bc { // line 48, offset 0xf83bc { // line 57, offset 0xf8404 { // line 57, offset 0xf8404 { // line 57, offset 0xf841c { // line 59, offset 0xf841c { // line 59, offset 0xf8460 { // line 61, offset 0xf8460 { // line 63, offset 0xf847c { // line 64, offset 0xf847c { // line 65, offset 0xf8484 { // line 66, offset 0xf8484 { // line 67, offset 0xf84a8 } // line 68, offset 0xf84a8 } // line 80, offset 0xf8574 } // line 80, offset 0xf8574 } // line 116, offset 0xf8770 } // line 116, offset 0xf8770 } // line 116, offset 0xf8770 } // line 116, offset 0xf8770 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 122, offset 0xf8784 } // line 136, offset 0xf87d4 } // line 183, offset 0xf8ae8 } // line 189, offset 0xf8b28 /* * Offset 0xF8B28, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1031..1055) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ void /*$ra*/ write_mess_in_box__7DISPMANG4RECTPciiii(struct DISPMAN *this /*$s5*/, struct RECT box /*stack 4*/, char *text /*$fp*/, int font /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int font /*$s3*/) { // line 1, offset 0xf8b28 int n; // $s1 int textY; // $s2 int messCount; // $s6 int lineCount; // $s0 } // line 25, offset 0xf8d24 /* * Offset 0xF8D24, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1060..1099) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawBlockName__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf8d24 } // line 40, offset 0xf8ed4 /* * Offset 0xF8EE4, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1327..1369) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ActiveAreaLeft__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf8ee4 int start; // $s1 } // line 43, offset 0xf9018 /* * Offset 0xF902C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1375..1431) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ ActiveAreaRight__7DISPMAN(struct DISPMAN *this /*$s1*/) { // line 1, offset 0xf902c int start; // $s2 } // line 57, offset 0xf9258 /* * Offset 0xF9270, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1437..1487) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ ActiveAreaUp__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf9270 } // line 51, offset 0xf940c /* * Offset 0xF941C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1493..1563) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ ActiveAreaDown__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xf941c int start; // $s1 } // line 71, offset 0xf96dc /* * Offset 0xF96F0, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1568..1705) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ ActiveAreaSelect__7DISPMANii(struct DISPMAN *this /*$s1*/, int x /*$s2*/, int y /*$s0*/) { // line 1, offset 0xf96f0 int selected; // $s0 int newArea; // $a0 } // line 138, offset 0xf9bac /* * Offset 0xF9BAC, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1728..1957) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ int /*$ra*/ ActiveAreaConfirm__7DISPMAN(struct DISPMAN *this /*$s1*/) { // line 1, offset 0xf9bac } // line 230, offset 0xf9fac /* * Offset 0xF9FAC, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2044..2077) * Stack frame base $sp, size 40 */ unsigned int /*$ra*/ intersect__7DISPMANG4RECTT1(struct DISPMAN *this /*$a0*/, struct RECT rect1 /*stack 4*/, struct RECT rect2 /*stack 12*/) { // line 1, offset 0xf9fac int n; // $t0 struct POINT p[4]; // stack offset -40 char bitPattern[2]; // stack offset -8 } // line 34, offset 0xfa174 /* * Offset 0xFA174, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2139..2265) * Stack frame base $sp, size 64 * Saved registers at offset -4: s0 s1 s2 s3 s4 ra */ unsigned int /*$ra*/ Update__7DISPMAN(struct DISPMAN *this /*$s1*/) { // line 1, offset 0xfa174 int n; // $s0 struct RECT rect; // stack offset -32 { // line 28, offset 0xfa238 { // line 29, offset 0xfa260 { // line 1, offset 0xfa260 struct DISPMAN *this; // $s1 { // line 1, offset 0xfa260 int i; // $a0 } // line 1, offset 0xfa2a4 } // line 1, offset 0xfa2a4 { // line 1, offset 0xfa2a4 struct DISPMAN *this; // $s1 { // line 1, offset 0xfa2a4 int i; // $a0 } // line 1, offset 0xfa2ec } // line 1, offset 0xfa2ec { // line 1, offset 0xfa2ec struct DISPMAN *this; // $s1 { // line 1, offset 0xfa2ec int i; // $a0 } // line 1, offset 0xfa334 } // line 1, offset 0xfa334 { // line 1, offset 0xfa334 struct DISPMAN *this; // $s1 { // line 1, offset 0xfa334 int i; // $a0 } // line 1, offset 0xfa37c } // line 1, offset 0xfa37c { // line 1, offset 0xfa37c struct DISPMAN *this; // $s1 { // line 1, offset 0xfa37c } // line 1, offset 0xfa39c } // line 1, offset 0xfa39c } // line 38, offset 0xfa39c } // line 38, offset 0xfa39c { // line 49, offset 0xfa3d8 { // line 52, offset 0xfa3e8 { // line 53, offset 0xfa3e8 { // line 53, offset 0xfa3ec { // line 1, offset 0xfa3ec struct DISPMAN *this; // $s1 int n; // $s0 { // line 1, offset 0xfa3ec } // line 1, offset 0xfa47c } // line 1, offset 0xfa47c } // line 53, offset 0xfa47c } // line 53, offset 0xfa488 } // line 53, offset 0xfa488 } // line 53, offset 0xfa488 } // line 127, offset 0xfa684 /* * Offset 0xFA684, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2271..2349) * Stack frame base $sp, size 352 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ PrintKanji__7DISPMANPsiiiiii(struct DISPMAN *this /*$s1*/, short *string /*$s0*/, int x /*$s4*/, int y /*$fp*/, int maxChars /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int maxChars /*$s5*/) { // line 1, offset 0xfa684 char textBuffer[256]; // stack offset -312 int lookup; // $a1 int n; // stack offset -48 short *sjisPtr; // $s0 short sjisCode[3]; // stack offset -56 int chars; // $v1 } // line 79, offset 0xfa97c /* * Offset 0xFA97C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2402..2434) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ darken__7DISPMANG4RECT(struct DISPMAN *this /*$s0*/, struct RECT rect /*stack 4*/) { // line 1, offset 0xfa97c } // line 31, offset 0xfacc4 /* * Offset 0xFACD4, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2670..2694) * Stack frame base $sp, size 40 * Saved registers at offset -8: s0 s1 s2 s3 ra */ int /*$ra*/ DrawSprite__7DISPMANP9TIMSTRUCTiiiiii(struct DISPMAN *this /*$s0*/, struct TIMSTRUCT *tim /*$s1*/, int x /*$s2*/, int y /*$s3*/, int r /*stack 16*/, int g /*stack 20*/, int b /*stack 24*/, int trans /*stack 28*/, int r /*$v1*/, int g /*$v1*/, int b /*$v1*/) { // line 1, offset 0xfacd4 } // line 25, offset 0xfaed0 /* * Offset 0xFAED0, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2743..2773) * Stack frame base $sp, size 56 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ AddCircleG16__7DISPMANiiiiiiii(struct DISPMAN *this /*$s0*/, int x /*stack 4*/, int y /*stack 8*/, int diameter /*$a3*/, int complete /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int divisor /*stack 32*/, int complete /*$s7*/, int b /*$fp*/, int divisor /*$s1*/) { // line 1, offset 0xfaed0 int modX; // $s6 int modY; // $s5 { // line 10, offset 0xfaf54 int n; // $s3 } // line 31, offset 0xfb304 } // line 31, offset 0xfb304 /* * Offset 0xFB304, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2786..3106) * Stack frame base $sp, size 344 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ short /*$ra*/ MessageBox__7DISPMANiPcbT3(struct DISPMAN *this /*$s5*/, int type /*stack 4*/, char *text /*stack 8*/, unsigned int bIgnoreEvents /*stack 12*/, unsigned int bSwapKeys /*stack 16*/) { // line 1, offset 0xfb304 int boxHeight; // $s6 int boxTop; // stack offset -72 int maxTextLen; // stack offset -68 int textLen; // $s0 int textY; // $s3 int lineCount; // $s1 struct RECT darkRect; // stack offset -304 struct RECT rect; // stack offset -296 char textBuffer[128]; // stack offset -288 int sel; // $fp unsigned int cardState; // stack offset -64 unsigned int bInBox; // $s4 int n; // $s2 int messCount; // $s7 short padData; // $s4 { // line 102, offset 0xfb79c struct DISPMAN *this; // $s5 struct RECT rect; // stack offset -148 { // line 102, offset 0xfb79c int n; // $s2 } // line 113, offset 0xfb8d0 } // line 113, offset 0xfb8d0 { // line 117, offset 0xfb8d0 { // line 120, offset 0xfb8fc { // line 124, offset 0xfb954 { // line 127, offset 0xfb984 { // line 129, offset 0xfb9a8 struct DISPMAN *this; // $s5 int y; // $s3 { // line 129, offset 0xfb9a8 struct LINE_F2 strF2; // stack offset -88 struct LINE_F4 strF4; // stack offset -120 } // line 129, offset 0xfb9a8 } // line 129, offset 0xfb9a8 { // line 130, offset 0xfba68 struct DISPMAN *this; // $s5 int y; // $s3 { // line 130, offset 0xfba68 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 130, offset 0xfba68 } // line 130, offset 0xfba68 { // line 133, offset 0xfbb2c struct DISPMAN *this; // $s5 int y; // $s3 { // line 133, offset 0xfbb2c struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 133, offset 0xfbbc8 } // line 133, offset 0xfbbc8 } // line 136, offset 0xfbbc8 } // line 136, offset 0xfbbc8 { // line 141, offset 0xfbc34 { // line 176, offset 0xfbd50 { // line 179, offset 0xfbd80 { // line 1, offset 0xfbdd4 struct DISPMAN *this; // $s5 int y; // $s3 int r; // $s2 int g; // $s1 int b; // $s0 { // line 1, offset 0xfbdd4 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 1, offset 0xfbdd4 } // line 1, offset 0xfbdd4 { // line 1, offset 0xfbefc struct DISPMAN *this; // $s5 int y; // $s3 int r; // $s2 int g; // $s1 int b; // $s0 { // line 1, offset 0xfbefc struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 1, offset 0xfbefc } // line 1, offset 0xfbefc { // line 188, offset 0xfc01c struct DISPMAN *this; // $s5 int y; // $s3 int r; // $s1 { // line 188, offset 0xfc01c struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 188, offset 0xfc0cc } // line 188, offset 0xfc0cc } // line 191, offset 0xfc0cc } // line 191, offset 0xfc0cc } // line 207, offset 0xfc138 } // line 233, offset 0xfc278 { // line 236, offset 0xfc280 { // line 240, offset 0xfc2b0 { // line 241, offset 0xfc2f0 { // line 244, offset 0xfc2fc { // line 1, offset 0xfc390 struct DISPMAN *this; // $s5 int y; // $s3 { // line 1, offset 0xfc390 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 1, offset 0xfc390 } // line 1, offset 0xfc390 { // line 1, offset 0xfc474 struct DISPMAN *this; // $s5 int y; // $s3 { // line 1, offset 0xfc474 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 1, offset 0xfc474 } // line 1, offset 0xfc474 } // line 266, offset 0xfc540 { // line 283, offset 0xfc650 struct DISPMAN *this; // $s5 int y; // $s3 int w; // $v0 { // line 283, offset 0xfc650 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 283, offset 0xfc650 } // line 283, offset 0xfc650 { // line 308, offset 0xfc848 struct DISPMAN *this; // $s5 int y; // $s3 int w; // $v0 { // line 308, offset 0xfc848 struct LINE_F2 strF2; // stack offset -128 struct LINE_F4 strF4; // stack offset -160 } // line 308, offset 0xfc8e8 } // line 308, offset 0xfc8e8 } // line 313, offset 0xfc8f0 } // line 313, offset 0xfc8f0 } // line 313, offset 0xfc8f0 } // line 313, offset 0xfc8f0 } // line 321, offset 0xfc950 /* * Offset 0xFC950, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3112..3167) * Stack frame base $sp, size 232 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ struct RECT /*$ra*/ ProgressBox__7DISPMANPci(struct DISPMAN *this /*$s3*/, char *text /*$fp*/, int progress /*stack 12*/) { // line 1, offset 0xfc950 int boxHeight; // $s4 int boxTop; // stack offset -48 int maxTextLen; // $s7 int textLen; // $v1 int textY; // $s1 int lineCount; // $s0 struct RECT darkRect; // stack offset -192 char textBuffer[128]; // stack offset -184 int n; // $s2 int messCount; // $s6 } // line 39, offset 0xfcb08 /* * Offset 0xFCC54, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3182..3208) * Stack frame base $sp, size 312 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ message_width__7DISPMANPcii(struct DISPMAN *this /*$s3*/, char *mesPtr /*$s1*/, int font /*$a2*/, int maxChars /*$s6*/) { // line 1, offset 0xfcc54 char c; // $a1 int fRef; // $s0 int w; // $s2 int n; // $s5 { // line 1, offset 0xfcc54 { // line 7, offset 0xfcc98 { // line 1, offset 0xfcc98 short *kanjiStringPtr; // $s1 int maxChars; // $s6 { // line 1, offset 0xfcc98 int totalLen; // $a1 short textBuffer[128]; // stack offset -296 } // line 1, offset 0xfcd04 } // line 1, offset 0xfcd04 } // line 8, offset 0xfcd0c } // line 27, offset 0xfce00 } // line 27, offset 0xfce00 /* * Offset 0xFCE00, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3214..3330) * Stack frame base $sp, size 184 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ justify_mess__7DISPMANPcii(struct DISPMAN *this /*$fp*/, char *messPtr /*$s3*/, int font /*stack 8*/, int maxLineLength /*$s7*/) { // line 1, offset 0xfce00 char c; // $s0 short kanji; // $s0 char word[128]; // stack offset -168 int wordCount; // $s1 int lineLength; // $s6 int lineCount; // $s4 } // line 117, offset 0xfd000 /* * Offset 0xFD000, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3337..3385) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ write_mess__7DISPMANPciiiiiiii(struct DISPMAN *this /*$s2*/, char *mesPtr /*$s6*/, int x /*$s3*/, int y /*stack 12*/, int font /*stack 16*/, int maxChars /*stack 20*/, int r /*stack 24*/, int g /*stack 28*/, int b /*stack 32*/, int trans /*stack 36*/, int font /*$a0*/, int r /*$t1*/, int g /*$t0*/, int b /*$a3*/, int trans /*$v0*/) { // line 1, offset 0xfd000 int fRef; // $s1 int n; // stack offset -56 char c; // $s0 { // line 1, offset 0xfd000 { // line 9, offset 0xfd080 { // line 11, offset 0xfd0f4 { // line 20, offset 0xfd124 { // line 21, offset 0xfd134 { // line 22, offset 0xfd134 struct DISPMAN *this; // $s2 struct TIMSTRUCT *tim; // $a3 int y; // stack offset 12 int r; // $t1 int g; // $t0 int b; // $a3 int trans; // $v0 { // line 22, offset 0xfd134 struct DR_TPAGE *tpagePtr; // $a2 struct SPRT *spritePtr; // $a1 } // line 29, offset 0xfd27c } // line 29, offset 0xfd27c } // line 29, offset 0xfd27c } // line 29, offset 0xfd27c { // line 39, offset 0xfd2a4 { // line 40, offset 0xfd2b0 { // line 1, offset 0xfd2b0 struct DISPMAN *this; // $s2 struct TIMSTRUCT *tim; // $a3 int x; // $s3 int y; // stack offset 12 int r; // $t1 int g; // $t0 int b; // $a3 int trans; // $v0 { // line 1, offset 0xfd2b0 struct DR_TPAGE *tpagePtr; // $a2 struct SPRT *spritePtr; // $a1 } // line 1, offset 0xfd2b0 } // line 1, offset 0xfd2b0 } // line 44, offset 0xfd3a4 } // line 44, offset 0xfd3a4 } // line 44, offset 0xfd3a4 } // line 49, offset 0xfd410 } // line 49, offset 0xfd410 } // line 49, offset 0xfd410 /* * Offset 0xFD410, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3392..3518) * Stack frame base $sp, size 0 */ int /*$ra*/ font_ref__7DISPMANcb(struct DISPMAN *this /*$a0*/, char c /*$a1*/, unsigned int accent /*$a2*/) { // line 1, offset 0xfd410 } // line 127, offset 0xfd650 /* * Offset 0xFD658, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3524..3610) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 ra */ void /*$ra*/ Tim2VRAM__7DISPMANPlP9TIMSTRUCTibiiii(struct DISPMAN *this /*$a0*/, long *timDataPtr /*$s0*/, struct TIMSTRUCT *destTimPtr /*$s2*/, int abr /*$s1*/, unsigned int setCoords /*stack 16*/, int clutX /*stack 20*/, int clutY /*stack 24*/, int iconX /*stack 28*/, int iconY /*stack 32*/, unsigned int setCoords /*$s6*/, int clutX /*$v0*/, int clutY /*$v1*/, int iconX /*$v0*/, int iconY /*$v1*/) { // line 1, offset 0xfd658 long flag; // $a0 struct RECT *timRect; // $a2 { // line 19, offset 0xfd6a4 { // line 25, offset 0xfd6b8 { // line 34, offset 0xfd6d8 { // line 39, offset 0xfd6f0 { // line 40, offset 0xfd6f0 int n; // $a0 } // line 45, offset 0xfd718 } // line 45, offset 0xfd718 } // line 45, offset 0xfd718 } // line 52, offset 0xfd740 } // line 52, offset 0xfd740 } // line 87, offset 0xfd86c /* * Offset 0xFD86C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3749..3805) * Stack frame base $sp, size 264 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ wipe_screen__7DISPMANii(struct DISPMAN *this /*$s1*/, int wt /*$s3*/, int step /*$s5*/) { // line 1, offset 0xfd86c int i; // $s2 struct DRAWENV drawenv; // stack offset -248 struct DISPENV de; // stack offset -152 unsigned long fadeOt[3]; // stack offset -128 struct POLY_GT3 FadeSetTp; // stack offset -112 struct POLY_G4 FadePol; // stack offset -72 } // line 57, offset 0xfdad8 /* * Offset 0xFDAD8, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 392..421) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ _._7DISPMAN(struct DISPMAN *this /*$s2*/, int __in_chrg /*$s3*/) { // line 1, offset 0xfdad8 struct RECT rect; // stack offset -32 } // line 14, offset 0xfdb38 /* * Offset 0xFDBEC, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1105..1110) * Stack frame base $sp, size 112 * Saved registers at offset -4: s0 ra */ void /*$ra*/ DrawEnterName__7DISPMANPc(struct DISPMAN *this /*$s0*/, char *ascii /*$a3*/) { // line 1, offset 0xfdbec char message[64]; // stack offset -72 } // line 6, offset 0xfdc6c /* * Offset 0xFDC6C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1114..1120) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ SetMenuOption__7DISPMANi(struct DISPMAN *this /*$s0*/, int menuOption /*$s1*/) { // line 1, offset 0xfdc6c } // line 7, offset 0xfdca8 /* * Offset 0xFDCBC, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1125..1126) * Stack frame base $sp, size 0 */ void /*$ra*/ SetActiveFunction__7DISPMANi(struct DISPMAN *this /*$a0*/, int menuOption /*$a1*/) { // line 1, offset 0xfdcbc } // line 2, offset 0xfdcc4 /* * Offset 0xFDCC4, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1131..1135) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ MoveActiveAreaTo__7DISPMANi(struct DISPMAN *this /*$s0*/, int area /*$s1*/) { // line 1, offset 0xfdcc4 } // line 5, offset 0xfdd0c /* * Offset 0xFDD0C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1249..1264) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ void /*$ra*/ SelectNewBlock__7DISPMANi(struct DISPMAN *this /*$s0*/, int newBlock /*$a1*/) { // line 1, offset 0xfdd0c } // line 16, offset 0xfddc0 /* * Offset 0xFDDD0, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1710..1724) * Stack frame base $sp, size 0 */ int /*$ra*/ GetArea__7DISPMANii(struct DISPMAN *this /*$a0*/, int x /*$a1*/, int y /*$a2*/) { // line 1, offset 0xfddd0 int n; // $a3 } // line 15, offset 0xfde48 /* * Offset 0xFDE50, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 1962..2014) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ ActiveAreaCancel__7DISPMAN(struct DISPMAN *this /*$s0*/) { // line 1, offset 0xfde50 } // line 53, offset 0xfdf58 /* * Offset 0xFDF58, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2028..2028) * Stack frame base $sp, size 0 */ void /*$ra*/ AddingBlock__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/) { // line 1, offset 0xfdf58 } // line 1, offset 0xfdf60 /* * Offset 0xFDF60, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2030..2030) * Stack frame base $sp, size 0 */ void /*$ra*/ DeletingCurrBlock__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/) { // line 1, offset 0xfdf60 } // line 1, offset 0xfdf68 /* * Offset 0xFDF68, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2033..2039) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ InvalidateArea__7DISPMANG4RECT(struct DISPMAN *this /*$s3*/, struct RECT rect /*stack 4*/) { // line 1, offset 0xfdf68 int n; // $s2 } // line 7, offset 0xfe040 /* * Offset 0xFE040, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2081..2095) * Stack frame base $sp, size 0 */ void /*$ra*/ InvalidateArea__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/) { // line 1, offset 0xfe040 int i; // $a2 } // line 14, offset 0xfe090 /* * Offset 0xFE098, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2100..2125) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ DrawArea__7DISPMANi(struct DISPMAN *this /*$a2*/, int n /*$a1*/) { // line 1, offset 0xfe098 } // line 26, offset 0xfe134 /* * Offset 0xFE144, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2129..2129) * Stack frame base $sp, size 0 */ void /*$ra*/ FlashOn__7DISPMAN(struct DISPMAN *this /*$a0*/) { // line 1, offset 0xfe144 } // line 1, offset 0xfe150 /* * Offset 0xFE150, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2132..2134) * Stack frame base $sp, size 0 */ void /*$ra*/ FlashOff__7DISPMAN(struct DISPMAN *this /*$a0*/) { // line 1, offset 0xfe150 } // line 3, offset 0xfe160 /* * Offset 0xFE160, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2355..2366) * Stack frame base $sp, size 0 */ int /*$ra*/ FindKanji__7DISPMANs(struct DISPMAN *this /*$a0*/, short sjisCode /*$a1*/) { // line 1, offset 0xfe160 int n; // $v1 } // line 12, offset 0xfe1a8 /* * Offset 0xFE1B0, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2371..2374) * Stack frame base $sp, size 72 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ CentrePrintKanji__7DISPMANPsiiiiii(struct DISPMAN *this /*$s5*/, short *string /*$s3*/, int x /*$s6*/, int y /*$s7*/, int maxChars /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int maxChars /*$s4*/, int r /*$s0*/, int g /*$s1*/, int b /*$s2*/) { // line 1, offset 0xfe1b0 } // line 4, offset 0xfe258 /* * Offset 0xFE258, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2379..2395) * Stack frame base $sp, size 288 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ KanjiStrLen__FPsi(short *kanjiStringPtr /*$s1*/, int maxChars /*$s0*/) { // line 1, offset 0xfe258 short textBuffer[128]; // stack offset -272 int totalLen; // $a1 } // line 17, offset 0xfe2f4 /* * Offset 0xFE2F4, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2474..2474) * Stack frame base $sp, size 0 */ int /*$ra*/ GetCurrBlock__7DISPMAN(struct DISPMAN *this /*$a0*/) { // line 1, offset 0xfe2f4 } // line 1, offset 0xfe300 /* * Offset 0xFE300, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2476..2476) * Stack frame base $sp, size 0 */ int /*$ra*/ GetCurrSlice__7DISPMAN(struct DISPMAN *this /*$a0*/) { // line 1, offset 0xfe300 } // line 1, offset 0xfe30c /* * Offset 0xFE30C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2480..2494) * Stack frame base $sp, size 64 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ draw_card__7DISPMANiiPcb(struct DISPMAN *this /*$s1*/, int x /*$s2*/, int y /*$s3*/, char *text /*$a1*/, unsigned int selected /*stack 16*/, unsigned int selected /*$v0*/) { // line 1, offset 0xfe30c } // line 15, offset 0xfe418 /* * Offset 0xFE434, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2515..2559) * Stack frame base $sp, size 0 */ int /*$ra*/ AddIcon__7DISPMANP9TIMSTRUCTiiiiiib(struct DISPMAN *this /*$a0*/, struct TIMSTRUCT *tim /*$t2*/, int x /*$a2*/, int y /*$a1*/, int r /*stack 16*/, int g /*stack 20*/, int b /*stack 24*/, int trans /*stack 28*/, unsigned int scale /*stack 32*/, int r /*$v1*/, int g /*$v0*/, int b /*$v1*/, int trans /*$a0*/, unsigned int scale /*$a3*/) { // line 1, offset 0xfe434 int XPlusW; // $t1 int YPlusH; // $a0 struct POLY_FT4 *polyFT4Ptr; // $t0 } // line 45, offset 0xfe590 /* * Offset 0xFE598, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2616..2624) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ AddMoveImage__7DISPMANP4RECTT1(struct DISPMAN *this /*$s0*/, struct RECT *srect /*$a1*/, struct RECT *drect /*$t0*/) { // line 1, offset 0xfe598 struct DR_MOVE *movePtr; // $s0 } // line 9, offset 0xfe61c /* * Offset 0xFE61C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2630..2665) * Stack frame base $sp, size 0 */ int /*$ra*/ AddSprite__7DISPMANP9TIMSTRUCTiiiiii(struct DISPMAN *this /*$a0*/, struct TIMSTRUCT *tim /*$a1*/, int x /*$a2*/, int y /*$a3*/, int r /*stack 16*/, int g /*stack 20*/, int b /*stack 24*/, int trans /*stack 28*/, int r /*$a2*/, int g /*$v0*/, int b /*$a2*/, int trans /*$v1*/) { // line 1, offset 0xfe61c struct SPRT *spritePtr; // $t0 struct DR_TPAGE *tpagePtr; // $a0 } // line 36, offset 0xfe72c /* * Offset 0xFE72C, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 2699..2730) * Stack frame base $sp, size 104 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ int /*$ra*/ DrawBox__7DISPMANiiiiiii(struct DISPMAN *this /*$a0*/, int x /*$s2*/, int y /*$s3*/, int w /*$s1*/, int h /*stack 16*/, int r /*stack 20*/, int g /*stack 24*/, int b /*stack 28*/, int h /*$s0*/, int r /*$s5*/, int g /*$s6*/, int b /*$s7*/) { // line 1, offset 0xfe72c struct LINE_F4 strF4; // stack offset -88 struct LINE_F2 strF2; // stack offset -56 } // line 32, offset 0xfe834 /* * Offset 0xFE834, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3172..3177) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ write_mess_c__7DISPMANPciiiiiiii(struct DISPMAN *this /*$s0*/, char *mesPtr /*$s1*/, int x /*stack 8*/, int y /*$s4*/, int font /*stack 16*/, int maxChars /*stack 20*/, int r /*stack 24*/, int g /*stack 28*/, int b /*stack 32*/, int trans /*stack 36*/, int font /*$s3*/, int maxChars /*$s2*/, int r /*$s5*/, int g /*$s6*/, int b /*$s7*/, int trans /*$fp*/) { // line 1, offset 0xfe834 int w; // $s0 } // line 6, offset 0xfe908 /* * Offset 0xFE908, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3615..3656) * Stack frame base $sp, size 48 * Saved registers at offset -8: s0 s1 s2 s3 ra */ void /*$ra*/ download_block_icon__7DISPMANiiii(struct DISPMAN *this /*$s2*/, int iconX /*$s3*/, int iconY /*$s1*/, int clutX /*$a3*/, int clutY /*stack 16*/, int clutY /*$v0*/) { // line 1, offset 0xfe908 struct RECT rect; // stack offset -32 struct TIMSTRUCT *timPtr; // $s0 unsigned short *clutWordPtr; // $v1 { // line 1, offset 0xfe908 int n; // $a0 } // line 22, offset 0xfe998 } // line 42, offset 0xfea44 /* * Offset 0xFEA44, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3809..3834) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ move_screen__7DISPMANiii(struct DISPMAN *this /*$s0*/, int startY /*$a1*/, int finishY /*$s3*/, int steps /*$a3*/) { // line 1, offset 0xfea44 int screenY; // $s1 } // line 26, offset 0xfeb00 /* * Offset 0xFEB24, from D:\driver2\game\MEMCARD\DISPLAY.CPP (lines 3840..3853) * Stack frame base $sp, size 0 */ int /*$ra*/ GetCyclesPerSecond__7DISPMAN(struct DISPMAN *this /*$a0*/) { // line 1, offset 0xfeb24 } // line 14, offset 0xfeb70 Source file(s) D:\driver2\game\MEMCARD\PAD.CPP+D:\driver2\game\PAD.CPP, object file memcard\obj\pad.obj overlay id // 47 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct MouseData { unsigned short buttons; // size=0, offset=0 char xOffset; // size=0, offset=2 char yOffset; // size=0, offset=3 }; struct NegconData { unsigned short digitalButtons; // size=0, offset=0 char centralTwist; // size=0, offset=2 char buttonI; // size=0, offset=3 char buttonII; // size=0, offset=4 char topLeft; // size=0, offset=5 }; struct AnalogjoyData { unsigned short digitalButtons; // size=0, offset=0 unsigned char right_x; // size=0, offset=2 unsigned char right_y; // size=0, offset=3 unsigned char left_x; // size=0, offset=4 unsigned char left_y; // size=0, offset=5 }; union ._122 { unsigned short pad; // size=0, offset=0 struct NegconData negcon; // size=6, offset=0 struct MouseData mouse; // size=4, offset=0 }; struct TapCtrllerData { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._122 data; // size=6, offset=2 }; struct MultiTapData { struct TapCtrllerData ctrllers[4]; // size=32, offset=0 }; union ._125 { unsigned short pad; // size=0, offset=0 struct MouseData mouse; // size=4, offset=0 struct NegconData negcon; // size=6, offset=0 struct AnalogjoyData joystick; // size=6, offset=0 struct MultiTapData tap; // size=32, offset=0 }; struct ControllerPacket { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._125 data; // size=32, offset=2 }; struct _CARD { char Magic[2]; // size=2, offset=0 char Type; // size=0, offset=2 char BlockEntry; // size=0, offset=3 char Title[64]; // size=64, offset=4 char reserve[28]; // size=28, offset=68 char Clut[32]; // size=32, offset=96 char Icon[3][128]; // size=384, offset=128 }; struct TIMSTRUCT { unsigned short clut; // size=0, offset=0 unsigned short tpage; // size=0, offset=2 unsigned short x; // size=0, offset=4 unsigned short y; // size=0, offset=6 unsigned short w; // size=0, offset=8 unsigned short h; // size=0, offset=10 }; struct FONTTABSTRUCT { struct TIMSTRUCT timStruct; // size=12, offset=0 short width; // size=0, offset=12 short height; // size=0, offset=14 }; struct KANJILOOKUP { short sjisCode; // size=0, offset=0 unsigned int used; // size=0, offset=4 struct TIMSTRUCT timStruct; // size=12, offset=8 }; struct SLICEHEADER { int size; // size=0, offset=0 char title[20]; // size=20, offset=4 char iconRef[3]; // size=3, offset=24 char used; // size=0, offset=27 short checksum; // size=0, offset=28 short pad; // size=0, offset=30 }; struct BLOCKINFO { unsigned int infoOK; // size=0, offset=0 int id; // size=0, offset=4 int size; // size=0, offset=8 int freeBytes; // size=0, offset=12 struct DIRENTRY dirEntry; // size=40, offset=16 struct _CARD header; // size=512, offset=56 struct TIMSTRUCT iconTim; // size=12, offset=568 unsigned int gremBlock; // size=0, offset=580 int sliceCount; // size=0, offset=584 int usedSlices; // size=0, offset=588 struct SLICEHEADER sliceHeader[16]; // size=512, offset=592 }; struct CARDINFO { int usedBlocks; // size=0, offset=0 struct BLOCKINFO blockInfo[15]; // size=16560, offset=4 unsigned int dirOK; // size=0, offset=16564 unsigned int infoOK; // size=0, offset=16568 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct MCSLOT { struct CARDINFO m_cardInfo; // size=16572, offset=0 int m_port; // size=0, offset=16572 int m_card; // size=0, offset=16576 int m_chan; // size=0, offset=16580 char m_device[6]; // size=6, offset=16584 int m_blocksRead; // size=0, offset=16592 int m_readFilePtr; // size=0, offset=16596 int m_readBytes; // size=0, offset=16600 int m_fromReadBytes; // size=0, offset=16604 int m_toReadBytes; // size=0, offset=16608 int m_writeFilePtr; // size=0, offset=16612 int m_writeBytes; // size=0, offset=16616 int m_fromWriteBytes; // size=0, offset=16620 int m_toWriteBytes; // size=0, offset=16624 int m_iconX; // size=0, offset=16628 int m_iconY; // size=0, offset=16632 int m_clutX; // size=0, offset=16636 int m_clutY; // size=0, offset=16640 unsigned int m_doCheckSum; // size=0, offset=16644 short m_checkSumWork; // size=0, offset=16648 short m_checkSum; // size=0, offset=16650 }; struct PAD { struct MCSLOT m_mcSlot0; // size=16652, offset=0 struct MCSLOT m_mcSlot1; // size=16652, offset=16652 int m_mouseX; // size=0, offset=33304 int m_mouseY; // size=0, offset=33308 int m_scanPort; // size=0, offset=33312 unsigned int m_cardChanged[2]; // size=8, offset=33316 unsigned int m_bControllerChanged; // size=0, offset=33324 unsigned int m_bMouseTested; // size=0, offset=33328 unsigned int m_bUsingMouse; // size=0, offset=33332 unsigned int m_bUsingNegCon; // size=0, offset=33336 unsigned int m_bControllerInserted; // size=0, offset=33340 int m_nLastControllerType; // size=0, offset=33344 char slotString[3]; // size=3, offset=33348 struct MCSLOT *m_slotObjPtrs[2]; // size=8, offset=33352 int m_slotObjPorts[2]; // size=8, offset=33360 int m_currSlotObj; // size=0, offset=33368 int m_portStatus[8]; // size=32, offset=33372 }; // 67 typedefs typedef struct TCB TCB; typedef struct EXEC EXEC; typedef struct DIRENTRY DIRENTRY; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct SPRT SPRT; typedef struct DR_AREA DR_AREA; typedef struct DR_MOVE DR_MOVE; typedef struct DR_TPAGE DR_TPAGE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct MouseData MouseData; typedef struct NegconData NegconData; typedef struct AnalogjoyData AnalogjoyData; typedef struct TapCtrllerData TapCtrllerData; typedef struct MultiTapData MultiTapData; typedef struct ControllerPacket ControllerPacket; typedef struct _CARD _CARD; typedef struct TIMSTRUCT TIMSTRUCT; typedef struct FONTTABSTRUCT FONTTABSTRUCT; typedef struct KANJILOOKUP KANJILOOKUP; typedef struct SLICEHEADER SLICEHEADER; typedef struct BLOCKINFO BLOCKINFO; typedef struct CARDINFO CARDINFO; typedef struct FILEFORMAT FILEFORMAT; typedef struct MCSLOT MCSLOT; typedef struct PAD PAD; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned short PadData; // 0 labels // 15 external declarations extern struct ControllerPacket g_controllerData[2]; // offset 0x0010ec9c extern unsigned short g_PAD_FRB; // offset 0x0010ec80 extern unsigned short g_PAD_FLB; // offset 0x0010ec82 extern unsigned short g_PAD_FRT; // offset 0x0010ec84 extern unsigned short g_PAD_FLT; // offset 0x0010ec86 extern unsigned short g_PAD_RU; // offset 0x0010ec88 extern unsigned short g_PAD_RD; // offset 0x0010ec8a extern unsigned short g_PAD_RL; // offset 0x0010ec8c extern unsigned short g_PAD_RR; // offset 0x0010ec8e extern unsigned short g_PAD_LU; // offset 0x0010ec90 extern unsigned short g_PAD_LD; // offset 0x0010ec92 extern unsigned short g_PAD_LL; // offset 0x0010ec94 extern unsigned short g_PAD_LR; // offset 0x0010ec96 extern unsigned short g_PAD_SEL; // offset 0x0010ec98 extern unsigned short g_PAD_START; // offset 0x0010ec9a // 32 functions /* * Offset 0xFEB70, from D:\driver2\game\MEMCARD\PAD.CPP (lines 32..81) * Stack frame base $sp, size 48 * Saved registers at offset -4: s0 s1 s2 ra */ struct PAD * /*$ra*/ __3PADPc(struct PAD *this /*$s1*/, char *bufferPtr /*$a1*/) { // line 1, offset 0xfeb70 } // line 28, offset 0xfec44 /* * Offset 0xFECC0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 137..432) * Stack frame base $sp, size 72 * Saved registers at offset -4: s0 s1 s2 ra */ unsigned short /*$ra*/ GetPadData__3PADi(struct PAD *this /*$s1*/, int pad /*$s0*/) { // line 1, offset 0xfecc0 struct ControllerPacket cData; // stack offset -56 unsigned short retVal; // $s2 } // line 296, offset 0xff2cc /* * Offset 0xFF2CC, from D:\driver2\game\MEMCARD\PAD.CPP (lines 527..565) * Stack frame base $sp, size 0 */ char * /*$ra*/ port_name__3PADi(struct PAD *this /*$a2*/, int port /*$a1*/) { // line 1, offset 0xff2cc } // line 36, offset 0xff3b8 /* * Offset 0xFF3C0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 569..632) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ unsigned int /*$ra*/ WaitUntilCardRemoved__3PADi(struct PAD *this /*$s3*/, int slot /*$a1*/) { // line 1, offset 0xff3c0 struct RECT rect; // stack offset -48 short padData; // $a0 unsigned int bInBox; // $s2 { // line 8, offset 0xff410 { // line 14, offset 0xff448 { // line 1, offset 0xff448 struct PAD *this; // $s3 { // line 1, offset 0xff448 } // line 1, offset 0xff4bc } // line 1, offset 0xff4bc { // line 15, offset 0xff4c4 { // line 16, offset 0xff4c4 struct PAD *this; // $s3 { // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 { // line 16, offset 0xff4c4 struct PAD *this; // $s3 { // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 { // line 16, offset 0xff4c4 struct PAD *this; // $s3 { // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 } // line 16, offset 0xff4c4 { // line 1, offset 0xff564 struct PAD *this; // $s3 { // line 1, offset 0xff564 } // line 1, offset 0xff564 } // line 1, offset 0xff564 { // line 1, offset 0xff57c struct PAD *this; // $s3 { // line 1, offset 0xff57c } // line 1, offset 0xff57c } // line 1, offset 0xff57c { // line 1, offset 0xff594 struct PAD *this; // $s3 { // line 1, offset 0xff594 } // line 1, offset 0xff594 } // line 1, offset 0xff594 { // line 45, offset 0xff5a4 struct PAD *this; // $s3 { // line 45, offset 0xff5a4 } // line 45, offset 0xff5a4 } // line 45, offset 0xff5a4 { // line 45, offset 0xff5a4 struct PAD *this; // $s3 { // line 45, offset 0xff5a4 } // line 45, offset 0xff5a4 } // line 45, offset 0xff5a4 } // line 56, offset 0xff664 } // line 64, offset 0xff6b4 } // line 64, offset 0xff6b4 } // line 64, offset 0xff6e4 /* * Offset 0xFF6E4, from D:\driver2\game\MEMCARD\PAD.CPP (lines 655..725) * Stack frame base $sp, size 80 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ unsigned int /*$ra*/ WaitUntilAnyCardInserted__3PAD(struct PAD *this /*$s3*/) { // line 1, offset 0xff6e4 struct RECT rect; // stack offset -48 unsigned int bInBox; // $s2 { // line 8, offset 0xff730 { // line 20, offset 0xff7a0 { // line 1, offset 0xff7a0 struct PAD *this; // $s3 { // line 1, offset 0xff7a0 } // line 1, offset 0xff814 } // line 1, offset 0xff814 { // line 21, offset 0xff81c { // line 22, offset 0xff81c struct PAD *this; // $s3 { // line 22, offset 0xff81c } // line 22, offset 0xff81c } // line 22, offset 0xff81c { // line 22, offset 0xff81c struct PAD *this; // $s3 { // line 22, offset 0xff81c } // line 22, offset 0xff81c } // line 22, offset 0xff81c { // line 22, offset 0xff81c struct PAD *this; // $s3 { // line 22, offset 0xff81c } // line 22, offset 0xff81c } // line 22, offset 0xff81c { // line 1, offset 0xff8c0 struct PAD *this; // $s3 { // line 1, offset 0xff8c0 } // line 1, offset 0xff8c0 } // line 1, offset 0xff8c0 { // line 1, offset 0xff8d8 struct PAD *this; // $s3 { // line 1, offset 0xff8d8 } // line 1, offset 0xff8d8 } // line 1, offset 0xff8d8 { // line 1, offset 0xff8f0 struct PAD *this; // $s3 { // line 1, offset 0xff8f0 } // line 1, offset 0xff8f0 } // line 1, offset 0xff8f0 { // line 53, offset 0xff900 struct PAD *this; // $s3 { // line 53, offset 0xff900 } // line 53, offset 0xff900 } // line 53, offset 0xff900 { // line 53, offset 0xff900 struct PAD *this; // $s3 { // line 53, offset 0xff900 } // line 53, offset 0xff900 } // line 53, offset 0xff900 } // line 63, offset 0xff9b0 } // line 71, offset 0xff9ec } // line 71, offset 0xff9ec } // line 71, offset 0xffa1c /* * Offset 0xFFA1C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 794..895) * Stack frame base $sp, size 32 * Saved registers at offset -4: s0 s1 s2 ra */ void /*$ra*/ check_ports__3PAD(struct PAD *this /*$s1*/) { // line 1, offset 0xffa1c } // line 102, offset 0xffc80 /* * Offset 0xFFC98, from D:\driver2\game\MEMCARD\PAD.CPP (lines 905..950) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 s6 s7 ra */ void /*$ra*/ search_ports__3PADib(struct PAD *this /*$s4*/, int slot /*$s0*/, unsigned int cycle /*$a2*/) { // line 1, offset 0xffc98 } // line 46, offset 0xffe18 /* * Offset 0xFFE44, from D:\driver2\game\MEMCARD\PAD.CPP (lines 89..94) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ void /*$ra*/ _._3PAD(struct PAD *this /*$s1*/, int __in_chrg /*$s0*/) { // line 1, offset 0xffe44 } // line 1, offset 0xffe44 /* * Offset 0xFFEA0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 103..133) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ int /*$ra*/ UpdateSlots__3PAD(struct PAD *this /*$s0*/) { // line 1, offset 0xffea0 } // line 31, offset 0xffee0 /* * Offset 0xFFEE0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 437..444) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ NegConInserted__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0xffee0 } // line 8, offset 0xfff10 /* * Offset 0xFFF10, from D:\driver2\game\MEMCARD\PAD.CPP (lines 448..459) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ ControllerInserted__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0xfff10 } // line 12, offset 0xfff48 /* * Offset 0xFFF48, from D:\driver2\game\MEMCARD\PAD.CPP (lines 463..464) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ ControllerChanged__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0xfff48 } // line 2, offset 0xfff5c /* * Offset 0xFFF5C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 468..486) * Stack frame base $sp, size 56 */ unsigned int /*$ra*/ SetControllerType__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0xfff5c struct ControllerPacket cData; // stack offset -40 } // line 19, offset 0x1000d0 /* * Offset 0x1000D0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 490..511) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ MouseInserted__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x1000d0 } // line 22, offset 0x100158 /* * Offset 0x100158, from D:\driver2\game\MEMCARD\PAD.CPP (lines 514..514) * Stack frame base $sp, size 0 */ int /*$ra*/ GetMouseX__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x100158 } // line 1, offset 0x10016c /* * Offset 0x10016C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 515..515) * Stack frame base $sp, size 0 */ int /*$ra*/ GetMouseY__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x10016c } // line 1, offset 0x100180 /* * Offset 0x100180, from D:\driver2\game\MEMCARD\PAD.CPP (lines 519..520) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ void /*$ra*/ ResetPadData__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x100180 } // line 2, offset 0x1001ac /* * Offset 0x1001AC, from D:\driver2\game\MEMCARD\PAD.CPP (lines 733..738) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ char * /*$ra*/ GetPortName__3PADi(struct PAD *this /*$s1*/, int slot /*$s0*/) { // line 1, offset 0x1001ac } // line 6, offset 0x100214 /* * Offset 0x100214, from D:\driver2\game\MEMCARD\PAD.CPP (lines 757..760) * Stack frame base $sp, size 24 * Saved registers at offset -4: s0 ra */ char * /*$ra*/ GetControllerPortName__3PAD(struct PAD *this /*$s0*/) { // line 1, offset 0x100214 } // line 4, offset 0x100244 /* * Offset 0x100244, from D:\driver2\game\MEMCARD\PAD.CPP (lines 778..779) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ CardSelected__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/) { // line 1, offset 0x100244 } // line 2, offset 0x100260 /* * Offset 0x100260, from D:\driver2\game\MEMCARD\PAD.CPP (lines 783..784) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ unsigned int /*$ra*/ CurrCardInfoRead__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x100260 } // line 2, offset 0x10029c /* * Offset 0x10029C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 956..972) * Stack frame base $sp, size 0 */ int /*$ra*/ next_port__3PADi(struct PAD *this /*$a0*/, int port /*$a1*/) { // line 1, offset 0x10029c } // line 17, offset 0x1002a4 /* * Offset 0x1002A4, from D:\driver2\game\MEMCARD\PAD.CPP (lines 978..979) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ int /*$ra*/ GetCurrNoUsedBlocks__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x1002a4 } // line 2, offset 0x1002e0 /* * Offset 0x1002E0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 984..985) * Stack frame base $sp, size 24 * Saved registers at offset -8: ra */ unsigned int /*$ra*/ CurrSlotBlocksShared__3PADii(struct PAD *this /*$a0*/, int block1 /*$a1*/, int block2 /*$a2*/) { // line 1, offset 0x1002e0 } // line 2, offset 0x10031c /* * Offset 0x10031C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1001..1002) * Stack frame base $sp, size 0 */ struct MCSLOT * /*$ra*/ GetCurrSlotPtr__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x10031c } // line 2, offset 0x100340 /* * Offset 0x100340, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1006..1007) * Stack frame base $sp, size 0 */ int /*$ra*/ GetCurrSlot__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x100340 } // line 2, offset 0x100354 /* * Offset 0x100354, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1011..1012) * Stack frame base $sp, size 0 */ struct MCSLOT * /*$ra*/ GetDestSlotPtr__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x100354 } // line 2, offset 0x10037c /* * Offset 0x10037C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1017..1021) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ CardChanged__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/) { // line 1, offset 0x10037c } // line 5, offset 0x1003a8 /* * Offset 0x1003B0, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1029..1030) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ CardInserted__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/) { // line 1, offset 0x1003b0 } // line 2, offset 0x1003e4 /* * Offset 0x1003E4, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1035..1038) * Stack frame base $sp, size 0 */ void /*$ra*/ CycleSelectedSlot__3PAD(struct PAD *this /*$a0*/) { // line 1, offset 0x1003e4 } // line 4, offset 0x10042c /* * Offset 0x10042C, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1049..1050) * Stack frame base $sp, size 0 */ unsigned int /*$ra*/ CardFormatted__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/) { // line 1, offset 0x10042c } // line 2, offset 0x100460 /* * Offset 0x100460, from D:\driver2\game\MEMCARD\PAD.CPP (lines 1054..1058) * Stack frame base $sp, size 32 * Saved registers at offset -8: s0 s1 ra */ int /*$ra*/ FormatCard__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/) { // line 1, offset 0x100460 } // line 5, offset 0x1004c8 Source file(s) D:\driver2\game\MEMCARD\TEXT.CPP+D:\driver2\game\TEXT.CPP, object file memcard\obj\text.obj overlay id // 46 complex types struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct MouseData { unsigned short buttons; // size=0, offset=0 char xOffset; // size=0, offset=2 char yOffset; // size=0, offset=3 }; struct NegconData { unsigned short digitalButtons; // size=0, offset=0 char centralTwist; // size=0, offset=2 char buttonI; // size=0, offset=3 char buttonII; // size=0, offset=4 char topLeft; // size=0, offset=5 }; struct AnalogjoyData { unsigned short digitalButtons; // size=0, offset=0 unsigned char right_x; // size=0, offset=2 unsigned char right_y; // size=0, offset=3 unsigned char left_x; // size=0, offset=4 unsigned char left_y; // size=0, offset=5 }; union ._122 { unsigned short pad; // size=0, offset=0 struct NegconData negcon; // size=6, offset=0 struct MouseData mouse; // size=4, offset=0 }; struct TapCtrllerData { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._122 data; // size=6, offset=2 }; struct MultiTapData { struct TapCtrllerData ctrllers[4]; // size=32, offset=0 }; union ._125 { unsigned short pad; // size=0, offset=0 struct MouseData mouse; // size=4, offset=0 struct NegconData negcon; // size=6, offset=0 struct AnalogjoyData joystick; // size=6, offset=0 struct MultiTapData tap; // size=32, offset=0 }; struct _CARD { char Magic[2]; // size=2, offset=0 char Type; // size=0, offset=2 char BlockEntry; // size=0, offset=3 char Title[64]; // size=64, offset=4 char reserve[28]; // size=28, offset=68 char Clut[32]; // size=32, offset=96 char Icon[3][128]; // size=384, offset=128 }; struct TIMSTRUCT { unsigned short clut; // size=0, offset=0 unsigned short tpage; // size=0, offset=2 unsigned short x; // size=0, offset=4 unsigned short y; // size=0, offset=6 unsigned short w; // size=0, offset=8 unsigned short h; // size=0, offset=10 }; struct FONTTABSTRUCT { struct TIMSTRUCT timStruct; // size=12, offset=0 short width; // size=0, offset=12 short height; // size=0, offset=14 }; struct KANJILOOKUP { short sjisCode; // size=0, offset=0 unsigned int used; // size=0, offset=4 struct TIMSTRUCT timStruct; // size=12, offset=8 }; struct SLICEHEADER { int size; // size=0, offset=0 char title[20]; // size=20, offset=4 char iconRef[3]; // size=3, offset=24 char used; // size=0, offset=27 short checksum; // size=0, offset=28 short pad; // size=0, offset=30 }; struct BLOCKINFO { unsigned int infoOK; // size=0, offset=0 int id; // size=0, offset=4 int size; // size=0, offset=8 int freeBytes; // size=0, offset=12 struct DIRENTRY dirEntry; // size=40, offset=16 struct _CARD header; // size=512, offset=56 struct TIMSTRUCT iconTim; // size=12, offset=568 unsigned int gremBlock; // size=0, offset=580 int sliceCount; // size=0, offset=584 int usedSlices; // size=0, offset=588 struct SLICEHEADER sliceHeader[16]; // size=512, offset=592 }; struct CARDINFO { int usedBlocks; // size=0, offset=0 struct BLOCKINFO blockInfo[15]; // size=16560, offset=4 unsigned int dirOK; // size=0, offset=16564 unsigned int infoOK; // size=0, offset=16568 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct MCSLOT { struct CARDINFO m_cardInfo; // size=16572, offset=0 int m_port; // size=0, offset=16572 int m_card; // size=0, offset=16576 int m_chan; // size=0, offset=16580 char m_device[6]; // size=6, offset=16584 int m_blocksRead; // size=0, offset=16592 int m_readFilePtr; // size=0, offset=16596 int m_readBytes; // size=0, offset=16600 int m_fromReadBytes; // size=0, offset=16604 int m_toReadBytes; // size=0, offset=16608 int m_writeFilePtr; // size=0, offset=16612 int m_writeBytes; // size=0, offset=16616 int m_fromWriteBytes; // size=0, offset=16620 int m_toWriteBytes; // size=0, offset=16624 int m_iconX; // size=0, offset=16628 int m_iconY; // size=0, offset=16632 int m_clutX; // size=0, offset=16636 int m_clutY; // size=0, offset=16640 unsigned int m_doCheckSum; // size=0, offset=16644 short m_checkSumWork; // size=0, offset=16648 short m_checkSum; // size=0, offset=16650 }; struct PAD { struct MCSLOT m_mcSlot0; // size=16652, offset=0 struct MCSLOT m_mcSlot1; // size=16652, offset=16652 int m_mouseX; // size=0, offset=33304 int m_mouseY; // size=0, offset=33308 int m_scanPort; // size=0, offset=33312 unsigned int m_cardChanged[2]; // size=8, offset=33316 unsigned int m_bControllerChanged; // size=0, offset=33324 unsigned int m_bMouseTested; // size=0, offset=33328 unsigned int m_bUsingMouse; // size=0, offset=33332 unsigned int m_bUsingNegCon; // size=0, offset=33336 unsigned int m_bControllerInserted; // size=0, offset=33340 int m_nLastControllerType; // size=0, offset=33344 char slotString[3]; // size=3, offset=33348 struct MCSLOT *m_slotObjPtrs[2]; // size=8, offset=33352 int m_slotObjPorts[2]; // size=8, offset=33360 int m_currSlotObj; // size=0, offset=33368 int m_portStatus[8]; // size=32, offset=33372 }; // 66 typedefs typedef struct TCB TCB; typedef struct EXEC EXEC; typedef struct DIRENTRY DIRENTRY; typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct SPRT SPRT; typedef struct DR_AREA DR_AREA; typedef struct DR_MOVE DR_MOVE; typedef struct DR_TPAGE DR_TPAGE; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct MouseData MouseData; typedef struct NegconData NegconData; typedef struct AnalogjoyData AnalogjoyData; typedef struct TapCtrllerData TapCtrllerData; typedef struct MultiTapData MultiTapData; typedef struct _CARD _CARD; typedef struct TIMSTRUCT TIMSTRUCT; typedef struct FONTTABSTRUCT FONTTABSTRUCT; typedef struct KANJILOOKUP KANJILOOKUP; typedef struct SLICEHEADER SLICEHEADER; typedef struct BLOCKINFO BLOCKINFO; typedef struct CARDINFO CARDINFO; typedef struct FILEFORMAT FILEFORMAT; typedef struct MCSLOT MCSLOT; typedef struct PAD PAD; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned short PadData; // 0 labels // 2 external declarations extern char *g_msg[73]; // offset 0x0010ece0 extern char *g_textBuffer; // offset 0x0010ee04 // 1 functions /* * Offset 0x1004C8, from D:\driver2\game\MEMCARD\TEXT.CPP (lines 16..171) * Stack frame base $sp, size 0 */ int /*$ra*/ ParseLanguageFile__FPci(char *textBuffer /*$a0*/, int language /*$a1*/) { // line 1, offset 0x1004c8 int m; // $t0 char *textPtr; // $a0 } // line 156, offset 0x1005d8 Source file(s) D:\driver2\game\CMAN.CPP+D:\driver2\game\MEMCARD\CMAN.CPP, object file memcard\obj\cman.obj overlay id // 48 complex types struct VECTOR { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 long pad; // size=0, offset=12 }; struct SVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 short vz; // size=0, offset=4 short pad; // size=0, offset=6 }; struct CVECTOR { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char cd; // size=0, offset=3 }; struct DVECTOR { short vx; // size=0, offset=0 short vy; // size=0, offset=2 }; struct RVECTOR { struct SVECTOR v; // size=8, offset=0 unsigned char uv[2]; // size=2, offset=8 unsigned short pad; // size=0, offset=10 struct CVECTOR c; // size=4, offset=12 struct DVECTOR sxy; // size=4, offset=16 unsigned long sz; // size=0, offset=20 }; struct CRVECTOR3 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r12; // size=24, offset=24 struct RVECTOR r20; // size=24, offset=48 struct RVECTOR *r0; // size=24, offset=72 struct RVECTOR *r1; // size=24, offset=76 struct RVECTOR *r2; // size=24, offset=80 unsigned long *rtn; // size=0, offset=84 }; struct CRVECTOR4 { struct RVECTOR r01; // size=24, offset=0 struct RVECTOR r02; // size=24, offset=24 struct RVECTOR r31; // size=24, offset=48 struct RVECTOR r32; // size=24, offset=72 struct RVECTOR rc; // size=24, offset=96 struct RVECTOR *r0; // size=24, offset=120 struct RVECTOR *r1; // size=24, offset=124 struct RVECTOR *r2; // size=24, offset=128 struct RVECTOR *r3; // size=24, offset=132 unsigned long *rtn; // size=0, offset=136 }; struct RECT { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 }; struct DR_ENV { unsigned long tag; // size=0, offset=0 unsigned long code[15]; // size=60, offset=4 }; struct DRAWENV { struct RECT clip; // size=8, offset=0 short ofs[2]; // size=4, offset=8 struct RECT tw; // size=8, offset=12 unsigned short tpage; // size=0, offset=20 unsigned char dtd; // size=0, offset=22 unsigned char dfe; // size=0, offset=23 unsigned char isbg; // size=0, offset=24 unsigned char r0; // size=0, offset=25 unsigned char g0; // size=0, offset=26 unsigned char b0; // size=0, offset=27 struct DR_ENV dr_env; // size=64, offset=28 }; struct DISPENV { struct RECT disp; // size=8, offset=0 struct RECT screen; // size=8, offset=8 unsigned char isinter; // size=0, offset=16 unsigned char isrgb24; // size=0, offset=17 unsigned char pad0; // size=0, offset=18 unsigned char pad1; // size=0, offset=19 }; struct POLY_F4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 short x1; // size=0, offset=12 short y1; // size=0, offset=14 short x2; // size=0, offset=16 short y2; // size=0, offset=18 short x3; // size=0, offset=20 short y3; // size=0, offset=22 }; struct POLY_FT4 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char u1; // size=0, offset=20 unsigned char v1; // size=0, offset=21 unsigned short tpage; // size=0, offset=22 short x2; // size=0, offset=24 short y2; // size=0, offset=26 unsigned char u2; // size=0, offset=28 unsigned char v2; // size=0, offset=29 unsigned short pad1; // size=0, offset=30 short x3; // size=0, offset=32 short y3; // size=0, offset=34 unsigned char u3; // size=0, offset=36 unsigned char v3; // size=0, offset=37 unsigned short pad2; // size=0, offset=38 }; struct POLY_G3 { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char r1; // size=0, offset=12 unsigned char g1; // size=0, offset=13 unsigned char b1; // size=0, offset=14 unsigned char pad1; // size=0, offset=15 short x1; // size=0, offset=16 short y1; // size=0, offset=18 unsigned char r2; // size=0, offset=20 unsigned char g2; // size=0, offset=21 unsigned char b2; // size=0, offset=22 unsigned char pad2; // size=0, offset=23 short x2; // size=0, offset=24 short y2; // size=0, offset=26 }; struct SPRT { unsigned long tag; // size=0, offset=0 unsigned char r0; // size=0, offset=4 unsigned char g0; // size=0, offset=5 unsigned char b0; // size=0, offset=6 unsigned char code; // size=0, offset=7 short x0; // size=0, offset=8 short y0; // size=0, offset=10 unsigned char u0; // size=0, offset=12 unsigned char v0; // size=0, offset=13 unsigned short clut; // size=0, offset=14 short w; // size=0, offset=16 short h; // size=0, offset=18 }; struct DR_AREA { unsigned long tag; // size=0, offset=0 unsigned long code[2]; // size=8, offset=4 }; struct DR_MOVE { unsigned long tag; // size=0, offset=0 unsigned long code[5]; // size=20, offset=4 }; struct DR_TPAGE { unsigned long tag; // size=0, offset=0 unsigned long code[1]; // size=4, offset=4 }; struct TCB { long status; // size=0, offset=0 long mode; // size=0, offset=4 unsigned long reg[40]; // size=160, offset=8 long system[6]; // size=24, offset=168 }; struct EXEC { unsigned long pc0; // size=0, offset=0 unsigned long gp0; // size=0, offset=4 unsigned long t_addr; // size=0, offset=8 unsigned long t_size; // size=0, offset=12 unsigned long d_addr; // size=0, offset=16 unsigned long d_size; // size=0, offset=20 unsigned long b_addr; // size=0, offset=24 unsigned long b_size; // size=0, offset=28 unsigned long s_addr; // size=0, offset=32 unsigned long s_size; // size=0, offset=36 unsigned long sp; // size=0, offset=40 unsigned long fp; // size=0, offset=44 unsigned long gp; // size=0, offset=48 unsigned long ret; // size=0, offset=52 unsigned long base; // size=0, offset=56 }; struct DIRENTRY { char name[20]; // size=20, offset=0 long attr; // size=0, offset=20 long size; // size=0, offset=24 struct DIRENTRY *next; // size=40, offset=28 long head; // size=0, offset=32 char system[4]; // size=4, offset=36 }; struct SndVolume2 { short left; // size=0, offset=0 short right; // size=0, offset=2 }; struct CdlLOC { unsigned char minute; // size=0, offset=0 unsigned char second; // size=0, offset=1 unsigned char sector; // size=0, offset=2 unsigned char track; // size=0, offset=3 }; struct VECTOR_NOPAD { long vx; // size=0, offset=0 long vy; // size=0, offset=4 long vz; // size=0, offset=8 }; struct BOX { float xmin; // size=0, offset=0 float ymin; // size=0, offset=4 float zmin; // size=0, offset=8 float xmax; // size=0, offset=12 float ymax; // size=0, offset=16 float zmax; // size=0, offset=20 }; struct BSPHERE { struct VECTOR bounding_sphere_mid; // size=16, offset=0 float bounding_sphere; // size=0, offset=16 }; struct RGB { unsigned char r; // size=0, offset=0 unsigned char g; // size=0, offset=1 unsigned char b; // size=0, offset=2 unsigned char pad; // size=0, offset=3 }; struct UV_INFO { unsigned char u; // size=0, offset=0 unsigned char v; // size=0, offset=1 }; struct PSXBUTTON { short x; // size=0, offset=0 short y; // size=0, offset=2 short w; // size=0, offset=4 short h; // size=0, offset=6 unsigned char l; // size=0, offset=8 unsigned char r; // size=0, offset=9 unsigned char u; // size=0, offset=10 unsigned char d; // size=0, offset=11 int userDrawFunctionNum; // size=0, offset=12 short s_x; // size=0, offset=16 short s_y; // size=0, offset=18 int action; // size=0, offset=20 int var; // size=0, offset=24 char Name[32]; // size=32, offset=28 }; struct MouseData { unsigned short buttons; // size=0, offset=0 char xOffset; // size=0, offset=2 char yOffset; // size=0, offset=3 }; struct NegconData { unsigned short digitalButtons; // size=0, offset=0 char centralTwist; // size=0, offset=2 char buttonI; // size=0, offset=3 char buttonII; // size=0, offset=4 char topLeft; // size=0, offset=5 }; struct AnalogjoyData { unsigned short digitalButtons; // size=0, offset=0 unsigned char right_x; // size=0, offset=2 unsigned char right_y; // size=0, offset=3 unsigned char left_x; // size=0, offset=4 unsigned char left_y; // size=0, offset=5 }; union ._122 { unsigned short pad; // size=0, offset=0 struct NegconData negcon; // size=6, offset=0 struct MouseData mouse; // size=4, offset=0 }; struct TapCtrllerData { unsigned char transStatus; // size=0, offset=0 unsigned char dataFormat; // size=0, offset=1 union ._122 data; // size=6, offset=2 }; struct MultiTapData { struct TapCtrllerData ctrllers[4]; // size=32, offset=0 }; union ._125 { unsigned short pad; // size=0, offset=0 struct MouseData mouse; // size=4, offset=0 struct NegconData negcon; // size=6, offset=0 struct AnalogjoyData joystick; // size=6, offset=0 struct MultiTapData tap; // size=32, offset=0 }; struct _CARD { char Magic[2]; // size=2, offset=0 char Type; // size=0, offset=2 char BlockEntry; // size=0, offset=3 char Title[64]; // size=64, offset=4 char reserve[28]; // size=28, offset=68 char Clut[32]; // size=32, offset=96 char Icon[3][128]; // size=384, offset=128 }; struct TIMSTRUCT { unsigned short clut; // size=0, offset=0 unsigned short tpage; // size=0, offset=2 unsigned short x; // size=0, offset=4 unsigned short y; // size=0, offset=6 unsigned short w; // size=0, offset=8 unsigned short h; // size=0, offset=10 }; struct FONTTABSTRUCT { struct TIMSTRUCT timStruct; // size=12, offset=0 short width; // size=0, offset=12 short height; // size=0, offset=14 }; struct KANJILOOKUP { short sjisCode; // size=0, offset=0 unsigned int used; // size=0, offset=4 struct TIMSTRUCT timStruct; // size=12, offset=8 }; struct SLICEHEADER { int size; // size=0, offset=0 char title[20]; // size=20, offset=4 char iconRef[3]; // size=3, offset=24 char used; // size=0, offset=27 short checksum; // size=0, offset=28 short pad; // size=0, offset=30 }; struct BLOCKINFO { unsigned int infoOK; // size=0, offset=0 int id; // size=0, offset=4 int size; // size=0, offset=8 int freeBytes; // size=0, offset=12 struct DIRENTRY dirEntry; // size=40, offset=16 struct _CARD header; // size=512, offset=56 struct TIMSTRUCT iconTim; // size=12, offset=568 unsigned int gremBlock; // size=0, offset=580 int sliceCount; // size=0, offset=584 int usedSlices; // size=0, offset=588 struct SLICEHEADER sliceHeader[16]; // size=512, offset=592 }; struct CARDINFO { int usedBlocks; // size=0, offset=0 struct BLOCKINFO blockInfo[15]; // size=16560, offset=4 unsigned int dirOK; // size=0, offset=16564 unsigned int infoOK; // size=0, offset=16568 }; struct FILEFORMAT { char blockSize; // size=0, offset=0 char asciiTitle[32]; // size=32, offset=1 short kanjiTitle[32]; // size=64, offset=34 char sonyProductCode[13]; // size=13, offset=98 char blockType; // size=0, offset=111 short blockIconClut[16]; // size=32, offset=112 int blockIconData[32]; // size=128, offset=144 int sliceByteSize; // size=0, offset=272 long *sliceIconTimPtrs[16]; // size=64, offset=276 }; struct SLICE { char title[20]; // size=20, offset=0 char sliceIconRefs[3]; // size=3, offset=20 char *sliceData; // size=0, offset=24 }; struct MCSLOT { struct CARDINFO m_cardInfo; // size=16572, offset=0 int m_port; // size=0, offset=16572 int m_card; // size=0, offset=16576 int m_chan; // size=0, offset=16580 char m_device[6]; // size=6, offset=16584 int m_blocksRead; // size=0, offset=16592 int m_readFilePtr; // size=0, offset=16596 int m_readBytes; // size=0, offset=16600 int m_fromReadBytes; // size=0, offset=16604 int m_toReadBytes; // size=0, offset=16608 int m_writeFilePtr; // size=0, offset=16612 int m_writeBytes; // size=0, offset=16616 int m_fromWriteBytes; // size=0, offset=16620 int m_toWriteBytes; // size=0, offset=16624 int m_iconX; // size=0, offset=16628 int m_iconY; // size=0, offset=16632 int m_clutX; // size=0, offset=16636 int m_clutY; // size=0, offset=16640 unsigned int m_doCheckSum; // size=0, offset=16644 short m_checkSumWork; // size=0, offset=16648 short m_checkSum; // size=0, offset=16650 }; struct PAD { struct MCSLOT m_mcSlot0; // size=16652, offset=0 struct MCSLOT m_mcSlot1; // size=16652, offset=16652 int m_mouseX; // size=0, offset=33304 int m_mouseY; // size=0, offset=33308 int m_scanPort; // size=0, offset=33312 unsigned int m_cardChanged[2]; // size=8, offset=33316 unsigned int m_bControllerChanged; // size=0, offset=33324 unsigned int m_bMouseTested; // size=0, offset=33328 unsigned int m_bUsingMouse; // size=0, offset=33332 unsigned int m_bUsingNegCon; // size=0, offset=33336 unsigned int m_bControllerInserted; // size=0, offset=33340 int m_nLastControllerType; // size=0, offset=33344 char slotString[3]; // size=3, offset=33348 struct MCSLOT *m_slotObjPtrs[2]; // size=8, offset=33352 int m_slotObjPorts[2]; // size=8, offset=33360 int m_currSlotObj; // size=0, offset=33368 int m_portStatus[8]; // size=32, offset=33372 }; struct DISPMAN { unsigned int m_displayingMessage; // size=0, offset=0 int m_language; // size=0, offset=4 char m_textBuffer[256]; // size=256, offset=8 struct DR_AREA m_sliceClipArea; // size=12, offset=264 struct DR_AREA m_screenClipArea; // size=12, offset=276 struct RECT m_backRect[7]; // size=56, offset=288 struct RECT m_srcRect[7]; // size=56, offset=344 int s_screenMode; // size=0, offset=400 int dispWidth; // size=0, offset=404 int dispHeight; // size=0, offset=408 int dispXOffset; // size=0, offset=412 int dispYOffset; // size=0, offset=416 struct DRAWENV m_drawEnv; // size=92, offset=420 struct DISPENV m_dispEnv; // size=20, offset=512 struct DRAWENV m_oldDrawEnv; // size=92, offset=532 struct DISPENV m_oldDispEnv; // size=20, offset=624 int spriteCount; // size=0, offset=644 int polyCountFT4; // size=0, offset=648 int polyCountG3; // size=0, offset=652 int polyCountF4; // size=0, offset=656 int moveCount; // size=0, offset=660 int m_dirtyMouseX; // size=0, offset=664 int m_dirtyMouseY; // size=0, offset=668 unsigned short m_dirtyMouseBuffer[256]; // size=512, offset=672 char m_kanjiTimBuffer[350]; // size=350, offset=1184 struct SPRT sprites[200]; // size=4000, offset=1536 struct DR_TPAGE tpages[200]; // size=1600, offset=5536 struct POLY_FT4 polysFT4[25]; // size=1000, offset=7136 struct POLY_F4 polysF4[0]; // size=0, offset=8136 struct POLY_G3 polysG3[20]; // size=560, offset=8136 struct DR_MOVE moves[2]; // size=48, offset=8696 int m_dispX; // size=0, offset=8744 int m_dispY; // size=0, offset=8748 int m_flashCount; // size=0, offset=8752 int m_flash; // size=0, offset=8756 unsigned int m_flashOn; // size=0, offset=8760 unsigned int m_invalidArea[7]; // size=28, offset=8764 int m_addingBlock; // size=0, offset=8792 int m_deletingBlock; // size=0, offset=8796 struct FONTTABSTRUCT m_fontTable[3][76]; // size=3648, offset=8800 struct KANJILOOKUP m_kanjiFontTable[256]; // size=5120, offset=12448 struct TIMSTRUCT m_darkTimStruct; // size=12, offset=17568 struct TIMSTRUCT m_pointerTimStruct; // size=12, offset=17580 struct TIMSTRUCT m_lightTimStruct; // size=12, offset=17592 struct TIMSTRUCT m_cardTimStruct; // size=12, offset=17604 struct TIMSTRUCT m_buttonTimStructs[4]; // size=48, offset=17616 struct TIMSTRUCT m_arrowTimStruct[2]; // size=24, offset=17664 struct TIMSTRUCT m_sliceIconTimStructs[16]; // size=192, offset=17688 struct TIMSTRUCT m_createBlockTimStruct; // size=12, offset=17880 struct PAD *m_padPtr; // size=33404, offset=17892 long *m_backImagePtr; // size=0, offset=17896 int m_updateQueue[7]; // size=28, offset=17900 int m_kanjiChars; // size=0, offset=17928 int m_activeArea; // size=0, offset=17932 int m_menuSelect; // size=0, offset=17936 int m_blockSelect; // size=0, offset=17940 int m_sliceSelect; // size=0, offset=17944 int m_sliceMenuOffset; // size=0, offset=17948 int m_sliceMenuRem; // size=0, offset=17952 int m_sliceMenuInc; // size=0, offset=17956 int m_activeFunction; // size=0, offset=17960 int m_mainFunction; // size=0, offset=17964 int m_maxKanji; // size=0, offset=17968 unsigned int m_menuActive[4]; // size=16, offset=17972 char *m_menuText[4]; // size=16, offset=17988 char *m_infoText[3]; // size=12, offset=18004 char *m_titleText; // size=0, offset=18016 char *m_blockNameText; // size=0, offset=18020 char m_saveFilename[32]; // size=32, offset=18024 struct FILEFORMAT *m_fileFormatPtr; // size=340, offset=18056 }; // 68 typedefs typedef struct VECTOR VECTOR; typedef struct SVECTOR SVECTOR; typedef struct CVECTOR CVECTOR; typedef struct DVECTOR DVECTOR; typedef struct RVECTOR RVECTOR; typedef struct CRVECTOR3 CRVECTOR3; typedef struct CRVECTOR4 CRVECTOR4; typedef struct RECT RECT; typedef struct DR_ENV DR_ENV; typedef struct DRAWENV DRAWENV; typedef struct DISPENV DISPENV; typedef struct POLY_F4 POLY_F4; typedef struct POLY_FT4 POLY_FT4; typedef struct POLY_G3 POLY_G3; typedef struct SPRT SPRT; typedef struct DR_AREA DR_AREA; typedef struct DR_MOVE DR_MOVE; typedef struct DR_TPAGE DR_TPAGE; typedef struct TCB TCB; typedef struct EXEC EXEC; typedef struct DIRENTRY DIRENTRY; typedef struct SndVolume2 SndVolume2; typedef struct CdlLOC CdlLOC; typedef struct VECTOR_NOPAD VECTOR_NOPAD; typedef struct BOX BOX; typedef struct BSPHERE BSPHERE; typedef struct RGB RGB; typedef struct UV_INFO UV_INFO; typedef struct PSXBUTTON PSXBUTTON; typedef struct MouseData MouseData; typedef struct NegconData NegconData; typedef struct AnalogjoyData AnalogjoyData; typedef struct TapCtrllerData TapCtrllerData; typedef struct MultiTapData MultiTapData; typedef struct _CARD _CARD; typedef struct TIMSTRUCT TIMSTRUCT; typedef struct FONTTABSTRUCT FONTTABSTRUCT; typedef struct KANJILOOKUP KANJILOOKUP; typedef struct SLICEHEADER SLICEHEADER; typedef struct BLOCKINFO BLOCKINFO; typedef struct CARDINFO CARDINFO; typedef struct FILEFORMAT FILEFORMAT; typedef struct SLICE SLICE; typedef struct MCSLOT MCSLOT; typedef struct PAD PAD; typedef struct DISPMAN DISPMAN; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef struct _physadr *physadr; typedef long daddr_t; typedef char *caddr_t; typedef long *qaddr_t; typedef unsigned long ino_t; typedef long swblk_t; typedef unsigned int size_t; typedef long time_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef void *SsMarkCallbackProc(); typedef void *CdlCB(); typedef long LONGVECTOR[4]; typedef short SHORTVECTOR[4]; typedef unsigned short PadData; // 0 labels // 2 external declarations extern unsigned int g_nCManOptions; // offset 0x0010ee08 static char validchars[39]; // offset 0x0010ee0c // 4 functions /* * Offset 0x1005E0, from D:\driver2\game\MEMCARD\CMAN.CPP (lines 33..1029) * Stack frame base $sp, size 51872 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ cardman__FiiPcP10FILEFORMATP5SLICET2T2(int operation /*stack 0*/, int options /*$a1*/, char *textBuffer /*$s4*/, struct FILEFORMAT *fileFormatPtr /*stack 12*/, struct SLICE *slicePtr /*stack 16*/, char *backImageName /*stack 20*/, char *bufferPtr96K /*stack 24*/, char *bufferPtr96K /*$s2*/) { // line 1, offset 0x1005e0 struct TIMSTRUCT tempTimStruct; // stack offset -51840 struct RECT rect; // stack offset -51824 int n; // $s0 char charBuffer[250]; // stack offset -51816 char kanjiFree[6]; // stack offset -51560 char kanjiSize[6]; // stack offset -51552 char kanjiDel[6]; // stack offset -51544 int card_process; // $s3 int padWait; // stack offset -56 int dirCount; // $s0 int delCount; // stack offset -52 int copyStatus; // $s0 int pasteStatus; // $a3 int destFree; // $s6 int sourceSize; // $s5 int newBlock; // $s2 int nMessage; // $s2 int language; // stack offset -48 short padData; // $s1 struct PAD pad; // stack offset -51536 struct DISPMAN dispMan; // stack offset -18128 { // line 36, offset 0x10067c { // line 44, offset 0x1006c4 } // line 47, offset 0x100708 } // line 47, offset 0x100708 { // line 51, offset 0x100708 { // line 52, offset 0x100720 struct _CARD *header; // $a1 } // line 74, offset 0x100970 } // line 74, offset 0x100970 { // line 124, offset 0x100a14 { // line 142, offset 0x100a14 { // line 148, offset 0x100a58 { // line 149, offset 0x100a58 { // line 150, offset 0x100a68 } // line 167, offset 0x100b40 } // line 167, offset 0x100b40 } // line 170, offset 0x100b48 } // line 170, offset 0x100b48 { // line 174, offset 0x100b48 { // line 183, offset 0x100b64 { // line 184, offset 0x100b64 { // line 185, offset 0x100b74 { // line 186, offset 0x100b74 { // line 190, offset 0x100b94 } // line 273, offset 0x100d8c { // line 278, offset 0x100d9c } // line 293, offset 0x100e08 } // line 293, offset 0x100e08 } // line 293, offset 0x100e08 } // line 293, offset 0x100e08 } // line 293, offset 0x100e08 } // line 293, offset 0x100e08 { // line 301, offset 0x100e08 { // line 302, offset 0x100e30 } // line 317, offset 0x100e94 } // line 317, offset 0x100e94 { // line 321, offset 0x100e94 { // line 322, offset 0x100ebc { // line 325, offset 0x100ebc { // line 326, offset 0x100ecc { // line 327, offset 0x100ecc } // line 327, offset 0x100ecc } // line 333, offset 0x100ef4 } // line 333, offset 0x100ef4 { // line 391, offset 0x10108c } // line 391, offset 0x10108c { // line 437, offset 0x1011a8 } // line 437, offset 0x1011a8 { // line 445, offset 0x1011b0 { // line 446, offset 0x1011d8 { // line 466, offset 0x10126c } // line 466, offset 0x10126c { // line 489, offset 0x101354 } // line 489, offset 0x101354 { // line 499, offset 0x101364 } // line 499, offset 0x101364 } // line 499, offset 0x101364 } // line 499, offset 0x101364 { // line 499, offset 0x101364 } // line 499, offset 0x101364 { // line 532, offset 0x101448 } // line 532, offset 0x101448 { // line 540, offset 0x101460 { // line 541, offset 0x1014a4 { // line 542, offset 0x1014a4 } // line 542, offset 0x1014a4 } // line 544, offset 0x1014b8 } // line 544, offset 0x1014b8 { // line 547, offset 0x1014b8 { // line 551, offset 0x101500 { // line 552, offset 0x101500 } // line 552, offset 0x101500 } // line 556, offset 0x101548 } // line 556, offset 0x101548 { // line 560, offset 0x101548 { // line 563, offset 0x101580 { // line 564, offset 0x101580 } // line 564, offset 0x101580 } // line 566, offset 0x101590 } // line 566, offset 0x101590 { // line 579, offset 0x101650 { // line 580, offset 0x101658 { // line 581, offset 0x101658 } // line 581, offset 0x101658 } // line 583, offset 0x101670 } // line 583, offset 0x101670 { // line 594, offset 0x101714 { // line 595, offset 0x10171c { // line 596, offset 0x10171c } // line 596, offset 0x10171c } // line 598, offset 0x101734 } // line 598, offset 0x101734 { // line 601, offset 0x101734 } // line 601, offset 0x101734 { // line 611, offset 0x10177c { // line 615, offset 0x1017b0 { // line 675, offset 0x1019c8 } // line 675, offset 0x1019c8 } // line 678, offset 0x1019f4 } // line 678, offset 0x1019f4 { // line 681, offset 0x1019f4 { // line 682, offset 0x101a14 { // line 707, offset 0x101afc { // line 711, offset 0x101b1c { // line 712, offset 0x101b1c } // line 712, offset 0x101b1c } // line 714, offset 0x101b30 } // line 714, offset 0x101b30 } // line 717, offset 0x101b30 } // line 732, offset 0x101b4c { // line 732, offset 0x101b4c } // line 732, offset 0x101b4c { // line 738, offset 0x101b4c { // line 742, offset 0x101b8c { // line 743, offset 0x101b8c { // line 749, offset 0x101bc0 { // line 753, offset 0x101c04 } // line 753, offset 0x101c04 } // line 754, offset 0x101c0c { // line 758, offset 0x101c0c { // line 764, offset 0x101c50 { // line 768, offset 0x101cb4 { // line 770, offset 0x101cec } // line 770, offset 0x101cec } // line 771, offset 0x101cf4 } // line 771, offset 0x101cf4 } // line 771, offset 0x101cf4 } // line 771, offset 0x101cf4 } // line 771, offset 0x101cf4 } // line 771, offset 0x101cf4 { // line 804, offset 0x101d38 { // line 805, offset 0x101d40 { // line 808, offset 0x101d40 } // line 808, offset 0x101d40 } // line 810, offset 0x101d58 } // line 810, offset 0x101d58 { // line 839, offset 0x101e94 { // line 840, offset 0x101e9c { // line 841, offset 0x101e9c } // line 841, offset 0x101e9c } // line 843, offset 0x101eb4 } // line 843, offset 0x101eb4 { // line 867, offset 0x101f98 } // line 867, offset 0x101f98 { // line 874, offset 0x101fb0 } // line 874, offset 0x101fb0 { // line 898, offset 0x102104 { // line 899, offset 0x10210c { // line 904, offset 0x10210c } // line 904, offset 0x10210c } // line 907, offset 0x102124 { // line 910, offset 0x102124 { // line 910, offset 0x102124 { // line 911, offset 0x10212c { // line 913, offset 0x10212c } // line 913, offset 0x10212c } // line 916, offset 0x102150 } // line 922, offset 0x102150 } // line 922, offset 0x102150 } // line 922, offset 0x102150 { // line 922, offset 0x102150 } // line 922, offset 0x102150 { // line 937, offset 0x1021b0 { // line 938, offset 0x1021b0 { // line 940, offset 0x1021b0 { // line 941, offset 0x1021d8 { // line 943, offset 0x1021d8 } // line 943, offset 0x1021d8 { // line 948, offset 0x10220c } // line 948, offset 0x10220c } // line 948, offset 0x10220c } // line 948, offset 0x10220c } // line 964, offset 0x1022a8 } // line 964, offset 0x1022a8 { // line 967, offset 0x1022a8 } // line 967, offset 0x1022a8 } // line 967, offset 0x1022a8 } // line 967, offset 0x1022a8 } // line 980, offset 0x1022ec { // line 997, offset 0x102304 } // line 997, offset 0x102304 } // line 997, offset 0x102364 /* * Offset 0x102364, from D:\driver2\game\MEMCARD\CMAN.CPP (lines 1065..1221) * Stack frame base $sp, size 88 * Saved registers at offset -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra */ int /*$ra*/ EnterName__FP3PADP7DISPMANPc(struct PAD *pad /*$fp*/, struct DISPMAN *disp /*stack 4*/, char *username /*stack 8*/) { // line 1, offset 0x102364 char asciiname[20]; // stack offset -72 int ret; // stack offset -48 short padData; // $s5 short prevData; // $s7 int so; // $s2 int co; // $s6 int delay; // $s3 char c; // $s1 char toggle; // stack offset -44 } // line 157, offset 0x102710 /* * Offset 0x102710, from D:\driver2\game\MEMCARD\CMAN.CPP (lines 24..29) * Stack frame base $sp, size 40 * Saved registers at offset -8: ra */ int /*$ra*/ card_manager(int operation /*$a0*/, int options /*$a1*/, char *textBuffer /*$a2*/, struct FILEFORMAT *fileFormatPtr /*$a3*/, struct SLICE *slicePtr /*stack 16*/, char *backImageName /*stack 20*/, char *bufferPtr96K /*stack 24*/, struct SLICE *slicePtr /*$v0*/, char *backImageName /*$v1*/, char *bufferPtr96K /*$t0*/) { // line 1, offset 0x102710 } // line 6, offset 0x102744 /* * Offset 0x102744, from D:\driver2\game\MEMCARD\CMAN.CPP (lines 1034..1045) * Stack frame base $sp, size 56 * Saved registers at offset -8: s0 s1 s2 s3 s4 s5 ra */ void /*$ra*/ LoadBackground__FPcT0(char *filename /*$s5*/, char *buffer /*$s2*/) { // line 1, offset 0x102744 struct RECT rect; // stack offset -40 int i; // $s0 { // line 1, offset 0x102744 { // line 5, offset 0x10277c } // line 8, offset 0x10277c } // line 12, offset 0x1027e8 } // line 12, offset 0x1027e8 Source file(s) D:\DRIVER2\GAME\MEMCARD\CMANASM.S+D:\DRIVER2\GAME\MEMCARD\FONT0.S+D:\DRIVER2\GAME\MEMCARD\FONT1.S+D:\DRIVER2\GAME\MEMCARD\FONT2.S, object file memcard\obj\cmanasm.obj overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\2mbyte.obj overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(EVENT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(SYS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(ISO9660.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(BIOS_1.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_002.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_015.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_016.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_021.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(BIOS_2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_023.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(CDR_1.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_003.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_004.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_006.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_008.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_013.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_014.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_022.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(BIOS_3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(S_024.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(TYPE_1.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(TYPE_2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCD.LIB(CRE_1.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(GEO_00.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(SINCOS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(GEO_01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MSC00.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MSC01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(SQRTBL.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_000.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_001.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_06.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_07.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_09.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(MTX_12.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(REG12.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(REG13.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(SMP_02.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(SMP_04.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(CSTBL.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(FGO_01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(FGO_02.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(FGO_04.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(FGO_05.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(FGO_06.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(RMAT_00.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(RATAN.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGTE.LIB(PATCHGTE.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(SYS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(E01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(E02.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(E03.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(E04.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P00.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P10.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P14.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P17.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P18.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P26.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P27.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P31.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P33.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P34.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(P35.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(K01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(KT01.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBGPU.LIB(KT02.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C57.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C67.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C68.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C73.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C112.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A07.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A08.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A09.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A11.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A12.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A13.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A36.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A37.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A39.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A50.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A51.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A52.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A53.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A54.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A65.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A67.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A69.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A81.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A95.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(FIRST.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A66.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBETC.LIB(VSYNC.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A91.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(L10.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBETC.LIB(INTR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(C114.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A23.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A24.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A25.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBETC.LIB(INTR_VB.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBETC.LIB(INTR_DMA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBETC.LIB(VMODE.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(BCOPY.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(BZERO.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MEMCMP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MEMCPY.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MEMMOVE.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MEMSET.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(RAND.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(STRCAT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(STRCMP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(STRCPY.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(STRLEN.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(STRNCMP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(PRINTF.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(PRNT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MEMCHR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(PUTCHAR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(SPRINTF.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(PUTS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(SETJMP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(EXIT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(CTYPE_0.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSN.LIB(SNDEF.OBJ) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSN.LIB(fixunssfsi.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSN.LIB(op_delete.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBC2.LIB(MALLOC.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSND.LIB(SSSV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_I.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_INI.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(SPU.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_DCB.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_Q.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SM.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M_INIT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M_M.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M_INT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M_F.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_F.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_M_UTIL.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SRMP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SRA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_RRWA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SRD.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SRV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SAV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_GRV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_GAV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_CRWA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(A10.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(ZEROBUF.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SK.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_GKS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_W.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_STSA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_STM.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_ITC.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(SR_GAKS.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SVV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SVP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SVAR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SVRR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SVA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_N2P.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_GVV.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_GVP.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_SCA.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_RMP0.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBSPU.LIB(S_RMP2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDCMD1.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDCMD2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDENT2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDENT3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDMAIINI.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(L02.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(L03.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDDIRINI.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDDIRRES.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBPAD.LIB(PDRESRES.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(C171.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(C172.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A79.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A80.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A93.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(CARD.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A78.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(INIT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(PAD.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(PATCH.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBAPI.LIB(CHCLRPAD.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A74.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A75.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(A76.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(PATCH.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBCARD.LIB(END.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMCRD.LIB(INIT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(ADDDF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(ADDMANT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(ADDSF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(DBSHIFT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(DIVDF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(DBSHIFTU.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(DIVSF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(EXTSFDF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(FIXSFSI.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(FLTSIDF.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(FLTSISF.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(GESF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(GTSF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(LTSF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(MAINASU.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(MULSF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(NEGSF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(SUBSF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(TRUDFSF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(FERR.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(SQRT.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(GTDF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(LTDF2.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions Source file(s) , object file C:\PS\LIB\LIBMATH.LIB(MULDF3.obj) overlay id // 0 complex types // 0 typedefs // 0 labels // 0 external declarations // 0 functions