102#define WORLD_TEXTURE_MEMORY_SIZE 0x20000
103#define BATTLE_TEXTURE_MEMORY_SIZE 0x8000
592 1.000000, 0.000000, 0.000000, 0.000000,
593 0.000000, 1.000000, 0.000000, 0.000000,
594 0.000000, 0.000000, 1.000000, 0.000000,
595 0.000000, 0.000000, 0.000000, 1.000000
605#define DEPTH_EXPONENT_MASK 0xE000
606#define DEPTH_MANTISSA_MASK 0x1FFC
607#define DEPTH_DZ_MASK 0x0003
609#define DEPTH_EXPONENT_SHIFT 13
610#define DEPTH_MANTISSA_SHIFT 2
611#define DEPTH_DZ_SHIFT 0
634#define MAX_VIEWPORT_DEPTH (2 * 32 * ((G_MAXZ / 2)))
1392 modelNode =
model->modelNode;
1394 if (
model->textureID != 0) {
1408 renderMode =
model->renderMode;
1437 switch ((
u32)(
model->customGfxIndex >> 4)) {
1463 if (
model->groupData->lightingGroup !=
NULL) {
1464 switch (
model->groupData->numLights) {
1499 s32 shift =
prop->data.s;
1505 (shift >> 12) & 0xF, (shift >> 16) & 0xF,
1537 if (auxCombineType >= 3) {
1558 switch (renderMode) {
1625 switch (renderMode) {
1689 switch (renderMode) {
1760 switch (renderMode) {
1824 switch (renderMode) {
1900 switch (renderMode) {
1949 customGfxIndex = (
model->customGfxIndex & 0xF) * 2;
2060 (*gCurrentModelTreeNodeInfo)[
TreeIterPos].textureID = 0;
2074 while (header->
mainW /
d >= 16 && header->
mainH /
d > 0) {
2083 while (header->
mainW /
d >= 8 && header->
mainH /
d > 0) {
2091 while (header->
mainW /
d >= 4 && header->
mainH /
d > 0) {
2100 while (header->
mainW /
d >= 2 && header->
mainH /
d > 0) {
2158 (*gCurrentModelTreeNodeInfo)[
TreeIterPos].textureID = 0;
2189 if (
strcmp(header->
name,
"end_of_textures") == 0) {
2204 while (header->
mainW /
d >= 16 && header->
mainH /
d > 0) {
2213 while (header->
mainW /
d >= 8 && header->
mainH /
d > 0) {
2221 while (header->
mainW /
d >= 4 && header->
mainH /
d > 0) {
2230 while (header->
mainW /
d >= 2 && header->
mainH /
d > 0) {
2286 s32 numProperties =
node->numProperties;
2290 for (i = 0; i < numProperties; i++, propertyList++) {
2291 if (propertyList->
key == key) {
2292 return propertyList;
2302 s32 numChildren =
model->groupData->numChildren;
2304 if (numChildren != 0) {
2307 for (i = 0; i < numChildren; i++) {
2350 s32 numChildren =
model->groupData->numChildren;
2352 if (numChildren != 0) {
2356 for (i = 0; i < numChildren; i++) {
2394 (*gCurrentModels)[i] = 0;
2398 (*gCurrentTransformGroups)[i] = 0;
2402 (*gCurrentCustomModelGfxPtr)[i] = 0;
2403 (*gCurrentCustomModelGfxBuildersPtr)[i] = 0;
2409 (*gCurrentModelTreeNodeInfo)[i].modelIndex = -1;
2410 (*gCurrentModelTreeNodeInfo)[i].treeDepth = 0;
2411 (*gCurrentModelTreeNodeInfo)[i].textureID = 0;
2464 bb->halfSizeX = (
bb->maxX -
bb->minX) * 0.5;
2465 bb->halfSizeY = (
bb->maxY -
bb->minY) * 0.5;
2466 bb->halfSizeZ = (
bb->maxZ -
bb->minZ) * 0.5;
2492 (
bb->minX +
bb->maxX) * 0.5f,
2494 (
bb->minZ +
bb->maxZ) * 0.5f,
2511 model->modelNode =
bp->mdlNode;
2512 model->groupData =
bp->groupData;
2513 model->matrixFreshness = 0;
2518 model->texPannerID =
prop->data.s & 0xF;
2542 model->textureVariation = 0;
2560 x = (
bb->minX +
bb->maxX) * 0.5f;
2561 y = (
bb->minY +
bb->maxY) * 0.5f;
2562 z = (
bb->minZ +
bb->maxZ) * 0.5f;
2571 model->center.x = x;
2572 model->center.y = y;
2573 model->center.z = z;
2576 x =
bb->maxX -
bb->minX;
2577 y =
bb->maxY -
bb->minY;
2578 z =
bb->maxZ -
bb->minZ;
2579 bb->halfSizeX = x * 0.5;
2580 bb->halfSizeY = y * 0.5;
2581 bb->halfSizeZ = z * 0.5;
2583 if (
model->bakedMtx ==
NULL && x < 100.0f && y < 100.0f && z < 100.0f) {
2601 model = (*gCurrentModels)[i];
2604 if (
model->matrixFreshness != 0) {
2608 if (
model->matrixFreshness == 0) {
2623 model->matrixFreshness = 2;
2638 mX = (
bb->minX +
bb->maxX) * 0.5f;
2639 mY = (
bb->minY +
bb->maxY) * 0.5f;
2640 mZ = (
bb->minZ +
bb->maxZ) * 0.5f;
2656 mtg = (*gCurrentTransformGroups)[i];
2659 if (
mtg->matrixFreshness != 0) {
2662 mtg->matrixFreshness--;
2663 if (
mtg->matrixFreshness == 0) {
2665 mtg->savedMtx = *
mtg->finalMtx;
2673 mtg->finalMtx = &
mtg->savedMtx;
2678 mtg->matrixFreshness = 2;
2693 mtgX = (
bb->minX +
bb->maxX) * 0.5f;
2694 mtgY = (
bb->minY +
bb->maxY) * 0.5f;
2695 mtgZ = (
bb->minZ +
bb->maxZ) * 0.5f;
2718 f32 centerX, centerY, centerZ;
2731#define TEST_POINT_VISIBILITY \
2732 outX = (m00 * xComp) + (m10 * yComp) + (m20 * zComp) + m30; \
2733 outY = (m01 * xComp) + (m11 * yComp) + (m21 * zComp) + m31; \
2734 outZ = (m02 * xComp) + (m12 * yComp) + (m22 * zComp) + m32; \
2735 outW = (m03 * xComp) + (m13 * yComp) + (m23 * zComp) + m33; \
2736 if (outW == 0.0f) { \
2740 outW = 1.0f / outW; \
2741 xComp = outX * outW; \
2742 yComp = outY * outW; \
2743 zComp = outZ * outW; \
2744 if (zComp > -1.0f && xComp >= -1.0f && xComp <= 1.0f && yComp >= -1.0f && yComp <= 1.0f) { \
2767 model = (*gCurrentModels)[i];
2771 if (
model->flags == 0) {
2788 centerY =
model->center.y;
2789 centerZ =
model->center.z;
2822 if (
bbx != 0.0f &&
bby != 0.0f) {
2836 if (
bbx != 0.0f &&
bbz != 0.0f) {
2843 if (
bby != 0.0f &&
bbz != 0.0f) {
2850 if (
bbx != 0.0f &&
bby != 0.0f &&
bbz != 0.0f) {
2930 for (i =
model->modelID - 1; i >= 0; i--) {
2948 if (numChildren != 0) {
2951 for (i = 0; i < numChildren; i++,
TreeIterPos++) {
3007 if (
node->groupData->transformMatrix !=
NULL) {
3011 numChildren =
node->groupData->numChildren;
3012 if (numChildren != 0) {
3013 for (i = 0; i < numChildren; i++) {
3018 if (
node->groupData->transformMatrix !=
NULL) {
3058 s32 mainWrapW, mainWrapH;
3059 s32 auxWrapW, auxWrapH;
3105 if (palette !=
NULL) {
3112 if (palette !=
NULL || auxPalette !=
NULL) {
3114 if (palette !=
NULL) {
3121 if (auxPalette !=
NULL) {
3154 switch (mainBitDepth) {
3179 switch (mainBitDepth) {
3231 switch (mainBitDepth) {
3257 switch (mainBitDepth) {
3284 switch (auxBitDepth) {
3344 if (
model->groupData !=
NULL &&
model->groupData->numChildren != 0) {
3347 if (
model->groupData->transformMatrix !=
NULL) {
3362 for (i = 0; i <
model->groupData->numChildren; i++) {
3368 (*gCurrentModelTreeNodeInfo)[
TreeIterPos].modelIndex = -1;
3369 (*gCurrentModelTreeNodeInfo)[
TreeIterPos].treeDepth = treeDepth;
3385 (*gCurrentModelTreeNodeInfo)[i].modelIndex = -1;
3386 (*gCurrentModelTreeNodeInfo)[i].treeDepth = treeDepth + 1;
3392 (*gCurrentModelTreeNodeInfo)[
TreeIterPos].treeDepth = treeDepth;
3400 u8 modelIndex = (*gCurrentModelTreeNodeInfo)[treeIndex].modelIndex;
3402 if (modelIndex != (
u8)-1) {
3437 *centerX =
model->center.x;
3438 *centerY =
model->center.y;
3439 *centerZ =
model->center.z;
3444 *sizeX =
bb->halfSizeX;
3445 *sizeY =
bb->halfSizeY;
3446 *sizeZ =
bb->halfSizeZ;
3448 *sizeX = *sizeY = *sizeZ = 0.0f;
3481 numChildren =
node->groupData->numChildren;
3482 if (numChildren != 0) {
3483 for (i = 0; i < numChildren; i++) {
3537 newMtg->groupModelID = modelID;
3540 newMtg->matrixFreshness = 0;
3568 x = (
bb->minX +
bb->maxX) * 0.5f;
3569 y = (
bb->minY +
bb->maxY) * 0.5f;
3570 z = (
bb->minZ +
bb->maxZ) * 0.5f;
3592 for (i =
group->minChildModelIndex; i <=
group->maxChildModelIndex; i++) {
3609 for (i =
group->minChildModelIndex; i <=
group->maxChildModelIndex; i++) {
3639 s32 modelIndex = (*gCurrentModelTreeNodeInfo)[treeIndex].modelIndex;
3646 s32 treeDepth = (*gCurrentModelTreeNodeInfo)[treeIndex].treeDepth;
3647 for (i = treeIndex - 1; i >= 0; i--) {
3652 siblingIndex = (*gCurrentModelTreeNodeInfo)[i].modelIndex;
3698 s32 modelIndex = (*gCurrentModelTreeNodeInfo)[groupModelID].modelIndex;
3705 s32 treeDepth = (*gCurrentModelTreeNodeInfo)[groupModelID].treeDepth;
3706 for (i = groupModelID - 1; i >= 0; i--) {
3711 siblingIndex = (*gCurrentModelTreeNodeInfo)[i].modelIndex;
3724 if (customGfxIndex < 0) {
3812 model->texPannerID = texPannerID;
3832 if (customGfxIndex == -1) {
3833 customGfxIndex =
model->customGfxIndex & 0xF;
3840 model->customGfxIndex = (customGfxIndex & 0xF) + ((
tintType & 0xF) << 4);
3844 (*gCurrentCustomModelGfxPtr)[customGfxIndex * 2] =
pre;
3845 (*gCurrentCustomModelGfxPtr)[customGfxIndex * 2 + 1] =
post;
3849 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2] =
pre;
3850 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2 + 1] =
post;
3863 preFunc = (*gCurrentCustomModelGfxBuildersPtr)[i * 2];
3866 (*gCurrentCustomModelGfxPtr)[i * 2] =
gMainGfxPos;
3871 postFunc = (*gCurrentCustomModelGfxBuildersPtr)[i * 2 + 1];
3873 (*gCurrentCustomModelGfxPtr)[i * 2 + 1] =
gMainGfxPos;
3886 s32*
mtxIt = (s32*)mtx;
3989 if (baseAddr !=
NULL) {
4034 for (i = 0; i < num *
sizeof(*src); i++) {
4035 ((
u8*)dest)[i] = ((
u8*)
src)[i];
4071 copy->numVertices = numVertices;
4087 Gfx* gfxCopy =
mlvc->gfxCopy[selector];
4141 dlist =
model->modelNode->displayData->displayList;
4144 cmd = dlist->words.w0 >> 0x18;
4188 f32 f0b,
f4a,
f2b,
f8a,
f6a,
f0c,
f8b,
f2c,
f12a,
f2d,
f4b,
f0d,
f6b,
f0e;
4214 f32 f0b,
f4a,
f2b,
f8a,
f6a,
f0c,
f8b,
f2c,
f12a,
f2d,
f4b,
f0d,
f6b,
f0e;
4233 for (i = 0; i <
sp18; i++) {
4248 }
else if (
tc0 > 0.0f) {
4254 }
else if (
tc1 > 0.0f) {
4317 if (depthQueryID < 0) {
4427 if (depthQueryID < 0) {
4510 offset = (offset >> 6) << 6;
4526 model = (*modelList)[i];
4563 ret->appendGfxArg =
task->appendGfxArg;
4564 ret->appendGfx =
task->appendGfx;
4577 void (*appendGfx)(
void*);
4589#define LESS(i, j) taskList[sorted[i]].dist < taskList[sorted[j]].dist
4590#define SWAP(i, j) tmp = sorted[i], sorted[i] = sorted[j], sorted[j] = tmp
4596#define LESS(i, j) taskList[sorted[i]].dist > taskList[sorted[j]].dist
4621 appendGfx(
task->appendGfxArg);
4638 appendGfx(
task->appendGfxArg);
BSS s32 PopupMenu_SelectedIndex
#define queue_render_task
#define mdl_draw_hidden_panel_surface
#define mdl_get_shroud_tint_params
#define ASSERT(condition)
@ TRANSFORM_GROUP_FLAG_INACTIVE
@ TRANSFORM_GROUP_FLAG_HIDDEN
@ TRANSFORM_GROUP_FLAG_VALID
@ TRANSFORM_GROUP_FLAG_MATRIX_DIRTY
@ TRANSFORM_GROUP_FLAG_IGNORE_MATRIX
@ MODEL_FLAG_DO_BOUNDS_CULLING
@ MODEL_FLAG_IGNORE_MATRIX
@ MODEL_FLAG_HAS_LOCAL_VERTEX_COPY
@ MODEL_FLAG_USES_CUSTOM_GFX
@ MODEL_FLAG_TRANSFORM_GROUP_MEMBER
@ MODEL_FLAG_MATRIX_DIRTY
@ MODEL_FLAG_HAS_TEX_PANNER
@ RENDER_TASK_FLAG_REFLECT_FLOOR
@ RENDER_TASK_FLAG_ENABLED
@ MODEL_GROUP_OTHERS_VISIBLE
@ RENDER_MODE_ALPHATEST_ONESIDED
@ RENDER_MODE_SURFACE_OPA_NO_ZB
@ RENDER_MODE_SURFACE_XLU_LAYER3
@ RENDER_MODE_DECAL_XLU_NO_AA
@ RENDER_MODE_SURFACE_XLU_LAYER2
@ RENDER_MODE_SURFACE_XLU_NO_AA
@ RENDER_MODE_SURF_SOLID_AA_ZB_LAYER0
@ RENDER_MODE_INTERSECTING_XLU
@ RENDER_MODE_PASS_THROUGH
@ RENDER_MODE_SURFACE_OPA_NO_AA
@ RENDER_MODE_SURFACE_XLU_NO_ZB
@ RENDER_MODE_DECAL_OPA_NO_AA
@ RENDER_MODE_SURFACE_XLU_NO_ZB_BEHIND
@ RENDER_MODE_SURFACE_OPA_NO_ZB_BEHIND
@ RENDER_MODE_SURFACE_XLU_ZB_ZUPD
@ RENDER_MODE_DECAL_XLU_AHEAD
@ RENDER_MODE_ALPHATEST_NO_ZB_BEHIND
@ RENDER_MODE_INTERSECTING_OPA
@ RENDER_MODE_SURFACE_OPA
@ RENDER_MODE_CLOUD_NO_ZB
@ RENDER_MODES_LAST_OPAQUE
@ RENDER_MODE_ALPHATEST_NO_ZB
@ RENDER_MODE_SURFACE_XLU_LAYER1
@ RENDER_MODE_SURFACE_XLU_AA_ZB_ZUPD
@ RENDER_MODE_CLOUD_NO_ZCMP
@ GLOBAL_OVERRIDES_ENABLE_FLOOR_REFLECTION
u32 dma_copy(Addr romStart, Addr romEnd, void *vramDest)
void * heap_malloc(s32 size)
#define gDPScrollMultiTile(pkt, timg, tmem, rtile, fmt, siz, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, shifts, shiftt, scrolls, scrollt)
#define gDPScrollTextureBlockHalfHeight_4b(pkt, timg, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt, scrolls, scrollt, shifts2, shiftt2)
#define gDPScrollTextureBlockHalfHeight(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt, scrolls, scrollt, shifts2, shiftt2)
#define gDPScrollMultiTile_4b(pkt, timg, tmem, rtile, fmt, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, shifts, shiftt, scrolls, scrollt)
void osSyncPrintf(const char *fmt,...)
Gfx Gfx_RM3_SURFACE_OPA[]
#define DEPTH_MANTISSA_SHIFT
Gfx * mdl_get_copied_gfx(s32 copyIndex)
void func_8011B1D8(ModelNode *node)
void render_transform_group(void *group)
ModelCustomGfxList * gCurrentCustomModelGfxPtr
void clone_model(u16 srcModelID, u16 newModelID)
void mdl_set_shroud_tint_params(u8 r, u8 g, u8 b, u8 a)
Gfx Gfx_RM2_INTERSECTING_OPA_NO_AA[]
BSS s32 texPannerMainV[MAX_TEX_PANNERS]
s32 is_model_center_visible(u16 modelID, s32 depthQueryID, f32 *screenX, f32 *screenY)
BSS s8 bBackgroundTintMode
void enable_transform_group(u16 modelID)
void mdl_local_gfx_copy_vertices(Vtx *src, s32 num, Vtx *dest)
s32 get_transform_group_index(s32 modelID)
Gfx Gfx_RM2_DECAL_XLU_NO_AA[]
Gfx Gfx_RM3_SURFACE_XLU_NO_ZB[]
Gfx Gfx_RM2_SURFACE_XLU_NO_ZB[]
s32 get_model_list_index_from_tree_index(s32 treeIndex)
Gfx Gfx_RM2_INTERSECTING_XLU[]
Gfx Gfx_RM2_INTERSECTING_OPA[]
void render_transform_group_node(ModelNode *node)
BSS ModelTreeInfoList wModelTreeNodeInfo
ModelNode ** gCurrentModelTreeRoot
Gfx Gfx_RM1_CLOUD_NO_ZB[]
void func_80117D00(Model *model)
void init_model_data(void)
@ RENDER_CLASS_1CYC_SHROUD
@ RENDER_CLASS_2CYC_DEPTH
@ RENDER_CLASS_1CYC_DEPTH
@ RENDER_CLASS_2CYC_SHROUD
@ RENDER_CLASS_FOG_SHROUD
BSS s32 texPannerAuxV[MAX_TEX_PANNERS]
void clear_render_tasks(void)
Gfx Gfx_RM3_INTERSECTING_OPA_NO_AA[]
void clear_model_data(void)
Gfx Gfx_RM1_PASS_THROUGH[]
Gfx Gfx_RM1_INTERSECTING_OPA_NO_AA[]
BSS s8 wBackgroundTintMode
#define BATTLE_TEXTURE_MEMORY_SIZE
void mdl_project_tex_coords(s32 modelID, Gfx *outGfx, Matrix4f arg2, Vtx *arg3)
void set_tex_panner(Model *model, s32 texPannerID)
void mdl_reset_transform_flags(void)
Gfx Gfx_RM1_SURFACE_XLU[]
void set_world_fog_color(s32 r, s32 g, s32 b, s32 a)
BSS ModelNode * bModelTreeRoot
Gfx Gfx_RM2_SURFACE_OPA_NO_ZB[]
void mdl_get_vertex_count(Gfx *gfx, s32 *numVertices, Vtx **baseVtx, s32 *gfxCount, Vtx *baseAddr)
Gfx Gfx_RM2_DECAL_OPA_NO_AA[]
Gfx Gfx_RM1_SURFACE_XLU_AA_ZB_ZUPD[]
TextureHandle TextureHandles[128]
void mdl_calculate_model_sizes(void)
Model * get_model_from_list_index(s32 listIndex)
#define WORLD_TEXTURE_MEMORY_SIZE
Gfx Gfx_RM3_PASS_THROUGH[]
#define DEPTH_MANTISSA_MASK
Gfx Gfx_RM2_SURFACE_XLU[]
Gfx Gfx_RM3_SURFACE_OPA_NO_ZB[]
BSS ModelTransformGroupList bTransformGroups
Gfx Gfx_RM2_SURFACE_XLU_NO_AA[]
Gfx Gfx_RM3_DECAL_OPA_NO_AA[]
void disable_world_fog(void)
BSS ModelTreeInfoList bModelTreeNodeInfo
Gfx Gfx_RM2_ALPHATEST_NO_ZB[]
Gfx Gfx_RM2_SURFACE_OPA[]
BSS ModelLocalVertexCopyList bModelLocalVtxBuffers
void mdl_set_all_tint_type(s32 tintType)
void load_data_for_models(ModelNode *rootModel, s32 texturesOffset, s32 size)
void load_next_model_textures(ModelNode *model, s32 romOffset, s32 texSize)
void load_model_transforms(ModelNode *model, ModelNode *parent, Matrix4f mdlTxMtx, s32 treeDepth)
BSS FogSettings bFogSettings
s32 is_world_fog_enabled(void)
BSS s32 RenderTaskCount[3]
void set_custom_gfx_builders(s32 customGfxIndex, ModelCustomGfxBuilderFunc pre, ModelCustomGfxBuilderFunc post)
BSS ModelNode * wModelTreeRoot
void mdl_get_remap_tint_params(u8 *primR, u8 *primG, u8 *primB, u8 *envR, u8 *envG, u8 *envB)
void disable_transform_group(u16 modelID)
BSS ModelNode * mtg_FoundModelNode
Gfx SolidCombineModes[][5]
@ TEX_COMBINE_AUX_SHARED_1
@ TEX_COMBINE_MAIN_ONLY_2
@ TEX_COMBINE_MAIN_ONLY_0
@ TEX_COMBINE_MAIN_ONLY_1
@ TEX_COMBINE_AUX_SHARED_0
@ TEX_COMBINE_AUX_SHARED_2
u8 * gBackgroundTintModePtr
void mdl_make_transform_group(u16 modelID)
void load_texture_variants(u32 romOffset, s32 textureID, s32 baseOffset, s32 size)
void appendGfx_model_group(void *model)
void set_custom_gfx(s32 customGfxIndex, Gfx *pre, Gfx *post)
void * mdl_get_next_texture_address(s32 size)
Gfx Gfx_RM3_ALPHATEST_ONESIDED[]
Gfx Gfx_RM2_PASS_THROUGH[]
BSS s32 RenderTaskListIdx
BSS ModelCustomGfxBuilderList bCustomModelGfxBuilders
Gfx Gfx_RM1_SURFACE_OPA_NO_ZB[]
s32 mdl_get_child_count(ModelNode *model)
void build_custom_gfx(void)
BSS RenderTask * RenderTaskLists[3]
DepthFloatFactors DepthFloatLookupTable[]
void load_texture_by_name(ModelNodeProperty *propertyName, s32 romOffset, s32 size)
BSS s32 texPannerAuxU[MAX_TEX_PANNERS]
ModelCustomGfxBuilderList * gCurrentCustomModelGfxBuildersPtr
void enable_world_fog(void)
Gfx Gfx_RM2_SURFACE_OPA_NO_AA[]
Gfx Gfx_RM3_SURFACE_OPA_NO_AA[]
void mdl_group_set_custom_gfx(u16 groupModelID, s32 customGfxIndex, s32 tintType, b32 invertSelection)
void mdl_set_remap_tint_params(u8 maxR, u8 maxG, u8 maxB, u8 minR, u8 minG, u8 minB)
ModelTransformGroupList * gCurrentTransformGroups
void set_mdl_custom_gfx_set(Model *model, s32 customGfxIndex, u32 tintType)
Gfx Gfx_RM2_SURFACE_XLU_AA_ZB_ZUPD[]
s32 is_identity_fixed_mtx(Mtx *mtx)
void mdl_get_depth_tint_params(u8 *primR, u8 *primG, u8 *primB, u8 *primA, u8 *fogR, u8 *fogG, u8 *fogB, s32 *fogStart, s32 *fogEnd)
Gfx Gfx_RM3_SURFACE_XLU_NO_AA[]
void set_aux_pan_v(s32 texPannerID, s32 value)
void mdl_make_local_vertex_copy(s32 copyIndex, u16 modelID, s32 isMakingCopy)
void set_world_fog_dist(s32 start, s32 end)
Addr BattleEntityHeapBottom
void set_main_pan_u(s32 texPannerID, s32 value)
Gfx Gfx_RM1_INTERSECTING_XLU[]
Gfx Gfx_RM2_CLOUD_NO_ZB[]
Gfx Gfx_RM1_SURFACE_OPA[]
Gfx Gfx_RM3_DECAL_XLU_NO_AA[]
Gfx Gfx_RM3_INTERSECTING_XLU[]
BSS FogSettings * gFogSettings
void mdl_create_model(ModelBlueprint *bp, s32 unused)
Gfx Gfx_RM3_INTERSECTING_OPA[]
Gfx Gfx_RM1_SURFACE_XLU_ZB_ZUPD[]
ModelTreeInfoList * gCurrentModelTreeNodeInfo
Gfx Gfx_RM1_DECAL_OPA_NO_AA[]
void mdl_load_all_textures(ModelNode *rootModel, s32 romOffset, s32 size)
void set_aux_pan_u(s32 texPannerID, s32 value)
BSS ModelCustomGfxList bCustomModelGfx
#define MAX_VIEWPORT_DEPTH
Gfx Gfx_RM2_ALPHATEST_ONESIDED[]
void mdl_local_gfx_update_vtx_pointers(Gfx *nodeDlist, Vtx *baseVtx, Gfx *arg2, Vtx *arg3)
OPTIMIZE_OFAST void execute_render_tasks(void)
Gfx AlphaTestCombineModes[][5]
Gfx Gfx_RM1_ALPHATEST_ONESIDED[]
BSS void * TextureHeapPos
void get_world_fog_color(s32 *r, s32 *g, s32 *b, s32 *a)
BSS FogSettings wFogSettings
BSS ModelLocalVertexCopyList wModelLocalVtxBuffers
ModelList * gCurrentModels
void make_texture_gfx(TextureHeader *, Gfx **, IMG_PTR raster, PAL_PTR palette, IMG_PTR auxRaster, PAL_PTR auxPalette, u8, u8, u16, u16)
void set_main_pan_v(s32 texPannerID, s32 value)
Gfx Gfx_RM1_SURFACE_XLU_NO_ZB[]
void load_texture_impl(u32 romOffset, TextureHandle *handle, TextureHeader *header, s32 mainSize, s32 mainPalSize, s32 auxSize, s32 auxPalSize)
BSS u16 mtg_SearchModelID
BSS ModelCustomGfxBuilderList wCustomModelGfxBuilders
Gfx Gfx_RM3_SURFACE_XLU_AA_ZB_ZUPD[]
Gfx Gfx_RM1_ALPHATEST_NO_ZB[]
ModelNodeProperty * get_model_property(ModelNode *node, ModelPropertyKeys key)
void mdl_get_copied_vertices(s32 copyIndex, Vtx **firstVertex, Vtx **copiedVertices, s32 *numCopied)
void appendGfx_model(void *data)
Gfx Gfx_RM1_SURFACE_XLU_NO_AA[]
void get_world_fog_distance(s32 *start, s32 *end)
void mdl_update_transform_matrices(void)
Gfx Gfx_RM1_CLOUD_NO_ZCMP[]
BSS ModelTransformGroupList wTransformGroups
BSS ModelLocalVertexCopyList * gCurrentModelLocalVtxBuffers
BSS s32 texPannerMainU[MAX_TEX_PANNERS]
#define DEPTH_EXPONENT_SHIFT
s32 RenderTaskBasePriorities[]
BSS u16 DepthCopyBuffer[16]
BSS ModelCustomGfxList wCustomModelGfx
Gfx Gfx_RM1_DECAL_XLU_NO_AA[]
void mdl_group_set_visibility(u16 treeIndex, s32 flags, s32 mode)
Gfx Gfx_RM3_ALPHATEST_NO_ZB[]
Gfx Gfx_RM1_INTERSECTING_OPA[]
Gfx Gfx_RM3_SURFACE_XLU[]
void get_model_center_and_size(u16 modelID, f32 *centerX, f32 *centerY, f32 *centerZ, f32 *sizeX, f32 *sizeY, f32 *sizeZ)
ModelTransformGroup * get_transform_group(s32 index)
#define TEST_POINT_VISIBILITY
Gfx Gfx_RM1_SURFACE_OPA_NO_AA[]
Gfx Gfx_RM3_CLOUD_NO_ZB[]
void mdl_set_depth_tint_params(u8 primR, u8 primG, u8 primB, u8 primA, u8 fogR, u8 fogG, u8 fogB, s32 fogStart, s32 fogEnd)
ModelLocalVertexCopy * ModelLocalVertexCopyList[16]
ModelCustomGfxBuilderFunc ModelCustomGfxBuilderList[32]
void(* ModelCustomGfxBuilderFunc)(s32 index)
struct ModelNode ** childList
ModelTransformGroup * ModelTransformGroupList[4]
ModelDisplayData * displayData
@ EXTRA_TILE_AUX_INDEPENDENT
@ EXTRA_TILE_AUX_SAME_AS_MAIN
ModelTreeInfo ModelTreeInfoList[0x200]
struct ModelGroupData * groupData
Gfx * ModelCustomGfxList[32]
@ MODEL_PROP_KEY_BOUNDING_BOX
@ MODEL_PROP_KEY_GROUP_INFO
@ MODEL_PROP_KEY_TEXTURE_NAME
@ MODEL_PROP_KEY_RENDER_MODE
BSS RenderTask ClearRenderTaskLists[3][0x100]
#define NUM_RENDER_TASK_LISTS
#define QSORT(Q_N, Q_LESS, Q_SWAP)
#define RDP_MATRIX( Ax, Bx, Cx, Dx, Ay, By, Cy, Dy, Az, Bz, Cz, Dz, Aw, Bw, Cw, Dw)
#define PM_CC_TEX_COMBINE_3C
#define PM_CC_TEX_COMBINE_3B
#define PM_CC_ALT_INTERFERENCE
#define PM_CC_TINT_REMAP_SHADE_ALPHA
#define PM_CC_TEX_COMBINE_3A
#define PM_CC2_MULTIPLY_SHADE
#define PM_CC_TINT_REMAP_NO_SHADE
#define PM_CC_TINT_DEPTH_NO_SHADE
#define PM_CC_TINT_DEPTH_MIPMAPS
#define MAX_MODEL_TRANSFORM_GROUPS
#define PM_CC_TINT_REMAP_NOTEX
#define PM_CC_TINT_DEPTH_NOTEX
void(* appendGfx)(void *)
u8 Addr[]
Linker symbol address, as in ld_addrs.h.
GameStatus * gGameStatusPtr
DisplayContext * gDisplayContext