- #include "drmem.h" 
- #include "brender/brender.h" 
- #include "errors.h" 
- #include "harness/trace.h" 
- #include <stdlib.h> 
-   
- br_allocator gAllocator = { "Death Race", DRStdlibAllocate, DRStdlibFree, DRStdlibInquire, Claim4ByteAlignment }; 
- int gNon_fatal_allocation_errors = 0; 
- char* gMem_names[247] = { 
-     "", 
-     "BR_MEMORY_SCRATCH", 
-     "BR_MEMORY_PIXELMAP", 
-     "BR_MEMORY_PIXELS", 
-     "BR_MEMORY_VERTICES", 
-     "BR_MEMORY_FACES", 
-     "BR_MEMORY_GROUPS", 
-     "BR_MEMORY_MODEL", 
-     "BR_MEMORY_MATERIAL", 
-     "BR_MEMORY_MATERIAL_INDEX", 
-     "BR_MEMORY_ACTOR", 
-     "BR_MEMORY_PREPARED_VERTICES", 
-     "BR_MEMORY_PREPARED_FACES", 
-     "BR_MEMORY_LIGHT", 
-     "BR_MEMORY_CAMERA", 
-     "BR_MEMORY_BOUNDS", 
-     "BR_MEMORY_CLIP_PLANE", 
-     "BR_MEMORY_STRING", 
-     "BR_MEMORY_REGISTRY", 
-     "BR_MEMORY_TRANSFORM", 
-     "BR_MEMORY_RESOURCE_CLASS", 
-     "BR_MEMORY_FILE", 
-     "BR_MEMORY_ANCHOR", 
-     "BR_MEMORY_POOL", 
-     "BR_MEMORY_RENDER_MATERIAL", 
-     "BR_MEMORY_DATAFILE", 
-     "BR_MEMORY_IMAGE", 
-     "BR_MEMORY_IMAGE_ARENA", 
-     "BR_MEMORY_IMAGE_SECTIONS", 
-     "BR_MEMORY_IMAGE_NAMES", 
-     "BR_MEMORY_EXCEPTION_HANDLER", 
-     "BR_MEMORY_RENDER_DATA", 
-     "BR_MEMORY_TOKEN", 
-     "BR_MEMORY_TOKEN_MAP", 
-     "BR_MEMORY_OBJECT", 
-     "BR_MEMORY_OBJECT_DATA", 
-     "BR_MEMORY_DRIVER", 
-     "BR_MEMORY_LEXER", 
-     "BR_MEMORY_OBJECT_LIST", 
-     "BR_MEMORY_OBJECT_LIST_ENTRY", 
-     "BR_MEMORY_ENABLED_ACTORS", 
-     "BR_MEMORY_FMT_RESULTS", 
-     "BR_MEMORY_PREPARED_MODEL", 
-     "BR_MEMORY_ORDER_TABLE", 
-     "BR_MEMORY_TOKEN_VALUE", 
-     "BR_MEMORY_TOKEN_TEMPLATE", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "", 
-     "kMem_intf_pix_copy", 
-     "kMem_intf_pal_copy", 
-     "kMem_nodes_array", 
-     "kMem_sections_array", 
-     "kMem_key_names", 
-     "kMem_columns_z", 
-     "kMem_columns_x", 
-     "kMem_non_car_list", 
-     "kMem_simp_level", 
-     "kMem_crush_data", 
-     "kMem_crush_neighbours", 
-     "kMem_temp_fs", 
-     "kMem_error_pix_copy", 
-     "kMem_error_pal_copy", 
-     "kMem_flic_pal", 
-     "kMem_flic_data", 
-     "kMem_flic_data_2", 
-     "kMem_queued_flic", 
-     "kFlic_panel_pixels", 
-     "kMem_translations", 
-     "kMem_translations_text", 
-     "kMem_cur_pal_pixels", 
-     "kMem_render_pal_pixels", 
-     "kMem_scratch_pal_pixels", 
-     "kMem_shade_table_copy", 
-     "kMem_rear_screen_pixels", 
-     "kMem_rolling_letters", 
-     "kMem_intf_copy_areas", 
-     "kMem_strip_image", 
-     "kMem_strip_image_perm", 
-     "kMem_damage_clauses", 
-     "kMem_undamaged_vertices", 
-     "kMem_race_text_chunk", 
-     "kMem_race_text_str", 
-     "kMem_oppo_array", 
-     "kMem_oppo_text_chunk", 
-     "kMem_oppo_text_str", 
-     "kMem_br_font", 
-     "kMem_br_font_wid", 
-     "kMem_br_font_enc", 
-     "kMem_br_font_glyphs", 
-     "kMem_oppo_car_spec", 
-     "kMem_misc_string", 
-     "kMem_mac_host_buffer_1", 
-     "kMem_mac_host_buffer_2", 
-     "kMem_mac_net_details", 
-     "kMem_back_pixels", 
-     "kMem_quit_vfy_pixels", 
-     "kMem_quit_vfy_pal", 
-     "kMem_net_min_messages", 
-     "kMem_net_mid_messages", 
-     "kMem_net_max_messages", 
-     "kMem_net_pid_details", 
-     "kMem_net_car_spec", 
-     "kMem_dynamic_message", 
-     "kMem_player_list_join", 
-     "kMem_player_list_leave", 
-     "kMem_oppo_new_nodes", 
-     "kMem_oppo_new_sections", 
-     "kMem_cop_car_spec", 
-     "kMem_oppo_bit_per_node", 
-     "kMem_ped_action_list", 
-     "kMem_ped_sequences", 
-     "kMem_ped_array_stain", 
-     "kMem_ped_array", 
-     "kMem_ped_instructions", 
-     "kMem_ped_new_instruc", 
-     "kMem_pipe_model_geometry", 
-     "kMem_powerup_array", 
-     "kMem_powerup_float_parms", 
-     "kMem_powerup_int_parms", 
-     "kMem_drugs_palette", 
-     "kMem_pratcam_flic_array", 
-     "kMem_pratcam_flic_data", 
-     "kMem_pratcam_sequence_array", 
-     "kMem_pratcam_pixelmap", 
-     "kMem_video_pixels", 
-     "kMem_funk_prox_array", 
-     "kMem_new_mat_id", 
-     "kMem_new_mat_id_2", 
-     "kMem_new_mat_id_3", 
-     "kMem_special_volume", 
-     "kMem_special_screen", 
-     "kMem_new_special_vol", 
-     "kMem_saved_game", 
-     "kMem_new_save_game", 
-     "kMem_stor_space_pix", 
-     "kMem_stor_space_tab", 
-     "kMem_stor_space_mat", 
-     "kMem_stor_space_mod", 
-     "kMem_stor_space_save", 
-     "kMem_funk_spec", 
-     "kMem_groove_spec", 
-     "kMem_non_car_spec", 
-     "kMem_S3_scan_name", 
-     "kMem_S3_sound_header", 
-     "kMem_S3_sample", 
-     "kMem_S3_mac_channel", 
-     "kMem_S3_mac_path", 
-     "kMem_S3_sentinel", 
-     "kMem_S3_outlet", 
-     "kMem_S3_channel", 
-     "kMem_S3_descriptor", 
-     "kMem_S3_reverse_buffer", 
-     "kMem_S3_source", 
-     "kMem_S3_DOS_SOS_channel", 
-     "kMem_S3_PC_DOS_path", 
-     "kMem_S3_DOS_SOS_patch", 
-     "kMem_S3_DOS_SOS_song_structure", 
-     "kMem_S3_DOS_SOS_song_data", 
-     "kMem_S3_Windows_95_load_WAV_file", 
-     "kMem_S3_Windows_95_create_temp_buffer_space_to_reverse_sample", 
-     "kMem_S3_Windows_95_path", 
-     "kMem_DOS_HMI_file_open", 
-     "kMem_abuse_text", 
-     "kMem_action_replay_buffer", 
-     "kMem_misc", 
-     NULL, 
- }; 
- br_resource_class gStainless_classes[118]; 
-   
- // IDA: void __cdecl SetNonFatalAllocationErrors() 
- void SetNonFatalAllocationErrors(void) { 
-     LOG_TRACE("()"); 
-   
-     gNon_fatal_allocation_errors = 1; 
- } 
-   
- // IDA: void __cdecl ResetNonFatalAllocationErrors() 
- void ResetNonFatalAllocationErrors(void) { 
-     LOG_TRACE("()"); 
-   
-     gNon_fatal_allocation_errors = 0; 
- } 
-   
- // IDA: int __cdecl AllocationErrorsAreFatal() 
- int AllocationErrorsAreFatal(void) { 
-     return gNon_fatal_allocation_errors == 0; 
- } 
-   
- // IDA: void __cdecl MAMSInitMem() 
- void MAMSInitMem(void) { 
-     //int i; // Pierre-Marie Baty -- unused variable 
-     //FILE* f; // Pierre-Marie Baty -- unused variable 
-     //tPath_name the_path; // Pierre-Marie Baty -- unused variable 
-     LOG_TRACE("()"); 
- } 
-   
- // IDA: void __usercall PrintMemoryDump(int pFlags@<EAX>, char *pTitle@<EDX>) 
- void PrintMemoryDump(int pFlags, char* pTitle) { 
-     LOG_TRACE("(%d, \"%s\")", pFlags, pTitle); 
- } 
-   
- // IDA: void* __cdecl DRStdlibAllocate(br_size_t size, br_uint_8 type) 
- void* DRStdlibAllocate(br_size_t size, br_uint_8 type) { 
-     void* p; 
-     //int i; // Pierre-Marie Baty -- unused variable 
-     char s[256]; 
-   
-     if (size == 0) { 
-         return NULL; 
-     } 
-     if (p == NULL && !gNon_fatal_allocation_errors) { 
-         PrintMemoryDump(0, "AT ERROR TIME"); 
-         sprintf(- s , "%s/%d",-  gMem_names [- type ], (int)- size );
 
-         FatalError(kFatalError_OOMCarmageddon_S, s); 
-     } 
-     return p; 
- } 
-   
- // IDA: void __cdecl DRStdlibFree(void *mem) 
- void DRStdlibFree(void* mem) { 
-     //int i; // Pierre-Marie Baty -- unused variable 
- } 
-   
- // IDA: br_size_t __cdecl DRStdlibInquire(br_uint_8 type) 
- br_size_t DRStdlibInquire(br_uint_8 type) { 
-     return 0; 
- } 
-   
- // IDA: br_uint_32 __cdecl Claim4ByteAlignment(br_uint_8 type) 
- br_uint_32 Claim4ByteAlignment(br_uint_8 type) { 
-     return 4; 
- } 
-   
- // IDA: void __cdecl InstallDRMemCalls() 
- void InstallDRMemCalls(void) { 
-     BrAllocatorSet(&gAllocator); 
- } 
-   
- // IDA: void __usercall MAMSUnlock(void **pPtr@<EAX>) 
- void MAMSUnlock(void** pPtr) { 
-     DRStdlibFree(*pPtr); 
-     *pPtr = NULL; 
- } 
-   
- // IDA: void __usercall MAMSLock(void **pPtr@<EAX>) 
- void MAMSLock(void** pPtr) { 
-     LOG_TRACE("(%p)", pPtr); 
- } 
-   
- // IDA: void __cdecl CreateStainlessClasses() 
- void CreateStainlessClasses(void) { 
-     int i; 
-   
-     for (i = 129; i < 246; i++) { 
-         gStainless_classes[i - 129].res_class = i; 
-         if (!BrResClassAdd(&gStainless_classes[i - 129])) { 
-             FatalError(kFatalError_OOMCarmageddon_S, gStainless_classes[i - 129].identifier); 
-         } 
-     } 
- } 
-   
- // IDA: void __cdecl CheckMemory() 
- void CheckMemory(void) { 
- } 
-