Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
#include "drmem.h"
20 pmbaty 2
#include "brender/brender.h"
1 pmbaty 3
#include "errors.h"
4
#include "harness/trace.h"
5
#include <stdlib.h>
6
 
7
br_allocator gAllocator = { "Death Race", DRStdlibAllocate, DRStdlibFree, DRStdlibInquire, Claim4ByteAlignment };
8
int gNon_fatal_allocation_errors = 0;
9
char* gMem_names[247] = {
10
    "",
11
    "BR_MEMORY_SCRATCH",
12
    "BR_MEMORY_PIXELMAP",
13
    "BR_MEMORY_PIXELS",
14
    "BR_MEMORY_VERTICES",
15
    "BR_MEMORY_FACES",
16
    "BR_MEMORY_GROUPS",
17
    "BR_MEMORY_MODEL",
18
    "BR_MEMORY_MATERIAL",
19
    "BR_MEMORY_MATERIAL_INDEX",
20
    "BR_MEMORY_ACTOR",
21
    "BR_MEMORY_PREPARED_VERTICES",
22
    "BR_MEMORY_PREPARED_FACES",
23
    "BR_MEMORY_LIGHT",
24
    "BR_MEMORY_CAMERA",
25
    "BR_MEMORY_BOUNDS",
26
    "BR_MEMORY_CLIP_PLANE",
27
    "BR_MEMORY_STRING",
28
    "BR_MEMORY_REGISTRY",
29
    "BR_MEMORY_TRANSFORM",
30
    "BR_MEMORY_RESOURCE_CLASS",
31
    "BR_MEMORY_FILE",
32
    "BR_MEMORY_ANCHOR",
33
    "BR_MEMORY_POOL",
34
    "BR_MEMORY_RENDER_MATERIAL",
35
    "BR_MEMORY_DATAFILE",
36
    "BR_MEMORY_IMAGE",
37
    "BR_MEMORY_IMAGE_ARENA",
38
    "BR_MEMORY_IMAGE_SECTIONS",
39
    "BR_MEMORY_IMAGE_NAMES",
40
    "BR_MEMORY_EXCEPTION_HANDLER",
41
    "BR_MEMORY_RENDER_DATA",
42
    "BR_MEMORY_TOKEN",
43
    "BR_MEMORY_TOKEN_MAP",
44
    "BR_MEMORY_OBJECT",
45
    "BR_MEMORY_OBJECT_DATA",
46
    "BR_MEMORY_DRIVER",
47
    "BR_MEMORY_LEXER",
48
    "BR_MEMORY_OBJECT_LIST",
49
    "BR_MEMORY_OBJECT_LIST_ENTRY",
50
    "BR_MEMORY_ENABLED_ACTORS",
51
    "BR_MEMORY_FMT_RESULTS",
52
    "BR_MEMORY_PREPARED_MODEL",
53
    "BR_MEMORY_ORDER_TABLE",
54
    "BR_MEMORY_TOKEN_VALUE",
55
    "BR_MEMORY_TOKEN_TEMPLATE",
56
    "",
57
    "",
58
    "",
59
    "",
60
    "",
61
    "",
62
    "",
63
    "",
64
    "",
65
    "",
66
    "",
67
    "",
68
    "",
69
    "",
70
    "",
71
    "",
72
    "",
73
    "",
74
    "",
75
    "",
76
    "",
77
    "",
78
    "",
79
    "",
80
    "",
81
    "",
82
    "",
83
    "",
84
    "",
85
    "",
86
    "",
87
    "",
88
    "",
89
    "",
90
    "",
91
    "",
92
    "",
93
    "",
94
    "",
95
    "",
96
    "",
97
    "",
98
    "",
99
    "",
100
    "",
101
    "",
102
    "",
103
    "",
104
    "",
105
    "",
106
    "",
107
    "",
108
    "",
109
    "",
110
    "",
111
    "",
112
    "",
113
    "",
114
    "",
115
    "",
116
    "",
117
    "",
118
    "",
119
    "",
120
    "",
121
    "",
122
    "",
123
    "",
124
    "",
125
    "",
126
    "",
127
    "",
128
    "",
129
    "",
130
    "",
131
    "",
132
    "",
133
    "",
134
    "",
135
    "",
136
    "",
137
    "",
138
    "",
139
    "kMem_intf_pix_copy",
140
    "kMem_intf_pal_copy",
141
    "kMem_nodes_array",
142
    "kMem_sections_array",
143
    "kMem_key_names",
144
    "kMem_columns_z",
145
    "kMem_columns_x",
146
    "kMem_non_car_list",
147
    "kMem_simp_level",
148
    "kMem_crush_data",
149
    "kMem_crush_neighbours",
150
    "kMem_temp_fs",
151
    "kMem_error_pix_copy",
152
    "kMem_error_pal_copy",
153
    "kMem_flic_pal",
154
    "kMem_flic_data",
155
    "kMem_flic_data_2",
156
    "kMem_queued_flic",
157
    "kFlic_panel_pixels",
158
    "kMem_translations",
159
    "kMem_translations_text",
160
    "kMem_cur_pal_pixels",
161
    "kMem_render_pal_pixels",
162
    "kMem_scratch_pal_pixels",
163
    "kMem_shade_table_copy",
164
    "kMem_rear_screen_pixels",
165
    "kMem_rolling_letters",
166
    "kMem_intf_copy_areas",
167
    "kMem_strip_image",
168
    "kMem_strip_image_perm",
169
    "kMem_damage_clauses",
170
    "kMem_undamaged_vertices",
171
    "kMem_race_text_chunk",
172
    "kMem_race_text_str",
173
    "kMem_oppo_array",
174
    "kMem_oppo_text_chunk",
175
    "kMem_oppo_text_str",
176
    "kMem_br_font",
177
    "kMem_br_font_wid",
178
    "kMem_br_font_enc",
179
    "kMem_br_font_glyphs",
180
    "kMem_oppo_car_spec",
181
    "kMem_misc_string",
182
    "kMem_mac_host_buffer_1",
183
    "kMem_mac_host_buffer_2",
184
    "kMem_mac_net_details",
185
    "kMem_back_pixels",
186
    "kMem_quit_vfy_pixels",
187
    "kMem_quit_vfy_pal",
188
    "kMem_net_min_messages",
189
    "kMem_net_mid_messages",
190
    "kMem_net_max_messages",
191
    "kMem_net_pid_details",
192
    "kMem_net_car_spec",
193
    "kMem_dynamic_message",
194
    "kMem_player_list_join",
195
    "kMem_player_list_leave",
196
    "kMem_oppo_new_nodes",
197
    "kMem_oppo_new_sections",
198
    "kMem_cop_car_spec",
199
    "kMem_oppo_bit_per_node",
200
    "kMem_ped_action_list",
201
    "kMem_ped_sequences",
202
    "kMem_ped_array_stain",
203
    "kMem_ped_array",
204
    "kMem_ped_instructions",
205
    "kMem_ped_new_instruc",
206
    "kMem_pipe_model_geometry",
207
    "kMem_powerup_array",
208
    "kMem_powerup_float_parms",
209
    "kMem_powerup_int_parms",
210
    "kMem_drugs_palette",
211
    "kMem_pratcam_flic_array",
212
    "kMem_pratcam_flic_data",
213
    "kMem_pratcam_sequence_array",
214
    "kMem_pratcam_pixelmap",
215
    "kMem_video_pixels",
216
    "kMem_funk_prox_array",
217
    "kMem_new_mat_id",
218
    "kMem_new_mat_id_2",
219
    "kMem_new_mat_id_3",
220
    "kMem_special_volume",
221
    "kMem_special_screen",
222
    "kMem_new_special_vol",
223
    "kMem_saved_game",
224
    "kMem_new_save_game",
225
    "kMem_stor_space_pix",
226
    "kMem_stor_space_tab",
227
    "kMem_stor_space_mat",
228
    "kMem_stor_space_mod",
229
    "kMem_stor_space_save",
230
    "kMem_funk_spec",
231
    "kMem_groove_spec",
232
    "kMem_non_car_spec",
233
    "kMem_S3_scan_name",
234
    "kMem_S3_sound_header",
235
    "kMem_S3_sample",
236
    "kMem_S3_mac_channel",
237
    "kMem_S3_mac_path",
238
    "kMem_S3_sentinel",
239
    "kMem_S3_outlet",
240
    "kMem_S3_channel",
241
    "kMem_S3_descriptor",
242
    "kMem_S3_reverse_buffer",
243
    "kMem_S3_source",
244
    "kMem_S3_DOS_SOS_channel",
245
    "kMem_S3_PC_DOS_path",
246
    "kMem_S3_DOS_SOS_patch",
247
    "kMem_S3_DOS_SOS_song_structure",
248
    "kMem_S3_DOS_SOS_song_data",
249
    "kMem_S3_Windows_95_load_WAV_file",
250
    "kMem_S3_Windows_95_create_temp_buffer_space_to_reverse_sample",
251
    "kMem_S3_Windows_95_path",
252
    "kMem_DOS_HMI_file_open",
253
    "kMem_abuse_text",
254
    "kMem_action_replay_buffer",
255
    "kMem_misc",
256
    NULL,
257
};
258
br_resource_class gStainless_classes[118];
259
 
