Revert 3D Coins Patch

Texture isnt setup properly yet
This commit is contained in:
$4Y$ 2020-09-16 23:52:14 -05:00
parent 10d7bb64fb
commit a65b273016
6 changed files with 280 additions and 1207 deletions

View file

@ -1,72 +1,113 @@
// 0x1600013C
const GeoLayout yellow_coin_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_000_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 50),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
// 0x160001A0
const GeoLayout yellow_coin_no_shadow_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_000_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
const GeoLayout red_coin_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_002_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
const GeoLayout red_coin_no_shadow_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_002_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
// 0x16000200
const GeoLayout blue_coin_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_001_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
// 0x16000264
const GeoLayout blue_coin_no_shadow_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_rotate_coin),
GEO_ROTATION_NODE(0x00, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, coin_001_displaylist_mesh),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
// 0x160002C4
const GeoLayout red_coin_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};
// 0x16000328
const GeoLayout red_coin_no_shadow_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(8, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),
GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};

File diff suppressed because it is too large Load diff

View file

@ -31,16 +31,20 @@ extern const GeoLayout blue_coin_geo[];
extern const GeoLayout blue_coin_no_shadow_geo[];
extern const GeoLayout red_coin_geo[];
extern const GeoLayout red_coin_no_shadow_geo[];
extern const Gfx coin_seg3_dl_03007780[];
extern const Gfx coin_seg3_dl_030077D0[];
extern const Gfx coin_seg3_dl_03007800[];
extern const Gfx coin_seg3_dl_03007828[];
extern const Gfx coin_seg3_dl_03007850[];
extern const Gfx coin_seg3_dl_03007878[];
extern const Gfx coin_seg3_dl_030078A0[];
extern const Gfx coin_seg3_dl_030078C8[];
extern const Gfx coin_seg3_dl_030078F0[];
extern const Gfx coin_seg3_dl_03007918[];
extern const Gfx coin_seg3_dl_03007940[];
extern const Gfx coin_seg3_dl_03007968[];
extern const Gfx coin_seg3_dl_03007990[];
extern const Gfx coin_seg3_dl_030079B8[];
extern Vtx coin_000_displaylist_mesh_vtx_0[433];
extern Gfx coin_000_displaylist_mesh_tri_0[];
extern Gfx coin_000_displaylist_mesh[];
extern Gfx coin_001_displaylist_mesh[];
extern Gfx coin_002_displaylist_mesh[];
extern Gfx coin_material_revert_render_settings[];
// dirt
extern const GeoLayout dirt_animation_geo[];

View file

