Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18 Rev 20
Line 2... Line 2...
2
 
2
 
3
#include <stdio.h>
3
#include <stdio.h>
4
#include <stdlib.h>
4
#include <stdlib.h>
5
#include <string.h>
5
#include <string.h>
6
 
6
 
7
#include "brender.h"
7
#include "brender/brender.h"
8
#include "brucetrk.h"
8
#include "brucetrk.h"
9
#include "car.h"
9
#include "car.h"
10
#include "constants.h"
10
#include "constants.h"
11
#include "controls.h"
11
#include "controls.h"
12
#include "crush.h"
12
#include "crush.h"
13
#include "depth.h"
13
#include "depth.h"
14
#include "displays.h"
14
#include "displays.h"
15
#include "drmem.h"
15
#include "drmem.h"
16
#include "errors.h"
16
#include "errors.h"
17
#include "flicplay.h"
17
#include "flicplay.h"
18
#include "formats.h"
-
 
19
#include "globvars.h"
18
#include "globvars.h"
20
#include "globvrkm.h"
19
#include "globvrkm.h"
21
#include "globvrpb.h"
20
#include "globvrpb.h"
22
#include "grafdata.h"
21
#include "grafdata.h"
23
#include "graphics.h"
22
#include "graphics.h"
Line 1604... Line 1603...
1604
    }
1603
    }
1605
}
1604
}
1606
 
1605
 
1607
// IDA: void __usercall CloneCar(tCar_spec **pOutput_car@<EAX>, tCar_spec *pInput_car@<EDX>)
1606
// IDA: void __usercall CloneCar(tCar_spec **pOutput_car@<EAX>, tCar_spec *pInput_car@<EDX>)
1608
void CloneCar(tCar_spec** pOutput_car, tCar_spec* pInput_car) {
1607
void CloneCar(tCar_spec** pOutput_car, tCar_spec* pInput_car) {
1609
    int i;
1608
    //int i; // Pierre-Marie Baty -- unused variable
1610
    LOG_TRACE("(%p, %p)", pOutput_car, pInput_car);
1609
    LOG_TRACE("(%p, %p)", pOutput_car, pInput_car);
1611
 
-
 
1612
    *pOutput_car = BrMemAllocate(sizeof(tCar_spec), kMem_cop_car_spec);
-
 
1613
    **pOutput_car = *pInput_car;
1610
    NOT_IMPLEMENTED();
1614
    (*pOutput_car)->car_master_actor = CloneActor(pInput_car->car_master_actor);
-
 
1615
    BrActorAdd(gNon_track_actor, (*pOutput_car)->car_master_actor);
-
 
1616
    for (i = 0; i < pInput_car->car_actor_count; i++) {
-
 
1617
        (*pOutput_car)->car_model_actors[i].actor = DRActorFindRecurse((*pOutput_car)->car_master_actor, pInput_car->car_model_actors[i].actor->identifier);
-
 
1618
    }
-
 
1619
}
1611
}
1620
 
1612
 
