mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
604 lines
15 KiB
C
604 lines
15 KiB
C
#include "ac_train_window.h"
|
|
#include "m_common_data.h"
|
|
#include "m_debug.h"
|
|
#include "m_name_table.h"
|
|
#include "evw_anime.h"
|
|
#include "m_rcp.h"
|
|
#include "m_play.h"
|
|
#include "sys_matrix.h"
|
|
|
|
|
|
u16 aTrainWindow_tree_pal_table[15][16]= {
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0545,
|
|
0x9885,0xA0C5,
|
|
0xAD05,0xBD66,
|
|
0xCDE8,0xD2FA,
|
|
0xE77C,0xF3BE
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0655,
|
|
0x98C5,0xA105,
|
|
0xB165,0xC1E6,
|
|
0xD268,0xD2FA,
|
|
0xE77C,0xF3BE
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0464,
|
|
0x90C3,0x9504,
|
|
0xA184,0xAA05,
|
|
0xB287,0xD2FA,
|
|
0xE77C,0xF3BE
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0164,
|
|
0x80E5,0x8145,
|
|
0x89A4,0x9A60,
|
|
0xB300,0xD380,
|
|
0xEFE8,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0C37,
|
|
0xB086,0xC8A7,
|
|
0xE0C7,0xF109,
|
|
0xF98C,0xFE10,
|
|
0xFF18,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0066,
|
|
0x80C9,0x8127,
|
|
0x8186,0x8202,
|
|
0x82C1,0x9380,
|
|
0xCBE8,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0058,
|
|
0x80C9,0x80E8,
|
|
0x8148,0x81C8,
|
|
0x8268,0x9326,
|
|
0xC3EB,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0353,
|
|
0x8CC2,0x9102,
|
|
0x9963,0xA5C4,
|
|
0xB242,0xC6E4,
|
|
0xDB88,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0564,
|
|
0x90C5,0x9924,
|
|
0xA984,0xBA03,
|
|
0xD2A3,0xE304,
|
|
0xEF6A,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0842,
|
|
0xA463,0xB4A2,
|
|
0xC502,0xD961,
|
|
0xE9E1,0xF682,
|
|
0xFF26,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0814,
|
|
0xB024,0xC044,
|
|
0xCC85,0xE0C6,
|
|
0xF128,0xFE0B,
|
|
0xFEEB,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0734,
|
|
0xA484,0xAC83,
|
|
0xBCC4,0xD503,
|
|
0xE985,0xF629,
|
|
0xFF0E,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0635,
|
|
0xA085,0xA8C5,
|
|
0xB505,0xC566,
|
|
0xD5E8,0xEE8A,
|
|
0xFF2C,0x8000
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0545,
|
|
0x9885,0xA0C5,
|
|
0xAD05,0xBD66,
|
|
0xCDE8,0xD2FA,
|
|
0xE77C,0xF3BE
|
|
},
|
|
{
|
|
0x0724,0xA443,
|
|
0xBCA4,0xDD25,
|
|
0xF5E7,0xF209,
|
|
0xFECD,0x0545,
|
|
0x9885,0xA0C5,
|
|
0xAD05,0xBD66,
|
|
0xCDE8,0xD2FA,
|
|
0xE77C,0xF3BE
|
|
}
|
|
};
|
|
|
|
EVW_ANIME_SCROLL aTrainWindow_out_cloud = {
|
|
0, -2,
|
|
64, 64
|
|
};
|
|
|
|
EVW_ANIME_DATA aTrainWindow_evw_anime_data = {
|
|
-2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud
|
|
};
|
|
|
|
static void Train_Window_Actor_ct(ACTOR*, GAME*);
|
|
static void Train_Window_Actor_dt(ACTOR*, GAME*);
|
|
static void Train_Window_Actor_move(ACTOR*, GAME*);
|
|
static void Train_Window_Actor_draw(ACTOR*, GAME*);
|
|
|
|
|
|
ACTOR_PROFILE Train_Window_Profile = {
|
|
mAc_PROFILE_TRAIN_WINDOW,
|
|
ACTOR_PART_ITEM,
|
|
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
|
|
ETC_TRAIN_WINDOW,
|
|
ACTOR_OBJ_BANK_41,
|
|
sizeof(TRAIN_WINDOW_ACTOR),
|
|
&Train_Window_Actor_ct,
|
|
&Train_Window_Actor_dt,
|
|
&Train_Window_Actor_move,
|
|
&Train_Window_Actor_draw,
|
|
NULL
|
|
};
|
|
|
|
|
|
static int aTrainWindow_NoDraw(ACTOR*, GAME*);
|
|
static int aTrainWindow_DrawGoneOutTunnel(ACTOR*, GAME*);
|
|
static int aTrainWindow_DrawInTunnel(ACTOR*, GAME*);
|
|
|
|
extern Gfx rom_train_out_tunnel_model[];
|
|
extern Gfx rom_train_out_bgsky_model[];
|
|
extern Gfx rom_train_out_bgcloud_modelT[];
|
|
extern Gfx rom_train_out_bgtree_modelT[];
|
|
extern Gfx rom_train_out_shineglass_modelT[];
|
|
|
|
|
|
static int aTrainWindow_GetTreePalletIdx(){
|
|
static u8 till_data[15][2] = {
|
|
{
|
|
0x02,0x03
|
|
},
|
|
{
|
|
0x02,0x11
|
|
},
|
|
{
|
|
0x02,0x18
|
|
},
|
|
{
|
|
0x04,0x03
|
|
},
|
|
{
|
|
0x04,0x08
|
|
},
|
|
{
|
|
0x07,0x16
|
|
},
|
|
{
|
|
0x09,0x0F
|
|
},
|
|
{
|
|
0x0A,0x05
|
|
},
|
|
{
|
|
0x0A,0x17
|
|
},
|
|
{
|
|
0x0B,0x07
|
|
},
|
|
{
|
|
0x0B,0x0E
|
|
},
|
|
{
|
|
0x0B,0x1C
|
|
},
|
|
{
|
|
0x0C,0x0A
|
|
},
|
|
{
|
|
0x0C,0x11
|
|
},
|
|
{
|
|
0x0C,0x1F
|
|
}
|
|
};
|
|
|
|
int i;
|
|
lbRTC_month_t month = Common_Get(time.rtc_time.month);
|
|
lbRTC_day_t day = Common_Get(time.rtc_time.day);
|
|
|
|
for(i = 0; i < 15; i++){
|
|
if (month < till_data[i][0]) {
|
|
return i;
|
|
}
|
|
|
|
if (month == till_data[i][0] && day <= till_data[i][1]) {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
switch(Save_Get(scene_no)){
|
|
case 49:
|
|
|
|
case 15:
|
|
window->draw_type = aTrainWindow_NoDraw;
|
|
window->Single_Scrollx = 0;
|
|
window->Single_Scrolly = 0;
|
|
window->Two_Scrollx1 = 0;
|
|
window->Two_Scrolly1 = 0;
|
|
window->Two_Scrollx2 = 0;
|
|
window->Two_Scrolly2 = 0;
|
|
window->scroll_speed = 0.07f;
|
|
break;
|
|
|
|
case 16:
|
|
window->draw_type = aTrainWindow_DrawGoneOutTunnel;
|
|
window->Single_Scrollx = 1000;
|
|
window->Single_Scrolly = 0;
|
|
window->Two_Scrollx1 = 1000;
|
|
window->Two_Scrolly1 = 0;
|
|
window->Two_Scrollx2 = 0;
|
|
window->Two_Scrolly2 = 0;
|
|
window->scroll_speed = 1.0f;
|
|
break;
|
|
}
|
|
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
|
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
|
window->TreeScrollx = 500;
|
|
window->TreeScrolly = 0;
|
|
window->pos.x = 0;
|
|
window->pos.y = 0;
|
|
window->pos.z = 0;
|
|
window->xlu_alpha = 254.0f;
|
|
}
|
|
|
|
static void Train_Window_Actor_dt(ACTOR* actor, GAME* game){
|
|
|
|
}
|
|
|
|
static u8 aTW_GetNowAlpha(){
|
|
|
|
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
|
|
if(Common_Get(time.now_sec) < 43200){
|
|
return 255.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f);
|
|
}
|
|
return 255.0f * (1.0f - ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f));
|
|
}
|
|
else if(Common_Get(time.now_sec) < 14400) {
|
|
return 200.0f * (1.0f - (0.5f + ((f32)Common_Get(time.now_sec) / 28800.0f)));
|
|
}
|
|
else{
|
|
return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f);
|
|
}
|
|
}
|
|
|
|
static void Train_Window_Actor_move(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
f32 alpha;
|
|
|
|
window->TreeScrollx += 5;
|
|
add_calc(&window->xlu_alpha, aTW_GetNowAlpha(), window->scroll_speed, 50.0f, 1.0f);
|
|
if((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)){
|
|
alpha = 0.0f;
|
|
}
|
|
else if(Common_Get(time.now_sec) >= 43200){
|
|
alpha = 160.0f + (-160.0f * ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f));
|
|
}
|
|
else{
|
|
alpha = 160.0f * ((f32)(Common_Get(time.now_sec) -14400) / 28800.0f);
|
|
}
|
|
add_calc(&window->lod_factor, alpha, 0.3f, 50.0f, 1.0f);
|
|
}
|
|
|
|
static int aTrainWindow_OperateScrollLimit(int a, int b, int c){
|
|
|
|
b >>= 1;
|
|
if(b != 0){
|
|
if(b > 0){
|
|
if(a+b > c){
|
|
return c;
|
|
}
|
|
return a+b;
|
|
}
|
|
if(b >= 0){
|
|
return a;
|
|
}
|
|
if(a+b < c){
|
|
return c;
|
|
}
|
|
return a+b;
|
|
}
|
|
return a;
|
|
}
|
|
|
|
static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt,int yamt, int xend, int yend,
|
|
int width, int height, GRAPH** graph){
|
|
|
|
*x = aTrainWindow_OperateScrollLimit(*x, xamt, xend);
|
|
*y = aTrainWindow_OperateScrollLimit(*y, yamt, yend);
|
|
|
|
return tex_scroll2(*graph, *x, *y, width, height);
|
|
}
|
|
|
|
static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, int height1,
|
|
u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int height2, GRAPH** graph){
|
|
|
|
|
|
*x1 = aTrainWindow_OperateScrollLimit(*x1, x1amt, x1end);
|
|
*y1 = aTrainWindow_OperateScrollLimit(*y1, y1amt, y1end);
|
|
*x2 = aTrainWindow_OperateScrollLimit(*x2, x2amt, x2end);
|
|
*y2 = aTrainWindow_OperateScrollLimit(*y2, y2amt, y2end);
|
|
|
|
return two_tex_scroll(*graph, 0, *x1, *y1, width1, height1, 1, *x2, *y2, width2, height2);
|
|
}
|
|
|
|
static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
GRAPH** graph = &game->graph;
|
|
Gfx* ssc;
|
|
Gfx* tsc;
|
|
|
|
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
|
0,0,1000,0, 64, 32, graph);
|
|
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8,
|
|
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
|
|
|
if((ssc == NULL) || (tsc == NULL)){
|
|
return 0;
|
|
}
|
|
else{
|
|
OPEN_DISP(*graph);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 11, ssc);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
|
|
|
CLOSE_DISP(*graph);
|
|
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) {
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
Gfx* tsc;
|
|
Gfx* ssc;
|
|
GRAPH** graph = &game->graph;
|
|
|
|
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
|
30,0,1000,0, 64, 32, graph);
|
|
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30,0,1000, 0, 64, 8,
|
|
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
|
|
|
if((ssc == NULL) || (tsc == NULL)){
|
|
return 0;
|
|
}
|
|
else{
|
|
OPEN_DISP(*graph);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 11, ssc);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
|
|
|
CLOSE_DISP(*graph);
|
|
|
|
if(((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)){
|
|
window->draw_type = aTrainWindow_DrawGoneOutTunnel;
|
|
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
|
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
window->draw_type = aTrainWindow_DrawInTunnel;
|
|
return 0;
|
|
}
|
|
|
|
static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
Gfx* tsc;
|
|
Gfx* ssc;
|
|
GRAPH** graph = &game->graph;
|
|
|
|
ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly,
|
|
0,0,1000,0, 64, 32, graph);
|
|
tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8,
|
|
&window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph);
|
|
|
|
if((ssc == NULL) || (tsc == NULL)){
|
|
return 0;
|
|
}
|
|
else{
|
|
OPEN_DISP(*graph);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 11, ssc);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc);
|
|
gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc);
|
|
|
|
CLOSE_DISP(*graph);
|
|
|
|
if(Common_Get(sunlight_flag) != 0){
|
|
window->pallete_id = aTrainWindow_GetTreePalletIdx();
|
|
window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id];
|
|
window->draw_type = aTrainWindow_DrawGoingOutTunnel;
|
|
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a){
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
int i;
|
|
int current_color;
|
|
u8 color[3];
|
|
GRAPH* graph;
|
|
|
|
for(i = 0; i < 3; i++){
|
|
current_color = play->global_light.ambientColor[i] + play->kankyo.base_light.sun_color[i];
|
|
switch(i){
|
|
case 0:
|
|
current_color += r;
|
|
break;
|
|
case 1:
|
|
current_color += g;
|
|
break;
|
|
case 2:
|
|
current_color += b;
|
|
break;
|
|
}
|
|
if(current_color < 0){
|
|
current_color = 0;
|
|
}else if(current_color >= 256){
|
|
current_color = 255;
|
|
}
|
|
color[i] = current_color;
|
|
}
|
|
|
|
if(l < 0){
|
|
l = 0;
|
|
}else if(l > 255){
|
|
l = 255;
|
|
}
|
|
if(poly_a < 0){
|
|
poly_a = 0;
|
|
}else if(poly_a > 255){
|
|
poly_a = 255;
|
|
}
|
|
if(xlu_a < 0){
|
|
xlu_a = 0;
|
|
}else if(xlu_a > 255){
|
|
xlu_a = 255;
|
|
}
|
|
|
|
graph = play->game.graph;
|
|
|
|
OPEN_DISP(graph);
|
|
gDPSetPrimColor(NOW_POLY_OPA_DISP++, 0, l, color[0], color[1], color[2], poly_a);
|
|
gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a);
|
|
CLOSE_DISP(graph);
|
|
|
|
}
|
|
|
|
static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game){
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
Gfx* tree;
|
|
|
|
GRAPH** graph = &game->graph;
|
|
|
|
tree = tex_scroll2(*graph, window->TreeScrollx, window->TreeScrolly, 128, 32);
|
|
|
|
OPEN_DISP(*graph);
|
|
|
|
gSPSegment(NOW_POLY_OPA_DISP++,8, tree);
|
|
gSPSegment(NOW_POLY_XLU_DISP++,8, tree);
|
|
|
|
CLOSE_DISP(*graph);
|
|
}
|
|
|
|
static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor;
|
|
|
|
GRAPH* graph = game->graph;
|
|
Matrix_translate(0.0f,0.0f,0.0f,FALSE);
|
|
Matrix_scale(0.05f, 0.05f, 0.05f, TRUE);
|
|
|
|
OPEN_DISP(graph);
|
|
|
|
gSPMatrix(NOW_POLY_OPA_DISP++, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
gSPMatrix(NOW_POLY_XLU_DISP++, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
|
|
_texture_z_light_fog_prim(game->graph);
|
|
_texture_z_light_fog_prim_xlu(game->graph);
|
|
|
|
|
|
if(window->draw_type(actor,game) != 0){
|
|
aTrainWindow_SetLightPrimColorDetail(game, 0,0,0,127,255,(u8)window->xlu_alpha);
|
|
gSPSegment(NOW_POLY_XLU_DISP++,10, window->current_pallete);
|
|
Evw_Anime_Set(play, &aTrainWindow_evw_anime_data);
|
|
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,43,255,window->xlu_alpha);
|
|
gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_tunnel_model);
|
|
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha);
|
|
gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_bgsky_model);
|
|
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha);
|
|
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgcloud_modelT);
|
|
aTrainWindow_SetTreeTextureScroll(actor, game);
|
|
aTrainWindow_SetLightPrimColorDetail(game, GETREG(CRV, CRV_DEBUG_RED_VALUE) -80 ,GETREG(CRV, CRV_DEBUG_GREEN_VALUE) -70 ,GETREG(CRV, CRV_DEBUG_BLUE_VALUE) -160, GETREG(CRV,CRV_DEBUG_LOD_VALUE) + 27,255, window->xlu_alpha);
|
|
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgtree_modelT);
|
|
aTrainWindow_SetLightPrimColorDetail(game,0,0,0,window->lod_factor,255,window->xlu_alpha);
|
|
gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_shineglass_modelT);
|
|
|
|
}
|
|
CLOSE_DISP(graph);
|
|
} |