- #include "dbsetup.h" 
-   
- #include "CORE/FW/brbegin.h" 
- #include "CORE/FW/devsetup.h" 
- #include "CORE/FW/diag.h" 
- #include "CORE/FW/register.h" 
- #include "CORE/FW/resource.h" 
- #include "CORE/FW/resreg.h" 
- #include "CORE/STD/brstdlib.h" 
- #include "CORE/V1DB/def_mat.h" 
- #include "CORE/V1DB/def_mdl.h" 
- #include "CORE/V1DB/def_otab.h" 
- #include "CORE/V1DB/prepmap.h" 
- #include "CORE/V1DB/prepmatl.h" 
- #include "CORE/V1DB/prepmesh.h" 
- #include "CORE/V1DB/preptab.h" 
- #include "CORE/V1DB/regsupt.h" 
- #include "harness/hooks.h" 
- #include "harness/trace.h" 
- #include <stdio.h> 
- #include <string.h> 
-   
- br_resource_class v1db_resourceClasses[14] = { 
-     { 0u, "VERTICES", BR_MEMORY_VERTICES, NULL, 0u }, 
-     { 0u, "FACES", BR_MEMORY_FACES, NULL, 0u }, 
-     { 0u, "MODEL", BR_MEMORY_MODEL, NULL, 0u }, 
-     { 0u, "MATERIAL", BR_MEMORY_MATERIAL, NULL, 0u }, 
-     { 0u, "MATERIAL_INDEX", BR_MEMORY_MATERIAL_INDEX, NULL, 0u }, 
-     { 0u, "ACTOR", BR_MEMORY_ACTOR, NULL, 0u }, 
-     { 0u, "LIGHT", BR_MEMORY_LIGHT, NULL, 0u }, 
-     { 0u, "CAMERA", BR_MEMORY_CAMERA, NULL, 0u }, 
-     { 0u, "BOUNDS", BR_MEMORY_BOUNDS, NULL, 0u }, 
-     { 0u, "CLIP_PLANE", BR_MEMORY_CLIP_PLANE, NULL, 0u }, 
-     { 0u, "TRANSFORM", BR_MEMORY_TRANSFORM, NULL, 0u }, 
-     { 0u, "ENABLED_ACTORS", BR_MEMORY_ENABLED_ACTORS, NULL, 0u }, 
-     { 0u, "PREPARED_MODEL", BR_MEMORY_PREPARED_MODEL, NULL, 32u }, 
-     { 0u, "ORDER_TABLE", BR_MEMORY_ORDER_TABLE, NULL, 32u } 
- }; 
-   
- br_v1db_state v1db; 
-   
- // IDA: br_error __cdecl BrV1dbBegin() 
- br_error BrV1dbBegin(void) { 
-     //char* devstr; // Pierre-Marie Baty -- unused variable 
-     //br_size_t s; // Pierre-Marie Baty -- unused variable 
-     int i; 
-   
-     if (v1db.active) { 
-         return 4103; 
-     } 
-   
-     BrMemSet(&v1db, 0, sizeof(br_v1db_state)); 
-     v1db.active = 1; 
-     BrRegistryNew(&v1db.reg_models); 
-     BrRegistryNew(&v1db.reg_materials); 
-     BrRegistryNew(&v1db.reg_textures); 
-     BrRegistryNew(&v1db.reg_tables); 
-     v1db.res = BrResAllocate(NULL, 0, BR_MEMORY_ANCHOR); 
-   
-     for (i = 0; i < BR_ASIZE(v1db_resourceClasses); i++) { 
-         BrResClassAdd(&v1db_resourceClasses[i]); 
-     } 
-   
-     v1db.default_model = BrResAllocate(v1db.res, sizeof(br_model), BR_MEMORY_MODEL); 
-     memcpy(- v1db. default_model, &- _BrDefaultModel , sizeof(- br_model ));
 
-     v1db.default_material = SetupDefaultMaterial(); 
-     v1db.enabled_lights.max = 16; 
-     v1db.enabled_lights.type = BR_ACTOR_LIGHT; 
-     v1db.enabled_lights.name = "light"; 
-     v1db.enabled_clip_planes.max = 6; 
-     v1db.enabled_clip_planes.type = BR_ACTOR_CLIP_PLANE; 
-     v1db.enabled_clip_planes.name = "clip plane"; 
-     v1db.enabled_horizon_planes.max = 6; 
-     v1db.enabled_horizon_planes.type = BR_ACTOR_HORIZONTAL_PLANE; 
-     v1db.enabled_horizon_planes.name = "horizon plane"; 
-     return 0; 
- } 
-   
- // IDA: br_error __cdecl BrV1dbEnd() 
- br_error BrV1dbEnd(void) { 
-     //br_device* dev; // Pierre-Marie Baty -- unused variable 
-     LOG_TRACE("()"); 
-   
-     if (v1db.active == 0) { 
-         return 4102; 
-     } 
-     v1db.active = 0; 
-     BrResFree(v1db.res); 
-     BrMemSet(&v1db, 0, sizeof(v1db)); 
-     return 0; 
- } 
-   
- // IDA: br_uint_32 __cdecl updateTable(br_pixelmap *item, void *arg) 
- br_uint_32 updateTable(br_pixelmap* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrTableUpdate(item, BR_TABU_ALL); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl updateMap(br_pixelmap *item, void *arg) 
- br_uint_32 updateMap(br_pixelmap* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrMapUpdate(item, BR_MAPU_ALL); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl updateMaterial(br_material *item, void *arg) 
- br_uint_32 updateMaterial(br_material* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrMaterialUpdate(item, BR_MATU_ALL); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl updateModel(br_model *item, void *arg) 
- br_uint_32 updateModel(br_model* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-     NOT_IMPLEMENTED(); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl clearTable(br_pixelmap *item, void *arg) 
- br_uint_32 clearTable(br_pixelmap* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrBufferClear(item); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl clearMap(br_pixelmap *item, void *arg) 
- br_uint_32 clearMap(br_pixelmap* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrBufferClear(item); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl clearMaterial(br_material *item, void *arg) 
- br_uint_32 clearMaterial(br_material* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrMaterialClear(item); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_uint_32 __cdecl clearModel(br_model *item, void *arg) 
- br_uint_32 clearModel(br_model* item, void* arg) { 
-     LOG_TRACE("(%p, %p)", item, arg); 
-   
-     BrModelClear(item); 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: br_error __cdecl BrV1dbRendererBegin(br_device_pixelmap *destination, br_renderer *renderer) 
- br_error BrV1dbRendererBegin(br_device_pixelmap* destination, br_renderer* renderer) { 
-     br_renderer_facility* renderer_facility; 
-     br_error r; 
-     br_token_value tv[2]; 
-     LOG_TRACE("(%p, %p)", destination, renderer); 
-   
-     Harness_Hook_BrV1dbRendererBegin(&v1db); 
-     return 0; 
-   
-     // FIXME: use this logic once the clouds clear up 
-     renderer_facility = NULL; 
-     tv[0].t = 0; 
-     tv[0].v.u32 = 0; 
-     tv[1].t = 0; 
-     tv[1].v.u32 = 0; 
-   
-     if (renderer == NULL) { 
-         r = BrRendererFacilityFind(&renderer_facility, destination, BRT_FLOAT); 
-         if (r != 0) { 
-             return r; 
-         } 
-         if (destination != NULL) { 
-             tv[0].t = BRT_DESTINATION_O; 
-             tv[0].v.o = (br_object*)destination; 
-         } 
-         r = (*(br_renderer_facility_dispatch**)renderer_facility)->_rendererNew(renderer_facility, &renderer, tv); 
-         if (r != 0) { 
-             return r; 
-         } 
-     } 
-     v1db.renderer = renderer; 
-     r = BrGeometryFormatFind(&v1db.format_model, renderer, renderer_facility, BRT_FLOAT, BRT_GEOMETRY_V1_MODEL); 
-     if (r != 0) { 
-         return r; 
-     } 
-     r = BrGeometryFormatFind(&v1db.format_buckets, renderer, renderer_facility, BRT_FLOAT, BRT_GEOMETRY_V1_BUCKETS); 
-     if (r != 0) { 
-         return r; 
-     } 
-     r = BrGeometryFormatFind((br_geometry**)&v1db.format_lighting, renderer, renderer_facility, BRT_FLOAT, BRT_GEOMETRY_LIGHTING); 
-     if (r != 0) { 
-         return r; 
-     } 
-     BrModelUpdate(v1db.default_model, BR_MODU_ALL); 
-     v1db.default_order_table = &_BrDefaultOrderTable; 
-     v1db.primary_order_table = NULL; 
-     BrTableEnum(NULL, updateTable, NULL); 
-     BrMapEnum(NULL, updateMap, NULL); 
-     BrMaterialEnum(NULL, updateMaterial, NULL); 
-     BrMaterialUpdate(v1db.default_material, BR_MATU_ALL); 
-     BrMaterialUpdate(v1db.default_material, BR_MATU_ALL); 
-     return 0; 
- } 
-   
- // IDA: br_renderer* __cdecl BrV1dbRendererQuery() 
- br_renderer* BrV1dbRendererQuery(void) { 
-     LOG_TRACE("()"); 
-   
-     return v1db.renderer; 
- } 
-   
- // IDA: br_error __cdecl BrV1dbRendererEnd() 
- br_error BrV1dbRendererEnd(void) { 
-     LOG_TRACE("()"); 
-   
-     BrTableEnum(NULL, clearTable, NULL); 
-     BrMapEnum(NULL, clearMap, NULL); 
-     BrMaterialEnum(NULL, clearMaterial, NULL); 
-     BrModelEnum(NULL, clearModel, NULL); 
-     BrMaterialClear(v1db.default_material); 
-     BrModelClear(v1db.default_model); 
-     v1db.default_order_table = NULL; 
-     v1db.default_render_data = NULL; 
-     v1db.primary_order_table = NULL; 
-     v1db.format_model = NULL; 
-     v1db.renderer->dispatch->_free((br_object*)v1db.renderer); 
-     v1db.renderer = NULL; 
-     return 0; // Pierre-Marie Baty -- function must return a value 
- } 
-   
- // IDA: void __cdecl BrZbBegin(br_uint_8 colour_type, br_uint_8 depth_type) 
- void BrZbBegin(br_uint_8 colour_type, br_uint_8 depth_type) { 
-     LOG_TRACE("(%d, %d)", colour_type, depth_type); 
-   
-     if (v1db.zs_active == 0 && v1db.zb_active == 0) { 
-         if (BrV1dbRendererBegin((br_device_pixelmap*)BrDevLastBeginQuery(), NULL) != 0) { 
-             BrFailure("Failed to load renderer\n"); 
-         } 
-     } 
-     v1db.zb_active = 1; 
- } 
-   
- // IDA: void __cdecl BrZsBegin(br_uint_8 colour_type, void *primitive, br_uint_32 size) 
- void BrZsBegin(br_uint_8 colour_type, void* primitive, br_uint_32 size) { 
-     LOG_TRACE("(%d, %p, %d)", colour_type, primitive, size); 
-   
-     if (v1db.zs_active == 0 && v1db.zb_active == 0) { 
-         if (BrV1dbRendererBegin((br_device_pixelmap*)BrDevLastBeginQuery(), NULL) != 0) { 
-             BrFailure("Failed to load renderer\n"); 
-         } 
-     } 
-     v1db.zs_active = 1; 
-     v1db.heap.base = primitive; 
-     v1db.heap.size = size; 
- } 
-   
- // IDA: void __cdecl BrZbEnd() 
- void BrZbEnd(void) { 
-     LOG_TRACE("()"); 
-   
-     v1db.zb_active = 0; 
-     if (v1db.zs_active == 0 && v1db.renderer != NULL) { 
-         BrV1dbRendererEnd(); 
-     } 
- } 
-   
- // IDA: void __cdecl BrZsEnd() 
- void BrZsEnd(void) { 
-     LOG_TRACE("()"); 
-   
-     v1db.zs_active = 0; 
-     if (v1db.zb_active == 0 && v1db.renderer != NULL) { 
-         BrV1dbRendererEnd(); 
-     } 
- } 
-   
- // IDA: void __cdecl BrV1dbBeginWrapper_Float() 
- void BrV1dbBeginWrapper_Float(void) { 
-     BrBegin(); 
-     BrV1dbBegin(); 
- } 
-   
- // IDA: void __cdecl BrV1dbEndWrapper() 
- void BrV1dbEndWrapper(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-