- initial commit

This commit is contained in:
Ilya Shurumov 2019-02-19 00:49:19 +06:00
commit eba0bbff65
88 changed files with 55980 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@ -0,0 +1,21 @@
*.tlog
*.layout
*.sdf
*.opendb
*.idb
*.obj
*.log
*.vcxproj.user
*.pdb
*.pch
*.obj*
*.db
*.ipch
*.suo
*.exe
*.ilk
libs/
game/
symdump-decompile/
PSX_BINS/
xmplayer/

3
dump.bat Normal file
View File

@ -0,0 +1,3 @@
dotnet run symdump.dll driver2.sym
rem > dism.txt 2>&1
pause

25970
dump.h Normal file

File diff suppressed because it is too large Load Diff

540
dump_music/dump_music.cpp Normal file
View File

@ -0,0 +1,540 @@
#include <iostream>
#include <Windows.h>
// WAV file header and smpl-chunk template - Quick and dirty solution because I'm lazy
int wavHeader[11] = {
0x46464952, 0, 0x45564157, 0x20746D66,
0x10, 0x10001, 0, 0,
0x100002, 0x61746164, 0
};
int smplChunk[17] = {
0x6C706D73, 0x3C, 0, 0,
0x1D316, 0x3C, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0
};
// PSX ADPCM coefficients
const double K0[5] = { 0, 0.9375, 1.796875, 1.53125, 1.90625 };
const double K1[5] = { 0, 0, -0.8125, -0.859375, -0.9375 };
// PSX ADPCM decoding routine - decodes a single sample
short vagToPcm(unsigned char soundParameter, int soundData, double* vagPrev1, double* vagPrev2)
{
int resultInt = 0;
double dTmp1 = 0.0;
double dTmp2 = 0.0;
double dTmp3 = 0.0;
if (soundData > 7) soundData -= 16;
dTmp1 = (double)soundData * pow(2, (double)(12 - (soundParameter & 0x0F)));
dTmp2 = (*vagPrev1) * K0[(soundParameter >> 4) & 0x0F];
dTmp3 = (*vagPrev2) * K1[(soundParameter >> 4) & 0x0F];
(*vagPrev2) = (*vagPrev1);
(*vagPrev1) = dTmp1 + dTmp2 + dTmp3;
resultInt = (int)round((*vagPrev1));
if (resultInt > 32767) resultInt = 32767;
if (resultInt < -32768) resultInt = -32768;
return (short)resultInt;
}
// Main decoding routine - Takes PSX ADPCM formatted audio data and converts it to PCM. It also extracts the looping information if used.
void decodeSound(unsigned char* iData, short* oData, int soundSize, int* loopStart, int* loopLength)
{
unsigned char sp = 0;
int sd = 0;
double vagPrev1 = 0.0;
double vagPrev2 = 0.0;
int k = 0;
for (int i = 0; i < soundSize; i++)
{
if (i % 16 == 0)
{
sp = iData[i];
if ((iData[i + 1] & 0x0E) == 6) (*loopStart) = k;
if ((iData[i + 1] & 0x0F) == 3 || (iData[i + 1] & 0x0F) == 7) (*loopLength) = (k + 28) - (*loopStart);
i += 2;
}
sd = (int)iData[i] & 0x0F;
oData[k++] = vagToPcm(sp, sd, &vagPrev1, &vagPrev2);
sd = ((int)iData[i] >> 4) & 0x0F;
oData[k++] = vagToPcm(sp, sd, &vagPrev1, &vagPrev2);
}
}
void XM_Sample2Delta(short *p, int len)
{
short news, olds;
news = 0;
for (int i = 0; i < len; ++i)
{
olds = p[i];
p[i] -= news;
news = olds;
}
}
//------------------------------------------------------------------------------------
#define XM_SONGS 8
#define XM_INSTR_HEADER_SIZE 263
#define XM_MAX_CHANNELS 32
struct song_t
{
int xm_offset;
int bank_offset;
};
struct SAMPLE_DATA
{
unsigned long address;
unsigned long length;
unsigned long loop;
unsigned long samplerate;
};
struct PCMSample
{
short* data;
int length;
int loopStart;
int loopLength;
};
struct XM_Note
{
unsigned char note;
unsigned char inst;
unsigned char volc;
unsigned char efft;
unsigned char effp;
};
#pragma pack(push,1)
struct XM_SampleHeader
{
int32_t len, repS, repL;
uint8_t vol;
int8_t fine;
uint8_t typ, pan;
int8_t relTon;
uint8_t reserved;
char name[22];
};
struct XM_InstHeaeder
{
uint32_t instrSize;
char name[22];
uint8_t typ;
int16_t antSamp;
int32_t sampleSize;
uint8_t ta[96];
int16_t envVP[12][2], envPP[12][2];
uint8_t envVPAnt, envPPAnt;
uint8_t envVSust, envVRepS, envVRepE;
uint8_t envPSust, envPRepS, envPRepE;
uint8_t envVTyp, envPTyp;
uint8_t vibTyp, vibSweep, vibDepth, vibRate;
uint16_t fadeOut;
uint8_t midiOn, midiChannel;
int16_t midiProgram, midiBend;
int8_t mute;
uint8_t reserved[15];
XM_SampleHeader samp[16];
};
#pragma pack(pop)
int DecompressAndRestoreXM(char* destXM, char* xmData, int srcSize, PCMSample* samples)
{
char* destOrig = destXM;
char* srcOrig = xmData;
memcpy(destXM, xmData, 336);
unsigned short* version = (unsigned short*)(&destXM[58]);
// check if it's an XMPlay version (superpacked)
if (*version != 0xDDBA)
{
memcpy(destXM, xmData, srcSize);
return srcSize;
}
printf("Decompressing XM...\n");
// convert XM to standard version
*version = 0x104;
destXM += 336; // go to patterns
xmData += 68;
short numChannels = *(short*)xmData; xmData += 2;
short numPatterns = *(short*)xmData; xmData += 2;
short numInstruments = *(short*)xmData; xmData += 264; // skip other header data since it's not changed
printf("channel count: %d\n", numChannels);
printf("Unpacking %d patterns\n", numPatterns);
XM_Note rowNotes[XM_MAX_CHANNELS]; // more for safety
for (int i = 0; i < numPatterns; i++)
{
xmData += 5;
int pattLen = *(short*)xmData;
xmData -= 5;
memcpy(destXM, xmData, 7); // copy pattern header properties
destXM += 7;
xmData += 7;
short patternSize = *(short*)xmData;
xmData += sizeof(short); // now pattern data itself
short* unpackedPatternSize = (short*)destXM;
destXM += sizeof(short);
// no empty reads
if (patternSize == 0)
continue;
char* pattStartSrc = xmData;
char* pattStart = destXM;
for (int r = 0; r < pattLen; r++)
{
// zero full channel size double from current position
memset(rowNotes, 0, sizeof(rowNotes));
while (1)
{
// don't overflow reading
if ((xmData - pattStartSrc) >= patternSize)
break;
unsigned char patdat = *xmData++;
if (patdat == 0xFF) // channel end
break;
unsigned char data = 0;
XM_Note& xmnote = rowNotes[patdat];
// unpack it fully
unsigned char note = *xmData++;
if (note & 0x80)
{
data = 0; if (note & 0x01) data = *xmData++; xmnote.note = data;
data = 0; if (note & 0x02) data = *xmData++; xmnote.inst = data;
data = 0; if (note & 0x04) data = *xmData++; xmnote.volc = data;
data = 0; if (note & 0x08) data = *xmData++; xmnote.efft = data;
data = 0; if (note & 0x10) data = *xmData++; xmnote.effp = data;
}
else
{
xmnote.note = note;
xmnote.inst = *xmData++;
xmnote.volc = *xmData++;
xmnote.efft = *xmData++;
xmnote.effp = *xmData++;
}
}
// pack notes again
for (int c = 0; c < numChannels; c++)
{
XM_Note& xmnote = rowNotes[c];
if (xmnote.note > 0 &&
xmnote.inst > 0 &&
xmnote.volc > 0 &&
xmnote.efft > 0 &&
xmnote.effp > 0)
{
// write full note
memcpy(destXM, &xmnote, sizeof(XM_Note));
destXM += sizeof(XM_Note);
}
else
{
char* packedFlag = destXM++;
*packedFlag = 0x80;
if (xmnote.note > 0) { *destXM++ = xmnote.note; *packedFlag |= 0x01; }
if (xmnote.inst > 0) { *destXM++ = xmnote.inst; *packedFlag |= 0x02; }
if (xmnote.volc > 0) { *destXM++ = xmnote.volc; *packedFlag |= 0x04; }
if (xmnote.efft > 0) { *destXM++ = xmnote.efft; *packedFlag |= 0x08; }
if (xmnote.effp > 0) { *destXM++ = xmnote.effp; *packedFlag |= 0x10; }
}
}
}
*unpackedPatternSize = destXM - pattStart;
}
printf("instrument count: %d\n", numInstruments);
for (int i = 0; i < numInstruments; i++)
{
char* instStart = xmData;
XM_InstHeaeder* instr = (XM_InstHeaeder*)xmData;
{
int readSize = instr->instrSize;
if ((readSize < 4) || (readSize > XM_INSTR_HEADER_SIZE))
readSize = XM_INSTR_HEADER_SIZE;
if (instr->instrSize > XM_INSTR_HEADER_SIZE)
readSize += instr->instrSize - XM_INSTR_HEADER_SIZE;
printf("instr %d size: %d readSize: %d\n", i, instr->instrSize, readSize);
memcpy(destXM, xmData, readSize);
xmData += readSize;
destXM += readSize;
}
printf("instr name: %s\n", instr->name);
printf("sample count: %d\n", instr->antSamp);
// since the XMPlay for PSX does not
// support more than one samples, we don't bother...
if (instr->antSamp > 0)
{
//if (i == 17)
// printf("flash!\n");
printf("sample: %s typ %d\n", instr->samp[0].name, instr->samp[0].typ);
// samples are direct to the instrument number,
// so we don't bother here too...
PCMSample& sample = samples[i];
if ((instr->samp[0].typ & 0x16))
{
instr->samp[0].len = sample.length * sizeof(short);
instr->samp[0].repS = sample.loopStart * sizeof(short);
instr->samp[0].repL = sample.loopLength * sizeof(short);
}
// write headers
int readSize = instr->antSamp * sizeof(XM_SampleHeader);
memcpy(destXM, xmData, readSize);
xmData += readSize;
destXM += readSize;
if ((instr->samp[0].typ & 0x16))
{
// right after the instrument data comes the sample data
// there is nothing to read, but there is something to write...
XM_Sample2Delta(sample.data, sample.length);
memcpy(destXM, sample.data, sample.length * sizeof(short));
destXM += sample.length * sizeof(short);
}
}
}
int remainingStart = (xmData - srcOrig);
int remaining = srcSize - remainingStart;
// copy remaining data
memcpy(destXM, xmData, remaining);
destXM += remaining;
return destXM-destOrig;
}
//-----------------------------------------------------------------------------
int main(int argc, char** argv)
{
if (argc <= 1)
return -1;
char* fileName = argv[1];
FILE* fp = fopen(fileName, "rb");
if (!fp)
{
printf("No such file '%s'!", fileName);
return -1;
}
printf("Loading '%s'...\n", fileName);
//char songPath[_MAX_PATH];
char tmpString[_MAX_PATH];
// max 80 samples per bank
PCMSample pcmSamples[80];
song_t songs[XM_SONGS];
int numBankSamples = 0;
// read song offsets
fread(songs, sizeof(song_t), XM_SONGS, fp);
for (int i = 0; i < XM_SONGS; i++)
{
const song_t& offsets = songs[i];
int songSize = offsets.bank_offset - offsets.xm_offset;
printf("--- XM song %d at %d (size %d) ---\n", i, offsets.xm_offset, songSize);
// create folder for song
//sprintf_s(songPath, "%s_song_%d", fileName, i);
//CreateDirectoryA(songPath, NULL); // Create the sound bank directory
// Read XM and store to separate file
fseek(fp, offsets.xm_offset, SEEK_SET);
char* xmData = (char*)malloc(songSize);
fread(xmData, songSize, 1, fp);
// Read sound bank and then convert it using vabdecode
fseek(fp, offsets.bank_offset, SEEK_SET);
fread(&numBankSamples, sizeof(int), 1, fp);
SAMPLE_DATA* sampleDescs = new SAMPLE_DATA[numBankSamples];
fread(sampleDescs, sizeof(SAMPLE_DATA), numBankSamples, fp);
memset(pcmSamples, 0, sizeof(PCMSample)*80);
int bankSamplesOffset = ftell(fp);
printf("bank sounds: %d\n", numBankSamples);
for (int j = 0; j < numBankSamples; j++)
{
SAMPLE_DATA& sample = sampleDescs[j];
PCMSample& pcmSample = pcmSamples[j];
if (sample.loop == 0)
sample.length -= 16;
if (sample.length == 0)
continue;
// read VAG and convert to ADPCM
{
unsigned char* iData = (unsigned char*)malloc(sample.length);
pcmSample.length = (sample.length >> 4) * 28;
pcmSample.data = new short[pcmSample.length];
fseek(fp, bankSamplesOffset + sample.address, SEEK_SET);
fread(iData, sizeof(char), sample.length, fp); // Read the audio data
decodeSound(iData, pcmSample.data, sample.length, &pcmSample.loopStart, &pcmSample.loopLength);
free(iData);
printf("sample %d rate=%d loop=%d size=%d\n", j, sample.samplerate, sample.loop, pcmSample.length);
}
/*
{
// Prepare the WAV file header
wavHeader[1] = pcmSample.length * sizeof(short) + 36; // Size of the "RIFF" chunk
if (pcmSample.loopLength > 0)
wavHeader[1] += 68;
wavHeader[6] = sample.samplerate; // Sampling rate
wavHeader[7] = sample.samplerate * sizeof(short); // Average bytes per second (sample rate * sample size * channel count)
wavHeader[10] = pcmSample.length * sizeof(short); // Size of the "data" chunk
char outputFile[256];
snprintf(outputFile, sizeof(outputFile), "%s\\%d.wav", songPath, j);
FILE* fp2;
fp2 = fopen(outputFile, "wb");
if (fp2)
{
// Write WAV file header, the converted audio data, and the loop positions if used
fwrite(&wavHeader, sizeof(int), 11, fp2);
fwrite(pcmSample.data, sizeof(short), pcmSample.length, fp2);
if (pcmSample.loopLength > 0)
{
smplChunk[13] = pcmSample.loopStart;
smplChunk[14] = pcmSample.loopStart + pcmSample.loopLength;
fwrite(&smplChunk, sizeof(int), 17, fp2);
}
fclose(fp2);
}
}
*/
}
// restore XM and save to disk
{
printf("--- XM song %d ---\n", i);
sprintf_s(tmpString, "%s_song%d.xm", fileName, i);
FILE* xmFp = fopen(tmpString, "wb");
if (xmFp)
{
// calculate new XM size according to samples
int addSize = 0;
for (int j = 0; j < numBankSamples; j++)
{
//printf("sample %d rate=%d loop=%d size=%d\n", j, sample.samplerate, sample.loop, sample.length);
addSize += pcmSamples[j].length * sizeof(short);
}
int calculatedXMSize = songSize * 4 + addSize;
// decompress
char* newXMData = (char*)malloc(calculatedXMSize); // the new size is pretty hardcoded setting
songSize = DecompressAndRestoreXM(newXMData, xmData, songSize, pcmSamples);
free(xmData);
xmData = newXMData;
fwrite(xmData, 1, songSize, xmFp);
fclose(xmFp);
}
free(xmData);
}
// free samples
for (int j = 0; j < numBankSamples; j++)
{
delete[] pcmSamples[j].data;
pcmSamples[j].data = nullptr;
}
}
fclose(fp);
}

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{E82851E6-2037-4D5A-9C8B-910DBCD09783}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>dumpmusic</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="dump_music.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Исходные файлы">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Файлы заголовков">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Файлы ресурсов">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dump_music.cpp">
<Filter>Исходные файлы</Filter>
</ClCompile>
</ItemGroup>
</Project>

30
src/C/ai.c Normal file
View File

@ -0,0 +1,30 @@
/*
* Offset 0x1BAF8
* D:\driver2\game\C\AI.C (line 324)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TannerStuckInCar(int doSpeedCheck /*$a0*/)
{ // line 1, address 0x1baf8
struct _CAR_DATA *cp; // $a2
} // line 17, address 0x1bc20
/*
* Offset 0x1BC20
* D:\driver2\game\C\AI.C (line 275)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StoreGameFlags()
{
}
/*
* Offset 0x1BC50
* D:\driver2\game\C\AI.C (line 297)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TannerCanEnterCar(struct _CAR_DATA *cp /*$a0*/, int distToCarSq /*$a1*/)
{ // line 1, address 0x1bc50
{ // line 13, address 0x1bce4
struct SVECTOR *carCollBox; // $v0
int carRange; // $a0
} // line 20, address 0x1bd34
} // line 23, address 0x1bd3c

41
src/C/bcoll3d.c Normal file
View File

@ -0,0 +1,41 @@
#include "../decomp_defs.h"
/*
* Offset 0x1C1C8
* D:\driver2\game\C\BCOLL3D.C (line 83)
* Stack frame base $sp, length 56
* Saved registers at address -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*/)
{ // line 1, address 0x1c1c8
int k; // $t5
struct VECTOR normal; // stack address -56
struct VECTOR diff; // stack address -40
struct VECTOR point; // stack address -24
int depth; // $t0
{ // line 23, address 0x1c2b8
int partialDepth; // $v1
} // line 36, address 0x1c354
} // line 47, address 0x1c3e8
/*
* Offset 0x1C3E8
* D:\driver2\game\C\BCOLL3D.C (line 153)
* Stack frame base $sp, length 72
* Saved registers at address -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*/)
{ // line 1, address 0x1c3e8
struct TestResult tr; // stack address -56
int res; // $t1
} // line 12, address 0x1c470
/*
* Offset 0x1C470
* D:\driver2\game\C\BCOLL3D.C (line 133)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x1c470
int i; // $s0
} // line 18, address 0x1c584

169
src/C/bcollide.c Normal file
View File

@ -0,0 +1,169 @@
#include "../decomp_defs.h"
/*
* Offset 0x1C584
* D:\driver2\game\C\BCOLLIDE.C (line 120)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 fp
*/
int /*$ra*/ bcollided2d(struct CDATA2D *body /*$t4*/, int needOverlap /*$fp*/)
{ // line 1, address 0x1c584
struct VECTOR delta; // stack address -56
int dtheta; // $v1
int ac; // $s6
int as; // $s5
int i; // $t7
int j; // $a2
int k; // $t5
{ // line 40, address 0x1c7a0
int xover; // $t0
int zover; // $a0
int tmp2; // $a2
int FE; // $a3
} // line 63, address 0x1c8f8
} // line 65, address 0x1c928
/*
* Offset 0x1C928
* D:\driver2\game\C\BCOLLIDE.C (line 195)
* Stack frame base $sp, length 8
* Saved registers at address -4: s0 s1
*/
void /*$ra*/ bFindCollisionPoint(struct CDATA2D *body /*$t6*/, struct CRET2D *collisionResult /*$s0*/)
{ // line 1, address 0x1c928
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, address 0x1c9cc
int upper; // $a1
int lower; // $v1
} // line 33, address 0x1ca24
{ // line 40, address 0x1ca58
int upper; // $a1
int lower; // $a0
} // line 54, address 0x1cac8
} // line 78, address 0x1cc98
/*
* Offset 0x1CC98
* D:\driver2\game\C\BCOLLIDE.C (line 275)
* Stack frame base $sp, length 264
* Saved registers at address -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, address 0x1cc98
int i; // $s4
int q; // $s0
int hit; // $t2
int neverfree; // $fp
int time; // $s1
int step; // $s3
struct CDATA2D original[2]; // stack address -248
} // line 82, address 0x1cf54
/*
* Offset 0x1CF54
* D:\driver2\game\C\BCOLLIDE.C (line 384)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ApplyDamage(struct _CAR_DATA *cp /*$a0*/, char region /*$a1*/, int value /*$a2*/, char fakeDamage /*$a3*/)
{ // line 1, address 0x1cf54
short *pRegion; // $t0
} // line 81, address 0x1d118
/*
* Offset 0x1D118
* D:\driver2\game\C\BCOLLIDE.C (line 470)
* Stack frame base $sp, length 72
* Saved registers at address -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, address 0x1d118
int l; // $v1
int w; // $v0
int region; // $a1
long nose[4]; // stack address -56
long door[4]; // stack address -40
int impact; // $s3
int QQQ; // $t7
{ // line 79, address 0x1d3f0
char fakeDamage; // $a3
char player_id; // $s0
char kludge; // $a3
} // line 98, address 0x1d48c
} // line 102, address 0x1d4bc
/*
* Offset 0x1D4BC
* D:\driver2\game\C\BCOLLIDE.C (line 587)
* Stack frame base $sp, length 64
* Saved registers at address -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, address 0x1d4bc
struct VECTOR delta; // stack address -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, address 0x1d6d0
/*
* Offset 0x1D6F4
* D:\driver2\game\C\BCOLLIDE.C (line 839)
* Stack frame base $sp, length 200
* Saved registers at address -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, address 0x1d6f4
static struct CDATA2D cd[2]; // address 0x0
static struct CRET2D collisionResult; // address 0xd0
int debris_colour; // stack address -48
struct VECTOR tempwhere; // stack address -168
struct MODEL *pModel; // $s5
int player_id; // stack address -44
{ // line 27, address 0x1d7fc
struct SVECTOR boxDisp; // stack address -152
{ // line 69, address 0x1d95c
int wbod; // $a1
} // line 79, address 0x1da0c
} // line 81, address 0x1da0c
{ // line 138, address 0x1dacc
{ // line 138, address 0x1dacc
struct VECTOR velocity; // stack address -144
long pointVel[4]; // stack address -128
long reaction[4]; // stack address -112
long lever[4]; // stack address -96
int strikeVel; // $s1
{ // line 175, address 0x1dcc0
short scale; // $a2
} // line 195, address 0x1dd0c
{ // line 211, address 0x1dd6c
{ // line 219, address 0x1dd90
struct SMASHABLE_OBJECT *sip; // $a1
struct SMASHABLE_OBJECT *match; // $s0
int chan; // $s1
int adjust; // $s2
} // line 240, address 0x1dea4
} // line 254, address 0x1df2c
{ // line 259, address 0x1df5c
struct VECTOR LeafPosition; // stack address -80
} // line 259, address 0x1df5c
{ // line 277, address 0x1dfb8
{ // line 280, address 0x1dff8
struct VECTOR lamp_velocity; // stack address -64
} // line 284, address 0x1e02c
} // line 285, address 0x1e02c
{ // line 304, address 0x1e0c0
int twistY; // $a1
int lever_dot_n; // $a0
int displacementsquared; // $v1
int denom; // $v1
} // line 316, address 0x1e1d8
} // line 345, address 0x1e3e4
} // line 349, address 0x1e3ec
} // line 356, address 0x1e450

124
src/C/bomberman.c Normal file
View File

@ -0,0 +1,124 @@
#include "../decomp_defs.h"
/*
* Offset 0x1E450
* D:\driver2\game\C\BOMBERMAN.C (line 245)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ HandleThrownBombs()
{ // line 2, address 0x1e450
struct BOMB *bomb; // $s1
struct VECTOR velocity; // stack address -48
struct _CAR_DATA *cp; // $s0
int i; // $s5
int y; // $a0
{ // line 13, address 0x1e494
} // line 56, address 0x1e630
{ // line 74, address 0x1e6d8
int len; // $v1
} // line 85, address 0x1e750
} // line 112, address 0x1e850
/*
* Offset 0x1E878
* D:\driver2\game\C\BOMBERMAN.C (line 381)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DrawThrownBombs()
{ // line 2, address 0x1e878
struct MATRIX object_matrix; // stack address -80
struct MATRIX *finalmatrix; // $s2
struct BOMB *bomb; // $s0
struct VECTOR pos; // stack address -48
int i; // $s3
{ // line 16, address 0x1e8d4
} // line 33, address 0x1ea00
{ // line 39, address 0x1ea1c
} // line 43, address 0x1ea44
} // line 44, address 0x1ea44
/*
* Offset 0x1EA68
* D:\driver2\game\C\BOMBERMAN.C (line 432)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ BombThePlayerToHellAndBack(int car /*$s3*/)
{ // line 1, address 0x1ea68
struct BOMB *bomb; // $t3
} // line 54, address 0x1eca4
/*
* Offset 0x1ECC0
* D:\driver2\game\C\BOMBERMAN.C (line 496)
* Stack frame base $sp, length 232
* Saved registers at address -8: ra
*/
int /*$ra*/ BombCollisionCheck(struct _CAR_DATA *cp /*$a0*/, struct VECTOR *pPos /*$a1*/)
{ // line 1, address 0x1ecc0
struct CDATA2D cd[2]; // stack address -216
int carLength[2]; // stack address -16
{ // line 1, address 0x1ecc0
} // line 1, address 0x1ecc0
} // line 27, address 0x1ed80
/*
* Offset 0x1ED80
* D:\driver2\game\C\BOMBERMAN.C (line 534)
* Stack frame base $sp, length 368
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ ExplosionCollisionCheck(struct _CAR_DATA *cp /*$s1*/, struct _ExOBJECT *pE /*$s3*/)
{ // line 1, address 0x1ed80
struct CDATA2D cd[2]; // stack address -352
int carLength[2]; // stack address -152
static int setUsed; // address 0x28
int tanner; // $s6
{ // line 12, address 0x1eddc
{ // line 12, address 0x1eddc
} // line 12, address 0x1eddc
{ // line 19, address 0x1ee74
} // line 24, address 0x1eee8
{ // line 27, address 0x1eee8
int x; // $a1
int z; // $v1
struct VECTOR *pos; // $v0
} // line 66, address 0x1efbc
{ // line 89, address 0x1effc
struct CRET2D collisionResult; // stack address -144
{ // line 92, address 0x1effc
struct VECTOR velocity; // stack address -104
long pointVel[4]; // stack address -88
long reaction[4]; // stack address -72
long lever[4]; // stack address -56
int strikeVel; // $s0
{ // line 154, address 0x1f278
} // line 161, address 0x1f2b8
{ // line 164, address 0x1f2b8
int twistY; // $a1
int lever_dot_n; // $a0
int displacementsquared; // $v1
int denom; // $v1
} // line 176, address 0x1f3c8
} // line 198, address 0x1f510
} // line 199, address 0x1f510
} // line 200, address 0x1f510
} // line 206, address 0x1f55c
/*
* Offset 0x1F55C
* D:\driver2\game\C\BOMBERMAN.C (line 747)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ AddFlash(struct VECTOR *pos /*$a0*/)
{ // line 1, address 0x1f55c
int dist; // $a0
} // line 14, address 0x1f5d8
/*
* Offset 0x1F5D8
* D:\driver2\game\C\BOMBERMAN.C (line 222)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitThrownBombs()
{ // line 2, address 0x1f5d8
int i; // $v1
} // line 13, address 0x1f65c

174
src/C/camera.c Normal file
View File

@ -0,0 +1,174 @@
#include "../decomp_defs.h"
VECTOR CameraPos =
{ 4294967251, 4294967125, 4294967171, 0 };
VECTOR camera_position =
{ 0, 4294966916, 0, 0 };
MATRIX face_camera_work =
{ { { 4096, 0, 0 }, { 0, 4096, 0 }, { 0, 0, 4096 } }, { 0, 0, 0 } };
/*
* Offset 0x1F65C
* D:\driver2\game\C\CAMERA.C (line 422)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitCamera(struct _PLAYER *lp /*$s0*/)
{ // line 1, address 0x1f65c
struct SVECTOR boxDisp; // stack address -16
{ // line 6, address 0x1f684
} // line 6, address 0x1f684
{ // line 19, address 0x1f714
struct _CAR_DATA *lcp; // $a0
} // line 19, address 0x1f714
{ // line 32, address 0x1f7fc
struct _EVENT *event; // $a1
} // line 33, address 0x1f7fc
} // line 122, address 0x1fa88
/*
* Offset 0x1FA88
* D:\driver2\game\C\CAMERA.C (line 553)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ModifyCamera()
{ // line 2, address 0x1fa88
struct PAD *locPad; // $a3
struct _PLAYER *lp; // $a2
{ // line 15, address 0x1fb64
char *pNextCameraview; // $a0
} // line 25, address 0x1fbb0
{ // line 32, address 0x1fbcc
int cam_ang; // $a0
int length; // $a1
} // line 40, address 0x1fc6c
} // line 43, address 0x1fc78
/*
* Offset 0x1FC80
* D:\driver2\game\C\CAMERA.C (line 609)
* Stack frame base $sp, length 184
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
int /*$ra*/ CameraCollisionCheck()
{ // line 2, address 0x1fc80
struct MODEL *model; // $v1
struct COLLISION_PACKET *collide; // $t2
struct CELL_OBJECT *cop; // $t3
struct CELL_ITERATOR ci; // stack address -168
struct VECTOR nearpoint; // stack address -144
struct VECTOR surfacenormal; // stack address -128
struct VECTOR surfacepoint; // stack address -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 address -96
{ // line 50, address 0x1fe5c
struct MATRIX *mat; // $a2
struct VECTOR address; // stack address -80
struct VECTOR cam_vec; // stack address -64
struct VECTOR normal; // stack address -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, address 0x20038
} // line 93, address 0x200a4
/*
* Offset 0x200A4
* D:\driver2\game\C\CAMERA.C (line 777)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ PlaceCameraFollowCar(struct _PLAYER *lp /*$s2*/)
{ // line 1, address 0x200a4
int carheight; // $a0
int minimum_height; // $s1
int cammapht; // $s0
int new_angle; // $a0
int camPosVy; // $s1
struct VECTOR locCameraPos; // stack address -48
int lbody; // $a0
int hbody; // $a3
int camExpandSpeed; // $s6
{ // line 23, address 0x200f0
struct _CAR_DATA *camCar; // $v1
} // line 33, address 0x20184
} // line 116, address 0x20574
/*
* Offset 0x20574
* D:\driver2\game\C\CAMERA.C (line 987)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ PlaceCameraInCar(struct _PLAYER *lp /*$s3*/, int BumperCam /*$a1*/)
{ // line 1, address 0x20574
struct _CAR_DATA *cp; // $s2
{ // line 57, address 0x20824
} // line 58, address 0x20834
{ // line 62, address 0x20848
} // line 65, address 0x20868
} // line 90, address 0x2096c
/*
* Offset 0x2096C
* D:\driver2\game\C\CAMERA.C (line 904)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ PlaceCameraAtLocation(struct _PLAYER *lp /*$s1*/, int zoom /*$s2*/)
{ // line 1, address 0x2096c
int d; // $s0
{ // line 7, address 0x20998
struct VECTOR temp; // stack address -32
} // line 9, address 0x20998
} // line 46, address 0x20a60
/*
* Offset 0x20A78
* D:\driver2\game\C\CAMERA.C (line 716)
* Stack frame base $sp, length 0
*/
void /*$ra*/ TurnHead(struct _PLAYER *lp /*$a0*/)
{ // line 1, address 0x20a78
} // line 41, address 0x20b70
/*
* Offset 0x20B70
* D:\driver2\game\C\CAMERA.C (line 960)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ PointAtTarget(struct VECTOR *pPosition /*$a0*/, struct VECTOR *pTarget /*$a1*/, struct SVECTOR *pAngleVec /*$s0*/)
{ // line 1, address 0x20b70
struct VECTOR delta; // stack address -32
int d; // $s1
} // line 16, address 0x20c28
/*
* Offset 0x20C28
* D:\driver2\game\C\CAMERA.C (line 1083)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ OK_To_Zoom()
{ // line 2, address 0x20c28
int old_z; // $s0
struct VECTOR temp; // stack address -24
} // line 31, address 0x20cd8
/*
* Offset 0x20CD8
* D:\driver2\game\C\CAMERA.C (line 1119)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetBasePos(struct VECTOR *pVec /*$a0*/)
{
}

413
src/C/cars.c Normal file
View File

@ -0,0 +1,413 @@
#include "../decomp_defs.h"
SVECTOR day_vectors[4] =
{
{ 62404, 2520, 783, 0 },
{ 62404, 2520, 783, 0 },
{ 63172, 2364, 2364, 0 },
{ 62404, 2520, 783, 0 }
};
SVECTOR night_vectors[4] =
{
{ 3132, 2520, 783, 0 },
{ 3132, 2520, 783, 0 },
{ 63172, 2364, 63172, 0 },
{ 3132, 2520, 783, 0 }
};
SVECTOR day_colours[4] =
{
{ 3200, 3200, 3200, 0 },
{ 3200, 3200, 3200, 0 },
{ 3200, 3200, 3200, 0 },
{ 3200, 3200, 3200, 0 }
};
SVECTOR night_colours[4] =
{
{ 880, 880, 905, 0 },
{ 880, 880, 905, 0 },
{ 880, 880, 905, 0 },
{ 880, 880, 905, 0 }
};
MATRIX light_matrix =
{ { { 4096, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }, { 0, 0, 0 } };
MATRIX colour_matrix =
{ { { 4032, 0, 0 }, { 3936, 0, 0 }, { 3520, 0, 0 } }, { 0, 0, 0 } };
int PolySizes[56] = {
8, 0xC, 0x10, 0x18, 0x14, 0x14, 0x1C, 0x20, 8, 0xC,
0x10, 0x10, 0, 0, 0, 0, 0xC, 0xC, 0xC, 0x10, 0x14,
0x14, 0x18, 0x18, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0xC,
0x10, 0x18, 0x14, 0x14, 0x1C, 0x20, 0, 0, 0, 0, 0,
0, 0, 0, 0xC, 0xC, 0xC, 0x10, 0x14, 0x14, 0x18, 0x18
};
/*
* Offset 0x20CFC
* D:\driver2\game\C\CARS.C (line 834)
* Stack frame base $sp, length 96
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ plotNewCarModel(struct CAR_MODEL *car /*$s0*/, int palette /*$s2*/)
{ // line 1, address 0x20cfc
struct plotCarGlobals _pg; // stack address -72
struct SVECTOR v0; // stack address -32
unsigned long lightlevel; // stack address -24
} // line 74, address 0x20ef0
/*
* Offset 0x20F08
* D:\driver2\game\C\CARS.C (line 1125)
* Stack frame base $sp, length 24
* Saved registers at address -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*/)
{ // line 1, address 0x20f08
struct POLY_GT3 *prim; // $t0
long *ot; // $s1
long GT3rgb; // stack address -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 address -20
int r1; // stack address -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, address 0x20f08
int ofse; // $v1
} // line 1, address 0x20f08
{ // line 106, address 0x210a8
int ofse; // $v1
} // line 106, address 0x210a8
} // line 126, address 0x21120
/*
* Offset 0x21120
* D:\driver2\game\C\CARS.C (line 1442)
* Stack frame base $sp, length 344
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawCar(struct _CAR_DATA *cp /*$s3*/, int view /*$a1*/)
{ // line 1, address 0x21120
int WheelSpeed; // $s0
int model; // $fp
struct _PLAYER *lp; // $a2
{ // line 12, address 0x211dc
struct CVECTOR col; // stack address -312
} // line 50, address 0x212ac
{ // line 54, address 0x212ac
struct MATRIX temp_mat1; // stack address -304
struct MATRIX temp_mat2; // stack address -272
struct MATRIX final_mat; // stack address -240
struct VECTOR pos; // stack address -208
struct VECTOR pos1; // stack address -192
struct SVECTOR temp_vec; // stack address -176
int result; // $s4
{ // line 77, address 0x212f8
struct VECTOR corners[4]; // stack address -168
} // line 96, address 0x213ec
{ // line 100, address 0x213ec
struct VECTOR d; // stack address -104
struct VECTOR dist; // stack address -88
} // line 117, address 0x21540
{ // line 168, address 0x215b4
int i; // $a0
} // line 173, address 0x215d8
{ // line 185, address 0x2160c
struct MATRIX workmatrix; // stack address -104
struct CAR_MODEL *CarModelPtr; // $s1
{ // line 193, address 0x2166c
} // line 195, address 0x21688
} // line 197, address 0x21688
{ // line 208, address 0x216dc
int damage; // $v1
{ // line 264, address 0x21824
struct CAR_MODEL *CarModelPtr; // $s0
{ // line 264, address 0x21824
struct MATRIX workmatrix; // stack address -72
} // line 293, address 0x21924
} // line 294, address 0x21924
} // line 295, address 0x21924
{ // line 314, address 0x21984
} // line 322, address 0x219ec
} // line 346, address 0x21b30
} // line 347, address 0x21b30
/*
* Offset 0x21B60
* D:\driver2\game\C\CARS.C (line 1850)
* Stack frame base $sp, length 160
* Saved registers at address -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, address 0x21b60
struct CAR_COSMETICS *car_cos; // $s0
struct MATRIX FrontMatrix; // stack address -144
struct MODEL *WheelModel; // $s0
struct MODEL *WheelModelBack; // stack address -56
struct MODEL *WheelModelFront; // stack address -52
int i; // $s4
static short FrontWheelRotation[20]; // address 0x0
static short BackWheelRotation[20]; // address 0x30
short model; // $a0
short wheelSize; // $s2
{ // line 16, address 0x21c10
int FrontWheelIncrement; // $a3
int BackWheelIncrement; // $t0
} // line 69, address 0x21d38
{ // line 72, address 0x21d38
int c; // $t2
int s; // $t3
int FW1z; // $v0
int FW2z; // $a0
int BW1z; // $v0
int BW2z; // $a3
struct SVECTOR *VertPtr; // $t6
} // line 76, address 0x21d38
{ // line 76, address 0x21d38
struct MATRIX SteerMatrix; // stack address -112
} // line 76, address 0x21d38
{ // line 138, address 0x2200c
struct SVECTOR *verts; // $s5
{ // line 157, address 0x22060
struct VECTOR WheelPos; // stack address -80
struct SVECTOR sWheelPos; // stack address -64
} // line 162, address 0x22090
} // line 194, address 0x22180
} // line 196, address 0x221e8
/*
* Offset 0x221E8
* D:\driver2\game\C\CARS.C (line 2058)
* Stack frame base $sp, length 8
*/
void /*$ra*/ DrawWheelObject(struct MODEL *model /*$t2*/, struct SVECTOR *verts /*$t4*/, int transparent /*$a2*/, int wheelnum /*$a3*/)
{ // line 1, address 0x221e8
struct POLY_FT4 *prims; // $t0
struct POLYFT4LIT *src; // $t1
int i; // $t2
int Z; // stack address -4
int clut; // $t8
int tpage; // $t7
unsigned long bright; // $t6
unsigned long dim; // $t5
{ // line 35, address 0x22300
int flag1; // stack address -8
long vl; // $a0
{ // line 53, address 0x223b0
int r2; // $v1
} // line 53, address 0x223b0
} // line 83, address 0x22498
} // line 85, address 0x224c0
/*
* Offset 0x224C0
* D:\driver2\game\C\CARS.C (line 2198)
* Stack frame base $sp, length 112
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ ComputeCarLightingLevels(struct _CAR_DATA *cp /*$s1*/, char detail /*$s3*/)
{ // line 1, address 0x224c0
int light; // $s2
struct SVECTOR lightsourcevector; // stack address -96
struct SVECTOR colour; // stack address -88
struct VECTOR lightValues; // stack address -80
struct VECTOR *orient; // $s0
{ // line 72, address 0x22774
struct MODEL *model; // $v1
struct SVECTOR *norms; // $a3
struct SVECTOR *ppads; // $a2
int num_norms; // $a1
int count; // $a1
struct CVECTOR c0; // stack address -64
struct CVECTOR c1; // stack address -56
struct CVECTOR c2; // stack address -48
{ // line 78, address 0x22774
long GT3rgb; // stack address -40
} // line 78, address 0x22774
} // line 114, address 0x2289c
} // line 118, address 0x228c8
/*
* Offset 0x228C8
* D:\driver2\game\C\CARS.C (line 2321)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ buildNewCars()
{
}
/*
* Offset 0x229C8
* D:\driver2\game\C\CARS.C (line 2357)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x229c8
char *polylist; // $s0
int i; // $s2
int j; // $s3
int pass; // $s4
{ // line 37, address 0x22b04
struct CAR_POLY *p; // $s1
char ptype; // $s6
{ // line 46, address 0x22b4c
} // line 48, address 0x22b4c
{ // line 51, address 0x22b4c
} // line 53, address 0x22b4c
{ // line 57, address 0x22b4c
} // line 59, address 0x22b4c
{ // line 62, address 0x22b4c
} // line 64, address 0x22b4c
{ // line 69, address 0x22b4c
} // line 77, address 0x22b4c
{ // line 80, address 0x22b4c
} // line 92, address 0x22b4c
{ // line 96, address 0x22b4c
} // line 104, address 0x22b84
{ // line 107, address 0x22b84
} // line 119, address 0x22be4
{ // line 123, address 0x22be4
} // line 125, address 0x22be4
{ // line 129, address 0x22be4
} // line 131, address 0x22be4
{ // line 135, address 0x22be4
} // line 147, address 0x22c78
{ // line 150, address 0x22c78
} // line 169, address 0x22d8c
{ // line 173, address 0x22d8c
} // line 191, address 0x22e94
{ // line 194, address 0x22e94
} // line 222, address 0x23044
} // line 225, address 0x23044
} // line 236, address 0x23100
/*
* Offset 0x23130
* D:\driver2\game\C\CARS.C (line 2595)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MangleWheelModels()
{ // line 2, address 0x23130
int i; // $v1
struct MODEL *m; // $t0
struct POLYFT4LIT *src; // $a0
{ // line 15, address 0x23178
int j; // $t1
} // line 46, address 0x233bc
} // line 54, address 0x233f8
/*
* Offset 0x233F8
* D:\driver2\game\C\CARS.C (line 2697)
* Stack frame base $sp, length 0
*/
char /*$ra*/ GetCarPalIndex(int tpage /*$a0*/)
{ // line 1, address 0x233f8
int i; // $a1
} // line 16, address 0x2343c
/*
* Offset 0x23444
* D:\driver2\game\C\CARS.C (line 1793)
* Stack frame base $sp, length 56
* Saved registers at address -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*/)
{ // line 1, address 0x23444
{ // line 1, address 0x23444
struct SVECTOR cog; // stack address -40
struct VECTOR modelLocation; // stack address -32
} // line 1, address 0x23444
{ // line 1, address 0x23444
static unsigned long savedSP; // address 0x0
} // line 40, address 0x23544
} // line 43, address 0x23544
/*
* Offset 0x23544
* D:\driver2\game\C\CARS.C (line 2152)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ PlayerCarFX(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x23544
int WheelSpeed; // $s1
} // line 39, address 0x23660
/*
* Offset 0x23660
* D:\driver2\game\C\CARS.C (line 2656)
* Stack frame base $sp, length 0
*/
void /*$ra*/ setupLightingMatrices()
{
}
/*
* Offset 0x237B8
* D:\driver2\game\C\CARS.C (line 2685)
* Stack frame base $sp, length 0
*/
void /*$ra*/ restoreLightingMatrices()
{
}
/*
* Offset 0x23820
* D:\driver2\game\C\CARS.C (line 917)
* Stack frame base $sp, length 8
*/
void /*$ra*/ plotCarPolyB3(int numTris /*$a0*/, struct CAR_POLY *src /*$a1*/, struct SVECTOR *vlist /*$a2*/, struct plotCarGlobals *pg /*$a3*/)
{ // line 1, address 0x23820
struct POLY_F3 *prim; // $t0
int i; // $t1
long *ot; // $t3
long F3rgb; // $t4
{ // line 10, address 0x23848
int reg; // stack address -8
} // line 50, address 0x23914
} // line 53, address 0x2392c
/*
* Offset 0x2392C
* D:\driver2\game\C\CARS.C (line 976)
* Stack frame base $sp, length 8
*/
void /*$ra*/ plotCarPolyFT3(int numTris /*$a0*/, struct CAR_POLY *src /*$t1*/, struct SVECTOR *vlist /*$t4*/, struct plotCarGlobals *pg /*$t5*/)
{ // line 1, address 0x2392c
struct POLY_FT3 *prim; // $t0
long *ot; // $t6
long FT3rgb; // stack address -8
int i; // $t2
{ // line 16, address 0x2396c
int reg; // stack address -4
int clut_uv0; // $a2
int tpage_uv1; // $a3
int uv3_uv2; // $a1
{ // line 22, address 0x2396c
int ofse; // $v1
} // line 22, address 0x2396c
} // line 76, address 0x23a70
} // line 79, address 0x23a88
/*
* Offset 0x23A88
* D:\driver2\game\C\CARS.C (line 1349)
* Stack frame base $sp, length 8
*/
void /*$ra*/ plotCarPolyGT3nolight(int numTris /*$a0*/, struct CAR_POLY *src /*$t3*/, struct SVECTOR *vlist /*$t6*/, struct plotCarGlobals *pg /*$a3*/, int palette /*stack 16*/)
{ // line 1, address 0x23a88
struct POLY_FT3 *prim; // $t0
long *ot; // $t7
long GT3rgb; // stack address -8
int i; // $t4
unsigned short *clut_base; // $t8
{ // line 17, address 0x23ad0
int reg; // stack address -4
int clut_uv0; // $a0
int tpage_uv1; // $t1
int uv3_uv2; // $t2
{ // line 22, address 0x23ad0
int ofse; // $v1
} // line 22, address 0x23ad0
} // line 76, address 0x23bfc
} // line 79, address 0x23c14

31
src/C/cell.c Normal file
View File

@ -0,0 +1,31 @@
#include "../decomp_defs.h"
/*
* Offset 0x23C14
* D:\driver2\game\C\CELL.C (line 67)
* Stack frame base $sp, length 24
* Saved registers at address -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, address 0x23c14
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, address 0x23cec
int event; // $t0
} // line 43, address 0x23d30
} // line 75, address 0x23e28
/*
* Offset 0x23E28
* D:\driver2\game\C\CELL.C (line 57)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ ClearCopUsage()
{
}

891
src/C/civ_ai.c Normal file
View File

@ -0,0 +1,891 @@
#include "../decomp_defs.h"
int roadblockDelayDiff[] = { 1500, 1000, 800 };
char speedLimits[3] = { 56, 97, 138 };
CIV_PING civPingTest = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
char modelRandomList[] = { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 1, 0, 4 };
/*
* Offset 0x23E50
* D:\driver2\game\C\CIV_AI.C (line 717)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0x23e50
struct VECTOR tmpStart; // stack address -48
} // line 69, address 0x24090
/*
* Offset 0x24090
* D:\driver2\game\C\CIV_AI.C (line 981)
* Stack frame base $sp, length 104
* Saved registers at address -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*/)
{ // line 1, address 0x24090
int oldOppDir; // $s4
int i; // $a1
int j; // $s6
int newRoad; // $s3
int numExits; // stack address -88
int currentRoadExit; // $t6
int newNumLanes; // $a3
int newDir; // stack address -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 address -80
char rightLane; // stack address -76
{ // line 61, address 0x2479c
char relExitId; // $fp
static char validExitRelIdx[4][3][2]; // address 0x0
int addRoad; // $t9
{ // line 1, address 0x2486c
int currentRoadExit; // $t6
int newRoadExit; // $fp
{ // line 1, address 0x2486c
int exitMod; // $a0
int ret; // $a1
} // line 1, address 0x248d8
} // line 1, address 0x248d8
{ // line 110, address 0x24c80
int x; // $v1
int z; // $v0
int dir; // stack address -84
struct DRIVER2_CURVE *cv; // $s1
{ // line 110, address 0x24c80
} // line 110, address 0x24c80
} // line 110, address 0x24c80
{ // line 131, address 0x250b0
int exitId; // $a1
{ // line 135, address 0x250d4
char lane; // $v0
} // line 151, address 0x2512c
{ // line 1, address 0x251e8
int currentRoadExit; // $t6
{ // line 1, address 0x251e8
int exitMod; // $a1
int ret; // $a2
} // line 1, address 0x25248
} // line 1, address 0x25248
} // line 166, address 0x25254
{ // line 1, address 0x25254
struct DRIVER2_JUNCTION *jn; // $t5
int currentExit; // $a2
int turnAngle; // $t1
struct _CAR_DATA *cp; // $s7
struct CIV_ROUTE_ENTRY *oldNode; // $t7
{ // line 1, address 0x25254
unsigned short jnFlags; // $a0
int i; // $a1
int exitId; // $a3
} // line 1, address 0x25324
} // line 1, address 0x25324
{ // line 171, address 0x25324
{ // line 192, address 0x257dc
int x; // $v1
int z; // $v0
int dir; // stack address -84
struct DRIVER2_CURVE *cv; // $s1
{ // line 192, address 0x257dc
} // line 192, address 0x257dc
} // line 192, address 0x257dc
} // line 203, address 0x25c30
} // line 203, address 0x25c30
{ // line 211, address 0x25c38
int i; // $a1
int dx; // $v1
int dz; // $a0
int numLanes; // $fp
int *pNewLane; // $s3
int laneFromLeft; // $a3
int laneFromRight; // $v1
{ // line 274, address 0x2604c
int preferredNewLane; // $t1
} // line 302, address 0x2637c
{ // line 305, address 0x263b0
int preferredNewLane; // $s4
{ // line 305, address 0x263b0
int x; // $v1
int z; // $v0
struct DRIVER2_CURVE *cv; // $s1
{ // line 305, address 0x263b0
} // line 305, address 0x263b0
} // line 305, address 0x263b0
} // line 332, address 0x26704
} // line 345, address 0x2680c
} // line 369, address 0x269cc
/*
* Offset 0x269CC
* D:\driver2\game\C\CIV_AI.C (line 1365)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ InitNodeList(struct _CAR_DATA *cp /*$s6*/, char *extraData /*$s7*/)
{ // line 1, address 0x269cc
int i; // $v1
struct CIV_ROUTE_ENTRY *cr; // $s5
int dx; // $s1
int dz; // $s2
int surfInd; // $s4
{ // line 32, address 0x26a6c
int theta; // $s0
int laneDist; // $s1
struct DRIVER2_STRAIGHT *str; // $s3
} // line 41, address 0x26bc8
{ // line 46, address 0x26c04
struct DRIVER2_CURVE *crv; // $s0
} // line 50, address 0x26cb4
} // line 60, address 0x26d14
/*
* Offset 0x26D14
* D:\driver2\game\C\CIV_AI.C (line 1441)
* Stack frame base $sp, length 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*/)
{ // line 1, address 0x26d14
unsigned char oldLane; // $a0
unsigned char changeLaneCount; // $t3
} // line 63, address 0x26f88
/*
* Offset 0x26F88
* D:\driver2\game\C\CIV_AI.C (line 1507)
* Stack frame base $sp, length 136
* Saved registers at address -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, address 0x26f88
unsigned char currentLane; // $s7
unsigned char newLane; // $s2
unsigned char trials; // $t3
unsigned char canProceed; // stack address -88
unsigned char travelAlongRoad; // $s5
unsigned char turnRight; // stack address -84
struct _CAR_DATA *cp1; // $s0
struct CIV_ROUTE_ENTRY tmpNode; // stack address -120
{ // line 65, address 0x272f8
struct VECTOR pos; // stack address -104
int theta; // $a0
int length; // $a1
{ // line 81, address 0x273fc
} // line 89, address 0x274fc
} // line 91, address 0x2750c
} // line 116, address 0x27598
/*
* Offset 0x27598
* D:\driver2\game\C\CIV_AI.C (line 1637)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ CreateNewNode(struct _CAR_DATA *cp /*$s4*/)
{ // line 1, address 0x27598
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 address -56
{ // line 1, address 0x27598
struct _CAR_DATA *cp; // $s4
struct CIV_ROUTE_ENTRY *currentNode; // $v1
{ // line 1, address 0x27598
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 1, address 0x275e4
} // line 1, address 0x275e4
{ // line 1, address 0x275f4
struct _CAR_DATA *cp; // $s4
{ // line 1, address 0x275f4
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 1, address 0x27604
} // line 1, address 0x27604
{ // line 1, address 0x27610
struct _CAR_DATA *cp; // $s4
{ // line 1, address 0x27610
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 1, address 0x27620
} // line 1, address 0x27620
{ // line 1, address 0x2762c
struct _CAR_DATA *cp; // $s4
{ // line 1, address 0x2762c
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 1, address 0x2763c
} // line 1, address 0x2763c
{ // line 16, address 0x27658
struct _CAR_DATA *cp; // $s4
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 16, address 0x27658
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 16, address 0x27658
} // line 16, address 0x27658
{ // line 18, address 0x27658
{ // line 1, address 0x27658
struct _CAR_DATA *cp; // $s4
{ // line 1, address 0x27658
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x27668
} // line 1, address 0x27668
} // line 21, address 0x27678
{ // line 22, address 0x2769c
struct _CAR_DATA *cp; // $s4
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 22, address 0x2769c
struct CIV_ROUTE_ENTRY *retNode; // $s2
} // line 22, address 0x276b4
} // line 22, address 0x276b4
{ // line 44, address 0x27750
int travelDir; // $a1
int segmentEnd; // $a0
{ // line 51, address 0x27818
int startDist; // stack address -52
} // line 51, address 0x27870
} // line 51, address 0x27880
{ // line 55, address 0x278b4
int travelDir; // $a2
int segmentEnd; // $t0
{ // line 62, address 0x279bc
int startDist; // stack address -48
} // line 62, address 0x279f8
} // line 63, address 0x27a0c
{ // line 80, address 0x27a80
struct CIV_ROUTE_ENTRY tmpNode; // stack address -72
{ // line 84, address 0x27ac0
int travelDir; // $a0
} // line 95, address 0x27b80
{ // line 102, address 0x27bf8
struct _CAR_DATA *playerCar; // $v0
int dx; // $v1
int dz; // $a0
} // line 107, address 0x27c68
{ // line 114, address 0x27ca0
int tryToPark; // $s1
} // line 136, address 0x27e08
{ // line 142, address 0x27e6c
int radOfCrv; // $s5
int cornerAngle; // $a3
int segLength; // $s0
int tmp; // $a1
int dx; // $s1
int dz; // $s0
{ // line 152, address 0x27f24
struct _CAR_DATA *cp; // $s4
{ // line 152, address 0x27f24
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 155, address 0x27fac
} // line 155, address 0x27fac
{ // line 163, address 0x27fe0
struct _CAR_DATA *cp; // $s4
{ // line 163, address 0x27fe0
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 166, address 0x28074
} // line 166, address 0x28074
} // line 169, address 0x28074
{ // line 173, address 0x28074
{ // line 1, address 0x28074
struct _CAR_DATA *cp; // $s4
struct CIV_ROUTE_ENTRY *currentNode; // $s6
{ // line 1, address 0x28074
struct CIV_ROUTE_ENTRY *retNode; // $v0
} // line 1, address 0x28074
} // line 1, address 0x28074
} // line 177, address 0x28084
} // line 177, address 0x28084
} // line 191, address 0x28140
/*
* Offset 0x28140
* D:\driver2\game\C\CIV_AI.C (line 1843)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ InitCivState(struct _CAR_DATA *cp /*$s1*/, char *extraData /*$s2*/)
{ // line 1, address 0x28140
struct CIV_STATE *cs; // $s0
} // line 44, address 0x28350
/*
* Offset 0x28350
* D:\driver2\game\C\CIV_AI.C (line 2016)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ PingOutAllSpecialCivCars()
{ // line 2, address 0x28350
struct _CAR_DATA *lcp; // $s0
{ // line 1, address 0x283b0
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2844c
} // line 9, address 0x28474
/*
* Offset 0x28474
* D:\driver2\game\C\CIV_AI.C (line 2028)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ PingOutAllCivCarsAndCopCars()
{ // line 2, address 0x28474
struct _CAR_DATA *lcp; // $s0
{ // line 1, address 0x284b4
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x28594
} // line 9, address 0x285bc
/*
* Offset 0x285BC
* D:\driver2\game\C\CIV_AI.C (line 2050)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ CheckPingOut(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x285bc
int dx; // $a0
int dz; // $v1
int dist; // $s1
{ // line 1, address 0x28620
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x286fc
} // line 31, address 0x28748
/*
* Offset 0x28748
* D:\driver2\game\C\CIV_AI.C (line 2176)
* Stack frame base $sp, length 88
* Saved registers at address -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*/)
{ // line 1, address 0x28748
struct _EXTRA_CIV_DATA civDat; // stack address -56
struct _CAR_DATA *newCar; // $s1
struct CIV_ROUTE_ENTRY *stopNode; // $a0
struct CIV_ROUTE_ENTRY *spareNode; // $a1
{ // line 1, address 0x28748
{ // line 1, address 0x28748
char *slot; // $v1
struct _CAR_DATA *carCnt; // $a0
} // line 8, address 0x287dc
} // line 8, address 0x287dc
} // line 53, address 0x289c8
/*
* Offset 0x289C8
* D:\driver2\game\C\CIV_AI.C (line 2248)
* Stack frame base $sp, length 104
* Saved registers at address -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*/)
{ // line 1, address 0x289c8
struct _EXTRA_CIV_DATA civDat; // stack address -72
struct _CAR_DATA *newCar; // $s0
long tmpRes[4]; // stack address -48
long tmpQ[4]; // stack address -32
{ // line 1, address 0x28a84
{ // line 1, address 0x28a84
char *slot; // $v1
struct _CAR_DATA *carCnt; // $a0
} // line 1, address 0x28ad0
} // line 1, address 0x28ad0
} // line 41, address 0x28e1c
/*
* Offset 0x28E1C
* D:\driver2\game\C\CIV_AI.C (line 2323)
* Stack frame base $sp, length 160
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ PingInCivCar(int minPingInDist /*stack 0*/)
{ // line 1, address 0x28e1c
struct _EXTRA_CIV_DATA civDat; // stack address -128
int dir; // stack address -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 address -48
unsigned char model; // $s4
unsigned char possibleLanes[12]; // stack address -104
unsigned char carDistLanes[15]; // stack address -88
char numPossibleLanes; // $s0
int lbody; // $s3
{ // line 1, address 0x28f54
{ // line 1, address 0x28f54
char *slot; // $a1
struct _CAR_DATA *carCnt; // $a0
} // line 1, address 0x28fa8
} // line 1, address 0x28fa8
{ // line 70, address 0x29068
char newCarId; // $v1
{ // line 1, address 0x290c0
struct _CAR_DATA *cp; // $s1
} // line 1, address 0x291a8
} // line 79, address 0x2930c
{ // line 139, address 0x29688
char frog; // $a0
char numLanes; // $a1
} // line 139, address 0x297c8
{ // line 148, address 0x298c8
char frog; // $a0
char numLanes; // $a1
} // line 148, address 0x299cc
{ // line 205, address 0x29cb0
int externalModel; // $v0
{ // line 212, address 0x29d2c
unsigned char palette; // $v0
} // line 216, address 0x29d88
} // line 221, address 0x29dc4
{ // line 227, address 0x29e20
int theta; // $s0
int minDistAlong; // $s2
} // line 240, address 0x29f78
{ // line 244, address 0x29fc0
int minAngle; // $a1
} // line 255, address 0x2a0f8
{ // line 270, address 0x2a150
long pos[4]; // stack address -72
unsigned int distSq; // stack address -56
{ // line 270, address 0x2a150
int *distToCarSq; // $t2
{ // line 270, address 0x2a150
int dz; // $v1
int dx; // $a0
int distSq; // $v0
unsigned int retDistSq; // $a2
struct _CAR_DATA *lcp; // $a1
} // line 278, address 0x2a290
} // line 278, address 0x2a290
{ // line 288, address 0x2a2a8
int x; // $t2
int y; // $a2
int z; // $t1
unsigned int distSq; // $a3
{ // line 288, address 0x2a2a8
int dz; // $v1
int dx; // $a0
int ret; // $t0
struct _CAR_DATA *lcp; // $a1
} // line 288, address 0x2a3a8
} // line 288, address 0x2a3a8
} // line 299, address 0x2a3e4
} // line 333, address 0x2a52c
/*
* Offset 0x2A52C
* D:\driver2\game\C\CIV_AI.C (line 2659)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ AttemptUnPark(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x2a52c
struct DRIVER2_STRAIGHT *str; // $s2
struct DRIVER2_CURVE *crv; // $s3
} // line 31, address 0x2a664
/*
* Offset 0x2A664
* D:\driver2\game\C\CIV_AI.C (line 2798)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CivAccelTrafficRules(struct _CAR_DATA *cp /*$t3*/, int *distToNode /*$a1*/)
{ // line 1, address 0x2a664
int lbody; // $t1
int wbody; // $t2
struct CIV_STATE *cs; // $a2
{ // line 46, address 0x2a784
int stopDist; // $t0
{ // line 50, address 0x2a7fc
int endSpeed; // $v0
} // line 55, address 0x2a868
} // line 56, address 0x2a868
{ // line 65, address 0x2a8ac
int ret; // $a1
int properVel; // $v1
int brakeDist; // $a3
{ // line 103, address 0x2a980
int endSpeed; // $v0
int currentDist; // $v1
} // line 103, address 0x2a980
} // line 117, address 0x2aa54
{ // line 125, address 0x2aa54
int roadClear; // $t8
int checkObstDist; // $t7
int numLanes; // $v0
{ // line 134, address 0x2aa74
struct _CAR_DATA *cp; // $t3
{ // line 134, address 0x2aa74
struct _CAR_DATA *lcp; // $a3
int normal; // $v0
int tangent; // $a0
int distToObstacle; // $t0
int ccarAng; // $t1
int scarAng; // $t2
} // line 134, address 0x2ab94
} // line 134, address 0x2ab94
{ // line 1, address 0x2abac
struct _CAR_DATA *cp; // $t3
{ // line 1, address 0x2abac
struct CIV_STATE *cs; // $v1
} // line 1, address 0x2abac
} // line 1, address 0x2abac
{ // line 145, address 0x2abc0
int ret; // $v1
} // line 148, address 0x2ac10
} // line 149, address 0x2ac10
} // line 151, address 0x2ac10
/*
* Offset 0x2AC10
* D:\driver2\game\C\CIV_AI.C (line 2950)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ SetUpCivCollFlags()
{ // line 2, address 0x2ac10
struct SVECTOR boxDisp; // stack address -72
int carLength[2]; // stack address -64
struct _CAR_DATA *cp0; // $s5
struct _CAR_DATA *cp1; // $s2
unsigned int dNewLBODY[2]; // stack address -56
int dx; // $s0
int dz; // stack address -48
{ // line 35, address 0x2ac7c
int extraLength; // $a2
} // line 35, address 0x2acac
{ // line 40, address 0x2addc
{ // line 53, address 0x2ae2c
} // line 53, address 0x2ae80
{ // line 66, address 0x2afc8
int civCD; // $s7
int brake; // $a0
{ // line 74, address 0x2aff8
unsigned int *blth; // $v1
} // line 74, address 0x2b028
{ // line 83, address 0x2b088
int i; // $a1
int h; // $a3
int rnd; // $a2
struct _CAR_DATA *cp; // $s0
{ // line 90, address 0x2b128
} // line 98, address 0x2b1f8
} // line 100, address 0x2b20c
} // line 101, address 0x2b20c
} // line 102, address 0x2b20c
{ // line 106, address 0x2b230
unsigned char i; // $s0
} // line 115, address 0x2b2d4
} // line 116, address 0x2b2d4
/*
* Offset 0x2B2D4
* D:\driver2\game\C\CIV_AI.C (line 3074)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CivAccel(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x2b2d4
int ret; // $t1
int distToNode; // stack address -16
int dx; // $v1
int dz; // $a0
{ // line 32, address 0x2b3c4
int tmpRet; // $a0
int lbody; // $a0
{ // line 37, address 0x2b3f0
int sf; // $v1
int c1; // $t0
int c2; // $a3
int c3; // $a1
{ // line 52, address 0x2b4b4
int tmp; // $v1
} // line 55, address 0x2b520
} // line 58, address 0x2b530
} // line 72, address 0x2b590
} // line 75, address 0x2b5a4
/*
* Offset 0x2B5A4
* D:\driver2\game\C\CIV_AI.C (line 3166)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ CivSteerAngle(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x2b5a4
int station; // $a3
int step; // $s2
int ret; // $a0
struct VECTOR locPath; // stack address -56
struct VECTOR pathPoint; // stack address -40
int lbody; // $s3
{ // line 1, address 0x2b5a4
{ // line 1, address 0x2b5a4
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b5a4
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 9, address 0x2b5f8
} // line 9, address 0x2b5f8
{ // line 1, address 0x2b608
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b608
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b618
} // line 1, address 0x2b618
{ // line 1, address 0x2b628
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b628
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b638
} // line 1, address 0x2b638
{ // line 1, address 0x2b648
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b648
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b658
} // line 1, address 0x2b658
} // line 26, address 0x2b678
{ // line 1, address 0x2b6e4
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b6e4
struct CIV_ROUTE_ENTRY *retNode; // $a0
} // line 1, address 0x2b6f8
} // line 1, address 0x2b6f8
{ // line 35, address 0x2b708
struct CIV_ROUTE_ENTRY *crLoc; // $a1
struct CIV_ROUTE_ENTRY *cr; // $a0
} // line 46, address 0x2b768
{ // line 1, address 0x2b7b0
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b7b0
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b7c0
} // line 1, address 0x2b7c0
{ // line 70, address 0x2b8d8
struct CIV_ROUTE_ENTRY *cr; // $a0
{ // line 1, address 0x2b908
struct _CAR_DATA *cp; // $s0
{ // line 1, address 0x2b908
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b918
} // line 1, address 0x2b918
} // line 77, address 0x2b928
} // line 80, address 0x2b94c
/*
* Offset 0x2B94C
* D:\driver2\game\C\CIV_AI.C (line 3265)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ CivFindStation(struct _CAR_DATA *cp /*$s6*/)
{ // line 1, address 0x2b94c
struct CIV_ROUTE_ENTRY *rep; // $s3
int cx; // stack address -48
int cz; // $fp
{ // line 1, address 0x2b94c
int loop; // $a0
{ // line 1, address 0x2b9a4
struct _CAR_DATA *cp; // $s6
{ // line 1, address 0x2b9a4
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2b9b8
} // line 1, address 0x2b9b8
} // line 12, address 0x2b9c4
{ // line 15, address 0x2b9cc
struct _CAR_DATA *cp; // $s6
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 15, address 0x2b9cc
struct CIV_ROUTE_ENTRY *retNode; // $s0
} // line 15, address 0x2b9cc
} // line 15, address 0x2b9cc
{ // line 17, address 0x2b9cc
int sx; // $s5
int sz; // $s4
int dx; // $s2
int dz; // $s1
int stepsize; // $a1
int square; // $a0
{ // line 44, address 0x2ba90
struct _CAR_DATA *cp; // $s6
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 44, address 0x2ba90
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 44, address 0x2baa0
} // line 44, address 0x2baa0
{ // line 1, address 0x2bab0
struct _CAR_DATA *cp; // $s6
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 1, address 0x2bab0
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2bac0
} // line 1, address 0x2bac0
{ // line 1, address 0x2bad0
struct _CAR_DATA *cp; // $s6
struct CIV_ROUTE_ENTRY *currentNode; // $s3
{ // line 1, address 0x2bad0
struct CIV_ROUTE_ENTRY *retNode; // $v1
} // line 1, address 0x2bae0
} // line 1, address 0x2bae0
} // line 52, address 0x2baf8
} // line 55, address 0x2bb54
/*
* Offset 0x2BB54
* D:\driver2\game\C\CIV_AI.C (line 3337)
* Stack frame base $sp, length 64
* Saved registers at address -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, address 0x2bb54
struct CIV_ROUTE_ENTRY *cprep; // $a0
struct CIV_ROUTE_ENTRY *start; // stack address -48
{ // line 9, address 0x2bbb8
struct _CAR_DATA *cp; // $s7
struct CIV_ROUTE_ENTRY *currentNode; // $a0
{ // line 9, address 0x2bbb8
struct CIV_ROUTE_ENTRY *retNode; // $s0
} // line 9, address 0x2bbb8
} // line 9, address 0x2bbb8
{ // line 11, address 0x2bbb8
int sx; // $s4
int sz; // $s5
int dx; // $s1
int dz; // $s3
int stepsize; // $a2
} // line 44, address 0x2bcf8
} // line 48, address 0x2bd5c
/*
* Offset 0x2BD5C
* D:\driver2\game\C\CIV_AI.C (line 3398)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ CreateRoadblock()
{ // line 2, address 0x2bd5c
struct _CAR_DATA *cp; // $v1
struct _CAR_DATA *lcp; // $s0
struct _CAR_DATA *newCar; // $s0
struct DRIVER2_STRAIGHT *str; // stack address -72
struct DRIVER2_CURVE *crv; // $s7
int distAlongSegment; // $s2
int lbody; // $s4
int dir; // $s6
int numLanes; // stack address -68
unsigned char externalCopModel; // stack address -64
int delta; // $s4
int noMoreCars; // stack address -60
int newCarId; // $v1
{ // line 2, address 0x2bd5c
int dir; // $s0
} // line 39, address 0x2c0e0
{ // line 44, address 0x2c104
int theta; // $s0
} // line 53, address 0x2c200
{ // line 57, address 0x2c248
int minAngle; // $a3
int curveLength; // $v1
} // line 93, address 0x2c39c
{ // line 80, address 0x2c460
{ // line 85, address 0x2c530
} // line 87, address 0x2c54c
{ // line 1, address 0x2c5f8
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2c6dc
{ // line 1, address 0x2c770
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2c84c
} // line 112, address 0x2c85c
{ // line 117, address 0x2c898
struct VECTOR startPos2; // stack address -88
int deltaAngle; // $a0
int dir2NextRow; // $a1
int faceDir; // $s1
int numSpareCars; // $a0
int count; // $s2
int numSpots; // $fp
{ // line 129, address 0x2c9b0
int numCarsToAdd; // $s5
{ // line 133, address 0x2c9e4
{ // line 1, address 0x2cb2c
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2cc10
{ // line 1, address 0x2cca4
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2cd80
} // line 157, address 0x2cd90
} // line 158, address 0x2cd9c
} // line 159, address 0x2cd9c
} // line 166, address 0x2cddc
/*
* Offset 0x2CE0C
* D:\driver2\game\C\CIV_AI.C (line 2144)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitCivCars()
{ // line 2, address 0x2ce0c
} // line 13, address 0x2ce78
/*
* Offset 0x2CE78
* D:\driver2\game\C\CIV_AI.C (line 2699)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CivControl(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x2ce78
{ // line 1, address 0x2ce78
} // line 1, address 0x2ce78
{ // line 30, address 0x2cef4
} // line 32, address 0x2cf28
} // line 41, address 0x2cf80
/*
* Offset 0x2CF80
* D:\driver2\game\C\CIV_AI.C (line 2116)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TrafficLightCycle(int exit /*$a0*/)
{ // line 1, address 0x2cf80
int timeCnt; // $v1
} // line 25, address 0x2cfe8
/*
* Offset 0x2CFE8
* D:\driver2\game\C\CIV_AI.C (line 1977)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ PingOutCar(struct _CAR_DATA *cp /*$s0*/)
{
}
/*
* Offset 0x2D0EC
* D:\driver2\game\C\CIV_AI.C (line 930)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ CivCarFX(struct _CAR_DATA *cp /*$s0*/)
{
}
/*
* Offset 0x2D184
* D:\driver2\game\C\CIV_AI.C (line 891)
* Stack frame base $sp, length 0
*/
struct _CAR_DATA * /*$ra*/ FindClosestCar(int x /*$t4*/, int y /*$a1*/, int z /*$a2*/, int *distToCarSq /*$a3*/)
{ // line 1, address 0x2d184
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, address 0x2d288
/*
* Offset 0x2D288
* D:\driver2\game\C\CIV_AI.C (line 2084)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetUpTrafficLightPhase()
{
}
/*
* Offset 0x2D2B4
* D:\driver2\game\C\CIV_AI.C (line 918)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ NotTravellingAlongCurve(int x /*$a0*/, int z /*$a1*/, int dir /*$s0*/, struct DRIVER2_CURVE *cv /*$a3*/)
{ // line 1, address 0x2d2b4
} // line 9, address 0x2d300

118
src/C/convert.c Normal file
View File

@ -0,0 +1,118 @@
#include "../decomp_defs.h"
/*
* Offset 0x2D36C
* D:\driver2\game\C\CONVERT.C (line 272)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ BuildWorldMatrix()
{ // line 2, address 0x2d36c
struct MATRIX newmatrix; // stack address -48
} // line 17, address 0x2d460
/*
* Offset 0x2D460
* D:\driver2\game\C\CONVERT.C (line 149)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ Calc_Object_MatrixYZX(struct MATRIX *mat /*$s0*/, struct SVECTOR *angles /*$s1*/)
{
}
/*
* Offset 0x2D4D8
* D:\driver2\game\C\CONVERT.C (line 182)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ _RotMatrixX(struct MATRIX *m /*$v0*/, short ang /*$a1*/)
{
}
/*
* Offset 0x2D504
* D:\driver2\game\C\CONVERT.C (line 187)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ _RotMatrixY(struct MATRIX *m /*$v0*/, short ang /*$a1*/)
{
}
/*
* Offset 0x2D530
* D:\driver2\game\C\CONVERT.C (line 192)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ _RotMatrixZ(struct MATRIX *m /*$v0*/, short ang /*$a1*/)
{
}
/*
* Offset 0x2D55C
* D:\driver2\game\C\CONVERT.C (line 199)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ RotMatrixXYZ(struct MATRIX *m /*$v0*/, struct SVECTOR *r /*$a1*/)
{
}
/*
* Offset 0x2D584
* D:\driver2\game\C\CONVERT.C (line 205)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ _MatrixRotate(struct VECTOR *pos /*$s0*/)
{ // line 1, address 0x2d584
struct VECTOR temp; // stack address -24
} // line 9, address 0x2d5c4
/*
* Offset 0x2D5C4
* D:\driver2\game\C\CONVERT.C (line 240)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InvertMatrix(struct MATRIX *a /*$a0*/, struct MATRIX *b /*$a1*/)
{
}
/*
* Offset 0x2D630
* D:\driver2\game\C\CONVERT.C (line 334)
* Stack frame base $sp, length 176
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ScaleCamera()
{ // line 2, address 0x2d630
struct MATRIX temp; // stack address -160
struct MATRIX temp2; // stack address -128
struct MATRIX scale; // stack address -96
struct MATRIX scaledcammat; // stack address -64
struct VECTOR pos; // stack address -32
struct SVECTOR tempang; // stack address -16
} // line 27, address 0x2d6e0
/*
* Offset 0x2D6E0
* D:\driver2\game\C\CONVERT.C (line 365)
* Stack frame base $sp, length 0
*/
void /*$ra*/ Getlong(char *dest /*$a0*/, char *source /*$a1*/)
{
}
/*
* Offset 0x2D710
* D:\driver2\game\C\CONVERT.C (line 387)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ RandomInit(long i1 /*$a0*/, long i2 /*$a1*/)
{ // line 2, address 0x2d710
int count; // $s0
} // line 15, address 0x2d78c
/*
* Offset 0x2D78C
* D:\driver2\game\C\CONVERT.C (line 414)
* Stack frame base $sp, length 0
*/
long /*$ra*/ Random2(int step /*$a0*/)
{ // line 2, address 0x2d78c
unsigned int seed; // $a0
} // line 6, address 0x2d7f4

272
src/C/cop_ai.c Normal file
View File

@ -0,0 +1,272 @@
#include "../decomp_defs.h"
COP_DATA gCopData =
{ 0, 0, 0, 2048, 0, 4096, 2048, 3000000, { 0, 0, 0, 0, 0 } };
int speed1[] = { 0xCB, 0xD2, 0xD9 };
int speed2[] = { 0xEE, 0x10A, 0x126 };
char sqtbl[] = {
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84,
0x84, 0x85, 0x86, 0x86, 0x87, 0x88, 0x88, 0x89, 0x8A,
0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x90, 0x91,
0x92, 0x93, 0x94, 0x95, 0x96, 0x98, 0x99, 0x9A, 0x9B,
0x9C, 0x9D, 0x9E, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA6,
0xA7, 0xA8, 0xAA, 0xAB, 0xAC, 0xAE, 0xAF, 0xB0, 0xB2,
0xB3, 0xB5};
/*
* Offset 0x2D7F4
* D:\driver2\game\C\COP_AI.C (line 593)
* Stack frame base $sp, length 152
* Saved registers at address -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, address 0x2d7f4
int th; // $s0
int j; // $s3
int thl[4]; // stack address -136
struct VECTOR pos; // stack address -120
struct VECTOR dir; // stack address -104
{ // line 11, address 0x2d878
struct VECTOR p2; // stack address -88
struct VECTOR d2; // stack address -72
int colour[3]; // stack address -56
} // line 21, address 0x2d904
} // line 46, address 0x2da04
/*
* Offset 0x2DA04
* D:\driver2\game\C\COP_AI.C (line 643)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitCops()
{
}
/*
* Offset 0x2DB40
* D:\driver2\game\C\COP_AI.C (line 708)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ ControlCops()
{ // line 2, address 0x2db40
{ // line 18, address 0x2db9c
int playerID; // $v1
} // line 21, address 0x2dbdc
{ // line 41, address 0x2dcd4
int heading; // $s1
int rnd; // $s0
} // line 66, address 0x2de04
{ // line 76, address 0x2de64
int copsWereInPursuit; // $a1
} // line 90, address 0x2df04
{ // line 93, address 0x2df14
} // line 99, address 0x2df48
} // line 101, address 0x2df48
/*
* Offset 0x2DF64
* D:\driver2\game\C\COP_AI.C (line 845)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ CopControl1(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x2df64
int currentSpeed; // $s7
int desiredSteerAngle; // $s4
{ // line 48, address 0x2e02c
int dx; // $a1
int dz; // $a0
{ // line 52, address 0x2e080
} // line 60, address 0x2e0c0
} // line 61, address 0x2e0c0
{ // line 67, address 0x2e0d8
struct VECTOR pos; // stack address -88
} // line 77, address 0x2e2a4
{ // line 90, address 0x2e2a4
enum AIZone targetZone; // $a0
struct VECTOR doordir; // stack address -72
int targetFound; // $a1
int cx; // $s5
int cz; // $s6
int dvx; // $s0
int dvz; // $s3
int dist; // $s2
int framesToImpact; // $a1
{ // line 139, address 0x2e3c8
int dz; // $a1
int idvx; // $v1
int idvz; // $v0
} // line 139, address 0x2e3c8
{ // line 204, address 0x2e64c
struct iVectNT path[2]; // stack address -56
int slidevel; // $a3
{ // line 260, address 0x2e950
int plcrspd; // $a1
} // line 263, address 0x2e9bc
} // line 279, address 0x2ea90
{ // line 295, address 0x2eae0
int b; // $a0
} // line 300, address 0x2eb28
{ // line 304, address 0x2eb28
int steerdif; // $v1
int speeddif; // $a2
int maxPower; // $a1
{ // line 330, address 0x2ec20
int sf; // $v1
} // line 332, address 0x2ec38
} // line 343, address 0x2eccc
} // line 343, address 0x2eccc
{ // line 352, address 0x2ecec
} // line 356, address 0x2ed14
} // line 358, address 0x2ed14
/*
* Offset 0x2ED40
* D:\driver2\game\C\COP_AI.C (line 1368)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ ControlCopDetection()
{ // line 14, address 0x2ed40
int dx; // $v1
int dz; // $a0
struct VECTOR vec; // stack address -64
int ccx; // stack address -32
int ccz; // stack address -28
char *scratch; // $s4
struct _CAR_DATA *lcp; // $s1
{ // line 17, address 0x2ed40
{ // line 17, address 0x2ed40
int angry; // $v1
} // line 23, address 0x2ee10
} // line 23, address 0x2ee10
{ // line 48, address 0x2ee64
int dx; // $v1
int dz; // $v0
} // line 58, address 0x2eee4
{ // line 66, address 0x2ef38
int distanceToPlayer; // $s0
int active; // $s2
{ // line 1, address 0x2efd8
struct _CAR_DATA *cp; // $s1
int distanceToPlayer; // $s0
{ // line 1, address 0x2efd8
int farDist; // $v1
int nearDist; // $v0
char result; // $s2
{ // line 1, address 0x2eff8
int theta; // $v1
struct VECTOR delta; // stack address -48
{ // line 1, address 0x2f098
} // line 1, address 0x2f09c
} // line 1, address 0x2f09c
} // line 1, address 0x2f09c
} // line 1, address 0x2f09c
} // line 84, address 0x2f0b8
{ // line 110, address 0x2f1cc
} // line 110, address 0x2f1cc
{ // line 123, address 0x2f1f8
{ // line 130, address 0x2f220
} // line 150, address 0x2f290
} // line 152, address 0x2f2a0
{ // line 157, address 0x2f2c4
int rnd; // $s0
int dir; // $s1
} // line 161, address 0x2f330
{ // line 166, address 0x2f364
int rnd; // $s0
int dir; // $s1
} // line 168, address 0x2f3fc
} // line 174, address 0x2f434
/*
* Offset 0x2F434
* D:\driver2\game\C\COP_AI.C (line 1583)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ControlNumberOfCops()
{ // line 2, address 0x2f434
int numWantedCops; // $t2
{ // line 5, address 0x2f434
short *pTrigger; // $a2
} // line 13, address 0x2f4bc
{ // line 26, address 0x2f508
int temp; // $a1
} // line 41, address 0x2f5b4
{ // line 50, address 0x2f5d8
int num_closer; // $a2
int cutOffDistance; // $a1
{ // line 55, address 0x2f5e8
struct _CAR_DATA *lcp; // $a0
int tempDist; // $a3
{ // line 64, address 0x2f614
int copDist; // $v1
} // line 75, address 0x2f634
} // line 78, address 0x2f644
} // line 81, address 0x2f650
} // line 88, address 0x2f674
/*
* Offset 0x2F674
* D:\driver2\game\C\COP_AI.C (line 824)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ CopControl(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x2f674
} // line 18, address 0x2f6e8
/*
* Offset 0x2F6E8
* D:\driver2\game\C\COP_AI.C (line 577)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitCopState(struct _CAR_DATA *cp /*$s0*/, char *extraData /*$a1*/)
{
}
/*
* Offset 0x2F764
* D:\driver2\game\C\COP_AI.C (line 1562)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PassiveCopTasks(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x2f764
{ // line 1, address 0x2f7d4
struct _CAR_DATA *cp; // $s0
} // line 1, address 0x2f82c
} // line 14, address 0x2f860
/*
* Offset 0x2F860
* D:\driver2\game\C\COP_AI.C (line 1267)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitCopData(struct COP_DATA *pCopData /*$a0*/)
{ // line 1, address 0x2f860
short *pTrigger; // $v1
short trigger; // $a2
} // line 14, address 0x2f8ac
/*
* Offset 0x2F8AC
* D:\driver2\game\C\COP_AI.C (line 1308)
* Stack frame base $sp, length 0
*/
void /*$ra*/ UpdateCopSightData()
{ // line 2, address 0x2f8ac
int angry; // $v1
} // line 6, address 0x2f944
/*
* Offset 0x2F944
* D:\driver2\game\C\COP_AI.C (line 1231)
* Stack frame base $sp, length 0
*/
int /*$ra*/ FindCost(int x /*$a0*/, int z /*$a1*/, int dvx /*$a2*/, int dvz /*$a3*/)
{ // line 1, address 0x2f944
int tx; // $v0
int tz; // $v0
int dx; // $a2
int dz; // $v1
int d; // $v0
} // line 13, address 0x2f9fc

168
src/C/cosmetic.c Normal file
View File

@ -0,0 +1,168 @@
#include "../decomp_defs.h"
char* CosmeticFiles[] ={
"LEVELS\\CHICAGO.LCF",
"LEVELS\\HAVANA.LCF",
"LEVELS\\VEGAS.LCF",
"LEVELS\\RIO.LCF",
};
/*
* Offset 0x2F9FC
* D:\driver2\game\C\COSMETIC.C (line 252)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ AddReverseLight(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x2f9fc
struct CAR_COSMETICS *car_cos; // $a1
struct SVECTOR v1; // stack address -32
struct CVECTOR col; // stack address -24
short cogOffset; // $s2
} // line 31, address 0x2fb54
/*
* Offset 0x2FB54
* D:\driver2\game\C\COSMETIC.C (line 325)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ AddIndicatorLight(struct _CAR_DATA *cp /*$s0*/, int Type /*$s6*/)
{ // line 1, address 0x2fb54
struct CAR_COSMETICS *car_cos; // $a1
struct CVECTOR col; // stack address -56
struct SVECTOR vfrnt; // stack address -48
struct SVECTOR vback; // stack address -40
char tempcol; // $s1
char *life; // $a0
char *life2; // $s3
short cogOffset; // $s2
} // line 72, address 0x2fe24
/*
* Offset 0x2FE4C
* D:\driver2\game\C\COSMETIC.C (line 407)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ AddBrakeLight(struct _CAR_DATA *cp /*$s5*/)
{ // line 1, address 0x2fe4c
struct CAR_COSMETICS *car_cos; // $a1
struct SVECTOR v1; // stack address -88
struct SVECTOR v2; // stack address -80
struct SVECTOR vec; // stack address -72
struct CVECTOR col; // stack address -64
char *life2; // $s2
short doubleFlag; // stack address -56
short verticalFlag; // stack address -52
short address; // $s1
short loop; // $fp
short damIndex; // $v0
short cogOffset; // $a3
} // line 97, address 0x30180
/*
* Offset 0x301B0
* D:\driver2\game\C\COSMETIC.C (line 514)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ AddCopCarLight(struct _CAR_DATA *cp /*$t0*/)
{ // line 1, address 0x301b0
int length; // $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] = { 0x30, 0x20, 0x10, 0, 0, 0x10, 0x20, 0x30 };
int sign; // $t1
char *coplife; // $s2
struct SVECTOR v1; // stack address -88
struct CVECTOR col; // stack address -80
struct CAR_COSMETICS *car_cos; // $s0
short cogOffset; // $fp
} // line 130, address 0x3057c
/*
* Offset 0x305AC
* D:\driver2\game\C\COSMETIC.C (line 653)
* Stack frame base $sp, length 128
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ AddNightLights(struct _CAR_DATA *cp /*$s6*/)
{ // line 1, address 0x305ac
static struct MATRIX work_matrix; // address 0x0
struct CAR_COSMETICS *car_cos; // $fp
struct SVECTOR Position1; // stack address -104
struct SVECTOR Position2; // stack address -96
struct SVECTOR vec; // stack address -88
struct CVECTOR col; // stack address -80
int lit; // stack address -72
int lightFlag; // $t0
char *life2; // stack address -68
short damIndex; // $s5
short loop; // stack address -64
short address; // $s2
short doubleFlag; // stack address -60
short verticalFlag; // stack address -56
short cogOffset; // stack address -52
} // line 266, address 0x30e04
/*
* Offset 0x30E04
* D:\driver2\game\C\COSMETIC.C (line 989)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ AddSmokingEngine(struct _CAR_DATA *cp /*$s0*/, int black_smoke /*$s2*/, int WheelSpeed /*$s3*/)
{ // line 1, address 0x30e04
struct VECTOR SmokePos; // stack address -64
struct CAR_COSMETICS *car_cos; // $a0
struct VECTOR Drift; // stack address -48
struct SVECTOR svec; // stack address -32
} // line 49, address 0x30ff8
/*
* Offset 0x31014
* D:\driver2\game\C\COSMETIC.C (line 1048)
* Stack frame base $sp, length 88
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ AddFlamingEngine(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x31014
struct VECTOR SmokePos; // stack address -56
struct SVECTOR svec; // stack address -40
struct CAR_COSMETICS *car_cos; // $a0
struct VECTOR Drift; // stack address -32
} // line 36, address 0x311b4
/*
* Offset 0x311C8
* D:\driver2\game\C\COSMETIC.C (line 188)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ LoadCosmetics(int level /*$a0*/)
{ // line 2, address 0x311c8
} // line 15, address 0x31218
/*
* Offset 0x31218
* D:\driver2\game\C\COSMETIC.C (line 213)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ ProcessCosmeticsLump(char *lump_ptr /*$s2*/, int lump_size /*$a1*/)
{ // line 1, address 0x31218
int i; // $t0
int model; // $a1
int address; // $a0
{ // line 23, address 0x312a0
} // line 27, address 0x313a0
} // line 30, address 0x313c8
/*
* Offset 0x313C8
* D:\driver2\game\C\COSMETIC.C (line 293)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupSpecCosmetics(char *loadbuffer /*$a0*/)
{ // line 5, address 0x313c8
int *to; // $a1
int *from; // $a0
int *end; // $v1
} // line 18, address 0x31400

236
src/C/cutscene.c Normal file
View File

@ -0,0 +1,236 @@
#include "../decomp_defs.h"
/*
* Offset 0x31400
* D:\driver2\game\C\CUTSCENE.C (line 646)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawInGameCutscene()
{ // line 2, address 0x31400
struct TILE *tile; // $s0
} // line 30, address 0x31550
/*
* Offset 0x31550
* D:\driver2\game\C\CUTSCENE.C (line 683)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ TriggerChase(int *car /*$s2*/, int cutscene /*$a1*/)
{ // line 1, address 0x31550
void *inform; // $s3
int i; // $a0
int length; // $s1
{ // line 12, address 0x315c0
} // line 38, address 0x3170c
} // line 42, address 0x31754
/*
* Offset 0x31754
* D:\driver2\game\C\CUTSCENE.C (line 838)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ ReleaseInGameCutscene()
{ // line 2, address 0x31754
{ // line 7, address 0x317b0
struct STREAM_SOURCE *pinfo; // $a0
int i; // $s0
} // line 79, address 0x319e0
} // line 105, address 0x31a88
/*
* Offset 0x31A88
* D:\driver2\game\C\CUTSCENE.C (line 1040)
* Stack frame base $sp, length 96
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ TriggerInGameCutsceneSystem(int cutscene /*$a0*/)
{ // line 1, address 0x31a88
static char padid[8]; // address 0x0
int bDamageOverride; // stack address -64
int i; // $s2
int id; // $v1
{ // line 18, address 0x31acc
{ // line 54, address 0x31c2c
int car; // $v1
int model; // $v1
int palette; // $a1
} // line 65, address 0x31c84
{ // line 85, address 0x31d14
{ // line 90, address 0x31d74
int car; // $v1
} // line 104, address 0x31df8
} // line 112, address 0x31df8
} // line 146, address 0x31f08
} // line 151, address 0x31f44
/*
* Offset 0x31F44
* D:\driver2\game\C\CUTSCENE.C (line 1199)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetNullPlayer(int plr /*$a0*/)
{ // line 1, address 0x31f44
} // line 14, address 0x31fc8
/*
* Offset 0x31FC8
* D:\driver2\game\C\CUTSCENE.C (line 1221)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetNullPlayerDontKill(int plr /*$a0*/)
{ // line 1, address 0x31fc8
} // line 14, address 0x32048
/*
* Offset 0x32048
* D:\driver2\game\C\CUTSCENE.C (line 1244)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DestroyPlayer(int plr /*$s0*/, int fully /*$a1*/)
{
}
/*
* Offset 0x32180
* D:\driver2\game\C\CUTSCENE.C (line 1299)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ LoadCutsceneToReplayBuffer(int residentCutscene /*$a0*/)
{ // line 2, address 0x32180
struct REPLAY_SAVE_HEADER *rheader; // $a1
struct REPLAY_STREAM_HEADER *sheader; // $t1
char filename[64]; // stack address -88
char *pt; // $s1
int i; // $a0
int length; // $s0
} // line 56, address 0x324a4
/*
* Offset 0x324A4
* D:\driver2\game\C\CUTSCENE.C (line 1362)
* Stack frame base $sp, length 456
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ LoadCutsceneToBuffer(int subindex /*$s3*/)
{ // line 1, address 0x324a4
struct CUTSCENE_HEADER header; // stack address -440
struct REPLAY_SAVE_HEADER rheader; // stack address -376
char filename[64]; // stack address -88
int address; // $a2
int length; // $s0
} // line 78, address 0x32628
/*
* Offset 0x32628
* D:\driver2\game\C\CUTSCENE.C (line 566)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitInGameCutsceneVariables()
{
}
/*
* Offset 0x32694
* D:\driver2\game\C\CUTSCENE.C (line 594)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ HandleInGameCutscene()
{ // line 2, address 0x32694
{ // line 37, address 0x32774
} // line 48, address 0x32798
} // line 50, address 0x327a8
/*
* Offset 0x327A8
* D:\driver2\game\C\CUTSCENE.C (line 732)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ TriggerInGameCutscene(int cutscene /*$s0*/)
{ // line 1, address 0x327a8
{ // line 30, address 0x32858
} // line 37, address 0x32894
} // line 38, address 0x32894
/*
* Offset 0x328A4
* D:\driver2\game\C\CUTSCENE.C (line 778)
* Stack frame base $sp, length 152
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CalcInGameCutsceneSize()
{ // line 39, address 0x328a4
struct CUTSCENE_HEADER header; // stack address -136
char filename[64]; // stack address -72
} // line 52, address 0x32930
/*
* Offset 0x32930
* D:\driver2\game\C\CUTSCENE.C (line 951)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ PreLoadInGameCutscene(int chase /*$a0*/)
{
}
/*
* Offset 0x32950
* D:\driver2\game\C\CUTSCENE.C (line 965)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CutsceneCameraChange(int cameracnt /*$s0*/)
{
}
/*
* Offset 0x32A1C
* D:\driver2\game\C\CUTSCENE.C (line 1010)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ LoadInGameCutscene(int subindex /*$s1*/)
{ // line 1, address 0x32a1c
int ret; // $s0
} // line 23, address 0x32a9c
/*
* Offset 0x32A9C
* D:\driver2\game\C\CUTSCENE.C (line 1274)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FindNextCutChange(int cameracnt /*$a0*/)
{ // line 1, address 0x32a9c
int found; // $t0
int count; // $a3
int nextframe; // $a2
} // line 17, address 0x32b00
/*
* Offset 0x32B00
* D:\driver2\game\C\CUTSCENE.C (line 1471)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ LoadCutsceneInformation(int cutscene /*$s2*/)
{ // line 1, address 0x32b00
int i; // $s1
} // line 27, address 0x32bbc
/*
* Offset 0x32BBC
* D:\driver2\game\C\CUTSCENE.C (line 1505)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ FreeCutsceneBuffer()
{ // line 2, address 0x32bbc
int i; // $v1
} // line 13, address 0x32c28
/*
* Offset 0x32C28
* D:\driver2\game\C\CUTSCENE.C (line 1520)
* Stack frame base $sp, length 0
*/
int /*$ra*/ IsCutsceneResident(int cutscene /*$a0*/)
{ // line 1, address 0x32c28
int i; // $a1
} // line 13, address 0x32c70
/*
* Offset 0x32C70
* D:\driver2\game\C\CUTSCENE.C (line 1442)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ShowCutsceneError()
{
}

997
src/C/debris.c Normal file
View File

@ -0,0 +1,997 @@
#include "../decomp_defs.h"
#include "texture.h"
TRI_POINT debris_rot1[32]; // offset 0xC0A60
TRI_POINT debris_rot2[32]; // offset 0xC0BE0
TRI_POINT debris_rot3[32]; // offset 0xC0D60
TRI_POINT leaf_rot[32]; // offset 0xC1DC0
TRI_POINT litter_rot[32]; // offset 0xC08D0
TRI_POINT* debris_rot_table[5] = {
debris_rot1,
leaf_rot,
litter_rot,
debris_rot2,
debris_rot3,
};
// debris_colour[4][31]
CVECTOR debris_colour[124] =
{
{ 100u, 100u, 100u, 0u },
{ 214u, 214u, 244u, 0u },
{ 195u, 79u, 65u, 0u },
{ 83u, 83u, 101u, 0u },
{ 197u, 142u, 80u, 0u },
{ 222u, 204u, 196u, 0u },
{ 189u, 168u, 114u, 0u },
{ 203u, 180u, 121u, 0u },
{ 132u, 145u, 103u, 0u },
{ 168u, 143u, 122u, 0u },
{ 107u, 107u, 107u, 0u },
{ 192u, 110u, 110u, 0u },
{ 130u, 130u, 130u, 0u },
{ 101u, 129u, 145u, 0u },
{ 130u, 130u, 130u, 0u },
{ 181u, 88u, 88u, 0u },
{ 130u, 105u, 83u, 0u },
{ 164u, 164u, 164u, 0u },
{ 126u, 143u, 108u, 0u },
{ 140u, 163u, 181u, 0u },
{ 143u, 129u, 152u, 0u },
{ 156u, 138u, 118u, 0u },
{ 190u, 190u, 190u, 0u },
{ 203u, 112u, 112u, 0u },
{ 255u, 242u, 201u, 0u },
{ 167u, 145u, 90u, 0u },
{ 190u, 190u, 190u, 0u },
{ 150u, 164u, 184u, 0u },
{ 102u, 102u, 102u, 0u },
{ 140u, 114u, 99u, 0u },
{ 75u, 63u, 134u, 0u },
{ 100u, 100u, 100u, 0u },
{ 83u, 82u, 97u, 0u },
{ 138u, 179u, 201u, 0u },
{ 114u, 159u, 183u, 0u },
{ 107u, 61u, 46u, 0u },
{ 162u, 120u, 76u, 0u },
{ 235u, 227u, 214u, 0u },
{ 197u, 138u, 121u, 0u },
{ 159u, 169u, 131u, 0u },
{ 146u, 178u, 195u, 0u },
{ 181u, 151u, 101u, 0u },
{ 230u, 191u, 139u, 0u },
{ 147u, 147u, 151u, 0u },
{ 182u, 127u, 138u, 0u },
{ 160u, 165u, 127u, 0u },
{ 175u, 203u, 225u, 0u },
{ 211u, 175u, 117u, 0u },
{ 209u, 167u, 118u, 0u },
{ 157u, 147u, 140u, 0u },
{ 210u, 191u, 145u, 0u },
{ 155u, 185u, 148u, 0u },
{ 158u, 210u, 254u, 0u },
{ 206u, 176u, 134u, 0u },
{ 236u, 173u, 117u, 0u },
{ 146u, 146u, 146u, 0u },
{ 88u, 103u, 128u, 0u },
{ 96u, 96u, 96u, 0u },
{ 125u, 92u, 92u, 0u },
{ 184u, 174u, 155u, 0u },
{ 42u, 42u, 42u, 0u },
{ 219u, 37u, 130u, 0u },
{ 100u, 100u, 100u, 0u },
{ 112u, 110u, 112u, 0u },
{ 230u, 212u, 214u, 0u },
{ 178u, 181u, 175u, 0u },
{ 120u, 120u, 120u, 0u },
{ 102u, 101u, 115u, 0u },
{ 70u, 83u, 100u, 0u },
{ 206u, 108u, 88u, 0u },
{ 220u, 136u, 107u, 0u },
{ 97u, 97u, 97u, 0u },
{ 139u, 116u, 150u, 0u },
{ 173u, 173u, 173u, 0u },
{ 104u, 133u, 173u, 0u },
{ 224u, 196u, 139u, 0u },
{ 108u, 146u, 141u, 0u },
{ 82u, 82u, 82u, 0u },
{ 123u, 123u, 123u, 0u },
{ 140u, 67u, 67u, 0u },
{ 103u, 92u, 121u, 0u },
{ 219u, 192u, 148u, 0u },
{ 160u, 185u, 195u, 0u },
{ 158u, 173u, 130u, 0u },
{ 183u, 183u, 183u, 0u },
{ 126u, 98u, 84u, 0u },
{ 126u, 125u, 156u, 0u },
{ 36u, 74u, 203u, 0u },
{ 105u, 105u, 105u, 0u },
{ 162u, 179u, 183u, 0u },
{ 102u, 130u, 162u, 0u },
{ 149u, 88u, 88u, 0u },
{ 119u, 145u, 129u, 0u },
{ 100u, 100u, 100u, 0u },
{ 153u, 149u, 150u, 0u },
{ 118u, 110u, 131u, 0u },
{ 135u, 110u, 89u, 0u },
{ 191u, 102u, 66u, 0u },
{ 95u, 90u, 101u, 0u },
{ 157u, 171u, 186u, 0u },
{ 203u, 184u, 132u, 0u },
{ 221u, 100u, 100u, 0u },
{ 149u, 149u, 149u, 0u },
{ 100u, 118u, 145u, 0u },
{ 78u, 78u, 78u, 0u },
{ 105u, 128u, 107u, 0u },
{ 203u, 94u, 94u, 0u },
{ 163u, 178u, 152u, 0u },
{ 167u, 119u, 117u, 0u },
{ 117u, 139u, 142u, 0u },
{ 160u, 160u, 160u, 0u },
{ 92u, 92u, 92u, 0u },
{ 229u, 144u, 136u, 0u },
{ 145u, 167u, 149u, 0u },
{ 198u, 173u, 173u, 0u },
{ 137u, 163u, 175u, 0u },
{ 173u, 173u, 173u, 0u },
{ 143u, 143u, 143u, 0u },
{ 218u, 198u, 154u, 0u },
{ 104u, 134u, 78u, 0u },
{ 172u, 116u, 86u, 0u },
{ 155u, 170u, 185u, 0u },
{ 122u, 142u, 147u, 0u },
{ 193u, 193u, 193u, 0u }
};
unsigned char grassColour[4][3] = {
{0x6E, 0x73, 0x43},
{0x40, 0x37, 0x31},
{0x5B, 0x68, 0x38},
{0x76, 0x6C, 0x59}
};
VECTOR dummy = { 0 };
/*
* Offset 0x32C78
* D:\driver2\game\C\DEBRIS.C (line 790)
* Stack frame base $sp, length 848
* Saved registers at address -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, address 0x32c78
int car_road_height; // $s2
struct SVECTOR s[27]; // stack address -832
struct SVECTOR *ptr; // $s1
struct SVECTOR sout[27]; // stack address -616
struct VECTOR s1[12]; // stack address -400
struct VECTOR *ptr1; // $s0
struct POLY_FT4 *poly; // $t0
struct MATRIX final_matrix; // stack address -208
struct VECTOR averagepos; // stack address -176
int in_car; // $t0
int z; // stack address -48
int sub_level; // $fp
int count; // $s3
struct VECTOR mid_position; // stack address -160
{ // line 23, address 0x32d54
short farz; // $a2
short nearz; // $a0
} // line 108, address 0x32f28
{ // line 114, address 0x32f38
} // line 130, address 0x32fa0
{ // line 147, address 0x3301c
struct VECTOR toss; // stack address -144
int temp_y; // $a1
} // line 161, address 0x330d4
{ // line 164, address 0x3310c
long n[4]; // stack address -128
} // line 170, address 0x331d4
{ // line 177, address 0x33258
int count; // $s2
{ // line 206, address 0x3342c
long z[15]; // stack address -112
{ // line 216, address 0x33484
char *VertIdx; // $s0
{ // line 228, address 0x33504
} // line 233, address 0x33594
} // line 234, address 0x33594
} // line 235, address 0x335a4
} // line 237, address 0x335a4
} // line 239, address 0x335ac
/*
* Offset 0x335DC
* D:\driver2\game\C\DEBRIS.C (line 1327)
* Stack frame base $sp, length 48
* Saved registers at address -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, address 0x335dc
struct LEAF *myleaf; // $a1
int num; // $v1
int loop; // $s2
int temprand; // $s0
{ // line 16, address 0x33640
{ // line 74, address 0x3374c
} // line 79, address 0x33760
{ // line 83, address 0x33774
int temp; // $v0
} // line 83, address 0x33774
{ // line 89, address 0x337a0
int temp; // $v0
} // line 92, address 0x337b4
} // line 93, address 0x337b4
} // line 101, address 0x337ec
/*
* Offset 0x33814
* D:\driver2\game\C\DEBRIS.C (line 1493)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitDebrisNames()
{ // line 2, address 0x33814
GetTextureDetails("SMOKE", &smoke_texture);
GetTextureDetails("DEBRIS", &debris_texture);
GetTextureDetails("LITTER", &litter_texture);
GetTextureDetails("COPLIGHT", &cop_texture);
GetTextureDetails("LIGHT", &light_texture);
GetTextureDetails("SKID", &gTyreTexture);
GetTextureDetails("FLARE", &flare_texture);
GetTextureDetails("SPLASH", &sea_texture);
GetTextureDetails("SWBIRD1", &bird_texture1);
GetTextureDetails("SWBIRD2", &bird_texture2);
GetTextureDetails("LENSFLR", &lensflare_texture);
GetTextureDetails("SKYSUN", &sun_texture);
GetTextureDetails("SKYMOON", &moon_texture);
GetTextureDetails("DROP", &drop_texture);
GetTextureDetails("DIGIT", &digit_texture);
SetCLUT16Flags(digit_texture.clutid, 0x6, 0);
GetTextureDetails("COLLON", &collon_texture);
GetTextureDetails("JEANS1", &jeans_texture);
GetTextureDetails("ARM1", &arm1_texture);
GetTextureDetails("FOREARM1", &forearm1_texture);
GetTextureDetails("CHEST1", &chest1_texture);
GetTextureDetails("LOWHEAD", &head1_texture);
GetTextureDetails("ADDCAM", &addcam);
GetTextureDetails("FRAMEADV", &frameadv);
GetTextureDetails("AUTO", &autocam);
GetTextureDetails("CHASEC", &chasecar);
GetTextureDetails("CHOOSECA", &choosecar);
GetTextureDetails("CLOCK", &clock);
GetTextureDetails("DELCAM", &delcam);
GetTextureDetails("EDITCAM", &editcam);
GetTextureDetails("FIXEDCA", &fixedcam);
GetTextureDetails("INCAR", &incar);
GetTextureDetails("LENSCHA", &lenschan);
GetTextureDetails("LOOKCAR", &lookcar);
GetTextureDetails("MOVECMP", &movecam);
GetTextureDetails("MOVECAM", &movecampos); // is that intended to be wrong???
GetTextureDetails("OK", &ok);
GetTextureDetails("PAUSE", &pause);
GetTextureDetails("PLAYCAM", &playcam);
GetTextureDetails("PLAYPAU", &playpause);
GetTextureDetails("SAVE2CA", &save2card);
GetTextureDetails("RESTREP", &restart);
GetTextureDetails("HEAD1", &texturePedHead);
GetTextureDetails("TSHADOW", &tannerShadow_texture);
GetTextureDetails("LIGHTREF", &lightref_texture);
GetTextureDetails("LIGHT", &light_pool_texture);
texture_is_icon = 0;
head1_texture.coords.u3 = head1_texture.coords.u0 + 8;
head1_texture.coords.u1 = head1_texture.coords.u0 + 8;
InitButtonTextures();
InitTannerShadow();
} // line 62, address 0x33c04
/*
* Offset 0x33C04
* D:\driver2\game\C\DEBRIS.C (line 1564)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ InitDebris()
{ // line 2, address 0x33c04
int loop; // $v1
int count; // $s0
struct TPAN texnum; // stack address -88
struct TRI_POINT_LONG temptri; // stack address -80
struct BVECTOR *debrisPTR; // $a0
{ // line 37, address 0x33d5c
{ // line 41, address 0x33d78
} // line 46, address 0x33de8
} // line 63, address 0x33e94
} // line 110, address 0x34010
/*
* Offset 0x34010
* D:\driver2\game\C\DEBRIS.C (line 1753)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ AddGroundDebris()
{ // line 2, address 0x34010
struct VECTOR Position; // stack address -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, address 0x340e4
} // line 51, address 0x34168
} // line 54, address 0x34178
/*
* Offset 0x341A0
* D:\driver2\game\C\DEBRIS.C (line 1815)
* Stack frame base $sp, length 144
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawSmashable_sprites()
{ // line 2, address 0x341a0
int count; // $s6
struct VECTOR pos; // stack address -128
struct DAMAGED_OBJECT *dam; // $s2
{ // line 11, address 0x3420c
struct MATRIX object_matrix; // stack address -112
struct MATRIX spritematrix; // stack address -80
struct MATRIX *finalmatrix; // $s0
struct MODEL *model; // $s3
{ // line 46, address 0x343c4
unsigned long colours; // $a0
} // line 55, address 0x3441c
} // line 60, address 0x34450
} // line 62, address 0x3448c
/*
* Offset 0x3448C
* D:\driver2\game\C\DEBRIS.C (line 1925)
* Stack frame base $sp, length 128
* Saved registers at address -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*/)
{ // line 1, address 0x3448c
struct VECTOR v1; // stack address -112
struct VECTOR v2; // stack address -96
struct VECTOR v3; // stack address -80
struct SVECTOR pos; // stack address -64
struct CVECTOR col; // stack address -56
struct CVECTOR col1; // stack address -48
int count; // $v1
short angle; // $s2
int halo_size; // $fp
int length; // $s5
int LampId; // $s7
struct DAMAGED_LAMP *dam; // $s0
{ // line 36, address 0x34554
} // line 42, address 0x345a8
} // line 114, address 0x34890
/*
* Offset 0x348C0
* D:\driver2\game\C\DEBRIS.C (line 2049)
* Stack frame base $sp, length 104
* Saved registers at address -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*/)
{ // line 1, address 0x348c0
struct VECTOR v1; // stack address -88
struct VECTOR v2; // stack address -72
struct VECTOR v3; // stack address -56
struct SVECTOR pos; // stack address -40
struct CVECTOR col; // stack address -32
struct CVECTOR col1; // stack address -24
short angle; // $v1
int length; // $s1
} // line 126, address 0x34cd4
/*
* Offset 0x34CD4
* D:\driver2\game\C\DEBRIS.C (line 2178)
* Stack frame base $sp, length 0
*/
void /*$ra*/ PreLampStreak()
{ // line 2, address 0x34cd4
int count; // $a3
} // line 20, address 0x34d84
/*
* Offset 0x34D84
* D:\driver2\game\C\DEBRIS.C (line 2230)
* Stack frame base $sp, length 0
*/
int /*$ra*/ damage_lamp(struct CELL_OBJECT *cop /*$a2*/)
{ // line 1, address 0x34d84
int count; // $v1
int old_damage; // $v0
} // line 15, address 0x34e14
/*
* Offset 0x34E14
* D:\driver2\game\C\DEBRIS.C (line 2255)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ damage_object(struct CELL_OBJECT *cop /*$s1*/, struct VECTOR *velocity /*$a1*/)
{ // line 1, address 0x34e14
struct DAMAGED_OBJECT *dam; // $s0
{ // line 1, address 0x34e14
struct PACKED_CELL_OBJECT *pcop; // $a0
} // line 1, address 0x34e14
} // line 63, address 0x34fcc
/*
* Offset 0x34FCC
* D:\driver2\game\C\DEBRIS.C (line 2326)
* Stack frame base $sp, length 96
* Saved registers at address -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*/)
{ // line 1, address 0x34fcc
struct CVECTOR a; // stack address -80
struct CVECTOR b; // stack address -72
struct CVECTOR c; // stack address -64
struct VECTOR v1; // stack address -56
struct VECTOR v2; // stack address -40
int lDiffAnglesX; // $s2
int lDiffAnglesY; // $s1
int AbsX; // $a2
int AbsY; // $a1
int tempfade; // $v0
{ // line 1, address 0x34fcc
int c; // $t1
int s; // $t2
} // line 1, address 0x34fcc
} // line 90, address 0x35318
/*
* Offset 0x35334
* D:\driver2\game\C\DEBRIS.C (line 2462)
* Stack frame base $sp, length 88
* Saved registers at address -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 length /*$s5*/, struct TEXTURE_DETAILS *texture /*stack 16*/, int flag /*stack 20*/)
{ // line 1, address 0x35334
int CarLightFade; // $a1
struct VECTOR v1t; // stack address -72
struct VECTOR v1l; // stack address -56
struct CVECTOR flareCol; // stack address -40
int front; // $a0
} // line 52, address 0x3559c
/*
* Offset 0x355C4
* D:\driver2\game\C\DEBRIS.C (line 2523)
* Stack frame base $sp, length 40
*/
void /*$ra*/ ShowLight1(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short length /*$a2*/, struct TEXTURE_DETAILS *texture /*$a3*/)
{ // line 1, address 0x355c4
struct SVECTOR vert[4]; // stack address -40
struct POLY_FT4 *poly; // $t0
int z; // stack address -8
} // line 52, address 0x357b0
/*
* Offset 0x357B8
* D:\driver2\game\C\DEBRIS.C (line 2579)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ ShowLight(struct VECTOR *v1 /*$s0*/, struct CVECTOR *col /*$s3*/, short length /*$s4*/, struct TEXTURE_DETAILS *texture /*$s2*/)
{ // line 1, address 0x357b8
struct SVECTOR vert[4]; // stack address -88
struct POLY_FT4 *poly; // $s1
int z; // stack address -40
int index; // $a1
int tail_width; // $s5
{ // line 65, address 0x35abc
int loop; // $a1
} // line 71, address 0x35b14
{ // line 75, address 0x35b3c
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 address -56
struct SVECTOR head; // stack address -48
} // line 130, address 0x35f20
{ // line 148, address 0x35fd0
int loop; // $a3
} // line 154, address 0x36050
{ // line 158, address 0x3608c
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 address -56
struct SVECTOR head; // stack address -48
} // line 213, address 0x36470
} // line 215, address 0x36470
/*
* Offset 0x36494
* D:\driver2\game\C\DEBRIS.C (line 2804)
* Stack frame base $sp, length 40
*/
void /*$ra*/ ShowGroundLight(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short length /*$a2*/)
{ // line 1, address 0x36494
struct SVECTOR vert[4]; // stack address -40
struct POLY_FT4 *poly; // $t0
int z; // stack address -8
} // line 54, address 0x366e8
/*
* Offset 0x366F0
* D:\driver2\game\C\DEBRIS.C (line 2869)
* Stack frame base $sp, length 40
*/
void /*$ra*/ RoundShadow(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$a1*/, short length /*$a2*/)
{ // line 1, address 0x366f0
struct SVECTOR vert[4]; // stack address -40
struct POLY_FT4 *poly; // $t0
int z; // stack address -8
} // line 64, address 0x36938
/*
* Offset 0x36940
* D:\driver2\game\C\DEBRIS.C (line 2945)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ ShowFlare(struct VECTOR *v1 /*$a0*/, struct CVECTOR *col /*$s2*/, short length /*$a2*/, int rotation /*$a3*/)
{ // line 1, address 0x36940
struct SVECTOR vert[4]; // stack address -96
struct POLY_FT4 *poly; // $t0
struct SVECTOR direction; // stack address -64
struct MATRIX temp_matrix; // stack address -56
int z; // stack address -24
} // line 71, address 0x36bbc
/*
* Offset 0x36BD4
* D:\driver2\game\C\DEBRIS.C (line 3029)
* Stack frame base $sp, length 64
*/
void /*$ra*/ DisplayWater(struct SMOKE *smoke /*$a0*/)
{ // line 1, address 0x36bd4
struct POLY_FT4 *poly; // $t1
struct VECTOR v; // stack address -64
struct SVECTOR vert[4]; // stack address -48
int length; // $t1
int z; // $v0
int z1; // stack address -16
int z2; // stack address -12
int z3; // stack address -8
int z4; // stack address -4
} // line 58, address 0x36e80
/*
* Offset 0x36E80
* D:\driver2\game\C\DEBRIS.C (line 3102)
* Stack frame base $sp, length 40
*/
void /*$ra*/ DisplaySpark(struct SMOKE *spark /*$t1*/)
{ // line 1, address 0x36e80
int z; // stack address -8
struct SVECTOR v[3]; // stack address -40
struct SVECTOR TrailPos; // stack address -16
struct POLY_G3 *poly; // $t0
{ // line 33, address 0x36f98
unsigned char *col; // $a0
} // line 48, address 0x37048
} // line 68, address 0x371b8
/*
* Offset 0x371C0
* D:\driver2\game\C\DEBRIS.C (line 3182)
* Stack frame base $sp, length 0
*/
void /*$ra*/ GetSmokeDrift(struct VECTOR *Wind /*$t2*/)
{ // line 1, address 0x371c0
static int SinTabIndex1; // address 0x158
static int SinTabIndex2; // address 0x15c
static int SinTabIndex3; // address 0x160
static int WindMagnitude; // address 0x164
static int SinX; // address 0x0
static int CosX; // address 0x4
} // line 33, address 0x372b8
/*
* Offset 0x372B8
* D:\driver2\game\C\DEBRIS.C (line 3227)
* Stack frame base $sp, length 64
* Saved registers at address -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, address 0x372b8
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, address 0x3735c
} // line 32, address 0x3741c
} // line 58, address 0x374ac
/*
* Offset 0x374DC
* D:\driver2\game\C\DEBRIS.C (line 3296)
* Stack frame base $sp, length 56
* Saved registers at address -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*/)
{ // line 1, address 0x374dc
struct SMOKE *mysmoke; // $s0
int num; // $v1
{ // line 39, address 0x375fc
} // line 39, address 0x375fc
{ // line 76, address 0x37708
} // line 76, address 0x37708
{ // line 86, address 0x37754
} // line 91, address 0x37790
{ // line 127, address 0x37874
} // line 138, address 0x378ec
} // line 167, address 0x37988
/*
* Offset 0x379B8
* D:\driver2\game\C\DEBRIS.C (line 3475)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x379b8
struct SMOKE *mysmoke; // $s2
int num; // $s0
int loop; // $s4
int vx; // $s1
int vy; // $s0
int vz; // $v1
int randtemp; // $v0
{ // line 12, address 0x37a08
} // line 74, address 0x37b38
} // line 75, address 0x37b4c
/*
* Offset 0x37B7C
* D:\driver2\game\C\DEBRIS.C (line 3564)
* Stack frame base $sp, length 56
*/
void /*$ra*/ DisplayDebris(struct DEBRIS *debris /*$t2*/, char type /*$t3*/)
{ // line 1, address 0x37b7c
int pos; // $a1
int z; // stack address -8
struct SVECTOR v[4]; // stack address -56
struct TRI_POINT *tv; // $t1
struct VECTOR debrisvec; // stack address -24
struct POLY_FT3 *poly; // $t0
struct POLY_GT4 *poly1; // $t0
{ // line 43, address 0x37dfc
unsigned long cbgr; // $v1
} // line 54, address 0x37e78
} // line 84, address 0x38068
/*
* Offset 0x38070
* D:\driver2\game\C\DEBRIS.C (line 3659)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ HandleDebris()
{ // line 2, address 0x38070
int count; // $s0
int i; // $s3
struct DEBRIS *lpDebris; // $s1
struct SMOKE *smokeptr; // $s0
struct VECTOR dummy; // stack address -80
struct LEAF *lpLeaf; // $s1
int Height; // $v0
int SinX; // $s2
int CosX; // $v1
struct VECTOR Drift; // stack address -64
{ // line 193, address 0x38484
int offshore; // $s1
struct ROUTE_DATA routeData; // stack address -48
} // line 205, address 0x3851c
{ // line 294, address 0x38758
static int weather_level; // address 0x168
} // line 307, address 0x387b8
} // line 308, address 0x387e4
/*
* Offset 0x387E4
* D:\driver2\game\C\DEBRIS.C (line 3983)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DisplaySmoke(struct SMOKE *smoke /*$s0*/)
{ // line 1, address 0x387e4
struct POLY_FT4 *poly; // $t0
struct VECTOR v; // stack address -80
struct SVECTOR smokemesh[4]; // stack address -64
int x; // $s2
int negx; // $s1
int z; // stack address -32
int smoke_z_offset; // $s3
int tmode; // $a3
int length; // $v0
int centrex; // $a1
int centrey; // $v1
{ // line 58, address 0x389d8
char red; // $a0
char green; // $a1
char blue; // $v1
} // line 63, address 0x38a04
} // line 132, address 0x38d00
/*
* Offset 0x38D1C
* D:\driver2\game\C\DEBRIS.C (line 4118)
* Stack frame base $sp, length 0
*/
void /*$ra*/ add_haze(int top_col /*$a0*/, int bot_col /*$a1*/, short ot_pos /*$a2*/)
{ // line 1, address 0x38d1c
struct TILE *polys; // $a1
} // line 23, address 0x38e68
/*
* Offset 0x38E70
* D:\driver2\game\C\DEBRIS.C (line 4208)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawRainDrops()
{ // line 2, address 0x38e70
struct RAIN_TYPE *RainPtr; // $s0
struct POLY_GT3 *poly; // $a3
int Count; // $s2
int z; // stack address -48
struct SVECTOR v[3]; // stack address -88
struct VECTOR drift; // stack address -64
int tpage; // $fp
int clut; // $s7
int col; // $s1
{ // line 51, address 0x3900c
int notfirst; // $a1
} // line 88, address 0x391c0
} // line 92, address 0x39204
/*
* Offset 0x39204
* D:\driver2\game\C\DEBRIS.C (line 4413)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ AddRainDrops()
{ // line 2, address 0x39204
struct SVECTOR v; // stack address -48
struct RAIN_TYPE *RainPtr; // $a2
int RainIndex; // $s0
int RainNo; // $s1
int first; // $s3
static unsigned long rand; // address 0x8
{ // line 40, address 0x393f0
int depth; // $v0
} // line 43, address 0x39418
{ // line 53, address 0x3944c
struct ROUTE_DATA routeData; // stack address -40
} // line 61, address 0x3949c
} // line 64, address 0x394ac
/*
* Offset 0x394D0
* D:\driver2\game\C\DEBRIS.C (line 4489)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ DisplaySplashes()
{ // line 2, address 0x394d0
int SplashNo; // $s4
int SplashFrac; // $v0
struct VECTOR CamGnd; // stack address -96
struct VECTOR Gnd1; // stack address -80
struct VECTOR Gnd2; // stack address -64
struct VECTOR Position; // stack address -48
struct CVECTOR col; // stack address -32
static unsigned long rand; // address 0x170
int d1; // $a0
int d2; // $a2
} // line 58, address 0x39808
/*
* Offset 0x39828
* D:\driver2\game\C\DEBRIS.C (line 4550)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DisplayLightReflections(struct VECTOR *v1 /*$s1*/, struct CVECTOR *col /*$s3*/, short length /*$a2*/, struct TEXTURE_DETAILS *texture /*$s2*/)
{ // line 1, address 0x39828
struct SVECTOR vert[4]; // stack address -80
struct POLY_FT4 *poly; // $a1
struct CVECTOR thiscol; // stack address -48
int z; // stack address -40
int tpage; // $s5
int clut; // $s4
} // line 52, address 0x39a98
/*
* Offset 0x39ABC
* D:\driver2\game\C\DEBRIS.C (line 1686)
* Stack frame base $sp, length 0
*/
int /*$ra*/ AllocateDebris()
{
}
/*
* Offset 0x39AF8
* D:\driver2\game\C\DEBRIS.C (line 1297)
* Stack frame base $sp, length 0
*/
int /*$ra*/ AllocateLeaf()
{
}
/*
* Offset 0x39B34
* D:\driver2\game\C\DEBRIS.C (line 1719)
* Stack frame base $sp, length 0
*/
int /*$ra*/ AllocateSmoke()
{
}
/*
* Offset 0x39B70
* D:\driver2\game\C\DEBRIS.C (line 2200)
* Stack frame base $sp, length 0
*/
int /*$ra*/ find_lamp_streak(int LampId /*$a0*/)
{ // line 1, address 0x39b70
int count; // $a1
} // line 17, address 0x39be0
/*
* Offset 0x39BE0
* D:\driver2\game\C\DEBRIS.C (line 4607)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DoLightning()
{ // line 2, address 0x39be0
} // line 24, address 0x39cc0
/*
* Offset 0x39CD0
* D:\driver2\game\C\DEBRIS.C (line 2447)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FindCarLightFade(struct MATRIX *carToCamera /*$a0*/)
{ // line 2, address 0x39cd0
int zz; // $v0
} // line 5, address 0x39cf8
/*
* Offset 0x39CF8
* D:\driver2\game\C\DEBRIS.C (line 2428)
* Stack frame base $sp, length 8
*/
void /*$ra*/ InitFXPos(struct VECTOR *vec /*$a0*/, struct SVECTOR *svec /*$a1*/, struct _CAR_DATA *cp /*$a2*/)
{ // line 1, address 0x39cf8
struct SVECTOR svectmp; // stack address -8
} // line 9, address 0x39dd0
/*
* Offset 0x39DD0
* D:\driver2\game\C\DEBRIS.C (line 1704)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ReleaseDebris(short num /*$a0*/)
{
}
/*
* Offset 0x39DF4
* D:\driver2\game\C\DEBRIS.C (line 1313)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ReleaseLeaf(short num /*$a0*/)
{
}
/*
* Offset 0x39E18
* D:\driver2\game\C\DEBRIS.C (line 4190)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ReleaseRainDrop(int RainIndex /*$a0*/)
{
}
/*
* Offset 0x39E3C
* D:\driver2\game\C\DEBRIS.C (line 1737)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ReleaseSmoke(short num /*$a0*/)
{
}
/*
* Offset 0x39E60
* D:\driver2\game\C\DEBRIS.C (line 4152)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupRain()
{ // line 2, address 0x39e60
} // line 11, address 0x39ebc
/*
* Offset 0x39EBC
* D:\driver2\game\C\DEBRIS.C (line 1437)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SwirlLeaves(struct _CAR_DATA *cp /*$a0*/)
{ // line 1, address 0x39ebc
int count; // $s2
struct LEAF *lpLeaf; // $s0
int XDiff; // $v0
int ZDiff; // $a1
struct VECTOR *CarPos; // $s1
int WheelSpeed; // $a1
{ // line 38, address 0x39fc8
} // line 40, address 0x39fec
} // line 44, address 0x39ff8
/*
* Offset 0x3A010
* D:\driver2\game\C\DEBRIS.C (line 4725)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetDebrisColour(struct _CAR_DATA *cp /*$a0*/)
{ // line 1, address 0x3a010
int car_model; // $v1
int palette; // $a0
} // line 17, address 0x3a068
/*
* Offset 0x3A068
* D:\driver2\game\C\DEBRIS.C (line 4651)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DoWeather(int weather /*$a0*/)
{
}
/*
* Offset 0x3A124
* D:\driver2\game\C\DEBRIS.C (line 4635)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitThunder()
{ // line 1, address 0x3a124
} // line 1, address 0x3a188
/*
* Offset 0x3A188
* D:\driver2\game\C\DEBRIS.C (line 4636)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RequestThunder()
{
}
/*
* Offset 0x3A1AC
* D:\driver2\game\C\DEBRIS.C (line 4638)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ DoThunder()
{ // line 2, address 0x3a1ac
} // line 9, address 0x3a28c
/*
* Offset 0x3A29C
* D:\driver2\game\C\DEBRIS.C (line 1886)
* Stack frame base $sp, length 0
*/
int /*$ra*/ MoveSmashable_object()
{ // line 2, address 0x3a29c
int count; // $a3
struct DAMAGED_OBJECT *dam; // $a1
{ // line 10, address 0x3a2c0
int groundlevel; // $v0
} // line 25, address 0x3a328
} // line 28, address 0x3a33c
/*
* Offset 0x3A33C
* D:\driver2\game\C\DEBRIS.C (line 4173)
* Stack frame base $sp, length 0
*/
int /*$ra*/ AllocateRainDrop()
{
}

146
src/C/denting.c Normal file
View File

@ -0,0 +1,146 @@
#include "../decomp_defs.h"
char* DentingFiles[] =
{
"LEVELS\\CHICAGO.DEN",
"LEVELS\\HAVANA.DEN",
"LEVELS\\VEGAS.DEN",
"LEVELS\\RIO.DEN",
};
/*
* Offset 0x3A378
* D:\driver2\game\C\DENTING.C (line 288)
* Stack frame base $sp, length 24
* Saved registers at address -8: s0 s1 s2 s3 s4
*/
void /*$ra*/ DentCar(struct _CAR_DATA *cp /*$t7*/)
{ // line 1, address 0x3a378
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, address 0x3a6f8
} // line 135, address 0x3a6f8
} // line 140, address 0x3a74c
/*
* Offset 0x3A74C
* D:\driver2\game\C\DENTING.C (line 458)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CreateDentableCar(struct _CAR_DATA *cp /*$t2*/)
{ // line 1, address 0x3a74c
struct DENTUVS *dentptr; // $a3
int Zone; // $v1
int count; // $a2
int model; // $t3
{ // line 20, address 0x3a778
struct SVECTOR *dst; // $a2
struct SVECTOR *src; // $a3
int count; // $t0
{ // line 26, address 0x3a7b0
int x; // $v0
int y; // $v1
int z; // $a0
} // line 26, address 0x3a7b0
} // line 35, address 0x3a7d8
} // line 76, address 0x3a8dc
/*
* Offset 0x3A8DC
* D:\driver2\game\C\DENTING.C (line 549)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitHubcap()
{ // line 3, address 0x3a8dc
} // line 24, address 0x3a960
/*
* Offset 0x3A960
* D:\driver2\game\C\DENTING.C (line 600)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ LoseHubcap(int Hubcap /*$s3*/, int Velocity /*$a1*/)
{ // line 1, address 0x3a960
struct _CAR_DATA *car_data_pt; // $s1
struct SVECTOR InitialLocalAngle; // stack address -64
{ // line 71, address 0x3aaec
struct VECTOR R; // stack address -56
struct VECTOR VW; // stack address -40
long AY; // $t0
} // line 81, address 0x3ab48
} // line 94, address 0x3ab94
/*
* Offset 0x3ABB4
* D:\driver2\game\C\DENTING.C (line 706)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ MoveHubcap()
{ // line 2, address 0x3abb4
struct _CAR_DATA *car_data_pt; // $a1
struct VECTOR Position; // stack address -80
struct MATRIX Orientation; // stack address -64
struct CVECTOR col; // stack address -32
int VelocityMagnitude; // $s0
int CurrentMapHeight; // $a0
int savecombo; // $s0
{ // line 25, address 0x3ac60
} // line 28, address 0x3ac80
{ // line 32, address 0x3ac90
} // line 35, address 0x3acc0
{ // line 56, address 0x3ad0c
} // line 74, address 0x3ad8c
} // line 99, address 0x3aeac
/*
* Offset 0x3AEC8
* D:\driver2\game\C\DENTING.C (line 838)
* Stack frame base $sp, length 16
* Saved registers at address -4: s0 s1 s2 s3
*/
void /*$ra*/ ProcessDentLump(char *lump_ptr /*$t2*/, int lump_size /*$a1*/)
{ // line 1, address 0x3aec8
int i; // $a3
int model; // $a0
int address; // $a0
} // line 30, address 0x3b228
/*
* Offset 0x3B228
* D:\driver2\game\C\DENTING.C (line 267)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitialiseDenting()
{
}
/*
* Offset 0x3B258
* D:\driver2\game\C\DENTING.C (line 815)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ LoadDenting(int level /*$a0*/)
{ // line 2, address 0x3b258
} // line 15, address 0x3b2a8
/*
* Offset 0x3B2A8
* D:\driver2\game\C\DENTING.C (line 877)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupSpecDenting(char *loadbuffer /*$a0*/)
{ // line 1, address 0x3b2a8
char *from; // $a0
char *to; // $v1
char *limit; // $a1
} // line 34, address 0x3b34c

404
src/C/director.c Normal file
View File

@ -0,0 +1,404 @@
#include "../decomp_defs.h"
REPLAY_ICON replay_icons[23] =
{
{ 20, 26, &dir_pause, "Pause", 20, 48 },
{ 20, 26, &playpause, "Resume", 20, 48 },
{ 44, 26, &autocam, "Auto director", 44, 48 },
{ 68, 26, &playcam, "Play camera", 68, 48 },
{ 92, 26, &frameadv, "Single frame", 92, 48 },
{ 116, 26, &restart, "Rewind", 116, 48 },
{ 140, 26, &addcam, "Add camera", 140, 48 },
{ 164, 26, &editcam, "Edit camera", 164, 48 },
{ 188, 26, &save2card, "Save replay", 188, 48 },
{ 212, 26, &ok, "OK", 212, 48 },
{ 140, 50, &incar, "Inside car", 164, 48 },
{ 140, 74, &chasecar, "Chase camera", 164, 72 },
{ 140, 98, &fixedcam, "Fixed camera", 164, 96 },
{ 140, 122, &ok, "Accept", 164, 120 },
{ 140, 122, &clock, "Move camera start", 164, 120 },
{ 140, 146, &delcam, "Delete camera", 164, 144 },
{ 140, 170, &ok, "Accept", 164, 168 },
{ 164, 50, &choosecar, "Choose target vehicle", 164, 72 },
{ 164, 74, &movecampos, "Move camera position", 164, 96 },
{ 164, 98, &movecampos, "Move camera position", 164, 120 },
{ 188, 98, &lookcar, "Look at target", 188, 120 },
{ 212, 98, &movecam, "Move camera", 212, 120 },
{ 236, 98, &lenschan, "Lens zoom", 236, 120 }
};
char menu0[] = { 0, 0xFF };
char menu1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xFF };
char menu2[] = { 0xA, 0xB, 0xC, 0xD, 0xFF };
char menu3[] = { 0x11, 0xFF };
char menu4[] = { 0x12, 0xFF };
char menu5[] = { 0x13, 0x14, 0x15, 0x16, 0xFF };
char menu6[] = { 0xA, 0xB, 0xC, 0xE, 0xF, 0x10, 0xFF };
/*
* Offset 0x3B34C
* D:\driver2\game\C\DIRECTOR.C (line 513)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ EditCamera(int CameraCnt /*$a0*/)
{ // line 2, address 0x3b34c
int count; // $t0
{ // line 30, address 0x3b47c
int prev; // $a2
int next; // $v1
} // line 57, address 0x3b584
} // line 59, address 0x3b5b0
/*
* Offset 0x3B5B0
* D:\driver2\game\C\DIRECTOR.C (line 574)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ RecordCamera(int CameraCnt /*$s0*/)
{ // line 1, address 0x3b5b0
struct PLAYBACKCAMERA *TempChange; // $a1
} // line 58, address 0x3b7fc
/*
* Offset 0x3B7FC
* D:\driver2\game\C\DIRECTOR.C (line 658)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CheckCameraChange(int CameraCnt /*$s0*/)
{
}
/*
* Offset 0x3B930
* D:\driver2\game\C\DIRECTOR.C (line 731)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ IsMovingCamera(struct PLAYBACKCAMERA *lastcam /*$t3*/, struct PLAYBACKCAMERA *nextcam /*$t0*/, int cameracnt /*$a2*/)
{ // line 1, address 0x3b930
struct PLAYBACKCAMERA cam; // stack address -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, address 0x3bc10
/*
* Offset 0x3BC10
* D:\driver2\game\C\DIRECTOR.C (line 794)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 fp
*/
void /*$ra*/ CameraBar(int CameraCnt /*stack 0*/)
{ // line 1, address 0x3bc10
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 address -48
int last; // $s7
unsigned long idx; // $t9
} // line 133, address 0x3c1ec
/*
* Offset 0x3C218
* D:\driver2\game\C\DIRECTOR.C (line 966)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x3c218
static int FlashCnt; // address 0x0
struct REPLAY_ICON *IconPtr; // $s0
struct SPRT *icon; // $a2
int count; // $s6
{ // line 61, address 0x3c3a8
struct TEXTURE_DETAILS *Icon_texture; // $s1
int min_x; // $v1
int min_y; // $a0
{ // line 69, address 0x3c3cc
} // line 71, address 0x3c3ec
{ // line 82, address 0x3c44c
int ramp; // $a0
} // line 93, address 0x3c4b0
} // line 100, address 0x3c4d8
} // line 130, address 0x3c624
/*
* Offset 0x3C624
* D:\driver2\game\C\DIRECTOR.C (line 1135)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ ShowReplayMenu()
{ // line 2, address 0x3c624
{ // line 4, address 0x3c64c
} // line 8, address 0x3c670
{ // line 12, address 0x3c688
} // line 16, address 0x3c6a4
{ // line 43, address 0x3c7b8
int strobe; // $v0
} // line 47, address 0x3c800
} // line 49, address 0x3c810
/*
* Offset 0x3C810
* D:\driver2\game\C\DIRECTOR.C (line 1186)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ ControlReplay()
{ // line 2, address 0x3c810
static int debounce; // address 0x60
static int first_time; // address 0x64
int move; // $s0
{ // line 85, address 0x3ca68
int speed; // $s2
{ // line 95, address 0x3cad0
} // line 99, address 0x3caf4
{ // line 102, address 0x3cb0c
int prev; // $v1
} // line 105, address 0x3cb44
{ // line 141, address 0x3cc9c
struct ROUTE_DATA routeData; // stack address -96
int road_height; // $s1
} // line 152, address 0x3cd18
{ // line 161, address 0x3cd24
struct VECTOR old_camera; // stack address -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 address -72
struct VECTOR tmpPos; // stack address -56
{ // line 186, address 0x3cda0
struct _EVENT *event; // $a1
} // line 190, address 0x3cdd0
{ // line 224, address 0x3cecc
int temp; // $v0
} // line 228, address 0x3ced8
{ // line 245, address 0x3cf90
} // line 264, address 0x3cfdc
{ // line 268, address 0x3cfdc
struct ROUTE_DATA routeData; // stack address -40
int road_height; // $s1
} // line 289, address 0x3d0cc
} // line 291, address 0x3d0f0
} // line 320, address 0x3d230
{ // line 374, address 0x3d574
{ // line 496, address 0x3d870
} // line 496, address 0x3d870
{ // line 605, address 0x3dad4
int prev1; // $a1
} // line 615, address 0x3db14
} // line 789, address 0x3de74
} // line 802, address 0x3dea0
/*
* Offset 0x3DEC8
* D:\driver2\game\C\DIRECTOR.C (line 1990)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DoAutoDirect()
{ // line 2, address 0x3dec8
struct VECTOR pos; // stack address -40
{ // line 8, address 0x3df64
int new_view; // $v1
{ // line 25, address 0x3dffc
} // line 35, address 0x3e004
{ // line 58, address 0x3e0c0
int tmp; // $v0
} // line 67, address 0x3e138
{ // line 69, address 0x3e138
int tmp; // $v0
} // line 75, address 0x3e15c
} // line 105, address 0x3e32c
} // line 116, address 0x3e390
/*
* Offset 0x3E390
* D:\driver2\game\C\DIRECTOR.C (line 2108)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ SelectCameraCar(int current /*$t1*/)
{ // line 1, address 0x3e390
int count; // $a2
{ // line 15, address 0x3e408
struct _EVENT *event; // $a0
struct _CAR_DATA *car; // $a3
struct XZPAIR pos; // stack address -16
{ // line 60, address 0x3e4ec
int dist; // $v0
int dx; // $a1
int dz; // $a0
} // line 72, address 0x3e574
} // line 73, address 0x3e574
} // line 76, address 0x3e5a4
/*
* Offset 0x3E5A4
* D:\driver2\game\C\DIRECTOR.C (line 2186)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ InvalidCamera(int car_num /*$a2*/)
{ // line 1, address 0x3e5a4
{ // line 7, address 0x3e5d0
char invalidCamera; // $a3
{ // line 14, address 0x3e638
char numEventModels; // $a0
struct _EVENT *event; // $v1
struct XZPAIR pos; // stack address -24
{ // line 22, address 0x3e690
int dist; // $v0
int dx; // $v1
int dz; // $a0
} // line 38, address 0x3e728
} // line 39, address 0x3e728
} // line 50, address 0x3e760
} // line 74, address 0x3e804
/*
* Offset 0x3E804
* D:\driver2\game\C\DIRECTOR.C (line 445)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitDirectorVariables()
{ // line 2, address 0x3e804
int count; // $a0
} // line 22, address 0x3e870
/*
* Offset 0x3E870
* D:\driver2\game\C\DIRECTOR.C (line 476)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DeleteCurrentCamera(int CameraCnt /*$a0*/)
{ // line 2, address 0x3e870
int prev; // $a1
int next; // $a0
} // line 15, address 0x3e8f4
/*
* Offset 0x3E904
* D:\driver2\game\C\DIRECTOR.C (line 493)
* Stack frame base $sp, length 0
*/
void /*$ra*/ setCamera(struct PLAYBACKCAMERA *Change /*$a0*/)
{
}
/*
* Offset 0x3E9B4
* D:\driver2\game\C\DIRECTOR.C (line 634)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FindNextChange(int CameraCnt /*$a0*/)
{ // line 1, address 0x3e9b4
int count; // $a3
int nextframe; // $a2
int found; // $t0
struct PLAYBACKCAMERA *RestoreChange; // $t1
} // line 21, address 0x3ea20
/*
* Offset 0x3EA20
* D:\driver2\game\C\DIRECTOR.C (line 929)
* Stack frame base $sp, length 0
*/
struct PLAYBACKCAMERA * /*$ra*/ FindFreeCamera()
{ // line 2, address 0x3ea20
int count; // $a1
} // line 12, address 0x3ea60
/*
* Offset 0x3EA60
* D:\driver2\game\C\DIRECTOR.C (line 943)
* Stack frame base $sp, length 0
*/
void /*$ra*/ deleteCamera(int count /*$a0*/)
{
}
/*
* Offset 0x3EAA8
* D:\driver2\game\C\DIRECTOR.C (line 951)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DeleteAllCameras()
{ // line 2, address 0x3eaa8
struct PLAYBACKCAMERA nextcamera; // stack address -48
int count; // $s0
} // line 13, address 0x3eb0c
/*
* Offset 0x3EB0C
* D:\driver2\game\C\DIRECTOR.C (line 1098)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ ShowReplayOptions()
{ // line 2, address 0x3eb0c
static int toggle_icons; // address 0x5c
} // line 35, address 0x3eb48
/*
* Offset 0x3EB58
* D:\driver2\game\C\DIRECTOR.C (line 2263)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ NoMoreCamerasErrorMessage()
{ // line 2, address 0x3eb58
{ // line 4, address 0x3eb70
int strobe; // $v0
} // line 9, address 0x3ebc4
} // line 12, address 0x3ebd4
/*
* Offset 0x3EBD4
* D:\driver2\game\C\DIRECTOR.C (line 2279)
* Stack frame base $sp, length 0
*/
int /*$ra*/ FirstCamera()
{ // line 2, address 0x3ebd4
} // line 8, address 0x3ec04
/*
* Offset 0x3EC04
* D:\driver2\game\C\DIRECTOR.C (line 2289)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ dist(struct VECTOR *pos1 /*$a0*/, struct VECTOR *pos2 /*$a1*/)
{ // line 1, address 0x3ec04
int dx; // $v0
int dz; // $a0
} // line 7, address 0x3ec74
/*
* Offset 0x3EC74
* D:\driver2\game\C\DIRECTOR.C (line 710)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetPlaybackCamera(struct PLAYBACKCAMERA *camera /*$a0*/)
{
}
/*
* Offset 0x3ED2C
* D:\driver2\game\C\DIRECTOR.C (line 2303)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetCameraReturnedFromCutscene(int CameraCnt /*$s0*/)
{ // line 1, address 0x3ed2c
struct PLAYBACKCAMERA *next; // $a1
int count; // $a2
} // line 28, address 0x3ede4

155
src/C/dr2roads.c Normal file
View File

@ -0,0 +1,155 @@
#include "../decomp_defs.h"
sdPlane sea = { 9, 0, 16384, 0, 2048 };
/*
* Offset 0x12F5C
* D:\driver2\game\C\DR2ROADS.C (line 164)
* Stack frame base $sp, length 40
* Saved registers at address -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 0x1313C
* D:\driver2\game\C\DR2ROADS.C (line 205)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ sdHeightOnPlane(struct VECTOR *pos /*$t0*/, struct _sdPlane *plane /*$a1*/)
{ // line 1, address 0x1313c
{ // line 11, address 0x1319c
int angle; // $v0
int i; // $v0
struct DRIVER2_CURVE *curve; // $s0
} // line 23, address 0x13204
{ // line 26, address 0x13204
int val; // $a3
{ // line 35, address 0x13224
int lx; // $v0
int ly; // $v1
} // line 39, address 0x13280
} // line 42, address 0x13294
} // line 43, address 0x13294
/*
* Offset 0x13294
* D:\driver2\game\C\DR2ROADS.C (line 295)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ RoadInCell(struct VECTOR *pos /*$s5*/)
{ // line 1, address 0x13294
char *buffer; // $s2
struct XYPAIR cellPos; // stack address -48
struct XYPAIR cell; // stack address -40
short *surface; // $a0
struct _sdPlane *plane; // $s0
{ // line 36, address 0x13380
int moreLevels; // $s3
short *check; // $s1
struct _sdPlane *base; // $s4
} // line 77, address 0x1344c
} // line 94, address 0x134d4
/*
* Offset 0x134D4
* D:\driver2\game\C\DR2ROADS.C (line 400)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
struct _sdPlane * /*$ra*/ sdGetCell(struct VECTOR *pos /*$s3*/)
{ // line 1, address 0x134d4
char *buffer; // $s1
short *surface; // $s0
int nextLevel; // $s2
struct _sdPlane *plane; // $a1
struct XYPAIR cell; // stack address -40
struct XYPAIR cellPos; // stack address -32
{ // line 41, address 0x135c4
int y; // $a0
} // line 56, address 0x13620
{ // line 63, address 0x13634
short *BSPsurface; // $a0
} // line 81, address 0x1369c
} // line 102, address 0x13728
/*
* Offset 0x13728
* D:\driver2\game\C\DR2ROADS.C (line 64)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ProcessStraightsDriver2Lump(char *lump_file /*$s0*/, int lump_size /*$a1*/)
{ // line 1, address 0x13728
} // line 5, address 0x1375c
/*
* Offset 0x1375C
* D:\driver2\game\C\DR2ROADS.C (line 80)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ProcessCurvesDriver2Lump(char *lump_file /*$s0*/, int lump_size /*$a1*/)
{ // line 1, address 0x1375c
} // line 5, address 0x13790
/*
* Offset 0x13790
* D:\driver2\game\C\DR2ROADS.C (line 94)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ProcessJunctionsDriver2Lump(char *lump_file /*$s1*/, int lump_size /*$a1*/, int fix /*$s0*/)
{ // line 1, address 0x13790
{ // line 8, address 0x137c4
int loop; // $v1
struct OLD_DRIVER2_JUNCTION *old; // $a1
struct DRIVER2_JUNCTION *p; // $a0
{ // line 13, address 0x137e0
int i; // $a1
} // line 19, address 0x1380c
} // line 20, address 0x13820
} // line 21, address 0x13834
/*
* Offset 0x13834
* D:\driver2\game\C\DR2ROADS.C (line 146)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ MapHeight(struct VECTOR *pos /*$s0*/)
{ // line 1, address 0x13834
int height; // $v0
struct _sdPlane *plane; // $v0
} // line 16, address 0x13874
/*
* Offset 0x13874
* D:\driver2\game\C\DR2ROADS.C (line 250)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ GetSurfaceIndex(struct VECTOR *pos /*$a0*/)
{ // line 2, address 0x13874
struct _sdPlane *plane; // $v0
} // line 10, address 0x138b0
/*
* Offset 0x138B0
* D:\driver2\game\C\DR2ROADS.C (line 505)
* Stack frame base $sp, length 0
*/
short * /*$ra*/ sdGetBSP(struct _sdNode *node /*$a3*/, struct XYPAIR *pos /*$a1*/)
{ // line 1, address 0x138b0
{ // line 4, address 0x138d8
int dot; // $a0
} // line 17, address 0x1393c
} // line 19, address 0x13958
/*
* Offset 0x13958
* D:\driver2\game\C\DR2ROADS.C (line 266)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
struct _sdPlane * /*$ra*/ FindRoadInBSP(struct _sdNode *node /*$s0*/, struct _sdPlane *base /*$s1*/)
{ // line 2, address 0x13970
struct _sdPlane *plane; // $v0
} // line 27, address 0x139e8

390
src/C/draw.c Normal file
View File

@ -0,0 +1,390 @@
#include "../decomp_defs.h"
MATRIX aspect =
{ { { 6553, 0, 0 }, { 0, 4096, 0 }, { 0, 0, 4096 } }, { 0, 0, 0 } };
/*
* Offset 0x3EDE4
* D:\driver2\game\C\DRAW.C (line 651)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ addSubdivSpriteShadow(struct POLYFT4LIT *src /*$t3*/, struct SVECTOR *verts /*$t2*/, int z /*$a2*/)
{ // line 1, address 0x3ede4
unsigned long word0; // $a0
unsigned long vidx; // $t1
struct _pct *pc; // $t0
int w; // $s0
} // line 19, address 0x3efcc
/*
* Offset 0x3EFCC
* D:\driver2\game\C\DRAW.C (line 675)
* Stack frame base $sp, length 96
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawSprites(int numFound /*$a2*/)
{ // line 1, address 0x3efcc
struct XZPAIR near; // stack address -80
struct PACKED_CELL_OBJECT **list; // stack address -64
unsigned long spriteColour; // stack address -60
int numShadows; // stack address -56
{ // line 1, address 0x3efcc
struct SVECTOR result; // stack address -72
unsigned char lightLevel; // $a1
} // line 41, address 0x3f164
{ // line 41, address 0x3f164
int i; // $t0
} // line 54, address 0x3f1dc
{ // line 68, address 0x3f258
struct PACKED_CELL_OBJECT *ppco; // $fp
struct MODEL *model; // $s4
int z; // stack address -52
int yang; // $a0
{ // line 95, address 0x3f310
} // line 95, address 0x3f310
{ // line 101, address 0x3f358
struct POLYFT4LIT *src; // $s0
struct SVECTOR *verts; // $s3
int i; // $s1
{ // line 106, address 0x3f3a0
unsigned long vidx; // $a3
} // line 107, address 0x3f3a0
} // line 119, address 0x3f504
} // line 132, address 0x3f604
} // line 134, address 0x3f658
/*
* Offset 0x3F658
* D:\driver2\game\C\DRAW.C (line 813)
* Stack frame base $sp, length 0
*/
struct PACKED_CELL_OBJECT * /*$ra*/ GetNextPackedCop(struct CELL_ITERATOR *pci /*$a0*/)
{ // line 1, address 0x3f658
struct PACKED_CELL_OBJECT *ppco; // $a3
unsigned short num; // $a1
} // line 40, address 0x3f718
/*
* Offset 0x3F718
* D:\driver2\game\C\DRAW.C (line 883)
* Stack frame base $sp, length 200
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawMapPSX(int *comp_val /*$t1*/)
{ // line 1, address 0x3f718
struct CELL_ITERATOR ci; // stack address -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 address -112
int camz; // stack address -108
char *PVS_ptr; // stack address -104
int tiles_found; // stack address -100
int other_models_found; // stack address -96
int anim_objs; // $s6
struct MATRIX mRotStore; // stack address -160
int rightcos; // stack address -92
int rightsin; // stack address -88
int leftcos; // stack address -84
int leftsin; // stack address -80
int backcos; // stack address -76
int backsin; // stack address -72
int rightPlane; // stack address -68
int leftPlane; // stack address -64
int backPlane; // $fp
unsigned int farClipLimit; // stack address -60
{ // line 84, address 0x3f9cc
struct MODEL *model; // $s2
{ // line 92, address 0x3fa1c
int model_shape_flags; // $s1
{ // line 103, address 0x3fa78
struct CELL_OBJECT *cop; // $a2
{ // line 1, address 0x3fa78
struct PACKED_CELL_OBJECT *ppco; // $s0
{ // line 1, address 0x3fa78
struct CELL_OBJECT *pco; // $a1
} // line 1, address 0x3fb20
} // line 1, address 0x3fb20
} // line 105, address 0x3fb2c
{ // line 110, address 0x3fb5c
struct CELL_OBJECT *cop; // $a2
{ // line 1, address 0x3fb5c
struct PACKED_CELL_OBJECT *ppco; // $s0
{ // line 1, address 0x3fb5c
struct CELL_OBJECT *pco; // $a1
} // line 1, address 0x3fc04
} // line 1, address 0x3fc04
} // line 111, address 0x3fc04
{ // line 119, address 0x3fc50
int yang; // $a1
} // line 127, address 0x3fd38
{ // line 135, address 0x3fd74
struct CELL_OBJECT *cop; // $a2
{ // line 1, address 0x3fd74
struct PACKED_CELL_OBJECT *ppco; // $s0
{ // line 1, address 0x3fd74
struct CELL_OBJECT *pco; // $a1
} // line 1, address 0x3fe1c
} // line 1, address 0x3fe1c
} // line 138, address 0x3fe68
{ // line 149, address 0x3fe9c
struct CELL_OBJECT *cop; // $a2
{ // line 1, address 0x3fe9c
struct PACKED_CELL_OBJECT *ppco; // $s0
{ // line 1, address 0x3fe9c
struct CELL_OBJECT *pco; // $a1
} // line 1, address 0x3ff44
} // line 1, address 0x3ff44
} // line 159, address 0x3ff9c
} // line 162, address 0x3ff9c
} // line 163, address 0x3ff9c
{ // line 188, address 0x40134
} // line 189, address 0x4013c
{ // line 198, address 0x4014c
} // line 200, address 0x40174
{ // line 206, address 0x401a0
struct VECTOR newpos; // stack address -128
struct CELL_OBJECT *cop; // $s0
} // line 207, address 0x401a0
} // line 240, address 0x40280
/*
* Offset 0x40280
* D:\driver2\game\C\DRAW.C (line 1125)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupPlaneColours(unsigned long ambient /*$a3*/)
{ // line 1, address 0x40280
{ // line 15, address 0x4031c
unsigned long r; // $t4
unsigned long g; // $t2
unsigned long b; // $a0
} // line 15, address 0x4031c
} // line 34, address 0x40470
/*
* Offset 0x40470
* D:\driver2\game\C\DRAW.C (line 1162)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SetupDrawMapPSX()
{ // line 3, address 0x40470
{ // line 4, address 0x404d0
int region_x1; // $t0
int region_z1; // $a0
int current_barrel_region_x1; // $v0
int current_barrel_region_z1; // $a0
} // line 16, address 0x404f4
{ // line 16, address 0x404f4
int theta; // $s2
} // line 34, address 0x40568
} // line 38, address 0x4059c
/*
* Offset 0x4059C
* D:\driver2\game\C\DRAW.C (line 1209)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ InitFrustrumMatrix()
{
}
/*
* Offset 0x40670
* D:\driver2\game\C\DRAW.C (line 1425)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ProcessMapLump(char *lump_ptr /*$v0*/, int lump_size /*$a1*/)
{ // line 1, address 0x40670
char *cellptr; // $s0
int cell_size; // $a3
int region_size; // $t0
} // line 53, address 0x40840
/*
* Offset 0x40840
* D:\driver2\game\C\DRAW.C (line 1711)
* Stack frame base $sp, length 128
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ DrawAllTheCars(int view /*$s6*/)
{ // line 1, address 0x40840
int loop; // $s0
int x; // $s2
int z; // $s1
int xd; // $a0
int zd; // $v1
struct _CAR_DATA *cars_to_draw[20]; // stack address -112
int num_cars_to_draw; // $s4
static int car_distance[20]; // address 0x0
static int temp; // address 0x0
{ // line 1, address 0x40840
struct _CAR_DATA *lcp; // $s0
{ // line 27, address 0x408c8
int dist; // $v0
} // line 37, address 0x40948
} // line 40, address 0x40958
{ // line 46, address 0x40960
int i; // $a0
{ // line 51, address 0x40988
struct _CAR_DATA *car; // $t4
int dist; // $t0
int j; // $a3
} // line 60, address 0x40a08
} // line 63, address 0x40a28
{ // line 79, address 0x40a4c
int spacefree; // $a1
} // line 87, address 0x40a94
} // line 113, address 0x40ad0
/*
* Offset 0x40AF8
* D:\driver2\game\C\DRAW.C (line 1857)
* Stack frame base $sp, length 64
* Saved registers at address -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, address 0x40af8
struct SVECTOR *verts; // $s4
struct PL_POLYFT4 *polys; // $s1
int i; // $s7
int asdf; // $fp
{ // line 19, address 0x40ba8
unsigned long word0; // $s0
{ // line 29, address 0x40c04
int Z; // stack address -48
unsigned int vidx; // $s3
{ // line 39, address 0x40c38
unsigned long th; // $v1
} // line 45, address 0x40c78
{ // line 83, address 0x40e98
int diff; // $a1
int min; // $a2
{ // line 88, address 0x40e98
int max; // $v1
} // line 92, address 0x40f0c
{ // line 113, address 0x40f78
int w; // $s0
} // line 116, address 0x40fa4
{ // line 126, address 0x410c8
struct POLY_FT4 *prims; // $t2
int uv0; // $v1
int uv1; // $a2
int uv2; // $t3
int uv3; // $t1
{ // line 137, address 0x41110
unsigned int r; // $a2
} // line 137, address 0x41110
{ // line 137, address 0x41110
int r2; // $v1
} // line 137, address 0x41110
} // line 162, address 0x411a8
} // line 164, address 0x411a8
} // line 169, address 0x411c0
} // line 176, address 0x411e0
} // line 183, address 0x4125c
/*
* Offset 0x4125C
* D:\driver2\game\C\DRAW.C (line 2053)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x4125c
int i; // $s3
int model_number; // $v0
int prev_mat; // $s4
struct MODEL *model; // $a0
struct CELL_OBJECT *building; // $s0
{ // line 38, address 0x41394
int spacefree; // $a0
{ // line 81, address 0x413c4
} // line 82, address 0x413cc
{ // line 85, address 0x413cc
int zBias; // $v0
unsigned long *savedOT; // $s1
} // line 97, address 0x41400
} // line 97, address 0x41400
} // line 126, address 0x414a4
/*
* Offset 0x414A4
* D:\driver2\game\C\DRAW.C (line 2181)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0x414a4
int i; // $t0
unsigned long *savedOT; // $s1
{ // line 10, address 0x414d0
struct MATRIX comb; // stack address -48
} // line 15, address 0x41500
{ // line 29, address 0x415a0
int spacefree; // $a0
} // line 41, address 0x41628
} // line 43, address 0x4164c
/*
* Offset 0x4164C
* D:\driver2\game\C\DRAW.C (line 2267)
* Stack frame base $sp, length 16
*/
unsigned long /*$ra*/ normalIndex(struct SVECTOR *verts /*$a0*/, unsigned int vidx /*$a1*/)
{ // line 1, address 0x4164c
int th23; // $a0
int nx; // $t4
int ny; // $v1
int nz; // $a2
struct SVECTOR p; // stack address -16
struct SVECTOR q; // stack address -8
{ // line 1, address 0x4164c
int x; // $a1
int y; // $a0
} // line 8, address 0x4178c
} // line 19, address 0x4180c
/*
* Offset 0x4180C
* D:\driver2\game\C\DRAW.C (line 1219)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetFrustrumMatrix()
{
}
/*
* Offset 0x41844
* D:\driver2\game\C\DRAW.C (line 1224)
* Stack frame base $sp, length 0
*/
void /*$ra*/ Set_Inv_CameraMatrix()
{
}
/*
* Offset 0x4187C
* D:\driver2\game\C\DRAW.C (line 1324)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ CalcObjectRotationMatrices()
{ // line 2, address 0x4187c
int i; // $s1
int j; // $a0
struct SVECTOR ang; // stack address -56
struct MATRIX mat; // stack address -48
} // line 17, address 0x41924
/*
* Offset 0x41924
* D:\driver2\game\C\DRAW.C (line 1344)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ PlotMDL_less_than_128(struct MODEL *model /*$a0*/)
{
}
/*
* Offset 0x41950
* D:\driver2\game\C\DRAW.C (line 854)
* Stack frame base $sp, length 0
*/
struct CELL_OBJECT * /*$ra*/ UnpackCellObject(struct PACKED_CELL_OBJECT *ppco /*$a3*/, struct XZPAIR *near /*$t0*/)
{ // line 1, address 0x41950
struct CELL_OBJECT *pco; // $a2
} // line 16, address 0x41a10

140
src/C/drivinggames.c Normal file
View File

@ -0,0 +1,140 @@
#include "../decomp_defs.h"
/*
* Offset 0x43174
* D:\driver2\game\C\DRIVINGGAMES.C (line 231)
* Stack frame base $sp, length 88
* Saved registers at address -8: ra
*/
void /*$ra*/ InitDrivingGames()
{ // line 2, address 0x43174
char filename[64]; // stack address -72
int i; // $a0
int j; // $v1
} // line 57, address 0x432d4
/*
* Offset 0x432D4
* D:\driver2\game\C\DRIVINGGAMES.C (line 290)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ HandleDrivingGames()
{ // line 2, address 0x432d4
struct _CAR_DATA *cp; // $a2
struct VECTOR vel; // stack address -96
int i; // $s3
int j; // $v1
int k; // $a0
int id; // $s2
int dist; // $a1
{ // line 61, address 0x433bc
struct VECTOR pos1; // stack address -80
struct VECTOR pos2; // stack address -64
int x; // $t0
int z; // $a1
int r; // $v0
int side; // $s1
int radius; // $a0
} // line 123, address 0x436c0
{ // line 145, address 0x43768
struct VECTOR pos; // stack address -80
} // line 166, address 0x43868
} // line 185, address 0x43944
/*
* Offset 0x43944
* D:\driver2\game\C\DRIVINGGAMES.C (line 477)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawDrivingGames()
{ // line 2, address 0x43944
struct VECTOR wpos; // stack address -24
int i; // $s0
} // line 49, address 0x43a64
/*
* Offset 0x43A64
* D:\driver2\game\C\DRIVINGGAMES.C (line 545)
* Stack frame base $sp, length 232
* Saved registers at address -8: ra
*/
int /*$ra*/ CarConeCollision(struct VECTOR *pPos /*$a0*/, int car /*$a1*/)
{ // line 1, address 0x43a64
struct CDATA2D cd[2]; // stack address -216
struct _CAR_DATA *cp1; // $t0
int carLength[2]; // stack address -16
{ // line 20, address 0x43b3c
} // line 20, address 0x43b3c
} // line 21, address 0x43b50
/*
* Offset 0x43B50
* D:\driver2\game\C\DRIVINGGAMES.C (line 578)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SetSmashedCone(int cone /*$s1*/, struct VECTOR *velocity /*$a1*/, int player /*$s2*/, int side /*$a3*/)
{ // line 1, address 0x43b50
struct SMASHED_CONE *sc; // $s0
int chan; // $s0
} // line 43, address 0x43d48
/*
* Offset 0x43D48
* D:\driver2\game\C\DRIVINGGAMES.C (line 628)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MoveSmashedCones()
{ // line 2, address 0x43d48
int i; // $t0
} // line 27, address 0x43e4c
/*
* Offset 0x43E54
* D:\driver2\game\C\DRIVINGGAMES.C (line 730)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DrawSmashedCone(struct SMASHED_CONE *sc /*$s0*/, struct VECTOR *wpos /*$s1*/)
{ // line 1, address 0x43e54
struct MATRIX object_matrix; // stack address -64
struct MATRIX *finalmatrix; // $s2
struct VECTOR pos; // stack address -32
} // line 20, address 0x43f9c
/*
* Offset 0x43F9C
* D:\driver2\game\C\DRIVINGGAMES.C (line 757)
* Stack frame base $sp, length 16
*/
void /*$ra*/ GetConePos(int cone /*$a0*/, struct VECTOR *pos /*$t2*/, int side /*$a2*/)
{ // line 1, address 0x43f9c
struct VECTOR address; // stack address -16
int x; // $t3
int z; // $t4
int r; // $v1
int radius; // $a1
} // line 35, address 0x4409c
/*
* Offset 0x4409C
* D:\driver2\game\C\DRIVINGGAMES.C (line 703)
* Stack frame base $sp, length 88
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DrawCone(struct VECTOR *position /*$s0*/, int cone /*$s1*/)
{ // line 1, address 0x4409c
struct MATRIX matrix; // stack address -64
struct VECTOR pos; // stack address -32
{ // line 10, address 0x440cc
{ // line 12, address 0x440ec
} // line 18, address 0x441bc
} // line 19, address 0x441bc
} // line 20, address 0x441bc
/*
* Offset 0x441D0
* D:\driver2\game\C\DRIVINGGAMES.C (line 662)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawSmashedCones()
{ // line 2, address 0x441d0
struct SMASHED_CONE *sc; // $s0
struct VECTOR wpos; // stack address -40
int i; // $s1
} // line 34, address 0x44290

113
src/C/e3stuff.c Normal file
View File

@ -0,0 +1,113 @@
#include "../decomp_defs.h"
POLYCOORD polycoords[6] =
{
{ 0, 0, 640, 0, 256, 256 },
{ 256, 0, 768, 0, 256, 256 },
{ 512, 0, 896, 0, 128, 256 },
{ 0, 256, 640, 256, 256, 256 },
{ 256, 256, 768, 256, 256, 256 },
{ 512, 256, 896, 256, 128, 256 }
};
DRAW_MODE draw_mode_pal =
{ 0, 0, 0, 0, 512, 256, 0, 16 };
DRAW_MODE draw_mode_ntsc =
{ 0, 0, 0, 8, 512, 240, 0, 0 };
/*
* Offset 0x442AC
* D:\driver2\game\C\E3STUFF.C (line 171)
* Stack frame base $sp, length 512
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ FadeInHiresScreen(char *filename /*stack 0*/)
{ // line 1, address 0x442ac
struct DISPENV disp; // stack address -488
struct DRAWENV draw; // stack address -464
struct SPRT prims[6]; // stack address -368
struct POLY_FT3 nulls[6]; // stack address -248
struct RECT rect; // stack address -56
unsigned long ot; // stack address -48
int i; // $t5
int col; // $s1
} // line 80, address 0x4465c
/*
* Offset 0x4465C
* D:\driver2\game\C\E3STUFF.C (line 258)
* Stack frame base $sp, length 520
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ FadeOutHiresScreen()
{ // line 2, address 0x4465c
struct DISPENV disp; // stack address -496
struct DRAWENV draw; // stack address -472
struct SPRT prims[6]; // stack address -376
struct POLY_FT3 nulls[6]; // stack address -256
struct RECT rect; // stack address -64
unsigned long ot; // stack address -56
int i; // $t5
int col; // $s1
} // line 60, address 0x44934
/*
* Offset 0x44934
* D:\driver2\game\C\E3STUFF.C (line 391)
* Stack frame base $sp, length 168
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SetPleaseWait(char *buffer /*$s2*/)
{ // line 1, address 0x44934
struct DISPENV disp; // stack address -144
struct DRAWENV draw; // stack address -120
struct RECT rect; // stack address -24
char *exe; // $a0
} // line 44, address 0x44aa8
/*
* Offset 0x44AA8
* D:\driver2\game\C\E3STUFF.C (line 443)
* Stack frame base $sp, length 184
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ CheckForCorrectDisc(int disc /*$s0*/)
{ // line 1, address 0x44aa8
struct DISPENV disp; // stack address -160
struct DRAWENV draw; // stack address -136
struct RECT rect; // stack address -40
char *mess1; // $s6
char *mess2; // $s3
char *exe; // $s4
int ret; // $s0
int discerror; // $s5
{ // line 49, address 0x44bd8
} // line 79, address 0x44c5c
} // line 95, address 0x44d20
/*
* Offset 0x44D48
* D:\driver2\game\C\E3STUFF.C (line 139)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ ShowHiresScreens(char **names /*$s1*/, int delay /*$s4*/, int wait /*$s3*/)
{ // line 1, address 0x44d48
char *filename; // $a0
int timedelay; // $s0
} // line 25, address 0x44e08
/*
* Offset 0x44E08
* D:\driver2\game\C\E3STUFF.C (line 350)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupDefDispEnv(struct DISPENV *env /*$s0*/, int x /*$a1*/, int y /*$a2*/, int w /*$a3*/, int h /*stack 16*/)
{
}
/*
* Offset 0x44EA8
* D:\driver2\game\C\E3STUFF.C (line 325)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ SetupDefDrawEnv(struct DRAWENV *env /*$a0*/, int x /*$a1*/, int y /*$a2*/, int w /*$a3*/, int h /*stack 16*/)
{
}

26
src/C/enviro.c Normal file
View File

@ -0,0 +1,26 @@
#include "../decomp_defs.h"
short gPlayerCar0ShinyFaces[38];
/*
* Offset 0x44EF0
* D:\driver2\game\C\ENVIRO.C (line 46)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ Env_MakeColourAddTable(short *shinysrc /*$s0*/, char *polytable /*$s1*/, int length /*$a2*/)
{ // line 1, address 0x44ef0
short addval; // $a0
short polynum; // $v1
} // line 21, address 0x44f70
/*
* Offset 0x44F70
* D:\driver2\game\C\ENVIRO.C (line 72)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ Init_Reflection_Mapping()
{ // line 2, address 0x44f70
struct TPAN pos; // stack address -16
int count; // $v1
} // line 17, address 0x44fc8

10
src/C/envsound.c Normal file
View File

@ -0,0 +1,10 @@
/*
* Offset 0x44FC8
* D:\driver2\game\C\ENVSOUND.C (line 41)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ AddEnvSounds(int level /*$a0*/, int time /*$a1*/)
{
}

960
src/C/event.c Normal file
View File

@ -0,0 +1,960 @@
#include "../decomp_defs.h"
int ElTrainData[83] = {
6, 80, 130, 32768, 336284, -220364, 283420, -2147483646,
-204500, -158924, 247580, -123084, 188624, -158924,
73520, -138444, 17200, -124148, -39120, -2147483646,
-109276, -82131, -80103, -17628, -203568, -124712,
-39728, -265000, 129620, -386012, 2147483648, 80,
130, 0, -158928, 189219, -123684, 246995, -2147483647,
0, 90, 32768, 188402, -425768, 354291, 2147483648,
0, 90, 32768, 354291, -425168, 188402, 2147483648,
60, 110, 0, -386012, 130215, -264404, -39132, -124688,
16619, -139048, 72943, -159520, 282863, -2147483646,
-204991, -220964, 336284, 2147483648, 70, 120, 0,
-82719, -39712, -2147483646, -115487, -124120, -202968,
-18216, -80683, -2147483647
};
int VegasTrainData[7] = {
123, 32768, 982000, -68855, 762717, 2147483648
};
int VegasParkedTrains[3] = {
-68855, 975520, 792317
};
int HavanaFerryData[12] = {
40, 0, 0, 425555, -452, 20000, 25, 0, 0, 315750, 130740, 135960
};
int RioFerryData[6] = {
6, 0, 0, 200384, 387424, 410000
};
int HavanaMiniData[4] = {
50, 3995, 4605, 0
};
int LiftingBridges[55] = {
8, -182784, -175616, -168448, 7, -227328, -162304,
-141824, -121344, -100864, -80384, -59904, 256, -312832,
-305664, -298496, 1, 324096, -311808, -304640, -297472,
1, 247296, -256512, -249344, -242176, 1, 247296,
-262656, -255488, -248320, 1, 324096, 32768, 170496,
177664, 184832, 1, -271360, -12800, -5632, 1536,
5, -162304, -102912, -82432, -61952, -39936, -6656,
512, 7680, 3, 4137, 27648, 128000
};
int ChicagoCameraHack[3] = {
-208006, 198, 657039
};
int HavanaCameraHack[9] = {
-491431, 3568, -139048, -453981, 409, -128009, -453975, 429, -127175
};
int VegasCameraHack[16] = {
124092, 3988, 3494, -11285, 1559, 843824, -38801,
2681, 273148, -36925, 2048, 269647, 273935, -65503, 1617, 796775
};
int RioCameraHack[6] = {
-276620, 3072, -321920, -40920, 3623, 382170
};
MissionTrain missionTrain[2] =
{
{ 0, ElTrainData+4, 100, 150, 200, 289051, 32768 },
{ 0, ElTrainData+7, 125, 145, 215, 4294762796, 0 }
};
FixedEvent chicagoDoor[3] =
{
{
{ 4294759680, 0, 659706, 0 },
0,
0,
800u,
0u,
25u,
50u,
80,
0,
0,
0,
"WRGFLDDOOR"
},
{
{ 4294758144, 4294966784, 668928, 0 },
0,
0,
2496u,
4096u,
25u,
50u,
64,
0,
0,
0,
"DOOR01"
},
{
{ 195264, 4294963568, 74752, 0 },
0,
0,
0u,
0u,
0u,
0u,
1088,
0,
0,
0,
"FRAME"
}
};
FixedEvent havanaFixed[3] =
{
{
{ 4294784000, 4294967023, 4294925576, 0 },
0,
0,
800u,
0u,
25u,
50u,
64,
0,
0,
0,
"DOOR"
},
{
{ 4294512128, 1529, 4294841856, 0 },
0,
0,
0u,
0u,
0u,
0u,
1536,
0,
0,
0,
"LIFT_SHAFT"
},
{
{ 4294479360, 0, 4294830607, 0 },
0,
0,
1152u,
0u,
10u,
20u,
80,
0,
0,
0,
"BASEDOOR"
}
};
FixedEvent vegasDoor[5] =
{
{
{ 4294955445, 0, 844163, 0 },
0,
0,
1700u,
3072u,
25u,
50u,
80,
0,
0,
0,
"DOOR"
},
{
{ 4294861054, 4294967057, 4294750336, 0 },
0,
0,
800u,
0u,
25u,
50u,
96,
0,
0,
0,
"DOOR01"
},
{
{ 63058, 4294967065, 501184, 0 },
0,
0,
3200u,
4096u,
25u,
50u,
96,
0,
0,
0,
"DOOR02"
},
{
{ 4294807940, 4294967120, 647024, 0 },
0,
0,
3200u,
4096u,
25u,
50u,
64,
0,
0,
0,
"DOOR03"
},
{
{ 123936, 4294967126, 4928, 0 },
0,
0,
3200u,
4096u,
25u,
50u,
80,
0,
0,
0,
"GATE01"
}
};
FixedEvent rioDoor[6] =
{
{
{ 4294843968, 4294967119, 4294712576, 0 },
0,
0,
3200u,
4096u,
25u,
50u,
96,
0,
0,
0,
"DOOR1"
},
{
{ 4294842048, 4294967279, 4294711088, 0 },
0,
0,
1600u,
0u,
25u,
50u,
80,
0,
0,
0,
"DOOR2"
},
{
{ 4294693296, 4294967279, 4294645888, 0 },
0,
0,
1748u,
3072u,
25u,
50u,
80,
0,
0,
0,
"GATE01"
},
{
{ 4294693296, 4294967279, 4294644864, 0 },
0,
0,
2348u,
1024u,
25u,
50u,
80,
0,
0,
0,
"GATE01"
},
{
{ 4294926864, 4294967279, 383328, 0 },
0,
0,
700u,
2048u,
25u,
50u,
80,
0,
0,
0,
"GATE03"
},
{
{ 4294927872, 4294967279, 383328, 0 },
0,
0,
900u,
0u,
25u,
50u,
80,
0,
0,
0,
"GATE03"
}
};
Helicopter HelicopterData =
{
400,
0,
0,
0,
0,
0,
0,
{ { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }, 0u, 0u, '\0', '\0' },
0,
0,
0,
0
};
/*
* Offset 0x45B20
* D:\driver2\game\C\EVENT.C (line 249)
* Stack frame base $sp, length 16
*/
int /*$ra*/ GetVisValue(int index /*$t1*/, int zDir /*$a1*/)
{ // line 1, address 0x45b20
int value; // $v1
int radius; // $a0
{ // line 7, address 0x45b30
int camera; // $a0
} // line 10, address 0x45b90
{ // line 14, address 0x45b98
struct _EVENT *ev; // $a0
int multiple; // $a2
{ // line 25, address 0x45c24
struct VECTOR pos; // stack address -16
} // line 32, address 0x45ca4
} // line 34, address 0x45ca8
} // line 45, address 0x45cd0
/*
* Offset 0x45CD0
* D:\driver2\game\C\EVENT.C (line 297)
* Stack frame base $sp, length 568
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ VisibilityLists(enum VisType type /*$a0*/, int i /*$s2*/)
{ // line 1, address 0x45cd0
static unsigned short xList[128]; // address 0x0
static unsigned short zList[128]; // address 0x100
static unsigned short *firstX[2]; // address 0x0
static unsigned short *firstZ[2]; // address 0x8
static int count; // address 0x10
{ // line 34, address 0x45e00
static unsigned short *list[2]; // address 0x50
int table[128]; // stack address -552
int j; // $s0
{ // line 42, address 0x45e78
int tempList; // $t7
int k; // $t0
} // line 53, address 0x45f20
} // line 55, address 0x45f34
{ // line 58, address 0x45f7c
int camera; // $a1
} // line 64, address 0x45fe0
{ // line 68, address 0x45ff8
struct _EVENT *ev; // $a0
} // line 87, address 0x460d0
{ // line 90, address 0x460d0
struct _EVENT *ev; // $v1
} // line 101, address 0x46124
} // line 103, address 0x46154
/*
* Offset 0x46154
* D:\driver2\game\C\EVENT.C (line 422)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ InitTrain(struct _EVENT *ev /*$s0*/, int count /*$s3*/, int type /*$a2*/)
{ // line 1, address 0x46154
int height; // $s2
int length; // $s1
int *to; // $a0
} // line 47, address 0x462c0
/*
* Offset 0x462C0
* D:\driver2\game\C\EVENT.C (line 515)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ SetUpEvents(int full /*stack 0*/)
{ // line 1, address 0x462c0
int count; // $s5
int *p; // $s2
int cEvents; // stack address -52
struct _EVENT **e; // stack address -56
{ // line 25, address 0x46378
int ElTrackModel; // stack address -48
int carModel; // stack address -44
int direction; // $fp
int i; // $s3
{ // line 36, address 0x4639c
int cBridges; // $s1
int timeOffset; // $a2
int loop; // $a3
} // line 91, address 0x465b0
{ // line 110, address 0x46690
int cCarriages; // $s0
int first; // $s1
{ // line 119, address 0x46698
} // line 120, address 0x466ac
} // line 149, address 0x467c4
} // line 188, address 0x46930
{ // line 243, address 0x46b0c
int trainModel; // $s5
int loop; // $s1
int carriages; // $s2
{ // line 296, address 0x46c9c
int loop; // $t1
{ // line 309, address 0x46e40
int detonatorModel; // $v0
} // line 314, address 0x46e98
} // line 315, address 0x46e98
} // line 319, address 0x46ea0
{ // line 323, address 0x46ea0
int detonatorModel; // $s3
int loop; // $s1
{ // line 367, address 0x46fec
int loop; // $s1
{ // line 373, address 0x470fc
struct XYPAIR address; // stack address -64
} // line 381, address 0x47208
} // line 389, address 0x47280
{ // line 394, address 0x472b4
} // line 431, address 0x47524
} // line 433, address 0x47524
} // line 449, address 0x475a0
/*
* Offset 0x475A0
* D:\driver2\game\C\EVENT.C (line 991)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ SetCamera(struct _EVENT *ev /*$s5*/)
{ // line 1, address 0x475a0
int rotation; // $s4
int axis; // $a3
struct VECTOR pivot; // stack address -96
int iPivot; // $a2
int height; // $a1
struct SVECTOR address; // stack address -80
{ // line 46, address 0x476f0
struct MATRIX matrix; // stack address -72
struct SVECTOR temp; // stack address -40
{ // line 54, address 0x47774
} // line 64, address 0x477c4
} // line 66, address 0x477c4
} // line 113, address 0x47a44
/*
* Offset 0x47A44
* D:\driver2\game\C\EVENT.C (line 1152)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StepFromToEvent(struct _EVENT *ev /*$a3*/)
{ // line 1, address 0x47a44
{ // line 8, address 0x47a70
int *from; // $a1
int *to; // $t4
long *current; // $t0
int d; // $a0
int d2; // $t2
} // line 56, address 0x47c2c
} // line 57, address 0x47c3c
/*
* Offset 0x47C3C
* D:\driver2\game\C\EVENT.C (line 1214)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ StepPathEvent(struct _EVENT *ev /*$s0*/)
{ // line 1, address 0x47c3c
int *from; // $a1
int *to; // $t1
long *current; // $t3
static int speed; // address 0x20
{ // line 11, address 0x47c70
int flags; // $v0
} // line 19, address 0x47c9c
{ // line 28, address 0x47ce4
enum Station station; // $t2
{ // line 62, address 0x47d94
int direction; // $t2
int loop; // $a2
int *i; // $a0
int turn[4]; // stack address -48
struct XZPAIR centre; // stack address -32
struct XZPAIR address; // stack address -24
} // line 134, address 0x48000
{ // line 141, address 0x48018
int d; // $a0
int d1; // $v1
int dir; // $t4
} // line 233, address 0x48360
} // line 234, address 0x48360
} // line 235, address 0x48374
/*
* Offset 0x48374
* D:\driver2\game\C\EVENT.C (line 1478)
* Stack frame base $sp, length 88
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ StepHelicopter(struct _EVENT *ev /*$s0*/)
{ // line 1, address 0x48374
static int rotacc; // address 0xa4
{ // line 7, address 0x4839c
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, address 0x48508
struct XZPAIR vel; // stack address -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; // address 0x24
} // line 99, address 0x4885c
{ // line 112, address 0x488bc
struct VECTOR pos; // stack address -48
} // line 113, address 0x488bc
} // line 131, address 0x48998
{ // line 135, address 0x489b0
struct VECTOR pos; // stack address -56
struct VECTOR drift; // stack address -32
} // line 135, address 0x489b0
} // line 155, address 0x48ac8
/*
* Offset 0x48AC8
* D:\driver2\game\C\EVENT.C (line 1642)
* Stack frame base $sp, length 88
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ StepEvents()
{ // line 3, address 0x48ac8
struct _EVENT *ev; // $s0
{ // line 29, address 0x48b2c
struct VECTOR old; // stack address -72
int onBoatLastFrame; // $s7
{ // line 34, address 0x48b34
int dist; // stack address -48
int loop; // $s2
struct _CAR_DATA *cp; // $s1
} // line 57, address 0x48c00
{ // line 72, address 0x48ca8
int d2; // $a2
} // line 75, address 0x48d1c
{ // line 82, address 0x48d40
} // line 83, address 0x48d64
{ // line 87, address 0x48d78
struct XZPAIR speed; // stack address -56
{ // line 91, address 0x48d90
int loop; // $s2
int mask; // $s1
{ // line 98, address 0x48dc8
struct VECTOR *pos; // $a0
struct VECTOR *vel; // $a1
} // line 133, address 0x48eb4
} // line 134, address 0x48ecc
} // line 135, address 0x48ecc
} // line 136, address 0x48ecc
{ // line 155, address 0x48fac
{ // line 160, address 0x48fbc
int sign; // $t0
unsigned short *target; // $a3
} // line 178, address 0x490d8
} // line 183, address 0x490e8
{ // line 220, address 0x491b4
int thisCamera; // $s1
int otherCamera; // $s2
int loop; // $s0
unsigned short *x; // $t0
unsigned short *z; // $a3
{ // line 247, address 0x492a8
struct CELL_OBJECT *cop; // $a2
} // line 294, address 0x4932c
} // line 299, address 0x49374
} // line 309, address 0x493cc
/*
* Offset 0x493CC
* D:\driver2\game\C\EVENT.C (line 2110)
* Stack frame base $sp, length 128
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ DrawFerrisWheel(struct MATRIX *matrix /*$s0*/, struct VECTOR *pos /*$s1*/)
{ // line 1, address 0x493cc
{ // line 16, address 0x494c8
int loop; // $s3
struct MODEL *model; // $s2
struct VECTOR spoke[2]; // stack address -104
{ // line 28, address 0x4954c
struct VECTOR address; // stack address -72
struct VECTOR carPos; // stack address -56
int rotation; // $v0
} // line 32, address 0x4954c
} // line 45, address 0x496c0
} // line 47, address 0x496ec
/*
* Offset 0x496EC
* D:\driver2\game\C\EVENT.C (line 2159)
* Stack frame base $sp, length 136
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawRotor(struct VECTOR pos /*stack 0*/, struct MATRIX *matrix /*stack 16*/)
{ // line 1, address 0x496ec
struct SVECTOR v[5]; // stack address -120
struct MATRIX local; // stack address -80
struct POLY_FT4 *poly; // $t0
struct TEXTURE_DETAILS *tex; // $t3
int z; // stack address -48
char *firstPoly; // $a1
} // line 79, address 0x49ca0
/*
* Offset 0x49CA0
* D:\driver2\game\C\EVENT.C (line 2240)
* Stack frame base $sp, length 232
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawEvents(int camera /*stack 0*/)
{ // line 1, address 0x49ca0
unsigned short *x; // $a1
unsigned short *z; // $a0
int thisCamera; // stack address -56
int otherCamera; // stack address -52
static struct _EVENT *nearestTrain; // address 0x28
static int distanceFromNearestTrain; // address 0x2c
{ // line 36, address 0x49d7c
struct _EVENT *ev; // $s1
{ // line 49, address 0x49e74
unsigned int dist; // $v1
} // line 58, address 0x49edc
{ // line 74, address 0x49f0c
{ // line 76, address 0x49f3c
struct MATRIX matrix; // stack address -208
struct MATRIX ext; // stack address -176
struct VECTOR pos; // stack address -144
int reflection; // $s5
int temp; // stack address -48
{ // line 89, address 0x49fb0
} // line 89, address 0x49fb0
{ // line 95, address 0x4a01c
{ // line 106, address 0x4a0a0
struct VECTOR shadow[4]; // stack address -128
int loop; // $t0
{ // line 111, address 0x4a0c4
struct XZPAIR address; // stack address -64
int rotate; // $a1
} // line 118, address 0x4a150
} // line 121, address 0x4a180
{ // line 133, address 0x4a1e4
} // line 142, address 0x4a220
} // line 143, address 0x4a220
{ // line 153, address 0x4a280
} // line 153, address 0x4a280
{ // line 172, address 0x4a36c
int i; // $a0
} // line 179, address 0x4a3bc
{ // line 184, address 0x4a3d0
} // line 201, address 0x4a448
} // line 245, address 0x4a5a8
} // line 245, address 0x4a5a8
} // line 255, address 0x4a5f0
{ // line 270, address 0x4a690
} // line 270, address 0x4a690
} // line 276, address 0x4a6c0
/*
* Offset 0x4A6F0
* D:\driver2\game\C\EVENT.C (line 2560)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
struct _sdPlane * /*$ra*/ EventSurface(struct VECTOR *pos /*$a0*/, struct _sdPlane *plane /*$s1*/)
{ // line 1, address 0x4a6f0
struct _EVENT *ev; // $s0
int i; // $a2
{ // line 12, address 0x4a768
int dist; // $a3
int end; // $a1
int cos; // $a2
} // line 63, address 0x4a8e8
{ // line 68, address 0x4a8fc
int dist; // stack address -24
{ // line 72, address 0x4a90c
int sin; // $a3
int cos; // $a2
int height; // $t0
int address; // $a0
} // line 104, address 0x4aa88
} // line 105, address 0x4aa88
} // line 121, address 0x4aae0
/*
* Offset 0x4AAE0
* D:\driver2\game\C\EVENT.C (line 2718)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
struct VECTOR * /*$ra*/ TriggerEvent(int i /*$s4*/)
{ // line 1, address 0x4aae0
static int stage[10]; // address 0x200
struct VECTOR *pos; // $s7
{ // line 8, address 0x4ab18
int loop; // $v1
} // line 13, address 0x4ab38
{ // line 21, address 0x4ab88
struct _EVENT *ev; // $a2
} // line 22, address 0x4ab88
{ // line 36, address 0x4ac70
{ // line 39, address 0x4ac70
struct MissionTrain *train; // $s1
{ // line 45, address 0x4aca0
} // line 51, address 0x4acb8
{ // line 56, address 0x4acc4
struct _EVENT *ev; // $s0
int count; // $s2
int address; // $s6
{ // line 67, address 0x4ad14
int pos; // $a1
} // line 67, address 0x4ad14
} // line 99, address 0x4adf0
} // line 101, address 0x4adf0
{ // line 113, address 0x4ae20
struct _EVENT *ev; // $v1
int count; // $a0
} // line 130, address 0x4ae6c
} // line 142, address 0x4ae90
{ // line 149, address 0x4aef8
} // line 179, address 0x4afc8
{ // line 187, address 0x4b010
{ // line 189, address 0x4b010
int loop; // $s0
} // line 205, address 0x4b0ac
} // line 223, address 0x4b138
} // line 274, address 0x4b304
/*
* Offset 0x4B304
* D:\driver2\game\C\EVENT.C (line 2999)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SpecialCamera(enum SpecialCamera type /*$t2*/, int change /*$a1*/)
{ // line 1, address 0x4b304
static int rememberCamera[3]; // address 0x230
static short boatCamera[6] = { -1000, 2100, 6000, -5000, 3584, -5000 };
{ // line 14, address 0x4b34c
int *hackCamera; // $a2
short *boat; // $t3
} // line 115, address 0x4b5a8
} // line 143, address 0x4b664
/*
* Offset 0x4B664
* D:\driver2\game\C\EVENT.C (line 3152)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ DetonatorTimer()
{ // line 2, address 0x4b664
static struct SVECTOR rememberCameraAngle; // address 0x30
{ // line 16, address 0x4b700
{ // line 23, address 0x4b718
static int count; // address 0x38
{ // line 27, address 0x4b734
struct VECTOR pos; // stack address -32
} // line 32, address 0x4b768
{ // line 36, address 0x4b788
struct VECTOR pos; // stack address -32
} // line 37, address 0x4b788
} // line 52, address 0x4b830
} // line 58, address 0x4b844
{ // line 66, address 0x4b8cc
struct _EVENT *ev; // $s0
struct VECTOR pos; // stack address -32
{ // line 95, address 0x4ba18
struct VECTOR *epicentre; // $v1
} // line 108, address 0x4ba70
} // line 123, address 0x4baf4
} // line 126, address 0x4bb18
/*
* Offset 0x4BB18
* D:\driver2\game\C\EVENT.C (line 3288)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ MultiCarEvent(struct _TARGET *target /*$a0*/)
{ // line 1, address 0x4bb18
struct MULTICAR_DATA *data; // $s0
int i; // $s1
struct _EVENT *ev; // $s2
{ // line 13, address 0x4bb60
int n; // $a1
} // line 15, address 0x4bb60
} // line 25, address 0x4bc3c
/*
* Offset 0x4BC3C
* D:\driver2\game\C\EVENT.C (line 483)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitEvents()
{
}
/*
* Offset 0x4BCB8
* D:\driver2\game\C\EVENT.C (line 1107)
* Stack frame base $sp, length 0
*/
void /*$ra*/ EventCollisions(struct _CAR_DATA *cp /*$a2*/, int type /*$a1*/)
{ // line 1, address 0x4bcb8
static struct SVECTOR address; // address 0x18
} // line 18, address 0x4bd94
/*
* Offset 0x4BD94
* D:\driver2\game\C\EVENT.C (line 2994)
* Stack frame base $sp, length 0
*/
void /*$ra*/ OffsetTarget(struct VECTOR *target /*$a0*/)
{
}
/*
* Offset 0x4BDD4
* D:\driver2\game\C\EVENT.C (line 2684)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MakeEventTrackable(struct _EVENT *ev /*$a0*/)
{ // line 1, address 0x4bdd4
struct _EVENT **p; // $v1
} // line 10, address 0x4be08
/*
* Offset 0x4BE08
* D:\driver2\game\C\EVENT.C (line 2527)
* Stack frame base $sp, length 0
*/
int /*$ra*/ OnBoat(struct VECTOR *pos /*$t1*/, struct _EVENT *ev /*$a1*/, int *dist /*$a2*/)
{ // line 1, address 0x4be08
int halfBoatWidth; // $t0
int halfBoatLength; // $a0
} // line 31, address 0x4be8c
/*
* Offset 0x4BE8C
* D:\driver2\game\C\EVENT.C (line 2520)
* Stack frame base $sp, length 0
*/
void /*$ra*/ BoatOffset(struct SVECTOR *address /*$a0*/, struct _EVENT *ev /*$a1*/)
{
}
/*
* Offset 0x4BEC4
* D:\driver2\game\C\EVENT.C (line 402)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetElTrainRotation(struct _EVENT *ev /*$a1*/)
{
}
/*
* Offset 0x4BF20
* D:\driver2\game\C\EVENT.C (line 471)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitDoor(struct FixedEvent *ev /*$a0*/, struct _EVENT ***e /*$a1*/, int *cEvents /*$a2*/)
{
}
/*
* Offset 0x4BFBC
* D:\driver2\game\C\EVENT.C (line 974)
* Stack frame base $sp, length 16
* Saved registers at address -4: s0 s1 s2 s3
*/
void /*$ra*/ InitEventCamera()
{
}
/*
* Offset 0x4C07C
* D:\driver2\game\C\EVENT.C (line 983)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ResetEventCamera()
{
}
/*
* Offset 0x4C10C
* D:\driver2\game\C\EVENT.C (line 1127)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ NextNode(struct _EVENT *ev /*$a0*/)
{
}
/*
* Offset 0x4C1C0
* D:\driver2\game\C\EVENT.C (line 1452)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetBridgeRotation(int timer /*$a0*/)
{ // line 1, address 0x4c1c0
int angle; // $v1
} // line 24, address 0x4c270
/*
* Offset 0x4C270
* D:\driver2\game\C\EVENT.C (line 2696)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ TriggerDoor(struct FixedEvent *door /*$a3*/, int *stage /*$a1*/, int sound /*$a2*/)
{
}
/*
* Offset 0x4C2E8
* D:\driver2\game\C\EVENT.C (line 3144)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ScreenShake(int count /*$a0*/, struct SVECTOR *ang /*$s0*/)
{ // line 1, address 0x4c2e8
} // line 6, address 0x4c398

147
src/C/felony.c Normal file
View File

@ -0,0 +1,147 @@
#include "../decomp_defs.h"
short initialOccurrenceDelay[12] = { 0x18, 0, 0, 0, 0, 0, 0, 0, 0x18, 0, 0x18, 0 };
short initialReccurrenceDelay[12] = { 0x80, 0, 0x80, 0x40, 0x40, 0x20, 0x20, 0, 0x80, 0x100 };
FELONY_VALUE initialFelonyValue[12] =
{
{ 659, 0 },
{ 659, 75 },
{ 659, 0 },
{ 659, 0 },
{ 659, 659 },
{ 1318, 659 },
{ 659, 659 },
{ 659, 25 },
{ 659, 0 },
{ 659, 0 },
{ 659, 0 },
{ 4096, 0 }
};
/*
* Offset 0x4C398
* D:\driver2\game\C\FELONY.C (line 476)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ NoteFelony(struct FELONY_DATA *pFelonyData /*$a3*/, char type /*$s3*/, short scale /*$t0*/)
{ // line 1, address 0x4c398
int felonyTooLowForRoadblocks; // $s4
{ // line 2, address 0x4c410
struct FELONY_DELAY *pFelonyDelay; // $v1
} // line 19, address 0x4c434
{ // line 36, address 0x4c468
int additionalFelonyPoints; // $a0
} // line 52, address 0x4c57c
{ // line 77, address 0x4c698
char rnd; // $s1
int dir; // $a3
} // line 107, address 0x4c86c
} // line 112, address 0x4c8fc
/*
* Offset 0x4C91C
* D:\driver2\game\C\FELONY.C (line 597)
* Stack frame base $sp, length 0
*/
void /*$ra*/ AdjustFelony(struct FELONY_DATA *pFelonyData /*$a0*/)
{ // line 1, address 0x4c91c
{ // line 52, address 0x4cc50
struct FELONY_DELAY *pFelonyDelay; // $v1
} // line 61, address 0x4cc90
} // line 62, address 0x4cc90
/*
* Offset 0x4CC90
* D:\driver2\game\C\FELONY.C (line 668)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ CheckPlayerMiscFelonies()
{ // line 2, address 0x4cc90
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, address 0x4cd28
char i; // $a1
{ // line 31, address 0x4cdcc
struct DRIVER2_JUNCTION *jn; // $a2
short exitId; // $s1
} // line 47, address 0x4ce74
} // line 48, address 0x4ce74
{ // line 48, address 0x4ce74
char goingWrongWay; // $s7
int lane; // $s0
int dx; // $v1
int dz; // $a0
{ // line 70, address 0x4d014
} // line 80, address 0x4d140
} // line 90, address 0x4d160
{ // line 111, address 0x4d200
int maxSpeed; // $a0
int limit; // $v1
} // line 137, address 0x4d2b8
} // line 138, address 0x4d2b8
/*
* Offset 0x4D2E8
* D:\driver2\game\C\FELONY.C (line 810)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitFelonySystem()
{
}
/*
* Offset 0x4D320
* D:\driver2\game\C\FELONY.C (line 824)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CarHitByPlayer(struct _CAR_DATA *victim /*$a0*/, int howHard /*$a2*/)
{
}
/*
* Offset 0x4D3CC
* D:\driver2\game\C\FELONY.C (line 413)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitFelonyDelayArray(struct FELONY_DELAY *pFelonyDelay /*$a0*/, short *pMaximum /*$a1*/, int count /*$a2*/)
{ // line 1, address 0x4d3cc
struct FELONY_DELAY *pCurrent; // $a0
} // line 9, address 0x4d408
/*
* Offset 0x4D408
* D:\driver2\game\C\FELONY.C (line 431)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitFelonyData(struct FELONY_DATA *pFelonyData /*$s0*/)
{ // line 1, address 0x4d408
{ // line 1, address 0x4d408
struct FELONY_VALUE *pSrc; // $v1
struct FELONY_VALUE *pDest; // $s0
struct FELONY_VALUE *pEnd; // $a0
} // line 14, address 0x4d488
} // line 15, address 0x4d488
/*
* Offset 0x4D488
* D:\driver2\game\C\FELONY.C (line 450)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetCarHeading(int direction /*$a0*/)
{
}
/*
* Offset 0x4D498
* D:\driver2\game\C\FELONY.C (line 454)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
char /*$ra*/ GetCarDirectionOfTravel(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x4d498
int direction; // $v0
} // line 12, address 0x4d4e0

38
src/C/fmvplay.c Normal file
View File

@ -0,0 +1,38 @@
#include "../decomp_defs.h"
/*
* Offset 0x4D4E0
* D:\driver2\game\C\FMVPLAY.C (line 23)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ ReInitSystem()
{ // line 2, address 0x4d4e0
} // line 25, address 0x4d580
/*
* Offset 0x4D580
* D:\driver2\game\C\FMVPLAY.C (line 68)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ PlayFMV(unsigned char render /*$s0*/)
{ // line 1, address 0x4d580
struct RENDER_ARGS args; // stack address -40
{ // line 7, address 0x4d5ac
} // line 7, address 0x4d5ac
{ // line 12, address 0x4d5d8
} // line 13, address 0x4d5e0
} // line 28, address 0x4d638
/*
* Offset 0x4D638
* D:\driver2\game\C\FMVPLAY.C (line 107)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PlayRender(struct RENDER_ARGS *args /*$s0*/)
{ // line 1, address 0x4d638
static unsigned long oldsp; // address 0x0
{ // line 22, address 0x4d69c
} // line 31, address 0x4d6e0
} // line 34, address 0x4d6f8

513
src/C/gamesnd.c Normal file
View File

@ -0,0 +1,513 @@
#include "../decomp_defs.h"
void IdentifyZone(struct __envsound *ep, struct __envsoundinfo *E, int pl);
void CalcEffPos(struct __envsound *ep, struct __envsoundinfo *E, int pl);
void CalcEffPos2(struct __envsound *ep, struct __envsoundinfo *E, int pl);
void UpdateEnvSnd(struct __envsound *ep, struct __envsoundinfo *E, int pl);
static envsoundfunc UpdateEnvSounds[] = {
IdentifyZone,
CalcEffPos,
CalcEffPos2,
UpdateEnvSnd
};
GEAR_DESC geard[2][4] =
{
{
{ 0, 0, 163, 144, 135 },
{ 86, 133, 260, 90, 85 },
{ 186, 233, 360, 60, 57 },
{ 286, 326, 9999, 48, 45 }
},
{
{ 0, 0, 50, 144, 135 },
{ 43, 66, 100, 90, 85 },
{ 93, 116, 150, 60, 57 },
{ 143, 163, 9999, 48, 45 }
}
};
// XM song position
int coptrackpos[8] = {
0x10, 0xB, 7, 0x12, 0xC, 9, 8, 0xA,
};
/*
* Offset 0x4D6F8
* D:\driver2\game\C\GAMESND.C (line 171)
* Stack frame base $sp, length 0
*/
int /*$ra*/ ResidentModelsBodge()
{ // line 1, address 0x4d6f8
int i; // $a1
int j; // $a2
} // line 12, address 0x4d7ec
/*
* Offset 0x4D7EC
* D:\driver2\game\C\GAMESND.C (line 228)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ LoadLevelSFX(int missionNum /*$s1*/)
{ // line 1, address 0x4d7ec
char city_night_fx; // $s2
int i; // $s0
{ // line 38, address 0x4db40
int mission; // $a1
} // line 41, address 0x4dcd8
} // line 67, address 0x4de98
/*
* Offset 0x4DE98
* D:\driver2\game\C\GAMESND.C (line 305)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ StartGameSounds()
{ // line 2, address 0x4de98
struct VECTOR *cp; // $s2
int i; // $s1
{ // line 10, address 0x4defc
int siren; // $a2
int car_model; // $s0
} // line 28, address 0x4e0e4
} // line 59, address 0x4e1f0
/*
* Offset 0x4E1F0
* D:\driver2\game\C\GAMESND.C (line 404)
* Stack frame base $sp, length 0
*/
unsigned short /*$ra*/ GetEngineRevs(struct _CAR_DATA *cp /*$t2*/)
{ // line 1, address 0x4e1f0
int gear; // $a1
int lastgear; // $a0
int ws; // $a2
int acc; // $t1
int type; // $t0
} // line 35, address 0x4e350
/*
* Offset 0x4E350
* D:\driver2\game\C\GAMESND.C (line 458)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ ControlCarRevs(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x4e350
unsigned short oldRevs; // $s2
unsigned short desiredRevs; // $v1
unsigned short newRevs; // $a0
int acc; // $s3
char spin; // $s4
char player_id; // $s1
{ // line 40, address 0x4e47c
int revsmax; // $a3
} // line 46, address 0x4e53c
} // line 55, address 0x4e5c8
/*
* Offset 0x4E5C8
* D:\driver2\game\C\GAMESND.C (line 595)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ControlSpeech(struct SPEECH_QUEUE *pSpeechQueue /*$s0*/)
{ // line 1, address 0x4e5c8
} // line 40, address 0x4e768
/*
* Offset 0x4E778
* D:\driver2\game\C\GAMESND.C (line 721)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitDopplerSFX()
{ // line 1, address 0x4e778
int i; // $v1
} // line 5, address 0x4e7f8
/*
* Offset 0x4E7F8
* D:\driver2\game\C\GAMESND.C (line 734)
* Stack frame base $sp, length 200
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DoDopplerSFX()
{ // line 1, address 0x4e7f8
int i; // $s1
int j; // $s0
int num_noisy_cars; // $s5
unsigned long car_dist[20]; // stack address -176
unsigned short indexlist[20]; // stack address -96
struct _CAR_DATA *car_ptr; // $s2
struct VECTOR *pp; // $a1
unsigned long car_flags; // $s4
char sirens; // stack address -56
{ // line 91, address 0x4ed20
int siren; // $v0
} // line 108, address 0x4ee30
{ // line 156, address 0x4f104
int model; // $v1
} // line 158, address 0x4f19c
{ // line 175, address 0x4f224
char old_idle; // $a1
{ // line 180, address 0x4f2a8
int model; // $v1
} // line 190, address 0x4f37c
} // line 195, address 0x4f3d0
} // line 210, address 0x4f508
/*
* Offset 0x4F508
* D:\driver2\game\C\GAMESND.C (line 946)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DoPoliceLoudhailer(int cars /*$s1*/, unsigned short *indexlist /*$s2*/, unsigned long *dist /*$s3*/)
{ // line 1, address 0x4f508
int i; // $t1
int rnd; // $t0
int time; // $s0
{ // line 5, address 0x4f5c8
struct _CAR_DATA *car_ptr; // $a3
} // line 13, address 0x4f68c
} // line 16, address 0x4f6b4
/*
* Offset 0x4F6D0
* D:\driver2\game\C\GAMESND.C (line 975)
* Stack frame base $sp, length 80
* Saved registers at address -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, address 0x4f6d0
long *here; // $s3
char chan; // $s1
char crash; // $s6
char length; // $s4
{ // line 8, address 0x4f758
unsigned long p0dst; // $a1
unsigned long p1dst; // $a0
} // line 9, address 0x4f758
{ // line 18, address 0x4f7ec
{ // line 25, address 0x4f900
} // line 32, address 0x4f998
} // line 36, address 0x4f9bc
} // line 37, address 0x4f9bc
/*
* Offset 0x4F9EC
* D:\driver2\game\C\GAMESND.C (line 1019)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ ExplosionSound(struct VECTOR *pos /*$s4*/, int type /*$s0*/)
{ // line 1, address 0x4f9ec
int bang; // $s5
int pitch; // $t0
int rnd; // $s3
struct VECTOR P; // stack address -48
int sc1; // $s2
int sc2; // $s1
} // line 29, address 0x4fbd8
/*
* Offset 0x4FBFC
* D:\driver2\game\C\GAMESND.C (line 1052)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ JerichoSpeak()
{ // line 1, address 0x4fbfc
static unsigned int j_said; // address 0x0
int rnd; // $a1
} // line 8, address 0x4fcf8
/*
* Offset 0x4FCF8
* D:\driver2\game\C\GAMESND.C (line 1103)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ SoundTasks()
{ // line 1, address 0x4fcf8
int i; // $s2
struct _CAR_DATA *cp; // $s1
} // line 80, address 0x5014c
/*
* Offset 0x5014C
* D:\driver2\game\C\GAMESND.C (line 1195)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ InitMusic(int musicnum /*$s0*/)
{ // line 1, address 0x5014c
static char *music_pt; // address 0xc
static char *sample_pt; // address 0x10
static char xm_samples; // address 0x4
int musicpos[3]; // stack address -32
char *name; // $s1
int sample_len; // $s0
int music_len; // $t0
{ // line 45, address 0x5020c
} // line 52, address 0x50270
} // line 61, address 0x502e4
/*
* Offset 0x502E4
* D:\driver2\game\C\GAMESND.C (line 1350)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ Tunnels(struct __tunnelinfo *T /*$a0*/)
{ // line 1, address 0x502e4
int i; // $t2
int verb; // $t4
} // line 14, address 0x50468
/*
* Offset 0x50468
* D:\driver2\game\C\GAMESND.C (line 1366)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ AddTunnels(int level /*$a0*/)
{
}
/*
* Offset 0x50C70
* D:\driver2\game\C\GAMESND.C (line 1577)
* Stack frame base $sp, length 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*/)
{ // line 1, address 0x50c70
void *data; // $a1
struct __envsound *ep; // $t1
struct __envsoundtags *T; // $t0
long s; // $a1
} // line 58, address 0x50e70
/*
* Offset 0x50E70
* D:\driver2\game\C\GAMESND.C (line 1646)
* Stack frame base $sp, length 112
* Saved registers at address -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, address 0x50e70
int i; // $s7
int j; // $fp
int tmp[4]; // stack address -96
float d; // $s0
float _g[4]; // stack address -80
struct __bitfield64 zones; // stack address -64
} // line 58, address 0x51524
/*
* Offset 0x51524
* D:\driver2\game\C\GAMESND.C (line 1706)
* Stack frame base $sp, length 8
* Saved registers at address -4: s0 s1
*/
void /*$ra*/ CalcEffPos(struct __envsound *ep /*$s1*/, struct __envsoundinfo *E /*$a1*/, int pl /*$a2*/)
{ // line 1, address 0x51524
int j; // $t5
int me; // $t2
} // line 36, address 0x51838
/*
* Offset 0x51838
* D:\driver2\game\C\GAMESND.C (line 1744)
* Stack frame base $sp, length 72
* Saved registers at address -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, address 0x51838
int j; // stack address -56
int me; // $s5
{ // line 12, address 0x51940
} // line 12, address 0x51940
} // line 66, address 0x51f74
/*
* Offset 0x51F74
* D:\driver2\game\C\GAMESND.C (line 1812)
* Stack frame base $sp, length 80
* Saved registers at address -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, address 0x51f74
int i; // stack address -48
} // line 29, address 0x521d0
/*
* Offset 0x521D0
* D:\driver2\game\C\GAMESND.C (line 1545)
* Stack frame base $sp, length 0
*/
int /*$ra*/ SetEnvSndVol(int snd /*$a0*/, int vol /*$a1*/)
{ // line 1, address 0x521d0
int was; // $v0
} // line 5, address 0x521f8
/*
* Offset 0x521F8
* D:\driver2\game\C\GAMESND.C (line 665)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ CopSay(int phrase /*$s1*/, int direction /*$s2*/)
{
}
/*
* Offset 0x522F4
* D:\driver2\game\C\GAMESND.C (line 562)
* Stack frame base $sp, length 0
*/
char /*$ra*/ PlaySpeech(struct SPEECH_QUEUE *pSpeechQueue /*$a0*/, int sound /*$a1*/)
{ // line 1, address 0x522f4
char result; // $v0
int i; // $a2
} // line 21, address 0x52354
/*
* Offset 0x52354
* D:\driver2\game\C\GAMESND.C (line 127)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CarHasSiren(int index /*$a0*/)
{
}
/*
* Offset 0x523F0
* D:\driver2\game\C\GAMESND.C (line 1510)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitEnvSnd(int num_envsnds /*$a0*/)
{ // line 1, address 0x523f0
int i; // $v1
int p; // $a1
struct __envsoundtags *T; // $t1
} // line 28, address 0x524a4
/*
* Offset 0x524A4
* D:\driver2\game\C\GAMESND.C (line 1317)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitTunnels(char n /*$a0*/)
{ // line 1, address 0x524a4
struct __tunnelinfo *T; // $a1
} // line 8, address 0x524c8
/*
* Offset 0x524C8
* D:\driver2\game\C\GAMESND.C (line 98)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ LoadBankFromLump(int bank /*$s3*/, int lump /*$s2*/)
{ // line 1, address 0x524c8
static unsigned int blockLimit[73] = {0}; // address 0x10
int length; // $s0
char *name; // $s1
} // line 21, address 0x52578
/*
* Offset 0x52578
* D:\driver2\game\C\GAMESND.C (line 161)
* Stack frame base $sp, length 0
*/
int /*$ra*/ SpecialVehicleKludge(char vehicle2 /*$a0*/)
{ // line 1, address 0x52578
static char kludge_bank[4][3] = {
{ 2, 18, 10 },
{ 2, 17, 4 },
{ 9, 11, 13 },
{ 17, 11, 15 }
}; // address 0x134
} // line 8, address 0x525a8
/*
* Offset 0x525A8
* D:\driver2\game\C\GAMESND.C (line 197)
* Stack frame base $sp, length 0
*/
int /*$ra*/ MapCarIndexToBank(int index /*$a1*/)
{ // line 1, address 0x525a8
int *RM; // $a2
static char car_banks[4][9] = {
{12, 4, 13, 5, 16, 9, 2, 16, 10},
{10, 11, 7, 6, 17, 17, 2, 5, 4},
{14, 3, 4, 6, 11, 9, 2, 17, 10},
{8, 7, 13, 9, 2, 17, 17, 11, 16},
};
} // line 22, address 0x52660
/*
* Offset 0x52660
* D:\driver2\game\C\GAMESND.C (line 515)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ DoSpeech(int chan /*$a0*/, int sound /*$a2*/)
{
}
/*
* Offset 0x526BC
* D:\driver2\game\C\GAMESND.C (line 587)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitSpeechQueue(struct SPEECH_QUEUE *pSpeechQueue /*$s0*/)
{
}
/*
* Offset 0x526FC
* D:\driver2\game\C\GAMESND.C (line 677)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ BodSay(int phrase /*$a1*/)
{
}
/*
* Offset 0x52738
* D:\driver2\game\C\GAMESND.C (line 686)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ MissionSay(int phrase /*$a0*/)
{ // line 1, address 0x52738
} // line 5, address 0x52764
/*
* Offset 0x52774
* D:\driver2\game\C\GAMESND.C (line 700)
* Stack frame base $sp, length 16
*/
long /*$ra*/ jsqrt(unsigned long a /*$a0*/)
{ // line 1, address 0x52774
long b1; // $a1
long b0; // $v1
} // line 13, address 0x52828
/*
* Offset 0x52828
* D:\driver2\game\C\GAMESND.C (line 1085)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ FunkUpDaBGMTunez(int funk /*$a0*/)
{
}
/*
* Offset 0x528B0
* D:\driver2\game\C\GAMESND.C (line 1331)
* Stack frame base $sp, length 0
*/
int /*$ra*/ AddTunnel(long x1 /*$t1*/, long y1 /*$a1*/, long z1 /*$a2*/, long x2 /*$a3*/, long y2 /*stack 16*/, long z2 /*stack 20*/)
{ // line 1, address 0x528b0
struct __tunnelinfo *T; // $t0
} // line 13, address 0x52964
/*
* Offset 0x5296C
* D:\driver2\game\C\GAMESND.C (line 1555)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetEnvSndPos(int snd /*$a0*/, long px /*$a1*/, long pz /*$a2*/)
{
}
/*
* Offset 0x529B0
* D:\driver2\game\C\GAMESND.C (line 1852)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitLeadHorn()
{
}
/*
* Offset 0x529BC
* D:\driver2\game\C\GAMESND.C (line 1855)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ LeadHorn(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x529bc
static unsigned int rnd; // address 0x8
} // line 12, address 0x52a90

171
src/C/glaunch.c Normal file
View File

@ -0,0 +1,171 @@
#include "../decomp_defs.h"
MISSION_STEP MissionLadder[68] =
{
{ 1, 0, 1, 0 },
{ 1, 0, 2, 0 },
{ 2, 0, 1, 0 },
{ 2, 1, 2, 0 },
{ 2, 1, 3, 0 },
{ 1, 1, 3, 0 },
{ 1, 1, 4, 0 },
{ 2, 1, 4, 0 },
{ 1, 2, 5, 0 },
{ 2, 2, 5, 0 },
{ 1, 3, 6, 0 },
{ 2, 3, 6, 0 },
{ 1, 4, 7, 0 },
{ 2, 5, 7, 0 },
{ 6, 5, 0, 0 },
{ 2, 5, 9, 0 },
{ 1, 5, 8, 0 },
{ 1, 5, 9, 0 },
{ 2, 6, 10, 0 },
{ 1, 6, 10, 0 },
{ 1, 6, 11, 0 },
{ 2, 7, 11, 0 },
{ 6, 7, 0, 0 },
{ 2, 7, 13, 0 },
{ 2, 7, 14, 0 },
{ 1, 7, 12, 0 },
{ 2, 8, 15, 0 },
{ 2, 8, 16, 0 },
{ 1, 8, 13, 0 },
{ 2, 9, 17, 0 },
{ 2, 9, 18, 0 },
{ 1, 9, 14, 0 },
{ 2, 10, 19, 0 },
{ 1, 10, 15, 0 },
{ 2, 11, 20, 0 },
{ 1, 12, 16, 1 },
{ 1, 12, 17, 1 },
{ 2, 13, 21, 1 },
{ 2, 13, 22, 1 },
{ 2, 13, 23, 1 },
{ 2, 13, 24, 1 },
{ 1, 13, 18, 1 },
{ 2, 14, 25, 1 },
{ 2, 14, 26, 1 },
{ 1, 14, 19, 1 },
{ 2, 15, 27, 1 },
{ 2, 15, 28, 1 },
{ 2, 15, 29, 1 },
{ 2, 15, 30, 1 },
{ 1, 15, 20, 1 },
{ 1, 15, 21, 1 },
{ 2, 16, 31, 1 },
{ 2, 16, 32, 1 },
{ 2, 16, 33, 1 },
{ 2, 16, 34, 1 },
{ 1, 16, 22, 1 },
{ 2, 17, 35, 1 },
{ 6, 17, 0, 1 },
{ 2, 17, 37, 1 },
{ 1, 17, 23, 1 },
{ 2, 18, 38, 1 },
{ 2, 18, 39, 1 },
{ 1, 18, 24, 1 },
{ 2, 19, 40, 1 },
{ 1, 19, 25, 1 },
{ 1, 19, 26, 1 },
{ 1, 19, 27, 1 },
{ 4, 19, 28, 1 }
};
unsigned short RecapFrameLength[19] = {
0x203, 0x2FC, 0x3C2, 0x496, 0x56D, 0x616, 0x6D4, 0x70E, 0x800, 0x8CD, 0x99A, 0x430, 0x550, 0x5E3, 0x67B, 0x96D, 0xA17, 0xAC9, 0xBB6
};
/*
* Offset 0x52A90
* D:\driver2\game\C\GLAUNCH.C (line 834)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ GameStart()
{ // line 2, address 0x52a90
struct RECT rect; // stack address -16
int oldVMode; // $s0
int SurvivalCopSettingsBackup; // $s0
} // line 177, address 0x52f00
/*
* Offset 0x52F00
* D:\driver2\game\C\GLAUNCH.C (line 1030)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ReInitFrontend()
{ // line 2, address 0x52f00
struct RECT rect; // stack address -24
} // line 73, address 0x53050
/*
* Offset 0x53050
* D:\driver2\game\C\GLAUNCH.C (line 1105)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ RunMissionLadder(int newgame /*$a1*/)
{ // line 1, address 0x53050
struct MISSION_STEP *CurrentStep; // $s0
struct RENDER_ARGS RenderArgs; // stack address -48
int quit; // $s3
{ // line 38, address 0x5310c
} // line 38, address 0x5310c
{ // line 43, address 0x5311c
} // line 44, address 0x53124
{ // line 48, address 0x53134
} // line 52, address 0x53150
{ // line 58, address 0x5319c
{ // line 67, address 0x53200
} // line 70, address 0x53214
} // line 107, address 0x532f4
} // line 110, address 0x53320
/*
* Offset 0x53320
* D:\driver2\game\C\GLAUNCH.C (line 1279)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ LaunchGame()
{ // line 2, address 0x53320
struct RECT rect; // stack address -16
int quit; // $s0
} // line 136, address 0x53640
/*
* Offset 0x53640
* D:\driver2\game\C\GLAUNCH.C (line 1222)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ GetRandomChase()
{ // line 2, address 0x53640
int bump; // $s1
} // line 28, address 0x53704
/*
* Offset 0x53718
* D:\driver2\game\C\GLAUNCH.C (line 1018)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StartRender(int renderNum /*$a0*/)
{
}
/*
* Offset 0x53740
* D:\driver2\game\C\GLAUNCH.C (line 1252)
* Stack frame base $sp, length 0
*/
int /*$ra*/ FindPrevMissionFromLadderPos(int pos /*$a0*/)
{ // line 2, address 0x53740
} // line 16, address 0x537a8
/*
* Offset 0x537A8
* D:\driver2\game\C\GLAUNCH.C (line 1417)
* Stack frame base $sp, length 0
*/
int /*$ra*/ FindMissionLadderPos(int mission /*$a0*/)
{ // line 1, address 0x537a8
struct MISSION_STEP *step; // $a1
int pos; // $a2
} // line 40, address 0x5387c

380
src/C/handling.c Normal file
View File

@ -0,0 +1,380 @@
#include "../decomp_defs.h"
/*
* Offset 0x53884
* D:\driver2\game\C\HANDLING.C (line 998)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ InitCarPhysics(struct _CAR_DATA *cp /*$s0*/, long *startpos[4] /*$t0*/, int direction /*$a2*/)
{ // line 1, address 0x53884
int ty; // $v1
int dz; // $s1
int odz; // $a3
{ // line 6, address 0x538f8
unsigned long *dst; // $a1
} // line 6, address 0x538f8
} // line 42, address 0x53a50
/*
* Offset 0x53A50
* D:\driver2\game\C\HANDLING.C (line 1055)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ TempBuildHandlingMatrix(struct _CAR_DATA *cp /*$s0*/, int init /*$a1*/)
{ // line 1, address 0x53a50
int ty; // $v1
int dz; // $a3
} // line 20, address 0x53b70
/*
* Offset 0x53B70
* D:\driver2\game\C\HANDLING.C (line 1079)
* Stack frame base $sp, length 0
*/
void /*$ra*/ UpdateCarPoints(struct CAR_COSMETICS *carCos /*$a0*/)
{ // line 1, address 0x53b70
struct SVECTOR *groundCollPoints; // $a1
struct SVECTOR *wheelPoints; // $a3
int i; // $a2
} // line 24, address 0x53c68
/*
* Offset 0x53C68
* D:\driver2\game\C\HANDLING.C (line 1192)
* Stack frame base $sp, length 272
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ GlobalTimeStep()
{ // line 2, address 0x53c68
int i; // $fp
int RKstep; // stack address -84
int subframe; // stack address -80
struct _CAR_DATA *c0; // $s0
static union RigidBodyState _tp[20]; // address 0x0
static union RigidBodyState _d0[20]; // address 0x410
static union RigidBodyState _d1[20]; // address 0x820
{ // line 76, address 0x53cd4
struct _CAR_DATA *c0; // $t2
union RigidBodyState *st; // $t1
{ // line 91, address 0x53d94
int s; // $v0
} // line 101, address 0x53df8
{ // line 109, address 0x53e80
long AV[4]; // stack address -248
long delta_orientation[4]; // stack address -232
} // line 129, address 0x54060
} // line 130, address 0x54060
{ // line 142, address 0x5408c
union RigidBodyState *thisDelta; // stack address -76
{ // line 148, address 0x540a0
struct _CAR_DATA *c0; // $s4
{ // line 156, address 0x540fc
union RigidBodyState *thisState_i; // $s6
int j; // stack address -72
{ // line 1, address 0x54154
union RigidBodyState *state; // $s6
union RigidBodyState *delta; // $a3
struct _CAR_DATA *cp; // $s4
{ // line 1, address 0x54154
long AV[4]; // stack address -248
} // line 1, address 0x54154
} // line 1, address 0x54154
{ // line 175, address 0x54340
struct _CAR_DATA *c1; // $s3
union RigidBodyState *thisState_j; // $s0
{ // line 183, address 0x543a8
int strength; // $s5
long centre0[4]; // stack address -248
long centre1[4]; // stack address -232
long normal[4]; // stack address -216
long collisionpoint[4]; // stack address -200
{ // line 186, address 0x543a8
struct BOUND_BOX *bb1; // $a2
struct BOUND_BOX *bb2; // $a0
} // line 217, address 0x544a8
{ // line 222, address 0x544a8
int depth; // stack address -88
} // line 227, address 0x544c8
{ // line 227, address 0x544c8
long lever0[4]; // stack address -184
long lever1[4]; // stack address -168
long torque[4]; // stack address -152
long pointVel0[4]; // stack address -136
long pointVel1[4]; // stack address -120
int strikeVel; // stack address -68
{ // line 227, address 0x544c8
int is; // $v0
int wanted; // $v1
} // line 227, address 0x544c8
{ // line 295, address 0x548d8
struct VECTOR velocity; // stack address -104
{ // line 314, address 0x5498c
int debris1; // $s0
int debris2; // $s2
} // line 326, address 0x549e4
} // line 327, address 0x549e4
{ // line 334, address 0x54a24
int do1; // $a0
int do2; // $t5
int m1; // $t3
int m2; // $a1
{ // line 356, address 0x54ab8
long force[4]; // stack address -104
int strength1; // $a0
int twistY; // $t4
} // line 385, address 0x54d08
{ // line 389, address 0x54d10
long force[4]; // stack address -104
int strength2; // $a1
int twistY; // $t2
} // line 418, address 0x54f44
} // line 419, address 0x54f44
} // line 426, address 0x54fc0
} // line 427, address 0x54fc0
} // line 428, address 0x54fc0
} // line 429, address 0x54fe4
} // line 430, address 0x54fe4
{ // line 434, address 0x5500c
struct _CAR_DATA *c0; // $a1
{ // line 438, address 0x5502c
union RigidBodyState *st; // $t2
union RigidBodyState *tp; // $a0
union RigidBodyState *d0; // $a2
union RigidBodyState *d1; // $v1
int j; // $t1
} // line 454, address 0x55118
} // line 455, address 0x55118
} // line 456, address 0x55130
{ // line 460, address 0x5515c
int carsDentedThisFrame; // $s2
{ // line 463, address 0x5516c
{ // line 464, address 0x5516c
unsigned long *dst; // $a1
} // line 464, address 0x5516c
{ // line 478, address 0x551f0
} // line 481, address 0x55200
} // line 483, address 0x55200
} // line 487, address 0x55254
} // line 507, address 0x55254
/*
* Offset 0x55254
* D:\driver2\game\C\HANDLING.C (line 1704)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ SetShadowPoints(struct _CAR_DATA *c0 /*$s4*/)
{ // line 1, address 0x55254
int j; // $s2
struct CAR_COSMETICS *car_cos; // $v1
struct _sdPlane *surfacePtr; // stack address -48
{ // line 14, address 0x55310
struct SVECTOR disp; // stack address -104
struct VECTOR pointPos; // stack address -96
struct VECTOR surfaceNormal; // stack address -80
struct VECTOR surfacePoint; // stack address -64
} // line 35, address 0x553f0
} // line 37, address 0x55434
/*
* Offset 0x55434
* D:\driver2\game\C\HANDLING.C (line 1753)
* Stack frame base $sp, length 0
*/
void /*$ra*/ LongQuaternion2Matrix(long *qua[4] /*$a0*/, struct MATRIX *m /*$a1*/)
{ // line 1, address 0x55434
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, address 0x55558
/*
* Offset 0x55558
* D:\driver2\game\C\HANDLING.C (line 1802)
* Stack frame base $sp, length 0
*/
void /*$ra*/ initOBox(struct _CAR_DATA *cp /*$a2*/)
{ // line 1, address 0x55558
struct SVECTOR *boxDisp; // $a0
{ // line 1, address 0x55558
int length; // $a1
} // line 40, address 0x55748
} // line 42, address 0x55748
/*
* Offset 0x55748
* D:\driver2\game\C\HANDLING.C (line 1930)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CheckCarToCarCollisions()
{ // line 2, address 0x55748
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, address 0x55774
int wx; // $v1
int wz; // $a2
} // line 52, address 0x55994
} // line 84, address 0x55afc
/*
* Offset 0x55B04
* D:\driver2\game\C\HANDLING.C (line 2027)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x55b04
int player_id; // $s1
{ // line 131, address 0x55d40
int int_steer; // $v0
int analog_angle; // $v1
} // line 153, address 0x55df8
{ // line 233, address 0x55f58
int rws; // $v0
} // line 243, address 0x55fe8
{ // line 255, address 0x5604c
int playerCar; // $v0
int dist; // $a0
int dx; // $a0
int dz; // $v0
} // line 272, address 0x560e8
{ // line 276, address 0x560f8
int targetCarId; // $v1
{ // line 293, address 0x5613c
struct _CAR_DATA *tp; // $a1
int cx; // $v1
int cz; // $v0
int chase_square_dist; // $v0
{ // line 300, address 0x56174
int averagePower; // $a0
} // line 302, address 0x561b0
} // line 313, address 0x562c0
} // line 315, address 0x562c0
} // line 348, address 0x56314
/*
* Offset 0x56314
* D:\driver2\game\C\HANDLING.C (line 2397)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ TerminateSkidding(int player_id /*$a0*/)
{
}
/*
* Offset 0x563B8
* D:\driver2\game\C\HANDLING.C (line 2414)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ CheckCarEffects(struct _CAR_DATA *cp /*$s2*/, int player_id /*$s3*/)
{ // line 1, address 0x563b8
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, address 0x56650
int pitch; // $v0
} // line 90, address 0x566ac
{ // line 93, address 0x566c8
int wnse; // $a0
} // line 96, address 0x56710
{ // line 119, address 0x56810
int pitch; // $t0
} // line 123, address 0x56878
{ // line 132, address 0x568a8
} // line 136, address 0x568d0
} // line 146, address 0x56914
/*
* Offset 0x56940
* D:\driver2\game\C\HANDLING.C (line 2575)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ jump_debris(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x56940
int count; // $a1
{ // line 24, address 0x569cc
struct VECTOR position; // stack address -48
struct VECTOR velocity; // stack address -32
} // line 28, address 0x56a60
} // line 29, address 0x56a60
/*
* Offset 0x56A74
* D:\driver2\game\C\HANDLING.C (line 1875)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StepCarPhysics(struct _CAR_DATA *cp /*$a2*/)
{ // line 1, address 0x56a74
struct _HANDLING_TYPE *hp; // $v0
} // line 24, address 0x56acc
/*
* Offset 0x56AD4
* D:\driver2\game\C\HANDLING.C (line 1911)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitialiseCarHandling()
{
}
/*
* Offset 0x56ADC
* D:\driver2\game\C\HANDLING.C (line 2607)
* Stack frame base $sp, length 0
*/
void /*$ra*/ nose_down(struct _CAR_DATA *cp /*$a0*/)
{
}
/*
* Offset 0x56B4C
* D:\driver2\game\C\HANDLING.C (line 1854)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ RebuildCarMatrix(union RigidBodyState *st /*$a2*/, struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x56b4c
{ // line 1, address 0x56b4c
int sm; // $v1
{ // line 5, address 0x56bf4
int osm; // $v0
} // line 5, address 0x56c68
} // line 5, address 0x56c68
} // line 8, address 0x56c8c
/*
* Offset 0x56C8C
* D:\driver2\game\C\HANDLING.C (line 1106)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ FixCarCos(struct CAR_COSMETICS *carCos /*$s0*/, int externalModelNumber /*$a1*/)
{ // line 1, address 0x56c8c
int current; // $v0
} // line 24, address 0x56d20
/*
* Offset 0x56D20
* D:\driver2\game\C\HANDLING.C (line 2389)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitSkidding()
{ // line 1, address 0x56d20
int i; // $a0
} // line 6, address 0x56d54
/*
* Offset 0x56D54
* D:\driver2\game\C\HANDLING.C (line 2664)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetPlayerId(struct _CAR_DATA *cp /*$a0*/)
{ // line 1, address 0x56d54
int i; // $a1
int p_id; // $a3
} // line 5, address 0x56dbc

114
src/C/job_fx.c Normal file
View File

@ -0,0 +1,114 @@
#include "../decomp_defs.h"
MATRIX SS = {0};
/*
* Offset 0x56DBC
* D:\driver2\game\C\JOB_FX.C (line 129)
* Stack frame base $sp, length 8
* Saved registers at address -8: s0
*/
void /*$ra*/ AddExplosion(struct VECTOR pos /*stack 0*/, int type /*stack 16*/)
{ // line 1, address 0x56dbc
int i; // $t1
} // line 40, address 0x56eac
/*
* Offset 0x56EAC
* D:\driver2\game\C\JOB_FX.C (line 178)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ HandleExplosion()
{ // line 2, address 0x56eac
int i; // $s5
struct _CAR_DATA *cp; // $s0
{ // line 34, address 0x56fb4
} // line 42, address 0x56fec
} // line 45, address 0x56ffc
/*
* Offset 0x57028
* D:\driver2\game\C\JOB_FX.C (line 557)
* Stack frame base $sp, length 0
*/
void /*$ra*/ initExplosion()
{ // line 2, address 0x57028
int i; // $t0
} // line 25, address 0x57310
/*
* Offset 0x57310
* D:\driver2\game\C\JOB_FX.C (line 588)
* Stack frame base $sp, length 152
* Saved registers at address -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, address 0x57310
int i; // $t1
int j; // $s3
struct POLY_FT4 *poly; // $a2
struct SVECTOR *src; // $t0
struct VECTOR v; // stack address -136
int rgb; // $s0
int z; // stack address -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, address 0x57310
int transparency; // $t2
int green; // $t1
int blue; // $v1
} // line 1, address 0x57310
{ // line 43, address 0x57458
struct MATRIX workmatrix; // stack address -120
int sf; // $v0
int s; // $v1
int c; // $a3
} // line 50, address 0x574ac
{ // line 97, address 0x57788
int transparency; // $a0
int red; // $a1
int green; // $a2
int blue; // $v1
} // line 97, address 0x57788
{ // line 110, address 0x5780c
struct MATRIX workmatrix; // stack address -88
int sf; // $v0
int s; // $v1
int c; // $a3
} // line 119, address 0x57860
} // line 167, address 0x57b74
/*
* Offset 0x57B74
* D:\driver2\game\C\JOB_FX.C (line 110)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitExObjects()
{ // line 2, address 0x57b74
int i; // $v1
} // line 11, address 0x57bb8
/*
* Offset 0x57BB8
* D:\driver2\game\C\JOB_FX.C (line 232)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ DrawAllExplosions()
{ // line 2, address 0x57bb8
int i; // $s1
{ // line 8, address 0x57bfc
int hscale; // $v1
int rscale; // $a0
} // line 12, address 0x57c28
} // line 14, address 0x57c58
/*
* Offset 0xE70A0
* D:\driver2\game\C\LEADAI.C (line 205)
* Stack frame base $sp, length 0
*/
int /*$ra*/ leadRand()
{
}

500
src/C/leadai.c Normal file
View File

@ -0,0 +1,500 @@
// LEAD.BIN code...
#include "../decomp_defs.h"
/*
* Offset 0xE7128
* D:\driver2\game\C\LEADAI.C (line 278)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitLead(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0xe7128
{ // line 41, address 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, address 0xe7310
} // line 100, address 0xe73e8
/*
* Offset 0xE73E8
* D:\driver2\game\C\LEADAI.C (line 382)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ LeadUpdateState(struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0xe73e8
int dif; // $t0
int avel; // $s1
{ // line 17, address 0xe7498
struct VECTOR tmpStart; // stack address -48
} // line 30, address 0xe74ec
{ // line 124, address 0xe7768
int dist; // $t1
} // line 153, address 0xe792c
{ // line 160, address 0xe7938
struct VECTOR pos; // stack address -32
} // line 175, address 0xe7980
} // line 182, address 0xe7980
/*
* Offset 0xE7994
* D:\driver2\game\C\LEADAI.C (line 566)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
unsigned long /*$ra*/ LeadPadResponse(struct _CAR_DATA *cp /*$t0*/)
{ // line 1, address 0xe7994
int dif; // $t2
int avel; // $t1
unsigned long t0; // $s0
{ // line 34, address 0xe7a4c
} // line 60, address 0xe7b18
{ // line 95, address 0xe7bc8
int deltaVel; // $a1
int deltaAVel; // $a3
int deltaPos; // $a0
int deltaTh; // $t2
int steerDelta; // $a0
} // line 122, address 0xe7d50
{ // line 128, address 0xe7d58
int diff; // $a0
} // line 141, address 0xe7dd4
} // line 149, address 0xe7de8
/*
* Offset 0xE7DE8
* D:\driver2\game\C\LEADAI.C (line 718)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ FakeMotion(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0xe7de8
{ // line 6, address 0xe7e40
struct DRIVER2_STRAIGHT *straight; // $t1
static int d; // address 0x0
static int toGo; // address 0x4
static int angle; // address 0x8
static int s; // address 0xc
static int c; // address 0x10
int dx; // $a2
int dz; // $t3
int nextJunction; // $t0
{ // line 39, address 0xe7fa4
struct DRIVER2_JUNCTION *junction; // $s0
} // line 39, address 0xe7fa4
} // line 60, address 0xe8010
{ // line 63, address 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, address 0xe8104
struct DRIVER2_JUNCTION *junction; // $s0
} // line 95, address 0xe8104
{ // line 130, address 0xe81f0
struct DRIVER2_JUNCTION *junction; // $s0
} // line 130, address 0xe81f0
} // line 156, address 0xe82e0
{ // line 159, address 0xe82e0
struct DRIVER2_JUNCTION *junction; // $s0
} // line 167, address 0xe8338
} // line 170, address 0xe8338
/*
* Offset 0xE834C
* D:\driver2\game\C\LEADAI.C (line 932)
* Stack frame base $sp, length 0
*/
void /*$ra*/ PosToIndex(int *normal /*$t1*/, int *tangent /*$t4*/, int intention /*$a2*/, struct _CAR_DATA *cp /*$a3*/)
{ // line 1, address 0xe834c
{ // line 18, address 0xe8398
int dist; // $a1
} // line 26, address 0xe8420
{ // line 38, address 0xe84b0
int w; // $t2
int w80; // $t0
int t; // $a1
int t80; // $a3
{ // line 47, address 0xe85f0
int temp; // $v1
} // line 47, address 0xe85f0
{ // line 54, address 0xe8614
int temp; // $a0
} // line 56, address 0xe8614
{ // line 66, address 0xe865c
} // line 70, address 0xe8690
} // line 113, address 0xe86b4
} // line 116, address 0xe86b4
/*
* Offset 0xE86BC
* D:\driver2\game\C\LEADAI.C (line 1053)
* Stack frame base $sp, length 128
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ BlockToMap(struct MAP_DATA *data /*$s3*/)
{ // line 1, address 0xe86bc
static int carLength; // address 0x14
static int carWidth; // address 0x18
static int length; // address 0x14
static int width; // address 0x18
static int left; // address 0x1c
static int right; // address 0x20
static int ldist; // address 0x24
static int rdist; // address 0x28
static struct MAP_DATA newdata; // address 0x30
{ // line 21, address 0xe873c
int dx; // $t4
int dz; // $t3
int v; // $v1
int tangent; // $s0
int normal; // $s1
} // line 108, address 0xe8ab0
{ // line 113, address 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, address 0xe8e48
{ // line 218, address 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, address 0xe8f7c
int corners[4][3]; // stack address -112
int diff; // $v0
int overlap; // $s1
int quad1; // $a1
int quad2; // $v1
{ // line 297, address 0xe9184
int temp; // $v1
} // line 301, address 0xe91b0
{ // line 310, address 0xe921c
int vx; // $a1
int vz; // $t0
int theta; // $v0
} // line 328, address 0xe9324
} // line 329, address 0xe9324
{ // line 334, address 0xe9350
int temp; // $a0
} // line 354, address 0xe93f0
} // line 358, address 0xe93f0
{ // line 372, address 0xe9424
int *nearest; // $s2
int *furthest; // $s4
int *ndist; // $s1
int *fdist; // $s0
{ // line 390, address 0xe94a4
int temp; // stack address -64
int tdist; // stack address -60
} // line 414, address 0xe9560
} // line 415, address 0xe9560
{ // line 429, address 0xe95a0
int locall; // stack address -56
int localr; // stack address -48
int localld; // stack address -52
int localrd; // stack address -44
{ // line 439, address 0xe9614
int i; // $a2
} // line 446, address 0xe9664
{ // line 446, address 0xe9664
int i; // $a0
} // line 459, address 0xe96ec
} // line 460, address 0xe96ec
{ // line 469, address 0xe9734
int tangent; // $a2
int i; // $a1
} // line 480, address 0xe97b0
{ // line 493, address 0xe97b0
int dtan; // $a3
int tangent; // $a2
int i; // $a1
} // line 505, address 0xe9874
} // line 507, address 0xe9874
/*
* Offset 0xE98A4
* D:\driver2\game\C\LEADAI.C (line 1563)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0xe98a4
int dx; // $s1
int dz; // $s2
{ // line 14, address 0xe9938
int tangent; // stack address -44
int normal; // stack address -48
} // line 28, address 0xe99f4
{ // line 33, address 0xe99f4
struct DRIVER2_CURVE *curve; // $s0
int tangent; // stack address -36
int normal; // stack address -40
} // line 59, address 0xe9b20
{ // line 65, address 0xe9b20
int tangent; // stack address -28
int normal; // stack address -32
} // line 79, address 0xe9b94
} // line 87, address 0xe9bb8
/*
* Offset 0xE9BB8
* D:\driver2\game\C\LEADAI.C (line 1657)
* Stack frame base $sp, length 368
* Saved registers at address -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, address 0xe9bb8
int sindex; // $t0
int i; // $s0
int di; // $a2
struct _CAR_DATA *lcp; // $s0
int laneAvoid; // stack address -56
{ // line 23, address 0xe9c4c
int cell_x; // $s4
int x1; // $a0
{ // line 36, address 0xe9cb0
int cell_z; // $s0
int z1; // $s1
{ // line 43, address 0xe9cfc
int cbrx; // $a3
int cbrz; // $a2
int cbr; // $a0
{ // line 57, address 0xe9d94
struct CELL_OBJECT *cop; // $s1
struct CELL_ITERATOR ci; // stack address -344
{ // line 64, address 0xe9db0
struct COLLISION_PACKET *collide; // $s0
struct MODEL *model; // $a0
int num_cb; // $a0
int box_loop; // $s2
{ // line 82, address 0xe9e4c
struct MATRIX *mat; // $a1
struct VECTOR address; // stack address -320
struct VECTOR vel; // stack address -304
struct VECTOR length; // stack address -288
struct MAP_DATA data; // stack address -272
{ // line 96, address 0xe9ef8
int sb; // $t0
int cb; // $a1
int theta; // $v1
int xsize; // $a0
int zsize; // $a3
} // line 110, address 0xe9fd8
} // line 118, address 0xe9fd8
} // line 138, address 0xea068
} // line 140, address 0xea088
} // line 141, address 0xea088
} // line 142, address 0xea098
} // line 143, address 0xea0ac
{ // line 157, address 0xea0cc
struct SVECTOR *colBox; // $a3
struct VECTOR pos; // stack address -344
struct VECTOR vel; // stack address -328
struct VECTOR length; // stack address -312
struct MAP_DATA data; // stack address -296
} // line 188, address 0xea260
{ // line 203, address 0xea2f4
int left; // $a3
int right; // $a2
} // line 232, address 0xea3d8
{ // line 247, address 0xea410
int smallest; // $s1
} // line 266, address 0xea4e0
{ // line 274, address 0xea4ec
int tmpMap[41]; // stack address -240
{ // line 280, address 0xea528
int count; // $t0
int j; // $a1
} // line 287, address 0xea594
} // line 289, address 0xea5c4
{ // line 349, address 0xea8ac
int i; // stack address -68
int penalty; // $a2
int left; // stack address -72
int right; // stack address -64
int centre; // stack address -60
} // line 389, address 0xeaaa0
{ // line 412, address 0xead80
int biggest; // $a3
{ // line 433, address 0xeaeac
} // line 433, address 0xeaeac
} // line 442, address 0xeaee0
{ // line 446, address 0xeaee0
int biggest; // $a1
} // line 456, address 0xeaf4c
{ // line 477, address 0xeaffc
int smallForward; // $a1
int smallBack; // $v0
} // line 494, address 0xeb060
{ // line 569, address 0xeb0c4
struct _CAR_DATA *cp; // $s3
int sindex; // $a0
int intention; // stack address 8
} // line 569, address 0xeb1cc
} // line 582, address 0xeb1cc
/*
* Offset 0xEB1FC
* D:\driver2\game\C\LEADAI.C (line 2242)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ CheckCurrentRoad(struct _CAR_DATA *cp /*$s3*/)
{ // line 1, address 0xeb1fc
static int heading; // address 0x1c
int cr; // $s5
static int jdist; // address 0x20
static int nextJunction; // address 0x50
static struct VECTOR basePosition; // address 0x60
int checkNext; // $s6
{ // line 36, address 0xeb300
struct DRIVER2_STRAIGHT *straight; // $t3
static int d; // address 0x70
static int toGo; // address 0x74
static int angle; // address 0x78
static int s; // address 0x7c
static int c; // address 0x80
int dx; // $t5
int dz; // $t6
} // line 77, address 0xeb578
{ // line 86, address 0xeb5c4
struct DRIVER2_CURVE *curve; // $s2
static int angle; // address 0x84
static int radius; // address 0x88
static int dx; // address 0x8c
static int dz; // address 0x90
static int fixedThresh; // address 0x94
} // line 144, address 0xeb8f8
{ // line 173, address 0xeb974
static int diff; // address 0x98
{ // line 178, address 0xeb98c
struct DRIVER2_JUNCTION *junction; // $s0
} // line 186, address 0xeb9d4
{ // line 198, address 0xeba14
struct DRIVER2_STRAIGHT *straight; // $v1
} // line 204, address 0xeba5c
{ // line 207, address 0xeba5c
struct DRIVER2_CURVE *curve; // $v1
static int dx; // address 0x9c
static int dz; // address 0xa0
} // line 218, address 0xebae8
{ // line 233, address 0xebb2c
struct DRIVER2_STRAIGHT *straight; // $t1
static int dx; // address 0xa4
static int dz; // address 0xa8
static int dist; // address 0xac
static int offx; // address 0xb0
static int offz; // address 0xb4
} // line 233, address 0xebb2c
{ // line 262, address 0xebc5c
struct DRIVER2_CURVE *curve; // $s4
static int angle; // address 0xb8
int radius; // $s2
static int dx; // address 0xbc
static int dz; // address 0xc0
static int basex; // address 0xc4
static int basez; // address 0xc8
static int dist; // address 0xcc
static int offx; // address 0xd0
static int offz; // address 0xd4
} // line 302, address 0xebe44
} // line 352, address 0xebfd0
{ // line 387, address 0xec158
} // line 388, address 0xec158
} // line 399, address 0xec194
/*
* Offset 0xEC1C4
* D:\driver2\game\C\LEADAI.C (line 2644)
* Stack frame base $sp, length 40
* Saved registers at address -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, address 0xec1c4
{ // line 13, address 0xec1fc
static int dx; // address 0xd8
static int dz; // address 0xdc
} // line 24, address 0xec278
{ // line 31, address 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, address 0xec33c
{ // line 76, address 0xec444
struct DRIVER2_CURVE *curve; // $s0
int angle; // $a1
int radius; // $a2
} // line 110, address 0xec5c4
} // line 116, address 0xec5c4
/*
* Offset 0xEC5E4
* D:\driver2\game\C\LEADAI.C (line 2763)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SelectExit(struct _CAR_DATA *cp /*$s3*/, struct DRIVER2_JUNCTION *junction /*$a3*/)
{ // line 1, address 0xec5e4
int onward; // $s1
int numExits; // $s2
int el[4][2]; // stack address -56
int tmp; // $a1
int i; // $a2
int total; // $s0
{ // line 18, address 0xec6f4
} // line 25, address 0xec71c
{ // line 29, address 0xec79c
} // line 36, address 0xec7c8
{ // line 40, address 0xec844
} // line 47, address 0xec870
} // line 80, address 0xec99c
/*
* Offset 0xEC99C
* D:\driver2\game\C\LEADAI.C (line 2848)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
unsigned long /*$ra*/ FreeRoamer(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0xec99c
{ // line 117, address 0xeca4c
struct _CAR_DATA *pCar; // $v0
{ // line 117, address 0xeca4c
int seed; // $a0
{ // line 117, address 0xeca4c
int i; // $s0
} // line 118, address 0xecb04
} // line 118, address 0xecb04
} // line 119, address 0xecb04
} // line 123, address 0xecb28
/*
* Offset 0xECB28
* D:\driver2\game\C\LEADAI.C (line 2993)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
unsigned long /*$ra*/ hypot(long x /*$s1*/, long y /*$a1*/)
{ // line 1, address 0xecb28
{ // line 4, address 0xecb5c
long t; // $v0
} // line 4, address 0xecb64
{ // line 8, address 0xecbb4
} // line 13, address 0xecbe8
} // line 14, address 0xecbe8

86
src/C/loadsave.c Normal file
View File

@ -0,0 +1,86 @@
#include "../decomp_defs.h"
/*
* Offset 0x57C58
* D:\driver2\game\C\LOADSAVE.C (line 109)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ SaveConfigData(char *buffer /*$a0*/)
{ // line 1, address 0x57c58
struct CONFIG_SAVE_HEADER *header; // $s0
int i; // $t0
} // line 29, address 0x57e58
/*
* Offset 0x57E58
* D:\driver2\game\C\LOADSAVE.C (line 140)
* Stack frame base $sp, length 0
*/
int /*$ra*/ LoadConfigData(char *buffer /*$a0*/)
{ // line 1, address 0x57e58
struct CONFIG_SAVE_HEADER *header; // $t3
int i; // $t4
} // line 28, address 0x5803c
/*
* Offset 0x5803C
* D:\driver2\game\C\LOADSAVE.C (line 37)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ CalcReplayDataSize()
{ // line 2, address 0x5803c
} // line 9, address 0x5805c
/*
* Offset 0x5805C
* D:\driver2\game\C\LOADSAVE.C (line 48)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ SaveReplayData(char *buffer /*$a0*/)
{ // line 2, address 0x5805c
} // line 6, address 0x5807c
/*
* Offset 0x5807C
* D:\driver2\game\C\LOADSAVE.C (line 56)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ LoadReplayData(char *buffer /*$a0*/)
{
}
/*
* Offset 0x5809C
* D:\driver2\game\C\LOADSAVE.C (line 62)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CalcGameDataSize()
{
}
/*
* Offset 0x580A4
* D:\driver2\game\C\LOADSAVE.C (line 69)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ SaveGameData(char *buffer /*$s0*/)
{ // line 1, address 0x580a4
} // line 14, address 0x58134
/*
* Offset 0x58134
* D:\driver2\game\C\LOADSAVE.C (line 85)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ LoadGameData(char *buffer /*$a0*/)
{ // line 1, address 0x58134
struct GAME_SAVE_HEADER *header; // $a0
} // line 14, address 0x581cc
/*
* Offset 0x581CC
* D:\driver2\game\C\LOADSAVE.C (line 102)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CalcConfigDataSize()
{
}

94
src/C/loadview.c Normal file
View File

@ -0,0 +1,94 @@
#include "../decomp_defs.h"
/*
* Offset 0x581D4
* D:\driver2\game\C\LOADVIEW.C (line 200)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ShowLoading()
{ // line 2, address 0x581d4
struct POLY_G4 poly; // stack address -56
int col; // $s0
} // line 36, address 0x58300
/*
* Offset 0x58314
* D:\driver2\game\C\LOADVIEW.C (line 268)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ FadeGameScreen(int flag /*$t0*/, int speed /*$t1*/)
{ // line 1, address 0x58314
static struct POLY_F4 poly; // address 0x0
static struct POLY_FT4 p; // address 0x20
int do_fade; // $v0
{ // line 23, address 0x58354
int val; // $a3
} // line 42, address 0x58430
} // line 47, address 0x5845c
/*
* Offset 0x5845C
* D:\driver2\game\C\LOADVIEW.C (line 327)
* Stack frame base $sp, length 288
* Saved registers at address -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, address 0x5845c
int fcount; // $s0
int j; // $s2
int done; // $fp
struct RECT dest; // stack address -264
struct SPRT prims[4]; // stack address -256
struct POLY_FT3 nulls[4]; // stack address -176
int fade; // $s5
int fade_step; // stack address -48
} // line 142, address 0x587fc
/*
* Offset 0x587FC
* D:\driver2\game\C\LOADVIEW.C (line 527)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupFadePolys()
{ // line 3, address 0x587fc
int i; // $a1
} // line 22, address 0x5888c
/*
* Offset 0x5888C
* D:\driver2\game\C\LOADVIEW.C (line 556)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DrawFadePoly()
{ // line 2, address 0x5888c
struct POLY_G4 *fl_g4; // $a2
} // line 21, address 0x58a18
/*
* Offset 0x58A18
* D:\driver2\game\C\LOADVIEW.C (line 248)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupScreenFade(int start /*$a0*/, int end /*$a1*/, int speed /*$a2*/)
{
}
/*
* Offset 0x58A38
* D:\driver2\game\C\LOADVIEW.C (line 482)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ CloseShutters(int speed /*$s5*/, int width /*$s1*/, int height /*$s4*/)
{ // line 1, address 0x58a38
struct POLY_F4 poly[2]; // stack address -80
int h; // $s0
int done; // $s2
} // line 31, address 0x58b70
/*
* Offset 0x58B70
* D:\driver2\game\C\LOADVIEW.C (line 585)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DisplayMissionTitle()
{ // line 2, address 0x58b70
{ // line 17, address 0x58bf0
} // line 21, address 0x58c20
} // line 37, address 0x58c70

262
src/C/map.c Normal file
View File

@ -0,0 +1,262 @@
#include "../decomp_defs.h"
/*
* Offset 0x5C88C
* D:\driver2\game\C\MAP.C (line 438)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ CheckUnpackNewRegions()
{ // line 2, address 0x5c88c
struct AREA_LOAD_INFO regions_to_unpack[3]; // stack address -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 address -80
unsigned short sortorder[4]; // stack address -48
int force_load_boundary; // $a0
{ // line 101, address 0x5ca5c
int region_to_unpack; // $s0
struct Spool *spoolptr; // $a1
{ // line 121, address 0x5cadc
} // line 141, address 0x5cb68
} // line 142, address 0x5cb68
{ // line 146, address 0x5cb90
} // line 156, address 0x5cbfc
} // line 160, address 0x5cc68
/*
* Offset 0x5CC68
* D:\driver2\game\C\MAP.C (line 612)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ControlMap()
{ // line 2, address 0x5cc68
int x; // $a2
int z; // $a1
{ // line 27, address 0x5cd4c
} // line 28, address 0x5cd54
{ // line 36, address 0x5cd78
} // line 37, address 0x5cd88
} // line 42, address 0x5cde8
/*
* Offset 0x5CDE8
* D:\driver2\game\C\MAP.C (line 677)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitMap()
{ // line 2, address 0x5cde8
int i; // $s0
int tpage; // $v0
char result[8]; // stack address -24
{ // line 30, address 0x5ce98
{ // line 39, address 0x5cef0
int region; // $a3
int barrel_region; // $a1
struct Spool *spoolptr; // $v1
{ // line 49, address 0x5cf5c
} // line 55, address 0x5cf88
} // line 56, address 0x5cf88
} // line 65, address 0x5cff8
{ // line 1, address 0x5cff8
} // line 1, address 0x5d010
} // line 67, address 0x5d010
/*
* Offset 0x5D010
* D:\driver2\game\C\MAP.C (line 824)
* Stack frame base $sp, length 40
* Saved registers at address -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, address 0x5d010
char *decodeBuf; // $s1
{ // line 1, address 0x5d010
int pixelIndex; // $t0
int i; // $a0
int ni; // $a3
//0x8EC spod
{ // line 11, address 0x5d05c
} // line 11, address 0x5d05c
{ // line 18, address 0x5d0a4
int symIndex; // $a2
int sym; // $a0
{ // line 1, address 0x5d110
unsigned char *pt; // $v0
} // line 1, address 0x5d110
{ // line 1, address 0x5d124
unsigned char *pt; // $v0
} // line 1, address 0x5d124
} // line 45, address 0x5d16c
} // line 48, address 0x5d178
{ // line 49, address 0x5d178
int i; // $a2
int j; // $v1
int sz; // $a3
char *op; // $a1
} // line 80, address 0x5d24c
{ // line 82, address 0x5d24c
int i; // $v1
} // line 87, address 0x5d28c
} // line 89, address 0x5d28c
/*
* Offset 0x5D28C
* D:\driver2\game\C\MAP.C (line 928)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ GetPVSRegionCell2(int source_region /*$a0*/, int region /*$a1*/, int cell /*$t2*/, char *output /*$a3*/)
{ // line 1, address 0x5d28c
char *bp; // $a2
char *tbp; // $a1
int j; // $v1
unsigned short length; // $t0
{ // line 17, address 0x5d304
unsigned char *pt; // $a0
} // line 17, address 0x5d304
{ // line 17, address 0x5d304
} // line 17, address 0x5d304
{ // line 1, address 0x5d394
char *output; // $a0
{ // line 1, address 0x5d394
int k; // $v1
} // line 1, address 0x5d3c4
} // line 1, address 0x5d3c4
} // line 35, address 0x5d3c4
/*
* Offset 0x5D3D4
* D:\driver2\game\C\MAP.C (line 311)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitCellData()
{ // line 2, address 0x5d3d4
char *alloclist; // $a2
int loop; // $v1
} // line 49, address 0x5d474
/*
* Offset 0x5D474
* D:\driver2\game\C\MAP.C (line 289)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
struct MODEL * /*$ra*/ FindModelPtrWithName(char *name /*$s4*/)
{ // line 1, address 0x5d474
int dummy; // stack address -32
{ // line 1, address 0x5d474
char *name; // $s4
int *num; // $s2
{ // line 1, address 0x5d474
int count; // $s1
char *temp; // $s0
} // line 1, address 0x5d50c
} // line 1, address 0x5d50c
} // line 4, address 0x5d52c
/*
* Offset 0x5D52C
* D:\driver2\game\C\MAP.C (line 295)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ FindModelIdxWithName(char *name /*$s3*/)
{ // line 1, address 0x5d52c
int i; // stack address -32
{ // line 1, address 0x5d52c
char *name; // $s3
int *num; // $s2
{ // line 1, address 0x5d52c
int count; // $s1
char *temp; // $s0
} // line 1, address 0x5d5a8
} // line 1, address 0x5d5a8
} // line 5, address 0x5d5c8
/*
* Offset 0x5D5C8
* D:\driver2\game\C\MAP.C (line 400)
* Stack frame base $sp, length 0
*/
int /*$ra*/ PositionVisible(struct VECTOR *pos /*$a0*/)
{ // line 1, address 0x5d5c8
int dx; // $a1
int dz; // $a0
int cellx; // $v1
int cellz; // $v0
} // line 20, address 0x5d684
/*
* Offset 0x5D684
* D:\driver2\game\C\MAP.C (line 378)
* Stack frame base $sp, length 0
*/
int /*$ra*/ newPositionVisible(struct VECTOR *pos /*$a0*/, char *pvs /*$a1*/, int ccx /*$a2*/, int ccz /*$a3*/)
{ // line 1, address 0x5d684
int dx; // $a2
int dz; // $a0
int cellx; // $v1
int cellz; // $v0
} // line 20, address 0x5d72c
/*
* Offset 0x5D72C
* D:\driver2\game\C\MAP.C (line 252)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessRoadsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{
}
/*
* Offset 0x5D734
* D:\driver2\game\C\MAP.C (line 247)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessJunctionsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{
}
/*
* Offset 0x5D73C
* D:\driver2\game\C\MAP.C (line 253)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessRoadBoundsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{
}
/*
* Offset 0x5D744
* D:\driver2\game\C\MAP.C (line 254)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessJuncBoundsLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{
}
/*
* Offset 0x5D74C
* D:\driver2\game\C\MAP.C (line 756)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ GetVisSetAtPosition(struct VECTOR *pos /*$a0*/, char *tgt /*$t3*/, int *ccx /*$a1*/, int *ccz /*$a3*/)
{ // line 1, address 0x5d74c
int x; // $t2
int z; // $t1
int cx; // $t0
int cz; // $a2
int rx; // $a3
int rz; // $a0
{ // line 11, address 0x5d7d4
int barrel_region_x; // $v0
int barrel_region_z; // $a0
} // line 22, address 0x5d824
} // line 23, address 0x5d824
/*
* Offset 0x5D824
* D:\driver2\game\C\MAP.C (line 237)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ NewProcessRoadMapLump(struct ROAD_MAP_LUMP_DATA *pRoadMapLumpData /*$s0*/, char *pLumpFile /*$s1*/)
{ // line 1, address 0x5d824
} // line 6, address 0x5d87c

222
src/C/mc_snd.c Normal file
View File

@ -0,0 +1,222 @@
#include "../decomp_defs.h"
char missionstarts[42] = {
0xFF, 0xFF, 0, 2, 4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
6, 8, 0xFF, 9, 0xFF, 0xC, 0xD, 0xFF, 0xE, 0xFF, 0x13,
0x14, 0xFF, 0x15, 0x18, 0x1A, 0xFF, 0x1C, 0xFF, 0x1E,
0x21, 0xFF, 0x25, 0x27, 0xFF, 0x29, 0xFF, 0xFF, 0xFF,
0x2E, 0x30, 0x31
};
io id_map[49] =
{
{0, 0},
{0, 1},
{2, 0},
{3, 1},
{4, 0},
{5, 1},
{4, 0},
{5, 1},
{11, 0},
{12, 0},
{12, 1},
{11, 2},
{14, 0},
{14, 0},
{15, 0},
{16, 1},
{16, 2},
{18, 3},
{18, 4},
{11, 0},
{11, 0},
{20, 0},
{12, 1},
{13, 2},
{21, 0},
{31, 1},
{31, 0},
{11, 1},
{23, 0},
{24, 1},
{26, 0},
{27, 1},
{28, 2},
{34, 0},
{29, 1},
{29, 2},
{20, 3},
{31, 0},
{11, 1},
{31, 0},
{33, 1},
{34, 0},
{36, 1},
{29, 2},
{29, 3},
{20, 4},
{37, 0},
{38, 1},
{39, 0},
};
xa_request xa_data[26] = {
{0x10, 0, 0, 1, 0},
{0x19, 0, 1, 2, 0},
{0x1E, 0, 2, 3, 0},
{0x26, 0, 3, 4, 0},
{0x10, 0, 4, 9, 0},
{0x82, 0, 5, 0xA, 0},
{0x5A, 0, 6, 0xD, 0},
{0x10, 0, 7, 0xE, 0},
{0x280, 1, 0, 0x12, 1},
{0x10, 1, 1, 0x16, 0},
{0x1C2, 1, 2, 0x17, 0},
{0x10, 1, 3, 0x19, 0},
{0x10, 1, 4, 0x1A, 0},
{0x14, 1, 5, 0x1B, 0},
{0x28, 1, 6, 0x1C, 0},
{0x15E, 1, 7, 0x1D, 1},
{0x10, 2, 0, 0x1D, 0},
{0x10, 2, 1, 0x1E, 0},
{0x96, 2, 2, 0x1F, 0},
{0x10, 2, 3, 0x20, 0},
{0x10, 2, 4, 0x22, 0},
{0x19, 2, 5, 0x23, 0},
{0x10, 2, 6, 0x25, 0},
{0x10, 2, 7, 0x27, 0},
{0x2EE, 3, 0, 0x21, 1},
{0, 0, 0, 0xFF, 0},
};
/*
* Offset 0x5D87C
* D:\driver2\game\C\MC_SND.C (line 88)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
char /*$ra*/ GetMissionSound(char id /*$s1*/)
{ // line 1, address 0x5d87c
char c; // $s0
char start; // $s2
char end; // $a0
char rnd; // $t1
} // line 18, address 0x5d9b8
/*
* Offset 0x5D9B8
* D:\driver2\game\C\MC_SND.C (line 187)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DoCutsceneSound()
{ // line 1, address 0x5d9b8
{ // line 4, address 0x5da04
{ // line 37, address 0x5daf0
{ // line 39, address 0x5db18
long *here; // $t0
} // line 41, address 0x5db54
} // line 42, address 0x5db54
{ // line 57, address 0x5dc04
{ // line 58, address 0x5dc14
struct _CAR_DATA *you; // $s0
} // line 61, address 0x5dc58
} // line 63, address 0x5dc84
} // line 82, address 0x5dd68
} // line 84, address 0x5dd78
/*
* Offset 0x5DD78
* D:\driver2\game\C\MC_SND.C (line 279)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ InitializeMissionSound()
{ // line 1, address 0x5dd78
int i; // $a1
} // line 29, address 0x5e088
/*
* Offset 0x5E088
* D:\driver2\game\C\MC_SND.C (line 321)
* Stack frame base $sp, length 128
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DoMissionSound()
{ // line 1, address 0x5e088
int i; // $a2
{ // line 79, address 0x5e24c
long *pos; // $s5
long *vel; // $s4
{ // line 83, address 0x5e2c4
int chan; // $s1
} // line 83, address 0x5e2c4
} // line 83, address 0x5e2c4
{ // line 154, address 0x5e3b0
struct VECTOR Q[3]; // stack address -96
struct VECTOR P; // stack address -48
} // line 157, address 0x5e478
{ // line 159, address 0x5e48c
int i; // $s0
} // line 163, address 0x5e620
{ // line 202, address 0x5e758
struct VECTOR Q[3]; // stack address -96
struct VECTOR P; // stack address -48
} // line 205, address 0x5e820
{ // line 207, address 0x5e834
int i; // $s0
} // line 211, address 0x5e9d0
{ // line 236, address 0x5eadc
long V[3]; // stack address -96
long *C; // $a1
} // line 245, address 0x5ec00
} // line 307, address 0x5ee68
/*
* Offset 0x5EE68
* D:\driver2\game\C\MC_SND.C (line 652)
* Stack frame base $sp, length 0
*/
char /*$ra*/ SilenceThisCar(int car /*$a1*/)
{
}
/*
* Offset 0x5F194
* D:\driver2\game\C\MC_SND.C (line 145)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RequestXA()
{ // line 1, address 0x5f194
} // line 12, address 0x5f21c
/*
* Offset 0x5F21C
* D:\driver2\game\C\MC_SND.C (line 164)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ HandleRequestedXA()
{ // line 2, address 0x5f21c
} // line 6, address 0x5f28c
/*
* Offset 0x5F28C
* D:\driver2\game\C\MC_SND.C (line 176)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitializeCutsceneSound(int cutscene /*$a0*/)
{ // line 1, address 0x5f28c
int i; // $a0
} // line 5, address 0x5f2c4
/*
* Offset 0x5F2C4
* D:\driver2\game\C\MC_SND.C (line 636)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetMSoundVar(int var /*$a0*/, struct VECTOR *V /*$a1*/)
{
}
/*
* Offset 0x5F2FC
* D:\driver2\game\C\MC_SND.C (line 749)
* Stack frame base $sp, length 0
*/
void /*$ra*/ AdjustPlayerCarVolume()
{
}

130
src/C/mdraw.c Normal file
View File

@ -0,0 +1,130 @@
#include "../decomp_defs.h"
/*
* Offset 0x5F364
* D:\driver2\game\C\MDRAW.C (line 58)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DrawMission()
{ // line 2, address 0x5f364
{ // line 10, address 0x5f3f8
char *string; // $s1
} // line 27, address 0x5f480
} // line 66, address 0x5f5bc
/*
* Offset 0x5F5D4
* D:\driver2\game\C\MDRAW.C (line 312)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DrawWorldTarget(struct _TARGET *target /*$s0*/)
{ // line 1, address 0x5f5d4
struct VECTOR tv; // stack address -32
int slot; // $v1
int flags; // $s1
} // line 105, address 0x5f8b8
/*
* Offset 0x5F8CC
* D:\driver2\game\C\MDRAW.C (line 419)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawMultiplayerTarget(struct _TARGET *target /*$s0*/)
{ // line 1, address 0x5f8cc
struct VECTOR tv; // stack address -40
unsigned char r; // $s3
unsigned char g; // $s2
unsigned char b; // $s1
} // line 98, address 0x5fad4
/*
* Offset 0x5FAF0
* D:\driver2\game\C\MDRAW.C (line 126)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DrawTimer(struct MR_TIMER *timer /*$s1*/)
{ // line 1, address 0x5faf0
char string[16]; // stack address -32
} // line 27, address 0x5fbd0
/*
* Offset 0x5FBE4
* D:\driver2\game\C\MDRAW.C (line 155)
* Stack frame base $sp, length 56
* Saved registers at address -8: ra
*/
void /*$ra*/ DisplayPlayerPosition()
{ // line 2, address 0x5fbe4
char string[32]; // stack address -40
} // line 6, address 0x5fc2c
/*
* Offset 0x5FC2C
* D:\driver2\game\C\MDRAW.C (line 163)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DrawMessage(int y /*$s1*/, char *string /*$s0*/)
{ // line 1, address 0x5fc2c
{ // line 4, address 0x5fc48
} // line 13, address 0x5fc90
} // line 14, address 0x5fca4
/*
* Offset 0x5FCA4
* D:\driver2\game\C\MDRAW.C (line 179)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawWorldTargets()
{ // line 2, address 0x5fca4
int i; // $s0
} // line 9, address 0x5fce4
/*
* Offset 0x5FCF4
* D:\driver2\game\C\MDRAW.C (line 190)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawOverheadTargets()
{ // line 2, address 0x5fcf4
int i; // $s0
} // line 9, address 0x5fd34
/*
* Offset 0x5FD44
* D:\driver2\game\C\MDRAW.C (line 201)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawFullscreenTargets()
{ // line 2, address 0x5fd44
int i; // $s0
} // line 9, address 0x5fd84
/*
* Offset 0x5FD94
* D:\driver2\game\C\MDRAW.C (line 212)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawMultiplayerTargets()
{ // line 2, address 0x5fd94
int i; // $s0
} // line 9, address 0x5fdd4
/*
* Offset 0x5FDE4
* D:\driver2\game\C\MDRAW.C (line 230)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawOverheadTarget(struct _TARGET *target /*$s0*/)
{ // line 1, address 0x5fde4
struct VECTOR tv; // stack address -24
} // line 39, address 0x5feec
/*
* Offset 0x5FEFC
* D:\driver2\game\C\MDRAW.C (line 271)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawFullscreenTarget(struct _TARGET *target /*$s0*/)
{ // line 1, address 0x5fefc
struct VECTOR tv; // stack address -24
} // line 39, address 0x60004

59
src/C/mgeneric.c Normal file
View File

@ -0,0 +1,59 @@
#include "../decomp_defs.h"
/*
* Offset 0x60014
* D:\driver2\game\C\MGENERIC.C (line 109)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StorePlayerPosition(struct SAVED_PLAYER_POS *data /*$a2*/)
{ // line 1, address 0x60014
unsigned short type; // $a0
} // line 39, address 0x602b0
/*
* Offset 0x602B0
* D:\driver2\game\C\MGENERIC.C (line 150)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RestorePlayerPosition(struct SAVED_PLAYER_POS *data /*$a2*/)
{ // line 1, address 0x602b0
} // line 28, address 0x60418
/*
* Offset 0x60418
* D:\driver2\game\C\MGENERIC.C (line 180)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StoreCarPosition(struct _TARGET *target /*$t1*/, struct SAVED_CAR_POS *data /*$t0*/)
{ // line 1, address 0x60418
int slot; // $v1
} // line 32, address 0x60544
/*
* Offset 0x6054C
* D:\driver2\game\C\MGENERIC.C (line 214)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RestoreCarPosition(struct SAVED_CAR_POS *data /*$a3*/)
{
}
/*
* Offset 0x607A8
* D:\driver2\game\C\MGENERIC.C (line 62)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ StoreEndData()
{ // line 2, address 0x607a8
struct _TARGET *target; // $s0
struct SAVED_CAR_POS *carpos; // $s2
int i; // $s1
} // line 22, address 0x6084c
/*
* Offset 0x6084C
* D:\driver2\game\C\MGENERIC.C (line 86)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ RestoreStartData()
{ // line 2, address 0x6084c
struct SAVED_CAR_POS *carpos; // $s0
int i; // $s1
} // line 18, address 0x608a0

453
src/C/mission.c Normal file
View File

@ -0,0 +1,453 @@
#include "../decomp_defs.h"
/*
* Offset 0x608B4
* D:\driver2\game\C\MISSION.C (line 1347)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ InitialiseMissionDefaults()
{ // line 2, address 0x608b4
int i; // $a0
} // line 88, address 0x60adc
/*
* Offset 0x60ADC
* D:\driver2\game\C\MISSION.C (line 1437)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ LoadMission(int missionnum /*$s0*/)
{ // line 1, address 0x60adc
char filename[32]; // stack address -64
unsigned long header; // stack address -32
unsigned long address; // $s0
unsigned long length; // $s1
int size; // $t1
int i; // $v0
{ // line 240, address 0x60df0
int flags; // $a1
int time; // $a2
} // line 261, address 0x60e6c
{ // line 330, address 0x60fec
struct _ROUTE_INFO *rinfo; // $s0
} // line 356, address 0x6108c
{ // line 393, address 0x61164
int num; // $v1
} // line 404, address 0x61190
} // line 442, address 0x612c0
/*
* Offset 0x612DC
* D:\driver2\game\C\MISSION.C (line 1881)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ HandleMission()
{
}
/*
* Offset 0x6150C
* D:\driver2\game\C\MISSION.C (line 1962)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ HandleTimer(struct MR_TIMER *timer /*$s0*/)
{
}
/*
* Offset 0x616EC
* D:\driver2\game\C\MISSION.C (line 2015)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ RegisterChaseHit(int car1 /*$a0*/, int car2 /*$a1*/)
{
}
/*
* Offset 0x617EC
* D:\driver2\game\C\MISSION.C (line 2140)
* Stack frame base $sp, length 720
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ Swap2Cars(int curslot /*$a3*/, int newslot /*$s1*/)
{ // line 1, address 0x617ec
struct _CAR_DATA cd; // stack address -704
struct _CAR_DATA *cp; // $s0
int ctrlNodeCurId; // $s4
int pnodeCurId; // $s5
int ctrlNodeNewId; // $t2
int pnodeNewId; // $t3
} // line 81, address 0x61cc4
/*
* Offset 0x61CC4
* D:\driver2\game\C\MISSION.C (line 2234)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ HandleMissionThreads()
{ // line 2, address 0x61cc4
struct MR_THREAD *thread; // $s0
int running; // $s1
unsigned long value; // $a1
int i; // $a0
} // line 43, address 0x61ea4
/*
* Offset 0x61EA4
* D:\driver2\game\C\MISSION.C (line 2279)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ MRCommand(struct MR_THREAD *thread /*$s1*/, unsigned long cmd /*$a1*/)
{ // line 1, address 0x61ea4
unsigned long val1; // $s0
unsigned long val2; // $s0
} // line 160, address 0x624d8
/*
* Offset 0x624D8
* D:\driver2\game\C\MISSION.C (line 2701)
* Stack frame base $sp, length 120
* Saved registers at address -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, address 0x624d8
struct VECTOR tv; // stack address -96
struct VECTOR pv; // stack address -80
int ret; // $fp
unsigned long dist; // $s6
int slot; // stack address -48
int message; // $v0
int sample; // $a0
{ // line 158, address 0x62a24
unsigned long message; // $s1
unsigned long timer; // $s0
unsigned long delay; // $s2
} // line 173, address 0x62a94
{ // line 233, address 0x62c64
int direction; // $s0
long pos[4]; // stack address -64
int *inform; // $s4
struct _CAR_DATA *cp; // $v0
} // line 239, address 0x62c64
{ // line 368, address 0x63090
long pos[4]; // stack address -64
} // line 375, address 0x630f8
{ // line 403, address 0x63204
} // line 403, address 0x63204
{ // line 434, address 0x632bc
} // line 434, address 0x632bc
{ // line 457, address 0x63380
} // line 457, address 0x63380
} // line 593, address 0x63790
/*
* Offset 0x63790
* D:\driver2\game\C\MISSION.C (line 3311)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
int /*$ra*/ MRCreateCar(struct _TARGET *target /*$s1*/)
{ // line 1, address 0x63790
long pos[4]; // stack address -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 address -48
} // line 79, address 0x63a08
/*
* Offset 0x63A08
* D:\driver2\game\C\MISSION.C (line 3398)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ PreProcessTargets()
{ // line 2, address 0x63a08
struct _TARGET *target; // $s0
int i; // $s1
} // line 52, address 0x63be0
/*
* Offset 0x63BE0
* D:\driver2\game\C\MISSION.C (line 3469)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
int /*$ra*/ HandleGameOver()
{ // line 3, address 0x63be0
{ // line 5, address 0x63c20
struct _PLAYER *lp; // $s0
struct _CAR_DATA *cp; // $a2
int i; // $s2
int playersdead; // $s3
{ // line 41, address 0x63d4c
int surfInd; // $v1
} // line 53, address 0x63de4
} // line 96, address 0x63f4c
} // line 120, address 0x63fec
/*
* Offset 0x63FEC
* D:\driver2\game\C\MISSION.C (line 3623)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetMissionComplete()
{
}
/*
* Offset 0x64210
* D:\driver2\game\C\MISSION.C (line 3716)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ActivateNextFlag()
{ // line 2, address 0x64210
int i; // $a3
int j; // $a1
} // line 23, address 0x642d0
/*
* Offset 0x642D0
* D:\driver2\game\C\MISSION.C (line 2046)
* Stack frame base $sp, length 0
*/
void /*$ra*/ PauseMissionTimer(int pause /*$a0*/)
{
}
/*
* Offset 0x64310
* D:\driver2\game\C\MISSION.C (line 2060)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetMissionMessage(char *message /*$a0*/, int priority /*$a1*/, int seconds /*$a2*/)
{ // line 1, address 0x64310
int i; // $a3
} // line 19, address 0x643a8
/*
* Offset 0x643B0
* D:\driver2\game\C\MISSION.C (line 2081)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetPlayerMessage(int player /*$a0*/, char *message /*$a1*/, int priority /*$a2*/, int seconds /*$a3*/)
{
}
/*
* Offset 0x6442C
* D:\driver2\game\C\MISSION.C (line 2094)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TargetComplete(struct _TARGET *target /*$a0*/, int player /*$a1*/)
{ // line 1, address 0x6442c
unsigned long complete; // $a0
} // line 21, address 0x64470
/*
* Offset 0x64470
* D:\driver2\game\C\MISSION.C (line 2117)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TargetActive(struct _TARGET *target /*$a0*/, int player /*$a1*/)
{ // line 1, address 0x64470
unsigned long active; // $a0
} // line 21, address 0x644b4
/*
* Offset 0x644B4
* D:\driver2\game\C\MISSION.C (line 2223)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetConfusedCar(int slot /*$a0*/)
{
}
/*
* Offset 0x64500
* D:\driver2\game\C\MISSION.C (line 2441)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ MROperator(struct MR_THREAD *thread /*$s3*/, unsigned long op /*$s0*/)
{ // line 1, address 0x64500
int result; // $s2
long val1; // $s1
long val2; // $a1
} // line 51, address 0x64614
/*
* Offset 0x64614
* D:\driver2\game\C\MISSION.C (line 2494)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ MRFunction(struct MR_THREAD *thread /*$s0*/, unsigned long fnc /*$a1*/)
{ // line 1, address 0x64614
} // line 17, address 0x6467c
/*
* Offset 0x6467C
* D:\driver2\game\C\MISSION.C (line 2514)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MRInitialiseThread(struct MR_THREAD *thread /*$a0*/, unsigned long *pc /*$a1*/, unsigned char player /*$a2*/)
{
}
/*
* Offset 0x64698
* D:\driver2\game\C\MISSION.C (line 2526)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ MRStartThread(struct MR_THREAD *callingthread /*$t0*/, unsigned long addr /*$a1*/, unsigned char player /*$a2*/)
{ // line 1, address 0x64698
int i; // $v1
} // line 17, address 0x646e8
/*
* Offset 0x646F8
* D:\driver2\game\C\MISSION.C (line 2545)
* Stack frame base $sp, length 0
*/
int /*$ra*/ MRStopThread(struct MR_THREAD *thread /*$a0*/)
{
}
/*
* Offset 0x64704
* D:\driver2\game\C\MISSION.C (line 2551)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ MRCommitThreadGenocide()
{ // line 2, address 0x64704
int i; // $s0
} // line 6, address 0x64748
/*
* Offset 0x64748
* D:\driver2\game\C\MISSION.C (line 2560)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ MRJump(struct MR_THREAD *thread /*$a2*/, long jump /*$a1*/)
{
}
/*
* Offset 0x64794
* D:\driver2\game\C\MISSION.C (line 2575)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MRPush(struct MR_THREAD *thread /*$a0*/, long value /*$a1*/)
{
}
/*
* Offset 0x647AC
* D:\driver2\game\C\MISSION.C (line 2585)
* Stack frame base $sp, length 0
*/
long /*$ra*/ MRPop(struct MR_THREAD *thread /*$a0*/)
{ // line 1, address 0x647ac
} // line 12, address 0x647c8
/*
* Offset 0x647C8
* D:\driver2\game\C\MISSION.C (line 2600)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
long /*$ra*/ MRGetParam(struct MR_THREAD *thread /*$s0*/)
{ // line 1, address 0x647c8
long value; // $a1
} // line 20, address 0x64834
/*
* Offset 0x64834
* D:\driver2\game\C\MISSION.C (line 2622)
* Stack frame base $sp, length 0
*/
long /*$ra*/ MRGetVariable(struct MR_THREAD *thread /*$a2*/, unsigned long var /*$a1*/)
{
}
/*
* Offset 0x64918
* D:\driver2\game\C\MISSION.C (line 2648)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MRSetVariable(struct MR_THREAD *thread /*$v1*/, unsigned long var /*$a1*/, long value /*$a2*/)
{
}
/*
* Offset 0x64A4C
* D:\driver2\game\C\MISSION.C (line 3296)
* Stack frame base $sp, length 0
*/
int /*$ra*/ MRRequestCar(struct _TARGET *target /*$a0*/)
{
}
/*
* Offset 0x64A8C
* D:\driver2\game\C\MISSION.C (line 3305)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ MRHandleCarRequests()
{
}
/*
* Offset 0x64AB8
* D:\driver2\game\C\MISSION.C (line 3392)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MRCancelCarRequest(struct _TARGET *target /*$a0*/)
{
}
/*
* Offset 0x64ADC
* D:\driver2\game\C\MISSION.C (line 3452)
* Stack frame base $sp, length 0
*/
int /*$ra*/ Handle321Go()
{ // line 2, address 0x64adc
} // line 15, address 0x64b38
/*
* Offset 0x64B38
* D:\driver2\game\C\MISSION.C (line 3591)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CompleteAllActiveTargets(int player /*$a0*/)
{ // line 2, address 0x64b38
int i; // $a1
int flag1; // $a3
int flag2; // $a2
} // line 30, address 0x64ba0
/*
* Offset 0x64BA0
* D:\driver2\game\C\MISSION.C (line 3684)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetMissionFailed(enum FAIL_REASON reason /*$a0*/)
{
}
/*
* Offset 0x64C40
* D:\driver2\game\C\MISSION.C (line 3704)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetMissionOver(enum PAUSEMODE mode /*$a0*/)
{
}
/*
* Offset 0x64C8C
* D:\driver2\game\C\MISSION.C (line 3760)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CalcLapTime(int player /*$a0*/, int time /*$a1*/, int lap /*$a2*/)
{ // line 1, address 0x64c8c
int i; // $a2
int ptime; // $a3
} // line 8, address 0x64cc8
/*
* Offset 0x64CC8
* D:\driver2\game\C\MISSION.C (line 3770)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetCarToBeStolen(struct _TARGET *target /*$s0*/, int player /*$s1*/)
{
}
/*
* Offset 0x64D38
* D:\driver2\game\C\MISSION.C (line 3781)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MakePhantomCarEqualPlayerCar()
{
}

47
src/C/models.c Normal file
View File

@ -0,0 +1,47 @@
#include "../decomp_defs.h"
/*
* Offset 0x64D64
* D:\driver2\game\C\MODELS.C (line 33)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessMDSLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{ // line 1, address 0x64d64
int i; // $a2
int length; // $v0
int modelamt; // $a3
char *mdsfile; // $a0
struct MODEL *model; // $a0
struct MODEL *parentmodel; // $a1
} // line 61, address 0x64ed4
/*
* Offset 0x64ED4
* D:\driver2\game\C\MODELS.C (line 212)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ ProcessCarModelLump(char *lump_ptr /*$s2*/, int lump_size /*$a1*/)
{ // line 2, address 0x64ed4
int address; // $a0
int i; // $s3
int car_model; // $a0
int specMemReq; // $s4
{ // line 19, address 0x64f18
struct MODEL *model; // $v0
int mem; // $a1
} // line 74, address 0x64ff0
} // line 136, address 0x6519c
/*
* Offset 0x6519C
* D:\driver2\game\C\MODELS.C (line 391)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
struct MODEL * /*$ra*/ GetCarModel(char *src /*$s2*/, char **dest /*$s1*/, int KeepNormals /*$s3*/)
{ // line 1, address 0x6519c
struct MODEL *model; // $s0
int length; // $a2
char *mem; // $v1
{ // line 28, address 0x65204
} // line 38, address 0x65254
} // line 41, address 0x65274

711
src/C/motion_c.c Normal file
View File

@ -0,0 +1,711 @@
#include "../decomp_defs.h"
LIMBS lRoutes[5][8] = {
{ROOT, LOWERBACK, HIPS, LHIP, LKNEE, LFOOT, LTOE, ROOT},
{HIPS, RHIP, RKNEE, RFOOT, RTOE, ROOT, ROOT, ROOT},
{LOWERBACK, JOINT_1, LSHOULDER, LELBOW, LHAND, LFINGERS, ROOT, ROOT},
{JOINT_1, RSHOULDER, RELBOW, RHAND, RFINGERS, ROOT, ROOT, ROOT},
{JOINT_1, NECK, HEAD, ROOT, ROOT, ROOT, ROOT, ROOT},
};
PED_DATA MainPed[23] =
{
{ 0, 68u, &chest1_texture, CHEST_PAL },
{ 1, 68u, &chest1_texture, CHEST_PAL },
{ 17, 36u, &chest1_texture, CHEST_PAL },
{ 6, 68u, &forearm1_texture, ARM_PAL },
{ 8, 68u, &head1_texture, NO_PAL },
{ 6, 68u, &arm1_texture, CHEST_PAL },
{ 8, 36u, &arm1_texture, CHEST_PAL },
{ 7, 68u, &forearm1_texture, ARM_PAL },
{ 3, 244u, &forearm1_texture, ARM_PAL },
{ 6, 68u, &arm1_texture, CHEST_PAL },
{ 8, 36u, &arm1_texture, CHEST_PAL },
{ 7, 68u, &forearm1_texture, ARM_PAL },
{ 3, 244u, &forearm1_texture, ARM_PAL },
{ 1, 68u, &jeans_texture, NO_PAL },
{ 6, 68u, &jeans_texture, NO_PAL },
{ 13, 100u, &jeans_texture, JEANS_PAL },
{ 11, 244u, &jeans_texture, JEANS_PAL },
{ 6, 63u, &chest1_texture, JEANS_PAL },
{ 6, 68u, &arm1_texture, NO_PAL },
{ 13, 100u, &jeans_texture, JEANS_PAL },
{ 11, 244u, &jeans_texture, JEANS_PAL },
{ 6, 63u, &chest1_texture, JEANS_PAL },
{ 2, 68u, &jeans_texture, JEANS_PAL }
};
// FIXME: could be incorrect
BONE Skel[23] =
{
{
ROOT,
NULL,
1,
{ &Skel[LOWERBACK], &Skel[HIPS], NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
LOWERBACK,
&Skel[ROOT],
3,
{ &Skel[JOINT_1], &Skel[LHIP], &Skel[RHIP] },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
JOINT_1,
&Skel[LOWERBACK],
3,
{ &Skel[NECK], &Skel[LSHOULDER], &Skel[RSHOULDER] },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[0]
},
{
NECK,
&Skel[JOINT_1],
1,
{ &Skel[HEAD], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[14]
},
{
HEAD,
&Skel[NECK],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[1]
},
{
LSHOULDER,
&Skel[JOINT_1],
1,
{ &Skel[LELBOW], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
LELBOW,
&Skel[LSHOULDER],
1,
{ &Skel[LHAND], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[8]
},
{
LHAND,
&Skel[LELBOW],
1,
{ &Skel[LFINGERS], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[9]
},
{
LFINGERS,
&Skel[LHAND],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[10]
},
{
RSHOULDER,
&Skel[JOINT_1],
1,
{ &Skel[RELBOW], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
RELBOW,
&Skel[RSHOULDER],
1,
{ &Skel[RHAND], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[2]
},
{
RHAND,
&Skel[RELBOW],
1,
{ &Skel[RFINGERS], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[3]
},
{
RFINGERS,
&Skel[RHAND],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[4]
},
{
HIPS,
&Skel[0],
0,
{ &Skel[RHIP], &Skel[LHIP], NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
LHIP,
&Skel[HIPS],
1,
{ &Skel[LKNEE], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[15]
},
{
LKNEE,
&Skel[LHIP],
1,
{ &Skel[LFOOT], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[11]
},
{
LFOOT,
&Skel[LKNEE],
1,
{ &Skel[LTOE], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[12]
},
{
LTOE,
&Skel[LFOOT],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[13]
},
{
RHIP,
&Skel[HIPS],
1,
{ &Skel[RKNEE], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
},
{
RKNEE,
&Skel[RHIP],
1,
{ &Skel[RFOOT], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[5]
},
{
RFOOT,
&Skel[RKNEE],
1,
{ &Skel[RFOOT], NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[6]
},
{
RTOE,
&Skel[RFOOT],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
&pmTannerModels[7]
},
{
JOINT,
&Skel[LOWERBACK],
0,
{ NULL, NULL, NULL },
NULL,
NULL,
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
NULL
}
};
int boneIdvals[15] = { 2, 3, 4, 6, 7, 8, 0xA, 0xB, 0xC, 0xF, 0x10, 0x11, 0x13, 0x14, 0x15 };
/*
* Offset 0x65274
* D:\driver2\game\C\MOTION_C.C (line 978)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0x65274
struct TEXTURE_DETAILS *body_texture; // $s2
int x0; // $s5
int x1; // $s6
int y0; // $fp
int y1; // stack address -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 address -44
int pal; // $v1
{ // line 125, address 0x65618
int tp; // $v1
} // line 155, address 0x656b4
} // line 231, address 0x659b4
/*
* Offset 0x659B4
* D:\driver2\game\C\MOTION_C.C (line 1289)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StoreVertexLists()
{ // line 2, address 0x659b4
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, address 0x65b40
/*
* Offset 0x65B40
* D:\driver2\game\C\MOTION_C.C (line 1355)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupTannerSkeleton()
{ // line 2, address 0x65b40
int i; // $t1
struct BONE *pBone; // $a3
char *pC; // $v0
struct SVECTOR *store; // $t4
struct SVECTOR_NOPAD *pSVNP; // $v1
} // line 58, address 0x65d40
/*
* Offset 0x65D40
* D:\driver2\game\C\MOTION_C.C (line 1421)
* Stack frame base $sp, length 152
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ newShowTanner()
{ // line 2, address 0x65d40
struct VECTOR *playerPos; // $a2
struct VECTOR *camPos; // $a1
struct VECTOR *vJPos; // $s1
struct VECTOR v; // stack address -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, address 0x66108
struct BONE *pBone; // $s0
struct VECTOR *v1; // $a2
struct VECTOR *v2; // $a1
{ // line 109, address 0x66108
struct SVECTOR *data; // $t1
long t1; // stack address -92
long t0; // stack address -96
int z2; // stack address -80
int z1; // stack address -84
int z; // stack address -88
} // line 109, address 0x6622c
} // line 109, address 0x6622c
{ // line 115, address 0x66260
struct BONE *pBone; // $s0
struct VECTOR *v1; // $a0
struct VECTOR *v2; // $a2
{ // line 115, address 0x66260
struct SVECTOR *data; // $t0
long t1; // stack address -72
long t0; // stack address -76
int z2; // stack address -60
int z1; // stack address -64
int z; // stack address -68
} // line 115, address 0x66260
} // line 115, address 0x66260
{ // line 121, address 0x66398
struct SVECTOR v1; // stack address -112
struct SVECTOR v2; // stack address -104
} // line 123, address 0x66398
{ // line 148, address 0x664f4
struct BONE *pBone; // $s0
struct VECTOR *v1; // $a2
struct VECTOR *v2; // $a1
{ // line 148, address 0x664f4
struct SVECTOR *data; // $t1
long t1; // stack address -52
long t0; // stack address -56
int z2; // stack address -40
int z1; // stack address -44
int z; // stack address -48
} // line 148, address 0x664f4
} // line 148, address 0x664f4
{ // line 154, address 0x66630
int bias; // $a3
} // line 167, address 0x6665c
} // line 178, address 0x666b0
/*
* Offset 0x666B0
* D:\driver2\game\C\MOTION_C.C (line 1606)
* Stack frame base $sp, length 1104
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ newRotateBones(struct BONE *poBone /*$a0*/)
{ // line 2, address 0x666b0
struct MATRIX mStore[32]; // stack address -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 address -64
{ // line 3, address 0x666b0
int cx; // $t2
int sx; // $a3
int cy; // $a0
int sy; // $t0
int cz; // $t3
int sz; // $t6
int stmp; // $v0
} // line 3, address 0x666b0
} // line 160, address 0x67020
/*
* Offset 0x67020
* D:\driver2\game\C\MOTION_C.C (line 1774)
* Stack frame base $sp, length 0
*/
struct SVECTOR * /*$ra*/ GetModelVertPtr(int boneId /*$a1*/, int modelType /*$a1*/)
{
}
/*
* Offset 0x67134
* D:\driver2\game\C\MOTION_C.C (line 1834)
* Stack frame base $sp, length 184
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawCiv(struct PEDESTRIAN *pPed /*$fp*/)
{ // line 1, address 0x67134
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 address -160
struct VECTOR pos1; // stack address -152
struct SVECTOR *vert1; // $a1
struct SVECTOR *vert2; // $a0
struct SVECTOR temp1; // stack address -136
struct SVECTOR temp2; // stack address -128
int cnt3; // $a2
int bHeadModel; // stack address -56
int shift; // $t0
int frame; // $a2
struct MATRIX workmatrix; // stack address -120
int j; // $s7
{ // line 74, address 0x67320
int cx; // $v1
int sx; // $a0
int cy; // $a1
int sy; // $t0
int cz; // $t3
int sz; // $t6
int stmp; // $t7
} // line 74, address 0x67320
{ // line 130, address 0x67828
struct SVECTOR sV; // stack address -88
struct SVECTOR sV2; // stack address -80
struct VECTOR v; // stack address -72
} // line 142, address 0x67864
{ // line 151, address 0x67864
struct CVECTOR cv; // stack address -88
struct VECTOR pos; // stack address -80
int phase; // $s0
} // line 164, address 0x67908
} // line 167, address 0x67908
/*
* Offset 0x67938
* D:\driver2\game\C\MOTION_C.C (line 2041)
* Stack frame base $sp, length 128
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawTanner(struct PEDESTRIAN *pPed /*$s2*/)
{ // line 1, address 0x67938
struct VECTOR v; // stack address -112
struct CVECTOR cV; // stack address -96
struct MATRIX mRotStore; // stack address -88
struct MATRIX iMatrix; // stack address -56
{ // line 1, address 0x67938
} // line 20, address 0x67a48
{ // line 26, address 0x67a48
int cx; // $a2
int sx; // $t0
int cy; // $a0
int sy; // $t2
int cz; // $t5
int sz; // $s0
int stmp; // $v1
} // line 26, address 0x67a48
} // line 72, address 0x67dac
/*
* Offset 0x67DAC
* D:\driver2\game\C\MOTION_C.C (line 2120)
* Stack frame base $sp, length 144
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ DrawCharacter(struct PEDESTRIAN *pPed /*$s1*/)
{ // line 1, address 0x67dac
struct MATRIX mRotStore; // stack address -128
struct MATRIX iMatrix; // stack address -96
struct CVECTOR cV; // stack address -64
struct VECTOR v; // stack address -56
{ // line 1, address 0x67dac
int cx; // $t0
int sx; // $a3
int cy; // $a0
int sy; // $t2
int cz; // $a2
int sz; // $t7
int stmp; // $v1
} // line 1, address 0x67dac
{ // line 55, address 0x6819c
struct CVECTOR cv; // stack address -40
struct VECTOR pos; // stack address -32
int phase; // $s0
} // line 69, address 0x68238
} // line 73, address 0x68254
/*
* Offset 0x68254
* D:\driver2\game\C\MOTION_C.C (line 2201)
* Stack frame base $sp, length 8
*/
void /*$ra*/ InitTannerShadow()
{ // line 2, address 0x68254
struct CVECTOR cV; // stack address -8
int i; // $a3
} // line 46, address 0x683c0
/*
* Offset 0x683C0
* D:\driver2\game\C\MOTION_C.C (line 2258)
* Stack frame base $sp, length 296
* Saved registers at address -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, address 0x683c0
int z; // $a1
int z0; // stack address -72
int z1; // stack address -68
int z2; // stack address -64
int z3; // stack address -60
struct SVECTOR vert[4]; // stack address -272
struct VECTOR d; // stack address -240
struct DR_ENV *pDE; // $s3
struct DRAWENV drEnv; // stack address -224
struct VECTOR cp; // stack address -128
struct SVECTOR ca; // stack address -112
struct VECTOR v1; // stack address -104
int i; // $s4
struct VECTOR myVector; // stack address -88
int avalue2; // $v0
int w; // $v1
{ // line 117, address 0x68880
} // line 117, address 0x68880
} // line 176, address 0x68b94
/*
* Offset 0x68B94
* D:\driver2\game\C\MOTION_C.C (line 2442)
* Stack frame base $sp, length 200
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ DoCivHead(struct SVECTOR *vert1 /*$s1*/, struct SVECTOR *vert2 /*$s3*/)
{ // line 1, address 0x68b94
struct VECTOR headpos; // stack address -184
struct SVECTOR final_rotation; // stack address -168
struct SVECTOR spos1; // stack address -160
struct MODEL *model; // $s5
struct MATRIX work2matrix; // stack address -152
struct MATRIX mRotStore; // stack address -120
struct VECTOR pos1; // stack address -88
int pal; // $v1
int ci; // $s6
{ // line 53, address 0x68da0
int cx; // $v1
int sx; // $a0
int cy; // $a1
int sy; // $t0
int cz; // $t3
int sz; // $t6
int stmp; // $a3
} // line 53, address 0x68da0
{ // line 65, address 0x69000
int cx; // $v1
int sx; // $t3
int cy; // $t1
int sy; // $a3
int stmp; // $v0
} // line 65, address 0x69000
{ // line 93, address 0x692dc
struct MATRIX comb; // stack address -72
} // line 95, address 0x692dc
} // line 112, address 0x69474
/*
* Offset 0x694A0
* D:\driver2\game\C\MOTION_C.C (line 2562)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x694a0
struct DVECTOR *outpoints; // $t7
short *zbuff; // $t5
struct SVECTOR *verts; // $t6
char *polys; // $s0
int cnt3; // $t1
int i; // $s1
int z0; // stack address -40
int z1; // stack address -36
int z2; // stack address -32
long *outlongs; // $s2
int z; // stack address -28
{ // line 92, address 0x6983c
} // line 101, address 0x698a8
} // line 121, address 0x698dc
/*
* Offset 0x698DC
* D:\driver2\game\C\MOTION_C.C (line 2690)
* Stack frame base $sp, length 0
*/
void /*$ra*/ wjmDraw3()
{ // line 2, address 0x698dc
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, address 0x69aa0
/*
* Offset 0x69AA0
* D:\driver2\game\C\MOTION_C.C (line 853)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ProcessMotionLump(char *lump_ptr /*$a0*/, int lump_size /*$s0*/)
{
}
/*
* Offset 0x69B20
* D:\driver2\game\C\MOTION_C.C (line 944)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupPedMotionData(struct PEDESTRIAN *pPed /*$a0*/)
{
}
/*
* Offset 0x69B40
* D:\driver2\game\C\MOTION_C.C (line 2011)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetSkelModelPointers(int type /*$a0*/)
{
}
/*
* Offset 0x69BD4
* D:\driver2\game\C\MOTION_C.C (line 955)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupPedestrian(struct PEDESTRIAN *pedptr /*$a0*/)
{
}

245
src/C/objanim.c Normal file
View File

@ -0,0 +1,245 @@
#include "../decomp_defs.h"
CYCLE_OBJECT Lev0[2] =
{
{ "REDRVR", 0, 0, 6, 10, 2, 11, 15, 2 },
{ "NAVPIR34", 0, 0, 0, 6, 0, 7, 13, 0 }
};
CYCLE_OBJECT Lev1[] = {
{ "DOOR11", 0, 0, 1, 7, 2, 8, 14, 3 } ,
};
CYCLE_OBJECT Lev2[12] =
{
{ "DTSYN01", 0, 0, 0, 3, 0, 4, 14, 0 },
{ "DTSYN02", 0, 0, 0, 15, 0, 65535, 65535, 0 },
{ "F-MTSYN2", 0, 0, 0, 3, 0, 10, 14, 0 },
{ "DTSYN03", 0, 0, 0, 3, 0, 65535, 65535, 0 },
{ "SYN-CAS1", 0, 0, 0, 3, 0, 4, 14, 0 },
{ "SYNSLOT", 0, 0, 0, 3, 0, 4, 7, 0 },
{ "ENT1B", 0, 0, 0, 15, 0, 65535, 65535, 0 },
{ "FLAMINGO", 0, 0, 0, 3, 0, 9, 12, 0 },
{ "CYCLE-01", 0, 0, 0, 5, 1, 6, 11, 1 },
{ "CYCLE-02", 0, 0, 0, 3, 3, 65535, 65535, 0 },
{ "CYCLE-03", 0, 0, 0, 6, 7, 7, 13, 7 },
{ "CYCLE-04", 0, 0, 0, 6, 15, 7, 13, 15 }
};
CYCLE_OBJECT Lev3[] = {
{ "FWING11", 0, 0, 1, 7, 2, 8, 14, 3 }
};
CYCLE_OBJECT* Lev_CycleObjPtrs[] = {
Lev0,
Lev1,
Lev2,
Lev3
};
int Num_LevCycleObjs[] = { 2, 0, 12, 0 };
ANIMATED_OBJECT Lev0AnimObjects[9] =
{
{ 0, 0, "TLIGHT01", '\0' },
{ 1, 0, "TLIGHT02", '\0' },
{ 2, 0, "SLIGHT01", '\x01' },
{ 3, 0, "LOW_SLIGHT01", '\x01' },
{ 4, 0, "DLIGHT01", '\x01' },
{ 5, 0, "STRUT", '\0' },
{ 6, 0, "NPLIGHT", '\0' },
{ 7, 0, "TLIGHT01_LOW", '\0' },
{ 8, 0, "TLIGHT02_LOW", '\0' }
};
ANIMATED_OBJECT Lev1AnimObjects[5] =
{
{ 0, 0, "TLIGHT1", '\0' },
{ 1, 0, "TLIGHT2", '\0' },
{ 2, 0, "SLIGHT1", '\x01' },
{ 3, 0, "SLIGHT2", '\x01' },
{ 4, 0, "DLIGHT1", '\x01' }
};
ANIMATED_OBJECT Lev2AnimObjects[5] =
{
{ 0, 0, "TLIGHT01", '\0' },
{ 1, 0, "TLIGHT02", '\0' },
{ 2, 0, "SLIGHT01", '\x01' },
{ 3, 0, "DLIGHT01", '\x01' },
{ 4, 0, "SLIGHT02", '\x01' }
};
ANIMATED_OBJECT Lev3AnimObjects[4] =
{
{ 0, 0, "TLIGHT01", '\0' },
{ 1, 0, "TLIGHT02", '\0' },
{ 2, 0, "SLIGHT01", '\x01' },
{ 3, 0, "MLIGHT01", '\x01' }
};
ANIMATED_OBJECT* Level_AnimatingObjectPtrs[] = { Lev0AnimObjects, Lev1AnimObjects, Lev2AnimObjects, Lev3AnimObjects };
VECTOR gMissionDoorPosition = { 108000, 0, 4294575046, 0 };
SMASHABLE_OBJECT smashable[] =
{
{ 0, "CONE_TASTIC", 5, 0, 800 },
{ 0, "BOX_TASTIC", 4, 4294961296, 4096 },
{ 0, "BOX2_TASTIC", 4, 4294961296, 4096 },
{ 0, "BOX3_TASTIC", 4, 4294961296, 4096 },
{ 0, "CONE1_TASTIC", 5, 0, 800 },
{ 0, "CONE2_TASTIC", 5, 0, 800 },
{ 0, "BIN_TASTIC", 7, 4294960796, 3200 },
{ 0, "BARRIER_TASTIC", 7, 4294960796, 3200 },
{ 0, "BARREL_TASTIC", 6, 4294963996, 2400 },
{ 0, "BARREL1_TASTIC", 6, 4294963996, 2400 },
{ 0, "BARREL2_TASTIC", 6, 4294963996, 2400 },
{ 0, "TABLE_TASTIC", 7, 4294960796, 3200 },
{ 0, "BENCH_TASTIC", 7, 4294960796, 3200 },
{ 0, "CHAIR_TASTIC", 7, 4294960796, 3200 },
{ 0, "CHAIR1_TASTIC", 7, 4294960796, 3200 },
{ 0, "CHAIR2_TASTIC", 7, 4294960796, 3200 },
{ 0, "UMBRELLA_TASTIC", 7, 4294960796, 3200 },
{ 0, "UMBRELLA1_TASTIC", 7, 4294960796, 3200 },
{ 0, "PHONE_TASTIC", 6, 4294963996, 3600 },
{ 0, "PHONE1_TASTIC", 6, 4294963996, 3600 },
{ 0, "SIGN00_TASTIC", 7, 4294960796, 3200 },
{ 0, "NEWS_TASTIC", 7, 4294960796, 3200 },
{ 0, "PARKING_TASTIC", 6, 4294959796, 4096 },
{ 0, "DRINKS_TASTIC", 6, 4294963996, 3600 },
{ 0, "FENCE_TASTIC", 7, 4294960796, 3200 },
{ 0, "FENCE00_TASTIC", 7, 4294960796, 3200 },
{ 0, "FENCE01_TASTIC", 7, 4294960796, 3200 },
{ 0, "FENCE02_TASTIC", 7, 4294960796, 3200 },
{ 0, "FENCE03_TASTIC", 7, 4294960796, 3200 },
{ 0, "FENCE04_TASTIC", 7, 4294960796, 3200 },
{ 0, "CONE_TASTIC1", 5, 0, 800 },
{ 0, "CONE_TASTIC2", 5, 0, 800 },
{ 0, "CONE_TASTIC3", 5, 0, 800 },
{ 0, "CONE_TASTIC4", 5, 0, 800 },
{ 0, "TRAININGCONES1", 5, 0, 800 },
{ 0, "TRAININGCONES2", 5, 0, 800 },
{ 0, "TRAININGCONES3", 5, 0, 800 },
{ 0, 0, 0, 0, 0 }
};
int Level_NumAnimatedObjects[] = { 9, 5, 5, 4, 0, 6, 0, 0 };
char* texture_pages = 0; // some big empty array
char* texture_cluts = 0; // some big empty array
/*
* Offset 0x139E8
* D:\driver2\game\C\OBJANIM.C (line 362)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ ColourCycle()
{ // line 3, address 0x139e8
int i; // $s5
struct CYCLE_OBJECT *cyc; // $s2
struct RECT vram; // stack address -56
unsigned short *bufaddr; // $s0
unsigned short length; // $v0
unsigned short temp; // $s1
{ // line 26, address 0x13ab4
int tnum; // $a1
{ // line 39, address 0x13b0c
} // line 48, address 0x13b54
{ // line 53, address 0x13b80
} // line 62, address 0x13bc8
} // line 81, address 0x13c88
} // line 88, address 0x13ce4
/*
* Offset 0x13D14
* D:\driver2\game\C\OBJANIM.C (line 481)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitAnimatingObjects()
{ // line 2, address 0x13d14
struct ANIMATED_OBJECT *aop; // $s1
int loop; // $s0
int count1; // $a0
int count; // $a2
struct MODEL *modelPtr; // $a0
} // line 47, address 0x13e60
/*
* Offset 0x13E60
* D:\driver2\game\C\OBJANIM.C (line 613)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ animate_object(struct CELL_OBJECT *cop /*$s2*/, int type /*$a1*/)
{ // line 1, address 0x13e60
short yang; // $s1
char phase; // $a0
} // line 283, address 0x1470c
/*
* Offset 0x1470C
* D:\driver2\game\C\OBJANIM.C (line 931)
* Stack frame base $sp, length 0
*/
void /*$ra*/ animate_garage_door()
{ // line 2, address 0x1470c
int dx; // $a0
int dz; // $v1
int dist; // $a0
} // line 34, address 0x14888
/*
* Offset 0x14890
* D:\driver2\game\C\OBJANIM.C (line 536)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitSpooledAnimObj(int model_number /*$a0*/)
{ // line 1, address 0x14890
struct ANIMATED_OBJECT *aop; // $a1
int i; // $a2
} // line 15, address 0x14900
/*
* Offset 0x14908
* D:\driver2\game\C\OBJANIM.C (line 578)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ DrawAnimatingObject(struct MODEL *model /*$a0*/, struct CELL_OBJECT *cop /*$s3*/, struct VECTOR *pos /*$a2*/)
{ // line 1, address 0x14908
struct ANIMATED_OBJECT *aop; // $s1
int loop; // $s2
int type; // $s0
} // line 27, address 0x149b8
/*
* Offset 0x149B8
* D:\driver2\game\C\OBJANIM.C (line 460)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ FindSmashableObjects()
{ // line 2, address 0x149b8
struct SMASHABLE_OBJECT *sip; // $s0
} // line 8, address 0x14a10
/*
* Offset 0x14A10
* D:\driver2\game\C\OBJANIM.C (line 565)
* Stack frame base $sp, length 0
*/
void /*$ra*/ int_garage_door()
{
}
/*
* Offset 0x14A1C
* D:\driver2\game\C\OBJANIM.C (line 260)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitCyclingPals()
{ // line 2, address 0x14a1c
int i; // $s0
struct CYCLE_OBJECT *cyc; // $s1
struct RECT vram; // stack address -24
} // line 18, address 0x14ac0

227
src/C/objcoll.c Normal file
View File

@ -0,0 +1,227 @@
#include "../decomp_defs.h"
/*
* Offset 0x69C0C
* D:\driver2\game\C\OBJCOLL.C (line 63)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
char /*$ra*/ CellEmpty(struct VECTOR *pPosition /*$s1*/, int radius /*$s2*/)
{ // line 1, address 0x69c0c
struct CELL_ITERATOR ci; // stack address -48
int cell_x; // $a0
struct CELL_OBJECT *pCellObject; // $a2
struct MODEL *pModel; // $a3
{ // line 37, address 0x69cc8
int sphere_sq; // $v0
int xd; // $t5
int zd; // $t4
{ // line 51, address 0x69d2c
int box_loop; // $t3
int num_cb; // $t6
struct COLLISION_PACKET *collide; // $t0
{ // line 56, address 0x69d50
unsigned int zs; // $t2
unsigned int xs; // $t1
int cs; // $a2
int sn; // $a0
} // line 75, address 0x69e30
} // line 76, address 0x69e40
} // line 78, address 0x69e40
} // line 90, address 0x69e84
/*
* Offset 0x69E84
* D:\driver2\game\C\OBJCOLL.C (line 217)
* Stack frame base $sp, length 24
*/
int /*$ra*/ RaySlabsIntersection(struct tRay *ray /*$t5*/, struct tAABB *bbox /*$t4*/)
{ // line 1, address 0x69e84
int i; // $t1
struct tRange inside; // stack address -24
{ // line 9, address 0x69ea8
struct tRange cabbage; // stack address -16
struct tRange scaledCabbage; // stack address -8
int dir; // $a2
} // line 36, address 0x69ffc
} // line 38, address 0x6a01c
/*
* Offset 0x6A01C
* D:\driver2\game\C\OBJCOLL.C (line 259)
* Stack frame base $sp, length 200
* Saved registers at address -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, address 0x6a01c
int we; // stack address -56
int ocx; // $t2
int ocz; // $t3
struct VECTOR pos; // stack address -184
struct VECTOR va; // stack address -168
struct VECTOR vb; // stack address -152
{ // line 20, address 0x6a0dc
int cell_x; // $fp
int cell_z; // $s7
struct CELL_ITERATOR ci; // stack address -136
struct CELL_OBJECT *pCellObject; // $s4
{ // line 40, address 0x6a19c
struct MODEL *pModel; // $a1
{ // line 48, address 0x6a1d8
int sphere_sq; // $v0
int xd; // $a0
int zd; // $v1
{ // line 59, address 0x6a23c
int box_loop; // $s5
int num_cb; // $s6
struct COLLISION_PACKET *collide; // $s3
{ // line 64, address 0x6a258
struct MATRIX *mat; // $a0
int cx; // $v1
int cy; // $a2
int cz; // $v0
int cs; // $t1
int sn; // $t5
{ // line 64, address 0x6a258
struct tRay ray; // stack address -112
struct tAABB box; // stack address -80
} // line 88, address 0x6a47c
} // line 89, address 0x6a47c
} // line 90, address 0x6a48c
} // line 92, address 0x6a48c
} // line 93, address 0x6a48c
} // line 96, address 0x6a4ac
} // line 101, address 0x6a500
/*
* Offset 0x6A500
* D:\driver2\game\C\OBJCOLL.C (line 391)
* Stack frame base $sp, length 88
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ CollisionCopList(struct XZPAIR *pos /*$a0*/, int *count /*$s0*/)
{ // line 1, address 0x6a500
static struct XZPAIR initial; // address 0x0
{ // line 11, address 0x6a550
struct XZPAIR cell; // stack address -72
int i; // $a0
int j; // $t1
{ // line 20, address 0x6a570
struct CELL_ITERATOR ci; // stack address -64
struct XZPAIR cbr; // stack address -40
int barrelRegion; // $v0
struct CELL_OBJECT *cop; // $a0
} // line 38, address 0x6a660
} // line 40, address 0x6a690
} // line 41, address 0x6a6b4
/*
* Offset 0x6A6B4
* D:\driver2\game\C\OBJCOLL.C (line 439)
* Stack frame base $sp, length 168
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ CheckScenaryCollisions(struct _CAR_DATA *cp /*$s7*/)
{ // line 1, address 0x6a6b4
struct MODEL *model; // stack address -76
struct CELL_OBJECT *cop; // $s5
struct VECTOR player_pos; // stack address -152
struct COLLISION_PACKET *collide; // $s1
int cell_x; // $a0
int xd; // $v1
int zd; // $a0
int num_cb; // stack address -72
int box_loop; // $s6
int sphere_sq; // $v0
int x1; // stack address -68
struct BUILDING_BOX bbox; // stack address -136
int mdcount; // stack address -80
int coll_test_count; // $t0
struct XZPAIR box; // stack address -104
int lbody; // stack address -64
int extraDist; // stack address -60
{ // line 80, address 0x6a99c
struct BUILDING_BOX *pbox; // $s4
struct MATRIX *mat; // $a1
struct VECTOR address; // stack address -96
} // line 152, address 0x6adb0
} // line 158, address 0x6adf4
/*
* Offset 0x6AE24
* D:\driver2\game\C\OBJCOLL.C (line 609)
* Stack frame base $sp, length 128
* Saved registers at address -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, address 0x6ae24
struct MODEL *model; // $a1
struct CELL_OBJECT *cop; // $s3
struct VECTOR player_pos; // stack address -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 address -96
int mdcount; // stack address -48
{ // line 60, address 0x6b00c
struct BUILDING_BOX *pbox; // $s1
struct MATRIX *mat; // $a1
struct VECTOR address; // stack address -64
{ // line 76, address 0x6b158
} // line 103, address 0x6b224
} // line 105, address 0x6b224
} // line 112, address 0x6b288
/*
* Offset 0x6B288
* D:\driver2\game\C\OBJCOLL.C (line 735)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DoScenaryCollisions()
{ // line 2, address 0x6b288
struct _CAR_DATA *lcp; // $s0
} // line 18, address 0x6b354
/*
* Offset 0x6B354
* D:\driver2\game\C\OBJCOLL.C (line 155)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GlobalPositionToCellNumber(struct VECTOR *pPosition /*$a0*/)
{ // line 1, address 0x6b354
int cellX; // $a3
int cellZ; // $a1
int cbrX; // $t1
int cbrZ; // $t0
int cbr; // $t2
int xOff; // $a3
int yOff; // $a0
} // line 20, address 0x6b44c
/*
* Offset 0x6B44C
* D:\driver2\game\C\OBJCOLL.C (line 183)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
char /*$ra*/ CellAtPositionEmpty(struct VECTOR *pPosition /*$s0*/, int radius /*$s1*/)
{ // line 1, address 0x6b44c
} // line 22, address 0x6b498
/*
* Offset 0x6B498
* D:\driver2\game\C\OBJCOLL.C (line 377)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ SetCopListCell(int x /*$a0*/, int z /*$a1*/)
{ // line 2, address 0x6b498
struct XZPAIR cell; // stack address -16
} // line 7, address 0x6b4c4
/*
* Offset 0x6B4C4
* D:\driver2\game\C\OBJCOLL.C (line 386)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ BuildCollisionCopList(int *count /*$a1*/)
{
}

168
src/C/overlay.c Normal file
View File

@ -0,0 +1,168 @@
#include "../decomp_defs.h"
COLOUR_BAND felonyColour[3] =
{
{ { 0u, 0u, 255u, 0u }, 0, 0 },
{ { 255u, 0u, 0u, 0u }, 659, 0 },
{ { 0u, 0u, 255u, 0u }, 4096, 2 }
};
COLOUR_BAND playerDamageColour[3] =
{
{ { 0u, 255u, 0u, 0u }, 0, 0 },
{ { 255u, 0u, 0u, 0u }, 3686, 0 },
{ { 0u, 0u, 0u, 0u }, 4096, 2 }
};
COLOUR_BAND damageColour[2] =
{ { { 0u, 255u, 0u, 0u }, 0, 0 }, { { 255u, 0u, 0u, 0u }, 4096, 0 } };
/*
* Offset 0x14AC0
* D:\driver2\game\C\OVERLAY.C (line 270)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ InitOverlays()
{
}
/*
* Offset 0x14CA4
* D:\driver2\game\C\OVERLAY.C (line 329)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DisplayOverlays()
{
}
/*
* Offset 0x14E10
* D:\driver2\game\C\OVERLAY.C (line 426)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawPercentageBar(struct _PERCENTAGE_BAR *bar /*$fp*/)
{ // line 1, address 0x14e10
struct POLY_G4 *poly; // $s0
struct CVECTOR temp; // stack address -56
int min_x; // $s1
int max_x; // $s7
int min_y; // $s2
int max_y; // stack address -48
char *tag; // $s0
{ // line 94, address 0x152b0
short tagX; // $s1
short tagY; // $s2
} // line 102, address 0x1530c
} // line 104, address 0x1533c
/*
* Offset 0x1533C
* D:\driver2\game\C\OVERLAY.C (line 532)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawProximityBar(struct _PERCENTAGE_BAR *bar /*$t3*/)
{ // line 1, address 0x1533c
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, address 0x157c8
short tagX; // $s1
short tagY; // $s2
} // line 95, address 0x1582c
} // line 97, address 0x1585c
/*
* Offset 0x1585C
* D:\driver2\game\C\OVERLAY.C (line 707)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DrawDrivingGameOverlays()
{ // line 2, address 0x1585c
struct SCORE_ENTRY *table; // $s1
char string[32]; // stack address -64
int i; // $s1
int x; // $s3
int y; // $s2
{ // line 11, address 0x158c4
{ // line 25, address 0x1593c
} // line 25, address 0x1593c
{ // line 50, address 0x15a4c
} // line 63, address 0x15b10
} // line 136, address 0x15eb4
} // line 137, address 0x15ed8
/*
* Offset 0x15ED8
* D:\driver2\game\C\OVERLAY.C (line 378)
* Stack frame base $sp, length 128
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetFullscreenDrawing()
{ // line 2, address 0x15ed8
struct DRAWENV drawenv; // stack address -104
struct DR_ENV *dr_env; // $s0
} // line 10, address 0x15f88
/*
* Offset 0x15F88
* D:\driver2\game\C\OVERLAY.C (line 395)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitPercentageBar(struct _PERCENTAGE_BAR *bar /*$a0*/, int length /*$a1*/, struct COLOUR_BAND *pColourBand /*$a2*/, char *tag /*$a3*/)
{
}
/*
* Offset 0x15FC0
* D:\driver2\game\C\OVERLAY.C (line 414)
* Stack frame base $sp, length 0
*/
void /*$ra*/ EnablePercentageBar(struct _PERCENTAGE_BAR *bar /*$a0*/, int max /*$a1*/)
{
}
/*
* Offset 0x15FD4
* D:\driver2\game\C\OVERLAY.C (line 631)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetColourByValue(struct COLOUR_BAND *pColourBand /*$a3*/, int value /*$a1*/, struct CVECTOR *pOut /*$t0*/)
{ // line 1, address 0x15fd4
struct COLOUR_BAND *pPrevColourBand; // $a2
int scale; // $a0
int temp; // $a1
} // line 30, address 0x16100
/*
* Offset 0x16100
* D:\driver2\game\C\OVERLAY.C (line 669)
* Stack frame base $sp, length 0
*/
void /*$ra*/ TransparencyOn(void *potz /*$a0*/, unsigned short tpage /*$a1*/)
{ // line 1, address 0x16100
struct DR_TPAGE *null; // $a2
} // line 7, address 0x1617c
/*
* Offset 0x1617C
* D:\driver2\game\C\OVERLAY.C (line 687)
* Stack frame base $sp, length 0
*/
void /*$ra*/ UpdateFlashValue()
{ // line 2, address 0x1617c
char length; // $v1
} // line 13, address 0x161ec
/*
* Offset 0x161EC
* D:\driver2\game\C\OVERLAY.C (line 846)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ PrintScoreTableTime(int x /*$s0*/, int y /*$s1*/, int time /*$a0*/)
{ // line 1, address 0x161ec
char string[32]; // stack address -48
int min; // $t0
int frac; // $v1
} // line 15, address 0x162e8

491
src/C/overmap.c Normal file
View File

@ -0,0 +1,491 @@
#include "../decomp_defs.h"
OVERMAP overlaidmaps[4] =
{
{ 197, 318, 384, 672, '\xFC', '\x99', 2145 },
{ 229, 85, 544, 352, '\xBB', '\x88', 2048 },
{ 68, 457, 288, 672, '\xBD', '\xBB', 1911 },
{ 159, 207, 416, 576, '\xFC', 'D', 2048 }
};
SXYPAIR MapSegmentPos[16] =
{
{ 0, 0 },
{ 8, 0 },
{ 16, 0 },
{ 24, 0 },
{ 0, 32 },
{ 8, 32 },
{ 16, 32 },
{ 24, 32 },
{ 0, 64 },
{ 8, 64 },
{ 16, 64 },
{ 24, 64 },
{ 0, 96 },
{ 8, 96 },
{ 16, 96 },
{ 24, 96 }
};
XYPAIR NVertex[4] = { { -2, 3 }, { -2, -3 }, { 2, 3 }, { 2, -3 } };
XYPAIR north[4] = { { 0, 20 }, { 0, 20 }, { 0, 20 }, { 0, 20 } };
VECTOR player_position = { 0, 0, 0, 0 };
char* palettedir[] = {
"CHICAGO",
"HAVANA",
"VEGAS",
"RIO",
"CHICAGO",
"HAVANA",
"VEGAS",
"RIO",
};
/*
* Offset 0x162E8
* D:\driver2\game\C\OVERMAP.C (line 685)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0x162e8
struct POLY_FT4 *poly; // $t0
struct VECTOR vec; // stack address -40
int ysize; // $a2
} // line 74, address 0x165c0
/*
* Offset 0x165E0
* D:\driver2\game\C\OVERMAP.C (line 815)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawTargetArrow(struct VECTOR *pos /*$a2*/, unsigned long flags /*$s3*/)
{ // line 1, address 0x165e0
struct VECTOR vec; // stack address -56
struct VECTOR vec2; // stack address -40
struct POLY_FT3 *null; // $t1
struct POLY_G3 *poly; // $s2
int dx; // $s1
int dy; // $s0
} // line 60, address 0x1687c
/*
* Offset 0x1687C
* D:\driver2\game\C\OVERMAP.C (line 883)
* Stack frame base $sp, length 192
* Saved registers at address -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*/)
{ // line 1, address 0x1687c
struct MATRIX matrix; // stack address -168
struct VECTOR direction; // stack address -136
struct SVECTOR apos[3]; // stack address -120
struct VECTOR opos[3]; // stack address -96
struct POLY_F3 *poly; // $t0
struct VECTOR vec; // stack address -48
} // line 63, address 0x16b2c
/*
* Offset 0x16B50
* D:\driver2\game\C\OVERMAP.C (line 954)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ProcessOverlayLump(char *lump_ptr /*$s1*/, int lump_size /*$s0*/)
{ // line 1, address 0x16b50
struct TEXTURE_DETAILS info; // stack address -32
int i; // $a1
int x; // $v0
int y; // $a0
} // line 32, address 0x16c74
/*
* Offset 0x16C74
* D:\driver2\game\C\OVERMAP.C (line 994)
* Stack frame base $sp, length 40
* Saved registers at address -8: ra
*/
unsigned long /*$ra*/ Long2DDistance(struct VECTOR *pPoint1 /*$a0*/, struct VECTOR *pPoint2 /*$a2*/)
{ // line 1, address 0x16c74
struct VECTOR delta; // stack address -24
unsigned int result; // $v0
{ // line 7, address 0x16cb8
int Theta; // $v1
int tempTheta; // $v0
{ // line 15, address 0x16cd8
int cos; // $v1
} // line 23, address 0x16d04
{ // line 28, address 0x16d0c
int sin; // $v1
} // line 38, address 0x16d6c
} // line 39, address 0x16d6c
} // line 42, address 0x16d7c
/*
* Offset 0x16D7C
* D:\driver2\game\C\OVERMAP.C (line 1077)
* Stack frame base $sp, length 808
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawOverheadMap()
{ // line 2, address 0x16d7c
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 address -104
struct SVECTOR MapMesh[5][5]; // stack address -784
struct VECTOR MapMeshO[5][5]; // stack address -584
struct MAPTEX MapTex[4]; // stack address -184
struct SVECTOR direction; // stack address -152
struct POLY_FT4 *spt; // $a3
struct POLY_F4 *sptb; // $a0
struct DR_AREA *draw_area; // $s2
struct RECT clipped_size; // stack address -144
struct VECTOR translate; // stack address -136
{ // line 35, address 0x16e8c
static int ptab[] = { 0xFF, 0xF0, 0xAA, 0x78, 0x50, 0x37, 0x26, 0x17, 0xD, 0xA, 0, 0, 0, 0, 0, 0 };
} // line 36, address 0x16e8c
{ // line 48, address 0x16f60
static int ptab[] = { 0xFF, 0xFF, 0xF0, 0xAA, 0x78, 0x50, 0x37, 0x26, 0x17, 0xD, 0xA, 0 };
int intens; // $a1
} // line 58, address 0x17010
{ // line 62, address 0x17010
{ // line 62, address 0x17010
struct VECTOR vec; // stack address -120
struct TILE_1 *tile1; // $a0
} // line 65, address 0x1715c
} // line 65, address 0x1715c
{ // line 69, address 0x1715c
struct _CAR_DATA *cp; // $s0
} // line 84, address 0x17280
{ // line 91, address 0x172a8
} // line 93, address 0x172a8
{ // line 108, address 0x17328
} // line 110, address 0x17328
{ // line 125, address 0x173b4
} // line 127, address 0x173b4
{ // line 142, address 0x17448
} // line 144, address 0x17448
} // line 290, address 0x17c68
/*
* Offset 0x17C98
* D:\driver2\game\C\OVERMAP.C (line 1374)
* Stack frame base $sp, length 216
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawFullscreenMap()
{ // line 2, address 0x17c98
struct TILE *polys; // $v0
struct POLY_FT4 *back; // $a1
struct POLY_FT3 *null; // $a2
struct SVECTOR Mesh[4]; // stack address -192
struct VECTOR MeshO[4]; // stack address -160
struct VECTOR target; // stack address -96
long flag; // stack address -64
long count; // $s4
int width; // stack address -60
int height; // stack address -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, address 0x17e98
int px; // $a2
int pz; // $a1
} // line 126, address 0x17ff0
{ // line 180, address 0x1805c
int clipped; // $s5
} // line 232, address 0x18278
{ // line 246, address 0x18318
{ // line 246, address 0x18318
struct VECTOR vec; // stack address -80
struct TILE_1 *tile1; // $v1
} // line 246, address 0x18318
} // line 246, address 0x18318
} // line 263, address 0x18450
/*
* Offset 0x18450
* D:\driver2\game\C\OVERMAP.C (line 1645)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ DrawCopIndicators()
{ // line 2, address 0x18450
static int ft[16]; // address 0x188
struct _CAR_DATA *cp; // $s0
int fade; // $s1
int cc; // $s3
int cs; // $s2
{ // line 17, address 0x184e8
int dx; // $a3
int dz; // $a1
int p; // $a1
int q; // $a0
int ap; // $v1
{ // line 25, address 0x18578
} // line 28, address 0x185d0
} // line 29, address 0x185d0
} // line 31, address 0x18608
/*
* Offset 0x18608
* D:\driver2\game\C\OVERMAP.C (line 1697)
* Stack frame base $sp, length 88
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawMultiplayerMap()
{ // line 2, address 0x18608
struct POLY_FT4 *poly; // $a2
struct LINE_F2 *line2; // $s1
struct VECTOR target; // stack address -64
int i; // $s3
int y; // $s7
} // line 79, address 0x189e8
/*
* Offset 0x189E8
* D:\driver2\game\C\OVERMAP.C (line 2319)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FlashOverheadMap(int r /*$a0*/, int g /*$a1*/, int b /*$a2*/)
{ // line 2, address 0x189e8
struct TILE *tile; // $a3
} // line 22, address 0x18b08
/*
* Offset 0x18B08
* D:\driver2\game\C\OVERMAP.C (line 2350)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ LoadMapTile(int tpage /*$a0*/, int x /*$a1*/, int y /*$a2*/)
{ // line 1, address 0x18b08
struct RECT MapSegment; // stack address -16
int temp; // $a0
int count; // $a2
int idx; // $a3
} // line 33, address 0x18c5c
/*
* Offset 0x18C5C
* D:\driver2\game\C\OVERMAP.C (line 2405)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ draw_box()
{ // line 2, address 0x18c5c
struct LINE_F4 *line4; // $s0
struct LINE_F2 *line2; // $s1
} // line 22, address 0x18dbc
/*
* Offset 0x18DBC
* D:\driver2\game\C\OVERMAP.C (line 2435)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ DrawN(struct VECTOR *pScreenPosition /*$s2*/, int direct /*$s7*/)
{ // line 1, address 0x18dbc
struct XYPAIR lastPoint; // stack address -48
struct XYPAIR *pPoint; // $s0
char loop; // $s4
{ // line 11, address 0x18e2c
struct LINE_F2 *pLine; // $a2
} // line 34, address 0x18f2c
} // line 36, address 0x18f80
/*
* Offset 0x18F80
* D:\driver2\game\C\OVERMAP.C (line 2479)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawCompass()
{ // line 2, address 0x18f80
struct VECTOR position[5]; // stack address -88
struct XYPAIR *pNorth; // $a1
int scale; // $a0
{ // line 3, address 0x18f80
char loop; // $t2
struct VECTOR *pPosition; // $a3
void *pot; // $s0
{ // line 32, address 0x19120
struct LINE_G2 *pLine; // $a0
} // line 32, address 0x19120
} // line 46, address 0x191fc
} // line 47, address 0x191fc
/*
* Offset 0x191FC
* D:\driver2\game\C\OVERMAP.C (line 2534)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DrawBigCompass(struct VECTOR *root /*$a0*/, int angle /*$a1*/)
{ // line 1, address 0x191fc
struct VECTOR position[5]; // stack address -96
struct VECTOR *pPosition; // $s0
char loop; // $s1
{ // line 23, address 0x19368
struct LINE_G2 *pLine; // $a1
} // line 23, address 0x19368
} // line 35, address 0x1941c
/*
* Offset 0x1941C
* D:\driver2\game\C\OVERMAP.C (line 2577)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ CopIndicator(int xpos /*$a3*/, int strength /*$a1*/)
{ // line 1, address 0x1941c
struct POLY_F3 *tri; // $a2
int str2; // $fp
void *pot; // stack address -56
} // line 30, address 0x195fc
/*
* Offset 0x195FC
* D:\driver2\game\C\OVERMAP.C (line 2609)
* Stack frame base $sp, length 184
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DrawSightCone(struct COP_SIGHT_DATA *pCopSightData /*$a0*/, struct VECTOR *pPosition /*$a1*/, int direction /*$t6*/)
{ // line 1, address 0x195fc
struct VECTOR vertex[9]; // stack address -160
struct VECTOR *pVertex; // $t0
int angle; // $a3
int frontViewAngle; // $t1
int negFrontViewAngle; // $a2
int frontViewDistance; // $t4
int surroundViewDistance; // $t3
{ // line 15, address 0x19650
int len; // $a1
{ // line 27, address 0x19668
int temp; // $v0
} // line 27, address 0x19668
} // line 27, address 0x19668
{ // line 34, address 0x196d4
struct VECTOR *pVertex; // $a2
void *pot; // $a3
{ // line 42, address 0x19720
struct POLY_G3 *poly; // $a1
struct VECTOR *pNextVertex; // $a0
} // line 50, address 0x19744
} // line 61, address 0x19824
} // line 62, address 0x19824
/*
* Offset 0x19824
* D:\driver2\game\C\OVERMAP.C (line 1043)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ InitOverheadMap()
{ // line 2, address 0x19824
int tpage; // $s3
int c; // $s2
int d; // $s1
} // line 27, address 0x19924
/*
* Offset 0x19948
* D:\driver2\game\C\OVERMAP.C (line 1678)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitMultiplayerMap()
{ // line 2, address 0x19948
struct RECT rect; // stack address -48
char filename[32]; // stack address -40
} // line 17, address 0x199fc
/*
* Offset 0x199FC
* D:\driver2\game\C\OVERMAP.C (line 1778)
* Stack frame base $sp, length 0
*/
void /*$ra*/ WorldToMultiplayerMap(struct VECTOR *in /*$a3*/, struct VECTOR *out /*$a2*/)
{ // line 1, address 0x199fc
int x; // $v1
int z; // $a0
} // line 17, address 0x19ac8
/*
* Offset 0x19AC8
* D:\driver2\game\C\OVERMAP.C (line 2392)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetMapPos()
{
}
/*
* Offset 0x19B58
* D:\driver2\game\C\OVERMAP.C (line 2703)
* Stack frame base $sp, length 96
* Saved registers at address -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, address 0x19b58
struct MATRIX TempMatrix; // stack address -80
int sin; // $a1
int cos; // $a2
int angle; // $v1
int scale; // $s0
{ // line 42, address 0x19c88
struct SVECTOR tempVector; // stack address -48
long flag; // stack address -40
} // line 57, address 0x19d28
} // line 61, address 0x19d74
/*
* Offset 0x19D74
* D:\driver2\game\C\OVERMAP.C (line 2771)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetFullscreenMapMatrix()
{ // line 2, address 0x19d74
struct VECTOR translate; // stack address -32
struct SVECTOR direction; // stack address -16
} // line 16, address 0x19e50
/*
* Offset 0x19E50
* D:\driver2\game\C\OVERMAP.C (line 2794)
* Stack frame base $sp, length 0
*/
void /*$ra*/ WorldToFullscreenMap(struct VECTOR *in /*$a0*/, struct VECTOR *out /*$a1*/)
{
}
/*
* Offset 0x19EE4
* D:\driver2\game\C\OVERMAP.C (line 2806)
* Stack frame base $sp, length 40
* Saved registers at address -8: ra
*/
void /*$ra*/ WorldToFullscreenMap2(struct VECTOR *in /*$a0*/, struct VECTOR *out /*$a1*/)
{ // line 1, address 0x19ee4
struct SVECTOR pos; // stack address -24
long flag; // stack address -16
} // line 13, address 0x19fac
/*
* Offset 0x19FAC
* D:\driver2\game\C\OVERMAP.C (line 1970)
* Stack frame base $sp, length 696
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ ProcessPalletLump(char *lump_ptr /*$a0*/, int lump_size /*$a1*/)
{ // line 1, address 0x19fac
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 address -680
char *buffPtr; // $s0
{ // line 43, address 0x1a038
} // line 43, address 0x1a038
} // line 64, address 0x1a0fc
/*
* Offset 0x1A0FC
* D:\driver2\game\C\OVERMAP.C (line 2043)
* Stack frame base $sp, length 0
*/
void /*$ra*/ load_civ_palettes(struct RECT *cluts /*$a0*/)
{
}

115
src/C/pad.c Normal file
View File

@ -0,0 +1,115 @@
char High_shake_data[] = { 1, 0xFF, 0xFF, 0xC8, 0x50, 0x50, 0x50, 0x50, 0x50, 0x46, 0x46, 0x46, 0x46, 0x46, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0 };
char Med_shake_data[] = { 1, 0xC8, 0xC8, 0x64, 0x46, 0x46, 0x46, 0x46, 0x46, 0xA, 0xA, 0xA, 0 };
char Low_shake_data[] = { 1, 0xA0, 0xA0, 0x46, 0x46, 0xA, 0xA, 0xA, 0xA, 0 };
char* shake_data[] = { High_shake_data, Med_shake_data, Low_shake_data };
/*
* Offset 0x6B4E8
* D:\driver2\game\C\PAD.C (line 75)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ InitControllers()
{ // line 2, address 0x6b4e8
int i; // $s3
int j; // $a1
} // line 36, address 0x6b610
/*
* Offset 0x6B610
* D:\driver2\game\C\PAD.C (line 132)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ ReadControllers()
{ // line 2, address 0x6b610
int i; // $s3
int pad; // $s2
} // line 57, address 0x6b758
/*
* Offset 0x6B758
* D:\driver2\game\C\PAD.C (line 257)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MapPad(int pad /*$t2*/, struct PADRAW *pData /*$a3*/)
{ // line 1, address 0x6b758
unsigned short i; // $a3
unsigned short buttons; // $t0
unsigned short mapped; // $t1
} // line 64, address 0x6b940
/*
* Offset 0x6B948
* D:\driver2\game\C\PAD.C (line 336)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ HandleDualShock()
{ // line 2, address 0x6b948
int state; // $v1
int port; // $s3
int pad; // $s5
int dsload; // $s7
} // line 114, address 0x6bc2c
/*
* Offset 0x6BC2C
* D:\driver2\game\C\PAD.C (line 452)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ HandlePadVibration(int pad /*$t1*/)
{ // line 1, address 0x6bc2c
int speed; // $a3
} // line 44, address 0x6be50
/*
* Offset 0x6BE60
* D:\driver2\game\C\PAD.C (line 113)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CloseControllers()
{ // line 2, address 0x6be60
int i; // $v1
} // line 11, address 0x6bea0
/*
* Offset 0x6BEA0
* D:\driver2\game\C\PAD.C (line 191)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetPadVibration(int pad /*$a3*/, unsigned char type /*$a1*/)
{
}
/*
* Offset 0x6BF1C
* D:\driver2\game\C\PAD.C (line 209)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StopPadVibration(int pad /*$a0*/)
{
}
/*
* Offset 0x6BF54
* D:\driver2\game\C\PAD.C (line 228)
* Stack frame base $sp, length 0
*/
void /*$ra*/ StopDualShockMotors()
{
}
/*
* Offset 0x6BF5C
* D:\driver2\game\C\PAD.C (line 232)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetDuplicatePadData(char *buffer /*$a0*/, int length /*$a1*/)
{
}
/*
* Offset 0x6BF8C
* D:\driver2\game\C\PAD.C (line 323)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ClearPad(int pad /*$a0*/)
{
}

472
src/C/pathfind.c Normal file
View File

@ -0,0 +1,472 @@
#include "../decomp_defs.h"
/*
* Offset 0xE7000
* D:\driver2\game\C\PATHFIND.C (line 314)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 s1
*/
struct tNode /*$ra*/ popNode()
{ // line 1, address 0xe7000
unsigned int lNumHeapEntries; // $s0
struct tNode res; // stack address -24
unsigned short f; // $t8
unsigned int child; // $a1
unsigned int here; // $t5
{ // line 11, address 0xe7058
unsigned int lastEntry; // $t4
{ // line 15, address 0xe7070
int d; // $t3
int d2; // $t2
int d3; // $a3
int d4; // $t1
} // line 32, address 0xe70b8
} // line 33, address 0xe7110
{ // line 35, address 0xe7110
int d; // $a2
int d2; // $a3
int d3; // $t1
int d4; // $t2
} // line 44, address 0xe715c
} // line 47, address 0xe715c
/*
* Offset 0xE7194
* D:\driver2\game\C\PATHFIND.C (line 426)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ WunCell(struct VECTOR *pbase /*$s0*/)
{ // line 1, address 0xe7194
int i; // $s2
int j; // $s4
struct VECTOR v[2]; // stack address -88
struct VECTOR pos; // stack address -56
{ // line 14, address 0xe723c
{ // line 14, address 0xe723c
int z; // $a1
int x; // $a2
} // line 20, address 0xe72c8
} // line 20, address 0xe72c8
} // line 24, address 0xe735c
/*
* Offset 0xE735C
* D:\driver2\game\C\PATHFIND.C (line 453)
* Stack frame base $sp, length 16
*/
void /*$ra*/ InvalidateMap()
{ // line 2, address 0xe735c
struct VECTOR bPos; // stack address -16
int count; // $t4
int dir; // $t1
int p; // $t2
int q; // $t3
{ // line 12, address 0xe73a8
int tile; // $a0
int mask; // $a1
int diff; // $a1
int i; // $v0
} // line 15, address 0xe73a8
} // line 34, address 0xe74b0
/*
* Offset 0xE74B0
* D:\driver2\game\C\PATHFIND.C (line 495)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ BloodyHell()
{ // line 2, address 0xe74b0
struct VECTOR bPos; // stack address -48
int count; // $s4
int dir; // $s0
int p; // $s1
int q; // $s2
unsigned int howMany; // $s3
//0x69C raa
{ // line 22, address 0xe755c
int tile; // $a0
int mask; // $a1
int diff; // $v0
int i; // $v0
} // line 42, address 0xe75e4
} // line 70, address 0xe76c4
/*
* Offset 0xE76C4
* D:\driver2\game\C\PATHFIND.C (line 567)
* Stack frame base $sp, length 40
* Saved registers at address -8: ra
*/
int /*$ra*/ blocked(struct tNode *v1 /*$a3*/, struct tNode *v2 /*$a2*/)
{ // line 1, address 0xe76c4
struct VECTOR pos; // stack address -24
int res; // $a0
{ // line 8, address 0xe76e0
{ // line 8, address 0xe76e0
int z; // $a2
int x; // $v1
} // line 11, address 0xe774c
} // line 11, address 0xe774c
{ // line 18, address 0xe7790
{ // line 18, address 0xe7790
int z; // $v1
int x; // $a0
} // line 18, address 0xe7790
} // line 18, address 0xe7790
} // line 23, address 0xe7814
/*
* Offset 0xE7814
* D:\driver2\game\C\PATHFIND.C (line 712)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ iterate()
{ // line 2, address 0xe7814
int dir; // $s2
struct tNode itHere; // stack address -48
struct tNode *nbr; // $s4
{ // line 12, address 0xe7870
int nearBy; // $v1
int computed; // $s1
{ // line 14, address 0xe7870
int dx; // $v0
int dz; // $a0
} // line 15, address 0xe7870
{ // line 15, address 0xe7870
{ // line 15, address 0xe7870
int res; // $a0
} // line 15, address 0xe7870
} // line 15, address 0xe7870
} // line 51, address 0xe797c
{ // line 56, address 0xe79b4
int nr; // $a0
int nl; // $v1
{ // line 58, address 0xe7a08
unsigned int a; // $v1
{ // line 58, address 0xe7a08
{ // line 1, address 0xe7a44
unsigned int r; // $v0
} // line 1, address 0xe7a68
} // line 1, address 0xe7a68
} // line 1, address 0xe7a68
{ // line 61, address 0xe7aac
struct tNode *pnode; // $s0
{ // line 61, address 0xe7aac
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 61, address 0xe7b98
} // line 61, address 0xe7b98
} // line 62, address 0xe7b98
} // line 64, address 0xe7ba8
/*
* Offset 0xE7BD0
* D:\driver2\game\C\PATHFIND.C (line 801)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitPathFinding()
{ // line 2, address 0xe7bd0
int i; // $a0
{ // line 1, address 0xe7bd0
} // line 1, address 0xe7bd0
{ // line 1, address 0xe7bd0
} // line 1, address 0xe7bd0
} // line 18, address 0xe7ca8
/*
* Offset 0xE7CA8
* D:\driver2\game\C\PATHFIND.C (line 821)
* Stack frame base $sp, length 88
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ getInterpolatedDistance(struct VECTOR *pos /*$s2*/)
{ // line 1, address 0xe7ca8
struct tNode n; // stack address -72
int fx; // $s4
int fz; // $s5
int a; // $s3
int b; // $s2
int c; // $v1
int min; // $s0
int flag; // $fp
{ // line 1, address 0xe7ca8
struct VECTOR *where; // $s2
struct tNode *node; // $s0
{ // line 1, address 0xe7ca8
int x; // $v1
{ // line 1, address 0xe7ca8
struct tNode *pos; // $s0
{ // line 1, address 0xe7ca8
struct VECTOR sp; // stack address -56
{ // line 1, address 0xe7ca8
{ // line 1, address 0xe7ca8
int z; // $v0
int x; // $a0
} // line 1, address 0xe7ca8
} // line 1, address 0xe7ca8
{ // line 1, address 0xe7d78
int res; // $v0
} // line 1, address 0xe7d9c
} // line 1, address 0xe7da0
} // line 1, address 0xe7da0
} // line 1, address 0xe7da0
} // line 1, address 0xe7da0
{ // line 1, address 0xe7da0
{ // line 1, address 0xe7da0
int res; // $v0
} // line 1, address 0xe7da0
} // line 1, address 0xe7da0
{ // line 1, address 0xe7da0
{ // line 1, address 0xe7da0
struct VECTOR sp; // stack address -56
{ // line 1, address 0xe7da0
{ // line 1, address 0xe7da0
int x; // $a3
int z; // $v0
} // line 1, address 0xe7da0
} // line 1, address 0xe7da0
{ // line 1, address 0xe7e84
int res; // $v0
} // line 1, address 0xe7ea8
} // line 1, address 0xe7eac
} // line 1, address 0xe7eac
{ // line 18, address 0xe7eac
{ // line 18, address 0xe7eac
int res; // $a0
} // line 18, address 0xe7eac
} // line 18, address 0xe7eac
{ // line 27, address 0xe7f28
{ // line 27, address 0xe7f28
struct VECTOR sp; // stack address -56
{ // line 27, address 0xe7f28
{ // line 27, address 0xe7f28
int x; // $v1
int z; // $v0
} // line 27, address 0xe7f28
} // line 27, address 0xe7f28
{ // line 1, address 0xe7f8c
int res; // $v0
} // line 1, address 0xe7fb0
} // line 1, address 0xe7fb4
} // line 1, address 0xe7fb4
{ // line 29, address 0xe7fb4
{ // line 29, address 0xe7fb4
int res; // $a0
} // line 29, address 0xe7fb4
} // line 29, address 0xe7fb4
{ // line 43, address 0xe807c
{ // line 43, address 0xe807c
struct VECTOR sp; // stack address -56
{ // line 43, address 0xe807c
{ // line 43, address 0xe807c
int x; // $v1
int z; // $v0
} // line 43, address 0xe807c
} // line 43, address 0xe807c
{ // line 1, address 0xe80d8
int res; // $v0
} // line 1, address 0xe80fc
} // line 1, address 0xe8100
} // line 1, address 0xe8100
{ // line 44, address 0xe8100
{ // line 44, address 0xe8100
int res; // $a0
} // line 44, address 0xe8100
} // line 44, address 0xe8100
} // line 59, address 0xe822c
/*
* Offset 0xE822C
* D:\driver2\game\C\PATHFIND.C (line 891)
* Stack frame base $sp, length 0
*/
void /*$ra*/ addCivs()
{ // line 2, address 0xe822c
struct _CAR_DATA *cp; // $t5
{ // line 7, address 0xe8260
int where; // $a3
{ // line 9, address 0xe8260
int vx; // $a3
int vz; // $a1
int x; // $a3
int z; // $t0
} // line 9, address 0xe8260
{ // line 9, address 0xe8260
int vx; // $t1
int vz; // $t2
int x; // $t1
int z; // $a1
} // line 31, address 0xe8354
} // line 32, address 0xe8354
} // line 34, address 0xe836c
/*
* Offset 0xE836C
* D:\driver2\game\C\PATHFIND.C (line 933)
* Stack frame base $sp, length 88
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ UpdateCopMap()
{ // line 2, address 0xe836c
{ // line 6, address 0xe83c0
} // line 6, address 0xe83c0
{ // line 13, address 0xe83fc
struct tNode startNode; // stack address -72
{ // line 19, address 0xe843c
struct _CAR_DATA *cp; // $a0
} // line 19, address 0xe843c
{ // line 1, address 0xe8500
{ // line 1, address 0xe8500
{ // line 1, address 0xe8500
{ // line 1, address 0xe8500
int i; // $a1
{ // line 1, address 0xe8524
int d; // $v0
} // line 1, address 0xe8554
} // line 1, address 0xe8564
} // line 1, address 0xe8564
} // line 1, address 0xe8564
} // line 1, address 0xe8564
{ // line 1, address 0xe8564
{ // line 1, address 0xe8564
int x; // $v0
{ // line 1, address 0xe8564
{ // line 1, address 0xe8564
struct VECTOR sp; // stack address -56
{ // line 1, address 0xe8564
{ // line 1, address 0xe8564
int z; // $v0
int x; // $v1
} // line 1, address 0xe8564
} // line 1, address 0xe8564
{ // line 1, address 0xe8604
int res; // $v0
} // line 1, address 0xe8628
} // line 1, address 0xe862c
} // line 1, address 0xe862c
} // line 1, address 0xe862c
} // line 1, address 0xe862c
{ // line 1, address 0xe862c
struct tNode n; // stack address -56
int fx; // $v1
int fz; // $v0
{ // line 1, address 0xe8660
{ // line 1, address 0xe8660
int dz; // $a0
int dx; // $v0
} // line 1, address 0xe8660
} // line 1, address 0xe8660
{ // line 1, address 0xe8660
{ // line 1, address 0xe8660
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 1, address 0xe8774
} // line 1, address 0xe8774
{ // line 53, address 0xe8774
{ // line 53, address 0xe8774
int dz; // $a0
int dx; // $v0
} // line 53, address 0xe8774
} // line 53, address 0xe8774
{ // line 53, address 0xe8774
{ // line 53, address 0xe8774
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 54, address 0xe88b4
} // line 54, address 0xe88b4
{ // line 56, address 0xe88b4
{ // line 56, address 0xe88b4
int dz; // $a0
int dx; // $v0
} // line 56, address 0xe88b4
} // line 56, address 0xe88b4
{ // line 56, address 0xe88b4
{ // line 56, address 0xe88b4
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 57, address 0xe89bc
} // line 57, address 0xe89bc
{ // line 1, address 0xe89c4
{ // line 1, address 0xe89c4
int dz; // $a0
int dx; // $v0
} // line 1, address 0xe89c4
} // line 1, address 0xe89c4
{ // line 1, address 0xe89c4
{ // line 1, address 0xe89c4
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 1, address 0xe8ad8
} // line 1, address 0xe8ad8
{ // line 63, address 0xe8ad8
{ // line 63, address 0xe8ad8
int dz; // $a0
int dx; // $v0
} // line 63, address 0xe8ad8
} // line 63, address 0xe8ad8
{ // line 63, address 0xe8ad8
{ // line 63, address 0xe8ad8
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 64, address 0xe8c18
} // line 64, address 0xe8c18
{ // line 66, address 0xe8c18
{ // line 66, address 0xe8c18
int dz; // $a0
int dx; // $v0
} // line 66, address 0xe8c18
} // line 66, address 0xe8c18
{ // line 66, address 0xe8c18
{ // line 66, address 0xe8c18
unsigned int parent; // $a2
unsigned int i; // $a3
} // line 66, address 0xe8d18
} // line 66, address 0xe8d18
} // line 66, address 0xe8d18
} // line 66, address 0xe8d18
{ // line 77, address 0xe8d54
int i; // $s0
{ // line 1, address 0xe8df4
} // line 1, address 0xe8dfc
} // line 91, address 0xe8dfc
{ // line 94, address 0xe8dfc
int i; // $a1
int maxRet; // $a0
} // line 105, address 0xe8e70
{ // line 108, address 0xe8e70
int dx; // $a0
int dy; // $v1
int dz; // $v0
} // line 112, address 0xe8f00
} // line 113, address 0xe8f00
/*
* Offset 0xE8F00
* D:\driver2\game\C\PATHFIND.C (line 1050)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
int /*$ra*/ getHeadingToPlayer(int vx /*$s4*/, int vy /*$a1*/, int vz /*$s3*/)
{ // line 1, address 0xe8f00
int d1; // $s2
int d2; // $s1
int d3; // $s0
struct VECTOR pos; // stack address -48
{ // line 1, address 0xe8f00
int dx; // $a3
int dy; // $v1
int dz; // $v0
int playerHereDistSq; // $a3
{ // line 21, address 0xe8f98
} // line 23, address 0xe8f98
} // line 24, address 0xe8f98
{ // line 48, address 0xe8ff8
} // line 50, address 0xe9024
{ // line 52, address 0xe9030
} // line 60, address 0xe9058
{ // line 56, address 0xe9058
} // line 61, address 0xe90a4
} // line 62, address 0xe90a4
/*
* Offset 0xE90A4
* D:\driver2\game\C\PATHFIND.C (line 659)
* Stack frame base $sp, length 0
*/
void /*$ra*/ setDistance(struct tNode *n /*$a0*/, unsigned short dist /*$a1*/)
{
}

415
src/C/pause.c Normal file
View File

@ -0,0 +1,415 @@
#include "../decomp_defs.h"
void PauseMap(int direction);
void SfxVolume(int direction);
void MusicVolume(int direction);
void SaveReplay(int direction);
void SaveGame(int direction);
void EnterName();
char EnterScoreText[32] = { 0 };
MENU_ITEM MainPauseItems[9] =
{
{ "Resume", 1u, 2u, NULL, MENU_QUIT_CONTINUE, NULL },
{ "View map", 3u, 2u, &PauseMap, MENU_QUIT_NONE, NULL },
{ "Restart", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Effects volume", 13u, 2u, &SfxVolume, MENU_QUIT_NONE, NULL },
{ "Music volume", 21u, 2u, &MusicVolume, MENU_QUIT_NONE, NULL },
{ "Film director", 1u, 2u, NULL, MENU_QUIT_DIRECTOR, NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM MultiplayerPauseItems[7] =
{
{ "Resume", 1u, 2u, NULL, MENU_QUIT_CONTINUE, NULL },
{ "Restart", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Effects volume", 13u, 2u, &SfxVolume, MENU_QUIT_NONE, NULL },
{ "Music volume", 21u, 2u, &MusicVolume, MENU_QUIT_NONE, NULL },
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM CutscenePauseItems[6] =
{
{ "Continue", 1u, 2u, NULL, MENU_QUIT_CONTINUE, NULL },
{ "Restart", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Effects volume", 13u, 2u, &SfxVolume, MENU_QUIT_NONE, NULL },
{ "Music volume", 21u, 2u, &MusicVolume, MENU_QUIT_NONE, NULL },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM MissionCompleteItems[8] =
{
{ "Save game", 3u, 2u, &SaveGame, MENU_QUIT_NONE, NULL },
{ "Next mission", 1u, 2u, NULL, MENU_QUIT_NEXTMISSION, NULL },
{ "Film director",1u,2u,NULL,MENU_QUIT_DIRECTOR,NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Save replay", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Restart", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM MissionFailedItems[6] =
{
{ "Film director",1u,2u,NULL,MENU_QUIT_DIRECTOR,NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Exit", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Retry mission",65u,2u,NULL,MENU_QUIT_NONE,&YesNoRestartHeader },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM TakeARideFinishedItems[6] =
{
{ "Restart", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Film director",1u,2u,NULL,MENU_QUIT_DIRECTOR,NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Save replay", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM DrivingGameFinishedItems[7] =
{
{ "Try again", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ &EnterScoreText, 3u, 2u, &EnterName, MENU_QUIT_NONE, NULL },
{ "Film director",1u,2u,NULL,MENU_QUIT_DIRECTOR,NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Save replay", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM MultiplayerFinishedItems[5] =
{
{ "Try again", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Save replay", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM ChaseGameFinishedItems[6] =
{
{ "Try again", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoRestartHeader },
{ "Film director",1u,2u,NULL,MENU_QUIT_DIRECTOR,NULL},
{ "Quick replay",1u,2u,NULL,MENU_QUIT_QUICKREPLAY,NULL},
{ "Save replay", 3u, 2u, &SaveReplay, MENU_QUIT_NONE, NULL },
{ "Exit", 65u, 2u, NULL, MENU_QUIT_NONE, &YesNoQuitHeader },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM YesNoRestartItems[3] =
{
{ "NO", 1u, 2u, NULL, MENU_QUIT_BACKMENU, NULL },
{ "YES", 1u, 2u, NULL, MENU_QUIT_RESTART, NULL },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM YesNoQuitItems[3] =
{
{ "NO", 1u, 2u, NULL, MENU_QUIT_BACKMENU, NULL },
{ "YES", 1u, 2u, NULL, MENU_QUIT_QUIT, NULL },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM NoPadItems[1] =
{
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL}
};
MENU_ITEM NoMultiPadItems[2] =
{
{ "Exit", 1u, 2u, NULL, MENU_QUIT_QUIT, NULL },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_ITEM InvalidPadItems[1] =
{
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL}
};
MENU_ITEM InvalidMultiPadItems[2] =
{
{ "Exit", 1u, 2u, NULL, MENU_QUIT_QUIT, NULL },
{ NULL, 128u, 0u, NULL, MENU_QUIT_NONE, NULL }
};
MENU_HEADER PauseMenuHeader =
{ "Game paused", { 0, 0, 0, 0 }, 0u, MainPauseItems };
MENU_HEADER MultiplayerPauseHeader =
{ "Game paused", { 0, 0, 0, 0 }, 0u, MultiplayerPauseItems };
MENU_HEADER CutscenePauseMenuHeader =
{ "Game paused", { 0, 0, 0, 0 }, 0u, CutscenePauseItems };
MENU_HEADER MissionCompleteHeader =
{ "Mission successful", { 0, 0, 0, 0 }, 0u, MissionCompleteItems };
MENU_HEADER MissionFailedHeader =
{ "Mission failed", { 0, 0, 0, 0 }, 0u, MissionFailedItems };
MENU_HEADER TakeARideFinishedHeader =
{ "Game over", { 0, 0, 0, 0 }, 0u, TakeARideFinishedItems };
MENU_HEADER DrivingGameFinishedHeader =
{ "Game over", { 0, 0, 0, 0 }, 0u, DrivingGameFinishedItems };
MENU_HEADER MultiplayerFinishedHeader =
{ "Game over", { 0, 0, 0, 0 }, 0u, MultiplayerFinishedItems };
MENU_HEADER ChaseGameFinishedHeader =
{ "Game over", { 0, 0, 0, 0 }, 0u, ChaseGameFinishedItems };
MENU_HEADER NoPadHeader =
{
"Insert controller in slot 1",
{ 0, 0, 0, 0 },
0u,
NoPadItems
};
MENU_HEADER NoMultiPadHeader =
{
"Insert controller in slot 1",
{ 0, 0, 0, 0 },
0u,
NoMultiPadItems
};
MENU_HEADER InvalidPadHeader =
{
"Incompatible controller in port 1",
{ 0, 0, 0, 0 },
0u,
InvalidPadItems
};
MENU_HEADER InvalidMultiPadHeader =
{
"Incompatible controller in port 1",
{ 0, 0, 0, 0 },
0u,
InvalidMultiPadItems
};
int playerwithcontrol[3] = { 0 };
MENU_HEADER YesNoRestartHeader =
{ "Are you sure?", { 0, 0, 0, 0 }, 0u, YesNoRestartItems };
MENU_HEADER YesNoQuitHeader =
{ "Are you sure?", { 0, 0, 0, 0 }, 0u, YesNoQuitItems };
/*
* Offset 0x6BFB8
* D:\driver2\game\C\PAUSE.C (line 1004)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ ShowPauseMenu(enum PAUSEMODE mode /*$s0*/)
{ // line 1, address 0x6bfb8
enum PAUSEMODE passed_mode; // $s2
{ // line 58, address 0x6c128
} // line 81, address 0x6c1a8
{ // line 88, address 0x6c1e0
struct RECT rect; // stack address -32
} // line 97, address 0x6c264
} // line 133, address 0x6c314
/*
* Offset 0x6C314
* D:\driver2\game\C\PAUSE.C (line 1216)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitaliseMenu(enum PAUSEMODE mode /*$a2*/)
{ // line 1, address 0x6c314
struct MENU_ITEM *pItem; // $a0
int i; // $a1
} // line 172, address 0x6c720
/*
* Offset 0x6C720
* D:\driver2\game\C\PAUSE.C (line 1401)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupMenu(struct MENU_HEADER *menu /*$a0*/, int back /*$a1*/)
{ // line 1, address 0x6c720
struct MENU_ITEM *pItem; // $a2
int count; // $a3
} // line 30, address 0x6c85c
/*
* Offset 0x6C85C
* D:\driver2\game\C\PAUSE.C (line 1443)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawVisibleMenus()
{ // line 2, address 0x6c85c
struct MENU_HEADER *pActive; // $s5
struct MENU_ITEM *pItem; // $s1
struct POLY_FT3 *null; // $a0
int i; // stack address -48
int ypos; // $s3
int xpos; // $fp
int width; // $s4
{ // line 30, address 0x6c928
unsigned char r; // $s6
unsigned char b; // $s7
int x1; // $s0
int x2; // $s2
} // line 66, address 0x6caa8
} // line 85, address 0x6cc50
/*
* Offset 0x6CC50
* D:\driver2\game\C\PAUSE.C (line 1543)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ControlMenu()
{ // line 2, address 0x6cc50
static int debounce; // address 0x38
unsigned short paddata; // $a2
unsigned short paddirect; // $a3
{ // line 53, address 0x6cd3c
int doit; // $v1
} // line 78, address 0x6cde0
{ // line 132, address 0x6cfbc
int i; // $a0
} // line 139, address 0x6d020
{ // line 149, address 0x6d040
int i; // $a0
} // line 160, address 0x6d09c
} // line 162, address 0x6d09c
/*
* Offset 0x6D0AC
* D:\driver2\game\C\PAUSE.C (line 1787)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ EnterScoreName()
{ // line 2, address 0x6d0ac
struct SCORE_ENTRY *table; // stack address -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, address 0x6d38c
/*
* Offset 0x6D38C
* D:\driver2\game\C\PAUSE.C (line 1943)
* Stack frame base $sp, length 80
* Saved registers at address -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, address 0x6d38c
char *text; // $s1
int min; // $t1
int frac; // $v0
int i; // $s5
} // line 69, address 0x6d6cc
/*
* Offset 0x6D6FC
* D:\driver2\game\C\PAUSE.C (line 2020)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawHighScoreMenu(int selection /*stack 0*/)
{ // line 1, address 0x6d6fc
struct POLY_FT3 *null; // $a0
char text[4]; // stack address -48
unsigned char r; // $s3
unsigned char g; // $s5
unsigned char b; // $s2
int i; // $s0
int ypos; // $s4
} // line 55, address 0x6da18
/*
* Offset 0x6DA18
* D:\driver2\game\C\PAUSE.C (line 1153)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SaveReplay(int direction /*$a0*/)
{
}
/*
* Offset 0x6DA3C
* D:\driver2\game\C\PAUSE.C (line 1158)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SaveGame(int direction /*$a0*/)
{
}
/*
* Offset 0x6DA60
* D:\driver2\game\C\PAUSE.C (line 1163)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ EnterName()
{
}
/*
* Offset 0x6DA80
* D:\driver2\game\C\PAUSE.C (line 1185)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ MaxMenuStringLength(struct MENU_HEADER *pMenu /*$v0*/)
{ // line 1, address 0x6da80
struct MENU_ITEM *pItems; // $s1
int max; // $s2
int temp; // $s0
} // line 21, address 0x6db38
/*
* Offset 0x6DB38
* D:\driver2\game\C\PAUSE.C (line 1710)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ PauseMap(int direction /*$a0*/)
{
}
/*
* Offset 0x6DB9C
* D:\driver2\game\C\PAUSE.C (line 1725)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SfxVolume(int direction /*$a0*/)
{ // line 1, address 0x6db9c
} // line 19, address 0x6dc6c
/*
* Offset 0x6DC6C
* D:\driver2\game\C\PAUSE.C (line 1746)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ MusicVolume(int direction /*$a0*/)
{ // line 1, address 0x6dc6c
} // line 19, address 0x6dd3c
/*
* Offset 0x6DD3C
* D:\driver2\game\C\PAUSE.C (line 1139)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DrawPauseMenus()
{
}

851
src/C/pedest.c Normal file
View File

@ -0,0 +1,851 @@
#include "../decomp_defs.h"
MODEL* pmTannerModels[17] = {0};
typedef void (*pedFunc)(struct PEDESTRIAN *pPed);
void PedDoNothing(struct PEDESTRIAN *pPed);
void PedUserWalker(struct PEDESTRIAN *pPed);
void PedUserRunner(struct PEDESTRIAN *pPed);
void PedGetInCar(struct PEDESTRIAN *pPed);
void PedGetOutCar(struct PEDESTRIAN *pPed);
void PedCarryOutAnimation(struct PEDESTRIAN *pPed);
void CivPedDoNothing(struct PEDESTRIAN *pPed);
void CivPedWalk(struct PEDESTRIAN *pPed);
void CivPedSit(struct PEDESTRIAN *pPed);
void CivPedJump(struct PEDESTRIAN *pPed);
void PedPressButton(struct PEDESTRIAN *pPed);
void TannerSitDown(struct PEDESTRIAN *pPed);
void CopStand(struct PEDESTRIAN *pPed);
void CivGetIn(struct PEDESTRIAN *pPed);
pedFunc fpPedPersonalityFunctions[] = {
PedDoNothing, PedUserWalker, PedUserRunner,
PedGetInCar, PedGetOutCar,
PedCarryOutAnimation,
CivPedDoNothing, CivPedWalk, CivPedSit, CivPedJump,
PedPressButton, TannerSitDown, CopStand, CivGetIn };
VECTOR tannerLookAngle = { 0, 0, 0, 0 };
long force[4] = { 0x9000, 0, 0, 0 };
long point[4] = { 0, 0, 0x5A, 0 };
/*
* Offset 0x6DD9C
* D:\driver2\game\C\PEDEST.C (line 1137)
* Stack frame base $sp, length 0
*/
void /*$ra*/ IHaveThePower()
{ // line 2, address 0x6dd9c
struct _CAR_DATA *cp; // $t4
{ // line 15, address 0x6de20
} // line 33, address 0x6df88
} // line 45, address 0x6dfbc
/*
* Offset 0x6DFBC
* D:\driver2\game\C\PEDEST.C (line 1191)
* Stack frame base $sp, length 104
* Saved registers at address -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, address 0x6dfbc
struct VECTOR vec; // stack address -88
int mapheight; // $s2
struct VECTOR normal; // stack address -72
struct VECTOR out; // stack address -56
struct _sdPlane *SurfacePtr; // stack address -24
{ // line 33, address 0x6e030
struct VECTOR tVec; // stack address -40
struct _sdPlane *plane; // $v0
int mH; // $v1
int sI; // $a0
} // line 86, address 0x6e16c
{ // line 168, address 0x6e3f8
} // line 174, address 0x6e458
} // line 176, address 0x6e458
/*
* Offset 0x6E470
* D:\driver2\game\C\PEDEST.C (line 1375)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitTanner()
{ // line 2, address 0x6e470
} // line 58, address 0x6e62c
/*
* Offset 0x6E62C
* D:\driver2\game\C\PEDEST.C (line 1466)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitPedestrians()
{ // line 2, address 0x6e62c
int loop; // $a1
struct SEATED_PEDESTRIANS *seatedptr; // $s2
} // line 47, address 0x6e72c
/*
* Offset 0x6E72C
* D:\driver2\game\C\PEDEST.C (line 1623)
* Stack frame base $sp, length 104
* Saved registers at address -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*/)
{ // line 1, address 0x6e72c
struct PEDESTRIAN *pPed; // $s1
struct PEDESTRIAN *pSPed; // $a0
struct VECTOR v; // stack address -72
int nx; // $s4
int nz; // $s2
long w; // $s0
long x; // $s5
long y; // stack address -52
long z; // $s1
long d; // stack address -48
int side; // $fp
int id; // $s3
{ // line 65, address 0x6e83c
{ // line 140, address 0x6eab0
} // line 140, address 0x6eab0
{ // line 184, address 0x6ebb0
} // line 184, address 0x6ebb0
} // line 184, address 0x6ebb0
} // line 212, address 0x6ecf0
/*
* Offset 0x6ECF0
* D:\driver2\game\C\PEDEST.C (line 1877)
* Stack frame base $sp, length 168
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ PlaceRoadBlockCops()
{ // line 2, address 0x6ecf0
struct _CAR_DATA *pCar; // $a0
struct _CAR_DATA *pCopCars[16]; // stack address -152
int numCops; // $fp
{ // line 19, address 0x6ed84
int x; // $s2
int z; // $s0
int w; // $s0
int i; // $s7
int s1; // $s1
int s2; // $a3
struct VECTOR vert; // stack address -88
long disp[4]; // stack address -72
long dir[4]; // stack address -56
int alpha; // $s1
} // line 89, address 0x6f044
} // line 91, address 0x6f044
/*
* Offset 0x6F074
* D:\driver2\game\C\PEDEST.C (line 1975)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ CreatePedAtLocation(long *pPos[4] /*$s2*/, int pedType /*$s1*/)
{ // line 1, address 0x6f074
struct PEDESTRIAN *pPed; // $s0
} // line 70, address 0x6f1d4
/*
* Offset 0x6F1D4
* D:\driver2\game\C\PEDEST.C (line 2168)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ ControlPedestrians()
{ // line 2, address 0x6f1d4
struct PEDESTRIAN *pPed; // $s0
struct PEDESTRIAN *pPedNext; // $s2
struct _CAR_DATA *pCar; // $v0
{ // line 57, address 0x6f2d4
} // line 65, address 0x6f318
} // line 73, address 0x6f344
/*
* Offset 0x6F344
* D:\driver2\game\C\PEDEST.C (line 2385)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedDoNothing(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x6F614
* D:\driver2\game\C\PEDEST.C (line 2523)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedUserRunner(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x6f614
} // line 109, address 0x6f874
/*
* Offset 0x6F874
* D:\driver2\game\C\PEDEST.C (line 2827)
* Stack frame base $sp, length 96
* Saved registers at address -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, address 0x6f874
int alpha; // $s2
long disp[4]; // stack address -80
long dir[4]; // stack address -64
struct SVECTOR vert; // stack address -48
int x; // $s4
int z; // $s0
int a; // $s6
int nx; // $a3
int nz; // $a1
} // line 64, address 0x6faa4
/*
* Offset 0x6FAA4
* D:\driver2\game\C\PEDEST.C (line 2898)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SetupGetInCar(struct PEDESTRIAN *pPed /*$s2*/)
{ // line 1, address 0x6faa4
int alpha; // $s1
long disp[4]; // stack address -72
long dir[4]; // stack address -56
struct SVECTOR vert; // stack address -40
{ // line 36, address 0x6fb94
int x; // $t1
int z; // $t2
int a; // $a0
int nx; // $a3
int nz; // $a1
} // line 59, address 0x6fc8c
{ // line 70, address 0x6fcd8
long pos[4]; // stack address -32
} // line 71, address 0x6fcd8
} // line 90, address 0x6fd70
/*
* Offset 0x6FD70
* D:\driver2\game\C\PEDEST.C (line 3074)
* Stack frame base $sp, length 0
*/
void /*$ra*/ TannerCameraHandler(struct PEDESTRIAN *pPed /*$a0*/)
{ // line 2, address 0x6fd70
int padsteer; // $a3
int maxY; // $t1
int maxX; // $t5
int range; // $t0
int minX; // $t4
int extra; // $a3
} // line 76, address 0x6ffb0
/*
* Offset 0x6FFB0
* D:\driver2\game\C\PEDEST.C (line 3157)
* Stack frame base $sp, length 40
* Saved registers at address -8: ra
*/
void /*$ra*/ TannerSitDown(struct PEDESTRIAN *pPed /*$a2*/)
{ // line 1, address 0x6ffb0
struct VECTOR angle; // stack address -24
} // line 62, address 0x70138
/*
* Offset 0x70138
* D:\driver2\game\C\PEDEST.C (line 3227)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ AnimatePed(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x70138
{ // line 11, address 0x70158
int mapheight; // $a3
int reverse; // $s1
{ // line 14, address 0x70158
struct VECTOR vec; // stack address -32
} // line 39, address 0x701c4
{ // line 103, address 0x70374
int sfc; // $v1
} // line 108, address 0x70424
} // line 121, address 0x704d0
} // line 123, address 0x704d0
/*
* Offset 0x704E4
* D:\driver2\game\C\PEDEST.C (line 3447)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ PingInPedestrians()
{ // line 2, address 0x704e4
int bFound; // $s1
struct VECTOR randomLoc; // stack address -88
struct VECTOR baseLoc; // stack address -72
int i; // $s2
int pingInDist; // $a2
struct VECTOR position; // stack address -56
struct VECTOR target; // stack address -40
struct PEDESTRIAN *pedestrian; // $s1
{ // line 37, address 0x70580
{ // line 55, address 0x70660
struct PEDESTRIAN *pPed; // $a2
{ // line 73, address 0x70690
int x; // $v1
int z; // $v0
int radius; // $v1
} // line 75, address 0x70690
} // line 77, address 0x706dc
} // line 79, address 0x706dc
{ // line 87, address 0x70714
{ // line 136, address 0x7085c
int rval; // $v1
} // line 175, address 0x708c0
} // line 180, address 0x708c0
} // line 185, address 0x708c0
/*
* Offset 0x708E0
* D:\driver2\game\C\PEDEST.C (line 3685)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ FindPointOfCollision(struct _CAR_DATA *pCar /*$s3*/, struct VECTOR *pPos /*$a1*/)
{ // line 1, address 0x708e0
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 address -40
static struct CRET2D collisionResult; // address 0x0
} // line 68, address 0x70b04
/*
* Offset 0x70B04
* D:\driver2\game\C\PEDEST.C (line 3762)
* Stack frame base $sp, length 136
* Saved registers at address -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, address 0x70b04
int carLength[2]; // stack address -120
struct _CAR_DATA *cp0; // $s0
struct _CAR_DATA *cp1; // $s1
static struct CRET2D collisionResult; // address 0x30
unsigned int dNewLBODY[2]; // stack address -112
int speed; // $v0
{ // line 36, address 0x70b94
{ // line 36, address 0x70b94
} // line 36, address 0x70b94
{ // line 53, address 0x70c6c
struct VECTOR velocity; // stack address -104
long pointVel[4]; // stack address -88
long reaction[4]; // stack address -72
long lever[4]; // stack address -56
int strikeVel; // $t1
{ // line 84, address 0x70dec
} // line 95, address 0x70dec
{ // line 99, address 0x70e18
int twistY; // $a2
int lever_dot_n; // $a0
int displacementsquared; // $a1
int denom; // $a0
} // line 112, address 0x70ef4
} // line 133, address 0x71040
} // line 142, address 0x71070
} // line 145, address 0x710bc
/*
* Offset 0x710BC
* D:\driver2\game\C\PEDEST.C (line 3946)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetupCivJump(struct PEDESTRIAN *pPed /*$s1*/, struct _CAR_DATA *cp /*$s0*/)
{ // line 1, address 0x710bc
long disp[4]; // stack address -48
long dir[4]; // stack address -32
int angle; // $s0
{ // line 14, address 0x71128
short scale; // $a2
} // line 21, address 0x7114c
{ // line 62, address 0x71250
} // line 81, address 0x71314
} // line 94, address 0x7138c
/*
* Offset 0x7138C
* D:\driver2\game\C\PEDEST.C (line 4101)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ CivPedWalk(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x7138c
int turn; // $a1
int offset1; // $t0
int offset2; // $v1
int lookahead; // $s3
int speed; // $s1
} // line 81, address 0x71664
/*
* Offset 0x71664
* D:\driver2\game\C\PEDEST.C (line 4508)
* Stack frame base $sp, length 32
*/
void /*$ra*/ CorrectPathPosition(struct PEDESTRIAN *pedestrian /*$a0*/, struct VECTOR *position /*$a1*/)
{ // line 2, address 0x71664
struct VECTOR vec; // stack address -16
} // line 102, address 0x71664
/*
* Offset 0x71670
* D:\driver2\game\C\PEDEST.C (line 4619)
* Stack frame base $sp, length 48
* Saved registers at address -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, address 0x71670
int dir; // $s2
int num; // $s1
int rx; // $v1
int rz; // $a0
int mask; // $s0
{ // line 50, address 0x71728
} // line 62, address 0x71774
} // line 115, address 0x71814
/*
* Offset 0x71814
* D:\driver2\game\C\PEDEST.C (line 4984)
* Stack frame base $sp, length 0
*/
struct SEATED_PEDESTRIANS * /*$ra*/ FindTannerASeat(struct PEDESTRIAN *pPed /*$t4*/)
{ // line 1, address 0x71814
struct SEATED_PEDESTRIANS *seatedptr; // $a2
struct SEATED_PEDESTRIANS *theOne; // $t1
int dx; // $a0
int dz; // $v1
int distsqr; // $v0
int bestSqr; // $t2
} // line 39, address 0x71930
/*
* Offset 0x71930
* D:\driver2\game\C\PEDEST.C (line 5031)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ add_seated(struct SEATED_PEDESTRIANS *seatedptr /*$s0*/, int seat_index /*$s2*/)
{ // line 1, address 0x71930
struct PEDESTRIAN *pedestrian; // $s1
int index; // $v0
} // line 45, address 0x71aac
/*
* Offset 0x71AC4
* D:\driver2\game\C\PEDEST.C (line 5084)
* Stack frame base $sp, length 16
*/
void /*$ra*/ set_coll_box(int index /*$t2*/, struct _CAR_DATA *cp /*$t0*/, int address /*$t3*/)
{ // line 1, address 0x71ac4
struct VECTOR BoxCentre; // stack address -16
int boxsize; // $t1
} // line 26, address 0x71bdc
/*
* Offset 0x71BE4
* D:\driver2\game\C\PEDEST.C (line 5118)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ BuildCarCollisionBox()
{ // line 2, address 0x71be4
struct _CAR_DATA *cp; // $s3
int count1; // $s4
int i; // $t1
{ // line 28, address 0x71d24
int x; // $a0
int z; // $a2
} // line 37, address 0x71dc0
} // line 53, address 0x71e74
/*
* Offset 0x71E74
* D:\driver2\game\C\PEDEST.C (line 5249)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ CalculatePedestrianInterest(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x71e74
int interest; // $a2
int dist; // $v1
struct _CAR_DATA *pCar; // $a2
struct VECTOR v1; // stack address -40
struct VECTOR v2; // stack address -24
} // line 69, address 0x71fac
/*
* Offset 0x71FBC
* D:\driver2\game\C\PEDEST.C (line 1521)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DestroyPedestrians()
{ // line 2, address 0x71fbc
} // line 13, address 0x7201c
/*
* Offset 0x7201C
* D:\driver2\game\C\PEDEST.C (line 1567)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DestroyPedestrian(struct PEDESTRIAN *pPed /*$a1*/)
{ // line 1, address 0x7201c
{ // line 38, address 0x720cc
struct SEATED_PEDESTRIANS *seatedptr; // $a0
} // line 41, address 0x720f8
} // line 49, address 0x72114
/*
* Offset 0x72114
* D:\driver2\game\C\PEDEST.C (line 1842)
* Stack frame base $sp, length 0
*/
struct PEDESTRIAN * /*$ra*/ CreatePedestrian()
{ // line 2, address 0x72114
} // line 27, address 0x7217c
/*
* Offset 0x72184
* D:\driver2\game\C\PEDEST.C (line 4221)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ HandlePedestrians()
{ // line 2, address 0x72184
} // line 236, address 0x721c4
/*
* Offset 0x721D4
* D:\driver2\game\C\PEDEST.C (line 3357)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DeActivatePlayerPedestrian(struct PEDESTRIAN *pPed /*$s3*/)
{ // line 1, address 0x721d4
int distToCarSq; // stack address -32
struct _CAR_DATA *closestCar; // $s1
struct _PLAYER *pPlayer; // $v0
struct VECTOR point; // stack address -48
int getIn; // $s2
{ // line 27, address 0x72284
} // line 38, address 0x722dc
} // line 39, address 0x722f8
/*
* Offset 0x722F8
* D:\driver2\game\C\PEDEST.C (line 2052)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ DrawAllPedestrians()
{ // line 2, address 0x722f8
struct PEDESTRIAN *pPed; // $s0
int pedType; // $s2
struct MATRIX mStore; // stack address -56
{ // line 19, address 0x72384
{ // line 26, address 0x723b4
} // line 26, address 0x723b4
} // line 33, address 0x723cc
{ // line 49, address 0x7243c
} // line 54, address 0x72468
} // line 85, address 0x72498
/*
* Offset 0x72498
* D:\driver2\game\C\PEDEST.C (line 2145)
* Stack frame base $sp, length 0
*/
int /*$ra*/ TannerActionHappening()
{ // line 2, address 0x72498
struct PEDESTRIAN *pPed; // $a0
} // line 13, address 0x724e0
/*
* Offset 0x724E0
* D:\driver2\game\C\PEDEST.C (line 1440)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetTannerPosition(struct VECTOR *pVec /*$a0*/)
{ // line 1, address 0x724e0
struct PEDESTRIAN *pPed; // $a1
} // line 19, address 0x72568
/*
* Offset 0x72568
* D:\driver2\game\C\PEDEST.C (line 4924)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetPedestrianTurn(struct PEDESTRIAN *pedestrian /*$a0*/, int turn /*$a1*/)
{ // line 1, address 0x72568
int dir; // $a2
int speed; // $v1
} // line 11, address 0x725ec
/*
* Offset 0x725EC
* D:\driver2\game\C\PEDEST.C (line 5325)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ PedSurfaceType(struct VECTOR *ped_pos /*$a0*/)
{ // line 5, address 0x725ec
struct _sdPlane *sfc_ptr; // $v0
} // line 10, address 0x72620
/*
* Offset 0x72620
* D:\driver2\game\C\PEDEST.C (line 4845)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ IsPavement(int x /*$a0*/, int y /*$a1*/, int z /*$a2*/, struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x72620
struct VECTOR vec; // stack address -24
int r; // $v1
} // line 72, address 0x726ac
/*
* Offset 0x726AC
* D:\driver2\game\C\PEDEST.C (line 4943)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
struct SEATED_PEDESTRIANS * /*$ra*/ FindSeated()
{ // line 2, address 0x726ac
struct SEATED_PEDESTRIANS *seatedptr; // $s0
{ // line 7, address 0x726d4
int dx; // $v1
int dz; // $v0
int distsqr; // $v1
int count1; // $a2
} // line 32, address 0x7278c
} // line 34, address 0x727a0
/*
* Offset 0x727A0
* D:\driver2\game\C\PEDEST.C (line 5178)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
struct _CAR_DATA * /*$ra*/ CheckForCar(struct PEDESTRIAN *pedestrian /*$s3*/)
{ // line 1, address 0x727a0
int count; // $s0
{ // line 5, address 0x727d8
} // line 26, address 0x727f8
{ // line 28, address 0x7281c
} // line 35, address 0x7281c
{ // line 39, address 0x72868
} // line 43, address 0x72884
} // line 45, address 0x728a4
/*
* Offset 0x728A4
* D:\driver2\game\C\PEDEST.C (line 4465)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedestrianActionInit_WalkToTarget(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x728a4
int dir; // $v1
} // line 31, address 0x72920
/*
* Offset 0x72930
* D:\driver2\game\C\PEDEST.C (line 3060)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupTannerSitDown(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x7296C
* D:\driver2\game\C\PEDEST.C (line 3026)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupPressButton(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x729AC
* D:\driver2\game\C\PEDEST.C (line 2639)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedUserWalker(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x729ac
static int speed; // address 0x80
} // line 55, address 0x72a78
/*
* Offset 0x72A78
* D:\driver2\game\C\PEDEST.C (line 2702)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedCarryOutAnimation(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x72BC4
* D:\driver2\game\C\PEDEST.C (line 2994)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedGetInCar(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x72bc4
long disp[4]; // stack address -48
long dir[4]; // stack address -32
struct SVECTOR vert; // stack address -16
} // line 24, address 0x72c54
/*
* Offset 0x72C54
* D:\driver2\game\C\PEDEST.C (line 2796)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ PedGetOutCar(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x72CF8
* D:\driver2\game\C\PEDEST.C (line 3040)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ PedPressButton(struct PEDESTRIAN *pPed /*$v1*/)
{
}
/*
* Offset 0x72D48
* D:\driver2\game\C\PEDEST.C (line 3402)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CivPedDoNothing(struct PEDESTRIAN *pPed /*$a0*/)
{
}
/*
* Offset 0x72D50
* D:\driver2\game\C\PEDEST.C (line 4190)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CivPedSit(struct PEDESTRIAN *pPed /*$a0*/)
{ // line 2, address 0x72d50
} // line 18, address 0x72d58
/*
* Offset 0x72D58
* D:\driver2\game\C\PEDEST.C (line 4047)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ CivPedJump(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x72d58
} // line 26, address 0x72e08
/*
* Offset 0x72E08
* D:\driver2\game\C\PEDEST.C (line 2353)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ CopStand(struct PEDESTRIAN *pPed /*$s0*/)
{ // line 1, address 0x72e08
struct VECTOR v; // stack address -24
} // line 24, address 0x72e64
/*
* Offset 0x72E64
* D:\driver2\game\C\PEDEST.C (line 2325)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ CivGetIn(struct PEDESTRIAN *pPed /*$s2*/)
{ // line 1, address 0x72e64
struct DRIVER2_STRAIGHT *str; // $s1
struct DRIVER2_CURVE *crv; // $s0
{ // line 1, address 0x72e64
} // line 20, address 0x72f4c
} // line 21, address 0x72f4c
/*
* Offset 0x72F4C
* D:\driver2\game\C\PEDEST.C (line 3640)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ TannerCollision(struct PEDESTRIAN *pPed /*$s1*/)
{ // line 1, address 0x72f4c
} // line 35, address 0x73024
/*
* Offset 0x73038
* D:\driver2\game\C\PEDEST.C (line 1541)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ DestroyCivPedestrians()
{ // line 2, address 0x73038
struct PEDESTRIAN *pPed; // $v1
struct PEDESTRIAN *pHPed; // $s0
} // line 18, address 0x730a0
/*
* Offset 0x730A0
* D:\driver2\game\C\PEDEST.C (line 2256)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupDoNowt(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x730E4
* D:\driver2\game\C\PEDEST.C (line 2275)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupWalker(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x73120
* D:\driver2\game\C\PEDEST.C (line 2291)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupRunner(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x73164
* D:\driver2\game\C\PEDEST.C (line 2302)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupBack(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x731A4
* D:\driver2\game\C\PEDEST.C (line 3411)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetupCivPedRouteData(struct VECTOR *pPos /*$s1*/)
{ // line 1, address 0x731a4
struct VECTOR baseLoc; // stack address -32
} // line 24, address 0x73260
/*
* Offset 0x73260
* D:\driver2\game\C\PEDEST.C (line 3915)
* Stack frame base $sp, length 0
*/
int /*$ra*/ PingOutPed(struct PEDESTRIAN *pPed /*$a2*/)
{ // line 1, address 0x73260
int px; // $a0
int pz; // $v1
int ps; // $a0
} // line 23, address 0x732d8
/*
* Offset 0x732D8
* D:\driver2\game\C\PEDEST.C (line 4080)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupCivPedWalk(struct PEDESTRIAN *pPed /*$s0*/)
{
}
/*
* Offset 0x73328
* D:\driver2\game\C\PEDEST.C (line 5231)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheckForPlayerCar(struct PEDESTRIAN *pedestrian /*$a0*/, struct CAR_COLLISION_BOX *collision_box /*$a1*/)
{
}
/*
* Offset 0x73390
* D:\driver2\game\C\PEDEST.C (line 5344)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessChairLump(char *lump_file /*$a0*/, int lump_size /*$a1*/)
{
}

67
src/C/players.c Normal file
View File

@ -0,0 +1,67 @@
/*
* Offset 0x7339C
* D:\driver2\game\C\PLAYERS.C (line 130)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ ChangeCarPlayerToPed(int playerID /*$s0*/)
{ // line 1, address 0x7339c
struct _CAR_DATA *lcp; // $s2
} // line 51, address 0x73574
/*
* Offset 0x73574
* D:\driver2\game\C\PLAYERS.C (line 184)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ ChangePedPlayerToCar(int playerID /*$s4*/, struct _CAR_DATA *newCar /*$s2*/)
{ // line 1, address 0x73574
struct _PLAYER *lPlayer; // $s1
int siren; // $s5
long *pos; // $s3
int carParked; // $s6
} // line 60, address 0x73900
/*
* Offset 0x73900
* D:\driver2\game\C\PLAYERS.C (line 247)
* Stack frame base $sp, length 0
*/
void /*$ra*/ UpdatePlayers()
{ // line 2, address 0x73900
struct _PLAYER *locPlayer; // $t0
struct _CAR_DATA *cp; // $v1
} // line 39, address 0x73a40
/*
* Offset 0x73A40
* D:\driver2\game\C\PLAYERS.C (line 75)
* Stack frame base $sp, length 72
* Saved registers at address -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*/)
{ // line 1, address 0x73a40
} // line 52, address 0x73c74
/*
* Offset 0x73C74
* D:\driver2\game\C\PLAYERS.C (line 298)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RequestSlightPauseBeforeCarSoundStarts(char player_id /*$a0*/)
{
}
/*
* Offset 0x73CBC
* D:\driver2\game\C\PLAYERS.C (line 305)
* Stack frame base $sp, length 0
*/
void /*$ra*/ HaveCarSoundStraightAway(char player_id /*$a0*/)
{
}
/*
* Offset 0x73CF4
* D:\driver2\game\C\PLAYERS.C (line 310)
* Stack frame base $sp, length 0
*/
void /*$ra*/ MakeTheCarShutUp(char player_id /*$a0*/)
{
}

244
src/C/pres.c Normal file
View File

@ -0,0 +1,244 @@
#include "../decomp_defs.h"
FONT_DIGIT fontDigit[] = {
{ 2, 0xE },
{ 0x11, 0xE},
{ 0x20, 0x10},
{ 0x31, 0xF},
{ 0x41, 0xE },
{ 0x50, 0xE },
{ 4, 0x10 },
{ 0x15, 0xE },
{ 0x24, 0xF },
{ 0x34, 0x11 },
{ 0x46, 0xB },
{ 0x52, 7 },
};
TEXTURE_DETAILS button_textures[11];
char* button_names[11] = {
"BTNTRIAN",
"BTNCIRCL",
"BTNCROSS",
"BTNSQUAR",
"BTNUP",
"BTNDOWN",
"BTNLEFT",
"BTNRIGHT",
"BTNSTART",
"BTNSELEC",
"BTNDPAD",
};
/*
* Offset 0x73D30
* D:\driver2\game\C\PRES.C (line 360)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ LoadFont(char *buffer /*$a0*/)
{ // line 1, address 0x73d30
struct RECT dest; // stack address -24
char *file; // $s1
int i; // $v1
int nchars; // $s0
} // line 48, address 0x73f08
/*
* Offset 0x73F08
* D:\driver2\game\C\PRES.C (line 457)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
int /*$ra*/ PrintString(char *string /*$s3*/, int x /*$s2*/, int y /*$s6*/)
{ // line 1, address 0x73f08
struct OUT_FONTINFO *pFontInfo; // $a1
struct SPRT *font; // $s0
unsigned char width; // $s1
unsigned char c; // $s1
int index; // $v1
} // line 79, address 0x741a8
/*
* Offset 0x741A8
* D:\driver2\game\C\PRES.C (line 539)
* Stack frame base $sp, length 8
* Saved registers at address -4: s0 s1
*/
short /*$ra*/ PrintDigit(int x /*$t3*/, int y /*$s1*/, char *string /*$a2*/)
{ // line 1, address 0x741a8
struct FONT_DIGIT *pDigit; // $a1
struct SPRT *font; // $t0
char width; // $a3
char fixedWidth; // $t1
char vOff; // $t2
char h; // $a0
{ // line 13, address 0x741f8
char let; // $v1
char convLet; // $a0
} // line 44, address 0x7425c
} // line 67, address 0x743cc
/*
* Offset 0x743CC
* D:\driver2\game\C\PRES.C (line 643)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ PrintStringBoxed(char *string /*$s2*/, int ix /*$s5*/, int iy /*$a2*/)
{ // line 1, address 0x743cc
struct OUT_FONTINFO *pFontInfo; // $a1
struct SPRT *font; // $s0
char word[32]; // stack address -64
char *wpt; // $t0
char c; // $a0
int x; // $s1
int y; // $s3
int index; // $a1
int wordcount; // $s4
} // line 68, address 0x74644
/*
* Offset 0x74644
* D:\driver2\game\C\PRES.C (line 726)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ PrintScaledString(int y /*$s4*/, char *string /*$s1*/, int scale /*$s2*/)
{ // line 1, address 0x74644
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, address 0x748c0
/*
* Offset 0x748C0
* D:\driver2\game\C\PRES.C (line 819)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void * /*$ra*/ DrawButton(unsigned char button /*$a0*/, void *prim /*$s1*/, int x /*$a2*/, int y /*$a3*/)
{ // line 1, address 0x748c0
struct TEXTURE_DETAILS *btn; // $a1
struct POLY_FT3 *null; // $s0
} // line 34, address 0x74a78
/*
* Offset 0x74A78
* D:\driver2\game\C\PRES.C (line 228)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetTextColour(unsigned char Red /*$a0*/, unsigned char Green /*$a1*/, unsigned char Blue /*$a2*/)
{
}
/*
* Offset 0x74A8C
* D:\driver2\game\C\PRES.C (line 245)
* Stack frame base $sp, length 0
*/
int /*$ra*/ StringWidth(char *pString /*$a0*/)
{ // line 1, address 0x74a8c
int w; // $a2
char let; // $a1
{ // line 11, address 0x74ac8
char convLet; // $v1
} // line 21, address 0x74b00
} // line 24, address 0x74b18
/*
* Offset 0x74B18
* D:\driver2\game\C\PRES.C (line 285)
* Stack frame base $sp, length 40
* Saved registers at address -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*/)
{ // line 1, address 0x74b18
int xpos; // $s1
{ // line 17, address 0x74b7c
} // line 17, address 0x74b7c
} // line 38, address 0x74bf4
/*
* Offset 0x74BF4
* D:\driver2\game\C\PRES.C (line 333)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ PrintStringRightAligned(char *pString /*$s1*/, int x /*$s0*/, int y /*$s2*/)
{
}
/*
* Offset 0x74C40
* D:\driver2\game\C\PRES.C (line 347)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ PrintStringCentred(char *pString /*$s1*/, short y /*$a1*/)
{ // line 1, address 0x74c40
} // line 5, address 0x74c90
/*
* Offset 0x74C90
* D:\driver2\game\C\PRES.C (line 416)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ StoreClut2(unsigned long *pDest /*$a1*/, int x /*$a1*/, int y /*$a2*/)
{ // line 1, address 0x74c90
struct RECT rect; // stack address -16
} // line 10, address 0x74ccc
/*
* Offset 0x74CCC
* D:\driver2\game\C\PRES.C (line 434)
* Stack frame base $sp, length 72
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SetCLUT16Flags(unsigned short clutID /*$a0*/, unsigned short mask /*$s2*/, char transparent /*$s0*/)
{ // line 1, address 0x74ccc
unsigned short buffer[16]; // stack address -56
unsigned short *pCurrent; // $a0
char ctr; // $a1
int x; // $s3
int y; // $s1
} // line 21, address 0x74d9c
/*
* Offset 0x74D9C
* D:\driver2\game\C\PRES.C (line 612)
* Stack frame base $sp, length 24
* Saved registers at address -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 0x74DBC
* D:\driver2\game\C\PRES.C (line 800)
* Stack frame base $sp, length 0
*/
char * /*$ra*/ GetNextWord(char *string /*$a0*/, char *word /*$a1*/)
{ // line 1, address 0x74dbc
char c; // $v1
} // line 17, address 0x74dfc
/*
* Offset 0x74DFC
* D:\driver2\game\C\PRES.C (line 855)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void * /*$ra*/ SetFontTPage(void *prim /*$a0*/)
{ // line 1, address 0x74dfc
struct POLY_FT3 *null; // $s0
} // line 16, address 0x74ebc
/*
* Offset 0x74EBC
* D:\driver2\game\C\PRES.C (line 713)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitButtonTextures()// (F)
{ // line 2, address 0x74ebc
int i; // $s0
for (i = 0; i < 11; i++)
{
GetTextureDetails(button_names[i], &button_textures[i]);
}
} // line 6, address 0x74f1c

132
src/C/replays.c Normal file
View File

@ -0,0 +1,132 @@
#include "../decomp_defs.h"
char AnalogueUnpack[] = { 0, 0xCD, 0xC1, 0xB5, 0xA9, 0x9D, 0x91, 0x85, 0, 0x33, 0x3F, 0x4B, 0x57, 0x63, 0x6F, 0x7B };
/*
* Offset 0x1A104
* D:\driver2\game\C\REPLAYS.C (line 498)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitPadRecording()
{ // line 2, address 0x1a104
int i; // $s0
int remain; // $s0
} // line 152, address 0x1a29c
/*
* Offset 0x1A29C
* D:\driver2\game\C\REPLAYS.C (line 657)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
int /*$ra*/ SaveReplayToBuffer(char *buffer /*$s0*/)
{ // line 1, address 0x1a29c
struct REPLAY_SAVE_HEADER *header; // $s2
int i; // $a2
int length; // $s1
int numstreams; // $s6
} // line 76, address 0x1a800
/*
* Offset 0x1A800
* D:\driver2\game\C\REPLAYS.C (line 740)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ LoadReplayFromBuffer(char *buffer /*$s1*/)
{ // line 2, address 0x1a800
struct REPLAY_SAVE_HEADER *header; // $s3
struct REPLAY_STREAM_HEADER *sheader; // $t0
int i; // $a1
int length; // $s0
} // line 73, address 0x1adb8
/*
* Offset 0x1ADB8
* D:\driver2\game\C\REPLAYS.C (line 1310)
* Stack frame base $sp, length 48
* Saved registers at address -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, address 0x1adb8
unsigned long t0; // stack address -32
int t1; // $s0
} // line 60, address 0x1af7c
/*
* Offset 0x1AF9C
* D:\driver2\game\C\REPLAYS.C (line 1222)
* Stack frame base $sp, length 8
*/
int /*$ra*/ valid_region(int x /*$a0*/, int z /*$a1*/)
{ // line 2, address 0x1af9c
struct XYPAIR region_coords; // stack address -8
int region; // $a0
} // line 47, address 0x1b064
/*
* Offset 0x1B064
* D:\driver2\game\C\REPLAYS.C (line 1271)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ cjpPlay(int stream /*$a0*/, unsigned long *ppad /*$s2*/, char *psteer /*$s0*/, char *ptype /*$s1*/)
{ // line 1, address 0x1b064
int ret; // $a0
unsigned long t0; // stack address -24
int t1; // $v1
} // line 20, address 0x1b0f8
/*
* Offset 0x1B0F8
* D:\driver2\game\C\REPLAYS.C (line 1182)
* Stack frame base $sp, length 0
*/
char /*$ra*/ GetPingInfo(char *cookieCount /*$a2*/)
{ // line 1, address 0x1b0f8
struct _PING_PACKET *pp; // $a1
char retCarId; // $v0
} // line 24, address 0x1b180
/*
* Offset 0x1B180
* D:\driver2\game\C\REPLAYS.C (line 1059)
* Stack frame base $sp, length 56
* Saved registers at address -8: ra
*/
int /*$ra*/ LoadAttractReplay(int mission /*$a2*/)
{ // line 1, address 0x1b180
char filename[32]; // stack address -40
} // line 12, address 0x1b1e4
/*
* Offset 0x1B1E4
* D:\driver2\game\C\REPLAYS.C (line 1383)
* Stack frame base $sp, length 0
*/
void /*$ra*/ AllocateReplayStream(struct REPLAY_STREAM *stream /*$a0*/, int maxpad /*$a1*/)
{
}
/*
* Offset 0x1B258
* D:\driver2\game\C\REPLAYS.C (line 1402)
* Stack frame base $sp, length 0
*/
int /*$ra*/ Get(int stream /*$a0*/, unsigned long *pt0 /*$a1*/)
{ // line 1, address 0x1b258
struct REPLAY_STREAM *rstream; // $a2
unsigned long t0; // $a0
} // line 36, address 0x1b2e8
/*
* Offset 0x1B2E8
* D:\driver2\game\C\REPLAYS.C (line 1440)
* Stack frame base $sp, length 0
*/
int /*$ra*/ Put(int stream /*$a0*/, unsigned long *pt0 /*$a1*/)
{ // line 2, address 0x1b2e8
struct REPLAY_STREAM *rstream; // $a0
unsigned char **pstream; // $a3
unsigned long t0; // $a1
} // line 37, address 0x1b3cc
/*
* Offset 0x1B3CC
* D:\driver2\game\C\REPLAYS.C (line 1479)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RecordWaypoint()
{
}

9
src/C/roadbits.c Normal file
View File

@ -0,0 +1,9 @@
/*
* Offset 0x74F1C
* D:\driver2\game\C\ROADBITS.C (line 147)
* Stack frame base $sp, length 0
*/
char /*$ra*/ ROADS_GetRouteData(int x /*$a0*/, int z /*$a1*/, struct ROUTE_DATA *pRouteData /*$a2*/)
{
}

78
src/C/scores.c Normal file
View File

@ -0,0 +1,78 @@
/*
* Offset 0x74F28
* D:\driver2\game\C\SCORES.C (line 58)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ InitialiseScoreTables()
{ // line 2, address 0x74f28
int i; // $s3
int j; // $s1
} // line 26, address 0x750a4
/*
* Offset 0x750A4
* D:\driver2\game\C\SCORES.C (line 86)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ OnScoreTable(struct SCORE_ENTRY **tablept /*$s1*/)
{ // line 1, address 0x750a4
struct SCORE_ENTRY *table; // $s0
int position; // $v0
} // line 40, address 0x75260
/*
* Offset 0x75260
* D:\driver2\game\C\SCORES.C (line 133)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ AddScoreToTable(struct SCORE_ENTRY *table /*$a2*/, int entry /*$a1*/)
{ // line 1, address 0x75260
int i; // $a3
} // line 16, address 0x752d4
/*
* Offset 0x752D4
* D:\driver2\game\C\SCORES.C (line 162)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheckGetawayPlacing(struct SCORE_ENTRY *table /*$a0*/)
{ // line 1, address 0x752d4
int i; // $v1
} // line 16, address 0x75324
/*
* Offset 0x75324
* D:\driver2\game\C\SCORES.C (line 188)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheckTrailblazerPlacing(struct SCORE_ENTRY *table /*$a0*/)
{ // line 1, address 0x75324
int i; // $a2
} // line 21, address 0x753a0
/*
* Offset 0x753A0
* D:\driver2\game\C\SCORES.C (line 218)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheckCheckpointPlacing(struct SCORE_ENTRY *table /*$a0*/)
{ // line 1, address 0x753a0
int i; // $v1
} // line 16, address 0x753f0
/*
* Offset 0x753F0
* D:\driver2\game\C\SCORES.C (line 243)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheckSurvivalPlacing(struct SCORE_ENTRY *table /*$a0*/)
{ // line 1, address 0x753f0
int i; // $v1
} // line 16, address 0x75440
/*
* Offset 0x75440
* D:\driver2\game\C\SCORES.C (line 261)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ResetTable(struct SCORE_ENTRY *table /*$a0*/)
{ // line 1, address 0x75440
int i; // $v1
} // line 11, address 0x75470

67
src/C/search.c Normal file
View File

@ -0,0 +1,67 @@
#include "../decomp_defs.h"
TEXTURE_DETAILS addcam; // address 0xC0A50
TEXTURE_DETAILS arm1_texture; // address 0xC1BF8
TEXTURE_DETAILS autocam; // address 0xC1CA0
TEXTURE_DETAILS bird_texture1; // address 0xC1D90
TEXTURE_DETAILS bird_texture2; // address 0xC1DA0
TEXTURE_DETAILS chasecar; // address 0xC1D60
TEXTURE_DETAILS chest1_texture; // address 0xC2A18
TEXTURE_DETAILS choosecar; // address 0xC2A08
TEXTURE_DETAILS clock; // address 0xBF940
TEXTURE_DETAILS collon_texture; // address 0xBF8C8
TEXTURE_DETAILS cop_texture; // address 0xC1B80
TEXTURE_DETAILS cross_texture; // address 0xC2878
TEXTURE_DETAILS cycle_tex[12]; // address 0xAB778
TEXTURE_DETAILS debris_texture; // address 0xC39B0
TEXTURE_DETAILS delcam; // address 0xC0EE0
TEXTURE_DETAILS digit_texture; // address 0xC1F60
TEXTURE_DETAILS drop_texture; // address 0xC1CF0
TEXTURE_DETAILS editcam; // address 0xC1BE8
TEXTURE_DETAILS fixedcam; // address 0xC1D70
TEXTURE_DETAILS flare_texture; // address 0xC1F50
TEXTURE_DETAILS forearm1_texture; // address 0xC1AF8
TEXTURE_DETAILS frameadv; // address 0xC1D80
TEXTURE_DETAILS gTyreTexture; // address 0xC1CC0
TEXTURE_DETAILS head1_texture; // address 0xC1D30
TEXTURE_DETAILS incar; // address 0xBF950
TEXTURE_DETAILS jeans_texture; // address 0xC1F70
TEXTURE_DETAILS joypad_texture; // address 0xBF8B8
TEXTURE_DETAILS lenschan; // address 0xC1DB0
TEXTURE_DETAILS lensflare_texture; // address 0xC1D20
TEXTURE_DETAILS light_pool_texture; // address 0xC29F8
TEXTURE_DETAILS light_texture; // address 0xC1F90
TEXTURE_DETAILS lightref_texture; // address 0xC1BA0
TEXTURE_DETAILS line_texture; // address 0xC1CE0
TEXTURE_DETAILS litter_texture; // address 0xBF960
TEXTURE_DETAILS lookcar; // address 0xC1CB0
TEXTURE_DETAILS moon_texture; // address 0xC1D00
TEXTURE_DETAILS movecam; // address 0xC1C18
TEXTURE_DETAILS movecampos; // address 0xC08C0
TEXTURE_DETAILS ok; // address 0xC1BD8
TEXTURE_DETAILS pad_texture; // address 0xC1B08
TEXTURE_DETAILS paper_texture; // address 0xC1FA0
TEXTURE_DETAILS dir_pause; // address 0xBF970
TEXTURE_DETAILS playcam; // address 0xC1C08
TEXTURE_DETAILS playpause; // address 0xC2A28
TEXTURE_DETAILS pool_texture; // address 0xC1D10
TEXTURE_DETAILS restart; // address 0xC1CD0
TEXTURE_DETAILS save2card; // address 0xC1F40
TEXTURE_DETAILS sea_texture; // address 0xC1B18
TEXTURE_DETAILS smoke_texture; // address 0xC2858
TEXTURE_DETAILS spark_texture; // address 0xC2868
TEXTURE_DETAILS sun_texture; // address 0xC1B90
TEXTURE_DETAILS tannerShadow_texture; // address 0xC0EF0
TEXTURE_DETAILS texturePedHead; // address 0xC29D0
TEXTURE_DETAILS trail_texture; // address 0xC1FB0
TEXTURE_DETAILS watch_texture; // address 0xC1F80
/*
* Offset 0x1BAF0
* D:\driver2\game\C\SEARCH.C (line 12)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitTextureNames()
{
}

203
src/C/shadow.c Normal file
View File

@ -0,0 +1,203 @@
#include "../decomp_defs.h"
/*
* Offset 0x75470
* D:\driver2\game\C\SHADOW.C (line 272)
* Stack frame base $sp, length 104
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ GetTyreTrackPositions(struct _CAR_DATA *cp /*$s3*/, int player_id /*$s7*/)
{ // line 1, address 0x75470
struct CAR_COSMETICS *car_cos; // $s4
struct VECTOR WheelPos; // stack address -88
struct VECTOR target_pos; // stack address -72
struct VECTOR normal; // stack address -56
int loop; // $s2
{ // line 11, address 0x754c0
} // line 16, address 0x754e8
} // line 26, address 0x755a8
/*
* Offset 0x755A8
* D:\driver2\game\C\SHADOW.C (line 330)
* Stack frame base $sp, length 200
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ AddTyreTrack(int wheel /*$s2*/, int tracksAndSmoke /*$s6*/, int padid /*$s0*/)
{ // line 1, address 0x755a8
struct VECTOR New1; // stack address -168
struct VECTOR New2; // stack address -152
struct VECTOR New3; // stack address -136
struct VECTOR New4; // stack address -120
struct VECTOR *old; // $s5
struct VECTOR *newt; // $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]; // address 0x0
struct VECTOR psxoffset; // stack address -104
struct VECTOR SmokeDrift; // stack address -88
struct VECTOR SmokePosition; // stack address -72
char trackSurface; // $s0
{ // line 34, address 0x75678
struct ROUTE_DATA routeData; // stack address -56
struct _sdPlane *SurfaceDataPtr; // $v0
} // line 69, address 0x75704
{ // line 74, address 0x75710
} // line 81, address 0x75738
{ // line 91, address 0x75794
struct VECTOR grass_vector; // stack address -48
} // line 91, address 0x75794
} // line 176, address 0x75a20
/*
* Offset 0x75A48
* D:\driver2\game\C\SHADOW.C (line 517)
* Stack frame base $sp, length 136
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6
*/
void /*$ra*/ DrawTyreTracks()
{ // line 2, address 0x75a48
struct VECTOR p[4]; // stack address -136
struct SVECTOR ps[4]; // stack address -72
struct TYRE_TRACK *tt_p; // $t0
int z; // stack address -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, address 0x75f9c
/*
* Offset 0x75F9C
* D:\driver2\game\C\SHADOW.C (line 659)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitShadow()
{ // line 2, address 0x75f9c
struct TPAN pos; // stack address -16
struct TEXINF *texinf; // $v0
int i; // $a2
int j; // $a3
{ // line 23, address 0x760f8
} // line 25, address 0x760f8
} // line 38, address 0x76170
/*
* Offset 0x76170
* D:\driver2\game\C\SHADOW.C (line 717)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SubdivShadow(long z0 /*$t7*/, long z1 /*$t9*/, long z2 /*$t8*/, long z3 /*$t6*/, struct POLY_FT4 *sps /*stack 16*/)
{ // line 1, address 0x76170
struct POLY_FT4 *spd; // $t3
int i; // $t4
{ // line 18, address 0x76220
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, address 0x76220
{ // line 18, address 0x76220
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, address 0x76220
} // line 144, address 0x76734
/*
* Offset 0x76734
* D:\driver2\game\C\SHADOW.C (line 864)
* Stack frame base $sp, length 88
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ PlaceShadowForCar(struct VECTOR *shadowPoints /*$t0*/, int slot /*$s0*/, struct VECTOR *CarPos /*$a2*/, int zclip /*$a3*/)
{ // line 1, address 0x76734
struct SVECTOR points[4]; // stack address -64
long z; // $a0
long z0; // stack address -32
long z1; // stack address -28
long z2; // stack address -24
long z3; // stack address -20
struct POLY_FT4 *spt; // $a3
} // line 69, address 0x76aa8
/*
* Offset 0x76AA8
* D:\driver2\game\C\SHADOW.C (line 1038)
* Stack frame base $sp, length 0
*/
int /*$ra*/ clipAgainstZ()
{ // line 2, address 0x76aa8
int srccount; // $t4
int dstcount; // $t5
struct SVECTOR *current; // $t2
struct SVECTOR *previous; // $t1
struct SVECTOR *dst; // $a3
int flags; // $t3
{ // line 19, address 0x76b28
int q; // $a2
} // line 19, address 0x76b28
{ // line 25, address 0x76c20
int q; // $a2
} // line 25, address 0x76c20
} // line 41, address 0x76d3c
/*
* Offset 0x76D3C
* D:\driver2\game\C\SHADOW.C (line 1081)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ clippedPoly()
{ // line 2, address 0x76d3c
int i; // $a3
int j; // $t0
int z1; // $v1
struct POLY_G3 *pg3; // $s0
int z[3]; // stack address -24
} // line 75, address 0x77190
/*
* Offset 0x771A0
* D:\driver2\game\C\SHADOW.C (line 1160)
* Stack frame base $sp, length 64
* Saved registers at address -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, address 0x771a0
int z1; // $v0
int z[4]; // stack address -48
{ // line 8, address 0x7721c
struct POLY_G4 *pf4; // $t2
} // line 30, address 0x7731c
} // line 62, address 0x7758c
/*
* Offset 0x7758C
* D:\driver2\game\C\SHADOW.C (line 253)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitTyreTracks()
{ // line 2, address 0x7758c
int loop; // $a0
} // line 9, address 0x775c0
/*
* Offset 0x775C0
* D:\driver2\game\C\SHADOW.C (line 306)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetTyreTrackOldPositions(int player_id /*$a0*/)
{
}

230
src/C/sky.c Normal file
View File

@ -0,0 +1,230 @@
#include "../decomp_defs.h"
int sky_y_offset[4] = { 14, 14, 14, 14 };
unsigned char HorizonLookup[4][4] = {
{0, 0, 0x14, 0x14},
{0x14, 0x14, 0, 0},
{0, 0, 0x14, 0x14},
{0, 0, 0x14, 0x14},
};
unsigned char HorizonTextures[40] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB,
0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13,
0, 1, 2, 3, 4, 5, 6, 7, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1A, 0x1B, 0x10, 0x11, 0x12, 0x13
};
SVECTOR sun_position[4] =
{
{ 33536, 54536, 60536, 0 },
{ 33536, 54536, 60536, 0 },
{ 33536, 54536, 60536, 0 },
{ 33536, 54536, 60536, 0 }
};
SVECTOR moon_position[4] =
{
{ 33536, 54036, 47536, 0 },
{ 33536, 54036, 47536, 0 },
{ 33536, 54036, 47536, 0 },
{ 33536, 54036, 47536, 0 }
};
SVECTOR moon_shadow_position[4] =
{
{ 33536, 54036, 47536, 0 },
{ 33536, 54036, 47536, 0 },
{ 33536, 54036, 47536, 0 },
{ 33536, 10500, 47536, 0 }
};
FLAREREC flare_info[8] =
{
{ { 0, 0, 90, 0 }, '\x10', 12288 },
{ { 20480, 10240, 1024, 0 }, '\0', 48 },
{ { 72, 90, 0, 0 }, '\0', 12288 },
{ { 24576, 0, 23040, 0 }, '\0', 0 },
{ { 16, 144, 0, 0 }, 'Z', 0 },
{ { 16384, 40960, 23040, 23040 }, '\0', 0 },
{ { 0, 32, 184, 90 }, '\0', 0 },
{ { 0, 8192, 53248, 0 }, '\0', 0 }
};
VECTOR tunnelPos[3][2] =
{
{
{ 4294568646, 0, 4294806296, 0 },
{ 4294626996, 2000, 4294864296, 0 }
},
{
{ 272800, 0, 41200, 0 },
{ 271963, 2000, 168187, 0 }
},
{
{ 4294852196, 0, 4294774096, 0 },
{ 4294853996, 4294966896, 4294834796, 0 }
}
};
/*
* Offset 0x77630
* D:\driver2\game\C\SKY.C (line 145)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ LoadSky()
{ // line 2, address 0x77630
struct RECT rect; // stack address -96
char name[16]; // stack address -88
int x; // $s6
int y; // $a1
int i; // $t1
int u; // $v1
int v; // $s2
int skynum; // $a2
int address; // stack address -72
{ // line 11, address 0x77670
int flipped; // $t0
int single; // $s5
int ry; // $a2
} // line 113, address 0x77838
} // line 174, address 0x779c4
/*
* Offset 0x779C4
* D:\driver2\game\C\SKY.C (line 327)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DrawSkyDome()
{
}
/*
* Offset 0x77AF4
* D:\driver2\game\C\SKY.C (line 351)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DrawLensFlare()
{ // line 2, address 0x77af4
static char last_attempt_failed; // address 0x0
static short buffer[160]; // address 0x0
struct DVECTOR sun_pers_conv_position; // stack address -64
struct RECT source; // stack address -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 address -40
int shade; // $t4
int sun_intensity; // $s3
struct POLY_FT4 *polys; // $a1
struct CVECTOR col; // stack address -48
int r; // $a2
int g; // $a3
int b; // $a0
{ // line 36, address 0x77bc0
int bufferX; // $a0
int bufferY; // $v1
unsigned short *pwBuffer; // $s0
} // line 54, address 0x77c28
{ // line 95, address 0x77d9c
int temp; // $v0
{ // line 107, address 0x77e38
struct FLAREREC *pFlareInfo; // $t3
int flaresize; // $t0
} // line 144, address 0x78014
} // line 145, address 0x78014
} // line 167, address 0x78100
/*
* Offset 0x78124
* D:\driver2\game\C\SKY.C (line 527)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 s3
*/
void /*$ra*/ DisplaySun(struct DVECTOR *pos /*$a0*/, struct CVECTOR *col /*$a1*/, int flare_col /*$a2*/)
{ // line 1, address 0x78124
struct POLY_FT4 *polys; // $a1
struct POLY_FT3 *null; // $a3
struct VECTOR output; // stack address -32
int width; // $t5
int height; // $t4
} // line 73, address 0x785ac
/*
* Offset 0x785AC
* D:\driver2\game\C\SKY.C (line 609)
* Stack frame base $sp, length 16
*/
void /*$ra*/ DisplayMoon(struct DVECTOR *pos /*$t4*/, struct CVECTOR *col /*$t6*/, int flip /*$a2*/)
{ // line 1, address 0x785ac
struct POLY_FT3 *null; // $a0
struct VECTOR output; // stack address -16
int width; // $t5
int height; // $t3
} // line 40, address 0x78818
/*
* Offset 0x78818
* D:\driver2\game\C\SKY.C (line 679)
* Stack frame base $sp, length 0
*/
void /*$ra*/ TunnelSkyFade()
{ // line 2, address 0x78818
int tun; // $a3
{ // line 16, address 0x78840
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, address 0x788dc
int l2; // $v1
} // line 66, address 0x78950
} // line 97, address 0x789c4
} // line 98, address 0x789c4
/*
* Offset 0x789CC
* D:\driver2\game\C\SKY.C (line 785)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ calc_sky_brightness()
{
}
/*
* Offset 0x78B80
* D:\driver2\game\C\SKY.C (line 855)
* Stack frame base $sp, length 0
*/
void /*$ra*/ PlotSkyPoly(int skytexnum /*$t5*/, unsigned char r /*$a1*/, unsigned char g /*$a2*/, unsigned char b /*$a3*/, int address /*stack 16*/)
{ // line 1, address 0x78b80
struct POLYFT4 *src; // $t1
struct DVECTOR *outpoints; // $t0
struct POLY_FT4 *prims; // $t2
} // line 39, address 0x78f24
/*
* Offset 0x78F2C
* D:\driver2\game\C\SKY.C (line 896)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ PlotHorizonMDL(struct MODEL *model /*$s6*/, int horizontaboffset /*$a1*/)
{ // line 1, address 0x78f2c
struct SVECTOR *verts; // $v1
char *polys; // $s1
int i; // $s0
int p; // stack address -56
int flag; // stack address -52
short *zbuff; // $t5
int z; // stack address -48
unsigned char r; // $s5
unsigned char g; // $s4
unsigned char b; // $s3
} // line 49, address 0x7911c

437
src/C/sound.c Normal file
View File

@ -0,0 +1,437 @@
#include "../decomp_defs.h"
long dummylong[3] = { 0, 0, 0 };
/*
* Offset 0x7914C
* D:\driver2\game\C\SOUND.C (line 114)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ InitSound()
{ // line 2, address 0x7914c
int ct; // $s0
} // line 47, address 0x7923c
/*
* Offset 0x7923C
* D:\driver2\game\C\SOUND.C (line 163)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ClearChannelFields(int channel /*$a0*/)
{
}
/*
* Offset 0x792B8
* D:\driver2\game\C\SOUND.C (line 187)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ ResetSound()
{ // line 2, address 0x792b8
int ct; // $s0
} // line 35, address 0x79398
/*
* Offset 0x79398
* D:\driver2\game\C\SOUND.C (line 399)
* Stack frame base $sp, length 48
* Saved registers at address -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, address 0x79398
long bpf; // $a1
long rate; // $a1
} // line 44, address 0x7956c
/*
* Offset 0x7956C
* D:\driver2\game\C\SOUND.C (line 450)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetChannelPitch(int channel /*$a0*/, int pitch /*$a1*/)
{ // line 1, address 0x7956c
long rate; // $a0
} // line 20, address 0x7961c
/*
* Offset 0x7962C
* D:\driver2\game\C\SOUND.C (line 501)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ComputeDoppler(struct CHANNEL_DATA *ch /*$s1*/)
{ // line 1, address 0x7962c
int dist; // $s0
int seperationrate; // $v0
struct _PLAYER *pl; // $s0
} // line 26, address 0x79788
/*
* Offset 0x7979C
* D:\driver2\game\C\SOUND.C (line 635)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ PauseXM()
{ // line 1, address 0x7979c
int fade; // $v1
} // line 20, address 0x797fc
/*
* Offset 0x797FC
* D:\driver2\game\C\SOUND.C (line 657)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ PauseSFX()
{ // line 1, address 0x797fc
int i; // $s1
int fade; // $s3
} // line 24, address 0x799c0
/*
* Offset 0x799C0
* D:\driver2\game\C\SOUND.C (line 698)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ UnPauseXM()
{ // line 1, address 0x799c0
int fade; // $a1
} // line 19, address 0x79a18
/*
* Offset 0x79A18
* D:\driver2\game\C\SOUND.C (line 720)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ UnPauseSFX()
{ // line 1, address 0x79a18
int i; // $s1
int fade; // $s2
} // line 22, address 0x79ba0
/*
* Offset 0x79BA0
* D:\driver2\game\C\SOUND.C (line 822)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SoundHandler()
{ // line 2, address 0x79ba0
int ct; // $a0
long off; // $a1
} // line 16, address 0x79c24
/*
* Offset 0x79C34
* D:\driver2\game\C\SOUND.C (line 904)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
int /*$ra*/ LoadSoundBankDynamic(char *address /*$s2*/, int length /*$s6*/, int dbank /*$a2*/)
{ // line 1, address 0x79c34
static struct __LSBDinfo tabs; // address 0x0
int i; // $a3
int num_samples; // $s1
int slength; // $s0
} // line 73, address 0x79e6c
/*
* Offset 0x79E6C
* D:\driver2\game\C\SOUND.C (line 1124)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ GetFreeChannel()
{ // line 1, address 0x79e6c
int ct; // $a0
int least; // $s1
int il; // $s0
char status[24]; // stack address -40
} // line 32, address 0x79fa0
/*
* Offset 0x79FA0
* D:\driver2\game\C\SOUND.C (line 1163)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ UpdateVolumeAttributesS(int channel /*$s2*/, int proximity /*$s5*/)
{ // line 1, address 0x79fa0
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, address 0x7a21c
} // line 54, address 0x7a268
} // line 67, address 0x7a398
/*
* Offset 0x7A3C8
* D:\driver2\game\C\SOUND.C (line 1257)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ CalculateVolume(int channel /*$a2*/)
{ // line 1, address 0x7a3c8
int volume; // $s0
struct VECTOR *pp; // $a3
{ // line 9, address 0x7a45c
int distance; // $v1
{ // line 14, address 0x7a45c
struct VECTOR ofse; // stack address -24
} // line 17, address 0x7a45c
{ // line 29, address 0x7a514
int fade; // $a0
} // line 34, address 0x7a56c
} // line 36, address 0x7a588
} // line 38, address 0x7a59c
/*
* Offset 0x7A59C
* D:\driver2\game\C\SOUND.C (line 1326)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ FESound(int sample /*$s0*/)
{ // line 1, address 0x7a59c
long bpf; // $a1
long rate; // $a1
long pitch; // $s5
int channel; // $s6
} // line 32, address 0x7a728
/*
* Offset 0x7A728
* D:\driver2\game\C\SOUND.C (line 233)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetReverbState(int on /*$a0*/)
{
}
/*
* Offset 0x7A76C
* D:\driver2\game\C\SOUND.C (line 253)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetReverbInGameState(int on /*$a0*/)
{ // line 1, address 0x7a76c
long cl; // $a1
} // line 11, address 0x7a7c4
/*
* Offset 0x7A7C4
* D:\driver2\game\C\SOUND.C (line 274)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ SetReverbChannelState(int ch /*$a0*/, int on /*$s0*/)
{ // line 1, address 0x7a7c4
long cl; // $s1
int prev; // $s2
} // line 7, address 0x7a818
/*
* Offset 0x7A818
* D:\driver2\game\C\SOUND.C (line 288)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetMasterVolume(int vol /*$a0*/)
{
}
/*
* Offset 0x7A860
* D:\driver2\game\C\SOUND.C (line 323)
* Stack frame base $sp, length 40
* Saved registers at address -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 0x7A8FC
* D:\driver2\game\C\SOUND.C (line 357)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{
}
/*
* Offset 0x7A9FC
* D:\driver2\game\C\SOUND.C (line 342)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{
}
/*
* Offset 0x7AAE0
* D:\driver2\game\C\SOUND.C (line 477)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SetChannelVolume(int channel /*$s0*/, int volume /*$t1*/, int proximity /*$a2*/)
{ // line 1, address 0x7aae0
} // line 18, address 0x7ab8c
/*
* Offset 0x7ABA4
* D:\driver2\game\C\SOUND.C (line 1303)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ AllocateReverb(long mode /*$s1*/, long depth /*$s0*/)
{ // line 1, address 0x7aba4
struct SpuReverbAttr r_attr; // stack address -40
} // line 16, address 0x7abfc
/*
* Offset 0x7AC10
* D:\driver2\game\C\SOUND.C (line 307)
* Stack frame base $sp, length 0
*/
char /*$ra*/ SetPlayerOwnsChannel(int chan /*$a0*/, char player /*$a1*/)
{ // line 1, address 0x7ac10
} // line 5, address 0x7ac34
/*
* Offset 0x7AC34
* D:\driver2\game\C\SOUND.C (line 588)
* Stack frame base $sp, length 32
* Saved registers at address -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, address 0x7ac34
} // line 24, address 0x7ad28
/*
* Offset 0x7AD40
* D:\driver2\game\C\SOUND.C (line 683)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ PauseSound()
{
}
/*
* Offset 0x7AD78
* D:\driver2\game\C\SOUND.C (line 744)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ UnPauseSound()
{ // line 1, address 0x7ad78
} // line 9, address 0x7ada8
/*
* Offset 0x7ADA8
* D:\driver2\game\C\SOUND.C (line 760)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ StopChannel(int channel /*$s2*/)
{ // line 1, address 0x7ada8
{ // line 3, address 0x7adcc
unsigned char l; // $s3
int vsync; // $s0
} // line 11, address 0x7ae40
} // line 13, address 0x7ae5c
/*
* Offset 0x7AE5C
* D:\driver2\game\C\SOUND.C (line 780)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ StopAllChannels()
{ // line 2, address 0x7ae5c
int ct; // $s0
} // line 10, address 0x7ae9c
/*
* Offset 0x7AE9C
* D:\driver2\game\C\SOUND.C (line 797)
* Stack frame base $sp, length 0
*/
void /*$ra*/ LockChannel(int channel /*$a0*/)
{
}
/*
* Offset 0x7AECC
* D:\driver2\game\C\SOUND.C (line 811)
* Stack frame base $sp, length 0
*/
void /*$ra*/ UnlockChannel(int c /*$a0*/)
{
}
/*
* Offset 0x7AEF8
* D:\driver2\game\C\SOUND.C (line 845)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ LoadSoundBank(char *address /*$s3*/, int length /*$s2*/, int bank /*$s1*/)
{ // line 1, address 0x7aef8
int num_samples; // $s4
int slength; // $s2
int spuaddress; // $s1
int ct; // $v1
} // line 31, address 0x7afec
/*
* Offset 0x7AFEC
* D:\driver2\game\C\SOUND.C (line 993)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ FreeXM()
{
}
/*
* Offset 0x7B038
* D:\driver2\game\C\SOUND.C (line 1012)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ StartXM(int reverb /*$s2*/)
{ // line 1, address 0x7b038
int ct; // $s0
} // line 16, address 0x7b0b8
/*
* Offset 0x7B0B8
* D:\driver2\game\C\SOUND.C (line 1035)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StopXM()
{
}
/*
* Offset 0x7B0DC
* D:\driver2\game\C\SOUND.C (line 1073)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetXMVolume(int volume /*$a0*/)
{ // line 1, address 0x7b0dc
int vol; // $a1
} // line 12, address 0x7b12c
/*
* Offset 0x7B12C
* D:\driver2\game\C\SOUND.C (line 1232)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ UpdateVolumeAttributesM(int channel /*$s0*/)
{ // line 1, address 0x7b12c
int volume; // $a1
int vol; // $a0
} // line 17, address 0x7b1e0
/*
* Offset 0x7B1E0
* D:\driver2\game\C\SOUND.C (line 1371)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ VsyncProc()
{
}
/*
* Offset 0x7B22C
* D:\driver2\game\C\SOUND.C (line 882)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ UpdateXMSamples(int num_samps /*$s2*/)
{ // line 1, address 0x7b22c
int i; // $s0
} // line 6, address 0x7b290

614
src/C/spool.c Normal file
View File

@ -0,0 +1,614 @@
#include "../decomp_defs.h"
int date_date = 0xA11;
int date_time = 0x27220B;
char specTpages[4][12] = {
{ 0x36, 0x37, 0x42, 0x43, 0x38, 0x39, 0x44, 0x45, 0x3D, 0x40, 0x3D, 0x40},
{ 0x26, 0x27, 0x26, 0x27, 0x2A, 0x2B, 0x2C, 0x2D, 0x30, 0x31, 0x30, 0x31},
{ 0x12, 0x13, 0x41, 0x42, 0x43, 0x44, 0xB, 0xC, 0x3F, 0x40, 0x3F, 0x40},
{ 0x42, 0x43, 0x4D, 0x4E, 0x49, 0x4A, 0x4B, 0x4C, 0x45, 0x46, 0x47, 0x48}
};
char carTpages[4][8] = {
{1, 0x41, 0x3E, 0x32, 0x3F, 0x3A, 0x36, 0x37},
{0xA, 0x23, 0x14, 0x25, 0x33, 0x24, 0x26, 0x27},
{0x29, 0x36, 0x3E, 0x11, 0x20, 0x3B, 0x12, 0},
{0x37, 0x39, 0x44, 0x3A, 0x3C, 0x3B, 0x42, 0x43}
};
int pvsSize[4] = { 0, 0, 0, 0 };
int SpecialByRegion[4][20] = {
{5, 1, 3, 3, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 2, 3, 2, 2, 3, 0},
{2, 4, 1, 1, 4, 4, 3, 3, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{2, 4, 1, 1, 1, 1, 1, 1, 4, 2, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0},
{2, 5, 4, 1, 2, 1, 4, 3, 2, 2, 2, 2, 3, 3, 3, 0, 0, 0, 0, 0},
};
/*
* Offset 0x7B290
* D:\driver2\game\C\SPOOL.C (line 532)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ test_changemode()
{ // line 2, address 0x7b290
struct SPOOLQ *current; // $a3
} // line 56, address 0x7b41c
/*
* Offset 0x7B42C
* D:\driver2\game\C\SPOOL.C (line 625)
* Stack frame base $sp, length 160
* Saved registers at address -8: s0
*/
int /*$ra*/ check_regions_present()
{ // line 2, address 0x7b42c
struct AREA_LOAD_INFO regions_to_unpack[3]; // stack address -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 address -136
} // line 146, address 0x7b72c
/*
* Offset 0x7B72C
* D:\driver2\game\C\SPOOL.C (line 925)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ UpdateSpool()
{ // line 2, address 0x7b72c
struct SPOOLQ *current; // $s0
struct CdlLOC pos; // stack address -16
} // line 52, address 0x7b8e4
/*
* Offset 0x7B8F4
* D:\driver2\game\C\SPOOL.C (line 1161)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SendTPage()
{ // line 2, address 0x7b8f4
int tpage2send; // $s2
int slot; // $s0
int old; // $v1
char *tpageaddress; // $t0
{ // line 15, address 0x7b968
struct RECT cluts; // stack address -32
int npalettes; // $s1
int i; // $a3
unsigned long *clutptr; // $a1
} // line 47, address 0x7ba8c
} // line 74, address 0x7bb7c
/*
* Offset 0x7BB7C
* D:\driver2\game\C\SPOOL.C (line 1262)
* Stack frame base $sp, length 128
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ LoadInAreaTSets(int area /*$t4*/)
{ // line 1, address 0x7bb7c
unsigned char *tpages; // $s1
int ntpages_to_load; // $s3
int i; // $s0
int slot; // $a0
int j; // $a1
int address; // $s4
int availableslots[16]; // stack address -104
int navailable; // $s2
char *loadaddr; // $fp
} // line 71, address 0x7bdec
/*
* Offset 0x7BDEC
* D:\driver2\game\C\SPOOL.C (line 1337)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SendSBK()
{ // line 2, address 0x7bdec
char *address; // $s0
int slength; // $s1
int i; // $a1
unsigned long *source; // $v0
unsigned long *dest; // $a0
} // line 43, address 0x7bf24
/*
* Offset 0x7BF24
* D:\driver2\game\C\SPOOL.C (line 1484)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ init_spooled_models()
{ // line 2, address 0x7bf24
int i; // $s1
int nmodels; // $s4
int length; // $s2
int model_number; // $a1
char *addr; // $s0
struct MODEL *parentmodel; // $a1
{ // line 35, address 0x7c024
} // line 37, address 0x7c038
{ // line 44, address 0x7c06c
} // line 52, address 0x7c0b0
} // line 59, address 0x7c0f4
/*
* Offset 0x7C0F4
* D:\driver2\game\C\SPOOL.C (line 1574)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CheckLoadAreaData(int cellx /*$t9*/, int cellz /*$a1*/)
{ // line 1, address 0x7c0f4
int i; // $a2
int nAreas; // $t0
struct Spool *spoolptr; // $t1
int load; // $a3
int force_load_boundary; // $a0
} // line 92, address 0x7c2e4
/*
* Offset 0x7C2F4
* D:\driver2\game\C\SPOOL.C (line 1713)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
int /*$ra*/ LoadRegionData(int region /*$s4*/, int target_region /*$s5*/)
{ // line 1, address 0x7c2f4
int address; // $s0
char *target_unpacked_data; // $t1
struct Spool *spoolptr; // $s1
char *roadmap_buffer; // $s6
char *cell_buffer; // $s3
} // line 63, address 0x7c4cc
/*
* Offset 0x7C4CC
* D:\driver2\game\C\SPOOL.C (line 1815)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessSpoolInfoLump(char *lump_ptr /*$a2*/, int lump_size /*$a1*/)
{ // line 1, address 0x7c4cc
int i; // $t2
int length; // $v1
int slots_count; // $t0
int objects_count; // $t1
int num_of_regions; // $v0
char *alloclist; // $a3
} // line 103, address 0x7c628
/*
* Offset 0x7C628
* D:\driver2\game\C\SPOOL.C (line 2351)
* Stack frame base $sp, length 0
*/
void /*$ra*/ unpack_cellpointers()
{ // line 2, address 0x7c628
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, address 0x7c7b4
/*
* Offset 0x7C7B4
* D:\driver2\game\C\SPOOL.C (line 2509)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ SpecClutsSpooled()
{ // line 2, address 0x7c7b4
char *loadaddr; // $s4
int i; // $s1
int j; // $s2
int tpage; // $s0
struct RECT specCluts; // stack address -48
{ // line 13, address 0x7c85c
int index; // $a3
{ // line 28, address 0x7c984
} // line 28, address 0x7c984
} // line 33, address 0x7c9c4
} // line 37, address 0x7ca20
/*
* Offset 0x7CA20
* D:\driver2\game\C\SPOOL.C (line 2549)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CleanModelSpooled()
{ // line 3, address 0x7ca20
int *loadaddr; // $a1
int *mem; // $a3
{ // line 27, address 0x7cae8
} // line 38, address 0x7cb38
} // line 42, address 0x7cb64
/*
* Offset 0x7CB64
* D:\driver2\game\C\SPOOL.C (line 2594)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DamagedModelSpooled()
{ // line 2, address 0x7cb64
int *loadaddr; // $a1
int *mem; // $a3
{ // line 26, address 0x7cc28
} // line 35, address 0x7cc60
} // line 39, address 0x7cc8c
/*
* Offset 0x7CC8C
* D:\driver2\game\C\SPOOL.C (line 2635)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ LowModelSpooled()
{ // line 2, address 0x7cc8c
int *loadaddr; // $a1
int *mem; // $a3
{ // line 26, address 0x7cd50
} // line 37, address 0x7cda0
} // line 41, address 0x7cdcc
/*
* Offset 0x7CDCC
* D:\driver2\game\C\SPOOL.C (line 2680)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CleanSpooled()
{ // line 3, address 0x7cdcc
char *loadaddr; // $a1
{ // line 22, address 0x7cef4
struct MODEL *tempModel; // $a1
} // line 33, address 0x7cf48
} // line 37, address 0x7cf74
/*
* Offset 0x7CF74
* D:\driver2\game\C\SPOOL.C (line 2744)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ Tada()
{ // line 2, address 0x7cf74
char *loadaddr; // $s1
{ // line 7, address 0x7cfc8
struct RECT tpage; // stack address -32
int spec_tpage; // $a0
} // line 20, address 0x7d080
{ // line 23, address 0x7d080
struct RECT tpage; // stack address -24
int spec_tpage; // $a0
} // line 36, address 0x7d154
{ // line 39, address 0x7d154
} // line 45, address 0x7d198
} // line 49, address 0x7d1ac
/*
* Offset 0x7D1AC
* D:\driver2\game\C\SPOOL.C (line 2799)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SpecialStartNextBlock()
{ // line 2, address 0x7d1ac
char *loadaddr; // $s0
int fileSector; // $t0
} // line 126, address 0x7d538
/*
* Offset 0x7D548
* D:\driver2\game\C\SPOOL.C (line 2956)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CheckSpecialSpool()
{ // line 2, address 0x7d548
struct _CAR_DATA *lcp; // $a0
int ret; // $a3
{ // line 9, address 0x7d584
} // line 13, address 0x7d5a4
} // line 66, address 0x7d730
/*
* Offset 0x7D740
* D:\driver2\game\C\SPOOL.C (line 3063)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InitSpecSpool()
{
}
/*
* Offset 0x7D9E0
* D:\driver2\game\C\SPOOL.C (line 2442)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ Unpack_CellPtrs()
{ // line 2, address 0x7d9e0
int region_to_unpack; // $a1
int target_barrel_region; // $a1
char *source_packed_data; // $v1
} // line 27, address 0x7da34
/*
* Offset 0x7DA34
* D:\driver2\game\C\SPOOL.C (line 1970)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ GotRegion()
{ // line 2, address 0x7da34
int cbr; // $a1
} // line 20, address 0x7dac8
/*
* Offset 0x7DAC8
* D:\driver2\game\C\SPOOL.C (line 2246)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ data_cb_misc()
{ // line 2, address 0x7dac8
{ // line 4, address 0x7dadc
struct SPOOLQ *current; // $v0
} // line 29, address 0x7db90
} // line 30, address 0x7dba0
/*
* Offset 0x7DBA0
* D:\driver2\game\C\SPOOL.C (line 2278)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ready_cb_misc(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/)
{
}
/*
* Offset 0x7DC34
* D:\driver2\game\C\SPOOL.C (line 2171)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ data_cb_soundbank()
{ // line 2, address 0x7dc34
{ // line 4, address 0x7dc48
} // line 29, address 0x7dcfc
} // line 30, address 0x7dd0c
/*
* Offset 0x7DD0C
* D:\driver2\game\C\SPOOL.C (line 2203)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ready_cb_soundbank(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/)
{ // line 1, address 0x7dd0c
{ // line 14, address 0x7dd6c
struct SPOOLQ *current; // $a0
} // line 34, address 0x7ddd8
} // line 41, address 0x7de00
/*
* Offset 0x7DE10
* D:\driver2\game\C\SPOOL.C (line 2132)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ data_cb_regions()
{ // line 2, address 0x7de10
{ // line 4, address 0x7de24
struct SPOOLQ *current; // $v0
} // line 35, address 0x7dee8
} // line 36, address 0x7def8
/*
* Offset 0x7DEF8
* D:\driver2\game\C\SPOOL.C (line 2090)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ready_cb_regions(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/)
{ // line 1, address 0x7def8
{ // line 20, address 0x7df70
struct SPOOLQ *current; // $v1
} // line 20, address 0x7df70
} // line 39, address 0x7dfcc
/*
* Offset 0x7DFCC
* D:\driver2\game\C\SPOOL.C (line 1993)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ data_cb_textures()
{ // line 2, address 0x7dfcc
{ // line 4, address 0x7dfe0
} // line 40, address 0x7e0d0
} // line 41, address 0x7e0e0
/*
* Offset 0x7E0E0
* D:\driver2\game\C\SPOOL.C (line 2036)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ready_cb_textures(unsigned char intr /*$s0*/, unsigned char *result /*$a2*/)
{ // line 1, address 0x7e0e0
{ // line 14, address 0x7e140
struct SPOOLQ *current; // $a2
} // line 44, address 0x7e1f0
} // line 50, address 0x7e200
/*
* Offset 0x7E210
* D:\driver2\game\C\SPOOL.C (line 591)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ changemode(struct SPOOLQ *current /*$a0*/)
{
}
/*
* Offset 0x7E2B4
* D:\driver2\game\C\SPOOL.C (line 836)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ DrawCDicon()
{ // line 2, address 0x7e2b4
unsigned short *palette; // $a1
int temp; // $a2
int i; // $a0
struct RECT dest; // stack address -16
} // line 20, address 0x7e334
/*
* Offset 0x7E334
* D:\driver2\game\C\SPOOL.C (line 859)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ CheckValidSpoolData()
{ // line 2, address 0x7e334
struct RECT dest; // stack address -16
} // line 59, address 0x7e3c4
/*
* Offset 0x7E3D4
* D:\driver2\game\C\SPOOL.C (line 1104)
* Stack frame base $sp, length 0
*/
void /*$ra*/ RequestSpool(int type /*$a0*/, int data /*$a1*/, int offset /*$a2*/, int loadsize /*$a3*/, char *address /*stack 16*/, void(*func)() /*stack 20*/)
{ // line 1, address 0x7e3d4
struct SPOOLQ *next; // $t0
int sector; // $v0
} // line 22, address 0x7e44c
/*
* Offset 0x7E44C
* D:\driver2\game\C\SPOOL.C (line 1670)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ClearRegion(int target_region /*$a0*/)
{ // line 1, address 0x7e44c
int loop; // $a1
unsigned short *cell_ptrs_s; // $v1
unsigned long *pvsptr; // $v0
} // line 41, address 0x7e4fc
/*
* Offset 0x7E4FC
* D:\driver2\game\C\SPOOL.C (line 1129)
* Stack frame base $sp, length 168
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ InitSpooling()
{ // line 2, address 0x7e4fc
int i; // $s0
char namebuffer[128]; // stack address -152
struct CdlLOC pos; // stack address -24
} // line 29, address 0x7e590
/*
* Offset 0x7E590
* D:\driver2\game\C\SPOOL.C (line 1239)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SpoolSYNC()
{
}
/*
* Offset 0x7E5A8
* D:\driver2\game\C\SPOOL.C (line 1545)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetupModels()
{
}
/*
* Offset 0x7E5E8
* D:\driver2\game\C\SPOOL.C (line 1559)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ LoadInAreaModels(int area /*$a0*/)
{ // line 2, address 0x7e5e8
int address; // $a2
int length; // $a3
} // line 12, address 0x7e644
/*
* Offset 0x7E644
* D:\driver2\game\C\SPOOL.C (line 1779)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ UnpackRegion(int region_to_unpack /*$s1*/, int target_barrel_region /*$s0*/)
{ // line 1, address 0x7e644
} // line 33, address 0x7e6c0
/*
* Offset 0x7E6D4
* D:\driver2\game\C\SPOOL.C (line 1928)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ WaitCloseLid()
{ // line 2, address 0x7e6d4
void(*old)(); // $s1
} // line 14, address 0x7e740
/*
* Offset 0x7E740
* D:\driver2\game\C\SPOOL.C (line 1945)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ FoundError(char *name /*$a0*/, unsigned char intr /*$a1*/, unsigned char *result /*$a2*/)
{ // line 2, address 0x7e740
struct CdlLOC p; // stack address -16
} // line 18, address 0x7e78c
/*
* Offset 0x7E78C
* D:\driver2\game\C\SPOOL.C (line 2302)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StartSpooling()
{ // line 2, address 0x7e78c
} // line 19, address 0x7e818
/*
* Offset 0x7E828
* D:\driver2\game\C\SPOOL.C (line 2720)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ LowSpooled()
{ // line 3, address 0x7e828
char *loadaddr; // $v1
{ // line 8, address 0x7e840
struct MODEL *tempModel; // $a1
} // line 17, address 0x7e888
} // line 21, address 0x7e8b4
/*
* Offset 0x7E8B4
* D:\driver2\game\C\SPOOL.C (line 3025)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ QuickSpoolSpecial()
{
}
/*
* Offset 0x7E944
* D:\driver2\game\C\SPOOL.C (line 3046)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ PrepareSecretCar()
{
}
/*
* Offset 0x7E9C0
* D:\driver2\game\C\SPOOL.C (line 818)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ stopgame()
{ // line 4, address 0x7e9c0
} // line 9, address 0x7ea08
/*
* Offset 0x7EA08
* D:\driver2\game\C\SPOOL.C (line 829)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ startgame()
{ // line 2, address 0x7ea08
} // line 4, address 0x7ea38

272
src/C/system.c Normal file
View File

@ -0,0 +1,272 @@
#include "../decomp_defs.h"
char* LevelFiles[] = {
"LEVELS\\CHICAGO.LEV",
"LEVELS\\HAVANA.LEV",
"LEVELS\\VEGAS.LEV",
"LEVELS\\RIO.LEV",
};
char* LoadingScreenNames[] = {
"GFX\\LOADCHIC.TIM",
"GFX\\LOADHAVA.TIM",
"GFX\\LOADVEGA.TIM",
"GFX\\LOADRIO.TIM",
};
char currentfilename[128] = { 0 };
/*
* Offset 0x7EA38
* D:\driver2\game\C\SYSTEM.C (line 759)
* Stack frame base $sp, length 2208
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ LoadfileSeg(char *name /*$v0*/, char *addr /*$s1*/, int address /*$s5*/, int loadsize /*$fp*/)
{ // line 1, address 0x7ea38
char namebuffer[64]; // stack address -2192
unsigned char result[8]; // stack address -2128
int sector; // $s2
int nsectors; // $s5
char sectorbuffer[2048]; // stack address -2120
struct CdlFILE info; // stack address -72
struct CdlLOC pos; // stack address -48
int i; // $a2
int toload; // $s4
int first; // $a0
} // line 120, address 0x7ed58
/*
* Offset 0x7ED58
* D:\driver2\game\C\SYSTEM.C (line 1310)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SwapDrawBuffers2(int player /*$s0*/)
{ // line 1, address 0x7ed58
int toggle; // $v1
} // line 30, address 0x7ee44
/*
* Offset 0x7EE44
* D:\driver2\game\C\SYSTEM.C (line 1364)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetupDrawBuffers()
{ // line 2, address 0x7ee44
struct RECT rect; // stack address -24
int i; // $v1
} // line 47, address 0x7ef74
/*
* Offset 0x7EF74
* D:\driver2\game\C\SYSTEM.C (line 1429)
* Stack frame base $sp, length 96
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ SetupDrawBufferData(int num_players /*stack 0*/)
{ // line 1, address 0x7ef74
unsigned long *otpt; // $s2
unsigned char *primpt; // $s1
unsigned char *PRIMpt; // $fp
int x[2]; // stack address -72
int y[2]; // stack address -64
int i; // $s3
int j; // $s6
int toggle; // $s7
int height; // stack address -56
} // line 94, address 0x7f180
/*
* Offset 0x7F180
* D:\driver2\game\C\SYSTEM.C (line 1577)
* Stack frame base $sp, length 136
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SetCityType(enum CITYTYPE type /*$a0*/)
{ // line 1, address 0x7f180
struct CdlFILE cdfile; // stack address -120
struct XYPAIR *info; // $s2
char namebuffer[64]; // stack address -96
unsigned char result[8]; // stack address -32
int i; // $a2
int sector; // $s0
} // line 78, address 0x7f3a0
/*
* Offset 0x7F3BC
* D:\driver2\game\C\SYSTEM.C (line 646)
* Stack frame base $sp, length 104
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ Loadfile(char *name /*$a2*/, char *addr /*$s2*/)
{ // line 1, address 0x7f3bc
char namebuffer[64]; // stack address -88
unsigned char result[8]; // stack address -24
int nread; // $s0
} // line 24, address 0x7f450
/*
* Offset 0x7F450
* D:\driver2\game\C\SYSTEM.C (line 389)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ClearMem(char *mem /*$a0*/, int length /*$a1*/)
{ // line 1, address 0x7f450
char *end; // $v1
} // line 27, address 0x7f4e4
/*
* Offset 0x7F4E4
* D:\driver2\game\C\SYSTEM.C (line 427)
* Stack frame base $sp, length 0
*/
void /*$ra*/ setMem8(unsigned char *mem /*$a0*/, unsigned char val /*$a1*/, int length /*$a2*/)
{ // line 1, address 0x7f4e4
unsigned char *end; // $v1
unsigned long lval; // $a3
} // line 32, address 0x7f58c
/*
* Offset 0x7F58C
* D:\driver2\game\C\SYSTEM.C (line 469)
* Stack frame base $sp, length 0
*/
void /*$ra*/ setMem16(unsigned short *mem /*$a0*/, unsigned short val /*$a1*/, int length /*$a2*/)
{ // line 1, address 0x7f58c
unsigned short *end; // $a3
unsigned long lval; // $a2
} // line 26, address 0x7f61c
/*
* Offset 0x7F61C
* D:\driver2\game\C\SYSTEM.C (line 1566)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ResetCityType()
{
}
/*
* Offset 0x7F630
* D:\driver2\game\C\SYSTEM.C (line 1682)
* Stack frame base $sp, length 192
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ FileExists(char *filename /*$a2*/)
{ // line 1, address 0x7f630
struct CdlFILE cdfile; // stack address -176
char namebuffer[128]; // stack address -152
unsigned char result[8]; // stack address -24
int retries; // $s1
} // line 26, address 0x7f6a8
/*
* Offset 0x7F6A8
* D:\driver2\game\C\SYSTEM.C (line 1723)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 ra
*/
enum CDTYPE /*$ra*/ DiscSwapped(char *filename /*$s1*/)
{ // line 1, address 0x7f6a8
struct CdlFILE cdfile; // stack address -40
int ret; // $v1
} // line 39, address 0x7f764
/*
* Offset 0x7F764
* D:\driver2\game\C\SYSTEM.C (line 1253)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SwapDrawBuffers()
{ // line 2, address 0x7f764
} // line 50, address 0x7f828
/*
* Offset 0x7F828
* D:\driver2\game\C\SYSTEM.C (line 1535)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{
}
/*
* Offset 0x7F8B0
* D:\driver2\game\C\SYSTEM.C (line 580)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ Init_FileSystem()
{
}
/*
* Offset 0x7F8D8
* D:\driver2\game\C\SYSTEM.C (line 622)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ DoCDRetry()
{ // line 2, address 0x7f8d8
static int retries; // address 0xc
unsigned char result[8]; // stack address -16
} // line 11, address 0x7f920
/*
* Offset 0x7F920
* D:\driver2\game\C\SYSTEM.C (line 952)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ReportMode(int on /*$s0*/)
{ // line 1, address 0x7f920
static unsigned char param[8]; // address 0x0
} // line 15, address 0x7f95c
/*
* Offset 0x7F96C
* D:\driver2\game\C\SYSTEM.C (line 1017)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ loadsectors(char *addr /*$a0*/, int sector /*$v0*/, int nsectors /*$a2*/)
{ // line 1, address 0x7f96c
struct CdlLOC pos; // stack address -16
} // line 18, address 0x7f9ec
/*
* Offset 0x7F9EC
* D:\driver2\game\C\SYSTEM.C (line 1221)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ EnableDisplay()
{ // line 2, address 0x7f9ec
int i; // $s1
} // line 9, address 0x7fa58
/*
* Offset 0x7FA58
* D:\driver2\game\C\SYSTEM.C (line 1239)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DisableDisplay()
{
}
/*
* Offset 0x7FA78
* D:\driver2\game\C\SYSTEM.C (line 1349)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ UpdatePadData()
{
}
/*
* Offset 0x7FAAC
* D:\driver2\game\C\SYSTEM.C (line 978)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ data_ready()
{
}
/*
* Offset 0x7FADC
* D:\driver2\game\C\SYSTEM.C (line 987)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ sector_ready(unsigned char intr /*$a0*/, unsigned char *result /*$a1*/)
{ // line 1, address 0x7fadc
{ // line 17, address 0x7fb4c
struct CdlLOC p; // stack address -16
} // line 27, address 0x7fb9c
} // line 28, address 0x7fbac

136
src/C/targets.c Normal file
View File

@ -0,0 +1,136 @@
#include "../decomp_defs.h"
SVECTOR targetArrowVerts[43] =
{
{ 65491, 65266, 0, 0 },
{ 45, 65266, 0, 0 },
{ 45, 65446, 0, 0 },
{ 90, 65446, 0, 0 },
{ 0, 0, 0, 0 },
{ 65446, 65446, 0, 0 },
{ 65491, 65446, 0, 0 },
{ 65440, 64768, 0, 0 },
{ 96, 64768, 0, 0 },
{ 96, 65320, 0, 0 },
{ 65440, 65320, 0, 0 },
{ 88, 65476, 0, 0 },
{ 36, 65528, 0, 0 },
{ 65500, 65528, 0, 0 },
{ 65448, 65476, 0, 0 },
{ 65448, 65404, 0, 0 },
{ 65500, 65352, 0, 0 },
{ 36, 65352, 0, 0 },
{ 88, 65404, 0, 0 },
{ 177, 65417, 0, 0 },
{ 73, 65521, 0, 0 },
{ 65463, 65521, 0, 0 },
{ 65359, 65417, 0, 0 },
{ 65359, 65271, 0, 0 },
{ 65463, 65167, 0, 0 },
{ 73, 65167, 0, 0 },
{ 177, 65271, 0, 0 },
{ 65488, 65152, 0, 0 },
{ 65488, 65104, 0, 0 },
{ 65440, 65104, 0, 0 },
{ 65440, 65056, 0, 0 },
{ 96, 65056, 0, 0 },
{ 96, 65104, 0, 0 },
{ 48, 65104, 0, 0 },
{ 48, 65152, 0, 0 },
{ 221, 65387, 0, 0 },
{ 91, 65517, 0, 0 },
{ 65445, 65517, 0, 0 },
{ 65315, 65387, 0, 0 },
{ 65315, 65205, 0, 0 },
{ 65445, 65075, 0, 0 },
{ 91, 65075, 0, 0 },
{ 221, 65205, 0, 0 }
};
char normalTargetArrowTris[] = { 0, 1, 2, 0, 2, 6, 5, 3, 4 };
char loseTailTargetArrowTris[] = { 7, 8, 9, 7, 9, 0xA, 0xB, 0xC, 0xD, 0xB, 0xD, 0xE };
char windowTargetArrowTris[] = {
0x13, 0x14, 0x15, 0x13, 0x15, 0x16, 0x1A, 0x13, 0x16,
0x1A, 0x16, 0x17, 0x19, 0x1A, 0x17, 0x19, 0x17, 0x18,
0x1B, 0x1C, 0x22, 0x1C, 0x21, 0x22, 0x1D, 0x1E, 0x1F,
0x1D, 0x1F, 0x20
};
char maxSpeedTargetArrowTris[] = {
0x23, 0x24, 0x25, 0x23, 0x25, 0x26, 0x2A, 0x23, 0x26,
0x2A, 0x26, 0x27, 0x29, 0x2A, 0x27, 0x29, 0x27, 0x28
};
TARGET_ARROW_MODEL targetArrowModel[4] =
{
{ &targetArrowVerts, &normalTargetArrowTris, sizeof(normalTargetArrowTris) / 3 },
{ &targetArrowVerts, &loseTailTargetArrowTris, sizeof(loseTailTargetArrowTris) / 3 },
{ &targetArrowVerts, &windowTargetArrowTris, sizeof(windowTargetArrowTris) / 3 },
{ &targetArrowVerts, &maxSpeedTargetArrowTris, sizeof(maxSpeedTargetArrowTris) / 3 }
};
/*
* Offset 0x7FBAC
* D:\driver2\game\C\TARGETS.C (line 213)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ Draw3DTarget(struct VECTOR *position /*$s0*/, int flags /*$s2*/)
{ // line 1, address 0x7fbac
struct VECTOR pos; // stack address -32
int shadow; // $s1
} // line 49, address 0x7fdb0
/*
* Offset 0x7FDB0
* D:\driver2\game\C\TARGETS.C (line 267)
* Stack frame base $sp, length 72
* Saved registers at address -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, address 0x7fdb0
{ // line 4, address 0x7fe04
struct VECTOR tempVec; // stack address -56
struct SVECTOR *pVerts; // $s0
struct SVECTOR temp; // stack address -40
char *pVertIndex; // $a3
{ // line 16, address 0x7fe94
struct POLY_F3 *poly; // $t0
int z; // stack address -32
} // line 56, address 0x800ac
} // line 62, address 0x80140
} // line 63, address 0x80160
/*
* Offset 0x80160
* D:\driver2\game\C\TARGETS.C (line 412)
* Stack frame base $sp, length 144
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawStopZone(struct VECTOR *pPosition /*$s5*/)
{ // line 1, address 0x80160
struct VECTOR *pVector; // $s0
struct VECTOR pStopZonePt[4]; // stack address -128
struct POLY_FT4 *pPoly; // $s1
long *pOut; // $s2
long sz; // stack address -48
{ // line 18, address 0x80264
struct SVECTOR temp; // stack address -64
long p; // stack address -56
long flag; // stack address -52
} // line 53, address 0x80374
} // line 77, address 0x804e4
/*
* Offset 0x804E4
* D:\driver2\game\C\TARGETS.C (line 496)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ WorldToCameraPositions(struct VECTOR *pGlobalPositionIn /*$s1*/, struct VECTOR *pCameraPositionOut /*$s0*/, int count /*$s2*/)
{ // line 1, address 0x804e4
{ // line 4, address 0x80520
struct VECTOR temp; // stack address -48
} // line 6, address 0x80520
} // line 15, address 0x80590

175
src/C/texture.c Normal file
View File

@ -0,0 +1,175 @@
#include "../decomp_defs.h"
SXYPAIR tpagepos[20] =
{
{ 640, 0 },
{ 704, 0 },
{ 768, 0 },
{ 832, 0 },
{ 896, 0 },
{ 960, 0 },
{ 512, 256 },
{ 576, 256 },
{ 640, 256 },
{ 704, 256 },
{ 768, 256 },
{ 832, 256 },
{ 896, 256 },
{ 448, 0 },
{ 512, 0 },
{ 576, 0 },
{ 320, 256 },
{ 384, 256 },
{ 448, 256 },
{ 65535, 65535 }
};
int texture_is_icon = 0;
/*
* Offset 0x80590
* D:\driver2\game\C\TEXTURE.C (line 126)
* Stack frame base $sp, length 0
*/
void /*$ra*/ IncrementTPageNum(struct RECT *tpage /*$t0*/)
{ // line 1, address 0x80590
int i; // $a3
} // line 27, address 0x80654
/*
* Offset 0x80654
* D:\driver2\game\C\TEXTURE.C (line 191)
* Stack frame base $sp, length 0
*/
int /*$ra*/ Find_TexID(struct MODEL *model /*$t0*/, int t_id /*$a1*/)
{ // line 1, address 0x80654
char *polylist; // $a2
int i; // $a3
{ // line 12, address 0x806a0
} // line 15, address 0x806b8
{ // line 18, address 0x806b8
} // line 21, address 0x806b8
{ // line 24, address 0x806b8
} // line 27, address 0x806b8
{ // line 31, address 0x806b8
} // line 34, address 0x806b8
{ // line 38, address 0x806b8
} // line 41, address 0x806b8
{ // line 44, address 0x806b8
} // line 47, address 0x806b8
{ // line 50, address 0x806b8
} // line 53, address 0x806b8
{ // line 56, address 0x806b8
} // line 59, address 0x806b8
} // line 67, address 0x806f0
/*
* Offset 0x806F0
* D:\driver2\game\C\TEXTURE.C (line 378)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ LoadPermanentTPages(int *sector /*$fp*/)
{ // line 1, address 0x806f0
int tloop; // $s1
int i; // $s1
int tset; // $s0
int nsectors; // $s3
char *tpagebuffer; // $s2
{ // line 67, address 0x80944
int specmodel; // $a1
int page1; // $s6
int page2; // $s5
{ // line 87, address 0x809ec
int temp; // $s4
int clutsLoaded; // $s7
} // line 126, address 0x80b40
} // line 127, address 0x80b40
} // line 197, address 0x80c18
/*
* Offset 0x80C18
* D:\driver2\game\C\TEXTURE.C (line 602)
* Stack frame base $sp, length 72
* Saved registers at address -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, address 0x80c18
int i; // $s2
int j; // $s1
int texamt; // $s4
struct TEXINF *texinf; // $v1
char *nametable; // stack address -56
} // line 45, address 0x80dd8
/*
* Offset 0x80E08
* D:\driver2\game\C\TEXTURE.C (line 290)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
struct TEXINF * /*$ra*/ GetTextureInfoName(char *name /*$a0*/, struct TPAN *result /*$s0*/)
{ // line 1, address 0x80e08
int tpagenum; // stack address -16
int texturenum; // stack address -12
} // line 10, address 0x80e44
/*
* Offset 0x80E44
* D:\driver2\game\C\TEXTURE.C (line 116)
* Stack frame base $sp, length 0
*/
void /*$ra*/ IncrementClutNum(struct RECT *clut /*$a0*/)
{
}
/*
* Offset 0x80E7C
* D:\driver2\game\C\TEXTURE.C (line 155)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x80e7c
int i; // $s3
int npalettes; // $s4
struct RECT temptpage; // stack address -40
} // line 30, address 0x80fa4
/*
* Offset 0x80FA4
* D:\driver2\game\C\TEXTURE.C (line 261)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0x80fa4
int i; // $s4
int j; // $s1
int texamt; // $s2
struct TEXINF *texinf; // $s3
char *nametable; // $s6
} // line 26, address 0x810a0
/*
* Offset 0x810A0
* D:\driver2\game\C\TEXTURE.C (line 334)
* Stack frame base $sp, length 0
*/
void /*$ra*/ update_slotinfo(int tpage /*$a0*/, int slot /*$a1*/, struct RECT *pos /*$a2*/)
{
}
/*
* Offset 0x810E8
* D:\driver2\game\C\TEXTURE.C (line 347)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessTextureInfo(char *lump_ptr /*$a1*/)
{ // line 1, address 0x810e8
int i; // $a0
} // line 28, address 0x81180
/*
* Offset 0x81180
* D:\driver2\game\C\TEXTURE.C (line 578)
* Stack frame base $sp, length 104
* Saved registers at address -8: ra
*/
void /*$ra*/ ReloadIcons()
{ // line 2, address 0x81180
struct RECT tpage; // stack address -88
struct RECT clutpos; // stack address -80
char name[64]; // stack address -72
} // line 21, address 0x811a8

219
src/C/tile.c Normal file
View File

@ -0,0 +1,219 @@
/*
* Offset 0x41B78
* D:\driver2\game\C\TILE.C (line 79)
* Stack frame base $sp, length 16
* Saved registers at address -8: s0
*/
void /*$ra*/ Tile1x1(struct MODEL *model /*$a0*/)
{ // line 1, address 0x41b78
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, address 0x41bb4
unsigned long indices; // $a3
unsigned long texInfo; // $t2
{ // line 14, address 0x41bb4
long *ot; // $t8
{ // line 14, address 0x41bb4
int Z; // stack address -16
unsigned long uv_01; // $t4
unsigned long uv_23; // $t5
//0x1B4 otherhalf
{ // line 65, address 0x41d2c
int r2; // $a0
} // line 65, address 0x41d2c
} // line 82, address 0x41db0
} // line 83, address 0x41db0
} // line 84, address 0x41db0
} // line 87, address 0x41de4
/*
* Offset 0x41DE4
* D:\driver2\game\C\TILE.C (line 180)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ DrawTILES(int tile_amount /*$s2*/)
{ // line 1, address 0x41de4
{ // line 21, address 0x41eec
} // line 24, address 0x41f24
{ // line 28, address 0x41f24
struct PACKED_CELL_OBJECT **tilePointers; // $s3
int previous_matrix; // $s4
{ // line 40, address 0x41f9c
int model_number; // $s0
int z; // $a1
{ // line 43, address 0x41f9c
int yang; // $a1
struct PACKED_CELL_OBJECT *ppco; // $a0
} // line 61, address 0x42020
{ // line 90, address 0x42094
struct MODEL *model; // $a0
} // line 99, address 0x420c8
} // line 102, address 0x420c8
} // line 105, address 0x42118
} // line 107, address 0x42118
/*
* Offset 0x42118
* D:\driver2\game\C\TILE.C (line 292)
* Stack frame base $sp, length 8
* Saved registers at address -8: s0
*/
void /*$ra*/ makeMesh(struct MVERTEX *VSP[5][5] /*$t4*/, int m /*$t2*/, int n /*$a2*/)
{ // line 1, address 0x42118
{ // line 21, address 0x42130
int a; // $t0
int b; // $t1
} // line 21, address 0x42130
{ // line 21, address 0x42130
int a; // $a3
} // line 21, address 0x42130
{ // line 21, address 0x42130
int a; // $a0
int b; // $a1
} // line 21, address 0x42130
{ // line 28, address 0x4221c
int a; // $t0
int b; // $t1
} // line 28, address 0x4221c
{ // line 28, address 0x4221c
int a; // $a3
} // line 28, address 0x4221c
{ // line 28, address 0x4221c
int a; // $a0
int b; // $a1
} // line 28, address 0x4221c
{ // line 34, address 0x422f4
int k; // $s0
{ // line 35, address 0x422f4
int a; // $t0
int b; // $t1
} // line 35, address 0x422f4
{ // line 35, address 0x422f4
int a; // $a3
} // line 35, address 0x422f4
{ // line 35, address 0x422f4
int a; // $a0
int b; // $a1
} // line 35, address 0x422f4
{ // line 40, address 0x423e0
int a; // $t0
int b; // $t1
} // line 40, address 0x423e0
{ // line 40, address 0x423e0
int a; // $a3
} // line 40, address 0x423e0
{ // line 40, address 0x423e0
int a; // $a0
int b; // $a1
} // line 40, address 0x423e0
} // line 44, address 0x424c0
{ // line 48, address 0x424c8
int a; // $t1
int b; // $t5
} // line 48, address 0x424c8
{ // line 51, address 0x42538
int a; // $v0
int b; // $a1
} // line 51, address 0x42538
{ // line 55, address 0x42594
int a; // $t0
int b; // $t2
} // line 55, address 0x42594
{ // line 55, address 0x42594
int a; // $t3
int b; // $v0
} // line 55, address 0x42594
{ // line 55, address 0x42594
int a; // $a2
} // line 55, address 0x42594
{ // line 55, address 0x42594
int a; // $t8
int b; // $a1
} // line 58, address 0x426ac
} // line 61, address 0x426b8
/*
* Offset 0x426B8
* D:\driver2\game\C\TILE.C (line 359)
* Stack frame base $sp, length 24
* Saved registers at address -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, address 0x426b8
int j; // $t6
int k; // $t9
struct POLY_FT4 *prims; // $t1
{ // line 11, address 0x42720
int Z1; // stack address -24
int Z2; // stack address -20
struct MVERTEX *VST[5][5]; // $t2
long *ot; // $t7
{ // line 23, address 0x4277c
int r2; // $v0
} // line 23, address 0x4277c
{ // line 103, address 0x42a98
int r2; // $v0
} // line 121, address 0x42b1c
} // line 124, address 0x42b1c
} // line 127, address 0x42b54
/*
* Offset 0x42B54
* D:\driver2\game\C\TILE.C (line 489)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ SubdivNxM(char *polys /*$t4*/, unsigned long n /*$s1*/, unsigned long m /*$s0*/, int ofse /*$s2*/)
{ // line 1, address 0x42b54
struct MVERTEX *VSP[5][5]; // $t3
struct _pct *pc; // $t2
{ // line 1, address 0x42b54
unsigned long indices; // $a0
struct SVECTOR *v0; // $t1
struct SVECTOR *v1; // $a1
struct SVECTOR *v2; // $t0
} // line 1, address 0x42b54
{ // line 1, address 0x42b54
unsigned long uv_01; // $v1
unsigned long uv_23; // $a2
} // line 1, address 0x42b54
{ // line 58, address 0x42e54
int Z; // stack address -24
{ // line 73, address 0x42ec8
unsigned long texInfo; // $a0
} // line 80, address 0x42f3c
} // line 86, address 0x42f6c
} // line 88, address 0x42f9c
/*
* Offset 0x42F9C
* D:\driver2\game\C\TILE.C (line 641)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessSubDivisionLump(char *lump_ptr /*$a0*/, int lump_size /*$a1*/)
{
}
/*
* Offset 0x42FA8
* D:\driver2\game\C\TILE.C (line 581)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ TileNxN(struct MODEL *model /*$s4*/, int levels /*$s2*/, int Dofse /*$s6*/)
{ // line 1, address 0x42fa8
int i; // $s3
char *polys; // $s0
char ttype; // $a3
unsigned long tiletypes; // $s1
int baseOffset; // $s5
} // line 50, address 0x430f8
/*
* Offset 0x430F8
* D:\driver2\game\C\TILE.C (line 651)
* Stack frame base $sp, length 0
*/
void /*$ra*/ ProcessLowDetailTable(char *lump_ptr /*$a0*/, int lump_size /*$a1*/)
{ // line 1, address 0x430f8
int i; // $a1
} // line 23, address 0x43174

10
src/C/time.c Normal file
View File

@ -0,0 +1,10 @@
/*
* Offset 0x811A8
* D:\driver2\game\C\TIME.C (line 5)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ GetTimeStamp(char *buffer /*$a0*/)
{
}

173
src/C/wheelforces.c Normal file
View File

@ -0,0 +1,173 @@
#include "../decomp_defs.h"
HANDLING_TYPE handlingType[7] = {
{0x20, 1, 0, 1},
{0x1D, 0, 0, 0},
{0x2D, 1, 1, 0},
{0x37, 1, 1, 0},
{0x44, 1, 1, 0},
{0x20, 1, 0, 1},
{0x1D, 0, 0, 0}
};
/*
* Offset 0x811E0
* D:\driver2\game\C\WHEELFORCES.C (line 98)
* Stack frame base $sp, length 264
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ StepOneCar(struct _CAR_DATA *cp /*$s1*/)
{ // line 1, address 0x811e0
struct CAR_LOCALS _cl; // stack address -248
struct CAR_LOCALS *cl; // $s3
int i; // $s0
int speed; // $v1
struct _sdPlane *SurfacePtr; // stack address -48
{ // line 24, address 0x8127c
int a; // $v1
int b; // $a0
} // line 33, address 0x812e4
{ // line 35, address 0x812e4
long deepestNormal[4]; // stack address -208
long deepestLever[4]; // stack address -192
long deepestPoint[4]; // stack address -176
int lift; // $s5
int count; // $a0
int friToUse; // $s6
struct SVECTOR *carDisp; // $a1
{ // line 58, address 0x8137c
long pointPos[4]; // stack address -160
long surfacePoint[4]; // stack address -144
long surfaceNormal[4]; // stack address -128
long lever[4]; // stack address -112
int newLift; // $a0
} // line 98, address 0x81478
{ // line 103, address 0x81490
long pointVel[4]; // stack address -112
long reaction[4]; // stack address -96
int strikeVel; // $a2
int componant; // $t3
static int frictionLimit[6] = { 4116480, 24698880, 4116480, 20582400, 123494400 }; // address 0x0
{ // line 111, address 0x81490
int lever_dot_n; // $v1
int twistY; // $v0
int displacementsquared; // $a0
int denom; // $a0
} // line 111, address 0x81490
{ // line 128, address 0x81698
int loss; // $v1
int limit; // $a1
} // line 132, address 0x816d4
{ // line 137, address 0x81720
{ // line 139, address 0x81734
struct VECTOR direction; // stack address -80
} // line 139, address 0x81734
{ // line 144, address 0x81774
struct VECTOR direction; // stack address -64
} // line 146, address 0x817ac
} // line 151, address 0x81804
} // line 152, address 0x81804
{ // line 158, address 0x818d4
struct VECTOR address; // stack address -112
} // line 171, address 0x819ac
} // line 172, address 0x819ac
} // line 184, address 0x819f4
/*
* Offset 0x819F4
* D:\driver2\game\C\WHEELFORCES.C (line 288)
* Stack frame base $sp, length 0
*/
void /*$ra*/ GetFrictionScalesDriver1(struct _CAR_DATA *cp /*$t0*/, struct CAR_LOCALS *cl /*$a1*/, int *frontFS /*$a2*/, int *rearFS /*$a3*/)
{ // line 1, address 0x819f4
struct _HANDLING_TYPE *hp; // $t2
{ // line 18, address 0x81a84
int q; // $v1
} // line 26, address 0x81b00
{ // line 99, address 0x81e30
int traction; // $a0
} // line 105, address 0x81e88
} // line 106, address 0x81e88
/*
* Offset 0x81E88
* D:\driver2\game\C\WHEELFORCES.C (line 412)
* Stack frame base $sp, length 16
*/
void /*$ra*/ ConvertTorqueToAngularAcceleration(struct _CAR_DATA *cp /*$a0*/, struct CAR_LOCALS *cl /*$t5*/)
{ // line 1, address 0x81e88
long nose[4]; // stack address -16
int zd; // $a3
int i; // $t4
int twistY; // $t0
int twistZ; // $v1
} // line 27, address 0x81fb8
/*
* Offset 0x81FB8
* D:\driver2\game\C\WHEELFORCES.C (line 442)
* Stack frame base $sp, length 208
* Saved registers at address -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, address 0x81fb8
int oldSpeed; // $v1
int frictionScale; // $fp
int frontFS; // stack address -96
int rearFS; // stack address -92
int i; // stack address -84
int cdx; // stack address -80
int cdz; // stack address -76
int sdx; // stack address -72
int sdz; // stack address -68
int friction_coef; // $s6
struct CAR_COSMETICS *car_cos; // stack address -64
struct _sdPlane *SurfacePtr; // stack address -88
int player_id; // stack address -60
{ // line 27, address 0x8210c
int oldCompression; // $s5
int newCompression; // $s3
int susForce; // $s0
long wheelPos[4]; // stack address -176
long surfacePoint[4]; // stack address -160
long surfaceNormal[4]; // stack address -144
{ // line 46, address 0x821a8
short typ; // $v1
} // line 55, address 0x82240
{ // line 71, address 0x822ec
int chan; // $s1
} // line 83, address 0x82384
{ // line 95, address 0x823e8
struct VECTOR force; // stack address -128
long pointVel[4]; // stack address -112
int lfx; // $a2
int lfz; // $t2
int sidevel; // $t0
int slidevel; // $t1
{ // line 112, address 0x824f4
} // line 117, address 0x82558
{ // line 150, address 0x82698
int hack; // $v0
int hx; // $v0
int hz; // $v1
} // line 150, address 0x82698
{ // line 203, address 0x82958
int a; // $v1
} // line 206, address 0x82990
} // line 229, address 0x82a6c
} // line 237, address 0x82b44
} // line 252, address 0x82c38
/*
* Offset 0x82C38
* D:\driver2\game\C\WHEELFORCES.C (line 66)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ StepCars()
{ // line 2, address 0x82c38
struct _CAR_DATA **ppCar; // $s0
struct _CAR_DATA **end; // $s1
{ // line 7, address 0x82c74
} // line 10, address 0x82c74
{ // line 14, address 0x82c9c
} // line 15, address 0x82c9c
} // line 17, address 0x82ccc

120
src/C/xaplay.c Normal file
View File

@ -0,0 +1,120 @@
#include "../decomp_defs.h"
char* XANames[] = {
"\\DRIVER2\\XA\\XABNK01.XA;1",
"\\DRIVER2\\XA\\XABNK02.XA;1",
"\\DRIVER2\\XA\\XABNK03.XA;1",
"\\DRIVER2\\XA\\XABNK04.XA;1",
};
/*
* Offset 0x82CCC
* D:\driver2\game\C\XAPLAY.C (line 265)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ PlayXA(int num /*$a3*/, int index /*$t0*/)
{ // line 1, address 0x82ccc
struct CdlFILTER filt; // stack address -40
struct CdlLOC loc; // stack address -32
unsigned char res[8]; // stack address -24
} // line 25, address 0x82db0
/*
* Offset 0x82DC8
* D:\driver2\game\C\XAPLAY.C (line 155)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ GetXAData(int number /*$a0*/)
{ // line 1, address 0x82dc8
int i; // $s0
struct CdlFILE fp; // stack address -32
} // line 12, address 0x82e14
/*
* Offset 0x82E14
* D:\driver2\game\C\XAPLAY.C (line 226)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ PrepareXA()
{ // line 2, address 0x82e14
unsigned char param[4]; // stack address -16
} // line 23, address 0x82ec0
/*
* Offset 0x82ED0
* D:\driver2\game\C\XAPLAY.C (line 320)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ UnprepareXA()
{ // line 2, address 0x82ed0
unsigned char param[4]; // stack address -16
} // line 17, address 0x82f18
/*
* Offset 0x82F28
* D:\driver2\game\C\XAPLAY.C (line 128)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ GetMissionXAData(int number /*$s0*/)
{ // line 1, address 0x82f28
struct CdlFILE fp; // stack address -32
} // line 16, address 0x82f80
/*
* Offset 0x82F80
* D:\driver2\game\C\XAPLAY.C (line 185)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetXAVolume(int volume /*$a0*/)
{ // line 1, address 0x82f80
} // line 12, address 0x82fe0
/*
* Offset 0x82FE0
* D:\driver2\game\C\XAPLAY.C (line 343)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StopXA()
{
}
/*
* Offset 0x8302C
* D:\driver2\game\C\XAPLAY.C (line 386)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ResumeXA()
{ // line 2, address 0x8302c
struct CdlFILTER filt; // stack address -32
unsigned char res[8]; // stack address -24
} // line 22, address 0x830cc
/*
* Offset 0x830E0
* D:\driver2\game\C\XAPLAY.C (line 418)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ PauseXA()
{ // line 1, address 0x830e0
unsigned char res[8]; // stack address -16
} // line 15, address 0x83148
/*
* Offset 0x83158
* D:\driver2\game\C\XAPLAY.C (line 310)
* Stack frame base $sp, length 0
*/
int /*$ra*/ XAPrepared()
{
}
/*
* Offset 0x83164
* D:\driver2\game\C\XAPLAY.C (line 355)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ cbready(int intr /*$s1*/, unsigned char *result /*$a1*/)
{
}

688
src/C/xmplay.c Normal file
View File

@ -0,0 +1,688 @@
// FIXME: XMPlay from PSX sdk or libxmp
/*
* Offset 0x83218
* D:\driver2\game\C\XMPLAY.C (line 454)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ InitXMData(unsigned char *mpp /*$s5*/, int XM_ID /*$a1*/, int S3MPan /*$a2*/)
{ // line 1, address 0x83218
int t; // $s2
int a; // $s4
int c; // $s3
unsigned long b; // $a2
unsigned short b2; // $v1
} // line 67, address 0x834b4
/*
* Offset 0x834B4
* D:\driver2\game\C\XMPLAY.C (line 627)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{ // line 1, address 0x834b4
int i; // $s1
int pmsk; // $v1
int Chn; // $s0
int t; // $a2
int SngID; // $s3
int fr; // $a3
} // line 151, address 0x83994
/*
* Offset 0x83994
* D:\driver2\game\C\XMPLAY.C (line 788)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ JPlayNote(unsigned char *j /*$s0*/, int pmsk /*$s3*/)
{ // line 1, address 0x83994
unsigned char b; // $s1
int ret; // $s2
unsigned char note; // $s4
} // line 88, address 0x83bcc
/*
* Offset 0x83BCC
* D:\driver2\game\C\XMPLAY.C (line 885)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ JPlayEffects()
{ // line 2, address 0x83bcc
unsigned char vol; // $a1
unsigned char eff; // $s1
unsigned char dat; // $s0
} // line 119, address 0x83e0c
/*
* Offset 0x83E0C
* D:\driver2\game\C\XMPLAY.C (line 1012)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SPE(unsigned char eff /*$a0*/, unsigned char dat /*$s0*/)
{ // line 1, address 0x83e0c
int hi; // $v1
int lo; // $a0
} // line 162, address 0x84218
/*
* Offset 0x84218
* D:\driver2\game\C\XMPLAY.C (line 1182)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoEEffects(unsigned char dat /*$a0*/)
{ // line 1, address 0x84218
unsigned char nib; // $a1
} // line 138, address 0x8458c
/*
* Offset 0x8458C
* D:\driver2\game\C\XMPLAY.C (line 1448)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetPer()
{ // line 2, address 0x8458c
unsigned long *j; // $a1
} // line 61, address 0x84730
/*
* Offset 0x84740
* D:\driver2\game\C\XMPLAY.C (line 1596)
* Stack frame base $sp, length 8
*/
void /*$ra*/ DoS3MRetrig(unsigned char inf /*$a0*/)
{ // line 1, address 0x84740
unsigned char hi; // $a1
} // line 76, address 0x84958
/*
* Offset 0x84958
* D:\driver2\game\C\XMPLAY.C (line 1710)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoVibrato()
{ // line 2, address 0x84958
unsigned char q; // $a1
unsigned short temp; // $a2
} // line 36, address 0x84a58
/*
* Offset 0x84A58
* D:\driver2\game\C\XMPLAY.C (line 1754)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoTremolo()
{ // line 2, address 0x84a58
unsigned char q; // $a2
unsigned short temp; // $a3
} // line 40, address 0x84ba4
/*
* Offset 0x84BA4
* D:\driver2\game\C\XMPLAY.C (line 1921)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ UpdatePatternData(int SC /*$a0*/)
{ // line 1, address 0x84ba4
int SP; // $s1
int t; // $s0
int pmsk; // $a2
int FindOffset; // $t0
unsigned char *pataddr; // $a0
unsigned char patdat; // $a1
} // line 174, address 0x85080
/*
* Offset 0x8509C
* D:\driver2\game\C\XMPLAY.C (line 2195)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ ApplyEffs()
{ // line 2, address 0x8509c
short envpan; // $s2
short envvol; // $s1
int t; // $s3
int pmsk; // $v1
short vlm; // $s0
short Pn; // $a1
unsigned char MaxChans; // $s4
} // line 86, address 0x853b8
/*
* Offset 0x853DC
* D:\driver2\game\C\XMPLAY.C (line 2322)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoDolbySS()
{
}
/*
* Offset 0x854B0
* D:\driver2\game\C\XMPLAY.C (line 2398)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ UpdateHardware()
{ // line 2, address 0x854b0
int t; // $s2
int prd; // $s0
int SPUKeyOn; // $s6
int pmsk; // $v1
int Chnl; // $s1
unsigned char MaxChans; // $s3
int i; // $v1
} // line 105, address 0x857e4
/*
* Offset 0x8580C
* D:\driver2\game\C\XMPLAY.C (line 2564)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
short /*$ra*/ ProcessEnvelope(short v /*$a2*/, unsigned char keyon /*$a1*/, int JSmp /*$a2*/)
{ // line 1, address 0x8580c
unsigned char a2; // $s2
unsigned char b; // $s0
unsigned short p; // $s1
unsigned long *j; // $s5
short bpos; // $s3
} // line 63, address 0x859dc
/*
* Offset 0x859DC
* D:\driver2\game\C\XMPLAY.C (line 2635)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
short /*$ra*/ ProcessPanEnvelope(short v /*$a2*/, unsigned char keyon /*$a1*/, int JSmp /*$a2*/)
{ // line 1, address 0x859dc
unsigned char a2; // $s2
unsigned char b; // $s0
unsigned short p; // $s1
unsigned long *j; // $s5
short bpos; // $s3
} // line 64, address 0x85bac
/*
* Offset 0x85BAC
* D:\driver2\game\C\XMPLAY.C (line 3206)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ XM_Restart(int Song_ID /*$a1*/)
{ // line 1, address 0x85bac
int t; // $s0
} // line 20, address 0x85c8c
/*
* Offset 0x85CA0
* D:\driver2\game\C\XMPLAY.C (line 3160)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ XM_Pause(int Song_ID /*$a1*/)
{ // line 1, address 0x85ca0
int t; // $s0
} // line 19, address 0x85d6c
/*
* Offset 0x85D80
* D:\driver2\game\C\XMPLAY.C (line 331)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ XM_Exit()
{ // line 2, address 0x85d80
int i; // $s0
} // line 11, address 0x85de0
/*
* Offset 0x85DE0
* D:\driver2\game\C\XMPLAY.C (line 374)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ XM_Update()
{ // line 2, address 0x85de0
} // line 11, address 0x85e20
/*
* Offset 0x85E30
* D:\driver2\game\C\XMPLAY.C (line 429)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ XM_PlayStop(int Song_ID /*$a1*/)
{
}
/*
* Offset 0x85EA0
* D:\driver2\game\C\XMPLAY.C (line 409)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_PlayStart(int Song_ID /*$a2*/, int PlayMask /*$a1*/)
{
}
/*
* Offset 0x85EF4
* D:\driver2\game\C\XMPLAY.C (line 2707)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_SetSongPos(int Song_ID /*$a2*/, unsigned short pos /*$a1*/)
{ // line 1, address 0x85ef4
int t; // $a2
} // line 29, address 0x85fdc
/*
* Offset 0x85FE4
* D:\driver2\game\C\XMPLAY.C (line 592)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_OnceOffInit(int PAL /*$a0*/)
{
}
/*
* Offset 0x8601C
* D:\driver2\game\C\XMPLAY.C (line 345)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ XM_CloseVAB(int VabID /*$a1*/)
{
}
/*
* Offset 0x86070
* D:\driver2\game\C\XMPLAY.C (line 3273)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_SetMasterVol(int Song_ID /*$a2*/, unsigned char Vol /*$a1*/)
{
}
/*
* Offset 0x860C4
* D:\driver2\game\C\XMPLAY.C (line 3331)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ XM_FreeVAG(int addr /*$a0*/)
{
}
/*
* Offset 0x860E4
* D:\driver2\game\C\XMPLAY.C (line 1855)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ UpdateWithTimer(int SC /*$a3*/)
{
}
/*
* Offset 0x861E0
* D:\driver2\game\C\XMPLAY.C (line 1887)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ XM_DoFullUpdate(int SC /*$s1*/)
{
}
/*
* Offset 0x8629C
* D:\driver2\game\C\XMPLAY.C (line 3351)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ XM_Quit(int SongID /*$s0*/)
{
}
/*
* Offset 0x862E0
* D:\driver2\game\C\XMPLAY.C (line 3449)
* Stack frame base $sp, length 0
*/
int /*$ra*/ XM_GetFreeVAB()
{ // line 2, address 0x862e0
int i; // $v1
} // line 10, address 0x86318
/*
* Offset 0x86320
* D:\driver2\game\C\XMPLAY.C (line 3461)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_SetVAGAddress(int VabID /*$a0*/, int slot /*$a1*/, int addr /*$a2*/)
{
}
/*
* Offset 0x86358
* D:\driver2\game\C\XMPLAY.C (line 354)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_CloseVAB2(int VabID /*$a3*/)
{ // line 1, address 0x86358
int i; // $v0
} // line 13, address 0x863c0
/*
* Offset 0x863C0
* D:\driver2\game\C\XMPLAY.C (line 3511)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_SetSongAddress(unsigned char *Address /*$a0*/)
{
}
/*
* Offset 0x86404
* D:\driver2\game\C\XMPLAY.C (line 3506)
* Stack frame base $sp, length 0
*/
int /*$ra*/ XM_GetSongSize()
{
}
/*
* Offset 0x8640C
* D:\driver2\game\C\XMPLAY.C (line 3527)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_FreeAllSongIDs()
{
}
/*
* Offset 0x86418
* D:\driver2\game\C\XMPLAY.C (line 3537)
* Stack frame base $sp, length 0
*/
void /*$ra*/ XM_SetFileHeaderAddress(unsigned char *Address /*$a0*/)
{
}
/*
* Offset 0x8644C
* D:\driver2\game\C\XMPLAY.C (line 3532)
* Stack frame base $sp, length 0
*/
int /*$ra*/ XM_GetFileHeaderSize()
{
}
/*
* Offset 0x86454
* D:\driver2\game\C\XMPLAY.C (line 256)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 ra
*/
unsigned short /*$ra*/ GetLogPeriod(unsigned char note /*$a0*/, unsigned short fine /*$a1*/)
{ // line 1, address 0x86454
} // line 25, address 0x864ec
/*
* Offset 0x864EC
* D:\driver2\game\C\XMPLAY.C (line 1831)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ UpdateXMData()
{ // line 2, address 0x864ec
int SC; // $s0
} // line 20, address 0x86588
/*
* Offset 0x865A0
* D:\driver2\game\C\XMPLAY.C (line 1817)
* Stack frame base $sp, length 0
*/
short /*$ra*/ DoVol(unsigned long a /*$v0*/, short b /*$a1*/, short c /*$a2*/)
{
}
/*
* Offset 0x865C8
* D:\driver2\game\C\XMPLAY.C (line 1802)
* Stack frame base $sp, length 0
*/
short /*$ra*/ DoPan(short envpan /*$a0*/, short pan /*$a1*/)
{
}
/*
* Offset 0x8661C
* D:\driver2\game\C\XMPLAY.C (line 1545)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoVolSlide(unsigned char dat /*$a1*/)
{
}
/*
* Offset 0x866AC
* D:\driver2\game\C\XMPLAY.C (line 1680)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoToneSlide()
{ // line 2, address 0x866ac
int dist; // $v1
} // line 22, address 0x86714
/*
* Offset 0x86714
* D:\driver2\game\C\XMPLAY.C (line 1561)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DoXMPanSlide(unsigned char inf /*$a0*/)
{ // line 1, address 0x86714
unsigned char lo; // $v0
unsigned char hi; // $a0
short pan; // $v1
} // line 27, address 0x86798
/*
* Offset 0x867A0
* D:\driver2\game\C\XMPLAY.C (line 1517)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ Arpeggio(unsigned char dat /*$a1*/)
{ // line 1, address 0x867a0
unsigned char note; // $a2
} // line 20, address 0x8684c
/*
* Offset 0x8684C
* D:\driver2\game\C\XMPLAY.C (line 1372)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetInstr(unsigned char inst /*$a0*/)
{ // line 1, address 0x8684c
unsigned long *j; // $a2
} // line 61, address 0x86940
/*
* Offset 0x86948
* D:\driver2\game\C\XMPLAY.C (line 1328)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetNote(unsigned char note /*$a0*/)
{ // line 1, address 0x86948
unsigned char *j; // $a0
} // line 35, address 0x86a20
/*
* Offset 0x86A28
* D:\driver2\game\C\XMPLAY.C (line 568)
* Stack frame base $sp, length 0
*/
unsigned long /*$ra*/ GetLong(unsigned char *mpp /*$a0*/)
{ // line 1, address 0x86a28
} // line 16, address 0x86a54
/*
* Offset 0x86A54
* D:\driver2\game\C\XMPLAY.C (line 237)
* Stack frame base $sp, length 0
*/
short /*$ra*/ Interpolate(short p /*$a0*/, short p1 /*$a1*/, short p2 /*$a2*/, short v1 /*$a3*/, int v2 /*stack 16*/)
{ // line 1, address 0x86a54
} // line 11, address 0x86ad4
/*
* Offset 0x86AD4
* D:\driver2\game\C\XMPLAY.C (line 288)
* Stack frame base $sp, length 0
*/
unsigned short /*$ra*/ JPGetPeriod(unsigned char note /*$a0*/, short fine /*$a1*/)
{
}
/*
* Offset 0x86B08
* D:\driver2\game\C\XMPLAY.C (line 299)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
unsigned short /*$ra*/ GetPeriod(unsigned char note /*$a2*/, unsigned short c2spd /*$a1*/)
{ // line 1, address 0x86b08
} // line 8, address 0x86b58
/*
* Offset 0x86B58
* D:\driver2\game\C\XMPLAY.C (line 2540)
* Stack frame base $sp, length 0
*/
long /*$ra*/ GetFreq2(long period /*$v1*/)
{ // line 2, address 0x86b58
int okt; // $a1
long frequency; // $a0
} // line 16, address 0x86bb0
/*
* Offset 0x86BB0
* D:\driver2\game\C\XMPLAY.C (line 3068)
* Stack frame base $sp, length 48
* Saved registers at address -8: ra
*/
void /*$ra*/ CurrentKeyStat()
{ // line 2, address 0x86bb0
int t; // $a1
char KeyStat[24]; // stack address -32
} // line 15, address 0x86c5c
/*
* Offset 0x86C5C
* D:\driver2\game\C\XMPLAY.C (line 3091)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ StpCh(int Channel /*$a0*/)
{
}
/*
* Offset 0x86C80
* D:\driver2\game\C\XMPLAY.C (line 3115)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetFrq(int Channel /*$a0*/, int Pitch /*$a1*/)
{
}
/*
* Offset 0x86CA0
* D:\driver2\game\C\XMPLAY.C (line 3104)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetVol(int Channel /*$a0*/, int LVol /*$a1*/, int RVol /*$a2*/)
{
}
/*
* Offset 0x86CCC
* D:\driver2\game\C\XMPLAY.C (line 3003)
* Stack frame base $sp, length 24
* Saved registers at address -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*/)
{ // line 1, address 0x86ccc
} // line 23, address 0x86d60
/*
* Offset 0x86D60
* D:\driver2\game\C\XMPLAY.C (line 3308)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ClearSPU(int VBID /*$a0*/)
{ // line 1, address 0x86d60
int i; // $s1
int Amount; // $a1
} // line 15, address 0x86ddc
/*
* Offset 0x86DDC
* D:\driver2\game\C\XMPLAY.C (line 3035)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ InitSPUChannel(int Channel /*$a0*/)
{
}
/*
* Offset 0x86E44
* D:\driver2\game\C\XMPLAY.C (line 3126)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ SilenceXM(int Song_ID /*$a0*/)
{ // line 2, address 0x86e44
int t; // $s0
int i; // $s1
int c; // $a0
int pmsk; // $v0
} // line 25, address 0x86f24
/*
* Offset 0x86F24
* D:\driver2\game\C\XMPLAY.C (line 2289)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ UpdateEffs()
{ // line 2, address 0x86f24
int t; // $s0
int pmsk; // $v1
unsigned char MaxChans; // $s1
} // line 24, address 0x86fbc
/*
* Offset 0x86FD8
* D:\driver2\game\C\XMPLAY.C (line 2516)
* Stack frame base $sp, length 0
*/
int /*$ra*/ IntVols(int Vol1 /*$a0*/, int Vol2 /*$a1*/)
{ // line 1, address 0x86fd8
int a; // $v1
} // line 11, address 0x87008
/*
* Offset 0x87008
* D:\driver2\game\C\XMPLAY.C (line 3337)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetFreeSongID()
{ // line 2, address 0x87008
int i; // $v1
} // line 12, address 0x87058
/*
* Offset 0x87058
* D:\driver2\game\C\XMPLAY.C (line 3359)
* Stack frame base $sp, length 0
*/
void /*$ra*/ JPClearSPUFlags(int SongID /*$a0*/)
{ // line 1, address 0x87058
int i; // $a1
} // line 9, address 0x8708c
/*
* Offset 0x8708C
* D:\driver2\game\C\XMPLAY.C (line 2099)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ CalcPlayPos(int StartPos /*$s4*/)
{ // line 1, address 0x8708c
int SP; // $s1
int t; // $s0
int i; // $a1
} // line 15, address 0x87144
/*
* Offset 0x87144
* D:\driver2\game\C\XMPLAY.C (line 2143)
* Stack frame base $sp, length 0
*/
int /*$ra*/ JCalcPat(unsigned char *j /*$a0*/)
{ // line 2, address 0x87144
unsigned char b; // $v1
int ret; // $a1
} // line 44, address 0x871b4
/*
* Offset 0x871B4
* D:\driver2\game\C\XMPLAY.C (line 2116)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ PACKEDCalcPlayPos(int StartPos /*$s3*/)
{ // line 1, address 0x871b4
int SP; // $s0
int i; // $a1
unsigned char *pataddr; // $a0
unsigned char patdat; // $v1
} // line 23, address 0x87290
/*
* Offset 0x87290
* D:\driver2\game\C\XMPLAY.C (line 2368)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetEmpty(int old /*$t1*/)
{ // line 1, address 0x87290
int i; // $a3
struct XMCHANNEL *j; // $a0
} // line 28, address 0x87358

545
src/FRONTEND/femain.c Normal file
View File

@ -0,0 +1,545 @@
#include "../decomp_defs.h"
/*
* Offset 0x1C096C
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1205)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ SetVariable(int var /*$a0*/)
{ // line 1, address 0x1c096c
int code; // $v1
int value; // $a2
} // line 157, address 0x1c0c14
/*
* Offset 0x1C0C14
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1371)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ LoadFrontendScreens()
{ // line 2, address 0x1c0c14
int iTpage; // $s0
int iNumScreens; // $t6
int i; // $t0
int j; // $a3
struct RECT rect; // stack address -40
char *ptr; // $a2
} // line 83, address 0x1c0f1c
/*
* Offset 0x1C0F1C
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1461)
* Stack frame base $sp, length 88
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ LoadBackgroundFile(char *name /*$s4*/)
{ // line 1, address 0x1c0f1c
int iTpage; // $s2
struct RECT rect; // stack address -72
int p; // $s0
int pages[7]; // stack address -64
} // line 48, address 0x1c10ec
/*
* Offset 0x1C10EC
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1516)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetupBackgroundPolys()
{ // line 2, address 0x1c10ec
int i; // $v1
int tpage; // $t3
} // line 64, address 0x1c1324
/*
* Offset 0x1C1324
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1588)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SetupScreenSprts(struct PSXSCREEN *pScr /*$a0*/)
{ // line 1, address 0x1c1324
int tpage; // $a1
struct POLY_FT3 *null; // $v0
} // line 62, address 0x1c1474
/*
* Offset 0x1C1474
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1658)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawScreen(struct PSXSCREEN *pScr /*stack 0*/)
{ // line 1, address 0x1c1474
int i; // $s1
char version_info[32]; // stack address -88
int numBtnsToDraw; // stack address -56
} // line 102, address 0x1c18ac
/*
* Offset 0x1C18DC
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1769)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ DisplayOnScreenText()
{ // line 2, address 0x1c18dc
int i; // $s0
char text[32]; // stack address -64
{ // line 26, address 0x1c19d4
{ // line 28, address 0x1c19dc
} // line 29, address 0x1c19e4
} // line 30, address 0x1c19e4
{ // line 38, address 0x1c1a44
int extraVal; // $t1
} // line 41, address 0x1c1aa4
} // line 78, address 0x1c1ac8
/*
* Offset 0x1C1AC8
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1855)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ SetupExtraPoly(char *fileName /*$s5*/, int address /*$s1*/, int offset2 /*$s0*/)
{ // line 1, address 0x1c1ac8
int i; // $s0
int tpage; // $v1
struct RECT rect; // stack address -40
} // line 61, address 0x1c1cec
/*
* Offset 0x1C1CEC
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1941)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ReInitScreens()
{
}
/*
* Offset 0x1C1E10
* D:\driver2\game\FRONTEND\FEMAIN.C (line 1991)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ NewSelection(short dir /*$s3*/)
{ // line 1, address 0x1c1e10
struct RECT rect; // stack address -48
struct PSXBUTTON *pNewB; // $s2
} // line 94, address 0x1c2274
/*
* Offset 0x1C22A0
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2093)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ HandleKeyPress()
{ // line 2, address 0x1c22a0
{ // line 19, address 0x1c2338
int action; // $s0
{ // line 48, address 0x1c2444
} // line 73, address 0x1c2508
} // line 93, address 0x1c255c
} // line 139, address 0x1c2660
/*
* Offset 0x1C2660
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2300)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ PadChecks()
{ // line 2, address 0x1c2660
int i; // $a2
int oldnum; // $s2
} // line 117, address 0x1c2964
/*
* Offset 0x1C2964
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2423)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DoFrontEnd()
{ // line 2, address 0x1c2964
static unsigned char result[8]; // address 0x0
} // line 165, address 0x1c2c24
/*
* Offset 0x1C2C24
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2630)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
void /*$ra*/ SetFEDrawMode()
{ // line 2, address 0x1c2c24
struct DRAW_MODE *dm; // $s3
} // line 57, address 0x1c2d88
/*
* Offset 0x1C2D88
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2745)
* Stack frame base $sp, length 24
* Saved registers at address -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*/)
{ // line 1, address 0x1c2d88
struct FE_CHARDATA *pFontInfo; // $a0
struct SPRT *font; // $t0
unsigned char let; // $a0
int counter; // $t4
{ // line 1, address 0x1c2de4
char *pString; // $a1
{ // line 1, address 0x1c2de4
char let; // $v1
int w; // $a2
} // line 1, address 0x1c2e30
} // line 1, address 0x1c2e30
{ // line 47, address 0x1c2f20
int tpage; // $v1
} // line 47, address 0x1c2f20
} // line 64, address 0x1c2fd0
/*
* Offset 0x1C2FD0
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2817)
* Stack frame base $sp, length 24
* Saved registers at address -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*/)
{ // line 1, address 0x1c2fd0
struct POLY_FT4 *font; // $t0
struct FE_CHARDATA *pFontInfo; // $a2
char let; // $v1
int tpage; // $v0
int w; // $t3
int h; // $t4
} // line 63, address 0x1c31f4
/*
* Offset 0x1C31F4
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2894)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ CentreScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C3428
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3029)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ CarSelectScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c3428
int i; // $a0
struct RECT rect; // stack address -32
{ // line 116, address 0x1c3734
int lastVal; // $a3
{ // line 1, address 0x1c37b4
{ // line 1, address 0x1c37b4
struct RECT rect; // stack address -24
} // line 1, address 0x1c37b4
} // line 1, address 0x1c37b4
} // line 1, address 0x1c37b4
{ // line 135, address 0x1c37c8
int lastVal; // $a3
{ // line 1, address 0x1c3850
{ // line 1, address 0x1c3850
struct RECT rect; // stack address -24
} // line 1, address 0x1c3850
} // line 1, address 0x1c3850
} // line 1, address 0x1c3850
} // line 183, address 0x1c3a58
/*
* Offset 0x1C3A58
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3256)
* Stack frame base $sp, length 0
*/
int /*$ra*/ VibroOnOffScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C3B14
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3394)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ MissionSelectScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c3b14
int i; // $a1
{ // line 29, address 0x1c3bd4
int usedB; // $s2
int done; // $t0
int bP; // $a3
int bN; // $s5
int shift; // $a3
} // line 158, address 0x1c40d0
} // line 231, address 0x1c4330
/*
* Offset 0x1C4330
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3632)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
int /*$ra*/ MissionCityScreen(int bSetup /*$a0*/)
{ // line 6, address 0x1c4330
{ // line 71, address 0x1c4494
{ // line 71, address 0x1c4494
struct RECT rect; // stack address -16
} // line 71, address 0x1c4494
} // line 71, address 0x1c4494
{ // line 77, address 0x1c44bc
{ // line 77, address 0x1c44bc
struct RECT rect; // stack address -16
} // line 77, address 0x1c44bc
} // line 77, address 0x1c44bc
} // line 88, address 0x1c45f8
/*
* Offset 0x1C45F8
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3728)
* Stack frame base $sp, length 64
* Saved registers at address -8: ra
*/
int /*$ra*/ CutSceneSelectScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c45f8
struct RENDER_ARGS renderArgs; // stack address -48
int extraVal; // $a0
struct RECT rect; // stack address -24
{ // line 61, address 0x1c4790
{ // line 61, address 0x1c4790
struct RECT rect; // stack address -16
} // line 61, address 0x1c4790
} // line 61, address 0x1c4790
{ // line 1, address 0x1c483c
int address; // $a1
{ // line 1, address 0x1c483c
struct RECT rect; // stack address -16
} // line 1, address 0x1c483c
} // line 1, address 0x1c483c
{ // line 80, address 0x1c48f8
{ // line 80, address 0x1c48f8
struct RECT rect; // stack address -16
} // line 80, address 0x1c48f8
} // line 80, address 0x1c48f8
{ // line 85, address 0x1c4938
{ // line 85, address 0x1c4938
struct RECT rect; // stack address -16
} // line 85, address 0x1c4938
} // line 85, address 0x1c4938
} // line 119, address 0x1c4b28
/*
* Offset 0x1C4B28
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3855)
* Stack frame base $sp, length 40
* Saved registers at address -8: ra
*/
int /*$ra*/ CutSceneCitySelectScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c4b28
struct RECT rect; // stack address -24
{ // line 1, address 0x1c4e64
{ // line 1, address 0x1c4e64
struct RECT rect; // stack address -16
} // line 1, address 0x1c4e64
} // line 1, address 0x1c4e64
{ // line 1, address 0x1c4e64
{ // line 1, address 0x1c4e64
struct RECT rect; // stack address -16
} // line 1, address 0x1c4e64
} // line 1, address 0x1c4e64
{ // line 1, address 0x1c4eac
{ // line 1, address 0x1c4eac
struct RECT rect; // stack address -16
} // line 1, address 0x1c4eac
} // line 1, address 0x1c4eac
{ // line 1, address 0x1c4fa4
{ // line 1, address 0x1c4fa4
struct RECT rect; // stack address -16
} // line 1, address 0x1c5098
} // line 1, address 0x1c5098
} // line 140, address 0x1c50a8
/*
* Offset 0x1C50A8
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4005)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ SetVolumeScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c50a8
int last; // $s2
char text[4]; // stack address -48
int ypos[2]; // stack address -40
struct RECT rect; // stack address -32
{ // line 43, address 0x1c524c
{ // line 43, address 0x1c524c
struct DB *db_hold; // $a1
} // line 43, address 0x1c524c
} // line 43, address 0x1c524c
{ // line 65, address 0x1c527c
{ // line 65, address 0x1c527c
struct DB *db_hold; // $a1
} // line 65, address 0x1c527c
} // line 65, address 0x1c527c
{ // line 92, address 0x1c52c4
{ // line 92, address 0x1c52c4
struct DB *db_hold; // $a1
} // line 92, address 0x1c52c4
} // line 92, address 0x1c52c4
{ // line 114, address 0x1c5418
{ // line 114, address 0x1c5418
struct DB *db_hold; // $a1
} // line 117, address 0x1c5528
} // line 117, address 0x1c5528
} // line 143, address 0x1c55f0
/*
* Offset 0x1C55F0
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4165)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DisplayScoreTable()
{ // line 2, address 0x1c55f0
int address; // $a2
int i; // $s4
char text[32]; // stack address -80
struct SCORE_ENTRY *pSE; // stack address -48
int min; // $v1
int frac; // $t0
} // line 56, address 0x1c5998
/*
* Offset 0x1C5998
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4227)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ ScoreScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C5B44
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4434)
* Stack frame base $sp, length 120
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ CheatScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c5b44
int numOpen; // $s5
int i; // $s1
int k; // $s6
int *uc; // $s2
unsigned char cheatOn[12]; // stack address -104
int hackLookup1[4]; // stack address -88
int hackLookup2[4]; // stack address -72
{ // line 39, address 0x1c5c64
int evilRuss[4]; // stack address -56
} // line 126, address 0x1c6064
} // line 134, address 0x1c6098
/*
* Offset 0x1C6098
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4642)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
int /*$ra*/ GameNameScreen(int bSetup /*$a0*/)
{ // line 2, address 0x1c6098
int address; // $s3
} // line 14, address 0x1c61a4
/*
* Offset 0x1C61A4
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4671)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ FEInitCdIcon()
{ // line 2, address 0x1c61a4
int i; // $a0
struct RECT dest; // stack address -24
unsigned short *palette; // $a2
} // line 38, address 0x1c62f0
/*
* Offset 0x1C62F0
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4716)
* Stack frame base $sp, length 32
* Saved registers at address -8: ra
*/
void /*$ra*/ FEDrawCDicon()
{ // line 2, address 0x1c62f0
unsigned short *palette; // $a1
int temp; // $a2
int i; // $a0
struct RECT dest; // stack address -16
} // line 19, address 0x1c6370
/*
* Offset 0x1C6370
* D:\driver2\game\FRONTEND\FEMAIN.C (line 2695)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ EndFrame()
{ // line 2, address 0x1c6370
struct DB *db_hold; // $a1
} // line 21, address 0x1c63fc
/*
* Offset 0x1C63FC
* D:\driver2\game\FRONTEND\FEMAIN.C (line 3220)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CopDiffLevelScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C64A8
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4322)
* Stack frame base $sp, length 0
*/
int /*$ra*/ SubtitlesOnOffScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C64F4
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4345)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CityCutOffScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C6540
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4378)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ ControllerScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C660C
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4412)
* Stack frame base $sp, length 0
*/
int /*$ra*/ MainScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C664C
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4575)
* Stack frame base $sp, length 0
*/
int /*$ra*/ ImmunityOnOffScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C6698
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4597)
* Stack frame base $sp, length 0
*/
int /*$ra*/ InvincibleOnOffScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C66E4
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4619)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GamePlayScreen(int bSetup /*$a0*/)
{
}
/*
* Offset 0x1C671C
* D:\driver2\game\FRONTEND\FEMAIN.C (line 4742)
* Stack frame base $sp, length 0
*/
int /*$ra*/ CheatNumlayerSelect(int bSetup /*$a0*/)
{
}

3
src/INCLUDE/texture.h Normal file
View File

@ -0,0 +1,3 @@
#pragma once
void GetTextureDetails(char *name, struct TEXTURE_DETAILS *info);

143
src/MEMCARD/CardMain.c Normal file
View File

@ -0,0 +1,143 @@
#include "../decomp_defs.h"
/*
* Offset 0x87358
* D:\driver2\game\MEMCARD\MAIN.C (line 120)
* Stack frame base $fp, length 56
* Saved registers at address -8: s0 fp ra
*/
int /*$ra*/ CallMemoryCard(int flags /*stack 0*/, int ingame /*stack 4*/)
{ // line 3, address 0x87374
struct REPLAY_SAVE_HEADER *rheader; // stack address -40
struct GAME_SAVE_HEADER *gheader; // stack address -36
struct CONFIG_SAVE_HEADER *cheader; // stack address -32
char *pt; // stack address -28
int ret; // stack address -24
int length; // stack address -20
{ // line 21, address 0x873d0
} // line 23, address 0x873e4
{ // line 129, address 0x878a4
} // line 135, address 0x878d0
} // line 148, address 0x87920
/*
* Offset 0x8793C
* D:\driver2\game\MEMCARD\MAIN.C (line 270)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_SelectSound()
{
}
/*
* Offset 0x87970
* D:\driver2\game\MEMCARD\MAIN.C (line 275)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_ConfirmSound()
{
}
/*
* Offset 0x879A4
* D:\driver2\game\MEMCARD\MAIN.C (line 280)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_CancelSound()
{
}
/*
* Offset 0x879D8
* D:\driver2\game\MEMCARD\MAIN.C (line 285)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_ErrorSound()
{
}
/*
* Offset 0x87A0C
* D:\driver2\game\MEMCARD\MAIN.C (line 290)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_InitControllerLibrary(char *a /*stack 0*/, int b /*stack 4*/, char *c /*stack 8*/, int d /*stack 12*/)
{
}
/*
* Offset 0x87A5C
* D:\driver2\game\MEMCARD\MAIN.C (line 296)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_DeInitControllerLibrary()
{
}
/*
* Offset 0x87A9C
* D:\driver2\game\MEMCARD\MAIN.C (line 302)
* Stack frame base $fp, length 24
* Saved registers at address -4: fp ra
*/
void /*$ra*/ libcman_ReadControllers()
{
}
/*
* Offset 0x87ACC
* D:\driver2\game\MEMCARD\MAIN.C (line 371)
* Stack frame base $fp, length 88
* Saved registers at address -4: fp ra
*/
int /*$ra*/ DoMemoryCard()
{ // line 2, address 0x87adc
struct RECT rect; // stack address -56
char filename[32]; // stack address -48
char l; // stack address -16
int options; // stack address -12
static int ret; // address 0x0
} // line 71, address 0x87d34
/*
* Offset 0x87D4C
* D:\driver2\game\MEMCARD\MAIN.C (line 444)
* Stack frame base $fp, length 32
* Saved registers at address -4: fp ra
*/
char * /*$ra*/ LoadMemCardOverlay()
{ // line 2, address 0x87d5c
char *pt; // stack address -16
int ovsize; // stack address -12
} // line 16, address 0x87db8
/*
* Offset 0x87DD0
* D:\driver2\game\MEMCARD\MAIN.C (line 462)
* Stack frame base $fp, length 40
* Saved registers at address -4: fp ra
*/
void /*$ra*/ StorePermanentTPage()
{ // line 2, address 0x87de0
struct RECT rect; // stack address -24
unsigned long *buffer; // stack address -16
} // line 8, address 0x87e2c
/*
* Offset 0x87E44
* D:\driver2\game\MEMCARD\MAIN.C (line 472)
* Stack frame base $fp, length 40
* Saved registers at address -4: fp ra
*/
void /*$ra*/ RestorePermanentTPage()
{ // line 2, address 0x87e54
struct RECT rect; // stack address -24
unsigned long *buffer; // stack address -16
} // line 8, address 0x87ea0
/*
* Offset 0x87EB8
* D:\driver2\game\MEMCARD\MAIN.C (line 482)
* Stack frame base $fp, length 32
* Saved registers at address -4: fp ra
*/
void /*$ra*/ PutCorrectIcon(int which /*stack 0*/)
{ // line 2, address 0x87ecc
unsigned char *clut; // stack address -16
unsigned char *icon; // stack address -12
} // line 24, address 0x87fa0

724
src/MEMCARD/Slot.cpp Normal file
View File

@ -0,0 +1,724 @@
/*
* Offset 0xF3644
* D:\driver2\game\MEMCARD\SLOT.CPP (line 99)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ card_start__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf3644
} // line 39, address 0xf3828
/*
* Offset 0xF3828
* D:\driver2\game\MEMCARD\SLOT.CPP (line 383)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
unsigned int /*$ra*/ CardRemoved__6MCSLOT(struct MCSLOT *this /*$s6*/)
{ // line 1, address 0xf3828
int card_status; // $v0
{ // line 1, address 0xf3828
struct MCSLOT *this; // $s6
int timeout; // $s0
{ // line 1, address 0xf3828
{ // line 1, address 0xf387c
{ // line 1, address 0xf387c
} // line 1, address 0xf3890
{ // line 1, address 0xf3890
} // line 1, address 0xf38a4
{ // line 1, address 0xf38a4
} // line 1, address 0xf38b8
{ // line 1, address 0xf38b8
} // line 1, address 0xf38cc
} // line 1, address 0xf38cc
} // line 1, address 0xf38d4
} // line 1, address 0xf38d4
{ // line 11, address 0xf38d4
{ // line 11, address 0xf38e4
{ // line 11, address 0xf38e4
struct MCSLOT *this; // $s6
{ // line 11, address 0xf38e4
} // line 11, address 0xf38e4
} // line 11, address 0xf38e4
} // line 24, address 0xf3924
} // line 24, address 0xf3924
{ // line 24, address 0xf3924
struct MCSLOT *this; // $s6
{ // line 24, address 0xf3924
} // line 24, address 0xf3924
} // line 24, address 0xf3924
} // line 24, address 0xf3994
/*
* Offset 0xF3994
* D:\driver2\game\MEMCARD\SLOT.CPP (line 418)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
unsigned int /*$ra*/ CardInserted__6MCSLOT(struct MCSLOT *this /*$s6*/)
{ // line 1, address 0xf3994
int card_status; // $v1
{ // line 1, address 0xf3994
struct MCSLOT *this; // $s6
int timeout; // $s0
{ // line 1, address 0xf3994
{ // line 1, address 0xf39e8
{ // line 1, address 0xf39e8
} // line 1, address 0xf39fc
{ // line 1, address 0xf39fc
} // line 1, address 0xf3a10
{ // line 1, address 0xf3a10
} // line 1, address 0xf3a24
{ // line 1, address 0xf3a24
} // line 1, address 0xf3a38
} // line 1, address 0xf3a38
} // line 1, address 0xf3a40
} // line 1, address 0xf3a40
{ // line 11, address 0xf3a40
{ // line 12, address 0xf3a54
{ // line 1, address 0xf3a54
struct MCSLOT *this; // $s6
{ // line 1, address 0xf3a54
} // line 1, address 0xf3a54
} // line 1, address 0xf3a54
} // line 19, address 0xf3aa8
} // line 19, address 0xf3aa8
{ // line 1, address 0xf3aa8
struct MCSLOT *this; // $s6
{ // line 1, address 0xf3aa8
} // line 1, address 0xf3aa8
} // line 1, address 0xf3aa8
} // line 24, address 0xf3b04
/*
* Offset 0xF3B04
* D:\driver2\game\MEMCARD\SLOT.CPP (line 489)
* Stack frame base $sp, length 176
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
int /*$ra*/ FormatCard__6MCSLOT(struct MCSLOT *this /*$s2*/)
{ // line 1, address 0xf3b04
char buffer[128]; // stack address -160
{ // line 1, address 0xf3b04
struct MCSLOT *this; // $s2
{ // line 1, address 0xf3b04
} // line 1, address 0xf3b04
} // line 1, address 0xf3b04
{ // line 1, address 0xf3b04
{ // line 1, address 0xf3b04
struct MCSLOT *this; // $s2
int timeout; // $s3
{ // line 1, address 0xf3b04
{ // line 1, address 0xf3bb4
{ // line 1, address 0xf3bb4
} // line 1, address 0xf3bc8
{ // line 1, address 0xf3bc8
} // line 1, address 0xf3bdc
{ // line 1, address 0xf3bdc
} // line 1, address 0xf3bf0
{ // line 1, address 0xf3bf0
} // line 1, address 0xf3c04
} // line 1, address 0xf3c04
} // line 1, address 0xf3c0c
} // line 1, address 0xf3c0c
} // line 15, address 0xf3c28
} // line 20, address 0xf3c74
/*
* Offset 0xF3C74
* D:\driver2\game\MEMCARD\SLOT.CPP (line 520)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ ReadCardDir__6MCSLOT(struct MCSLOT *this /*$s3*/)
{ // line 1, address 0xf3c74
long length; // $a1
char path[7]; // stack address -48
struct DIRENTRY *entryPtr; // $s0
{ // line 17, address 0xf3cf4
} // line 40, address 0xf3d6c
} // line 49, address 0xf3d8c
/*
* Offset 0xF3DB8
* D:\driver2\game\MEMCARD\SLOT.CPP (line 618)
* Stack frame base $sp, length 96
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ ReadCardInfo__6MCSLOTPc(struct MCSLOT *this /*$s1*/, char *managerFilename /*$s0*/)
{ // line 1, address 0xf3db8
int i; // $a2
int n; // $s0
char filename[32]; // stack address -64
int filePtr; // $s2
{ // line 11, address 0xf3df4
{ // line 12, address 0xf3e0c
{ // line 13, address 0xf3e0c
{ // line 14, address 0xf3e38
{ // line 16, address 0xf3e38
{ // line 21, address 0xf3e70
} // line 24, address 0xf3eb0
} // line 26, address 0xf3eb0
{ // line 30, address 0xf3eb0
{ // line 31, address 0xf3ed4
{ // line 32, address 0xf3ed4
{ // line 35, address 0xf3f4c
{ // line 37, address 0xf3f4c
} // line 37, address 0xf3f88
} // line 54, address 0xf4060
} // line 55, address 0xf4094
} // line 57, address 0xf4094
} // line 61, address 0xf40e4
} // line 68, address 0xf4130
} // line 68, address 0xf4130
} // line 73, address 0xf4130
} // line 79, address 0xf4168
} // line 82, address 0xf41a0
/*
* Offset 0xF41A0
* D:\driver2\game\MEMCARD\SLOT.CPP (line 912)
* Stack frame base $sp, length 24
* Saved registers at address -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*/)
{ // line 1, address 0xf41a0
} // line 28, address 0xf43a0
/*
* Offset 0xF43A0
* D:\driver2\game\MEMCARD\SLOT.CPP (line 950)
* Stack frame base $sp, length 216
* Saved registers at address -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, address 0xf43a0
int n; // $s5
char verifyBuffer[128]; // stack address -200
char filename[32]; // stack address -72
long bytesRead; // $v0
unsigned int verifyFailed; // $v0
int retry; // $s0
{ // line 1, address 0xf43a0
{ // line 12, address 0xf43e4
} // line 39, address 0xf44a0
} // line 39, address 0xf44a0
{ // line 44, address 0xf44a0
{ // line 45, address 0xf44b8
{ // line 48, address 0xf44b8
{ // line 48, address 0xf44c0
{ // line 50, address 0xf44c0
{ // line 55, address 0xf44ec
{ // line 58, address 0xf44f4
{ // line 61, address 0xf44f4
{ // line 62, address 0xf44f4
{ // line 67, address 0xf4524
} // line 67, address 0xf4524
} // line 67, address 0xf4524
} // line 67, address 0xf4524
{ // line 85, address 0xf4530
{ // line 86, address 0xf4530
{ // line 91, address 0xf455c
} // line 91, address 0xf455c
} // line 91, address 0xf455c
} // line 91, address 0xf455c
{ // line 106, address 0xf4564
{ // line 109, address 0xf4584
} // line 109, address 0xf4584
} // line 109, address 0xf4584
} // line 109, address 0xf4584
} // line 121, address 0xf458c
} // line 121, address 0xf458c
} // line 126, address 0xf458c
} // line 127, address 0xf45b4
} // line 130, address 0xf45dc
{ // line 132, address 0xf45dc
{ // line 134, address 0xf45dc
{ // line 142, address 0xf4608
{ // line 143, address 0xf4608
int check; // $a1
} // line 146, address 0xf4640
} // line 158, address 0xf4678
} // line 158, address 0xf4678
} // line 167, address 0xf46b4
} // line 167, address 0xf46b4
} // line 167, address 0xf46b4
/*
* Offset 0xF46B4
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1261)
* Stack frame base $sp, length 216
* Saved registers at address -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, address 0xf46b4
int n; // $s5
char verifyBuffer[128]; // stack address -200
char filename[32]; // stack address -72
int filePtr; // $v0
long bytes; // $v0
unsigned int verifyFailed; // $v0
int retry; // $s0
{ // line 1, address 0xf46b4
{ // line 12, address 0xf46f8
} // line 47, address 0xf478c
} // line 47, address 0xf478c
{ // line 51, address 0xf478c
{ // line 54, address 0xf47c0
{ // line 56, address 0xf47c0
{ // line 56, address 0xf47cc
{ // line 58, address 0xf47cc
{ // line 64, address 0xf4814
{ // line 66, address 0xf481c
{ // line 69, address 0xf481c
{ // line 71, address 0xf481c
{ // line 76, address 0xf484c
} // line 76, address 0xf484c
} // line 76, address 0xf484c
} // line 76, address 0xf484c
{ // line 94, address 0xf4858
{ // line 95, address 0xf4858
{ // line 100, address 0xf4884
} // line 100, address 0xf4884
} // line 100, address 0xf4884
} // line 100, address 0xf4884
{ // line 117, address 0xf488c
{ // line 120, address 0xf48ac
} // line 120, address 0xf48ac
} // line 120, address 0xf48ac
} // line 120, address 0xf48ac
} // line 134, address 0xf48b4
} // line 134, address 0xf48b4
} // line 139, address 0xf48b4
} // line 140, address 0xf48dc
} // line 143, address 0xf4924
{ // line 145, address 0xf4924
{ // line 148, address 0xf4924
struct MCSLOT *this; // $s1
{ // line 148, address 0xf4924
{ // line 148, address 0xf4924
int n; // $a1
} // line 150, address 0xf496c
{ // line 1, address 0xf496c
{ // line 1, address 0xf497c
} // line 1, address 0xf498c
} // line 1, address 0xf498c
{ // line 1, address 0xf498c
{ // line 1, address 0xf499c
} // line 1, address 0xf49ac
} // line 1, address 0xf49ac
} // line 1, address 0xf49ac
} // line 1, address 0xf49ac
} // line 204, address 0xf49e8
} // line 204, address 0xf49e8
} // line 204, address 0xf49e8
/*
* Offset 0xF49E8
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1473)
* Stack frame base $sp, length 704
* Saved registers at address -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, address 0xf49e8
int i; // $a1
int n; // $s0
struct _CARD header; // stack address -680
char filename[32]; // stack address -168
int filePtr; // $s1
int bytes; // $s3
int blockNum; // $fp
char charBuffer[64]; // stack address -136
struct SLICEHEADER emptySlice; // stack address -72
char *charPtr; // $a2
{ // line 94, address 0xf4d98
{ // line 97, address 0xf4db0
} // line 104, address 0xf4ddc
} // line 107, address 0xf4ddc
{ // line 111, address 0xf4ddc
{ // line 112, address 0xf4df0
{ // line 113, address 0xf4df0
{ // line 121, address 0xf4e28
} // line 141, address 0xf4f28
} // line 142, address 0xf4f4c
} // line 147, address 0xf4f74
} // line 147, address 0xf4f74
{ // line 152, address 0xf4f74
struct MCSLOT *this; // $s5
{ // line 152, address 0xf4f74
{ // line 152, address 0xf4f74
int n; // $a1
} // line 152, address 0xf4fb8
{ // line 1, address 0xf4fb8
{ // line 1, address 0xf4fc8
} // line 1, address 0xf4fd8
} // line 1, address 0xf4fd8
{ // line 1, address 0xf4fd8
{ // line 1, address 0xf4fe8
} // line 1, address 0xf4ff8
} // line 1, address 0xf4ff8
} // line 1, address 0xf4ff8
} // line 1, address 0xf4ff8
} // line 157, address 0xf502c
/*
* Offset 0xF502C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1640)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ DeleteBlock__6MCSLOTi(struct MCSLOT *this /*$s1*/, int block /*$a1*/)
{ // line 1, address 0xf502c
char filename[32]; // stack address -48
{ // line 1, address 0xf502c
{ // line 7, address 0xf506c
{ // line 9, address 0xf506c
struct MCSLOT *this; // $s1
{ // line 9, address 0xf506c
{ // line 9, address 0xf506c
int n; // $a1
} // line 11, address 0xf50cc
{ // line 1, address 0xf50cc
{ // line 1, address 0xf50dc
} // line 1, address 0xf50ec
} // line 1, address 0xf50ec
{ // line 1, address 0xf50ec
{ // line 1, address 0xf50fc
} // line 1, address 0xf510c
} // line 1, address 0xf510c
} // line 1, address 0xf510c
} // line 1, address 0xf510c
} // line 26, address 0xf5114
} // line 28, address 0xf512c
} // line 28, address 0xf512c
/*
* Offset 0xF512C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2067)
* Stack frame base $sp, length 0
*/
void /*$ra*/ Ascii2ShiftJis__FPsPc(short *dest /*$a0*/, char *source /*$a1*/)
{ // line 1, address 0xf512c
char a; // $a2
short scode; // $v1
} // line 49, address 0xf523c
/*
* Offset 0xF523C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 58)
* Stack frame base $sp, length 32
* Saved registers at address -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*/)
{ // line 1, address 0xf523c
} // line 29, address 0xf52d8
/*
* Offset 0xF52F0
* D:\driver2\game\MEMCARD\SLOT.CPP (line 159)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ MCSLOT_ctor(struct MCSLOT *this /*$s0*/, int __in_chrg /*$s1*/)
{ // line 1, address 0xf52f0
} // line 11, address 0xf5324
/*
* Offset 0xF534C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 193)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ card_stop__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf534c
} // line 25, address 0xf5474
/*
* Offset 0xF5474
* D:\driver2\game\MEMCARD\SLOT.CPP (line 235)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ CheckCard__6MCSLOT(struct MCSLOT *this /*$s0*/)
{ // line 1, address 0xf5474
int card_status; // $v1
{ // line 1, address 0xf5474
{ // line 13, address 0xf54c0
} // line 64, address 0xf555c
} // line 64, address 0xf555c
} // line 64, address 0xf555c
/*
* Offset 0xF555C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 311)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ card_event__6MCSLOTi(struct MCSLOT *this /*$a0*/, int timeout /*$s0*/)
{ // line 1, address 0xf555c
{ // line 5, address 0xf5584
{ // line 7, address 0xf5584
} // line 7, address 0xf55a4
{ // line 9, address 0xf55a4
} // line 9, address 0xf55c0
{ // line 11, address 0xf55c0
} // line 11, address 0xf55d4
{ // line 13, address 0xf55d4
} // line 13, address 0xf55f0
} // line 13, address 0xf55f0
} // line 16, address 0xf5610
/*
* Offset 0xF5610
* D:\driver2\game\MEMCARD\SLOT.CPP (line 332)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ clear_event__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf5610
} // line 5, address 0xf5668
/*
* Offset 0xF5668
* D:\driver2\game\MEMCARD\SLOT.CPP (line 579)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ invalidate_info__6MCSLOT(struct MCSLOT *this /*$s0*/)
{ // line 1, address 0xf5668
{ // line 1, address 0xf5668
int n; // $v1
} // line 11, address 0xf56a8
{ // line 14, address 0xf56a8
{ // line 15, address 0xf56b8
} // line 17, address 0xf56c8
} // line 17, address 0xf56c8
{ // line 20, address 0xf56c8
{ // line 21, address 0xf56d8
} // line 23, address 0xf56e8
} // line 23, address 0xf56e8
} // line 23, address 0xf56e8
/*
* Offset 0xF56FC
* D:\driver2\game\MEMCARD\SLOT.CPP (line 712)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{ // line 1, address 0xf56fc
struct RECT rect; // stack address -32
struct TIMSTRUCT *timPtr; // $s0
{ // line 1, address 0xf56fc
int n; // $a0
} // line 22, address 0xf5790
} // line 42, address 0xf5860
/*
* Offset 0xF5860
* D:\driver2\game\MEMCARD\SLOT.CPP (line 764)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ CopyBlock__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/)
{ // line 1, address 0xf5860
} // line 15, address 0xf5918
/*
* Offset 0xF5918
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1130)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ PasteBlock__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf5918
} // line 7, address 0xf5968
/*
* Offset 0xF5968
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1146)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ ReadHeader__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/)
{ // line 1, address 0xf5968
} // line 18, address 0xf5a60
/*
* Offset 0xF5A60
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1173)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ RenameCopyBlock__6MCSLOTP10FILEFORMAT(struct MCSLOT *this /*$a0*/, struct FILEFORMAT *fileFormatPtr /*$s1*/)
{ // line 1, address 0xf5a60
struct _CARD *headerptr; // $s0
} // line 6, address 0xf5b24
/*
* Offset 0xF5B38
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1187)
* Stack frame base $sp, length 56
* Saved registers at address -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*/)
{ // line 1, address 0xf5b38
} // line 62, address 0xf5c70
/*
* Offset 0xF5C70
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1675)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetPort__6MCSLOTii(struct MCSLOT *this /*$s0*/, int port /*$a1*/, int card /*$a2*/)
{ // line 1, address 0xf5c70
{ // line 1, address 0xf5c70
struct MCSLOT *this; // $s0
{ // line 1, address 0xf5c70
{ // line 1, address 0xf5c70
int n; // $v1
} // line 7, address 0xf5cdc
{ // line 1, address 0xf5cdc
{ // line 1, address 0xf5cec
} // line 1, address 0xf5cfc
} // line 1, address 0xf5cfc
{ // line 1, address 0xf5cfc
{ // line 1, address 0xf5d0c
} // line 1, address 0xf5d1c
} // line 1, address 0xf5d1c
} // line 1, address 0xf5d1c
} // line 1, address 0xf5d30
} // line 9, address 0xf5d30
/*
* Offset 0xF5D30
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1710)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ BlocksShared__6MCSLOTii(struct MCSLOT *this /*$t0*/, int block1 /*$a1*/, int block2 /*$a2*/)
{ // line 1, address 0xf5d30
} // line 9, address 0xf5dc0
/*
* Offset 0xF5DC8
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1723)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetBlockSize__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/)
{ // line 1, address 0xf5dc8
} // line 4, address 0xf5dfc
/*
* Offset 0xF5DFC
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1731)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ CardInfoRead__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf5dfc
} // line 2, address 0xf5e08
/*
* Offset 0xF5E08
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1755)
* Stack frame base $sp, length 0
*/
struct TIMSTRUCT * /*$ra*/ GetBlockIconPtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/)
{ // line 1, address 0xf5e08
} // line 8, address 0xf5e84
/*
* Offset 0xF5E84
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1788)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetNoUsedBlocks__6MCSLOT(struct MCSLOT *this /*$a0*/)
{ // line 1, address 0xf5e84
} // line 6, address 0xf5ea0
/*
* Offset 0xF5EA0
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1806)
* Stack frame base $sp, length 0
*/
short * /*$ra*/ GetBlockTitlePtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/)
{ // line 1, address 0xf5ea0
} // line 7, address 0xf5ee4
/*
* Offset 0xF5EE4
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1822)
* Stack frame base $sp, length 0
*/
char * /*$ra*/ GetBlockFilenamePtr__6MCSLOTi(struct MCSLOT *this /*$a0*/, int block /*$a1*/)
{ // line 1, address 0xf5ee4
} // line 8, address 0xf5f1c
/*
* Offset 0xF5F1C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1836)
* Stack frame base $sp, length 40
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
int /*$ra*/ FilenameUsed__6MCSLOTPc(struct MCSLOT *this /*$s3*/, char *filename /*$s4*/)
{ // line 1, address 0xf5f1c
int n; // $s0
} // line 15, address 0xf5fbc
/*
* Offset 0xF5FBC
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1872)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
int /*$ra*/ GetNumGremBlocks__6MCSLOTPc(struct MCSLOT *this /*$s3*/, char *filename /*$s5*/)
{ // line 1, address 0xf5fbc
int n; // $s2
int files; // $s4
{ // line 7, address 0xf5ffc
{ // line 7, address 0xf6014
{ // line 9, address 0xf6014
} // line 12, address 0xf6048
} // line 12, address 0xf6048
} // line 14, address 0xf6060
} // line 16, address 0xf6088
/*
* Offset 0xF6088
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1896)
* Stack frame base $sp, length 88
* Saved registers at address -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*/)
{ // line 1, address 0xf6088
struct SLICEHEADER *sliceHeaderPtr; // $s1
char *sliceDataPtr; // $a3
int sliceSize; // $a2
struct SLICEHEADER dummySlice; // stack address -72
int check; // $a1
} // line 55, address 0xf61f0
/*
* Offset 0xF61F0
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1955)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ ExtractSliceFromCopyBuffer__6MCSLOTiPc(struct MCSLOT *this /*$a0*/, int slice /*$a1*/, char *bufferPtr /*$a0*/)
{ // line 1, address 0xf61f0
struct SLICEHEADER *sliceHeaderPtr; // $a2
char *sliceDataPtr; // $a1
} // line 23, address 0xf628c
/*
* Offset 0xF628C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 1982)
* Stack frame base $sp, length 0
*/
char * /*$ra*/ GetSliceFilenamePtr__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/)
{ // line 1, address 0xf628c
} // line 15, address 0xf633c
/*
* Offset 0xF633C
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2001)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ SliceUsed__6MCSLOTii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/)
{ // line 1, address 0xf633c
} // line 15, address 0xf63e4
/*
* Offset 0xF63EC
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2019)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetNoUsedSlices__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/)
{ // line 1, address 0xf63ec
} // line 8, address 0xf6448
/*
* Offset 0xF6448
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2030)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetSliceIconRef__6MCSLOTiii(struct MCSLOT *this /*$a0*/, int block /*$a1*/, int slice /*$a2*/, int ref /*$a3*/)
{ // line 1, address 0xf6448
} // line 11, address 0xf64f4
/*
* Offset 0xF64F4
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2044)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetNoSlices__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/)
{ // line 1, address 0xf64f4
} // line 8, address 0xf6550
/*
* Offset 0xF6550
* D:\driver2\game\MEMCARD\SLOT.CPP (line 2055)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ GremlinBlock__6MCSLOTi(struct MCSLOT *this /*$a2*/, int block /*$a1*/)
{ // line 1, address 0xf6550
} // line 4, address 0xf6588

254
src/MEMCARD/cman.cpp Normal file
View File

@ -0,0 +1,254 @@
/*
* Offset 0x1005E0
* D:\driver2\game\MEMCARD\CMAN.CPP (line 33)
* Stack frame base $sp, length 51872
* Saved registers at address -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*/)
{ // line 1, address 0x1005e0
struct TIMSTRUCT tempTimStruct; // stack address -51840
struct RECT rect; // stack address -51824
int n; // $s0
char charBuffer[250]; // stack address -51816
char kanjiFree[6]; // stack address -51560
char kanjiSize[6]; // stack address -51552
char kanjiDel[6]; // stack address -51544
int card_process; // $s3
int padWait; // stack address -56
int dirCount; // $s0
int delCount; // stack address -52
int copyStatus; // $s0
int pasteStatus; // $a3
int destFree; // $s6
int sourceSize; // $s5
int newBlock; // $s2
int nMessage; // $s2
int language; // stack address -48
short padData; // $s1
struct PAD pad; // stack address -51536
struct DISPMAN dispMan; // stack address -18128
{ // line 36, address 0x10067c
{ // line 44, address 0x1006c4
} // line 47, address 0x100708
} // line 47, address 0x100708
{ // line 51, address 0x100708
{ // line 52, address 0x100720
struct _CARD *header; // $a1
} // line 74, address 0x100970
} // line 74, address 0x100970
{ // line 124, address 0x100a14
{ // line 142, address 0x100a14
{ // line 148, address 0x100a58
{ // line 149, address 0x100a58
{ // line 150, address 0x100a68
} // line 167, address 0x100b40
} // line 167, address 0x100b40
} // line 170, address 0x100b48
} // line 170, address 0x100b48
{ // line 174, address 0x100b48
{ // line 183, address 0x100b64
{ // line 184, address 0x100b64
{ // line 185, address 0x100b74
{ // line 186, address 0x100b74
{ // line 190, address 0x100b94
} // line 273, address 0x100d8c
{ // line 278, address 0x100d9c
} // line 293, address 0x100e08
} // line 293, address 0x100e08
} // line 293, address 0x100e08
} // line 293, address 0x100e08
} // line 293, address 0x100e08
} // line 293, address 0x100e08
{ // line 301, address 0x100e08
{ // line 302, address 0x100e30
} // line 317, address 0x100e94
} // line 317, address 0x100e94
{ // line 321, address 0x100e94
{ // line 322, address 0x100ebc
{ // line 325, address 0x100ebc
{ // line 326, address 0x100ecc
{ // line 327, address 0x100ecc
} // line 327, address 0x100ecc
} // line 333, address 0x100ef4
} // line 333, address 0x100ef4
{ // line 391, address 0x10108c
} // line 391, address 0x10108c
{ // line 437, address 0x1011a8
} // line 437, address 0x1011a8
{ // line 445, address 0x1011b0
{ // line 446, address 0x1011d8
{ // line 466, address 0x10126c
} // line 466, address 0x10126c
{ // line 489, address 0x101354
} // line 489, address 0x101354
{ // line 499, address 0x101364
} // line 499, address 0x101364
} // line 499, address 0x101364
} // line 499, address 0x101364
{ // line 499, address 0x101364
} // line 499, address 0x101364
{ // line 532, address 0x101448
} // line 532, address 0x101448
{ // line 540, address 0x101460
{ // line 541, address 0x1014a4
{ // line 542, address 0x1014a4
} // line 542, address 0x1014a4
} // line 544, address 0x1014b8
} // line 544, address 0x1014b8
{ // line 547, address 0x1014b8
{ // line 551, address 0x101500
{ // line 552, address 0x101500
} // line 552, address 0x101500
} // line 556, address 0x101548
} // line 556, address 0x101548
{ // line 560, address 0x101548
{ // line 563, address 0x101580
{ // line 564, address 0x101580
} // line 564, address 0x101580
} // line 566, address 0x101590
} // line 566, address 0x101590
{ // line 579, address 0x101650
{ // line 580, address 0x101658
{ // line 581, address 0x101658
} // line 581, address 0x101658
} // line 583, address 0x101670
} // line 583, address 0x101670
{ // line 594, address 0x101714
{ // line 595, address 0x10171c
{ // line 596, address 0x10171c
} // line 596, address 0x10171c
} // line 598, address 0x101734
} // line 598, address 0x101734
{ // line 601, address 0x101734
} // line 601, address 0x101734
{ // line 611, address 0x10177c
{ // line 615, address 0x1017b0
{ // line 675, address 0x1019c8
} // line 675, address 0x1019c8
} // line 678, address 0x1019f4
} // line 678, address 0x1019f4
{ // line 681, address 0x1019f4
{ // line 682, address 0x101a14
{ // line 707, address 0x101afc
{ // line 711, address 0x101b1c
{ // line 712, address 0x101b1c
} // line 712, address 0x101b1c
} // line 714, address 0x101b30
} // line 714, address 0x101b30
} // line 717, address 0x101b30
} // line 732, address 0x101b4c
{ // line 732, address 0x101b4c
} // line 732, address 0x101b4c
{ // line 738, address 0x101b4c
{ // line 742, address 0x101b8c
{ // line 743, address 0x101b8c
{ // line 749, address 0x101bc0
{ // line 753, address 0x101c04
} // line 753, address 0x101c04
} // line 754, address 0x101c0c
{ // line 758, address 0x101c0c
{ // line 764, address 0x101c50
{ // line 768, address 0x101cb4
{ // line 770, address 0x101cec
} // line 770, address 0x101cec
} // line 771, address 0x101cf4
} // line 771, address 0x101cf4
} // line 771, address 0x101cf4
} // line 771, address 0x101cf4
} // line 771, address 0x101cf4
} // line 771, address 0x101cf4
{ // line 804, address 0x101d38
{ // line 805, address 0x101d40
{ // line 808, address 0x101d40
} // line 808, address 0x101d40
} // line 810, address 0x101d58
} // line 810, address 0x101d58
{ // line 839, address 0x101e94
{ // line 840, address 0x101e9c
{ // line 841, address 0x101e9c
} // line 841, address 0x101e9c
} // line 843, address 0x101eb4
} // line 843, address 0x101eb4
{ // line 867, address 0x101f98
} // line 867, address 0x101f98
{ // line 874, address 0x101fb0
} // line 874, address 0x101fb0
{ // line 898, address 0x102104
{ // line 899, address 0x10210c
{ // line 904, address 0x10210c
} // line 904, address 0x10210c
} // line 907, address 0x102124
{ // line 910, address 0x102124
{ // line 910, address 0x102124
{ // line 911, address 0x10212c
{ // line 913, address 0x10212c
} // line 913, address 0x10212c
} // line 916, address 0x102150
} // line 922, address 0x102150
} // line 922, address 0x102150
} // line 922, address 0x102150
{ // line 922, address 0x102150
} // line 922, address 0x102150
{ // line 937, address 0x1021b0
{ // line 938, address 0x1021b0
{ // line 940, address 0x1021b0
{ // line 941, address 0x1021d8
{ // line 943, address 0x1021d8
} // line 943, address 0x1021d8
{ // line 948, address 0x10220c
} // line 948, address 0x10220c
} // line 948, address 0x10220c
} // line 948, address 0x10220c
} // line 964, address 0x1022a8
} // line 964, address 0x1022a8
{ // line 967, address 0x1022a8
} // line 967, address 0x1022a8
} // line 967, address 0x1022a8
} // line 967, address 0x1022a8
} // line 980, address 0x1022ec
{ // line 997, address 0x102304
} // line 997, address 0x102304
} // line 997, address 0x102364
/*
* Offset 0x102364
* D:\driver2\game\MEMCARD\CMAN.CPP (line 1065)
* Stack frame base $sp, length 88
* Saved registers at address -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, address 0x102364
char asciiname[20]; // stack address -72
int ret; // stack address -48
short padData; // $s5
short prevData; // $s7
int so; // $s2
int co; // $s6
int delay; // $s3
char c; // $s1
char toggle; // stack address -44
} // line 157, address 0x102710
/*
* Offset 0x102710
* D:\driver2\game\MEMCARD\CMAN.CPP (line 24)
* Stack frame base $sp, length 40
* Saved registers at address -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*/)
{ // line 1, address 0x102710
} // line 6, address 0x102744
/*
* Offset 0x102744
* D:\driver2\game\MEMCARD\CMAN.CPP (line 1034)
* Stack frame base $sp, length 56
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ LoadBackground__FPcT0(char *filename /*$s5*/, char *buffer /*$s2*/)
{ // line 1, address 0x102744
struct RECT rect; // stack address -40
int i; // $s0
{ // line 1, address 0x102744
{ // line 5, address 0x10277c
} // line 8, address 0x10277c
} // line 12, address 0x1027e8
} // line 12, address 0x1027e8

10
src/MEMCARD/delete.c Normal file
View File

@ -0,0 +1,10 @@
/*
* Offset 0xF6588
* D:\driver2\game\MEMCARD\DELETE.C (line 10)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
long /*$ra*/ delete_file(char *filename /*$a0*/)
{ // line 5, address 0xf6588
} // line 7, address 0xf65a8

887
src/MEMCARD/display.cpp Normal file
View File

@ -0,0 +1,887 @@
/*
* Offset 0xF65A8
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 49)
* Stack frame base $sp, length 152
* Saved registers at address -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*/)
{ // line 1, address 0xf65a8
int n; // $s1
struct RECT rect; // stack address -112
} // line 340, address 0xf727c
/*
* Offset 0xF72B8
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 472)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawTitleBar__7DISPMAN(struct DISPMAN *this /*$s3*/)
{ // line 1, address 0xf72b8
char *titleText; // $s2
{ // line 1, address 0xf72b8
{ // line 6, address 0xf72e4
{ // line 56, address 0xf740c
{ // line 58, address 0xf742c
char *titleText2; // $s0
int i; // $t0
} // line 72, address 0xf7454
} // line 76, address 0xf74e8
} // line 79, address 0xf74ec
} // line 79, address 0xf74ec
} // line 79, address 0xf74ec
/*
* Offset 0xF7508
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 555)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DrawCards__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf7508
} // line 35, address 0xf7670
/*
* Offset 0xF7688
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 602)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawMenu__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf7688
} // line 92, address 0xf79ac
/*
* Offset 0xF79C8
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 701)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DrawKeyInfo__7DISPMAN(struct DISPMAN *this /*$s3*/)
{ // line 1, address 0xf79c8
} // line 41, address 0xf7c30
/*
* Offset 0xF7C4C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 747)
* Stack frame base $sp, length 96
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawBlocks__7DISPMAN(struct DISPMAN *this /*$s1*/)
{ // line 1, address 0xf7c4c
int x; // $s6
int y; // $s2
} // line 87, address 0xf816c
/*
* Offset 0xF819C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 839)
* Stack frame base $sp, length 144
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ DrawSlices__7DISPMAN(struct DISPMAN *this /*$s2*/)
{ // line 1, address 0xf819c
int n; // $s3
char textBuffer[50]; // stack address -104
int iconRef; // $v1
int maxIcons; // $s1
{ // line 29, address 0xf82bc
{ // line 30, address 0xf82cc
{ // line 31, address 0xf82cc
{ // line 35, address 0xf8304
{ // line 38, address 0xf8304
{ // line 48, address 0xf83bc
{ // line 48, address 0xf83bc
{ // line 57, address 0xf8404
{ // line 57, address 0xf8404
{ // line 57, address 0xf841c
{ // line 59, address 0xf841c
{ // line 59, address 0xf8460
{ // line 61, address 0xf8460
{ // line 63, address 0xf847c
{ // line 64, address 0xf847c
{ // line 65, address 0xf8484
{ // line 66, address 0xf8484
{ // line 67, address 0xf84a8
} // line 68, address 0xf84a8
} // line 80, address 0xf8574
} // line 80, address 0xf8574
} // line 116, address 0xf8770
} // line 116, address 0xf8770
} // line 116, address 0xf8770
} // line 116, address 0xf8770
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 122, address 0xf8784
} // line 136, address 0xf87d4
} // line 183, address 0xf8ae8
} // line 189, address 0xf8b28
/*
* Offset 0xF8B28
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1031)
* Stack frame base $sp, length 88
* Saved registers at address -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*/)
{ // line 1, address 0xf8b28
int n; // $s1
int textY; // $s2
int messCount; // $s6
int lineCount; // $s0
} // line 25, address 0xf8d24
/*
* Offset 0xF8D24
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1060)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawBlockName__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf8d24
} // line 40, address 0xf8ed4
/*
* Offset 0xF8EE4
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1327)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ActiveAreaLeft__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf8ee4
int start; // $s1
} // line 43, address 0xf9018
/*
* Offset 0xF902C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1375)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ ActiveAreaRight__7DISPMAN(struct DISPMAN *this /*$s1*/)
{ // line 1, address 0xf902c
int start; // $s2
} // line 57, address 0xf9258
/*
* Offset 0xF9270
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1437)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ ActiveAreaUp__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf9270
} // line 51, address 0xf940c
/*
* Offset 0xF941C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1493)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ ActiveAreaDown__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xf941c
int start; // $s1
} // line 71, address 0xf96dc
/*
* Offset 0xF96F0
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1568)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ ActiveAreaSelect__7DISPMANii(struct DISPMAN *this /*$s1*/, int x /*$s2*/, int y /*$s0*/)
{ // line 1, address 0xf96f0
int selected; // $s0
int newArea; // $a0
} // line 138, address 0xf9bac
/*
* Offset 0xF9BAC
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1728)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
int /*$ra*/ ActiveAreaConfirm__7DISPMAN(struct DISPMAN *this /*$s1*/)
{ // line 1, address 0xf9bac
} // line 230, address 0xf9fac
/*
* Offset 0xF9FAC
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2044)
* Stack frame base $sp, length 40
*/
unsigned int /*$ra*/ intersect__7DISPMANG4RECTT1(struct DISPMAN *this /*$a0*/, struct RECT rect1 /*stack 4*/, struct RECT rect2 /*stack 12*/)
{ // line 1, address 0xf9fac
int n; // $t0
struct POINT p[4]; // stack address -40
char bitPattern[2]; // stack address -8
} // line 34, address 0xfa174
/*
* Offset 0xFA174
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2139)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 ra
*/
unsigned int /*$ra*/ Update__7DISPMAN(struct DISPMAN *this /*$s1*/)
{ // line 1, address 0xfa174
int n; // $s0
struct RECT rect; // stack address -32
{ // line 28, address 0xfa238
{ // line 29, address 0xfa260
{ // line 1, address 0xfa260
struct DISPMAN *this; // $s1
{ // line 1, address 0xfa260
int i; // $a0
} // line 1, address 0xfa2a4
} // line 1, address 0xfa2a4
{ // line 1, address 0xfa2a4
struct DISPMAN *this; // $s1
{ // line 1, address 0xfa2a4
int i; // $a0
} // line 1, address 0xfa2ec
} // line 1, address 0xfa2ec
{ // line 1, address 0xfa2ec
struct DISPMAN *this; // $s1
{ // line 1, address 0xfa2ec
int i; // $a0
} // line 1, address 0xfa334
} // line 1, address 0xfa334
{ // line 1, address 0xfa334
struct DISPMAN *this; // $s1
{ // line 1, address 0xfa334
int i; // $a0
} // line 1, address 0xfa37c
} // line 1, address 0xfa37c
{ // line 1, address 0xfa37c
struct DISPMAN *this; // $s1
{ // line 1, address 0xfa37c
} // line 1, address 0xfa39c
} // line 1, address 0xfa39c
} // line 38, address 0xfa39c
} // line 38, address 0xfa39c
{ // line 49, address 0xfa3d8
{ // line 52, address 0xfa3e8
{ // line 53, address 0xfa3e8
{ // line 53, address 0xfa3ec
{ // line 1, address 0xfa3ec
struct DISPMAN *this; // $s1
int n; // $s0
{ // line 1, address 0xfa3ec
} // line 1, address 0xfa47c
} // line 1, address 0xfa47c
} // line 53, address 0xfa47c
} // line 53, address 0xfa488
} // line 53, address 0xfa488
} // line 53, address 0xfa488
} // line 127, address 0xfa684
/*
* Offset 0xFA684
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2271)
* Stack frame base $sp, length 352
* Saved registers at address -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*/)
{ // line 1, address 0xfa684
char textBuffer[256]; // stack address -312
int lookup; // $a1
int n; // stack address -48
short *sjisPtr; // $s0
short sjisCode[3]; // stack address -56
int chars; // $v1
} // line 79, address 0xfa97c
/*
* Offset 0xFA97C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2402)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ darken__7DISPMANG4RECT(struct DISPMAN *this /*$s0*/, struct RECT rect /*stack 4*/)
{ // line 1, address 0xfa97c
} // line 31, address 0xfacc4
/*
* Offset 0xFACD4
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2670)
* Stack frame base $sp, length 40
* Saved registers at address -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*/)
{ // line 1, address 0xfacd4
} // line 25, address 0xfaed0
/*
* Offset 0xFAED0
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2743)
* Stack frame base $sp, length 56
* Saved registers at address -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*/)
{ // line 1, address 0xfaed0
int modX; // $s6
int modY; // $s5
{ // line 10, address 0xfaf54
int n; // $s3
} // line 31, address 0xfb304
} // line 31, address 0xfb304
/*
* Offset 0xFB304
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2786)
* Stack frame base $sp, length 344
* Saved registers at address -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, address 0xfb304
int boxHeight; // $s6
int boxTop; // stack address -72
int maxTextLen; // stack address -68
int textLen; // $s0
int textY; // $s3
int lineCount; // $s1
struct RECT darkRect; // stack address -304
struct RECT rect; // stack address -296
char textBuffer[128]; // stack address -288
int sel; // $fp
unsigned int cardState; // stack address -64
unsigned int bInBox; // $s4
int n; // $s2
int messCount; // $s7
short padData; // $s4
{ // line 102, address 0xfb79c
struct DISPMAN *this; // $s5
struct RECT rect; // stack address -148
{ // line 102, address 0xfb79c
int n; // $s2
} // line 113, address 0xfb8d0
} // line 113, address 0xfb8d0
{ // line 117, address 0xfb8d0
{ // line 120, address 0xfb8fc
{ // line 124, address 0xfb954
{ // line 127, address 0xfb984
{ // line 129, address 0xfb9a8
struct DISPMAN *this; // $s5
int y; // $s3
{ // line 129, address 0xfb9a8
struct LINE_F2 strF2; // stack address -88
struct LINE_F4 strF4; // stack address -120
} // line 129, address 0xfb9a8
} // line 129, address 0xfb9a8
{ // line 130, address 0xfba68
struct DISPMAN *this; // $s5
int y; // $s3
{ // line 130, address 0xfba68
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 130, address 0xfba68
} // line 130, address 0xfba68
{ // line 133, address 0xfbb2c
struct DISPMAN *this; // $s5
int y; // $s3
{ // line 133, address 0xfbb2c
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 133, address 0xfbbc8
} // line 133, address 0xfbbc8
} // line 136, address 0xfbbc8
} // line 136, address 0xfbbc8
{ // line 141, address 0xfbc34
{ // line 176, address 0xfbd50
{ // line 179, address 0xfbd80
{ // line 1, address 0xfbdd4
struct DISPMAN *this; // $s5
int y; // $s3
int r; // $s2
int g; // $s1
int b; // $s0
{ // line 1, address 0xfbdd4
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 1, address 0xfbdd4
} // line 1, address 0xfbdd4
{ // line 1, address 0xfbefc
struct DISPMAN *this; // $s5
int y; // $s3
int r; // $s2
int g; // $s1
int b; // $s0
{ // line 1, address 0xfbefc
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 1, address 0xfbefc
} // line 1, address 0xfbefc
{ // line 188, address 0xfc01c
struct DISPMAN *this; // $s5
int y; // $s3
int r; // $s1
{ // line 188, address 0xfc01c
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 188, address 0xfc0cc
} // line 188, address 0xfc0cc
} // line 191, address 0xfc0cc
} // line 191, address 0xfc0cc
} // line 207, address 0xfc138
} // line 233, address 0xfc278
{ // line 236, address 0xfc280
{ // line 240, address 0xfc2b0
{ // line 241, address 0xfc2f0
{ // line 244, address 0xfc2fc
{ // line 1, address 0xfc390
struct DISPMAN *this; // $s5
int y; // $s3
{ // line 1, address 0xfc390
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 1, address 0xfc390
} // line 1, address 0xfc390
{ // line 1, address 0xfc474
struct DISPMAN *this; // $s5
int y; // $s3
{ // line 1, address 0xfc474
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 1, address 0xfc474
} // line 1, address 0xfc474
} // line 266, address 0xfc540
{ // line 283, address 0xfc650
struct DISPMAN *this; // $s5
int y; // $s3
int w; // $v0
{ // line 283, address 0xfc650
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 283, address 0xfc650
} // line 283, address 0xfc650
{ // line 308, address 0xfc848
struct DISPMAN *this; // $s5
int y; // $s3
int w; // $v0
{ // line 308, address 0xfc848
struct LINE_F2 strF2; // stack address -128
struct LINE_F4 strF4; // stack address -160
} // line 308, address 0xfc8e8
} // line 308, address 0xfc8e8
} // line 313, address 0xfc8f0
} // line 313, address 0xfc8f0
} // line 313, address 0xfc8f0
} // line 313, address 0xfc8f0
} // line 321, address 0xfc950
/*
* Offset 0xFC950
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3112)
* Stack frame base $sp, length 232
* Saved registers at address -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, address 0xfc950
int boxHeight; // $s4
int boxTop; // stack address -48
int maxTextLen; // $s7
int textLen; // $v1
int textY; // $s1
int lineCount; // $s0
struct RECT darkRect; // stack address -192
char textBuffer[128]; // stack address -184
int n; // $s2
int messCount; // $s6
} // line 39, address 0xfcb08
/*
* Offset 0xFCC54
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3182)
* Stack frame base $sp, length 312
* Saved registers at address -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, address 0xfcc54
char c; // $a1
int fRef; // $s0
int w; // $s2
int n; // $s5
{ // line 1, address 0xfcc54
{ // line 7, address 0xfcc98
{ // line 1, address 0xfcc98
short *kanjiStringPtr; // $s1
int maxChars; // $s6
{ // line 1, address 0xfcc98
int totalLen; // $a1
short textBuffer[128]; // stack address -296
} // line 1, address 0xfcd04
} // line 1, address 0xfcd04
} // line 8, address 0xfcd0c
} // line 27, address 0xfce00
} // line 27, address 0xfce00
/*
* Offset 0xFCE00
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3214)
* Stack frame base $sp, length 184
* Saved registers at address -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, address 0xfce00
char c; // $s0
short kanji; // $s0
char word[128]; // stack address -168
int wordCount; // $s1
int lineLength; // $s6
int lineCount; // $s4
} // line 117, address 0xfd000
/*
* Offset 0xFD000
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3337)
* Stack frame base $sp, length 88
* Saved registers at address -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*/)
{ // line 1, address 0xfd000
int fRef; // $s1
int n; // stack address -56
char c; // $s0
{ // line 1, address 0xfd000
{ // line 9, address 0xfd080
{ // line 11, address 0xfd0f4
{ // line 20, address 0xfd124
{ // line 21, address 0xfd134
{ // line 22, address 0xfd134
struct DISPMAN *this; // $s2
struct TIMSTRUCT *tim; // $a3
int y; // stack address 12
int r; // $t1
int g; // $t0
int b; // $a3
int trans; // $v0
{ // line 22, address 0xfd134
struct DR_TPAGE *tpagePtr; // $a2
struct SPRT *spritePtr; // $a1
} // line 29, address 0xfd27c
} // line 29, address 0xfd27c
} // line 29, address 0xfd27c
} // line 29, address 0xfd27c
{ // line 39, address 0xfd2a4
{ // line 40, address 0xfd2b0
{ // line 1, address 0xfd2b0
struct DISPMAN *this; // $s2
struct TIMSTRUCT *tim; // $a3
int x; // $s3
int y; // stack address 12
int r; // $t1
int g; // $t0
int b; // $a3
int trans; // $v0
{ // line 1, address 0xfd2b0
struct DR_TPAGE *tpagePtr; // $a2
struct SPRT *spritePtr; // $a1
} // line 1, address 0xfd2b0
} // line 1, address 0xfd2b0
} // line 44, address 0xfd3a4
} // line 44, address 0xfd3a4
} // line 44, address 0xfd3a4
} // line 49, address 0xfd410
} // line 49, address 0xfd410
} // line 49, address 0xfd410
/*
* Offset 0xFD410
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3392)
* Stack frame base $sp, length 0
*/
int /*$ra*/ font_ref__7DISPMANcb(struct DISPMAN *this /*$a0*/, char c /*$a1*/, unsigned int accent /*$a2*/)
{ // line 1, address 0xfd410
} // line 127, address 0xfd650
/*
* Offset 0xFD658
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3524)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{ // line 1, address 0xfd658
long flag; // $a0
struct RECT *timRect; // $a2
{ // line 19, address 0xfd6a4
{ // line 25, address 0xfd6b8
{ // line 34, address 0xfd6d8
{ // line 39, address 0xfd6f0
{ // line 40, address 0xfd6f0
int n; // $a0
} // line 45, address 0xfd718
} // line 45, address 0xfd718
} // line 45, address 0xfd718
} // line 52, address 0xfd740
} // line 52, address 0xfd740
} // line 87, address 0xfd86c
/*
* Offset 0xFD86C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3749)
* Stack frame base $sp, length 264
* Saved registers at address -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, address 0xfd86c
int i; // $s2
struct DRAWENV drawenv; // stack address -248
struct DISPENV de; // stack address -152
unsigned long fadeOt[3]; // stack address -128
struct POLY_GT3 FadeSetTp; // stack address -112
struct POLY_G4 FadePol; // stack address -72
} // line 57, address 0xfdad8
/*
* Offset 0xFDAD8
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 392)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ DISPMAN_ctor(struct DISPMAN *this /*$s2*/, int __in_chrg /*$s3*/)
{ // line 1, address 0xfdad8
struct RECT rect; // stack address -32
} // line 14, address 0xfdb38
/*
* Offset 0xFDBEC
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1105)
* Stack frame base $sp, length 112
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ DrawEnterName__7DISPMANPc(struct DISPMAN *this /*$s0*/, char *ascii /*$a3*/)
{ // line 1, address 0xfdbec
char message[64]; // stack address -72
} // line 6, address 0xfdc6c
/*
* Offset 0xFDC6C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1114)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ SetMenuOption__7DISPMANi(struct DISPMAN *this /*$s0*/, int menuOption /*$s1*/)
{ // line 1, address 0xfdc6c
} // line 7, address 0xfdca8
/*
* Offset 0xFDCBC
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1125)
* Stack frame base $sp, length 0
*/
void /*$ra*/ SetActiveFunction__7DISPMANi(struct DISPMAN *this /*$a0*/, int menuOption /*$a1*/)
{ // line 1, address 0xfdcbc
} // line 2, address 0xfdcc4
/*
* Offset 0xFDCC4
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1131)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ MoveActiveAreaTo__7DISPMANi(struct DISPMAN *this /*$s0*/, int area /*$s1*/)
{ // line 1, address 0xfdcc4
} // line 5, address 0xfdd0c
/*
* Offset 0xFDD0C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1249)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ SelectNewBlock__7DISPMANi(struct DISPMAN *this /*$s0*/, int newBlock /*$a1*/)
{ // line 1, address 0xfdd0c
} // line 16, address 0xfddc0
/*
* Offset 0xFDDD0
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1710)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetArea__7DISPMANii(struct DISPMAN *this /*$a0*/, int x /*$a1*/, int y /*$a2*/)
{ // line 1, address 0xfddd0
int n; // $a3
} // line 15, address 0xfde48
/*
* Offset 0xFDE50
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 1962)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ ActiveAreaCancel__7DISPMAN(struct DISPMAN *this /*$s0*/)
{ // line 1, address 0xfde50
} // line 53, address 0xfdf58
/*
* Offset 0xFDF58
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2028)
* Stack frame base $sp, length 0
*/
void /*$ra*/ AddingBlock__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/)
{ // line 1, address 0xfdf58
} // line 1, address 0xfdf60
/*
* Offset 0xFDF60
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2030)
* Stack frame base $sp, length 0
*/
void /*$ra*/ DeletingCurrBlock__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/)
{ // line 1, address 0xfdf60
} // line 1, address 0xfdf68
/*
* Offset 0xFDF68
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2033)
* Stack frame base $sp, length 64
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ InvalidateArea__7DISPMANG4RECT(struct DISPMAN *this /*$s3*/, struct RECT rect /*stack 4*/)
{ // line 1, address 0xfdf68
int n; // $s2
} // line 7, address 0xfe040
/*
* Offset 0xFE040
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2081)
* Stack frame base $sp, length 0
*/
void /*$ra*/ InvalidateArea__7DISPMANi(struct DISPMAN *this /*$a0*/, int n /*$a1*/)
{ // line 1, address 0xfe040
int i; // $a2
} // line 14, address 0xfe090
/*
* Offset 0xFE098
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2100)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DrawArea__7DISPMANi(struct DISPMAN *this /*$a2*/, int n /*$a1*/)
{ // line 1, address 0xfe098
} // line 26, address 0xfe134
/*
* Offset 0xFE144
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2129)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FlashOn__7DISPMAN(struct DISPMAN *this /*$a0*/)
{ // line 1, address 0xfe144
} // line 1, address 0xfe150
/*
* Offset 0xFE150
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2132)
* Stack frame base $sp, length 0
*/
void /*$ra*/ FlashOff__7DISPMAN(struct DISPMAN *this /*$a0*/)
{ // line 1, address 0xfe150
} // line 3, address 0xfe160
/*
* Offset 0xFE160
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2355)
* Stack frame base $sp, length 0
*/
int /*$ra*/ FindKanji__7DISPMANs(struct DISPMAN *this /*$a0*/, short sjisCode /*$a1*/)
{ // line 1, address 0xfe160
int n; // $v1
} // line 12, address 0xfe1a8
/*
* Offset 0xFE1B0
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2371)
* Stack frame base $sp, length 72
* Saved registers at address -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*/)
{ // line 1, address 0xfe1b0
} // line 4, address 0xfe258
/*
* Offset 0xFE258
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2379)
* Stack frame base $sp, length 288
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ KanjiStrLen__FPsi(short *kanjiStringPtr /*$s1*/, int maxChars /*$s0*/)
{ // line 1, address 0xfe258
short textBuffer[128]; // stack address -272
int totalLen; // $a1
} // line 17, address 0xfe2f4
/*
* Offset 0xFE2F4
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2474)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetCurrBlock__7DISPMAN(struct DISPMAN *this /*$a0*/)
{ // line 1, address 0xfe2f4
} // line 1, address 0xfe300
/*
* Offset 0xFE300
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2476)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetCurrSlice__7DISPMAN(struct DISPMAN *this /*$a0*/)
{ // line 1, address 0xfe300
} // line 1, address 0xfe30c
/*
* Offset 0xFE30C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2480)
* Stack frame base $sp, length 64
* Saved registers at address -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*/)
{ // line 1, address 0xfe30c
} // line 15, address 0xfe418
/*
* Offset 0xFE434
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2515)
* Stack frame base $sp, length 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*/)
{ // line 1, address 0xfe434
int XPlusW; // $t1
int YPlusH; // $a0
struct POLY_FT4 *polyFT4Ptr; // $t0
} // line 45, address 0xfe590
/*
* Offset 0xFE598
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2616)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ AddMoveImage__7DISPMANP4RECTT1(struct DISPMAN *this /*$s0*/, struct RECT *srect /*$a1*/, struct RECT *drect /*$t0*/)
{ // line 1, address 0xfe598
struct DR_MOVE *movePtr; // $s0
} // line 9, address 0xfe61c
/*
* Offset 0xFE61C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2630)
* Stack frame base $sp, length 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*/)
{ // line 1, address 0xfe61c
struct SPRT *spritePtr; // $t0
struct DR_TPAGE *tpagePtr; // $a0
} // line 36, address 0xfe72c
/*
* Offset 0xFE72C
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 2699)
* Stack frame base $sp, length 104
* Saved registers at address -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*/)
{ // line 1, address 0xfe72c
struct LINE_F4 strF4; // stack address -88
struct LINE_F2 strF2; // stack address -56
} // line 32, address 0xfe834
/*
* Offset 0xFE834
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3172)
* Stack frame base $sp, length 80
* Saved registers at address -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*/)
{ // line 1, address 0xfe834
int w; // $s0
} // line 6, address 0xfe908
/*
* Offset 0xFE908
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3615)
* Stack frame base $sp, length 48
* Saved registers at address -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*/)
{ // line 1, address 0xfe908
struct RECT rect; // stack address -32
struct TIMSTRUCT *timPtr; // $s0
unsigned short *clutWordPtr; // $v1
{ // line 1, address 0xfe908
int n; // $a0
} // line 22, address 0xfe998
} // line 42, address 0xfea44
/*
* Offset 0xFEA44
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3809)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0xfea44
int screenY; // $s1
} // line 26, address 0xfeb00
/*
* Offset 0xFEB24
* D:\driver2\game\MEMCARD\DISPLAY.CPP (line 3840)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetCyclesPerSecond__7DISPMAN(struct DISPMAN *this /*$a0*/)
{ // line 1, address 0xfeb24
} // line 14, address 0xfeb70

382
src/MEMCARD/pad.cpp Normal file
View File

@ -0,0 +1,382 @@
/*
* Offset 0xFEB70
* D:\driver2\game\MEMCARD\PAD.CPP (line 32)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
struct PAD * /*$ra*/ __3PADPc(struct PAD *this /*$s1*/, char *bufferPtr /*$a1*/)
{ // line 1, address 0xfeb70
} // line 28, address 0xfec44
/*
* Offset 0xFECC0
* D:\driver2\game\MEMCARD\PAD.CPP (line 137)
* Stack frame base $sp, length 72
* Saved registers at address -4: s0 s1 s2 ra
*/
unsigned short /*$ra*/ GetPadData__3PADi(struct PAD *this /*$s1*/, int pad /*$s0*/)
{ // line 1, address 0xfecc0
struct ControllerPacket cData; // stack address -56
unsigned short retVal; // $s2
} // line 296, address 0xff2cc
/*
* Offset 0xFF2CC
* D:\driver2\game\MEMCARD\PAD.CPP (line 527)
* Stack frame base $sp, length 0
*/
char * /*$ra*/ port_name__3PADi(struct PAD *this /*$a2*/, int port /*$a1*/)
{ // line 1, address 0xff2cc
} // line 36, address 0xff3b8
/*
* Offset 0xFF3C0
* D:\driver2\game\MEMCARD\PAD.CPP (line 569)
* Stack frame base $sp, length 80
* Saved registers at address -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, address 0xff3c0
struct RECT rect; // stack address -48
short padData; // $a0
unsigned int bInBox; // $s2
{ // line 8, address 0xff410
{ // line 14, address 0xff448
{ // line 1, address 0xff448
struct PAD *this; // $s3
{ // line 1, address 0xff448
} // line 1, address 0xff4bc
} // line 1, address 0xff4bc
{ // line 15, address 0xff4c4
{ // line 16, address 0xff4c4
struct PAD *this; // $s3
{ // line 16, address 0xff4c4
} // line 16, address 0xff4c4
} // line 16, address 0xff4c4
{ // line 16, address 0xff4c4
struct PAD *this; // $s3
{ // line 16, address 0xff4c4
} // line 16, address 0xff4c4
} // line 16, address 0xff4c4
{ // line 16, address 0xff4c4
struct PAD *this; // $s3
{ // line 16, address 0xff4c4
} // line 16, address 0xff4c4
} // line 16, address 0xff4c4
{ // line 1, address 0xff564
struct PAD *this; // $s3
{ // line 1, address 0xff564
} // line 1, address 0xff564
} // line 1, address 0xff564
{ // line 1, address 0xff57c
struct PAD *this; // $s3
{ // line 1, address 0xff57c
} // line 1, address 0xff57c
} // line 1, address 0xff57c
{ // line 1, address 0xff594
struct PAD *this; // $s3
{ // line 1, address 0xff594
} // line 1, address 0xff594
} // line 1, address 0xff594
{ // line 45, address 0xff5a4
struct PAD *this; // $s3
{ // line 45, address 0xff5a4
} // line 45, address 0xff5a4
} // line 45, address 0xff5a4
{ // line 45, address 0xff5a4
struct PAD *this; // $s3
{ // line 45, address 0xff5a4
} // line 45, address 0xff5a4
} // line 45, address 0xff5a4
} // line 56, address 0xff664
} // line 64, address 0xff6b4
} // line 64, address 0xff6b4
} // line 64, address 0xff6e4
/*
* Offset 0xFF6E4
* D:\driver2\game\MEMCARD\PAD.CPP (line 655)
* Stack frame base $sp, length 80
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
unsigned int /*$ra*/ WaitUntilAnyCardInserted__3PAD(struct PAD *this /*$s3*/)
{ // line 1, address 0xff6e4
struct RECT rect; // stack address -48
unsigned int bInBox; // $s2
{ // line 8, address 0xff730
{ // line 20, address 0xff7a0
{ // line 1, address 0xff7a0
struct PAD *this; // $s3
{ // line 1, address 0xff7a0
} // line 1, address 0xff814
} // line 1, address 0xff814
{ // line 21, address 0xff81c
{ // line 22, address 0xff81c
struct PAD *this; // $s3
{ // line 22, address 0xff81c
} // line 22, address 0xff81c
} // line 22, address 0xff81c
{ // line 22, address 0xff81c
struct PAD *this; // $s3
{ // line 22, address 0xff81c
} // line 22, address 0xff81c
} // line 22, address 0xff81c
{ // line 22, address 0xff81c
struct PAD *this; // $s3
{ // line 22, address 0xff81c
} // line 22, address 0xff81c
} // line 22, address 0xff81c
{ // line 1, address 0xff8c0
struct PAD *this; // $s3
{ // line 1, address 0xff8c0
} // line 1, address 0xff8c0
} // line 1, address 0xff8c0
{ // line 1, address 0xff8d8
struct PAD *this; // $s3
{ // line 1, address 0xff8d8
} // line 1, address 0xff8d8
} // line 1, address 0xff8d8
{ // line 1, address 0xff8f0
struct PAD *this; // $s3
{ // line 1, address 0xff8f0
} // line 1, address 0xff8f0
} // line 1, address 0xff8f0
{ // line 53, address 0xff900
struct PAD *this; // $s3
{ // line 53, address 0xff900
} // line 53, address 0xff900
} // line 53, address 0xff900
{ // line 53, address 0xff900
struct PAD *this; // $s3
{ // line 53, address 0xff900
} // line 53, address 0xff900
} // line 53, address 0xff900
} // line 63, address 0xff9b0
} // line 71, address 0xff9ec
} // line 71, address 0xff9ec
} // line 71, address 0xffa1c
/*
* Offset 0xFFA1C
* D:\driver2\game\MEMCARD\PAD.CPP (line 794)
* Stack frame base $sp, length 32
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ check_ports__3PAD(struct PAD *this /*$s1*/)
{ // line 1, address 0xffa1c
} // line 102, address 0xffc80
/*
* Offset 0xFFC98
* D:\driver2\game\MEMCARD\PAD.CPP (line 905)
* Stack frame base $sp, length 56
* Saved registers at address -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, address 0xffc98
} // line 46, address 0xffe18
/*
* Offset 0xFFE44
* D:\driver2\game\MEMCARD\PAD.CPP (line 89)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ PAD_ctor(struct PAD *this /*$s1*/, int __in_chrg /*$s0*/)
{ // line 1, address 0xffe44
} // line 1, address 0xffe44
/*
* Offset 0xFFEA0
* D:\driver2\game\MEMCARD\PAD.CPP (line 103)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
int /*$ra*/ UpdateSlots__3PAD(struct PAD *this /*$s0*/)
{ // line 1, address 0xffea0
} // line 31, address 0xffee0
/*
* Offset 0xFFEE0
* D:\driver2\game\MEMCARD\PAD.CPP (line 437)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ NegConInserted__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0xffee0
} // line 8, address 0xfff10
/*
* Offset 0xFFF10
* D:\driver2\game\MEMCARD\PAD.CPP (line 448)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ ControllerInserted__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0xfff10
} // line 12, address 0xfff48
/*
* Offset 0xFFF48
* D:\driver2\game\MEMCARD\PAD.CPP (line 463)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ ControllerChanged__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0xfff48
} // line 2, address 0xfff5c
/*
* Offset 0xFFF5C
* D:\driver2\game\MEMCARD\PAD.CPP (line 468)
* Stack frame base $sp, length 56
*/
unsigned int /*$ra*/ SetControllerType__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0xfff5c
struct ControllerPacket cData; // stack address -40
} // line 19, address 0x1000d0
/*
* Offset 0x1000D0
* D:\driver2\game\MEMCARD\PAD.CPP (line 490)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ MouseInserted__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x1000d0
} // line 22, address 0x100158
/*
* Offset 0x100158
* D:\driver2\game\MEMCARD\PAD.CPP (line 514)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetMouseX__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x100158
} // line 1, address 0x10016c
/*
* Offset 0x10016C
* D:\driver2\game\MEMCARD\PAD.CPP (line 515)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetMouseY__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x10016c
} // line 1, address 0x100180
/*
* Offset 0x100180
* D:\driver2\game\MEMCARD\PAD.CPP (line 519)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ ResetPadData__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x100180
} // line 2, address 0x1001ac
/*
* Offset 0x1001AC
* D:\driver2\game\MEMCARD\PAD.CPP (line 733)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
char * /*$ra*/ GetPortName__3PADi(struct PAD *this /*$s1*/, int slot /*$s0*/)
{ // line 1, address 0x1001ac
} // line 6, address 0x100214
/*
* Offset 0x100214
* D:\driver2\game\MEMCARD\PAD.CPP (line 757)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
char * /*$ra*/ GetControllerPortName__3PAD(struct PAD *this /*$s0*/)
{ // line 1, address 0x100214
} // line 4, address 0x100244
/*
* Offset 0x100244
* D:\driver2\game\MEMCARD\PAD.CPP (line 778)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ CardSelected__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/)
{ // line 1, address 0x100244
} // line 2, address 0x100260
/*
* Offset 0x100260
* D:\driver2\game\MEMCARD\PAD.CPP (line 783)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
unsigned int /*$ra*/ CurrCardInfoRead__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x100260
} // line 2, address 0x10029c
/*
* Offset 0x10029C
* D:\driver2\game\MEMCARD\PAD.CPP (line 956)
* Stack frame base $sp, length 0
*/
int /*$ra*/ next_port__3PADi(struct PAD *this /*$a0*/, int port /*$a1*/)
{ // line 1, address 0x10029c
} // line 17, address 0x1002a4
/*
* Offset 0x1002A4
* D:\driver2\game\MEMCARD\PAD.CPP (line 978)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
int /*$ra*/ GetCurrNoUsedBlocks__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x1002a4
} // line 2, address 0x1002e0
/*
* Offset 0x1002E0
* D:\driver2\game\MEMCARD\PAD.CPP (line 984)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
unsigned int /*$ra*/ CurrSlotBlocksShared__3PADii(struct PAD *this /*$a0*/, int block1 /*$a1*/, int block2 /*$a2*/)
{ // line 1, address 0x1002e0
} // line 2, address 0x10031c
/*
* Offset 0x10031C
* D:\driver2\game\MEMCARD\PAD.CPP (line 1001)
* Stack frame base $sp, length 0
*/
struct MCSLOT * /*$ra*/ GetCurrSlotPtr__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x10031c
} // line 2, address 0x100340
/*
* Offset 0x100340
* D:\driver2\game\MEMCARD\PAD.CPP (line 1006)
* Stack frame base $sp, length 0
*/
int /*$ra*/ GetCurrSlot__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x100340
} // line 2, address 0x100354
/*
* Offset 0x100354
* D:\driver2\game\MEMCARD\PAD.CPP (line 1011)
* Stack frame base $sp, length 0
*/
struct MCSLOT * /*$ra*/ GetDestSlotPtr__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x100354
} // line 2, address 0x10037c
/*
* Offset 0x10037C
* D:\driver2\game\MEMCARD\PAD.CPP (line 1017)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ CardChanged__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/)
{ // line 1, address 0x10037c
} // line 5, address 0x1003a8
/*
* Offset 0x1003B0
* D:\driver2\game\MEMCARD\PAD.CPP (line 1029)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ CardInserted__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/)
{ // line 1, address 0x1003b0
} // line 2, address 0x1003e4
/*
* Offset 0x1003E4
* D:\driver2\game\MEMCARD\PAD.CPP (line 1035)
* Stack frame base $sp, length 0
*/
void /*$ra*/ CycleSelectedSlot__3PAD(struct PAD *this /*$a0*/)
{ // line 1, address 0x1003e4
} // line 4, address 0x10042c
/*
* Offset 0x10042C
* D:\driver2\game\MEMCARD\PAD.CPP (line 1049)
* Stack frame base $sp, length 0
*/
unsigned int /*$ra*/ CardFormatted__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/)
{ // line 1, address 0x10042c
} // line 2, address 0x100460
/*
* Offset 0x100460
* D:\driver2\game\MEMCARD\PAD.CPP (line 1054)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
int /*$ra*/ FormatCard__3PADi(struct PAD *this /*$a0*/, int slot /*$a1*/)
{ // line 1, address 0x100460
} // line 5, address 0x1004c8

11
src/MEMCARD/text.cpp Normal file
View File

@ -0,0 +1,11 @@
/*
* Offset 0x1004C8
* D:\driver2\game\MEMCARD\TEXT.CPP (line 16)
* Stack frame base $sp, length 0
*/
int /*$ra*/ ParseLanguageFile__FPci(char *textBuffer /*$a0*/, int language /*$a1*/)
{ // line 1, address 0x1004c8
int m; // $t0
char *textPtr; // $a0
} // line 156, address 0x1005d8

8272
src/decomp_defs.h Normal file

File diff suppressed because it is too large Load Diff

41
src/driver2_psx.sln Normal file
View File

@ -0,0 +1,41 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.271
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver2_psx", "driver2_psx.vcxproj", "{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_music", "..\dump_music\dump_music.vcxproj", "{E82851E6-2037-4D5A-9C8B-910DBCD09783}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Debug|x64.ActiveCfg = Debug|x64
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Debug|x64.Build.0 = Debug|x64
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Debug|x86.ActiveCfg = Debug|Win32
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Debug|x86.Build.0 = Debug|Win32
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Release|x64.ActiveCfg = Release|x64
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Release|x64.Build.0 = Release|x64
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Release|x86.ActiveCfg = Release|Win32
{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}.Release|x86.Build.0 = Release|Win32
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Debug|x64.ActiveCfg = Debug|x64
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Debug|x64.Build.0 = Debug|x64
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Debug|x86.ActiveCfg = Debug|Win32
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Debug|x86.Build.0 = Debug|Win32
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Release|x64.ActiveCfg = Release|x64
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Release|x64.Build.0 = Release|x64
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Release|x86.ActiveCfg = Release|Win32
{E82851E6-2037-4D5A-9C8B-910DBCD09783}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {15651337-5D0E-44D8-829A-D56564515A9A}
EndGlobalSection
EndGlobal

217
src/driver2_psx.vcxproj Normal file
View File

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{D062AA21-A7AE-4276-BD3E-A507EEEA0F9C}</ProjectGuid>
<RootNamespace>driver2psx</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>INCLUDE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="decomp_defs.h" />
<ClInclude Include="mips_hw_intpret.h" />
<ClInclude Include="pres.h" />
<ClInclude Include="r3000a_regs.h" />
<ClInclude Include="include\texture.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="C\ai.c" />
<ClCompile Include="C\bcoll3d.c" />
<ClCompile Include="C\bcollide.c" />
<ClCompile Include="C\bomberman.c" />
<ClCompile Include="C\camera.c" />
<ClCompile Include="C\cars.c" />
<ClCompile Include="C\cell.c" />
<ClCompile Include="C\civ_ai.c" />
<ClCompile Include="C\convert.c" />
<ClCompile Include="C\cop_ai.c" />
<ClCompile Include="C\cosmetic.c" />
<ClCompile Include="C\cutscene.c" />
<ClCompile Include="C\debris.c" />
<ClCompile Include="C\denting.c" />
<ClCompile Include="C\director.c" />
<ClCompile Include="C\dr2roads.c" />
<ClCompile Include="C\draw.c" />
<ClCompile Include="C\drivinggames.c" />
<ClCompile Include="C\e3stuff.c" />
<ClCompile Include="C\enviro.c" />
<ClCompile Include="C\envsound.c" />
<ClCompile Include="C\event.c" />
<ClCompile Include="C\felony.c" />
<ClCompile Include="C\fmvplay.c" />
<ClCompile Include="C\gamesnd.c" />
<ClCompile Include="C\glaunch.c" />
<ClCompile Include="C\handling.c" />
<ClCompile Include="C\job_fx.c" />
<ClCompile Include="C\leadai.c" />
<ClCompile Include="C\loadsave.c" />
<ClCompile Include="C\loadview.c" />
<ClCompile Include="C\map.c" />
<ClCompile Include="C\mc_snd.c" />
<ClCompile Include="C\mdraw.c" />
<ClCompile Include="C\mgeneric.c" />
<ClCompile Include="C\mission.c" />
<ClCompile Include="C\models.c" />
<ClCompile Include="C\motion_c.c" />
<ClCompile Include="C\objanim.c" />
<ClCompile Include="C\objcoll.c" />
<ClCompile Include="C\overlay.c" />
<ClCompile Include="C\overmap.c" />
<ClCompile Include="C\pad.c" />
<ClCompile Include="C\pathfind.c" />
<ClCompile Include="C\pause.c" />
<ClCompile Include="C\pedest.c" />
<ClCompile Include="C\players.c" />
<ClCompile Include="C\pres.c" />
<ClCompile Include="C\replays.c" />
<ClCompile Include="C\roadbits.c" />
<ClCompile Include="C\scores.c" />
<ClCompile Include="C\search.c" />
<ClCompile Include="C\shadow.c" />
<ClCompile Include="C\sky.c" />
<ClCompile Include="C\sound.c" />
<ClCompile Include="C\spool.c" />
<ClCompile Include="C\system.c" />
<ClCompile Include="C\targets.c" />
<ClCompile Include="C\texture.c" />
<ClCompile Include="C\tile.c" />
<ClCompile Include="C\time.c" />
<ClCompile Include="C\wheelforces.c" />
<ClCompile Include="C\xaplay.c" />
<ClCompile Include="C\xmplay.c" />
<ClCompile Include="FRONTEND\femain.c" />
<ClCompile Include="main.c" />
<ClCompile Include="MEMCARD\CardMain.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\cman.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\delete.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\display.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\pad.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\Slot.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="MEMCARD\text.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Файлы ресурсов">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Sources">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Sources\Frontend">
<UniqueIdentifier>{069c4a2c-4fcc-49a8-a88c-83835a884e21}</UniqueIdentifier>
</Filter>
<Filter Include="Sources\MemCard">
<UniqueIdentifier>{a70b1578-2234-422f-b384-799ac4b30755}</UniqueIdentifier>
</Filter>
<Filter Include="Includes">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="decomp_defs.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="mips_hw_intpret.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="r3000a_regs.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="include\texture.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="pres.h">
<Filter>Includes</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\dr2roads.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\objanim.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\overlay.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\replays.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\search.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\ai.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\bcoll3d.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\bcollide.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\bomberman.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\camera.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\overmap.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\cars.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\cell.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\civ_ai.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\convert.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\cop_ai.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\cosmetic.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\cutscene.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\debris.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\denting.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\director.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\draw.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\tile.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\drivinggames.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\e3stuff.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\enviro.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\envsound.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\event.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\felony.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\fmvplay.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\gamesnd.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\glaunch.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\handling.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\job_fx.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\leadai.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\loadsave.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\loadview.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\map.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\mc_snd.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\mdraw.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\mgeneric.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\mission.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\models.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\motion_c.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\objcoll.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\pad.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\pathfind.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\pause.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\pedest.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\players.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\pres.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\roadbits.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\scores.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\shadow.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\sky.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\sound.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\spool.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\system.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\targets.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\texture.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\time.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\wheelforces.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\xaplay.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="C\xmplay.c">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="FRONTEND\femain.c">
<Filter>Sources\Frontend</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\CardMain.c">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\Slot.cpp">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\delete.c">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\display.cpp">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\pad.cpp">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\text.cpp">
<Filter>Sources\MemCard</Filter>
</ClCompile>
<ClCompile Include="MEMCARD\cman.cpp">
<Filter>Sources\MemCard</Filter>
</ClCompile>
</ItemGroup>
</Project>

404
src/main.c Normal file
View File

@ -0,0 +1,404 @@
/*
#include "mips_hw_intpret.h"
#include "decomp_defs.h"
void ProcessSpoolInfoLump1(char *lump_ptr, int lump_size)
{
int i; // _t2
int length; // _v1
int slots_count; // _t0
int objects_count; // _t1
int num_of_regions; // _v0
char *alloclist; // _a3
move(_a2, _a0);
//lui(_v0, 0xA);
//addiu(_a1, _v0, pvsSize);0
la(_a1, pvsSize);
sw(_zero, (ubyte*)pvsSize);
sw(_zero, (ubyte*)pvsSize + 4);
sw(_zero, (ubyte*)pvsSize + 8);
sw(_zero, (ubyte*)pvsSize + 0xC);
la(_v1, lump_ptr);
li(_v0, -1);
la(_a0, mallocptr);
sll(_v1, _v1, 0xB);
slt(_v0, _v0, _v1);
sw(_a0, model_spool_buffer);
addiu(_a2, _a2, 4);
if (bnez(_v0))
{
lui(_v1, 1);
}
addu(_v1, _a0, _v1);
move(_a3, _v1);
move(_t0, _zero);
move(_t1, _zero);
li(_t7, -0x800);
move(_t6, _a1);
la(_t9, cell_objects_add);
la(_t4, cell_slots_add);
la(_t3, PVS_Buffers);
li(_t2, 3);
sw(_v1, mallocptr);
lw(_v1, (uint32*)uregv(_a2));
addiu(_v0, _a2, 4);
sw(_v0, &Music_And_AmbientOffsets);
addiu(_v1, _v1, 4);
addu(_a2, _a2, _v1);
lw(_a0, (uint32*)uregv(_a2));
addiu(_v0, _a2, 4);
sw(_v0, &AreaData);
sll(_v1, _a0, 4);
addiu(_v0, _v1, 4);
addu(_a2, _a2, _v0);
sw(_a2, &AreaTPages);
addu(_a2, _a2, _v1);
move(_a1, _a2);
sw(_a0, &NumAreas);
}
*/
#include "decomp_defs.h"
#include "mips_hw_intpret.h"
uint32 _registers[allregs] = { 0 };
int levelstartpos[8][4] = {
{0x12B1, 0xFFFFFC00, 0xFFFC9794, 0},
{0xFFFC74AC, 0x800, 0xFFFC6961, 0},
{0x383CB, 0xFFFFFC00, 0xABE1E, 0},
{0x165EF, 0xFFFFFC00, 0xFFFAB3D9, 0},
{0x24548, 0x1813, 0xFFFE4A80, 0},
{ 0xFFFD67F0, 0x1813, 0x58228, 0},
{ 0xFFFFD6FC, 0xFFFFE7ED, 0xFFFFA980, 0},
{ 0xFFFFDCDD, 0xFFFFE7ED, 0xF8A7, 0},
};
/*
* Offset 0x58C70
* D:\driver2\game\C\MAIN.C (line 2672)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ ProcessLumps(char *lump_ptr /*$s1*/, int lump_size /*$a1*/)
{ // line 1, address 0x58c70
int quit; // $s3
int lump_type; // $v1
int seg_size; // $s0
{ // line 14, address 0x58dfc
{ // line 173, address 0x58fe4
struct DRIVER2_JUNCTION *dst; // $a0
unsigned long *src; // $a2
int i; // $v1
} // line 186, address 0x5902c
{ // line 193, address 0x59034
struct DRIVER2_JUNCTION *dst; // $a0
unsigned long *src; // $a2
int i; // $v1
} // line 206, address 0x59080
} // line 218, address 0x5908c
} // line 222, address 0x590b8
/*
* Offset 0x590B8
* D:\driver2\game\C\MAIN.C (line 2896)
* Stack frame base $sp, length 112
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ LoadGameLevel()
{ // line 2, address 0x590b8
int sector; // stack address -32
int nsectors; // $s1
char name[64]; // stack address -96
char *malloc_lump; // $s2
} // line 71, address 0x592a0
/*
* Offset 0x592A0
* D:\driver2\game\C\MAIN.C (line 3003)
* Stack frame base $sp, length 24
* Saved registers at address -4: s0 ra
*/
void /*$ra*/ InitModelNames()
{ // line 2, address 0x592a0
} // line 64, address 0x59398
/*
* Offset 0x59398
* D:\driver2\game\C\MAIN.C (line 3114)
* Stack frame base $sp, length 80
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 s6 s7 ra
*/
void /*$ra*/ GameInit()
{ // line 8, address 0x59398
{ // line 112, address 0x59528
} // line 114, address 0x5953c
{ // line 149, address 0x5961c
} // line 149, address 0x5961c
{ // line 157, address 0x59644
} // line 163, address 0x5966c
{ // line 191, address 0x59718
struct STREAM_SOURCE *pinfo; // $s0
char padid; // stack address -48
int i; // $s2
} // line 245, address 0x59874
{ // line 328, address 0x599ac
int loop; // $s0
{ // line 331, address 0x599b4
} // line 331, address 0x599b4
} // line 333, address 0x599d4
{ // line 341, address 0x599f4
int i; // $v1
} // line 346, address 0x59a20
{ // line 350, address 0x59a20
} // line 361, address 0x59a20
{ // line 390, address 0x59a74
} // line 392, address 0x59a7c
} // line 395, address 0x59aac
/*
* Offset 0x59AAC
* D:\driver2\game\C\MAIN.C (line 3555)
* Stack frame base $sp, length 56
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
void /*$ra*/ StepSim()
{ // line 2, address 0x59aac
static unsigned long t0; // address 0x0
static char t1; // address 0x4
static char t2; // address 0x5
static int oldsp; // address 0x8
struct _CAR_DATA *lcp; // $s0
int i; // $s2
{ // line 78, address 0x59cd8
int eekTimer; // $s0
{ // line 84, address 0x59d2c
} // line 86, address 0x59d2c
} // line 90, address 0x59d88
{ // line 94, address 0x59dd4
} // line 98, address 0x59dd4
{ // line 1, address 0x5a040
} // line 1, address 0x5a040
{ // line 283, address 0x5a288
int padsteer; // $a1
{ // line 313, address 0x5a388
} // line 317, address 0x5a3a4
{ // line 324, address 0x5a3dc
} // line 324, address 0x5a3dc
} // line 324, address 0x5a3dc
{ // line 331, address 0x5a3fc
} // line 333, address 0x5a430
{ // line 428, address 0x5a6b8
int i; // $s1
int j; // $s0
static int stupid_logic[4]; // address 0x0
{ // line 448, address 0x5a7ac
} // line 450, address 0x5a7fc
} // line 451, address 0x5a818
{ // line 478, address 0x5a8fc
} // line 481, address 0x5a914
} // line 484, address 0x5a944
/*
* Offset 0x5A944
* D:\driver2\game\C\MAIN.C (line 4046)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ GameLoop()
{ // line 2, address 0x5a944
int i; // $s0
struct RECT dest; // stack address -24
{ // line 79, address 0x5aa94
static struct POLY_FT3 buffer[2]; // address 0x10
static struct POLY_FT3 *null; // address 0xc
} // line 94, address 0x5ab00
} // line 142, address 0x5ab90
/*
* Offset 0x5AB90
* D:\driver2\game\C\MAIN.C (line 4196)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ StepGame()
{ // line 2, address 0x5ab90
{ // line 42, address 0x5abc8
} // line 44, address 0x5abd8
{ // line 56, address 0x5ac40
int i; // $a1
} // line 66, address 0x5aca4
{ // line 140, address 0x5ae88
} // line 149, address 0x5aeb8
{ // line 165, address 0x5af28
} // line 172, address 0x5af38
{ // line 199, address 0x5afd4
int strobe; // $v0
} // line 202, address 0x5b020
{ // line 340, address 0x5b34c
} // line 342, address 0x5b384
} // line 351, address 0x5b3ec
/*
* Offset 0x5B3EC
* D:\driver2\game\C\MAIN.C (line 4767)
* Stack frame base $sp, length 72
* Saved registers at address -8: ra
*/
int /*$ra*/ main()
{ // line 1, address 0x5b3ec
{ // line 1, address 0x5b3ec
{ // line 1, address 0x5b3ec
char *PALScreenNames[4]; // stack address -24
char *NTSCScreenNames[4]; // stack address -40
char *OPMScreenNames[4]; // stack address -56
} // line 1, address 0x5b3ec
} // line 1, address 0x5b3ec
} // line 101, address 0x5b5b4
/*
* Offset 0x5B5B4
* D:\driver2\game\C\MAIN.C (line 4893)
* Stack frame base $sp, length 48
* Saved registers at address -8: s0 s1 s2 s3 s4 s5 ra
*/
void /*$ra*/ UpdatePlayerInformation()
{ // line 2, address 0x5b5b4
struct _CAR_DATA *cp; // $s1
int count; // $s0
int scale; // $v1
int wheel; // $t1
int wheelsonwater; // $t2
} // line 79, address 0x5b8f0
/*
* Offset 0x5B8F0
* D:\driver2\game\C\MAIN.C (line 5021)
* Stack frame base $sp, length 40
* Saved registers at address -8: s0 s1 s2 s3 ra
*/
void /*$ra*/ RenderGame2(int view /*$s3*/)
{ // line 1, address 0x5b8f0
int spaceFree; // $a1
int notInDreaAndStevesEvilLair; // $s0
{ // line 46, address 0x5ba0c
int strobe; // $v0
} // line 49, address 0x5ba54
{ // line 52, address 0x5ba54
int i; // $s1
} // line 56, address 0x5baec
{ // line 69, address 0x5bb4c
struct POLY_F4 *poly; // $v1
int col; // $a1
} // line 92, address 0x5bc88
{ // line 100, address 0x5bca8
} // line 104, address 0x5bcf0
} // line 111, address 0x5bd4c
/*
* Offset 0x5BD4C
* D:\driver2\game\C\MAIN.C (line 5272)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 ra
*/
void /*$ra*/ InitGameVariables()
{ // line 2, address 0x5bd4c
} // line 69, address 0x5bfdc
/*
* Offset 0x5BFDC
* D:\driver2\game\C\MAIN.C (line 5345)
* Stack frame base $sp, length 48
* Saved registers at address -4: s0 s1 s2 ra
*/
void /*$ra*/ DealWithHorn(char *hr /*$s2*/, int i /*$s1*/)
{ // line 1, address 0x5bfdc
struct _CAR_DATA *car; // $s0
{ // line 3, address 0x5c07c
} // line 18, address 0x5c18c
} // line 20, address 0x5c1bc
/*
* Offset 0x5C1D4
* D:\driver2\game\C\MAIN.C (line 5367)
* Stack frame base $sp, length 64
* Saved registers at address -4: s0 s1 s2 s3 s4 s5 s6 s7 fp ra
*/
int /*$ra*/ Havana3DOcclusion(void(*func)() /*$a3*/, int *param /*$fp*/)
{ // line 1, address 0x5c1d4
int outside; // $s6
int otAltered; // $s5
{ // line 12, address 0x5c270
int draw; // $s2
int loop; // $s0
} // line 106, address 0x5c47c
} // line 113, address 0x5c4c0
/*
* Offset 0x5C4C0
* D:\driver2\game\C\MAIN.C (line 4549)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ DrawGame()
{ // line 2, address 0x5c4c0
static unsigned long frame; // address 0xc8
{ // line 6, address 0x5c4e8
} // line 12, address 0x5c538
{ // line 18, address 0x5c554
} // line 28, address 0x5c5bc
} // line 34, address 0x5c5dc
/*
* Offset 0x5C5DC
* D:\driver2\game\C\MAIN.C (line 4586)
* Stack frame base $sp, length 0
*/
void /*$ra*/ EndGame(enum GAMEMODE mode /*$a0*/)
{
}
/*
* Offset 0x5C5F8
* D:\driver2\game\C\MAIN.C (line 4593)
* Stack frame base $sp, length 0
*/
void /*$ra*/ EnablePause(enum PAUSEMODE mode /*$a0*/)
{
}
/*
* Offset 0x5C638
* D:\driver2\game\C\MAIN.C (line 4602)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ CheckForPause()
{ // line 2, address 0x5c638
{ // line 1, address 0x5c64c
} // line 1, address 0x5c67c
} // line 16, address 0x5c6d0
/*
* Offset 0x5C6D0
* D:\driver2\game\C\MAIN.C (line 4870)
* Stack frame base $sp, length 32
* Saved registers at address -8: s0 s1 ra
*/
void /*$ra*/ FadeScreen(int end_value /*$a1*/)
{ // line 1, address 0x5c6d0
int tmp2; // $s1
} // line 18, address 0x5c748
/*
* Offset 0x5C748
* D:\driver2\game\C\MAIN.C (line 5260)
* Stack frame base $sp, length 24
* Saved registers at address -8: ra
*/
void /*$ra*/ RenderGame()
{ // line 2, address 0x5c748
{ // line 2, address 0x5c748
{ // line 2, address 0x5c748
static unsigned long frame; // address 0xc8
{ // line 1, address 0x5c77c
} // line 1, address 0x5c7cc
{ // line 1, address 0x5c7e8
} // line 1, address 0x5c850
} // line 1, address 0x5c850
} // line 1, address 0x5c850
} // line 9, address 0x5c884
/*
* Offset 0x5C884
* D:\driver2\game\C\MAIN.C (line 2973)
* Stack frame base $sp, length 0
*/
int /*$ra*/ ReplayLog_Fnarr_He_Said_Log(int val /*$a0*/)
{
}

281
src/mips_hw_intpret.h Normal file
View File

@ -0,0 +1,281 @@
#ifndef MIPS_HW_INTPRET_H
#define MIPS_HW_INTPRET_H
#include "r3000a_regs.h"
#ifndef __cplusplus
typedef int bool;
#endif // __cplusplus
//-------------------------------------------------------------
// Helpers
//-------------------------------------------------------------
inline int sregv(RegVar_t r) // returns signed register value
{
return *(int*)&_registers[r];
}
inline uint32 uregv(RegVar_t r) // returns unsigned register value
{
return *(uint32*)&_registers[r];
}
inline void stores(RegVar_t r, int v) // stores signed register value
{
int* regVal = (int*)&_registers[r];
*regVal = v;
}
inline void storeu(RegVar_t r, uint32 v) // stores unsigned register value
{
_registers[r] = v;
}
//-------------------------------------------------------------
// operations
//-------------------------------------------------------------
inline void add(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = sregv(s) + sregv(t);
}
inline void addi(RegVar_t d, RegVar_t s, int imm)
{
_registers[d] = sregv(s) + imm;
}
inline void addiu(RegVar_t d, RegVar_t s, uint32 imm)
{
_registers[d] = _registers[s] + imm;
}
inline void addu(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = _registers[s] + _registers[t];
}
inline void and(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = _registers[s] & _registers[t];
}
inline void andi(RegVar_t d, RegVar_t s, uint32 imm)
{
_registers[d] = _registers[s] & imm;
}
inline void sub(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = sregv(s) - sregv(t);
}
inline void subu(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = _registers[s] - _registers[t];
}
inline void or(RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = _registers[s] | _registers[t];
}
inline void ori(RegVar_t d, RegVar_t s, uint32 imm)
{
_registers[d] = _registers[s] | imm;
}
inline void xor (RegVar_t d, RegVar_t s, RegVar_t t)
{
_registers[d] = _registers[s] ^ _registers[t];
}
inline void xori(RegVar_t d, RegVar_t s, uint32 imm)
{
_registers[d] = _registers[s] ^ imm;
}
//-------------
inline bool beq(RegVar_t s, RegVar_t t)
{
return (_registers[s] == _registers[t]);
}
inline bool beqz(RegVar_t s)
{
return (_registers[s] == 0);
}
//---
inline bool bgez(RegVar_t s)
{
return (_registers[s] >= 0);
}
inline bool bgtz(RegVar_t s)
{
return (_registers[s] > 0);
}
//---
inline bool blez(RegVar_t s)
{
return (_registers[s] <= 0);
}
inline bool bltz(RegVar_t s)
{
return (_registers[s] < 0);
}
//---
inline bool bne(RegVar_t s, RegVar_t t)
{
return (_registers[s] != _registers[t]);
}
inline bool bnez(RegVar_t s)
{
return (_registers[s] != 0);
}
//-------------
inline void lb(RegVar_t s, ubyte byteimm)
{
_registers[s] = byteimm;
}
//---
inline void li(RegVar_t s, uint32 imm)
{
_registers[s] = imm;
}
inline void lui(RegVar_t s, uint32 imm)
{
_registers[s] = (imm << 16);
}
inline void lw(RegVar_t s, uint32* w)
{
_registers[s] = *w;
}
//---
inline void mfhi(RegVar_t s)
{
_registers[s] = _registers[_HI];
}
inline void mflo(RegVar_t s)
{
_registers[s] = _registers[_LO];
}
inline void div(RegVar_t s, RegVar_t t)
{
_registers[_LO] = sregv(s) / sregv(t);
_registers[_HI] = sregv(s) % sregv(t);
}
inline void divu(RegVar_t s, RegVar_t t)
{
_registers[_LO] = _registers[s] / _registers[t];
_registers[_HI] = _registers[s] % _registers[t];
}
inline void mult(RegVar_t s, RegVar_t t)
{
unsigned __int64* result = (__int64*)&_registers[_LO];
*result = (__int64)sregv(s) * (__int64)sregv(t);
}
inline void multu(RegVar_t s, RegVar_t t)
{
unsigned __int64* result = (__int64*)&_registers[_LO];
*result = (__int64)_registers[s] * (__int64)_registers[t];
}
//---
inline void sb(RegVar_t t, char* b)
{
*b = 0xff & _registers[t];
}
inline void sw(RegVar_t t, int* w)
{
*w = _registers[t];
}
inline void sll(RegVar_t d, RegVar_t t, uint32 h)
{
_registers[d] = _registers[t] << h;
}
inline void sllv(RegVar_t d, RegVar_t t, RegVar_t s)
{
_registers[d] = _registers[t] << _registers[s];
}
inline void sra(RegVar_t d, RegVar_t t, int h)
{
_registers[d] = sregv(t) >> h;
}
inline void srl(RegVar_t d, RegVar_t t, uint32 h)
{
_registers[d] = _registers[t] >> h;
}
inline void srlv(RegVar_t d, RegVar_t t, RegVar_t s)
{
_registers[d] = _registers[t] >> _registers[s];
}
inline void slt(RegVar_t d, RegVar_t s, RegVar_t t)
{
if (sregv(s) < sregv(t))
_registers[d] = 1;
else
_registers[d] = 0;
}
inline void sltu(RegVar_t d, RegVar_t s, RegVar_t t)
{
if(_registers[s] < _registers[t])
_registers[d] = 1;
else
_registers[d] = 0;
}
inline void slti(RegVar_t d, RegVar_t s, int imm)
{
if (sregv(s) < imm)
_registers[d] = 1;
else
_registers[d] = 0;
}
inline void sltiu(RegVar_t d, RegVar_t s, uint32 imm)
{
if (_registers[s] < imm)
_registers[d] = 1;
else
_registers[d] = 0;
}
#define move(a,b) add(a,b,_zero)
#define la(a,b) li(a,(uint32)b)
#endif // MIPS_HW_INTPRET_H

4
src/pres.h Normal file
View File

@ -0,0 +1,4 @@
#pragma once
void SetCLUT16Flags(unsigned short clutID, unsigned short mask, char transparent);
void InitButtonTextures();

31
src/r3000a_regs.h Normal file
View File

@ -0,0 +1,31 @@
#ifndef R300A_REGS_H
#define R300A_REGS_H
typedef unsigned int uint32;
typedef unsigned char ubyte;
typedef enum ERegVar
{
_zero = 0, // Always returns 0
_at = 1, // Reserved for use by assembler
_v0 = 2, _v1 = 3, // Value returned by subroutine
_a0 = 4, _a1 = 5, _a2 = 6, _a3 = 7, // First four parameters (arguments) for a subroutine
_t0 = 8, _t1 = 9, _t2 = 10, _t3 = 11, _t4 = 12, _t5 = 13, _t6 = 14, _t7 = 15, // temporary, subroutines can use without saving
_t8 = 24, _t9 = 25, // Subroutines can use without saving
_s0 = 16, _s1 = 17, _s2 = 18, _s3 = 19, _s4 = 20, _s5 = 21, _s6 = 22, _s7 = 23, // Subroutine register variables, must be restored before returning
_k0 = 26, _k1 = 27, // Reserved for use by interrupt / trap handler; may change under your feet
_gp = 28, // Global pointer; used to access "static" or "extern" variables
_sp = 29, // Stack pointer
_s8 = 30, // fp // Frame pointer or ninth subroutine variable
_ra = 31, // Return address for subroutine
_LO,
_HI,
allregs,
} RegVar_t;
extern uint32 _registers[allregs];
#endif // R300A_REGS_H

4
src/run.bat Normal file
View File

@ -0,0 +1,4 @@
debug\dump_music.exe music_d1fin.bin
debug\dump_music.exe music_d2dem.bin
debug\dump_music.exe music_d2fin.bin
pause