1621
// IDA: void __usercall DisposeClonedCar(tCar_spec *pCar@<EAX>)
1613
// IDA: void __usercall DisposeClonedCar(tCar_spec *pCar@<EAX>)
1622
void DisposeClonedCar(tCar_spec* pCar) {
1614
void DisposeClonedCar(tCar_spec* pCar) {
1623
    LOG_TRACE("(%p)", pCar);
1615
    LOG_TRACE("(%p)", pCar);
Line 2086... Line 2078...
2086
 
2078
 
2087
    number_of_floorpans = 5;
2079
    number_of_floorpans = 5;
2088
    for (i = old_material_count; i < pStorage_space->materials_count; i++) {
2080
    for (i = old_material_count; i < pStorage_space->materials_count; i++) {
2089
        if (pStorage_space->materials[i] != NULL && pStorage_space->materials[i]->colour_map != NULL) {
2081
        if (pStorage_space->materials[i] != NULL && pStorage_space->materials[i]->colour_map != NULL) {
2090
            pStorage_space->materials[i]->flags |= BR_MATF_LIGHT | BR_MATF_PRELIT | BR_MATF_SMOOTH;
2082
            pStorage_space->materials[i]->flags |= BR_MATF_LIGHT | BR_MATF_PRELIT | BR_MATF_SMOOTH;
2091
            // Added by jeff. This seems to be required with BRender 1.3.2
-
 
2092
            pStorage_space->materials[i]->flags &= ~BR_MATF_LIGHT;
-
 
2093
            if (pStorage_space->materials[i]->flags & BR_MATF_TWO_SIDED) {
2083
            if (pStorage_space->materials[i]->flags & BR_MATF_TWO_SIDED) {
2094
                its_a_floorpan = 0;
2084
                its_a_floorpan = 0;
2095
                for (j = 0; j < number_of_floorpans; j++) {
2085
                for (j = 0; j < number_of_floorpans; j++) {
2096
                    if (strcmp(gFloorpan_names[j], pStorage_space->materials[i]->identifier) == 0) {
2086
                    if (strcmp(gFloorpan_names[j], pStorage_space->materials[i]->identifier) == 0) {
2097
                        its_a_floorpan = 1;
2087
                        its_a_floorpan = 1;
Line 2905... Line 2895...
2905
float GetAFloatPercent(FILE* pF) {
2895
float GetAFloatPercent(FILE* pF) {
2906
    //char s[256]; // Pierre-Marie Baty -- unused variable
2896
    //char s[256]; // Pierre-Marie Baty -- unused variable
2907
    //char* str; // Pierre-Marie Baty -- unused variable
2897
    //char* str; // Pierre-Marie Baty -- unused variable
2908
    //float result; // Pierre-Marie Baty -- unused variable
2898
    //float result; // Pierre-Marie Baty -- unused variable
2909
    LOG_TRACE("(%p)", pF);
2899
    LOG_TRACE("(%p)", pF);
2910
 
-
 
2911
    GetALineAndDontArgue(pF, s);
-
 
2912
    str = strtok(s, "\t ,/");
-
 
2913
    sscanf(str, "%f", &result);
-
 
2914
    return result / 100.f;
2900
    NOT_IMPLEMENTED();
2915
}
2901
}
2916
 
2902
 
2917
// IDA: void __usercall GetPairOfFloats(FILE *pF@<EAX>, float *pF1@<EDX>, float *pF2@<EBX>)
2903
// IDA: void __usercall GetPairOfFloats(FILE *pF@<EAX>, float *pF1@<EDX>, float *pF2@<EBX>)
2918
void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) {
2904
void GetPairOfFloats(FILE* pF, float* pF1, float* pF2) {
2919
    char s[256];
2905
    char s[256];
Line 2969... Line 2955...
2969
// IDA: void __usercall GetThreeIntsAndAString(FILE *pF@<EAX>, int *pF1@<EDX>, int *pF2@<EBX>, int *pF3@<ECX>, char *pS)
2955
// IDA: void __usercall GetThreeIntsAndAString(FILE *pF@<EAX>, int *pF1@<EDX>, int *pF2@<EBX>, int *pF3@<ECX>, char *pS)
2970
void GetThreeIntsAndAString(FILE* pF, int* pF1, int* pF2, int* pF3, char* pS) {
2956
void GetThreeIntsAndAString(FILE* pF, int* pF1, int* pF2, int* pF3, char* pS) {
2971
    //char s[256]; // Pierre-Marie Baty -- unused variable
2957
    //char s[256]; // Pierre-Marie Baty -- unused variable
2972
    //char* str; // Pierre-Marie Baty -- unused variable
2958
    //char* str; // Pierre-Marie Baty -- unused variable
2973
    LOG_TRACE("(%p, %p, %p, %p, \"%s\")", pF, pF1, pF2, pF3, pS);
2959
    LOG_TRACE("(%p, %p, %p, %p, \"%s\")", pF, pF1, pF2, pF3, pS);
2974
 
-
 
2975
    GetALineAndDontArgue(pF, s);
-
 
2976
    str = strtok(s, "\t ,/");
-
 
2977
    sscanf(str, "%d", pF1);
-
 
2978
    str = strtok(NULL, "\t ,/");
-
 
2979
    sscanf(str, "%d", pF2);
-
 
2980
    str = strtok(NULL, "\t ,/");
-
 
2981
    sscanf(str, "%d", pF3);
-
 
2982
    str = strtok(NULL, "\t ,/");
-
 
2983
    strcpy(pS, str);
2960
    NOT_IMPLEMENTED();
2984
}
2961
}
2985
 
2962
 
2986
// IDA: void __usercall GetFourInts(FILE *pF@<EAX>, int *pF1@<EDX>, int *pF2@<EBX>, int *pF3@<ECX>, int *pF4)
2963
// IDA: void __usercall GetFourInts(FILE *pF@<EAX>, int *pF1@<EDX>, int *pF2@<EBX>, int *pF3@<ECX>, int *pF4)
2987
void GetFourInts(FILE* pF, int* pF1, int* pF2, int* pF3, int* pF4) {
2964
void GetFourInts(FILE* pF, int* pF1, int* pF2, int* pF3, int* pF4) {
2988
    char s[256];
2965
    char s[256];
Line 3007... Line 2984...
3007
}
2984
}
3008
 
2985
 
3009
// IDA: void __usercall GetPairOfScalars(FILE *pF@<EAX>, br_scalar *pS1@<EDX>, br_scalar *pS2@<EBX>)
2986
// IDA: void __usercall GetPairOfScalars(FILE *pF@<EAX>, br_scalar *pS1@<EDX>, br_scalar *pS2@<EBX>)
3010
void GetPairOfScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2) {
2987
void GetPairOfScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2) {
3011
    LOG_TRACE("(%p, %p, %p)", pF, pS1, pS2);
2988
    LOG_TRACE("(%p, %p, %p)", pF, pS1, pS2);
3012
 
-
 
3013
    GetPairOfFloats(pF, pS1, pS2);
2989
    NOT_IMPLEMENTED();
3014
}
2990
}
3015
 
2991
 
3016
// IDA: void __usercall GetThreeScalars(FILE *pF@<EAX>, br_scalar *pS1@<EDX>, br_scalar *pS2@<EBX>, br_scalar *pS3@<ECX>)
2992
// IDA: void __usercall GetThreeScalars(FILE *pF@<EAX>, br_scalar *pS1@<EDX>, br_scalar *pS2@<EBX>, br_scalar *pS3@<ECX>)
3017
void GetThreeScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2, br_scalar* pS3) {
2993
void GetThreeScalars(FILE* pF, br_scalar* pS1, br_scalar* pS2, br_scalar* pS3) {
3018
    LOG_TRACE("(%p, %p, %p, %p)", pF, pS1, pS2, pS3);
2994
    LOG_TRACE("(%p, %p, %p, %p)", pF, pS1, pS2, pS3);