mirror of
https://github.com/OpenDriver2/REDRIVER2.git
synced 2024-11-25 20:02:33 +01:00
207f198473
- move symbols
73489 lines
2.3 MiB
73489 lines
2.3 MiB
Version = 1, targetUnit = 0
|
|
Source file(s) <none>, object file <none> overlay id <none>
|
|
|
|
// 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 <none> overlay id <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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) <none>, object file obj\poly.oBJ overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file <none> overlay id <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 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 <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\2mbyte.obj overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(EVENT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(SYS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(ISO9660.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(BIOS_1.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_002.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_015.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_016.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_021.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(BIOS_2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_023.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(CDR_1.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_003.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_004.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_006.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_008.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_013.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_014.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_022.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(BIOS_3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(S_024.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(TYPE_1.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(TYPE_2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCD.LIB(CRE_1.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(GEO_00.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(SINCOS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(GEO_01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MSC00.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MSC01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(SQRTBL.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_000.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_001.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_06.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_07.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_09.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(MTX_12.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(REG12.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(REG13.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(SMP_02.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(SMP_04.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(CSTBL.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(FGO_01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(FGO_02.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(FGO_04.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(FGO_05.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(FGO_06.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(RMAT_00.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(RATAN.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGTE.LIB(PATCHGTE.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(SYS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(E01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(E02.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(E03.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(E04.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P00.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P10.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P14.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P17.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P18.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P26.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P27.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P31.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P33.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P34.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(P35.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(K01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(KT01.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBGPU.LIB(KT02.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C57.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C67.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C68.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C73.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C112.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A07.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A08.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A09.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A11.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A12.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A13.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A36.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A37.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A39.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A50.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A51.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A52.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A53.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A54.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A65.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A67.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A69.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A81.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A95.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(FIRST.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A66.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBETC.LIB(VSYNC.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A91.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(L10.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBETC.LIB(INTR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(C114.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A23.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A24.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A25.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBETC.LIB(INTR_VB.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBETC.LIB(INTR_DMA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBETC.LIB(VMODE.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(BCOPY.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(BZERO.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MEMCMP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MEMCPY.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MEMMOVE.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MEMSET.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(RAND.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(STRCAT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(STRCMP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(STRCPY.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(STRLEN.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(STRNCMP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(PRINTF.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(PRNT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MEMCHR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(PUTCHAR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(SPRINTF.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(PUTS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(SETJMP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(EXIT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(CTYPE_0.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSN.LIB(SNDEF.OBJ) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSN.LIB(fixunssfsi.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSN.LIB(op_delete.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBC2.LIB(MALLOC.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSND.LIB(SSSV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_I.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_INI.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(SPU.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_DCB.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_Q.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SM.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M_INIT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M_M.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M_INT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M_F.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_F.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_M_UTIL.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SRMP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SRA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_RRWA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SRD.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SRV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SAV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_GRV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_GAV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_CRWA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(A10.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(ZEROBUF.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SK.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_GKS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_W.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_STSA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_STM.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_ITC.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(SR_GAKS.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SVV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SVP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SVAR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SVRR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SVA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_N2P.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_GVV.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_GVP.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_SCA.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_RMP0.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBSPU.LIB(S_RMP2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDCMD1.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDCMD2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDENT2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDENT3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDMAIINI.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(L02.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(L03.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDDIRINI.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDDIRRES.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBPAD.LIB(PDRESRES.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(C171.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(C172.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A79.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A80.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A93.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(CARD.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A78.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(INIT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(PAD.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(PATCH.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBAPI.LIB(CHCLRPAD.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A74.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A75.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(A76.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(PATCH.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBCARD.LIB(END.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMCRD.LIB(INIT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(ADDDF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(ADDMANT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(ADDSF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(DBSHIFT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(DIVDF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(DBSHIFTU.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(DIVSF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(EXTSFDF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(FIXSFSI.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(FLTSIDF.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(FLTSISF.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(GESF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(GTSF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(LTSF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(MAINASU.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(MULSF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(NEGSF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(SUBSF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(TRUDFSF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(FERR.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(SQRT.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(GTDF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(LTDF2.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|
|
Source file(s) <none>, object file C:\PS\LIB\LIBMATH.LIB(MULDF3.obj) overlay id <none>
|
|
|
|
// 0 complex types
|
|
|
|
// 0 typedefs
|
|
|
|
// 0 labels
|
|
|
|
// 0 external declarations
|
|
|
|
// 0 functions
|