diff --git a/config/rel_slices.yml b/config/rel_slices.yml index bc926a35..6c46fbaa 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -994,6 +994,10 @@ ef_ase_ch.c: .text: [0x806052A8, 0x806054F0] .rodata: [0x8064BCA8, 0x8064BCC0] .data: [0x806D1EC8, 0x806D1F08] +ef_bubu.c: + .text: [0x8060672C, 0x80606878] + .rodata: [0x8064BD60, 0x8064BD68] + .data: [0x806D1F20, 0x806D1F38] ef_coin.c: .text: [0x80608060, 0x806087EC] .rodata: [0x8064BE48, 0x8064BEA0] diff --git a/src/ef_ase.c b/src/ef_ase.c index ffaa559e..464e28d2 100644 --- a/src/ef_ase.c +++ b/src/ef_ase.c @@ -46,4 +46,4 @@ static void eAS_mv(eEC_Effect_c* effect, GAME* game) { static void eAS_dw(eEC_Effect_c* effect, GAME* game) { -} \ No newline at end of file +} diff --git a/src/ef_ase2.c b/src/ef_ase2.c index 0211287f..88ca3381 100644 --- a/src/ef_ase2.c +++ b/src/ef_ase2.c @@ -66,4 +66,4 @@ static void eAS2_dw(eEC_Effect_c* effect, GAME* game) { gSPDisplayList(NEXT_POLY_XLU_DISP, eAS2_model_table[idx]); CLOSE_DISP(game->graph); -} \ No newline at end of file +} diff --git a/src/ef_bubu.c b/src/ef_bubu.c index a3813a93..5ae3f0ef 100644 --- a/src/ef_bubu.c +++ b/src/ef_bubu.c @@ -1,4 +1,5 @@ #include "ef_effect_control.h" +#include "m_common_data.h" static void eBubu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eBubu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); @@ -16,19 +17,34 @@ eEC_PROFILE_c iam_ef_bubu = { eEC_DEFAULT_DEATH_DIST, // clang-format on }; +extern Gfx ef_peke01_00_modelT[]; + static void eBubu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + + pos.y += 70.0f; + eEC_CLIP->make_effect_proc(eEC_EFFECT_BUBU,pos,NULL,game,NULL,item_name,prio,0,0); } static void eBubu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->scale.x = 0.015f; + effect->scale.y = 0.015f; + effect->scale.z = 0.015f; + sAdo_SysTrgStart(0x100A); } static void eBubu_mv(eEC_Effect_c* effect, GAME* game) { - // TODO -} -static void eBubu_dw(eEC_Effect_c* effect, GAME* game) { - // TODO +} +static void eBubu_dw(eEC_Effect_c* effect, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + GRAPH* graph = game->graph; + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + OPEN_DISP(graph); + + gSPDisplayList(NEXT_POLY_XLU_DISP,ef_peke01_00_modelT); + + CLOSE_DISP(graph); }