static void aRAD_set_bgOffset(RADIO_ACTOR* radio, int offs){
    offs = offs == 0 ? 3 : 3;

    mCoBG_SetPlussOffset(radio->actor_class.home.position, offs, 100);
}

static void aRAD_wait(RADIO_ACTOR* radio, GAME_PLAY* play){
    xyz_t def = {2.0f, 0.0f, -10.0f};
    xyz_t newPos;
    
    if(radio->next_action >= 0x24){
        radio->next_action = 0;
        Matrix_push();
        Matrix_translate(radio->actor_class.world.position.x,radio->actor_class.world.position.y, radio->actor_class.world.position.z, 0);
        Matrix_Position(&def, &newPos);
        Matrix_pull();

        Common_Get(clip.effect_clip->effect_make_proc)(32, newPos, 1, 0x6000, &play->game, AEROBICS_RADIO, 1,0);
    }

    radio->next_action++;
}

static void aRAD_setup_action(RADIO_ACTOR* radio, int action){
    static RADIO_PROC proc[] = {aRAD_wait}; 

    radio->proc = proc[action];
    radio->current_action = action;
    
}

static void aRAD_actor_move(ACTOR* actor, GAME* game){
    GAME_PLAY* play = (GAME_PLAY*)game;
    RADIO_ACTOR* radio = (RADIO_ACTOR*)actor;
    PLAYER_ACTOR* player;

    int rbx;
    int rbz;
    int pbx;
    int pbz;

    player = GET_PLAYER_ACTOR(play);
    mFI_Wpos2BlockNum(&rbx,&rbz, radio->actor_class.world.position);
    mFI_Wpos2BlockNum(&pbx,&pbz, player->actor_class.world.position);

    if(!mDemo_Check(mDemo_TYPE_SCROLL, &player->actor_class) && !mDemo_Check(mDemo_TYPE_SCROLL2, &player->actor_class)
        && !mDemo_Check(mDemo_TYPE_SCROLL3, &player->actor_class) && ((rbx != pbx) || (rbz != pbz))){

        Actor_delete(&radio->actor_class);
    }
    else{
        radio->proc(radio, play); 
    }
}

static void aRAD_actor_init(ACTOR* actor, GAME* game){
    RADIO_ACTOR* radio = (RADIO_ACTOR*)actor;
    xyz_t pos = radio->actor_class.home.position;

    mFI_SetFG_common(DUMMY_RADIO, pos, 0); 
    aRAD_actor_move(actor, game);
    radio->actor_class.mv_proc = aRAD_actor_move;
}