@ -875,7 +875,7 @@ const BehaviorScript bhvMrIBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
SET_INT(oInteractType, INTERACT_COIN),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_FLOAT(oMrIUnk110, 20),
SET_INT(oAnimState, -1),
@ -895,7 +895,7 @@ const BehaviorScript bhvCoinInsideBoo[] = {
SET_INT(oInteractType, INTERACT_COIN),
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
//BILLBOARD(),
BILLBOARD(),
CALL_NATIVE(bhv_init_room),
BEGIN_LOOP(),
CALL_NATIVE(bhv_coin_inside_boo_loop),
@ -906,7 +906,7 @@ const BehaviorScript bhvCoinInsideBoo[] = {
const BehaviorScript bhvCoinFormationSpawn[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
BEGIN_LOOP(),
CALL_NATIVE(bhv_coin_formation_spawn_loop),
END_LOOP(),
@ -930,18 +930,17 @@ const BehaviorScript bhvOneCoin[] = {
const BehaviorScript bhvYellowCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
// Yellow coin - common:
//BILLBOARD(),
BILLBOARD(),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
CALL_NATIVE(bhv_yellow_coin_init),
BEGIN_LOOP(),
CALL_NATIVE(bhv_yellow_coin_loop),
END_LOOP(),
};
const BehaviorScript bhvTemporaryYellowCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
//BILLBOARD(),
BILLBOARD(),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
CALL_NATIVE(bhv_yellow_coin_init),
BEGIN_LOOP(),
@ -970,7 +969,7 @@ const BehaviorScript bhvTenCoinsSpawn[] = {
const BehaviorScript bhvSingleCoinGetsSpawned[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
CALL_NATIVE(bhv_coin_init),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
BEGIN_LOOP(),
@ -2835,7 +2834,7 @@ const BehaviorScript bhvHiddenBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
SET_INT(oInteractType, INTERACT_COIN),
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
//BILLBOARD(),
BILLBOARD(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 64),
SET_INT(oDamageOrCoinValue, 5),
SET_INT(oIntangibleTimer, 0),
@ -3666,7 +3665,7 @@ const BehaviorScript bhvActSelector[] = {
const BehaviorScript bhvMovingYellowCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 64),
SET_INT(oInteractType, INTERACT_COIN),
SET_INT(oIntangibleTimer, 0),
@ -3681,7 +3680,7 @@ const BehaviorScript bhvMovingYellowCoin[] = {
const BehaviorScript bhvMovingBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_INT(oAnimState, -1),
CALL_NATIVE(bhv_moving_blue_coin_init),
@ -3694,7 +3693,7 @@ const BehaviorScript bhvMovingBlueCoin[] = {
const BehaviorScript bhvBlueCoinSliding[] = {
BEGIN(OBJ_LIST_GENACTOR),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
//BILLBOARD(),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_INT(oAnimState, -1),
CALL_NATIVE(bhv_blue_coin_sliding_jumping_init),
@ -3707,7 +3706,7 @@ const BehaviorScript bhvBlueCoinSliding[] = {
const BehaviorScript bhvBlueCoinJumping[] = {
BEGIN(OBJ_LIST_GENACTOR),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
//BILLBOARD(),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_INT(oAnimState, -1),
CALL_NATIVE(bhv_blue_coin_sliding_jumping_init),
@ -4298,7 +4297,7 @@ const BehaviorScript bhvMoneybagHidden[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_FLOAT(oGraphYOffset, 27),
//BILLBOARD(),
BILLBOARD(),
SET_HITBOX(/*Radius*/ 110, /*Height*/ 100),
SET_INT(oIntangibleTimer, 0),
SET_INT(oAnimState, -1),
@ -4640,7 +4639,7 @@ const BehaviorScript bhvHiddenRedCoinStar[] = {
const BehaviorScript bhvRedCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
//BILLBOARD(),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_INT(oAnimState, -1),
CALL_NATIVE(bhv_init_room),

View file

@ -126,23 +126,6 @@ Gfx *geo_update_layer_transparency(s32 callContext, struct GraphNode *node, UNUS
return dlStart;
}
Gfx *geo_rotate_coin(s32 callContext, struct GraphNode *node, UNUSED void *context) {
struct Object *obj;
if (callContext == GEO_CONTEXT_RENDER) {
obj = (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer
struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;
vec3s_set(rotNode->rotation, 0, obj->oAnimState, 0);
obj->oAnimState += 0x0800;
if (obj->oAnimState > 0xFFFF) {
obj->oAnimState = 0;
}
}
return NULL;
}
/**
* @bug Every geo function declares the 3 parameters of callContext, node, and
* the matrix array. This one (see also geo_switch_area) doesn't. When executed,
@ -1641,14 +1624,6 @@ static void obj_spawn_loot_coins(struct Object *obj, s32 numCoins, f32 sp30,
coin = spawn_object(obj, model, coinBehavior);
obj_translate_xz_random(coin, posJitter);
coin->header.gfx.angle[0] = 0;
coin->header.gfx.angle[1] = 0;
coin->header.gfx.angle[2] = 0;
coin->oFaceAnglePitch = 0;
coin->oFaceAngleYaw = 0;
coin->oFaceAngleRoll = 0;
coin->oPosY = spawnHeight;
coin->oCoinUnk110 = sp30;
coin->oPosY = spawnHeight;
coin->oCoinUnk110 = sp30;
}

View file

@ -76,7 +76,6 @@ Gfx *geo_switch_area(s32 callContext, struct GraphNode *node, UNUSED void *conte
Gfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node);
Gfx *geo_switch_area(s32 callContext, struct GraphNode *node);
#endif
Gfx *geo_rotate_coin(s32 callContext, struct GraphNode *node, UNUSED void *context);
void obj_update_pos_from_parent_transformation(Mat4 a0, struct Object *a1);
void obj_apply_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src);
void create_transformation_from_matrices(Mat4 a0, Mat4 a1, Mat4 a2);