static void aTR0_actor_draw(ACTOR* actor, GAME* game){
    u16* pal = (*Common_Get(clip).structure_clip->get_pal_segment_proc)(0x39);
    GRAPH* graph = game->graph;
    cKF_SkeletonInfo_R_c* keyf;
    TRAIN0_ACTOR* train0 = (TRAIN0_ACTOR*)actor;

    Mtx* mtx;
    Gfx* gfx;

    keyf = &train0->keyframe;
    mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyf->skeleton->num_shown_joints);

    if (mtx != NULL){
        _texture_z_light_fog_prim_npc(graph);
        Matrix_push();
        Matrix_translate(train0->tr1_pos, train0->actor_class.world.position.y, 
            train0->actor_class.world.position.z, 0);
        Matrix_scale(train0->actor_class.scale.x, train0->actor_class.scale.y, 
            train0->actor_class.scale.z, 1);

        OPEN_DISP(graph);
        gfx = NOW_POLY_OPA_DISP;
        
        gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
        gSPSegment(gfx++, G_MWO_SEGMENT_8, pal); 
        gDPLoadTLUT_Dolphin(gfx++, 15, 16, 1, pal);
        gSPDisplayList(gfx++, obj_train1_2_model);
        
        SET_POLY_OPA_DISP(gfx);
        CLOSE_DISP(graph);
        
        Matrix_pull();
        cKF_Si3_draw_R_SV(game, keyf, mtx, NULL,NULL,train0);
    }
}
