Files
BanjoRecomp/patches/clanker_patches.c
Darío 768de1bda4 Manual vertex velocity computation. (#46)
* Update RT64 for vertex velocity segment support.

* Switch to using extended velocity data for CPU skinning.

* Integrate actor tracking into vertex velocity calculation

* Add vertex velocity calculation to overlay draws (e.g. Clanker)

---------

Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com>
2026-01-06 20:21:15 -05:00

40 lines
1.1 KiB
C

#include "patches.h"
#include "transform_ids.h"
int overlayManagergetLoadedId(void);
extern struct {
u8 unk0;
u8 unk1;
u8 pad2[2];
void (*init)(void);
void (*update)(void);
void (*release)(void);
void (*draw)(Gfx **, Mtx **, Vtx **);
void (*unk14)(s32, s32);
} sOverlay;
void recomp_setup_overlay_skinning(int overlay_id);
void recomp_clear_overlay_skinning();
// @recomp: Patched to assign an ID to Clanker.
RECOMP_PATCH void func_80322E64(Gfx **gfx, Mtx **mtx, Vtx **vtx){
// @recomp If the current level is Clanker's Cavern, set up the model ID for Clanker.
u32 prev_transform_id = cur_drawn_model_transform_id;
if (overlayManagergetLoadedId() == OVERLAY_2_WHALE) {
cur_drawn_model_transform_id = CLANKER_TRANSFORM_ID_START;
}
// @recomp Setup the overlay skinning data.
recomp_setup_overlay_skinning(overlayManagergetLoadedId());
if(sOverlay.draw)
sOverlay.draw(gfx, mtx, vtx);
// @recomp Clear the overlay skinning setup.
recomp_clear_overlay_skinning();
// @recomp Reset the current transform ID.
cur_drawn_model_transform_id = prev_transform_id;
}