260
// IDA: void __cdecl SetNonFatalAllocationErrors()
261
void SetNonFatalAllocationErrors(void) {
262
    LOG_TRACE("()");
263
 
264
    gNon_fatal_allocation_errors = 1;
265
}
266
 
267
// IDA: void __cdecl ResetNonFatalAllocationErrors()
268
void ResetNonFatalAllocationErrors(void) {
269
    LOG_TRACE("()");
270
 
271
    gNon_fatal_allocation_errors = 0;
272
}
273
 
274
// IDA: int __cdecl AllocationErrorsAreFatal()
275
int AllocationErrorsAreFatal(void) {
276
    return gNon_fatal_allocation_errors == 0;
277
}
278
 
279
// IDA: void __cdecl MAMSInitMem()
280
void MAMSInitMem(void) {
281
    //int i; // Pierre-Marie Baty -- unused variable
282
    //FILE* f; // Pierre-Marie Baty -- unused variable
283
    //tPath_name the_path; // Pierre-Marie Baty -- unused variable
284
    LOG_TRACE("()");
285
}
286
 
287
// IDA: void __usercall PrintMemoryDump(int pFlags@<EAX>, char *pTitle@<EDX>)
288
void PrintMemoryDump(int pFlags, char* pTitle) {
289
    LOG_TRACE("(%d, \"%s\")", pFlags, pTitle);
290
}
291
 
