From 5bb02959a51f916397a5b53e156bddab1864c10a Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sun, 21 Apr 2024 20:39:13 +0200 Subject: [PATCH] link ef_car_light --- config/rel_slices.yml | 4 ++++ src/ef_car_light.c | 43 +++++++++++++++++++++++++++++++------------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 17582bee..e71dab8a 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1014,6 +1014,10 @@ ef_car_blight.c: .text: [0x806075BC, 0x806079CC] .rodata: [0x8064BE00, 0x8064BE18] .data: [0x806D1F98, 0x806D2070] +ef_car_light.c: + .text: [0x806079CC, 0x80607B9C] + .rodata: [0x8064BE18, 0x8064BE20] + .data: [0x806D2070, 0x806D2088] ef_coin.c: .text: [0x80608060, 0x806087EC] .rodata: [0x8064BE48, 0x8064BEA0] diff --git a/src/ef_car_light.c b/src/ef_car_light.c index 9e5f11fc..d72069a1 100644 --- a/src/ef_car_light.c +++ b/src/ef_car_light.c @@ -1,4 +1,5 @@ #include "ef_effect_control.h" +#include "m_common_data.h" static void eCar_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eCar_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); @@ -16,19 +17,37 @@ eEC_PROFILE_c iam_ef_car_light = { eEC_DEFAULT_DEATH_DIST, // clang-format on }; +extern Gfx ef_carhosi01_00_modelT[]; -static void eCar_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO -} +static void eCar_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1){ + eEC_CLIP->make_effect_proc(eEC_EFFECT_CAR_LIGHT, pos, NULL, game, NULL, item_name, prio, arg0, arg1); -static void eCar_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO -} +}; -static void eCar_Light_mv(eEC_Effect_c* effect, GAME* game) { - // TODO -} +static void eCar_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg){ + effect->timer = 24; +}; -static void eCar_Light_dw(eEC_Effect_c* effect, GAME* game) { - // TODO -} +static void eCar_Light_mv(eEC_Effect_c* effect, GAME* game){ + + if(effect->timer > 12){ + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 12,24, 0.015f, 0.0f); + } + else{ + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 0,12, 0.0f, 0.015f); + } + + effect->scale.y = effect->scale.z = effect->scale.x; +}; + +static void eCar_Light_dw(eEC_Effect_c* effect, GAME* game){ + + OPEN_DISP(game->graph); + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, 255, 0,255); + + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_carhosi01_00_modelT); + + CLOSE_DISP(game->graph); +};