292
// IDA: void* __cdecl DRStdlibAllocate(br_size_t size, br_uint_8 type)
293
void* DRStdlibAllocate(br_size_t size, br_uint_8 type) {
294
    void* p;
295
    //int i; // Pierre-Marie Baty -- unused variable
296
    char s[256];
297
 
298
    if (size == 0) {
299
        return NULL;
300
    }
301
    p = malloc(size);
302
    if (p == NULL && !gNon_fatal_allocation_errors) {
303
        PrintMemoryDump(0, "AT ERROR TIME");
304
        sprintf(s, "%s/%d", gMem_names[type], (int)size);
305
        FatalError(kFatalError_OOMCarmageddon_S, s);
306
    }
307
    return p;
308
}
309
 
310
// IDA: void __cdecl DRStdlibFree(void *mem)
311
void DRStdlibFree(void* mem) {
312
    //int i; // Pierre-Marie Baty -- unused variable
313
    free(mem);
314
}
315
 
316
// IDA: br_size_t __cdecl DRStdlibInquire(br_uint_8 type)
317
br_size_t DRStdlibInquire(br_uint_8 type) {
318
    return 0;
319
}
320
 
321
// IDA: br_uint_32 __cdecl Claim4ByteAlignment(br_uint_8 type)
322
br_uint_32 Claim4ByteAlignment(br_uint_8 type) {
323
    return 4;
324
}
325
 
326
// IDA: void __cdecl InstallDRMemCalls()
327
void InstallDRMemCalls(void) {
328
    BrAllocatorSet(&gAllocator);
329
}
330
 
331
// IDA: void __usercall MAMSUnlock(void **pPtr@<EAX>)
332
void MAMSUnlock(void** pPtr) {
333
    DRStdlibFree(*pPtr);
334
    *pPtr = NULL;
335
}
336
 
337
// IDA: void __usercall MAMSLock(void **pPtr@<EAX>)
338
void MAMSLock(void** pPtr) {
339
    LOG_TRACE("(%p)", pPtr);
340
}
341
 
342
// IDA: void __cdecl CreateStainlessClasses()
343
void CreateStainlessClasses(void) {
344
    int i;
345
 
346
    for (i = 129; i < 246; i++) {
347
        gStainless_classes[i - 129].res_class = i;
348
        if (!BrResClassAdd(&gStainless_classes[i - 129])) {
349
            FatalError(kFatalError_OOMCarmageddon_S, gStainless_classes[i - 129].identifier);
350
        }
351
    }
352
}
353
 
354
// IDA: void __cdecl CheckMemory()
355
void CheckMemory(void) {
356
}