This is a sub-page of Kinniku Banzuke Vol.2: Aratanaru Genkai he no Chousen!.
0x74850#
* dst */
SharedPrimSet_0051: /* 0x00002ea8 (Bone (6)) */
TERMINATE; /* next prim */
SharedPrimHdr_0000 / 4;
M(1); /* num of types */
SharedPrim_0051: /* 0x00002eb4 */
DEV_ID(SCE)|CTG(CTG_SHARED)|DRV(0)
|PRIM_TYPE(0); /* type[0] */
H(7); M(H(0)); /* size, data */
11; /* num of shared vertices */
(SharedVert_0051 - SharedVert_0000) / 8; /* src */
(CalcedVert_0051 - CalcedVert_0000) / 8; /* dst */
11; /*
0xBB7C0#
B(0x2c); /* R, G, B, CODE */
B(19); B(47); H(0x7840); /* U0, V
0xC0E40#
06); H(727); /* N0, V0 */
H(1018); H(738); /* N1, V1 */
H(1016); H(728); /* N2, V2 */
H(1027); H(739); /* N3, V3 */
B(0); B(0); B(255); B(0x38); /* R, G, B, CODE */
H(1016); H(728); /* N0, V0 */
H(1027); H(739); /* N1, V1 */
H(1014); H(729); /* N2, V2 */
H(1025); H(740); /* N3, V3 */
SharedPoly_0080: /* 0x000186c4 index[3516] */
B(255); B(255); B(255); B(0x34); /* R, G, B, CODE */
B(255); B(255); B(25
0xE6F50#
Poly_0000) / 4;
PolyPrim_0135: /* 0x00000978 */
DEV_ID(SCE)|CTG(CTG_POLY)|DRV(STP)
|PRIM_TYPE(QUAD|IIP); /* type[3] */
H(2); M(H(1)); /* size, data */
(Poly_0135 -
0x14BE50#
8); /* normal[1540] */
SVECTOR( 1175, -3355, -2035); /* normal[1541] */
SVECTOR( 2449, -2187, -2449); /* normal[1542] */
SVECTOR( 1849, -3434, -1251); /* normal[1543] */
SVECTOR( 3068, -2055, -1772); /* normal[1544] */
SVECTOR( 2449, -2187, -2449); /* normal[1545] */
SVECTOR( 1175, -3355, -2035); /* normal[1546] */
SVECTOR( 1849, -3434, -1251); /* normal[1547] */
SVECTOR( 0, -4096, 0); /* normal[15
0x18CD60#
R( 3996, -70, 896); // norm[894]
SVECTOR( 3536, -1861, 896); // norm[895]
SVECTOR( 3904, -255, 1212); // norm[896]
SVECTOR( 3844, 29, 1412); /
0x1A4C00#
w = 0;
}
else /* エディットキャラ座標 */
{
s->classw0[CUR1].xposi = 153 + (c2 % 4) * 20;
if( c2 / 4 ) s->classw0[CUR1].yposi = 170 + 21;
else s->classw0[CUR1].yposi = 170;
sw = 1;
}
SetSELAction( MS_CR+ 8, CUR1, sw ); /* カーソル変更 */
}
/*------------------------------------------------------------------*/
/* 決定者の点灯処理 */
/*------------------------------------------------------------------*/
static short mask_dt[2][7] = {
{ -159, 8, 40, 42, 38, 41, 8 },
{ - 39, 50, 20, 21, 19, 21, 4 },
};
static void char_chk( void )
{
sys_w;
SPD_W *spd;
short *dt, i, px, py;
u_char c_now, size;
spd = (SPD_W *)s->classw0[PLGM].chara;
i = 0;
while( 1 )
{
spd[i].ysize = 0x00;
if( spd[i].ccode == END )
break;
i ++;
}
for( i=0; i<entry_cnt; i++ )
{
c_now = GET_NO_G2L( entry_work[i] );
if( c_now < 16 ) {
dt = mask_dt[0];
} else {
dt = mask_dt[1];
c_now -= 16;
}
px = (c_n
0x1AA600#
---------------------------------------------*/
/* io : フェードスピード / 0(イン)/1(アウト)/2(アウト出力オフなし)4ビットずつ使用 */
/* top : 対象物登録パーツ番号(先頭) */
/* cnt : パーツ数(topから連続で) */
/*------------------------------------------------------------------*/
/* ret : 0:処理中 1:終了 */
/*------------------------------------------------------------------*/
u_char Fade( u_char io, u_char top, u_char cnt )
{
sys_w;
CLASS0_W *spr;
Uchar
0x1B2C00#
{
return (cur_pal / P_ANIME);
}
/*----------------------------*/
/* タイトル動作 (展開) */
/*----------------------------*/
static int m_TTLAction0( void )
{
sys_w;
u_char *wk;
u_short *wks1, *wks2;
wk = (u_char *)&m_spw[GTI1];
wks1 = (u_short *)&m_spw[GTI1];
wks2 = (u_short *)&m_spw[GTI2];
switch( wk[1] ) {
case 0:
m_SprSet ( wks1[1], GTI1, 0x0d, PR7, 1 );
m_SprSet ( wks2[1], GTI2, 0x0d, PR7, 0 );
s->classw0[GTI2].kind = OFF;
wk[1] ++;
break;
case 1:
if( m_SprMove( GTI1, 1, ON ) )
wk[1] ++;
break;
case 2:
if( m_SprStp ( GTI2, 0, ON ) )
wk[1] ++;
break;
default:
wk[0] = 0;
wk[1] = 0;
return 1;
}
return 0;
}
/*----------------------------*/
/* タイトル動作 (退散) */
/*----------------------------*/
static int m_TTLAction1( void )
{
u_char *wk;
wk = (u_char *)&m_spw[GTI1];
if( ! ( wk[1] & 0x01 ) ) {
if( m_SprStp ( GTI1, 0, OFF ) )
wk[1] |= 0x01;
}
if( ! ( wk[1] & 0x02 ) ) {
if( m_Spr
0x1C1400#
ック初期化 */
}
/*------------------------------------------------------------------*/
/* 処理実行確認セット */
/*------------------------------------------------------------------*/
/* パラメータ */
/* kind : 実行確認結果 */
/*------------------------------------------------------------------*/
void mcWaitResult( u_char kind )
{
switch( kind ) {
case RES_OK:
case RES_NO:
StepKind = STP_EXIT;
break;
case RES_YES:
StepKind = STP_RUN;
break;
case RES_RETRY:
mcInit();
break;
}
}
/*------------------------------------------------------------------*/
/* 各種処理 */
/*------------------------------------------------------------------*/
/* パラメータ */
/* act : MEM_SAVE:セーブ MEM_LOAD:ロード */
/*------------------------------------------------------------------*/
/* 戻り値 : メッセージタイプ */
/*------------------
0x1CB400#
2,0xfff8,0x2a},
{DAT,0x10,0x10,0x40,0x70,0x002e,0xfff8,0x2a},
{DAT,0x10,0x10,0x40,0x50,0xffc3,0x0008,0x2a},
{DAT,0x10,0x10,0xb0,0x10,0x0058,0xfff8,0x2a},
{DAT,0x10,0x10,0xc0,0x10,0x0034,0x0008,0x2a},
{END,0x10,0x10,0x00,0x60,0xfff8,0x0020,0x2a},
};
/* カーソル OK/再チェック */
SPD_W wc_check06_spd[]={
{DAT,0x38,0x18,0xc8,0xd0, -74, 29,0x10}, /* pos -74 29 */
{DAT,0x30,0x18,0xc8,0xd0, -12, 29,0x10}, /* pos -12 29 */
{END,0x28,0x18,0xd8,0xd0, 36, 29,0x10}, /* pos 36 29 */
};
/* (OK) データなし */
SPD_W warn071_spd[]={
{DAT,0x10,0x10,0xf0,0x10,0xffd0,0xfff8,0x2a},
{DAT,0x10,0x10,0x40,0x40,0xffde,0xfff8,0x2a},
{DAT,0x10,0x10,0x80,0x60,0xffec,0xfff8,0x2a},
{DAT,0x10,0x10,0x90,0x60,0xfffa,0xfff8,0x2a},
{DAT,0x10,0x10,0x60,0x80,0x0008,0xfff8,0x2a},
{DAT,0x10,0x10,0x00,0x70,0x0024,0xfff8,0x2a},
{DAT,0x10,0x10,0xe0,0x60,0x0040,0xfff8,0x2a},
{DAT,0x10,0x10,0x10,0x40,0x004e,0xfff8,0x2a},
{DAT,0x10,0x10,0xd0,0x60,0xffbc,0x0008,0x2a},
{DAT,0x10,0x10,0x00,0x90,0xffd8,0x
0x1D0C00#
a},
{DAT,0x10,0x10,0xe0,0x50,0x0002,0x0000,0x2a},
{DAT,0x10,0x10,0xf0,0x50,0x0011,0x0000,0x2a},
{DAT,0x10,0x10,0xc0,0x10,0x0058,0x0000,0x2a},
{END,0x10,0x10,0x00,0x60,0xfff8,0x0018,0x2a},
};
/* カーソル OK/再チェック */
SPD_W wc_check22_spd[]={
{DAT,0x38,0x18,0xc8,0xd0, -74, 29-8,0x10}, /* pos -74 29 */
{DAT,0x30,0x18,0xc8,0xd0, -12, 29-8,0x10}, /* pos -12 29 */
{END,0x28,0x18,0xd8,0xd0, 36, 29-8,0x10}, /* pos 36 29 */
};
/* (確認) フォーマット完了 */
SPD_W warn231_spd[]={
{DAT,0x10,0x10,0x20,0xb0,0xffb6,0xfff8,0x2a},
{DAT,0x10,0x10,0xe0,0x90,0xffc4,0xfff8,0x2a},
{DAT,0x10,0x10,0x50,0x60,0xffe0,0xfff8,0x2a},
{DAT,0x10,0x10,0xd0,0xa0,0xffee,0xfff8,0x2a},
{DAT,0x10,0x10,0x40,0x90,0xfffc,0xfff8,0x2a},
{DAT,0x10,0x10,0x10,0x20,0x000a,0xfff8,0x2a},
{DAT,0x10,0x10,0x50,0x00,0x0018,0xfff8,0x2a},
{DAT,0x10,0x10,0x10,0x20,0x0026,0xfff8,0x2a},
{DAT,0x10,0x10,0x00,0x30,0x0034,0xfff8,0x2a},
{DAT,0x10,0x10,0x30,0x80,0xffc8,0x0008,0x2a},
{DAT,0x10,0x10,0xc0,0x70,0xffe4,0x0008
0x1DF400#
reak;
case 45:
if( ! Fade( (8<<4)|0, LOGO, 19 ) )
break;
EdtSts = 0;
op_step = 0;
return 1;
}
return 0;
}
/*----------------------------*/
/* 外観設定(プロフィール) */
/*----------------------------*/
static void ed_prof1( void )
{
sp_w;
sys_w;
SPD_W *spd;
if( JOYTRG0 & TRG_R1 ) /* 特徴設定へ */
{
SD_call( SD_RESULT );
m_SprClr( CUR1 );
op_step = 20;
}
if( JOYTRG0 & TRG_START ) /* 設定終了位置へ */
{
SD_call( SD_MOVE );
EDcur[0] = 6;
}
else
if( JOYTRG0 & (TRG_DN|TRG_UP) ) /* 上下移動 */
{
m_yaji_sel ( &EDcur[0], 0, 7, ( JOYTRG0 & TRG_DN ) ? 1 : 0 );
SD_call( SD_MOVE );
}
else
if( JOYTRG0 & (TRG_LT|TRG_RT) ) /* 左右動作 */
{
lr = ( JOYTRG0 & TRG_RT ) ? 1 : 0 ;
if( keyrep % 5 == 0 )
{
switch( EDcur[0] ) {
case 1: /* 職業 */
m_yaji_sel ( &svJOB, 0, 8, lr );
SetSELAction( MS_ED1+8, ED_SL+7+1, svJOB );
SD_call( SD_MOVE );
break;
case 2: /* 血液型 */
m_yaj
0x1E4E00#
case 1: /* MCチェック・ロード */
res = SaveLoad();
if( res == 1 ) { /* 成功 */
op_step = 10;
} else
if( res == 0xff ) { /* 失敗 */
op_step ++;
}
break;
case 2: /* 終了 */
for( i=0; i<8; i++ )
memcpy( &SWK.Nedit[i][0], &EDbkup[i][0], 40 ); /* データ復帰 */
op_step = 0;
return 1;
case 10: /* データ登録 */
sno = MS_CH + 2 + pos_sav[EDIT_SELECT];
set2dN( CH_MSG, sno ,MODE16,0,-OUT_Y,0x1c,0x00,1,PR9 );
set2dN( C
0x1F4E00#
0xffc2,0x006e,0x05}, // 11段目
{DAT,0x10,0x10,0x30,0x70,0xffd0,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0xffde,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0xffec,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0xfffa,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0x0008,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0x0016,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0x0024,0x006e,0x05},
{DAT,0x10,0x10,0x30,0x70,0xffc2,0x007f,0x05}, // 12段目
{DAT,0x10,0x10,0x30,0x70,0xffd0,0x007f,0x05},
{DAT,0x10,0x10,0x30,0x70,0xffde
0x1FDC00#
,0x34},
};
SPD_W meter_GT_spd []={ /* メーター ガロンスロー */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x000c,0x34},
};
SPD_W meter_BA_spd []={ /* メーター バック転 */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x0017,0x34},
};
SPD_W meter_SH_spd []={ /* メーター スプレー */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x0022,0x34},
};
SPD_W meter_GM_spd []={ /* メーター ゲームメーカー */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x002d,0x34},
};
SPD_W meter_DD_spd []={ /* メーター デットマンズ */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x0038,0x34},
};
SPD_W meter_LS_spd []={ /* メーター ロングシュート */
{END,0x18,0x08,0xd0,0xd8,0xffe4,0x0043,0x34},
};
SPD_W point_STA_spd[]={ /* ポイント スタミナ */
{END,0x10,0x08,0x00,0xd0,0xfffc,0xffc6,0x33},
};
SPD_W point_SPD_spd[]={ /* ポイント スピード */
{END,0x10,0x08,0x00,0xd0,0xfffc,0xffd1,0x33},
};
SPD_W point_PWR_spd[]={ /* ポイント パワー */
{END,0x10,0x08,0x00,0xd0,0xfffc,0xffdc,0x33},
};
SPD_W point_PO_spd []={ /* ポイント パンチアウト */
{END,0x10,0x08,0x00,0xd0,0xfffc,0xffeb,0x33},
};
SPD_W p
0x20AC00#
;
#ifdef M_TEST
if( JOYW0 & TRG_SAN )
STEPW = RANKING_STEP;
#endif
STEPW_S = 0;
sp->ovrlay_step = 0;
sp->EGS = (sp->EGS<9)? (sp->EGS+1):sp->EGS;
/* 全競技終了時はここにこない筈だけど一応 */
//************************************************************
// 競技ロードに必要な情報をセット
//************************************************************
sp->ModSel.game = GET_MR_JUN( sp->EGS-1 ); /* 次競技セット */
sp->stage_no = sp->ModSel.game;
sp->mode_fg = sp->ModSel.mode;
sp->motion_no = sp->stage_no;
sp->mode_no = (sp->ModSel.game==0) ? sp->ModSel.ver[0] :
(sp->ModSel.game==1) ? sp->ModSel.ver[1] : 0;
//************************************************************
EntrySort(); /* エントリーソート */
}
else
{
STEPW = (sp->EGS==9)? ENDING_STEP:DEMO_STEP; /* ムービーへ */
/* 通常終了時はオープニング/全競技終了時はエンディングへ! */
STEPW_S = 0;
sp->ovrlay_step = 0;
sp->EGS = 1; /* ゲーム終了時は一応クリア */
if( sp->ModSel.muskind ) { /* ロード時のみ
0x21F200#
012,0xffac,0x14},
{DAT,0x10,0x10,0x40,0x80,0x001b,0xffac,0x14},
{END,0x10,0x10,0x10,0xa0,0x0023,0xffac,0x14},
};
SPD_W t_rnk_g2_spd[]={
{DAT,0x10,0x10,0x10,0x80,0xffce,0xffac,0x14}, // BEACH FLAGS
{DAT,0x10,0x10,0x40,0x80,0xffd6,0xffac,0x14},
{DAT,0x10,0x10,0x00,0x80,0xffdf,0xffac,0x14},
{DAT,0x10,0x10,0x20,0x80,0xffe8,0xffac,0x14},
{DAT,0x10,0x10,0x70,0x80,0xfff1,0xffac,0x14},
{DAT,0x10,0x10,0x50,0x80,0xffff,0xffac,0x14},
{DAT,0x10,0x10,0x30,0x90,0x0007,0xffac,0x14},
{DAT,0x10,0x10,0x00,0x80,0x0010,0xffac,0x14},
{DAT,0x10,0x10,0x60,0x80,0x0019,0xffac,0x14},
{END,0x10,0x10,0x20,0xa0,0x0022,0xffac,0x14},
};
SPD_W t_rnk_g3_spd[]={
{DAT,0x10,0x10,0x70,0x90,0xffd3,0xffac,0x14}, // PUNCH OUT
{DAT,0x10,0x10,0x40,0xa0,0xffdc,0xffac,0x14},
{DAT,0x10,0x10,0x50,0x90,0xffe6,0xffac,0x14},
{DAT,0x10,0x10,0x20,0x80,0xfff0,0xffac,0x14},
{DAT,0x10,0x10,0x70,0x80,0xfffa,0xffac,0x14},
{DAT,0x10,0x10,0x60,0x90,0x0008,0xffac,0x14},
{DAT,0x10,0x10,0x40,0xa0,0x0012,0xffac,0x14},
{END,0x10,0x10,0x30,0xa0,0x001c,0xffac,0x14},
};
SPD_W t_rnk_g4_spd[]={
{DAT,0x10,0x10,0x60,0x80,0xffd0,0xffac,0x14}, // GAME MAKER
{DAT,0x10,0x10,0x00,0x80,0xffda,0xffac,0x14},
{DAT,0x10,0x10,0x40,0x90,0xffe4,0xffac,0x14},
{DAT,0x10,0x10,0x40,0x80,0xffed,0xffac,0x14},
{DAT,0x10,0x10,0x40,0x90,0xfffb,0xffac,0x14},
{DAT,0x10,0x10,0x00,0x80,0x0005,0xffac,0x14},
{DAT,0x10,0x10,0x20,0x90,0x000f,0xffac,0x14},
{DAT,0x10,0x10,0x40,0x80,0x0018,0xffac,0x14},
{END,0x10,0x10,0x10,0xa0,0x0020,0xffac,0x14
0x232E00#
s0[4].u = s1[game].u;
s0[4].v = s1[game].v;
s0[4].palette = s1[game].palette;
}
}
else
{
for( i=0; i<8; i++ ) {
s0 = (SPD_W *)GetSpdN( MR_TPT + i );
s0[3].ccode = END;
}
}
plt_dx = -d_pos[game];
}
/*----------------------------*/
/* ランキング表 サブスコア表示 */
/*----------------------------*/
static u_char sub_score_idx[] = {
0, 2, 3, 5, 7, 9, 10, 12, 17
};
void sub_score( u_char game )
{
SPD_W *s0,*s1;
short i, j;
s1 = (SPD_
0x238A00#
ccode = END;
}
break;
case 4: // フェーズ4
ef_time++;
for( i=0; i<2; i++ ) {
if( ef_time <= 0x08 ) {
spd[44+i*6].ysize = ef_time;
spd[45+i*6].ysize = 0x00;
spd[46+i*6].ysize = 0x00;
spd[47+i*6].ysize = 0x00;
spd[48+i*6].ysize = 0x00;
spd[49+i*6].ysize = ef_time;
spd[49+i*6].offset_y = (i==0)? ((0xfffe)+0x08)-ef_time:
(0x0042+0x08)-ef_time;
}
else if( ef_time <= 0x10 ) {
spd[44+i*6].ysize = 0x08;
spd[45+i*6].ysize = ef_time-0x08;
spd[46+i*6].ysize = 0x00;
spd[47+i*6].ysize = 0x00;
spd[48+i*6].ysize = ef_time-0x08;
spd[48+i*6].offset_y = (i==0)? (0xfff6+0x08)-(ef_time-0x08):
(0x003a+0x08)-(ef_time-0x08);
spd[49+i*6].ysize = 0x08;
spd[49+i*6].offset_y = (i==0)? 0xfffe:0x0042;
}
else {
spd[44+i*6].ysize = 0x08;
spd[45+i*6].ysize = 0x08;
spd[46+i*6].ysize = ef_time-0x10;
spd[47+i*6].ysize = ef_time-0x10;
spd[47+i*6].offset_y = (i==0)? (0xfff4+0x02)-(ef_time-0x10):
(0x0038+0x02)-(ef_time-0x10);
spd[48+i*6].ysize = 0x08;
spd[48+i*6].offset_y = (i==0)? 0xfff6:0x003a;
spd[49+i*6].ysize = 0x08;
spd[49+i*6].offset_y = (i==0)? 0xfffe:0x0042;
}
}
if( ef_time == PH4_8 ) {
ef_time = 0;
ef_step++;
}
else {
spd[43].ccode = DAT;
spd[55].ccode = END;
}
break;
case 5: // フェーズ5
ef_time++;
if( ef_time <= 0x08 ) {
spd[56].xsize = ef_time;
0x248C00#
k_replay( void )
{
sp_w;
sys_w;
int res;
u_char i, ret;
if( mw.step0 < 2 ) { /* 前処理 */
} else
if( mw.step0 > 2 ) { /* 後処理 */
m_SprClrS( COMN+8, 16 );
} else
{ /* 中処理 */
switch( mw.step1 ) {
case 0:
/* リプレイデータ(データなし) 毎回内容更新! */
SWK.rp[0] = SWK.rp[1] = 0;
SWK.rp[2] = SWK.rp[3] = 0;
ExCallInit2(); /* リプレイロード */
mcAutoCheck( 1 ); /* オートロードする */
slTblSet( 5 ); /* リプレイ情報更新 */
mw.step1 ++;
break;
case 1:
if( SaveLoad() )
mw.step1 = 2;
break;
case 2:
Rp_LoadDatSet( COMN+8 );
Rp_LoadDatCur( COMN+8, pos_sav[NowSts] );
mw.step1 ++;
case 3:
ret = 1;
for( i=0; i<16; i++ )
ret &= m_SprStp( COMN+8+i, 0, ON );
if( ! ret )
break;
/* 実況 ON/OFF チェック(ここでも設定しておく) リプレイで生かす為 */
SD_call( (OP_VO == 0) ? SD_TYPEA : SD_TYPEB );
mw.step1 ++;
break;
case 4:
res = task_normal();
Rp_LoadDatCur( COMN+8, p
0x24EE00#
/* イメージフェードイン */
if( ! Fade( (8<<4)|0, GIMG, 1 ) )
break;
wk[0] ++;
break;
case 2: /* イメージ変更待ち */
GetIMGPram( GIMG, NowSts, pos_sav[NowSts] );
set_rgb_classw0( GIMG, 0x80 );
break;
case 3: /* イメージフェードアウト */
if( ! Fade( (8<<4)|2, GIMG, 1 ) )
break;
spr->kind = OFF;
wk[0] ++;
default: /* 終了 */
return 1;
case 10: /* イメージフェードイン */
GetIMGPram( GIMG, NowSts, pos_sav[NowSts] );
Fade( (8<<
0x25D200#
// 1競技
{DAT,0x10,0x10,0x30,0xa0,0xffde,0xffec,0x03},
{DAT,0x10,0x10,0x40,0xa0,0xffee,0xffec,0x03},
{DAT,0x10,0x10,0x20,0x20,0xffce,0xfff9,0x2b}, // SINGLE BATTLE
{DAT,0x10,0x10,0x00,0x10,0xffd4,0xfff9,0x2b},
{DAT,0x10,0x10,0x50,0x10,0xffdb,0xfff9,0x2b},
{DAT,0x10,0x10,0x60,0x00,0xffe4,0xfff9,0x2b},
{DAT,0x10,0x10,0x30,0x10,0xffec,0xfff9,0x2b},
{DAT,0x10,0x10,0x40,0x00,0xfff3,0xfff9,0x2b},
{DAT,0x10,0x10,0x10,0x00,0x0000,0xfff9,0x2b},
{DAT,0x10,0x10,0x00,0x00,0x0008,0xfff9,0x2b},
{DAT,0x10,0x10,0x30,0x20,0x0010,0xfff9,0x2b},
{DAT,0x10,0x10,0x30,0x20,0x0018,0xfff9,0x2b},
{DAT,0x10,0x10,0x30,0x10,0x0020,0xfff9,0x2b},
{END,0x10,0x10,0x40,0x00,0x0028,0xfff9,0x2b},
};
SPD_W mr_all_spd[]={
{DAT,0x10,0x10,0x60,0x90,0xffd0,0x0018,0x03}, // 全競技
{DAT,0x10,0x10,0x30,0xa0,0xffe0,0x0018,0x03},
{DAT,0x10,0x10,0x40,0xa0,0xfff1,0x0018,0x03},
{DAT,0x10,0x10,0x00,0x00,0xffce,0x0025,0x2b}, // ALL BATTLES
{DAT,0x10,0x10,0x30,0x10,0xffd6,0x0025,0x2b},
{DAT,0x10,0x10,0x30,0x10,0xffdd,0x0025,0x2b},
{DAT,0x10,0x10,0x10,0x00,0xffe9,0x0025,0x2b},
{DAT,0x10,0x10,0x00,0x00,0xfff1,0x0025,0x2b},
{DAT,0x10,0x10,0x30,0x20,0xfff9,0x0025,0x2b},
{DAT,0x10,0x10,0x30,0x20,0x0001,0x0025,0x2b},
{DAT,0x10,0x10,0x30,0x10,0x0009,0x0025,0x2b},
{DAT,0x10,0x10,0x40,0x00,0x0011,0x0025,0x2b},
{END,0x10,0x10,0x20,0x20,0x0019,0x0025,0x2b},
};
SPD_W c_muscle_spd[]={ // カーソル選択時
{DAT,0x70,0x20,0x80,0x80,0xffc0,0xffea,0x10}, // SINGLE BATTLE
{END,0x10,0x20,0xf0,0x80,0x0030,0xffea,0x10}, //
0x274C00#
(MS_OP) */
/*--------------------------------------*/
(Ulong)t_option1_spd, /* 0x30ac OPTION (TTL) */
(Ulong)t_option2_spd, /* 0x30ad オプション (TTL) */
(Ulong)op_stup_spd , /* 0x30ae 設定 */
(Ulong)op_inst_spd , /* 0x30af 操作説明 */
(Ulong)op_prof_spd , /* 0x30b0 プロフィール */
(Ulong)op_gall_spd , /* 0x30b1 ギャラリー */
(Ulong)c_option_spd , /* 0x30b2 カーソル選択時 */
(Ulong)h_option_spd , /* 0x30b3 カーソル非選択時 */
/*--------------------*/
/* 設定 (MS_O1) */
/*--------------------*/
(Ulong)t_setup1_spd, /* 0x30b4 SET UP (TTL) */
(Ulong)t_setup2_spd, /* 0x30b5 設定の変更 (TTL) */
(Ulong)op_stup1_spd, /* 0x30b6 レベル */
(Ulong)op_stup2_spd, /* 0x30b7 実況 */
(Ulong)op_stup3_spd, /* 0x30b8 音声 */
(Ulong)op_stup4_spd, /* 0x30b9 COM競技 */
(Ulong)op_stup5_spd, /* 0x30ba コントローラ1 */
(Ulong)op_stup6_spd, /* 0x30bb コントローラ2 */
0x280C00#
1,PR1 ); // タイトルBG(中)
set2dN( 4, 0x3000, MODE256,0x100,0x00,0x1f,(ttflg)?0xe0:0xf0,1,PR1 ); // タイトルBG(右)
#else
set2dN( 2, 0x3000, MODE256, 0x00,0x00,0x1d,0xf0,1,PR1 ); // タイトルBG(左)
set2dN( 3, 0x3000, MODE256, 0x80,0x00,0x1e,0xf0,1,PR1 ); // タイトルBG(中)
set2dN( 4, 0x3000, MODE256,0x100,0x00,0x1f,0xf0,1,PR1 ); // タイトルBG(右)
#endif
set_rgb_classw0( 2, 0 );
set_rgb_classw0( 3, 0 );
set_rgb_classw0( 4, 0 );
sp->fade_fg = 0; /* 共通フェードモジュールの状態を強制クリア */
mw.step0 = TIT_MAIN_FIN;
break;
case TIT_MAIN_FIN: /* フェードイン */
if( ! Fade( (8<<4)|0, 0x02, 0x03 ) )
break;
mw.time0 = 20;
mw.step0 = TIT_MAIN_WAIT;
break;
case TIT_MAIN_WAIT: // PRESS START 表示ウェイトタイマー
mw.time0 --;
if( mw.time0 > 0 )
break;
mw.step0 = TIT_MAIN_DSP1;
break;
case TIT_MAIN_DSP1: // PRESS START 表示開始
#if 1
set2dN( 0x05,0x3001,MODE256,0,-16,0x1d,(ttflg)?0xe0:0xf0,1,PR0 ); // PRESS START
#else
set2dN( 0x05,0x3001,MODE256,0,-16,0x1d,0xf0,1,
0x293600#
0058,0xfff0-20,0x01},
{DAT,0x10,0x10,0x10,0x10,0xffad,0x0000-20,0x01},
{DAT,0x10,0x10,0x40,0x40,0xffd9,0xfff0-20,0x01},
{DAT,0x10,0x10,0xf0,0x20,0xffef,0x0000-20,0x01},
{DAT,0x10,0x10,0xc0,0x70,0xffff,0x0000-20,0x01},
{DAT,0x10,0x10,0x90,0x80,0x000f,0x0000-20,0x01},
{DAT,0x10,0x10,0xd0,0xa0,0x001f,0x0000-20,0x01},
{DAT,0x10,0x10,0x20,0x70,0x002f,0x0000-20,0x01},
{DAT,0x10,0x10,0x50,0x40,0x004f,0x0000-20,0x01},
{DAT,0x10,0x10,0x10,0x20,0xffe6,0x0010-20,0x01},
{DAT,0x10,0x10,0x30,0x30,0xff
0x296200#
SPD_W _warn182_spd[]={
{DAT,0x10,0x10,0x40,0x40,0xff96,0xfff8-20,0x01},
{DAT,0x10,0x10,0x50,0x40,0xffa8,0xfff8-20,0x01},
{DAT,0x10,0x10,0x60,0x40,0xffba,0xfff8-20,0x01},
{DAT,0x10,0x10,0x40,0x70,0x001a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x40,0x70,0x003a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x90,0x10,0xff90,0x0008-20,0x01},
{DAT,0x10,0x10,0xa0,0x10,0xffe4,0x0008-20,0x01},
{DAT,0x10,0x10,0xb0,0x10,0xfff6,0x0008-20,0x01},
{DAT,0x10,0x10,0xc0,0x10,0x0008,0x0008-20,0x01},
{DAT,0x10,0x10,0x40,0x60,0x006a,0x0008-20,0x01},
{END,0x10,0x10,0x00,0x50,0x0000,0x0020-20,0x01},
};
/* カーソル OK/再チェック */
SPD_W _wc_check18_spd[]={
{DAT,0x48,0x18,0xb0,0xe8,0xffa2,(0x001e)-20,0xfe},
{END,0x70,0x18,0x80,0xd0,0xfff0,(0x001e)-20,0xfe},
};
/* (確認) データ壊れ */
SPD_W _warn191_spd[]={
{DAT,0x10,0x10,0xd0,0x60,0xffb6,0xfff8-20,0x01},
{DAT,0x10,0x10,0x00,0x90,0xffd6,0xfff8-20,0x01},
{DAT,0x10,0x10,0x50,0x40,0xffe6,0xfff8-20,0x01},
{DAT,0x10,0x10,0x80,0x20,0x000a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x30,0x30,0x001a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x10,0x00,0x002a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x70,0x20,0x003a,0xfff8-20,0x01},
{DAT,0x10,0x10,0x50,0x40,0xfff1,0x0008-20,0x01},
{DAT,0x10,0x10,0x00,0x00,0x0001,0x0008-20,0x01},
{DAT,0x10,0x10,0x60,0x20,0x0011,0x0008-20,0x01},
{DAT,0x10,0x10,0x50,0x00,0x0021,0x0008-20,0x01},
{DAT,0x10,0x10,0x20,0x20,0x0031,0x0008-20,0x01},
{DAT,0x10,0x10,0xe0,0xc0,0xffb4,0x0020-20,0x01},
{DAT,0x10,0x10,0xa0,0xc0,0xffc4,0x0020-20,0x01},
{DAT,0x10,0x10,0x10,0x90,0
0x298A00#
/* リプレイセーブ tA */
{DAT,0x10,0x10,0xc0,0x80,0xff49,0xff98,0x06},
{DAT,0x10,0x10,0x80,0x80,0xff5a,0xff98,0x06},
{DAT,0x10,0x10,0x10,0x60,0xff6b,0xff98,0x06},
{DAT,0x10,0x10,0x30,0x80,0xff7c,0xff98,0x06},
{DAT,0x10,0x10,0xb0,0xd0,0xff8d,0xff98,0x06},
{DAT,0x10,0x10,0xc0,0x70,0xff9e,0xff98,0x06},
{DAT,0x10,0x10,0x30,0x80,0xff38,0xffcf,0x04}, /* セーブするデータを んで さい tA */
{DAT,0x10,0x10,0xb0,0xd0,0xff49,0xffcf,0x04},
{DAT,0x10,0x10,0xc0,0x70,0xff5a,0xffcf,0x04},
{DAT,0x10,0x10,0x20,0x20,0xff6b,0xffcf,0x04},
{DAT,0x10,0x10,0x70,0x20,0xff7c,0xffcf,0x04},
{DAT,0x10,0x10,0xd0,0x60,0xff8d,0xffcf,0x04},
{DAT,0x10,0x10,0xb0,0xd0,0xff9e,0xffcf,0x04},
{DAT,0x10,0x10,0x00,0x90,0xffaf,0xffcf,0x04},
{DAT,0x10,0x10,0x70,0x30,0xffc0,0xffcf,0x04},
{DAT,0x10,0x10,0x90,0x30,0xffe4,0xffcf,0x04},
{DAT,0x10,0x10,0xd0,0x00,0xfff5,0xffcf,0x04},
{DAT,0x10,0x10,0x00,0x20,0x0019,0xffcf,0x04},
{END,0x10,0x10,0x10,0x00,0x002a,0xffcf,0x04},
};
SPD_W rtit2_spd[]={
{DAT,0x10,0x10,0x20,0x50,0xffd2,0xffcf,0x04}, /* 選 下 tB */
{DAT,0x10,0x10,0xa0,0x20,0x0007,0xffcf,0x04},
{DAT,0x28,0x08,0xb0,0x08,0xff48,0xffb3,0x66}, /* NOW DATA tB */
{END,0x30,0x08,0x80,0x08,0xff48,0xffbd,0x66},
};
/* データ見出し */
SPD_W _replay_spd[]={
{DAT,0x30,0x08,0x80,0x08,0xff44,0xfff1,0x04}, /* DATA1 tB */
{DAT,0x08,0x08,0xd8,0x08,0xff77,0xfff1,0x04},
{DAT,0x30,0x08,0x80,0x08,0xff44,0x0011,0x04}, /* DATA2 tB */
{DAT,0x10,0x08,0xe0,0x08,0xff73,0x0011,0x
0x29FA00#
3}, /* ON */
{END,0x10,0x08,0xf0,0xd8,0x002c,0xffe5,0x03},
{DAT,0x10,0x08,0xf0,0xd0,0x001b,0xffe5,0x03}, /* OFF */
{DAT,0x10,0x08,0xf0,0xe0,0x0026,0xffe5,0x03},
{END,0x10,0x08,0xf0,0xe0,0x0030,0xffe5,0x03},
};
SPD_W voiceL_spd[]={ /* 実況 */
{DAT,0x10,0x10,0x40,0x30,0xffbe,0xfff0,0x03},
{END,0x10,0x10,0x50,0x30,0xffd0,0xfff0,0x03},
};
SPD_W voiceR_spd[]={ /* ON/OFF */
{DAT,0x10,0x08,0xf0,0xd0,0x001f,0xfff5,0x03}, /* ON */
{END,0x10,0x08,0xf0,0xd8,0x002c,0xfff5,0x03},
{DAT,0x10,0x08,0xf0,0xd0,0x001b,0xfff5,0x03}, /* OFF */
{DAT,0x10,0x08,0xf0,0xe0,0x0026,0xfff5,0x03},
{END,0x10,0x08,0xf0,0xe0,0x0030,0xfff5,0x03},
};
SPD_W soundL_spd[]={ /* 音声 */
{DAT,0x10,0x10,0x60,0x30,0xffbe,0x0000,0x03},
{END,0x10,0x10,0x70,0x30,0xffd0,0x0000,0x03},
};
SPD_W soundR_spd[]={ /* ステレオ/モノラル */
{END,0x30,0x08,0xd0,0xc8,0x0015,0x0004,0x03}, /* ステレオ */
{END,0x30,0x08,0x80,0xe8,0x0015,0x0004,0x03}, /* モノラル */
};
/* 競技変更 */
SPD_W Tgmchg1_spd[]={ /* 競技変更 tA (タイトル) */
{DAT,0x10,0x10,0x80,0x70,0xffd4,0xffbe,0x04},
{END,0x10,0x10,0x60,0x70,0xffec,0xffbe,0x04},
};
SPD_W Tgmchg2_spd[]={ /* 競技変更 tB (タイトル) */
{DAT,0x10,0x10,0x20,0x50,0x0004,0xffbe,0x04},
{END,0x10,0x10,0x70,0xe0,0x001c,0xffbe,0x04},
};
SPD_W gm01_spd[]={ /* パンチアウト */
{END,0x58,0x08,0x00,0x80,0xffd6,0xffd5,0x03},
};
SPD_W gm02_spd[]={ /* ナインフープス */
{END,0x60,0x08,0x00,0xa0,0xffcf,0xffe4,0x03},
};
SPD_W gm03_spd[]={ /* ビーチフラッグス */
{END,0x70,0x08,0x00,0x88,0xffc7,0xfff3,0x03},
};
0x2A2C00#
b}, /* プレイヤーマーク(プレート) */
{DAT,0x80,0x10,0x00,0x80,0xffa7,0xfff2,0x0b}, /* 選手名(2パーツで1枚)(プレート) */
{DAT,0x20,0x10,0x28,0x90,0x0020,0xfff2,0x0b},
{DAT,0x48,0x10,0x00,0x90,0x003f,0xfff2,0x0b}, /* ポイント(プレート) */
{DAT,0x10,0x10,0x40,0xf0,0xff7d,0x0003,0x20}, /* 競技順数字(プレートより手前) */
{DAT,0x10,0x10,0x00,0xd0,0xff93,0x0003,0x18}, /* プレイヤーマーク(プレートより手前) */
{DAT,0x10,0x10,0x70,0xe0,0x0075,0x0003,0x20}, /* ポイントP(プレートより手前) */
{DAT,0x18,0x10,0x80,0x80,0xff7a,0x0003,0x0b}, /* 競技順数字(プレート) */
{DAT,0x18,0x10,0x48,0xa0,0xff8f,0x0003,0x0b}, /* プレイヤーマーク(プレート) */
{DAT,0x80,0x10,0x00,0x80,0xffa7,0x0003,0x0b}, /* 選手名(2パーツで1枚)(プレート) */
{DAT,0x20,0x10,0x28,0x90,0x0020,0x0003,0x0b},
{DAT,0x48,0x10,0x00,0x90,0x003f,0x0003,0x0b}, /* ポイント(プレート) */
{DAT,0x10,0x10,0x50,0xf0,0xff7d,0x0014,0x20}, /* 競技順数字(プレートより手前) */
{DAT,0x10,0x10,0x00,0xd0,0xff93,0x0014,0x18}, /* プレイヤーマーク(プレートより手前) */
{DAT,0
0x2A7600#
x04},
{DAT,0x10,0x10,0xd0,0xc0,0xffc7,0xffc0,0x04},
{DAT,0x10,0x10,0x60,0xc0,0xffd5,0xffc0,0x04},
{DAT,0x10,0x10,0x30,0xd0,0xffe8,0xffc0,0x04},
{DAT,0x10,0x10,0x70,0xc0,0xfff6,0xffc0,0x04},
{DAT,0x10,0x10,0xe0,0xc0,0x0005,0xffc0,0x04},
{DAT,0x10,0x10,0xe0,0xc0,0x0014,0xffc0,0x04},
{DAT,0x10,0x10,0x40,0xd0,0x0022,0xffc0,0x04},
{DAT,0x10,0x10,0x40,0xc0,0x0036,0xffc0,0x04},
{END,0x10,0x10,0x80,0xd0,0x0043,0xffc0,0x04},
};
/*---------------------------------------------------------------
0x2B1600#
**************
総合優勝でNO1の文字を表示させる
in: u_char* member 顔を表示させるキャラ#が入った箱へのポインタ
char num 何人の顔を表示させるか
※TRANS_STEPを使用しています
***************************************************************************/
int SetNO1_Fin( u_char* member, char num )
{
sys_w;
sp_w;
switch( TRANS_STEP ){
case 0: /*各種 初期化*/
/*NO.1の全体文字の初期化*/
set2d( G_CLS_W_NO1, SPD_W_NO1, MODE16, 0,0, 14, 0, 9, 0 ); /*NO1ロゴ全体 表示はしない*/
0x2C6AF0#
ス」(II)
FURU\FN_F28.VAG #「リングが動くだけで、こんなにも入らなくなるものか」(II)
# 結果表示 記録コール
FURU\FN_G00.VAG #「(選手名)、」「記録」「8つ!」表下参照
# リング数カウント
#カウント 通常テンション
FURU\FN_H01.VAG #「1つ目」
FURU\FN_H02.
0x2D2010#
オ音声 オフセットテーブル*/
#include <sys\types.h>
#include "sd_vx177.h"
VAG_SESTR_S SD_se_stream2[] = {
/*Dummy*/
{ 0x00000000/0x800+VOFS00, (0x00000000+0x7ff)/0x800, FLG1 },
#include "cmn_set2.h" /*共有音声*/
{ 0x00000000/0x800+VOFS11, (0x0000c850+0x7ff)/0x800, FLG1 }, //FURU\FN_A00.VAG
{ 0x0000d000/0x800+VOFS11, (0x00006a70+0x7ff)/0x800, FLG1 }, //FURU\FN_B00.VAG
{ 0x00014000/0x800+VOFS11, (0x00008dd0+0x7ff)/0x800, FLG1 }, //FURU\FN_B01.VAG
{ 0x0001d000/
0x2D9E00#
_P3_X+0xa0, EPV_P3_Y }, /*紫色*/
{ EPV_P3_X+0xb0, EPV_P3_Y }, /*桃色*/
{ EPV_P3_X+0xc0, EPV_P3_Y }, /*特1*/
{ EPV_P3_X+0xd0, EPV_P3_Y }, /*特2*/
};
/*下着3 12タイプ/8color*/
short under3_pal_v[][2] = { /*size w=8,h=1 下着3色*/
{ EPV_P4_X+0x00, EPV_P4_Y }, /*黒色*/
{ EPV_P4_X+0x08, EPV_P4_Y }, /*白色*/
{ EPV_P4_X+0x10, EPV_P4_Y }, /*赤1*/
{ EPV_P4_X+0x18, EPV_P4_Y }, /*赤2*/
{ EPV_P4_X+0x20, EPV_P4_Y }, /*橙色*/
{ EPV_P4_X+0x28, EPV_P4_Y }, /*黄色*/
{ EPV_P4_X+0x30,
0x375E00#
^初期化
;
#############################################################################*/
/* Model Set */
static void set_obj3D( OBJ3D_W *pObj3D, u_long *addr, u_char ot_no, u_char type )
{
pObj3D->be = 1; /* disp on */
pObj3D->ot_no = ot_no; /* set ot no */
pObj3D->type = type; /* polygon type */
init_HMD ( pObj3D, addr );
}
static void set_obj3D_chr( OBJ3D_W *pObj3D, u_long *addr, u_char ot_no, u_char type )
{
pObj3D->be = 1; /* disp on */
pObj3D->o
0x38DA00#
00A3D68 LTalk_Furu_Replay
800A36D8 LTalk_Furu_Shoot
800A37C8 LTalk_Furu_Success
800A526C LTalk_Hatu_After
800A5064 LTalk_Hatu_Before
800A50C0 LTalk_Hatu_Declare
800A58B8 LTalk_Hatu_GEnd
800A4AF0 LTalk_Hatu_Intro
800A5534 LTalk_Hatu_Miss
800A4A54 LTalk_Hatu_Name
800A497C LTalk_Hatu_Number
800A4CBC LTalk_Hatu_Past
800A5718 LTalk_Hatu_Replay
800A5274 LTalk_Hatu_Success
800A491C LTalk_Shin_Name
800A46F8 LTalk_Shin_Number
800A4464 LTalk_Shin_Replay
800A2DC8 LTalk_Test
800A0BF0 LView_Chase
800A0B30 LView_Cont
800A103C LView_Event_GMain
800A0C24 LView_Event_Replay
800A087C LView_Init
800A0A80 LView_Notice
800A0B38 LView_Parent
800A0BD8 LView_Parent_Set
800A0AD8 LView_Projection
800A0AA4 LView_Set
800A0924 LView_System
80093D08 LastTop
800C2AF8 LdatSet
80027564 LightColor
80026204 LoadClut2
800496D4 LoadEf
800237FC LoadImage
80025C9C LoadImage2
80026114 LoadTPage
80027758 Lzc
801F9ACC MASTER_SPU
801F9AAC MASTER_VOL
8001B44C MCardInit
800C1604 MCurPos
801D6000 MEMBER_TABLE
80170000 MEMCARD_ADDRESS
800D0000 MODEL_TABLE
800D0000 MOVIE_ADDRESS
800C41D8 MR_JUN
800F0000 MVDATA_ADDRESS
800C0000 M_COMN_ADDRESS
8003AAC4 MemCardAccept
8003BA98 MemCardCallback
8003AF5C MemCardClose
8003BBC8 MemCardCreateFile
8003BDC4 MemCardDeleteFile
80039EDC MemCardEnd
8003A75C MemCardExist
8003BF78 MemCardFormat
8003B838 MemCardGetDirentry
80039EAC MemCardInit
8003ADD4
0x393400#
ialSet
8009E864 TVcam03SerialSetDirect
8009EA8C TVcam03SerialStop
8009E560 TVcam03Set
8009E594 TVcam03SetDirect
8009E5BC TVcam03SetParent
8009EAAC TVcam03SetPosition
8009883C TaruClsInit
800988F4 TaruClsSet
8009A560 TaruCopy
80098ACC TaruHitClr
80098BA8 TaruHitDraw
80098B70 TaruHitMove
80098AF4 TaruHitSet
80098C80 TaruLoad
8009A728 TaruMotion
8009A1A8 TaruMove
80099DC8 TaruResult
8009A510 TaruSEcall
8009A4EC TaruSEset
800989A4 TaruSet
80098C38 TaruStore
8017E984 Tcname1_spd
8017E99C Tcname2_spd
80026414 TermPrim
8003569C TestEvent
8009B33C Test_Area
80020164 Test_Init
80020260 Test_Main
8017E894 Tgmchg1_spd
8017E8AC Tgmchg2_spd
80090598 Title
800A11FC Tour02OFF
8009F164 Tour02Res
8009F06C Tour02Set
80099AC0 TourOFF
80097A28 TourRes
80097930 TourSet
80094D40 TournamentUp
8017E540 Tpause_spd
8017E954 Tpname1_spd
8017E978 Tpname2_spd
80027384 TransMatrix
80030204 TransposeMatrix
8017
0x398400#
800A51A8 _pchild06_sbss_org
800A51A8 _pchild06_sbss_orgend
00000000 _pchild06_sbss_size
800A51A8 _pchild06_sdata_obj
800A51A8 _pchild06_sdata_objend
800A51A8 _pchild06_sdata_org
800A51A8 _pchild06_sdata_orgend
00000000 _pchild06_sdata_size
00016830 _pchild06_size
8009068C _pchild06_text_obj
800A4968 _pchild06_text_objend
8009068C _pchild06_text_org
800A4968 _pchild06_text_orgend
000142DC _pchild06_text_size
800A4D38 _pchild07_bss_obj
800A8071 _pchild07_bss_objend
800A4D38 _pchild07_bss_org
800A8071 _pchild07_bss_orgend
00003339 _pchild07_bss_size
800A8080 _pchild07_ctors_obj
800A8080 _pchild07_ctors_objend
800A8080 _pchild07_ctors_org
800A8080 _pchild07_ctors_orgend
00000000 _pchild07_ctors_size
800A3AE0 _pchild07_data_obj
800A4D36 _pchild07_data_objend
800A3AE0 _pchild07_data_org
800A4D36 _pchild07_data_orgend
00001256 _pchild07_data_size
800A8080 _pchild07_dtors_obj
800A8080 _pchild07_dtors_objend
800A8080 _pchild
0x39FC00#
gt_fuki_spd
80040D24 gt_rogo_spd
80040D54 gt_sousa_spd
8002AA04 gte_init
80030244 gte_rotate_z_matrix
800A6628 h_edit_spd
800A1A70 h_exgm_spd
800A0DE0 h_game_spd
800A0048 h_mode2_spd
8009FEC8 h_mode_spd
800A051C h_muscle_spd
800A036C h_newcon_spd
800A48AC h_option_spd
800A246C h_repdt_spd
800A4E34 h_setup_spd
800A2274 h_sl_spd
800A1230 h_ver9h_spd
800A11A0 h_verpo_spd
800A15CC h_verset_spd
8003F374 hair_pal_v
8003F8FC hair_ptn_v
8003D1BC has_aru
8003E8EC hatuta_spd
8009F098 hawk_eye
80093A48 head_downstep
8009316C head_plain
80093364 head_slope
8009355C head_upstep
800A4A7C highgauge_tbl
800A5D48 himo
800A0E70 himoI
800A0F8C himoII
800A1034 himoIII
800A140C himoIV
800A22B4 himoV
800A2768 himoVI
800A5AB0 himo_final_joint
800A4C3C himo_func
800A1E18 himo_hokan
800A09D0 himo_init
800A0AAC himo_reset
800A09A0 himo_set_coord
800A7078 hira_moj_spd
800A7054 hira_plt_spd
800A5AB8 hj3
8
0x3B6400#
Replay03IsSave
800A140C himoIV
800A1410 ver_set1_spd
800A1484 Replay03Operate
800A14AC ver_set2_spd
800A14DC ver_kind0_spd
800A14FC SetG2dSt06MapDisp
800A1500 ver_kind1_spd
800A153C ver_ya_spd
800A1544 LReplay_Play
800A1574 LReplay_Posi
800A1584 c_verset_spd
800A15B4 bf_GageInit
800A15CC h_verset_spd
800A160C SetG2dSt06PassDisp
800A1614 exgm_00_spd
800A16A0 LReplay_Set
800A16AC Replay03TVcamInit
800A16BC exgm_01_spd
800A16FC SetG2dSt06ShootDisp
800A1748 Sh_Replay_Calculation
800A1758 exgm_03_spd
800A1768 LReplay_Cont
800A1794 bf_GageSetup
800A17EC SetG2dSt06RUPActive
800A1830 bf_GageDraw
800A1854 exgm_05_spd
800A1894 bf_GageAddDraw
800A1938 exgm_08_spd
800A1984 SetG2dSt06RRIGHTActive
800A19F8 c_exgm_spd
800A1A14 effect_Shadow_03
800A1A70 h_exgm_spd
800A1A7C Sh_Replay_Out
800A1ABC LReplay_Anime
800A1AE8 ex_end_spd
800A1B0C Sh_Replay_Motion
800A1B20 effect_Shadow1_03
800A1B24 ex_no_spd
800A1B60 t
0x3BB600#
A7858 _pchild05_orgend
800A7858 _pchild05_objend
800A7858 _pchild05_dtors_orgend
800A7858 _pchild05_dtors_org
800A7858 _pchild05_dtors_objend
800A7858 _pchild05_dtors_obj
800A7858 _pchild05_ctors_orgend
800A7858 _pchild05_ctors_org
800A7858 _pchild05_ctors_objend
800A7858 _pchild05_ctors_obj
800A7864 gl_subfunc
800A7888 power_minimum
800A7930 ch_pname_spd
800A7954 em_08_spd
800A7970 ls_panel_pos
800A7994 ls_bingo_pt
800A799C ls_bingo_tbl
800A79B0 ls_bmot_i
0x45C600#
x; .val 44; .scl 8; .type 0x3; .endef
.def miny; .val 46; .scl 8; .type 0x3; .endef
.def maxx; .val 48; .scl 8; .type 0x3; .endef
.def maxy; .val 50; .scl 8; .type 0x3; .endef
.def hwd0; .val 52; .scl 8; .type 0x3; .endef
.def vwd0; .val 54; .scl 8; .type 0x3; .endef
.def tag; .val 56; .scl 8; .type 0x1f; .endef
.def si; .val 60; .scl 8; .tag .24fake; .size 24; .type 0x8; .endef
.def .eos; .val 84; .scl 102; .tag .104fake; .size 84; .endef
.def GsADIV_F4; .scl 13; .tag .104fake; .size 84;
0x4E9400#
SELECT TO SKIP COMMON VOICE\n\n");
#if 1
FntPrint("L1 & UP,DOWN SE NUM CHANGE\n");
FntPrint("SE_NUMBER = %d(%d)\n\n",SE_num-SD_SE_START,(SE_num-se_max[0])-SD_SE_START );
FntPrint("R1 & UP,DOWN SE KIND CHANGE\n");
FntPrint("SE KIND = %s\n\n",kind_name[SE_kind-1]);
//#else
FntPrint("UP<DOWN OUEN VOICE CHANGE\n");
FntPrint("OUEN NUMBER = %d\n\n",Ouen-SD_SE_OUEN );
#endif
#endif
///////////////////////////////////////////////////////////////
SD_vsync();
DrawSync(0);
VSync ( 0 );
pollhost ();
/*パッドの読み取り*/
g_GetPad();
FntFlush(-1);
frame++;
}
}
0x4F1A00#
10 /*予備 */
#define SD_11_GAGE3 1311 /*ゲージ音(ため) */
/*ビーチフラッグス*/
#define SD_12_FUE1 1297 /*笛1(ヨーイ) */
#define SD_12_VOICE 1298 /*声(Head Down!) */
#define SD_12_FUE2 1299 /*笛2(スタート) */
#define SD_12_FUE3 1300 /*笛3(フライング)*/
#define SD_12_FOOTL1 1301 /*左足音1P */
#define SD_12_FOOTR1 1302 /*右足音2P */
#define SD_12_FOOTL2 1303 /*左足音1P */
#define SD_12_FOOTR2 1304 /*左足音2P */
#define SD_12_GETUP1 1305 /*スタート時1P */
#define SD_12_GETUP2 1306 /*スタート時2P */
#define SD_12_DIVE1 1307 /*跳び込み1P */
#define SD_12_DIVE2 1308 /*跳び込み2P */
#define SD_12_MOVE1 1309 /*ガサゴソ1 */
#define SD_12_MOVE2 1310 /*ガサゴソ2 */
/*ガロンスロー*/
#define SD_13_FOOTR 1297 /*右足音 */
#define SD_13_FOOTL 1298 /*左足音 */
#define SD_13_BOUNDa1 1299 /*樽落下1_1(強い)*/
#define SD_13_BOUNDa2 1300 /*樽落下1_2(弱い)*/
#define SD_13_BOUNDb1 1301 /*樽落下2_1(強い)*/
#define SD_13_BOUNDb2 1302 /*樽落下2_2(弱い)*/
#define SD_13_BOARD1 1303 /*板に激突1(強い) */
#define SD_13_BOARD2 1304 /*板に激突2(弱い) */
#define SD_13_MAT 1305 /*マットに落下 */
#define SD_13_SMOKE 1306 /*成功後のスモーク */
#define SD_13_GAGE1 1307 /*パワーゲージ */
#define SD_13_GAGE2 1308 /*ゲージ決定 */
#define SD_13_FOOT2R 1309 /*右足音弱 */
#define SD_13_FOOT2L 1310 /*左足音弱 */
#define SD_13_Q 1311 /*足音きゅっ */
/*バック転50m走*/
#define
0x522E00#
800, (Ulong)TIM_TABLE2 }, /* 26 テクスチャ */
{ 0x0008e800/0x800+CD_DATA00, (0x00005961+0x7ff)/0x800, (Ulong)HOMEMODEL_TABLE }, /* 27 07 池谷1*/
{ 0x00094800/0x800+CD_DATA00, (0x00005961+0x7ff)/0x800, (Ulong)AWAYMODEL_TABLE }, /* 28 池谷2*/
{ 0x0009a800/0x800+CD_DATA00, (0x00007510+0x7ff)/0x800, (Ulong)TIM_TABLE2 }, /* 29 テクスチャ */
{ 0x000a2000/0x800+CD_DATA00, (0x000057ad+0x7ff)/0x800, (Ulong)HOMEMODEL_TABLE }, /* 2a 08 ケイン1*/
{ 0x000a7800/0x800+CD_DATA00, (0x000057ad+0
0x525600#
g)TIM_TABLE2 }, /* 87 */
{ 0x00017000/0x800+CD_DATA03, (0x000032b0+0x7ff)/0x800, (Ulong)TIM_TABLE2 }, /* 88 */
{ 0x0001a800/0x800+CD_DATA03, (0x00004981+0x7ff)/0x800, (Ulong)MODEL_TABLE }, /* 89 ナインフープス */
{ 0x0001f800/0x800+CD_DATA03, (0x0000253c+0x7ff)/0x800, (Ulong)TIM_TABLE2 }, /* 8a */
{ 0x00022000/0x800+CD_DATA03, (0x00005fa1+0x7ff)/0x800, (Ulong)MODEL_TABLE }, /* 8b */
{ 0x00028000/0x800+CD_DATA03, (0x00004234+0x7ff)/0x800, (Ulong)TIM_TA
0x527600#
800, (Ulong)TUG_DEMO_ADDR_1 }, /* 0xd2 デモモーション2P 9 */
{ 0x0010e000/0x800+CD_DATA07, (0x0000d428+0x7ff)/0x800, (Ulong)TUG_DEMO_ADDR_0 }, /* 0xd3 デモモーション1P a */
{ 0x0011b800/0x800+CD_DATA07, (0x0000d428+0x7ff)/0x800, (Ulong)TUG_DEMO_ADDR_1 }, /* 0xd4 デモモーション2P a */
{ 0x00129000/0x800+CD_DATA07, (0x0000d7c0+0x7ff)/0x800, (Ulong)TUG_DEMO_ADDR_0 }, /* 0xd5 デモモーション1P b */
{ 0x00136800/0x800+CD_DATA07, (0x0000d7c0+0x7ff)/0x800, (Ulong)TUG_DEMO_ADDR_1 }, /* 0xd6 デ
0x52B610#
*/
(Ulong)TIM_TABLE2, /* 32 おさるテクスチャ */
(Ulong)HOMEMODEL_TABLE, /* 33 0B ショーモデル1 */
(Ulong)AWAYMODEL_TABLE, /* 34 ショーモデル2 */
(Ulong)TIM_TABLE2, /* 35 ショーテクスチャ */
(Ulong)HOMEMODEL_TABLE, /* 36 0C 金剛くんモデル1 */
(Ulong)AWAYMODEL_TABLE, /* 37 金剛くんモデル2 */
(Ulong)TIM_TABLE2, /* 38 金剛くんテクスチャ */
(Ulong)HOMEMODEL_TABLE, /* 39 0D 自作1モデル1 */
(Ulong)AWAYMODEL_TABLE, /* 3a 自作1モデル2 */
(Ulong
0x53AE00#
;
u_char style,model;
static u_char edit_step = 0;
if ( sp->ModSel.mode != 3 ){
style = s->edit_head[sp->chara[side]-CR_ED1].style;
model = s->edit_head[sp->chara[side]-CR_ED1].model;
}else{
style = (ReplayHead+side)->style;
model = (ReplayHead+side)->model;
}
switch( edit_step ){
case 0: /*体モデル読み込み*/
if ( GED_LoadBody( side, style ) )
edit_step++;
break;
case 1:
if ( GED_LoadHead( side, model/10 ) ){
edit_step = 0;
return 1;
}
brea
0x550400#
ude "sdcall2.h"
#include "lt_spd.h"
/*==========================================================================
==define
==========================================================================*/
/*金剛君と文字の構造体*/
typedef struct {
void (*func)(); /*動作関数*/
int step;
OPD_HEAD opd;
OPD_ANM anm;
short timer;
unsigned char pal;
unsigned char index;
unsigned char trg;
} L_KONGO;
/*==========================================================================
==prototype
==========================================================================*/
void KongoWaitTrans( int ); /*キャラ転送と初期設定*/
int KongoWaitPlay( int ); /*ローディング中に行う処理本体*/
void KonFade(void); /*残像用*/
/*==========================================================================
==else
==========================================================================*/
L_KONGO kongou[12]; /*金剛君と文字列の構造体*/
/*オブジェクト毎の処理*/
exte
0x56C400#
,
{DAT,0x20,0x18,0xa0,0x90,0x0008,0x0030,0x85},
{DAT,0x20,0x18,0xe0,0x80,0x0007,0x0021,0x7e},
{DAT,0x18,0x08,0xa8,0xa8,0x000b,0x0044,0x01},
{DAT,0x40,0x20,0xa8,0xb0,0xfff6,0x0020,0x49},
{DAT,0x20,0x20,0xa8,0xd8,0x0050,0x0020,0x7e},
{DAT,0x18,0x20,0xe8,0xb0,0x0064,0x0028,0x56},
{END,0x28,0x20,0x80,0xd8,0x0064,0x0028,0x01},
};
/*吹き出し*/
SPD_W po_fuki_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x10,0x10,0x90,0xc0,0xff90,0x0005,0x8b},
{DAT,0x10,0x10,0xb0,0xc0,0xff9f,0x0005,0x8b},
{DAT,0x10,0x10,0x90,0xb0,0xffc9,0x0005,0x4c},
{DAT,0x10,0x10,0x90,0xc0,0x0005,0x0005,0x8b},
{DAT,0x10,0x10,0xb0,0xc0,0x0014,0x0005,0x8b},
{DAT,0x10,0x10,0x90,0xb0,0x003f,0x0005,0x4c},
{DAT,0x10,0x10,0x90,0xb0,0x0079,0x0005,0x4c},
{DAT,0x38,0x10,0xb8,0xf0,0xff8d,0xfffa,0x01},
{DAT,0x20,0x10,0x90,0xe0,0xff73,0x0005,0x01},
{DAT,0x28,0x10,0x90,0xf0,0x0061,0xfffa,0x01},
{DAT,0x20,0x10,0x90,0xd0,0xffae,0x0005,0x06},
{DAT,0x20,0x10,0x90,0xe0,0xffe7,0x0005,0x01},
{DAT,0x20,0x10,0x90,0xd0,0x0023,0
0x581C00#
#if !SAMPLE_FLG
Test.chara_no1 += h_count;
if(Test.chara_no1 < 0) Test.chara_no1 = 0x0f;
if(Test.chara_no1 > 0x0f) Test.chara_no1 = 0;
#else
Test.chara_no1 = CR_GON;
#endif
break;
case 3: /* PLAYER2 SELECT */
#if !SAMPLE_FLG
Test.chara_no2 += h_count;
if(Test.chara_no2 < 0) Test.chara_no2 = 0x0f;
if(Test.chara_no2 > 0x0f) Test.chara_no2 = 0;
#else
Test.chara_no2 = CR_GON;
#endif
break;
default:
break;
}
FntPrint( "TEST MENU\n\n" );
FntPrint( " %sSTAGE %s\n" ,&cursol[(Test.point==0)?1:0], &stage_name[Test.stage_no] );
FntPrint( " %s MODE NO %d\n\n" ,&cursol[(Test.point==1)?1:0], Test.mode_no );
FntPrint( " %sPLAYER1 %s\n" ,&cursol[(Test.point==2)?1:0], &chara_name[Test.chara_no1] );
FntPrint( " %sPLAYER2 %s\n\n",&cursol[(Test.point==3)?1:0], &chara_name[Test.chara_no2] );
FntPrint( " %sMOTION %s\n\n",&cursol[(Test.point==4)?1:0], &anime_name[Test.motion_no] );
if(joy_t & P_START) {
sp->stage_no = Test.stage_no;
0x59B400#
ポーター*/
},
/*#6 裸+パワーパンツ*/
{
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, /*上着1*/
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, /*上着2*/
{ WCOL_BK, WCOL_WT, WCOL_R1, WCOL_R2, WCOL_OG, WCOL_YL, WCOL_G1, WCOL_G2, WCOL_B1, WCOL_B2, WCOL_PP, WCOL_PK }, /*下着1*/
{ WCOL_BK, WCOL_R2, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK }, /*下着2*/
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, /*下着3*/
{ WCOL_WT, WCOL_BK, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT, WCOL_WT }, /*ライン*/
{ WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK, WCOL_BK }, /*サポーター*/
},
/*#7 裸+タイツ*/
{
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, /*上着1*/
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, /*上着2*/
{ WCOL_BK, WCOL_WT, WCOL_R1, WCOL_R2, WCOL_OG, WCOL_YL, WCOL_G1, WCOL_G2, WCOL_B1, WCOL_B2, WCOL_PP, WCO
0x5F0A00#
extern short ged_fat[2]; /* nakayama editdata.c */
extern u_long m_spw[];
extern M_WORK mw;
extern u_char pos_sav [STSCNT]; /* カーソル位置の保存 */
extern u_char pos_sav2[STSCNT]; /* カーソル位置の保存(戻り用) */
extern u_char NowSts; /* 状態ステータス */
extern u_char OldSts; /* 状態ステータス */
extern u_char NewSts; /* 状態ステータス */
/* BGM処理用 */
extern char SD_status[];
extern u_char BGM_wtim; /* BGM鳴り出し待ちウェイトタイマー切り替え監視 */
/* メモリーカード処理用 */
extern short ofsT[];
extern long sizT[];
extern MESS mess[];
/*------------------------------------------------------------------*/
/* prototype */
/*------------------------------------------------------------------*/
u_char SaveLoad ( void );
int task_edit ( void );
void slTblSet ( u_char );
void ExCallInit ( u_char );
void ExCallInit2( void );
static u_char CharaMake( void );
static void ED_ModeSel ( void );
static u_char ED_Profile ( void );
static void ED_NameEntry( void );
static void ED_PointSet ( void );
static void ED_EntrySel ( void );
static u_char ED_MCAccess ( void );
static void EditSaveInfoSet( u_char );
static void EditPointSet( void );
static u_char ParaPointGet( u_char );
static void ed_prof1( void ); /* 外観設定(プロフィール) */
static void ed_prof2( void ); /* 外観設定(特徴) */
void PSETtoEH( u_char, u_char );
static void set_edit_prm( u_char * );
ex
0x5F6A00#
set_spr_pal ( ED_SR+EDcur[1]+10, 0x04 );
if( EDcur[1] == 0 )
set_spr_pal( ED_SR+19 , 0x04 );
set_spr_cpal( CUR1 );
set_spr_pY ( CUR1, 1, EDcur[1]*13 );
set_ya_anm ( YAJI, 0 );
set_spr_pY ( YAJI, 1, EDcur[1]*13 );
break;
/*--------------------------*/
/* 次の項目へ */
/*--------------------------*/
case 32:
m_SprClrS( L_TTL, 4+14+20 );
op_step = 0;
if( ! EDcur[0] ) {
EdtSts = 2; /* 名前設定へ */
} else {
EdtSts = 3; /* パラメータ設定へ */
}
break;
/*--------------------------*/
/* キャンセルで戻る */
/*--------------------------*/
case 42:
if( ! Fade( (8<<4)|2, LOGO, 19 ) )
break;
m_SprClrS( M_NEXT, 45 );
s->classw[0].kind = 0;
sp->inter_mode = INT_VSYNC; /* 画面モード切り替え */
op_step++;
break;
case 43:
/* 待避データの復帰 */
setRECT( &rect, 0x240, 0x00, (0x80*4)/4, 0x80*2 ); /* bg00~07 */
LoadImage( &rect, (u_long *)0x80150000 );
DrawSync( 0 );
setRECT( &rect, 0x380, 0x100, (0x80*4)/4, 0x80*2 ); /* title01,02,04,05 */
LoadImage( &rect, (u_long *)0x80160000 );
DrawSync( 0 );
setRECT( &rect, 0x180, 0x100, (0x80*2)/4, 0x80*2 ); /* face00,01 */
LoadImage( &rect, (u_long *)0x80148000 );
DrawSync( 0 );
setRECT( &rect, 0x1c0, 0x100, (0x80*2)/4, 0x80 ); /* game00 */
LoadImage( &rect, (u_long *)0x800c8000 );
DrawSync( 0 );
setRECT( &rect, 0x3a0, 0x00, 0x80/4, 0x80 ); /* option05 */
LoadImage( &rect, (u_long *)0x800cc000 );
DrawSync( 0 );
/* BGのテクスチャペーシ
0x5FBA00#
set_ya_anm ( YAJI, 1 );
break;
case 5:
ret = 1;
for( i=0; i<12; i++ ) {
ret &= m_SprMove( EP_LAB+i, 2, OFF );
ret &= m_SprMove( EP_MAT+i, 3, OFF );
set_spr_pos( EP_POI+i, EP_MAT+i );
if( mvcnt <= i ) {
mvcnt ++;
break;
}
}
set_spr_pos( EP_END, EP_LAB+11 );
spr = &s->classw0[EP_PLT];
set_spr_pY( EP_PLT, 3, spr->yposi - 16 );
if( ! ret )
break;
op_step++;
break;
case 6:
m_SprClrS( M_NEXT, 45 );
s->classw[0].kind = 1;
mvcnt = 0;
op_step = 0;
EdtSts = ( inkey & TRG_OK ) ? 4 : 1;
break;
}
}
/*------------------------------------------------------------------*/
/* キャラ選択エントリー */
/*------------------------------------------------------------------*/
static void ED_EntrySel( void )
{
sp_w;
sys_w;
u_char i, ret;
switch( op_step ) {
case 0:
curpos = 0;
set2dN( CH_PLT,MS_CH+ 5,MODE16, OUT_X,0,0x1e,0x00,1,PR9 );
set2dN( CH_DAT,MS_CH+ 6,MODE16, OUT_X,0,0x0e,0x00,1,PR7 );
set2dN( CH_INF,MS_CH+ 7,MODE16, OUT_X,0,0x0e,0x00,1,PR7 );
set2dN( CH_LAB,MS_CH+ 8,MODE16, OUT_X,0,0x0f,0x00,1,PR7 );
set2dN( CH_MSG,MS_CH+ 2,MODE16,0,-OUT_Y,0x1c,0x00,1,PR7 );
for( i=0; i<8; i++ ) {
set2dN( CH_NAM+i ,MS_CH+ 9+i,MODE16,-OUT_X,0,0x06,0x00,1,PR7 );
set2dN( CH_NAM+i+8,MS_CH+17+i,MODE16,-OUT_X,0,0x06,0x00,1,PR7 );
name_decode( &SWK.Nedit[i][1], CH_NAM+i, SWK.Nedit[i][0] );
}
set_edit_prm( SWK.Nedit[curpos] );
// EditNameGS( &SWK.Nedit[0][1]
0x5FFA00#
ar e_type )
{
sys_w;
Schar type [9];
u_char type2[9];
Schar swap;
u_char avg,r_type;
int i,j;
u_char *pED;
pED = ( e_type == 0 ) ? &SWK.Nedit[entry][0] : &SWK.Medit[entry][0] ;
/*パワー、スタミナ、スピードの取り出し*/
type[0] = pED[27]; /*パワー*/
type[1] = pED[25]; /*スタミナ*/
type[2] = pED[26]; /*スピード*/
for( i=0; i<3; i++ )
type2[i] = i+1;
/*ソート*/
j=3-1;
do {
for ( i=0; i<j; i++ ){
if ( type[i] < type[i+1] ){
swap = type[i];
type[i] = type[i+1];
type[i+1] = swap;
swap = type2[i];
type2[i] = type2[i+1];
type2[i+1] = swap;
}
}
j--;
}while( j );
/*平均*/
avg = ((type[0]+type[1]+type[2])*10+5)/30;
/*タイプ偽造*/
for( r_type = 0, i=0; i<3; i++ ){
if ( type[i]-avg >= 3 ){
r_type = type2[i];
break;
}
}
pl_data[14+entry][9] += r_type; /*タイプ*/
/*競技のアビリティ取り出し*/
type[0] = pED[28]; /* パンチアウト */
type[1] = pED[29]; /* ナインフープス */
type[2] = pED[30]; /* ビーチフラッグス */
type[3] = pED[31]; /* ガロンスロー */
type[4] = pED[32]; /* バック転50M走 */
type[5] = pED[33]; /* スプレーヒッター */
type[6] = pED[34]; /* ゲームメーカー */
type[7] = pED[35]; /* デットマンズドロップ */
type[8] = pED[36]; /* ロングシュート */
for( i=0; i<8; i++ ){
type2[i] = i;
}
/*ソート*/
j=9-1;
do {
for ( i=0; i<j; i++ ){
if ( type[i] < type[i+1] ){
swap = type[i];
type[i] = type[i+1];
type[i+1] = swap;
swap = type2[i];
type2[i] = type2[i+1];
0x608C00#
OS_Z+(PIN_OFFSET_Z*3) , 0}, /* 10番ピン */
};
static Uchar target_pin[/* version */][LANE_NUM/* レーンNo.*/][MAX_PIN_NUM] = {
/* パンチアウト1のピン配置(左利きにはかなり厳しい) */
{
{1, 3, 6, 10,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第1レーン */
{1, 2, 4, 8,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第2レーン */
{1, 5, 8, 9,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第3レーン */
{1, 2, 4, 10,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第4レーン */
{3, 7, 10,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第5レーン */
{8, 9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第6レーン */
{5,10,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第7レーン */
{6, 7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第8レーン */
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} /* 第9レーン */ /* のーまる配置 */
},
/* パンチアウト2のピン配置 */
{
{1,2, 3, 7, 10,0xff,0xff,0xff,0xff,0xff}, /* 第1レーン */
{1,2, 4, 9,0xff,0xff,0xff,0xff,0xff,0xff}, /* 第2レーン */
{1,3, 6,
0x60D400#
*/
/*------------------------------------------------------------------*/
static short punchout_init( void )
{
sp_w;
switch (sp->step0) {
case 0:
po_work_init_1st();
sp_step0_up();
break;
case 1: /* */
if ( LoadEf( 0 ) == 1 ){ /*nakayama VRAMへのデータ転送が可能になるまで待つ*/
sp_step0_up();
}
break;
case 2: /* 2Dキャラデータロード */
LoadEf( 0 ); /* nakayama */
if ( G2dTrans00() ) { /* nakayama */
sp_step0_up();
}
break;
case 3: /* メインデータロード */
LoadEf( 0 ); /* nakayama */
if ( G3dTrans00() ) /* matsuoka */
sp_step0_up();
break;
case 4: /* 選手0データロード */
LoadEf( 0 ); /* nakayama */
if ( CharTrans( entrybox[0], 0 ) ) /* matsuoka */
sp_step0_up();
break;
case 5:
LoadEf( 0 ); /*nakayama */
if( AnaTrans() ){
sp_step0_up();
}
0x610600#
k;
case 2:
if(MenuFadeIn(8) == 1) po_step1_up();
po_character();
break;
case 3:
/* 「○○選手、記録~レーン」とかの表示が入る */
if (work->clear_lane_num == LANE_NUM) {
if (SetG2dPerfect00()) po_step1_up();
} else {
if (SetG2dResult00(work->clear_lane_num)) po_step1_up();
}
po_character();
break;
case 4:
if (SD_ChkVstat() && ++work->timer > 60) {
work->timer = 0;
SD_call(SD_CTL_FADEOUTX);
po_step1_up();
}
po_character();
b
0x614E00#
short lane_offset[][3] = {{180, 360, 540}, {-180, 180, 360}, {-360, -180, 180}, {-540, -360, -180}};
static short fix_tbl[] = {
CLS_LANE0, CLS_LANE1, CLS_LANE2, CLS_LANE3,
CLS_HLANE0, CLS_HLANE1, CLS_HLANE2, CLS_HLANE3,
CLS_SLANE, CLS_BOX3
};
cls1 = &s->classw1[CLS_LANE0];
work = &po_game_w;
for (i=0; i<CLS_3D_NUM; i++, cls1++) {
fix_check = 0;
for (j=0; j<10; j++) {
if (i == fix_tbl[j]) fix_check = 1;
}
if (fix_check) continue;
cls1->xposi = bg_offset[work->lane
0x617200#
(ret) {
if (sp->chara[0] == CR_KON) Pose_Set(cls, MOT_K_RELEASE, 0); /* 金剛くん用 */
else Pose_Set(cls, MOT_RELEASE, 0);
work->next_anime = 0xffff;
work->release_frame = 0xffff;
work->swing_speed = 0;
pBall->hook = work->hand_angle * 3;/* 今のところ角度からフック量への換算は適当 */
SD_call(SD_10_GAGE1);
po_step2_up();
}
break;
case 7: /* バックスイング → パワー増加 */
if (IS_RELEASE_MOTION) {
if ((JOY_TRG & P_RRIGHT) && ((work->work & 0x02) == 0)
&& (current_pose > POWER_OK_FRAME)) { /* パワー決定 */
SD_call(SD_10_GAGE3);
work->power = work->timer;
work->work |= 2; /* パワーが決定された目印 */
// work->swing_speed = 0x80 + (work->power - MIN_POWER) * 0x80 / (MAX_POWER - MIN_POWER);
work->swing_speed = 0xc0 + (work->power - MIN_POWER) * 0x40 / (MAX_POWER - MIN_POWER);
work->rest_frame = 0;
i = TAKE_BACK_FRAME + 2;
j = 0;
while (i<=RELEASE_FRAME) {
j += work->swing_speed;
work->rest_frame++;
while (j > 255) {
i++;
j -= 0x100;
}
}
work->swing_max = MAX_POWER;
work->mot_end = 0;
}
if (current_pose == TAKE_BACK_FRAME) {
work->work |= 1; /* バックスイングが終わった目印 */
work->sub_timer = 0;
SD_call(SD_STOP);
SD_call(SD_10_GAGE2);
po_step2_up();
}
work->timer = current_pose * (MAX_POWER + UNDER_POWER) / TAKE_BACK_FRAME - UNDER_POWER;
if ((work->work & 0x0
0x61A400#
ay_w;
PO_BALL_W *pBall;
cls = &s->classw[0];
work = &po_game_w;
replay_w = &po_replay_w;
pBall = &po_ball_w;
replay_w->broadcast_type = Random(2);
if (work->game_mode == PO_GM_REPLAY) {
memcpy((Uchar *)&replay_w->start_info, (Uchar *)RP_ADRS, sizeof(PO_REPLAY_MEM_W));
work->version = replay_w->start_info.version;
work->lane_no = replay_w->start_info.lane_no;
work->current_ana = replay_w->start_info.current_ana;
work->clear_lane = replay_w->start_info.clear_lane;
replay_w->broadcast_type = 1;
set_lane_model();
set_local_func(disp_item);
}
po_pin_model_change(MODEL_2D);
InitG2dRepPlate00(REP_CTRL_NOP, 0);
work->mot_end = 0;
work->pause_permit = 0;
work->release_frame = replay_w->start_info.release_frame;
work->power = replay_w->start_info.power;
work->play_mode = REPLAY_MODE;
work->pin_down_num = 0;
work->gutter_fg = 0;
work->pin_sway = 0;
/* 球のワークの初期化 */
bzero((Uchar *)pBall, sizeof(PO_BALL_W));
set_pin_pos();
cls->xposi = replay_w-
0x61DE00#
po_step2_up();
}
break;
case 7: /* ファイナルレーン表示 */
if (MenuFadeOut(32, 0) == 1) {
work->lane_no = 8;
set_lane_model();
po_view_set(CAMERA_FINAL_DEMO2);
po_step2_up();
}
break;
case 8:
if (MenuFadeIn(8) == 1) po_step2_up();
work->timer++;
break;
case 9:
if (SD_ChkVstat() && ++work->timer > 90) {
work->timer = 0;
po_step2_up();
}
break;
default:
if (MenuFadeOut(32, 0) == 1) {
work->lane_no = work->work;
0x635400#
;
cls = &s->classw0[ tag->cls ]; /*編集対象のクラス*/
ret = 0;
switch ( tag->step ){
case 0: /*下ごしらえ*/
/*黒板の初期設定*/
b_box.x = 256;
b_box.y = 35;
b_box.w = 512;
b_box.h = 16;
b_box.r = b_box.g = b_box.b = 160;
b_box.attribute = STP10M10;
b_rgb.r = b_rgb.g = b_rgb.b = 128;
tag->tmp = tag->timer = 0;
cls->kind = 0;
cls->r = cls->g = cls->b = 0;
tag->step++;
break;
case 1: /*黒板を画面内に移動*/
b_box.x -= 64;
if ( b_box.x < -256 ){
b_box.x = -256;
tag->step++;
}
break;
case 2: /*clsで指定された文字を表示させる*/
cls->kind = 1;
if ( increase_rgb_classw0( tag->cls, &b_rgb, 32 ) ){
b_rgb.r = b_rgb.g = b_rgb.b = 0;
tag->step++;
}
break;
case 3: /*外部からの信号待ちの後文字を消す*/
if ( tag->flag ){ /*信号があがったら*/
if ( decrease_rgb_classw0( tag->cls, &b_rgb, 64) ){
cls->kind = 0;
}
/*黒板退出*/
b_box.x -= 64;
if ( b_box.x < -51
0x64EA00#
ic void pin_action_slide1(short pin_no)
{
PO_PIN_W *pPin;
pPin = &po_pin_w[pin_no];
switch (pPin->step) {
#if 0
case 0:/* スライド */
case 1:/* 倒れはじめる */
case 2:/* 弱い倒れかたに飛ばしてもいい */
case 3:
case 4:
#endif
case 0: /* 倒れ中 */
pPin->rotate += pPin->rot_step / 4;
pPin->rotate = ROT_NORM(pPin->rotate);
if (pPin->base_speed < pPin->base_accel) {/* 倒れてる最中は移動し続けるように */
pPin->base_speed = /*0x1800*/0xc00;
}
if (pin_down_check(pin_no)) { /* 横になった */
pin_action_set(pin_no, PIN_ACT_DOWN, pPin->direct_angle, 0);
/* 横になってからも少し滑った方がいいのかも */
// pPin->step++;
}
break;
case 1: /* 倒れた後 */
default:
break;
}
/* 地面からの高さを求める */
if (pPin->pos.vz > PINDECK_END) { /* ピンデッキよりも後方にとんだ場合 */
pin_action_set(pin_no, PIN_ACT_FALL, pPin->direct_angle, pPin->base_speed);
} else {
pPin->pos.vy = get_pin_height(pin_no);
}
}
/*------------------------------------------------------------------*/
/* ピンが倒れながらスライドするアクション */
/*------------------------------------------------------------------*/
/* 倒れた後に少し跳ねるアクションが足りない case 2 以降に加えた方がよさそう */
static void pin_action_slide2(short pin_no)
{
PO_BALL_W *pBall;
PO_PIN_W *pPin;
pBall = &po_ball_w;
pPin = &po_pin_w[pin_no];
switch (pPin->step) {
case 0: /* 倒れ中 */
pPin->rotate += pPin->rot_step;
pPin->rotate = ROT_NORM(pPin->
0x653C00#
t) {
/* 右端 */
pPin->pos.vx = LANE_WIDTH-dist;
pPin->base_speed /= 2;
pPin->direct_angle = SIGN(pPin->direct_angle) * (0x800 - abs(pPin->direct_angle));
pPin->direct_angle = (pPin->direct_angle + 0x10) / 0x20 * 0x20;/* 角度を2°跳びに丸める */
pPin->direct_angle = ROT_NORM(pPin->direct_angle);
if (pPin->base_speed > SPIN_HAPPEN_SPEED) {
if (ROT_NORM2(pPin->direct_angle) > 0x200) {
pPin->angle_step = 0x100 / time_slice;
} else if (ROT_NORM2(pPin->direct_angle) > 0x100) {
pPin->angle_step = 0x80 / time_slice;
} else if (ROT_NORM2(pPin->direct_angle) < -0x200) {
pPin->angle_step = -0x100 / time_slice;
} else if (ROT_NORM2(pPin->direct_angle) < -0x100) {
pPin->angle_step = -0x80 / time_slice;
}
}
}
dist = PIN_G * rsin(pPin->rotate) * rsin(pPin->angle) / ONE;
dist = abs(dist);
if (pPin->pos.vz > LANE_END) {
/* 奥端 */
pPin->pos.vz = LANE_END;
pPin->base_speed = 0;
pPin->base_accel = 0;
}
} else { /*
0x662400#
--------------------------------------------*/
/* カメラ初期化 */
/*------------------------------------------------------------------*/
void po_view_init(void)
{
sp_w;
/* 変数初期化 */
sp->camera_stepw = 0;
sp->camera_stepw_s = 0;
sp->camera_no = 0;
sp->camera_count = 0;
bzero((Uchar *)&po_view_w, sizeof(PO_VIEW_W));
/* 参照点 */
sp->rview.vrx = 0;
sp->rview.vry = 0;
sp->rview.vrz = 0;
/* 視点 */
sp->rview.vpx = 0;
sp->rview.vpy = /*-100*/-50 * MAGNIFICATION;
sp->rview.vpz = /*-7000*/-3500 * MAGNIFICATION;
// po_view_set(CAMERA_THROW);
po_view_set(CAMERA_BALL);
}
/*------------------------------------------------------------------*/
/* カメラメイン */
/*------------------------------------------------------------------*/
void po_view_main(void)
{
sp_w;
#if PO_VIEW_TEST
if (sp->joyw[1].joytrg & P_START) {
sp->camera_stepw_s ^= 1;
if (sp->camera_stepw_s) po_view_w.step = 0;
}
if (sp->camera_stepw_s
0x671400#
/* ピンアクションのSEがなってたら下手に止めるのはヤバイかも */
// }
if (END_SE_CHK(pBall->se_info)) {/* 最後まで行ったら */
// SD_call(SD_STOP); /* ピンアクションのSEがなってたら下手に止めるのはヤバイかも */
SD_call(SD_10_FIN);
}
/* SE of Pin */
if (PIN_SE1_CHK(pBall->se_info)) SD_call(SD_10_PIN1);
if (PIN_SE2_CHK(pBall->se_info)) SD_call(SD_10_PIN2);
if (PIN_SE3_CHK(pBall->se_info)) SD_call(SD_10_PIN3);
if (PIN_SE4_CHK(pBall->se_info)) SD_call(SD_10_PIN4);
if (PIN_SE5_CHK(pBall->se_info)) SD_call(SD_10_PIN5);
if (PIN_SE6_CHK(pBall->se_info)) SD_call(SD_10_PIN6);
}
/*------------------------------------------------------------------*/
/* 実況関連 */
/*------------------------------------------------------------------*/
/* ---------- 他のファイルからコールする extern 関数 ---------- */
void po_ana_speak(short situation)
{
PO_GAME_W *work;
work = &po_game_w;
if (situation == BROADCAST_REPLAY && Random(10) < 3) {
work->ana_kind = AN
0x673A00#
FP_J08, FP_D00,
FP_D01, FK1_E00, /* ファイナルレーン */
/* Ver.2 */
FP_J01, FP_D00,
FP_J02, FP_D00,
FP_J03, FP_D00,
FP_D02, FK1_E00, /* パンチアウトパラレル */
FP_J05, FP_D00,
FP_D03, FK1_E00, /* パンチアウトトライアングル */
FP_J07, FP_D00,
FP_D04, FK1_E00, /* BIG5 */
FP_D01, FK1_E00, /* ファイナルレーン */
/* Ver.3 */
FP_J01, FP_D00,
FP_J02, FP_D00,
FP_J03, FP_D00,
FP_J04, FP_D00,
FP_J05, FP_D00,
FP_J06, FP_D00,
FP_J07, FP_D00,
FP_J08, FP_D00,
FP_D01, FK1_E00, /* ファイナルレーン */
};
static void furu_speak_about_lane(void)
{
short rnd, index;
PO_GAME_W *work;
work = &po_game_w;
if (work->prev_result) { /* 前回成功 */
if (work->game_mode == PO_GM_EXTRA) { /* エクストラモード */
/*エキストラモード専用*/
rnd = Random(7);
index = work->lane_no<<1;
switch (rnd) {
case 0:
case 1:
case 2:
SD_call(FP_C58 + rnd);
//FP_C58, /*「さあ、この奇抜なレーンをどのようにして攻略していくのでありましょうか」*/
//FP_C59, /*「まともに攻めてはクリア不可能なのがこのレーンであります」*/
//FP_C60, /*「いつもどおりにはいかないこの難関にどんな風に立ち向かうのか」*/
break;
case 3:
SD_call(furu_lane_tsugi[index]);
SD_call(furu_lane_tsugi[index+1]);
break;
case 4:
SD_call(furu_lane_tsuzuite[index]);
SD_call(furu_lane_tsuzuite[index+1]);
break;
case 5:
SD_call(furu_lane_clear[index+32]);
SD_ca
0x6762F0#
FS13, (0x000075a0+0x7ff)/0x800, FLG1 }, //FURU\FGT_L36.VAG
{ 0x0065c800/0x800+VOFS13, (0x00006300+0x7ff)/0x800, FLG1 }, //FURU\FGT_L37.VAG
{ 0x00663000/0x800+VOFS13, (0x00009d60+0x7ff)/0x800, FLG1 }, //FURU\FGT_L38.VAG
{ 0x0066d000/0x800+VOFS13, (0x00005e10+0x7ffari[Random(9)]);
}
} else { /* 前回失敗 */
rnd = Random(23);
SD_call(furu_prev_miss[rnd]);
SD_call(FK1_E02);
if (work->miss_count == 3) { /* 遊び球なし */
rnd = Random(27);
if (rnd < 3) SD_call(furu_prev_miss_sub[rnd]);
else SD_call(furu_before_asobi_nashi[rnd-3]);
} else { /* 遊び球あり */
SD_call(furu_before_asobi_ari[Random(9)]);
}
}
}
static void furu_speak_ready(void)
{
sp_w;
short rnd;
rnd = Random(8);
if (rnd == 6) SD_call(furu_full_name_low[sp->chara[0]]);
SD_call(furu_before_shimo[Random(8)]);
if (rnd < 6) SD_call(furu_full_name_low[sp->chara[0]]);
}
static Ushort furu_try_perfect[] = {
FP_D08, /*「パーフェクト達成なるかー!?」*/
FP_D09, /*「パーフェクトなるかー!?」*/
FP_D10, /*「栄光を勝ち取ることができるかー!?」*/
FK4_B07, /*「これで勝負だーっ!」*/
FK4_B10, /*「これで決まるか!」*/
FK4_B14, /*「(選手名)」「勝負!」*/
FK4_B15, /*「ここで勝負
0x678A90#
」
#古田専用(?)
FURU\FGT_I17.VAG #「めがねの奥で慎重に計ります」
..\MR10\FURU\FP_C02.VAG #「さあ、クリアできるか」「第*レーン!」
..\MR10\FURU\FP_C18.VAG #「今度こそ決めたい!」「第*レーン!」
# 投げ
#通常
FURU\FGT_J00.VAG #「投擲っ」
FURU\FGT_J01.VAG #「さあ、どうだっ」
FURU\FGT_J02.VAG #「投げたーーっ」
FURU\FGT_J03.VAG /*「残念!パーフェクトならず!」*/
FP_E38, /*「パーフェクトの幻をつかんだ」*/
FP_E39, /*「惜しくもパーフェクトを逃しました!」*/
FP_E40, /*「最後の最後で決められませんでした」*/
FP_E41, /*「パーフェクトを目前にして、チャンスを生かすことができませんでした」*/
FK3_E14, /*「パーフェクトが、目前で崩壊してしまったーっ」*/
};
static Ulong furu_after_throw_script[] = {
(Ulong)furu_final_clear,
(Ulong)furu_clear_lane,
(Ulong)furu_clear_common,
(Ulong)furu_semi_final_clear,
(Ulong)furu_game_over,
(Ulong)furu_extra_miss,
(Ulong)furu_wild_pitch,
(Ulong)furu_near_miss,
(Ulong)furu_miss_common,
(Ulong)furu_miss_1st,
(Ulong)furu_miss_continuous,
(Ulong)furu_final_miss,
};
static void furu_speak_after_throw(void)
{
sp_w;
short rest_num;
Ushort rnd, rnd2, rnd3, script_index, script_index2;
Ushort *script;
PO_GAME_W *work;
PO_REPLAY_W *replay_w;
work = &po_game_w;
replay_w = &po_replay_w;
rnd2 = 0xff;
rnd3 = Random(4);
script_
0x67B580#
0x00009da0
FURU\FGT_L56.VAG 0x00623800 0x00005370
FURU\FGT_L57.VAG 0x00629000 0x00008d00
FURU\FGT_L58.VAG 0x00632000 0x000062c0
/*「パーフェクト達成です!」*/
FK4_E13, /*「パーフェクト達成です!」*/
};
static Ushort furu_bad_result_kami[] = {
FK4_E25, /*「健闘しました。大記録です!」*/
FK4_E26, /*「見ごたえがありました。やってくれます」*/
FK4_E27, /*「さすがに見せ場をよく心得ております」*/
};
static Ushort furu_bad_result_naka[] = {
FK4_E28, /*「パーフェクトまであとわずかでした」*/
FK4_E29, /*「パーフェクトは逃してしまいましたが」*/
FK4_E30, /*「パーフェクトこそ
0x67E600#
シャーの中見事成功しました」*/
else if (split_chk) SD_call(SP_050); /*「ピンアクションに救われました」*/
else SD_call(SP_051); /*「運も味方に付けたようです」*/
}
} else {
/* かみ */
if (work->clear_lane_num == 0) rnd = 2;
else if (work->rest_pin_no == 0xff) rnd = 3;
else rnd = 5;
rnd = Random(rnd);
if (work->miss_count == 3) rnd = 1; /* GAME OVER */
switch (rnd) {
case 0:
SD_call(SP_05
0x681200#
PLAY,
};
/* ---------- ゲームステップ ---------- */
enum {
PUNCHOUT_INIT,
PUNCHOUT_INTRO,
PUNCHOUT_MAIN,
PUNCHOUT_RESULT,
};
enum {
PO_PLAYER_ENTER,
PO_MAIN,
PO_RESULT,
PO_RANKING,
};
enum {
LANE_SELECT_STEP,
SET_PIN_STEP,
BALL_SELECT_STEP,
THROW_BALL_STEP,
FORCED_REPLAY_STEP,
RESULT_STEP,
REPLAY_STEP,
FINAL_DEMO_STEP,
};
/* ---------- 球のステータス---------- */
enum {
BALL_BEFORE, /* 投球前 */
BALL_THROW, /* 投球中 */
BALL_MOVE, /* 転がってる */
BALL_PINDECK, /* ピンデッキ付近 */
BALL_GUTTER, /* ガター */
BALL_STOP, /* 止まってる */
BALL_JUMP, /* ジャンプ台 */
BALL_CRASH, /* 障害物に激突 */
BALL_CRASH_END, /* 衝突後に停止 */
};
/* ---------- ピンのステータス ---------- */
enum {
PIN_STAND, /* 立っている */
PIN_DOWN, /* 倒れている */
PIN_CLASH, /* 倒れてる最中 */
};
/* ---------- ピンアクション ---------- */
enum {
PIN_ACT_STAND,
PIN_ACT_SWAY,
PIN_ACT_WEAK,
PIN_ACT_SLIDE1,
PIN_ACT_SLIDE2,
PIN_ACT_STRONG,
PIN_ACT_STR_HIT,
PIN_ACT_FALL,
PIN_ACT_ROLL,
PIN_ACT_SPIN,
PIN_ACT_CROSS,
PIN_ACT_DOWN,
};
/* ---------- カメラ ---------- */
enum {
CAMERA_INTRO,
CAMERA_ENTER,
CAMERA_WARMUP,
CAMERA_SET_PIN,
CAMERA_BALL_SELECT,
CAMERA_BALL_GET,
CAMERA_SET_POS,
CAMERA_THROW,
CAMERA_BALL,
CAMERA_PINDECK,
CAMERA_BUSTUP,
CAMERA_FORCED_REPLAY,
CAMERA_REPLAY,
CAMERA_FINAL_DEMO1,
CAMERA_FINAL_DEMO2,
CAMERA_FINAL_LANE,
CAMERA_RESULT,
CAMERA_RANKING,
0x684600#
DATA prev, next;
} PO_VIEW_W;
typedef struct {
short pos;
short angle;
short hook;
short power;
} PO_THEORY_DATA;
/* ボールワーク */
typedef struct {
Uchar step;
Uchar substep;
Uchar status;
Uchar trans_fg;
Uchar hit_pin_no; /* 直前に衝突したピン#を保存 */
Uchar pound;
Uchar konami_obj; /* 現在、判定中のオブジェクト#(コナミモード用)*/
Uchar pad;
Ushort se_info;
short timer;
short work0;
short work1;
short work2;
short weight;
long base_speed;
0x68CC00#
nami_pos ){
cls->xposi = konami_pos;
tag->step++;
}
break;
case 2: /*そのまま少し待つ*/
// if ( !tag->flag ){
if ( ++tag->timer > 30*2 ){ /*2フレで2秒程度*/
SD_call( SD_SLIDEOUT );
tag->timer = 0;
tag->tmp = 1;
tag->step++;
}
/*
}else{
if ( ++tag->timer > 30*8 || CheckTrg(JOY1, P_RRIGHT) ){
SD_call( SD_SLIDEOUT );
tag->timer = 0;
tag->tmp = 1;
tag->step++;
}
}
*/
break;
case 3: /*左にずりずりと*/
spd = (SPD_W*)cls->chara;
for ( i=0; i<tag->tmp; i++ ){
spd[i].offset_x -= 80;
if ( spd[i].offset_x < -300 ){
spd[i].offset_x = -300;
}
if ( spd[i].ccode == END ){
tag->tmp = i+1;
break;
}
}
if ( spd[i].ccode == END ){ /*パターンの最後まで手が回っている状態で*/
if ( spd[i].offset_x <= -300 ){ /*すっかり画面から消え去ったら*/
tag->step++;
break;
}
}
if ( ++tag->timer > 1 ){ /*適当な間を置いて次の文字が動く*/
tag->t
0x698A00#
ABLE2[1],0);
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 3: /* グラウンドデータ読み込み */
if(cd_file_load_NB(sp->stage_no*2+LOAD_GROUND_MODEL)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 4: /* アイテムデータ読み込み */
if(cd_file_load_NB(LOAD_ITEM_00)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 5: /* モーションデータ読み込み */
if(cd_file_load_NB(sp->motion_no+LOAD_MOTION_DATA1)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 6: /* DEMOモーションデータ読み込み */
if(cd_file_load_NB(entrybox[0]+LOAD_MOTION_DATA2)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 7: /* データテーブル読み込み */
if(cd_file_load_NB(LOAD_PO_DAT_TBL)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
default:
TRANS_STEP_S = 0;
return 1;
}
return 0;
}
int G3dTrans00_LaneTex( void )
{
sp_w;
switch( TRANS_STEP_S ){
case 0:
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
break;
case 1:
if(cd_file_load_NB( LOAD_ITEM_00+1+sp->mode_no )) { /* TIM_TABLE2に読み替えようのデータをストック */
cd_read_step = CD_READ_INIT;
TRANS_STEP_S++;
}
break;
default:
TRANS_STEP_S = 0;
return 1;
}
return 0;
}
/*----------------------------------------------*/
/* デモモーション読み込み */
/*----------------------------------------------*/
int G3dTrans00_
0x6A1600#
Lャラクター制御関連 */
static void nh_character(void);
static void set_character_hand(void);
static void nh_pose_set(short anime_no);
static short nh_character_move(short vx, short vz, short speed);
/* リプレイ関連 */
static short replay_init(void);
static short replay_main(void);
static short replay_finish(void);
static short (*nh_replay_func[])(void) = {
replay_init,
replay_main,
replay_finish,
};
static void replay_set_blink(void);
static void read_replay_buff(void);
static vo
0x6A9200#
SD_call(I_SEN1 + Random(2));
nh_step2_up();
break;
case 1:
if (SD_status[22] == 1 || ++work->timer > 60) { /* BGMが鳴るまで待つ */
Pose_Set(cls, MOT_LOOKDOWN, 0);
work->next_anime = -1;
work->timer = 0;
nh_ana_speak(BROADCAST_BEFORE_DECLARE);
nh_step2_up();
}
break;
case 2:
if (MenuFadeIn(8) == 1) {
work->pause_permit = 1;
nh_step2_up();
}
break;
case 3:
result = select_ring_sub();
if (result) {
/* 乱数じゃなくて狙うリングの位置でモーションを決めた方がいいかも */
if (Random(2)) Pose_Set(cls, MOT_DECLARE1, 0);
else Pose_Set(cls, MOT_DECLARE2, 0);
nh_view_set(CAMERA_DECLARE);
nh_ana_speak(BROADCAST_AFTER_DECLARE);
SD_call(SD_DECIDE);
nh_step2_up();
}
break;
case 4:
if (SetG2dDeclare01(work->target_no+1)) {
work->cursor_fade = 0xff;
nh_step1_up();
}
break;
}
set_ring_cursor();
return 0;
}
/* Vリング選択 */
static short select_ring_sub(void)
{
sys_w;
short ring_layout;
CLASS_W *cls;
NH_GAME_W *work;
static Uchar prev_pos[][RING_NUM] = {
{8, 6, 7, 0, 1, 2, 3, 4, 5},
{6, 3, 8, 5, 0, 7, 1, 2, 4},
};
static Uchar next_pos[][RING_NUM] = {
{3, 4, 5, 6, 7, 8, 1, 2, 0},
{4, 6, 7, 1, 8, 3, 0, 5, 2},
};
cls = &s->classw[0];
work = &nh_game_w;
if (work->version == 1) ring_layout = 1;
else ring_layout = 0;
if (JOY_TRG & P_LLEFT) {
work->cursor_fade = 0xff;
SD_call(SD_MOVE);
do {
0x6AC400#
SHOOT2の24フレーム目の値 *//*JUMP SHOOT*/
}
RotMatrix(&cls->rot, &m);
ScaleMatrix(&m, &cls->scale);
ApplyMatrixSV(&m, &sv0, &sv1);
sv0.vx = (cls->xposi + sv1.vx) / MAGNIFICATION;
sv0.vy = (cls->yposi + sv1.vy) / MAGNIFICATION;
sv0.vz = (cls->zposi + sv1.vz) / MAGNIFICATION;
work->work1 = sv0.vy;
/* リリース時のボールの位置からリングまでのxz平面での距離 */
work->lwork0 = (pRing->pos.vx/ONE - sv0.vx) * (pRing->pos.vx/ONE - sv0.vx);
work->lwork0 += (pRing->pos.vz/ONE - sv0.vz + 0x20) * (pRing->pos.vz/ONE - sv0.vz + 0x20);
work->lwork0 = SquareRoot0(work->lwork0) * ONE;
/* リング到達までに必要なフレーム数を逆算 */
// work->lwork1 = work->lwork0 / rcos(work->angle) * rsin(work->angle)
// - abs(pRing->pos.vy - sv0.vy * ONE - (BALL_RADIUS<<12));
// work->work0 = SquareRoot12(work->lwork1) / GRAVITY;
work->work0 = 0x20;
/* 目標となる高さ */
work->lwork1 = pRing->pos.vy;
// diff = 0x04;
diff = 0x10;
while (diff != 0) {
pBall->base_speed = work->lwork0 / work->work0
0x6AF200#
;
}
if (work->mot_end == 0) work->mot_end = 2;
}
write_replay_buff();
replay_w->frame++;
if (replay_w->frame == REPLAY_BUFF_SIZE) replay_w->frame = REPLAY_BUFF_SIZE - 1;
}
cls->kind = ON;
clsb->kind = ON;
replay_w->last_frame = replay_w->frame;
replay_w->frame = 0;
read_replay_buff();
work->timer = 0;
nh_step3_up();
break;
case 1:
if (SD_status[22] == 1 || ++work->timer > 60) { /* BGMが鳴るまで待つ */
nh_view_set(CAMERA_FORCED_REPLAY);
work->timer = 0;
nh_step3_up();
}
break;
case 2:
if (MenuFadeIn(8) == 1) nh_step3_up();
break;
case 3: /* 強制リプレイ */
if (replay_w->frame != replay_w->last_frame) {
read_replay_buff();
set_ball_locus();
nh_ball_SE();
/* 実況は実際より少し早いタイミングでコールしてやる */
if (IS_START_MOTION && cls->pose == 6) {
nh_ana_speak(BROADCAST_SHOOT);
} else if ((replay_w->admire_frame != 0) && (replay_w->admire_frame - 8 == replay_w->frame)) {
nh_ana_speak(BROADCAST_ADMIRATION);
} else if ((replay_w->result_frame != 0) && (replay_w->result_frame - 8 == replay_w->frame)) {
nh_ana_speak(BROADCAST_AFTER_SHOOT);
}
replay_w->frame++;
} else {
nh_step3_up();
}
if (replay_w->frame >= REPLAY_BUFF_SIZE) {
FntPrint("BUFFER OVER !!\n");
}
break;
case 4:
if (SD_ChkVstat()) {
nh_step3_up();
}
break;
case 5:
if (MenuFadeOut(32, 0) == 1) {
InitG2dRepPlate01(RE
0x6B1C00#
break;
case 1:
if (SD_status[22] == 1 || ++work->timer > 60) { /* BGMが鳴るまで待つ */
pBall->status = BEFORE_SHOOT;
Pose_Set(cls, MOT_LOOKDOWN, 0);
work->next_anime = -1;
nh_view_set(CAMERA_FINAL_DEMO);
nh_ana_speak(BROADCAST_APPEAR);
work->goal_kind = ON;
work->backboard_kind = ON;
work->timer = 0;
nh_step2_up();
}
break;
case 2:
if (MenuFadeIn(8) == 1) nh_step2_up();
break;
case 3: /* ここに演出をつくる */
if (++work->timer > 220) nh_step2_up();
break;
case 4:
if (SD_ChkVstat()) nh_step2_up();
break;
default:
if (MenuFadeOut(32, 0) == 1) {
SetG2dAna01(ANA_FURU, OFF);
AnaDispSwitch(&s->classw[3], OFF);
nh_step1_set(0);
}
break;
}
return 0;
}
/* -------------------- コナミモード用 -------------------- */
/*--------------------------------------------------------------------
ステージ設定
--------------------------------------------------------------------*/
static short s
0x6B4C00#
, &v); /* 拡縮 */
setVector(&v,(long)cls1->xposi, (long)cls1->yposi,(long)cls1->zposi);
TransMatrix(&sp->lm, &v); /* 移動 */
cls1->DWorld.matrix = sp->lm;
cls1->DWorld.flg = 0;
/* ここまで */
}
}
static void disp_item(void)
{
sp_w;
short i;
CLASS1_W *cls1;
NH_GAME_W *work;
cls1 = &nh_local_cls[L_CLS_3D_NUM-1];
work = &nh_game_w;
for (i=L_CLS_3D_NUM-1; i>=0; i--, cls1--) {
if (cls1->kind) {
class1_gs3d(cls1);
}
}
set_effect();
if (IS_GAME_STEP) {
if (sp->step1 < REPLAY_STEP) {
set_rest_num_back();
if (sp->step1 < FORCED_REPLAY_STEP) {
if (work->game_mode != GM_KONAMI) {
set_mark();
}
if ((sp->step1 == SHOOT_STEP) && (sp->step2 > 3) && (sp->step2 <= 10)) {
set_power_gague();
if (sp->step2 > 7) set_t_gague_back();
}
}
}
if (work->game_mode == GM_KONAMI) {
set_extra_obj();
ring_pal_anim();
}
}
}
static void nh_character(void)
{
sys_w;
Ushort anime_no;
CLASS_W *cls;
NH_GAME_W
0x6B7A00#
rk->entry_no]&0x0f;
}
/*--------------------------------------------------------------------
クラスワークへの登録
--------------------------------------------------------------------*/
static void regist_goal_model(void)
{
sys_w;
short i, goal_pos;
NH_GAME_W *work;
work = &nh_game_w;
if (work->version == 1) {
work->backboard_pos = FREETHROW_POS + RING_BACKBOARD_DIST + ring_pos[work->version][0].vz;
} else {
work->backboard_pos = FREETHROW_POS + RING_BACKBOARD_DIST + ring_pos[work->version][1].vz;
}
goal_pos = work->backboard_pos / ONE * MAGNIFICATION;
disp4d(&s->classw1[CLS_GOAL], IDX_GOAL1 + work->version, 0, 0, goal_pos, 0);
s->classw1[CLS_GOAL].obj3D_w[0].ot_no = 0x04;
disp4d(&s->classw1[CLS_BOARD], IDX_BOARD1 + work->version, 0, 0, goal_pos, 0);
s->classw1[CLS_BOARD].obj3D_w[0].ot_no = 0x02;
if (work->version == 1) {
disp4d(&s->classw1[CLS_ARM1], IDX_ARM1, 0, 0, 0, 0);
disp4d(&s->classw1[CLS_ARM2], IDX_ARM2, 0, 0, 0, 0);
disp4d(&s->classw1[CLS_ARM3], IDX_ARM3, 0, 0, 0, 0);
disp4d(&s->classw1[CLS_ARM4], IDX_ARM4, 0, 0, 0, 0);
}
for (i=CLS_GOAL; i<=CLS_ARM4; i++) {
s->classw1[i].scale.vx = s->classw1[i].scale.vy = s->classw1[i].scale.vz = ONE * MAGNIFICATION;
}
}
static void regist_class(void)
{
sys_w;
short i;
CLASS1_W *cls1;
NH_GAME_W *work;
work = &nh_game_w;
character_entry();
disp4d(&s->classw1[CLS_BALL], IDX_BALL, 0, 0, 0, 0);
for (i=0; i<9; i++) {
disp4d( &s->classw1[CLS_RING_TOP+i], IDX_RING1+i, 0, 0, 0, 0 );
0x6BA600#
r(&v[2], -x, y, z);
setVector(&v[3], x, y, z);
rot -= 0x50;
setRGB0(pg4, 0x00, 0xff*i/5, 0xff);
setRGB1(pg4, 0x00, 0xff*i/5, 0xff);
setRGB2(pg4, 0x00, 0xff*(i+1)/5, 0xff);
setRGB3(pg4, 0x00, 0xff*(i+1)/5, 0xff);
otz = RotAverage4(&v[0], &v[1], &v[2], &v[3],
(long *)&pg4->x0, (long *)&pg4->x1, (long *)&pg4->x2, (long *)&pg4->x3, &p, &flag);
if (otz < 0) otz = 0;
GsSortPoly(pg4, &SepOT[0].ot[ACTIVE_SIDE], otz>>(14-OT_LENGTH));
}
setVector(&v[0], -width, y, z);
setVec
0x6BD400#
R);
setRGB0(pg4, POW_MIN_COL_R, POW_MIN_COL_G, POW_MIN_COL_B);
setRGB1(pg4, POW_MIN_COL_R, POW_MIN_COL_G, POW_MIN_COL_B);
setRGB2(pg4, r, g, b);
setRGB3(pg4, r, g, b);
pg4->x0 = x;
pg4->y0 = y + P_GAGUE_H;
pg4->x1 = x + P_GAGUE_W;
pg4->y1 = y + P_GAGUE_H;
pg4->x2 = x;
pg4->y2 = y + P_GAGUE_H - (work->power - MIN_POWER) * P_GAGUE_H / (MAX_POWER - MIN_POWER);
pg4->x3 = x + P_GAGUE_W;
pg4->y3 = y + P_GAGUE_H - (work->power - MIN_POWER) * P_GAGUE_H / (MAX_POWER - MIN_POWER);
GsSortPoly(pg4, &SepOT[0].ot[ACTIVE_SIDE], 9);
/* 余白 */
SetSemiTrans(pg4, ON);
setRGB0(pg4, 0x10, 0xff, 0x10);
setRGB1(pg4, 0x10, 0xff, 0x10);
setRGB2(pg4, 0x10, 0x10, 0x10);
setRGB3(pg4, 0x10, 0x10, 0x10);
pg4->x0 = x;
pg4->y0 = y + best_power;
pg4->x1 = x + P_GAGUE_W;
pg4->y1 = y + best_power;
pg4->x2 = x;
pg4->y2 = y + best_power - P_JUST_WIDTH;
pg4->x3 = x + P_GAGUE_W;
pg4->y3 = y + best_power - P_JUST_WIDTH;
GsSortPoly(pg4, &SepOT[0].ot[ACTIVE_SIDE], 9);
pg4->x2 = x;
pg4->y2
0x6C9600#
#define PLT_TYPE_U 0x28 /*プレーヤー#のパターンの幅*/
#define PLT_TYPE_V 0x10 /*プレーヤー#のパターンの高さ*/
void SetG2dName01( CLASS_W* cls, Uchar flag )
{
sys_w;
SPD_W* spd;
Uchar tp;
/*表示OFFのとき*/
if ( flag == OFF ){
s->classw0[G_CLS_PLATE01].kind = 0; /*フレームOFF*/
s->classw0[G_CLS_NAME01].kind = 0; /*選手名OFF*/
return;
}
set2d(G_CLS_PLATE01, SPD_PLATE01, STP05P05|MODE16,0,0,13,0,10,1); /*ネームプレート1*/
/*プレーヤー#の表示の切り替え*/
spd =
0x6CCE00#
ュ*/
tag->timer = 0;
tag->tmp++;
}
break;
case 4: /*終了*/
/*ずれたXオフセットを元に戻す*/
spd = (SPD_W*)cls->chara;
i=-1;
do{
i++;
spd[i].offset_x = keep_spd_x01[i];
}while( spd[i].ccode != END );
cls->yposi = -256;
tag->step = 0;
tag->tmp = 0;
tag->timer = 0;
tag->func = NULL;
return 1;
break;
}
return 0;
}
/***************************************************************************
リプレー用表示
***************
0x6D0400#
-----------------------------------------------------------------*/
/*------------------------------------------------------------------*/
/* prototype */
/*------------------------------------------------------------------*/
int G3dTrans01( void ); /* データ読み込み テクスチャ転送 */
int G3dTrans01_Mot( u_char load_no );
/*------------------------------------------------------------------*/
/* データ読み込み テクスチャ転送 */
/*------------------------------------------------------------------*/
/* return: ==0 動作中 / ==1 終了 */
/* 注意:TRANS_STEP_Sを使用しています */
/*------------------------------------------------------------------*/
extern u_char cd_read_step;
extern u_char cd_file_load_NB(Ushort no);
int G3dTrans01( void )
{
sp_w;
switch ( TRANS_STEP_S ) {
case 0:
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
break;
case 1: /* グラウンドテクスチャ読み込み */
if (cd_file_load_NB(sp-
0x6DD200#
idth = human_width * cls->scale.vx;
if (pBall->speed.vz > 0) return 0; /* キャラに向かってきてない */
if (abs(pBall->pos.vx - human_xpos) > human_width) return 0; /* その位置にキャラはいない */
if (pBall->pos.vz > human_zpos + human_depth) return 0; /* キャラの位置までボールがきてない */
/* キャラにぶつかってはねかえる */
pBall->speed.vz = -pBall->speed.vz * BALL_HUMAN_E;
pBall->pos.vz = human_zpos + human_depth; /* z座標補正 */
return 1;
}
/*--------------------------------------------------------------------
ボールがネットに入るときのアクション
--------------------------------------------------------------------*/
//#define NET_ANIME 20
#define NET_ANIME 8
/* とりあえず無理矢理ネットを動かしてみる */
/* 成否によって別の関数にした方がいいかも */
/* 2つ目はリングより少し上にはみ出す感じ */
/* 3つ目が入ってきたらどうしよう? → 無視 */
static char success_action(void)
{
long depth;
NH_GAME_W *work;
NH_BALL_W *pBall;
NH_RING_W *pRing;
static long speed_x, speed_z;
work = &nh_game_w;
pBall = &nh_ball_w;
pRing = &nh_ring_w[0];
NET_IN_CLEAR(work->ball_hit);
/* 成功したリングのサーチ */
while (pRing->ring_no != (work->success & 0x0f)) pRing++;
depth = pRing->pos.vy + NET_DEPTH;
switch (pBall->step) {
case 0: /* ネットの底につくまでは減速および横への動きを制限させて落下 */
if (pBall->pos.vy > depth) { /* ネットの底で止まる */
pBall->pos.vy = depth;
pBall->speed.vx = 0;
pBall->speed.vy = 0;
pBall->speed.vz = 0;
0x6DFC10#
a $4,$4,3
sll $2,$4,3
subu $2,$3,$2
sll $2,$2,16
sra $2,$2,11
sb $2,3($5)
.loc 1 434
LM210:
sll $2,$4,4
addu $2,$2,48
sb $2,4($5)
.loc 1 436
LM211:
lbu $2,427($18)
#nop
addu $2,$2,1
sb $2,427($18)
$L71:
.loc 1 439
LM212:
lui $2,%hi(em05_act) # high
addiu $4,$2,%lo(em05_act) # low
lw $3,4($4)
#nop
.set noreorder
.set nomacro
beq $3,$0,$L77
move $2,$0
.set macro
.set reorder
.loc 1 440
LM213:
jal $31,$3
.set noreorder
.se
0x6E2600#
at) */
{ 0, -480, 0, 0x20, 0x330, 2210},
};
static NH_VIEW_DATA forced_replay1_view_dat[] = {
/* Arranged Data (Original Data -> camera28.dat) */
{ 0, -760, 0, 0x18, -0x5c0, 6800},
{ 0, -760, 0, 0x18, -0x1b0, 6000},
};
static NH_VIEW_DATA forced_replay2_view_dat[] = {
/* Arranged Data (Original Data -> camera29.dat) */
{ 0, -230, -40, -0x380, -0xc00, 6168},
{ 0, -540, -40, -0x10, -0x810, 2088},
};
static NH_VIEW_DATA f
0x6E5200#
;
dist0 += (sp->rview.vrz - sp->rview.vpz) * (sp->rview.vrz - sp->rview.vpz);
dist1 = dist0;
dist0 += (sp->rview.vry - sp->rview.vpy) * (sp->rview.vry - sp->rview.vpy);
dist0 = SquareRoot0(dist0);
dist1 = SquareRoot0(dist1);
*rot0 = ratan2(sp->rview.vpy-sp->rview.vry, dist1);
*rot1 = ratan2(sp->rview.vpz-sp->rview.vrz, sp->rview.vpx-sp->rview.vrx);
*distance = dist0;
}
#endif
static void nh_view_polar_to_xyz1(short *rot0, short *rot1, short *distance)
{
sp_w;
short dist;
dist = (*distance) * rcos(*rot0) / ONE;
sp->rview.vpx = sp->rview.vrx + dist * rcos(*rot1) / ONE;
sp->rview.vpy = sp->rview.vry + (*distance) * rsin(*rot0) / ONE;
sp->rview.vpz = sp->rview.vrz - dist * rsin(*rot1) / ONE;
}
#if 0 /* 今は使ってない */
static void nh_view_polar_to_xyz2(short *rot0, short *rot1, short *distance)
{
sp_w;
short dist;
dist = (*distance) * rcos(*rot0) / ONE;
sp->rview.vrx = sp->rview.vpx - dist * rcos(*rot1) / ONE;
sp->rview.vry = sp->rview.vpy - (*distance) * rsin(*rot0) / ONE;
sp->rview.vrz = sp->rview.vpz + dist * rsin(*rot1) / ONE;
}
#endif
static void nh_view_intro(void)
{
sp_w;
sys_w;
char *interpolate_time;
CLASS_W *cls;
CLASS1_W *clsr;
NH_GAME_W *work;
NH_VIEW_W *view_w;
NH_VIEW_DATA *intro_view;
cls = &s->classw[0];
work = &nh_game_w;
view_w = &nh_view_w;
switch (view_w->step) {
case 0: /* 初期設定 */
intro_view = (NH_VIEW_DATA *)intro_view_dat[0];
interpolate_time = (char *)intro_view
0x6E8200#
VIEW_DATA *)success_view_dat[camera_no];
view_w->prev = success_view[0];
view_w->next = success_view[1];
if (work->player.hdir) { /* 左利きの場合逆アングルに */
view_w->prev.vpy = 0x800 - view_w->prev.vpy;
view_w->next.vpy = 0x800 - view_w->next.vpy;
}
view_w->prev.vrx += cls->xposi;
view_w->prev.vrz += cls->zposi;
view_w->prev.vpy += cls->rot.vy;
view_w->next.vrx += cls->xposi;
view_w->next.vrz += cls->zposi;
view_w->next.vpy += cls->rot.vy;
view_w->step++;
case 1:
if (nh_view_rot_interpolate(64)) {
view_w->step++;
}
break;
default:
break;
}
}
static void nh_view_miss(void)
{
sys_w;
short camera_no;
CLASS_W *cls;
NH_GAME_W *work;
NH_VIEW_W *view_w;
NH_VIEW_DATA *miss_view;
cls = &s->classw[0];
work = &nh_game_w;
view_w = &nh_view_w;
switch (view_w->step) {
case 0:
camera_no = Random(5);
if (camera_no == 0) work->goal_kind = OFF;
else work->goal_kind = ON;
miss_view = (NH_VIEW_DATA *)miss_view_dat[camera_no];
view_w->prev = miss_view[0];
view_w->next = miss_view[1];
if (work->player.hdir) { /* 左利きの場合逆アングルに */
view_w->prev.vpy = 0x800 - view_w->prev.vpy;
view_w->next.vpy = 0x800 - view_w->next.vpy;
}
view_w->prev.vrx += cls->xposi;
view_w->prev.vrz += cls->zposi;
view_w->prev.vpy += cls->rot.vy;
view_w->next.vrx += cls->xposi;
view_w->next.vrz += cls->zposi;
view_w->next.vpy += cls->rot.vy;
view_w->step++;
case 1:
0x6EAA00#
;
}
limit_max = &replay_limit_max[view_no];
limit_min = &replay_limit_min[view_no];
switch (view_w->step) {
case 0: /* 初期化 */
replay_view = replay_init[view_no];
view_w->step++;
// break;
case 1:
/* 参照点 */
switch (view_w->camera_no) {
case 0: /* 上から */
work->backboard_kind = OFF;
FntPrint("LOOK DOWN\n");
break;
case 1: /* 横から */
FntPrint("SIDEVIEW\n");
break;
case 2: /* バックボードを見る */
replay_view.vrx = 0;
replay_view.vry = height[work->version] * MAGNIFICATION / ONE;;
replay_view.vrz = work->backboard_pos * MAGNIFICATION / ONE;
FntPrint("BACKBOARD\n");
break;
case 3: /* 選手を見る */
replay_view.vrx = cls->xposi;
replay_view.vry = cls->yposi - 240 * MAGNIFICATION;
replay_view.vrz = cls->zposi;
FntPrint("PLAYER\n");
break;
case 4: /* ボールを見る */
replay_view.vrx = clsb->xposi;
replay_view.vry = clsb->yposi;
replay_view.vrz = clsb->zposi;
FntPrint("BALL\n");
break;
case 5: /* ボールを見る */
sp->rview.vrx = clsb->xposi;
sp->rview.vry = clsb->yposi;
sp->rview.vrz = clsb->zposi;
sp->rview.vpx = cls->xposi + 3000;
sp->rview.vpy = -clsb->yposi - 2000;
sp->rview.vpz = (cls->zposi + clsr->zposi) / 2;
break;
case 6: /* ボールを見る */
sp->rview.vrx = clsb->xposi;
sp->rview.vry = clsb->yposi;
sp->rview.vrz = clsb->zposi;
sp->rview.vpx = cls->xposi -
0x6ED600#
_w & P_LRIGHT) nh_test_frame++;
if (sp->joyw[1].joy_w & P_LLEFT) nh_test_frame--;
if (nh_test_frame < 0) nh_test_frame = 0;
if (nh_test_frame > 0x1000) nh_test_frame = 0x1000;
} else {
if (sp->joyw[1].joy_w & P_TL1) { /* 視点、参照点の同時移動 */
if (sp->joyw[1].joy_w & P_LUP) {
sp->rview.vry -= TRANS_QUANT;
sp->rview.vpy -= TRANS_QUANT;
}
if (sp->joyw[1].joy_w & P_LDOWN) {
sp->rview.vry += TRANS_QUANT;
sp->rview.vpy += TRANS_QUANT;
}
if (sp->joyw[1].
0x6F4E00#
2) script += Random(3);
else script += (Random(10)<5) ? 3 : Random(3);
}
SD_call(script);
}
static Ushort furu_before_shoot_last[] = {
FK3_C16, /*「パーフェクトはもう目の前です!」*/
FK3_C17, /*「決めればパーフェクトだ!」*/
FK3_C18, /*「さあ、栄光の晴れ舞台は整っています!」*/
FK3_C19, /*「栄光の瞬間が迫って来ました!」*/
FK3_C20, /*「パーフェクトを達成するのか!?」*/
FK3_C21, /*「パーフェクトへ向けて!」*/
FK3_C22, /*「このプレッシャーに
0x6FA400#
er >= OVER_BOARD) {
rnd = Random(2);
if (rnd == 1) rnd = 3;
} else {
rnd = Random(2);
if (rnd == 1) rnd = 4;
}
SD_call(furu_rep_wild_pitch[rnd]);
}
}
}
if ((work->success & 0x10) && work->get_ring_num == 8) return;
if ((work->success & 0x10) == 0 && work->miss_count == 3) return;
SD_call(FK1_E01);
SD_call(furu_rep_end[Random(2)]);
SD_call(furu_rep_end[2+Random(2)]);
}
static Ushort furu_result_perfect_kami[] = {
FK4_E00, /*「すばらしい記録が誕生いたしました!」*/
FK4_E01, /*「すばらしい大記録!」*/
FK4_E02, /*「どうですかこの記録!」*/
FK4_E03, /*「やりました大記録です!」*/
FK4_E04, /*「やりました大記録です!」*/
};
static Ushort furu_result_perfect_naka[] = {
FK4_E05, /*「パーフェクトです!」*/
FK4_E06, /*「魅せてくれましたパーフェクト!」*/
FK4_E08, /*「すべてのリングをゲットです!」*/
};
static Ushort furu_result_perfect_shimo[] = {
FK4_E09, /*「見事パーフ
0x700200#
-------*/
#ifndef
#define
#define MAGNIFICATION 2
#define REPLAY_BUFF_SIZE 0xd0
#define REPLAY_BUFF_ADR (Ulong *)0x80150000L /* TIM_TABLE2を使わせてもらう */
#define REPLAY_SLOW_WAIT 2
enum {
NORMAL_MODE,
REPLAY_MODE,
};
#define JOY_W cls->key_w
#define JOY_TRG cls->key_trg
#define JOY_NTRG cls->key_w_old
#define BALL_BOUND_SHOCK 7 /* ボールがバウンドするときの振動のパターン# */
/* ---------- 各種オブジェクトの配置関係の定義 ---------- */
/* リング関連 */
#define RING_NUM 9
#define OUT_RADIUS 55
#define IN_RADIUS 51
#define RING_RADIUS 53 /* リングの平均 */
#define MOVE_LIMIT_X (90<<12) /* 定位置から外に30cm移動 */
#define MOVE_LIMIT_Y (60<<12) /* 定位置から上下に45cmずつ移動 */
#define NET_DEPTH (50<<12)
/* ボール関連 */
#define BALL_RADIUS 25 /* 直径24(cm) */
/* バックボード関連 */
#define BACKBOARD_WIDTH 0x168000 /* 1.8(m) */
#define BACKBOARD_HEIGHT 0x0f0000 /* 1.2(m) */
#define BACKBOARD_XPOS 0
#define BACKBOARD_YPOS_1 (-(755<<12)) /* Ver.1のバックボードの高さ */
#define BACKBOARD_YPOS_2 (-(770<<12)) /* Ver.2のバックボードの高さ */
#define BACKBOARD_YPOS_H (-(900<<12)) /* HIDEのバックボードの高さ */
#define BALL_RING_E 5/10 /* ボールとリングの跳ね返り係数 */
#define BALL_RING_H_E 4/10 /* ボールとリングの跳ね返り係数(Hide用) */
#define BALL_BACK_E 8/10 /* ボールとバックボードの跳ね返り係数 */
#define BALL_FLOOR_E 6/10 /* ボールと床の跳ね返り係数 */
#define BALL_HUMAN_E 8/10 /* ボ
0x703600#
ccel;
} NH_BALL_W;
/* リングワーク */
typedef struct {
short step;
short substep;
short status;
short action;
short timer;
short ring_no;
short hit_check;
short work0;
short work1;
short pad; /* 空き */
long base_speed;
long base_accel;
long direct_angle;
long angle;
// SVECTOR ball_in_pos;
VECTOR pos;
VECTOR speed;
VECTOR accel;
VECTOR rot;
} NH_RING_W;
#endif
6/10 /* ボールと床の跳ね返り係数 */
#define BALL_HUMAN_E 8/10 /* ボ
0x70BC00#
*******
共用関数
***************************************************************************/
/***************************************************************************
共用関数Bのパッケージ関数
***************************************************************************/
static int _call_Em01( u_short spd_num )
{
sp_w;
if ( !TRANS_STEP ){ /*パターン初期表示*/
set2d( G_CLS_EM_A, spd_num, MODE16, 0,0, 12, 0, 10, 1 );
em01_act[0].step = 0;
em01_act[0].cls = G_CLS_EM_A;
em01_act[0].func = Em01_func01;
TRANS_STEP++;
}
if ( em01_act[0].func ){
if ( em01_act[0].func( (void*)&em01_act[0] ) ){
TRANS_STEP = 0;
return 1;
}
}
return 0;
}
/***************************************************************************
画面中央から拡大して出現
in: void* arg EM_ACT型変数へのアドレス
EM_ACTのflagメンバーがONのときは収束時にフラッシュする
out: int ==0:継続中 ==1:終了
***************************************************************************/
stat
0x70EC00#
ィック全消去
***************************************************************************/
void KillG2d01(void)
{
int i;
sp_w;
sys_w;
TRANS_STEP_S=0;
TRANS_STEP=0;
for( i=1; i<=0x0c; i++ ){
s->classw0[i].kind = 0;
}
}
/***************************************************************************
ポイントセット関数
***************************************************************************/
void G2d_Set_Point01( Ushort getp, Ushort oldp, Ushort newp )
{
get_point = getp;
old_point = oldp;
new_point = newp;
}
/***************************************************************************
ナインフープス用演出文字のパターン
***************************************************************************/
SPD_W parfect_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x80,0x20,0x00,0x80,0xff48,0x0010,0x49},
{DAT,0x70,0x20,0x80,0x80,0xffc8,0x0010,0x49},
{DAT,0x60,0x20,0x00,0xa0,0x0038,0x0010,0x49},
{DAT,0x18,0x20,0x60,0xa0,0x0094,0x0010,0x49},
{END,0
0x721C00#
========================================================
==プレーヤー2側
==名前とプレートの表示設定
== in: CLASS_W* cls 表示する人のクラス
== Uchar flag 表示ON/OFF(ON==表示 / OFF==非表示)
==
==========================================================================*/
void SetG2dName0201( CLASS_W* cls, Uchar flag )
{
sys_w;
SPD_W* spd;
Uchar tp;
/*表示OFFのとき*/
if ( flag == OFF ){
s->classw0[G_CLS_NAME02].kind = 0; /*選手名OFF*/
s->classw0[G_CLS_PLATE02].kind = 0; /*フレームOFF*/
return;
}
set2d(G_CLS_PLATE02, SPD_PLATE03, STP05P05|MODE16,0,0,13,0,10,1); /*ネームプレート2*/
/*プレーヤー#の表示の切り替え*/
spd = GetSpd( SPD_PLATE03 );
if ( cls->cpu ){ /*COMのとき*/
spd[0].u = 0;
spd[0].v = (1+cls->player_no)*PLT_TYPE_V;
}else{
spd[0].u = PLT_TYPE_U;
spd[0].v = cls->player_no*PLT_TYPE_V;
}
if ( entrybox[cls->entry_no] < CR_ED1 ){
/*デフォルトの選手名のパターンを表示させる*/
switch( entrybox[cls->entry_no] ){
0x736600#
ase 3: // フェードアウト終了待ち
if ( MenuFadeOut( 256/12, 0 ) )
gstep_up();
break;
default:
// 実況停止
if ( ana_stop )
SD_call( SD_CTL_XAKILL2 );
// アナウンサー名とモデル非表示
SetG2dAna02( ANA_FURU, OFF );
AnaDispSwitch( &s->classw[CLS_FURU], OFF );
// 競技形式別の跳び先を決定
sstep_set( BF_RUN_PRE ); // BF_RUN_SET );
sp->gstepw = 0;
}
TVcamSetPosition(); // 自前カメラをメイン側に設定する
// ○ボタンでとばし
if ( trg & PAD_SKIP && 1 < sp->gstepw
0x77AC00#
00000,0x00000000,0x00210000,0x00000000,0x00000010,0x00021110,
0x00211954,0x00295510,0x00844000,0x00000844,0x00029440,0x00000000,0x00000120,0x00212221,
0x02122a55,0x0219aa21,0x008a9100,0x08421944,0x00086580,0x00a59555,0x00085644,0x00a54442,
0x02255556,0x02194461,0x00866600,0x00862a44,0x00084610,0x086a6a66,0x00a5a844,0x084a9844,
0x0a5aaa55,0x02195592,0x00844800,0x00084444,0x00084520,0x08484844,0x00861844,0x08402944,
0x0a500a55,0x02196620,0x00865100,0x00069944,0x00085600,0x08695955,0x00842944,0x08400a44,
0x0a611956,0x02295510,0x00866204,0x084a1a44,0x00a56400,0x086a6a66,0x00840a54,0x08846548,
0x08a22aa8,0x002aaa20,0x00884448,0x08802988,0x00aa8800,0x08888888,0x008808a8,0x0088aa80,
0x00001110,0x00211110,0x00211111,0x00211110,0x00211111,0x02111111,0x02111111,0x02111110,
0x00212221,0x02122211,0x02122211,0x02122211,0x0212a651,0x02222211,0x02222211,0x02222211,
0x00a55565,0x0a544651,0x02944a55,0x0a644651,0x02108651,0x08440295,0x08440295,0x08400a55,
0x0869a965,0x0a548a95,0x0a699555,0x08888a55,0x02
0x7A8600#
c * 10sec
#define REPLAY_STATUS_SPEED_NORMAL 2
#define REPLAY_STATUS_SPEED_HALF 1
#define REPLAY_STATUS_SPEED_ZERO 0
#define REPLAY_STATUS_SPEED 3
#define REPLAY_STATUS_WIND 4
#define REPLAY_STATUS_REVERSE 8
#define REPLAY_TVCAM_MAX 5
typedef struct {
// 操作関連
short play_count; // 再生用カウンタ
short count_min; // rep_data[]参照用カウンタの最小値
short count_max; // rep_data[]参照用カウンタの最大値、兼、記録用カウンタ
short time; // 再生速度制
0x7E8200#
// 連射速度用
typedef struct {
u_char state; // 状態
short time; // タイマ
DVECTOR pos[2]; // 表示座標
} RENSHASP_W;
enum {
RNSH_IDLE = 0, // 停止中
RNSH_IN, // 画面に入ってくる
RNSH_MOVE, // 速度に合わせて自動で動く
RNSH_OUT, // 画面から出ていく
};
// 立ち上がり角表示用
typedef struct {
u_char state; // 状態
short time; // タイマ
VECTOR pos; // 3D場所
} STANDUP_W;
enum {
STUP_IDLE = 0, // 停止中
STUP_IN, // 画面に出てくる
STUP_MOVE, // 自動で動く
STUP_OUT, // 画面から消える
};
// ジャンプ可能領域用
typedef struct {
u_char state; // 状態
short time; // タイマ
short start; // 領域の開始場所
short end; // 領域の終了場所
} JUMPAREA_W;
enum {
JUMP_IDLE = 0, // 停止中
JUMP_IN, // 画面に出てくる
JUMP_MOVE, // 速度に合わせて自動で動く
JUMP_STOP, // ジャンプ後、あるいは素通り後
JUMP_OUT, // 画面から消える
};
// コントローラ割り振り
typedef struct {
u_char state; // 状態
short time; // タイマ
u_char ctrl[2]; // コントローラ割り振り (0:ナシ, 1/2;コントローラ1/2)
} CONTROLLER_W;
enum {
CTRL_IDLE = 0, // 停止中
CTRL_IN, // 出て来る
CTRL_MOVE, // 点滅中
CTRL_MOVE1, // 点滅終了
CTRL_OUT, // 出ていく
};
enum {
CLS0_1P_SPEED = 0x10, // とりあえずココカラ始める
CLS0_2P_SPEED,
CLS0_1P_ANGLE,
CLS0_2P_ANGLE,
CLS0_1P_ICON,
CLS0_2P_ICON,
CLS0_1P_DIST,
CLS0_2P_DIST,
CLS0_DIS
0x7F8200#
de */
/*------------------------------------------------------------------*/
#include "ps000.h"
#include "gbl_data.h" /* Global Data definition Header */
#include "taka.h"
#include "game.h"
#include "lt_spd.h"
#include "lt_cd.h"
#include "g2d.h"
#include "mr_12.h"
/**************************************************************************
**************************************************************************/
///////////////////////////////////////////////////////////////////////////
//define
///////////////////////////////////////////////////////////////////////////
/*
クラスの内訳
0x00:フェード用
----
0x01:選手名1
0x02:選手名プレート1
0x03:選手名2
0x04:選手名プレート2
0x05:アナウンサー名
0x06:アナウンサープレート
0x07:紹介表示用職業
0x08:紹介表示用選手名
0x09:紹介表示用年齢・身長・体重
0x0a:紹介表示用”才”・”cm”・”kg”
0x0b:紹介表示用プレート
0x0c:演出文字A
0x0d:演出文字B
----
0x01:リプレー表示
0x02:リプレー用ボタン
0x03:リプレー用メニュー1
0x04:リプレー用メニュー2
0x05:リプレー用LRボタン
0x06:リプレー用戻しマーク
0x07:リプレー用送りマーク
0x08:リプレー用プレート
*/
#define G_CLS_NAME01 0x01
#define G_CLS_PLATE01 0x02
#define G_CLS_NAME02 0x03
#define G_CLS_PLATE02 0x04
#define G_CLS_ANA_NAME 0x05
#define G_CLS_ANA_PLT 0x06
#define G_CLS_IT_JOB 0x07
#define G_CLS_IT_NAME 0x08
#define G_CLS_IT_PARA 0x09
#define G_CLS_IT_FORM 0x0a
#define
0x80C230#
*/
};
static u_short bf_F_winner12[] = {
/*自分が走って優勝の後*/
FBF_N20, /*「ご覧下さい、この晴れがましい笑顔を、優勝は」「(選手名)」*/
FBF_N23, /*「勝利の女神が微笑んだのは」「(選手名)」*/
// FBF_N24,//未使用 /*「堂々の優勝です」*/
};
#if 0 // 使わない
static u_short bf_F_winner10[] = {
/*走って優勝の前*/
FBF_N12, /*「激闘を制して、ここまで勝ち上がってきた」*/
FBF_N13, /*「あまたの戦いを、見事全て勝ち残ってきました」*/
FBF_N14, /*「激闘に次ぐ激闘」*/
};
static u_short bf_F_winner11[] = {
/*走って優勝の後*/
FBF_N15, /*「優勝を決めたのは」「(選手名)」*/
FBF_N16, /*「優勝は」「(選手名)」*/
FBF_N17, /*「それを制したキング・オブ・キングス」「(選手名)」*/
};
#endif
/*************************************************************
選手名
*************************************************************/
static u_short bf_F_name[] = {
/*フルネーム 通常テンション*/
FZ_00F, /*「松井秀喜」*/
/*フルネーム ハイテンション*/
FZ_01F, /*「松井秀喜」*/
/*フルネームが 通常テンション*/
FZ_02F, /*「松井秀喜が」*/
/*フルネームが ハイテンション*/
FZ_03F, /*「松井秀喜が」*/
/*フルネーム対 通常テンション*/
FZ_08F, /*「松井秀喜対」*/
/*フルネーム対 ハイテンション*/
FZ_09F, /*「松井秀喜対」*/
/*フルネームの 通常テンション*/
FZ_10F, /*「松井秀喜の」*/
/*フルネームの ハイテンション*/
FZ_11F, /
0x8189E0#
>=7090 && z<7490){
if( check_ // 決勝前デモ
static int BF_run_pre( void ); // 選手紹介
static int BF_run_set( void ); // 地面に伏せデモ
static int BF_run_ready( void ); // 疾走前審判デモ
static int BF_run_main( void ); // 疾走
static int BF_run_pseudo( void ); // COMスキップ時の結果算出用
static int BF_run_flying( void ); // フライング
static int BF_run_winlose( void ); // 勝ち負けデモ
static int BF_replay_init( void ); // リプレイ初期化
static int BF_replay_auto( void ); // 自動リプレイ
static int BF_replay_manual( void ); // 手動リプレイ
static int BF_replay_save( void ); // リプレイセーブ
static int BF_run_result( void ); // 疾走結果デモ
static int BF_result( void ); // 表彰
static int BF_terminate( void ); // 後始末
static int BF_restore( void ); // やり直し時の初期化
enum {
BF_INITIALIZE, // 初期化とステージ読み込み
BF_PRE, // 競技前演出
BF_TOURNAMENT, // トーナメント
BF_RUN_INIT, // 人読み込みと人初期化
BF_RUN_PRE_FINAL, // 決勝前デモ
BF_RUN_PRE, // 選手紹介
BF_RUN_SET, // 地面に伏せデモ
BF_RUN_READY, // 疾走前審判デモ
BF_RUN_MAIN, // 疾走
BF_RUN_PSEUDO, // COMスキップ時の結果算出用
BF_RUN_FLYING, // フライング
BF_RUN_WINLOSE, // 勝ち負けデモ
BF_REPLAY_INIT, // リプレイ初期化
BF_REPLAY_AUTO, // 自動リプレイ
BF_REPLAY_MANUAL, // 手動リプレイ
BF_REPLAY_SAVE, // リプレイセーブ
BF_RUN_RESULT, // 疾走結果デモ
BF_RESULT, // 表彰
BF_TERMINATE, // 後始末
BF_RESTORE, // やり直し時の初期
0x826600#
oser = 1;
// 結果を更新
switch ( sp->gstepw )
{
case 0:
// カメラ
TVcamSet( TVCAM_INFO_TOURNAMENT );
gstep_up();
//break;
case 1: // フェードイン待ち
if ( MenuFadeIn( 256/8 ) )
{
// 実況
// フライングの場合
// 人vs人、CPUvsCPUなら、負け側
// CPUvs人なら、人側の勝ち負け
// 走った場合
// 人vs人、CPUvsCPUなら、勝ち側
// CPUvs人なら、人側の勝ち負け
if ( bfw.result == RESULT_FLYING )
{
winner = 2 - bfw.result_player;
loser
0x841200#
ヲ
in: short height 高さ(cm単位で指定)0のときはその段を表示しない
short res 結果 0:まだ何もやっていない
1:1回目成功
2:1回目失敗、2回目まだ
3:1回目失敗、2回目成功
short dan 何段目?(0~2)何段目を表示するのか。上から0段目、1段目、2段目
***************************************************************************/
// write record
for ( i = 0; i < 3; i++ , height++, result++ )
{
*height = 0;
*result = 0;
switch ( rec->is_success )
{
default:
*height = 0;
*result = 0;
break;
case 0:
*height = rec->record;
*result = 2;
break;
case 1:
*height = rec->record;
if ( glw.play_type == PLAY_TYPE_PRACTICE )
{
// プラクティスモードは一回ずつ
*result = 1;
} else
{
// マッスルモードは一つ下の結果も見る
if ( (rec+1)->record == rec->record || (rec+1)->is_success == 0 )
{
*result = 3;
rec++;
} else
*result = 1;
}
break;
}
rec++;
}
}
// 高さ選択時の状態
enum {
SH_STATE_POSE_0, // 腕を組む・腰に手を当てる
SH_STATE_POSE_1, // むにゃむにゃ
SH_STATE_POSE_2, // 腕をほどく・気を付け
SH_STATE_STAND, // 立っている
};
// 高さ選択時の人モーションキック
static void playerKickSelectHeight( void )
{
// 人の位置を決定
PlayerSetMot( MOT_010 + (rand()>>12)%2, 0, 256 );
PlayerSetPos( 260, 0, -2000 );
PlayerSetVec( 0, 2048 -128, 0 );
// 樽は台の上
TaruClsInit( 0 );
glw.state = SH_STATE_POSE_0
0x860200#
0047600,0x00144544,0x00054418,0x0445d544,0x05000114,0x04001104,0x04007304,
0x0042002c,0x00429060,0x00418014,0x00410058,0x0030d010,0x05001005,0x04010016,0x04025024,
0x0420000e,0x04209006,0x04008004,0x0401001c,0x0102d001,0x04101005,0x04010034,0x04204106,
0x0420000e,0x04201006,0x04000004,0x0401001c,0x0100f001,0x04101005,0x00410250,0x04204006,
0x0420000e,0x04201006,0x04002204,0x0011331d,0x0000d210,0x04232334,0x00412050,0x04240404,
0x004a882c,0x04209006,0x0040a204,0x00812658,0x0000d120,0x0489080c,0x004a9948,0x040e8c04,
0x008466cc,0x04229024,0x0004c444,0x000d4018,0x0001d002,0x0c00908c,0x00e001c8,0x04842484,
0x0802002c,0x0420b204,0x00048004,0x00418018,0x0010d020,0x0c00810c,0x08161418,0x0c04060c,
0x0820000e,0x04209004,0x00048004,0x04010818,0x0100d200,0x0c33a32c,0x08143409,0x08400248,
0x0820000e,0x0420c006,0x00408004,0x0411919d,0x0100f001,0x0d00901c,0x08050609,0x08400048,
0x0820000e,0x04248006,0x0040a204,0x0409221c,0x0102d001,0x0d00901c,0x08014029,0x08400048,
0x0802002c,0x00439060,0x0400a204,0x00c12258,0x0030d010,0x09409049,0x0810500b,0x00c022c0,
0x0800220c,0x0405f600,0x04008004,0x08056418,0x0001d100,0x0815c409,0x09004118,0x0048aa40,
0x00000000,0x00000000,0x00000880,0x00010210,0x00001000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00100000,0x00000010,0x00000000,0x00444440,0x00000000,0x00444440,0x00004000,0x00000000,
0x04032204,0x04002104,0x04466666,0x00022240,0x00022226,0x02622222,0x02262622,0x01022200,
0
0x895C00#
1 ); // 一人回数
}
// エントリーされているプレイヤーの次を呼ぶ
// (参加プレイヤーの管理)
// 0-? : 読み替え用プレイヤー番号
// -1 : 同じプレイヤーが続けてやる
int PlayerGetNext( void )
{
int i, n, old_player_no = glw.player_no;
PLAYER_W *p;
// 次のプレイヤーを競技中にする
// 全員終了しているのにコレが呼ばれるのはオカシイ
switch ( glw.play_type )
{
case PLAY_TYPE_MUSCLE:
case PLAY_TYPE_EXTRA:
n = glw.player_no-1;
// 最初の呼び出しなら、強制的に先頭の人
if ( n < 0 )
{
glw.player_no = 1;
} else
{
// 前回成功? あるいは前回失敗で且つプレイヤー死亡、あるいはコナミモード
if ( gl_is_success() || ( gl_is_failure() && glw.status == PLAYER_STATUS_END ) || glw.play_type == PLAY_TYPE_EXTRA )
{
// なら、次の生きている人をプレイヤーの中から探す
for ( i = 0; i < entry_num; i++ )
{
// 次の競技中キャラを探す
if ( ++n >= entry_num )
n = 0;
if ( glw.player[n].status == PLAYER_STATUS_JOIN ) // 競技中キャラが見つか
0x8A0400#
if ( pad & PADLleft )
nozzle[i].rot.vy += 24;
else
nozzle[i].rot.vy -= 24;
}
}
if ( trg & PADRdown )
SmokeBlow( 3 );
// SmokeSetBlow( 60 );
if ( trg & PADL1 )
SmokeSetSpeed( nozzle[0].speed+1 );
if ( trg & PADL2 )
SmokeSetSpeed( nozzle[0].speed-1 );
}
}
#endif
// スモークの噴出口を設定して初期化
void SmokeInit( SVECTOR pos[], short latitude[], short longitude[], int n )
{
int i;
// 全て未使用にする
for ( i = 0; i < NOZZLE_MAX; i++ )
nozzle[i].status = NOZZLE_STATUS_NOUSE;
// ゼロ以下なら帰る
if ( n <= 0 )
return;
// 吹き出し回数を吹き出さない設定にする
SmokeBlow( -1 );
// 最大値を超えていたら、最大値にする
if ( n > NOZZLE_MAX )
n = NOZZLE_MAX;
// ノズルの向きと位置を初期化
for ( i = 0; i < n; i++ )
nozzleSet( &nozzle[i], &pos[i], latitude[i], longitude[i] );
#if 1 // 無理矢理半透明CLUT作成 1999.08.02 (矢)
{
u_short buff[16];
RECT r = { SMOKE_CX, SMOKE_CY, 16, 1 };
int i;
DrawSyn
0x8BD600#
353 },
{ 0x0239, 0x0000, 0x0fe6, 0, -765, 396 },
{ 0x02ab, 0x0000, 0x0fde, 0, -744, 437 },
{ 0x031c, 0x0000, 0x0fd5, 0, -717, 477 },
{ 0x038b, 0x0000, 0x0fca, 0, -685, 515 },
{ 0x03f4, 0x0000, 0x0fbe, 0, -647, 551 },
{ 0x0455, 0x0000, 0x0fb1, 0, -602, 586 },
{ 0x04ab, 0x0000, 0x0fa2, 0, -550, 618 },
{ 0x04f3, 0x0000, 0x0f91, 0, -490, 649 },
{ 0x052a, 0x0000, 0x0f7f,
0x8D1200#
#define N_OP 2
#define OP_POWER 0
#define OP_THROW 1
// 入力履歴の数
#define HIST_SIZE (60) // 2(sec) * 30(frame/sec)
// 樽と壁床の衝突エフェクト用
#define HIT_MAX 3 // 樽と壁床の衝突エフェクト用
// ゲームの成否
#define THROW_FLYING 0 // 飛行中
#define THROW_FAILURE_0 1 // 壁にもぶつからず失敗
#define THROW_FAILURE_1 2 // 上昇中に壁平にぶつかって失敗
#define THROW_FAILURE_2 3 // 上昇中に壁端にぶつかって、かろうじて失敗
#define THROW_FAILURE_3 4 // 下降中に壁平にぶつかって失敗
#define THROW_FAILURE_4 5 // 下降中に壁端にぶつかって、かろうじて失敗
#define THROW_SUCCESS_0 6 // 普通の高さを余裕を持って成功
#define THROW_SUCCESS_1 7 // 上昇中に壁端にぶつかって、かろうじて成功
#define THROW_SUCCESS_2 8 // 下降中に壁端にぶつかって、かろうじて成功
#define THROW_SUCCESS_3 9 // かなりの高さを余裕を持って成功
#define THROW_SUCCESS_4 10 // どの高さでも、結構ギリギリの高さで成功
#define THROW_PASS 11 // パス(実際の用途には使ってないが、最後の識別用に使用している)
// 記録のワーク
typedef struct {
short is_success; // 成否
short record; // 記録
} RECORD_W;
#define RECORD_MAX 8 // 過去?回分の記録を取っておくため
// モーション(コメントアウトはデータに無い)
enum {
MOT_000 = 0, // 立ち1
MOT_001, // 立ち2
MOT_002, // 立ち3
// MOT_003, // 立ち4
MOT_004, // 立ち→歩き
MOT_005, // 歩き1
MOT_006, // 歩き2
// MOT_007, // 歩き3
MOT_008, // 歩き4
MOT_009,
0x8EDFA0#
14, /*「号砲一発」*/
FBT_D15, /*「(選手名)」「まずは軽やかに一歩リードしました
0x930C00#
E, // 初期化とステージ読み込み
GL_PRE, // 競技前演出
GL_ORDER, // 競技順表示
GL_CHALLENGE, // 高さ決定デモ
GL_THROW_INIT, // 人読み込み
GL_THROW_PRE, // 選手紹介
GL_THROW_SET_H, // 投擲条件設定(高さ)
GL_THROW_READY, // 樽取り演出
GL_THROW_SET_P, // 投擲条件設定(位置)
GL_THROW_MAIN, // 投擲
GL_THROW_PSEUDO, // COMスキップ時の結果算出用
GL_THROW_RESULT, // 結果
GL_REPLAY_INIT, // リプレイ用初期化
GL_REPLAY_AUTO, // 自動リプレイ
GL_REPLAY_MANUAL, // 手動リプレイ
GL_REPLAY_SAVE, // リプレイセーブ
GL_THROW_END, // 投擲終了演出
GL_THROW_OVER, // 競技終了演出
GL_GAME_CHECK, // 投擲後の色々判定
GL_RESULT, // 表彰
GL_TERMINATE, // 後始末
GL_RESTORE, // やり直し時の初期化
};
static int (*GL_func[])() = {
GL_initialize, // 初期化とステージ読み込み
GL_pre, // 競技前演出
GL_order, // 競技順表示
GL_challenge, // 高さ決定デモ
GL_throw_init, //
0x93FA00#
============
static int GL_restore( void )
{
sp_w;
switch ( sp->gstepw )
{
case 0: // フェードアウト終了待ち
if ( MenuFadeOut( 256/12, 0 ) )
gstep_up();
break;
default: // 必要な部分だけ初期化して、壁高さ設定へ
// 2D消去
KillG2d03();
gl_GageInit();
// 記録履歴の初期化
PlayerInit();
sstep_set( GL_THROW_INIT );
sp->gstepw = 0;
}
return ( 0 );
}
static int SReplayInit( void )
{
// キリのいいタイミングで、ショートリプレイに移行
if ( 0 )
{
// 状況に応じて、繰り返し回数の決定
glw.sreplay = SHORT_REPLAY_MAX; // とりあえず常にSHORT_REPLAY_MAX回
// 再生用固定カメラの使用順を決定
return ( 1 );
}
return ( 0 );
}
static int SReplayRestore( void )
{
// 保存した情報の復帰
return ( 0 );
}
static void SReplaySet( void )
{
// 状況に応じたリプレイ時間を設定
// 状況に応じたカメラを設定
// 遠くから引いたカメラ、其の壱
// 遠くから引いたカメラ、其の弐
// 下から見上げるように樽を追跡するカメラ
// 柱に付いて板の上部を見るカメラ
// 樽が当たった壁の辺りを見るカメラ
}
static int SReplayPlay( void )
{
int ret = -1;
// リプレイデータを実データに書き戻し
ReplayPlayFrame( 0 ); // 実況ナシ
// 終了?
if ( ReplayPlayIsEnd() )
{
// 繰り返し回数の更新
ret = --glw.sreplay;
}
return ( ret );
}
nc[])() = {
GL_initialize, // 初期化とステージ読み込み
GL_pre, // 競技前演出
GL_order, // 競技順表示
GL_challenge, // 高さ決定デモ
GL_throw_init, //
0x94F600#
sh[1] = 0;
bm_camera.step = 0;
bm_camera.timer = 0;
ReplayInitJoy();
// crush_random_init();
cpu_key_input(0,0);
speak04_main(0); /* 実況ワーククリア */
clap = 0;
gstep_up();
break;
case 2:
bm_Pose_Trans2();
#if B50M_DEVELOP
if (b50m_keychk_trg(P_RRIGHT,0)){
gstep_up();
for (i=0; i<PLAYER_NUM; i++){
if (b50mw.joy[i] == 0){
continue;
}
k = bm_mot_ready;
if (cls[i]->anime_no == bm_mot_post
0x95EC00#
* tbl[]の中身を再びシャッフル */
tmp = tbl[i];
j = Random(num);
tbl[i] = tbl[j];
tbl[j] = tmp;
}
bm_pwork[0].tmp = tbl[0];
bm_pwork[1].tmp = tbl[1];
}
/* ---------------------------------------------------------
static int intro_plyr_main(void);
選手紹介時の選手動作
OUT: 1 - 終了
--------------------------------------------------------- */
static int intro_plyr_main()
{
// sys_w;
b50m_cls;
int ret = 0;
int i;
ba_set_SE(0);
for (i=0; i<PLAYER_NUM; i++){
if (b50mw.joy[i] != 0){
// ret += intro_main_func[bm_pwork[i].sstep](cls[i],i);
ret += intro_main_func[2](cls[i],i);
}
}
ba_set_SE(1);
if (ret == b50mw.joy_num){
ret = 1;
}else{
ret = 0;
}
return (ret);
}
static int intro_func00(CLASS_W *cls, int no)
{
int ret = 0;
Uchar tmp;
switch (bm_pwork[no].step){
case 0:
cls->xposi = START_LINE+INTRO_OFSET+1000;
// Pose_Set(cls,bm_mot_walk1+Random(4),0);
Pose_Swap(no,bm_mot_walk1+Random(4),0);
bm_pwor
0x966A00#
p->active_side],21);
}
/* スピードゲージ2 */
if (s->classw0[SNo_SPDM2].kind){
cls = &s->classw0[SNo_SPDM2];
box.x = cls->xposi + (0x127 - 0x100);
GsSortBoxFill(&box,&SepOT[0].ot[sp->active_side],21);
}
}
/* ---------------------------------------------------------
stop_watch()
ストップウォッチ更新
※watch_timer と watch_flg を クリア(0)にしておく必要有り
--------------------------------------------------------- */
static void stop_watch()
{
if (b50mw.watch_flg == 0){
WATCH_TIMER+=3;
b50mw.watch_flg = 1;
}else if (b50mw.watch_flg == 1){
WATCH_TIMER+=3;
b50mw.watch_flg = 2;
}else{
WATCH_TIMER+=4;
b50mw.watch_flg = 0;
}
watch_spd_set(SNo_NUM16,WATCH_TIMER);
}
static void watch_spd_set(int num, short time)
{
short now_time;
Ushort inc;
inc = (num==SNo_NUM16?0x2014:0x200a);
ba_classw0[num].chara = (SPD_W*)GetSpd(time/1000 + inc);
now_time = time%1000;
ba_classw0[num+1].chara = (SPD_W*)GetSpd(now_time/100 + inc);
now_time = now_time%100;
ba_classw0[num+2].chara = (SPD_W*)GetSpd(now_time/10 + inc);
ba_classw0[num+3].chara = (SPD_W*)GetSpd(now_time%10 + inc);
}
static void plyr_watch()
{
int i;
int tbl[] = {
SNo_NUM08,SNo_NUM12,
};
for (i=0; i<PLAYER_NUM; i++){
if (!(bm_pwork[i].flg & 1)){
watch_spd_set(tbl[i],WATCH_TIMER);
}
}
}
static void set_now_record(short time1, short time2)
{
int i;
g_MAEinit(0);
i = b50mw.entry_no[0];
b50mw.result[i-1] = time1;
g_ResSet(i,0,time1);
//
0x970200#
00047600,0x00144544,0x00054418,0x0445d544,0x05000114,0x04001104,0x04007304,
0x0042002c,0x00429060,0x00418014,0x00410058,0x0030d010,0x05001005,0x04010016,0x04025024,
0x0420000e,0x04209006,0x04008004,0x0401001c,0x0102d001,0x04101005,0x04010034,0x04204106,
0x0420000e,0x04201006,0x04000004,0x0401001c,0x0100f001,0x04101005,0x00410250,0x04204006,
0x0420000e,0x04201006,0x04002204,0x0011331d,0x0000d210,0x04232334,0x00412050,0x04240404,
0x004a882c,0x04209006,0x0040a204,0x00812658,0x0000d120,0x0489080c,0x004a9948,0x040e8c04,
0x008466cc,0x04229024,0x0004c444,0x000d4018,0x0001d002,0x0c00908c,0x00e001c8,0x04842484,
0x0802002c,0x0420b204,0x00048004,0x00418018,0x0010d020,0x0c00810c,0x08161418,0x0c04060c,
0x0820000e,0x04209004,0x00048004,0x04010818,0x0100d200,0x0c33a32c,0x08143409,0x08400248,
0x0820000e,0x0420c006,0x00408004,0x0411919d,0x0100f001,0x0d00901c,0x08050609,0x08400048,
0x0820000e,0x04248006,0x0040a204,0x0409221c,0x0102d001,0x0d00901c,0x08014029,0x08400048,
0x0802002c,0x00439060,0x0400a204,0x00c12258,0x0030d010,0x09409049,0x0810500b,0x00c022c0,
0x0800220c,0x0405f600,0x04008004,0x08056418,0x0001d100,0x0815c409,0x09004118,0x0048aa40,
0x00000000,0x00000000,0x00000880,0x00010210,0x00001000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00100000,0x00000010,0x00000000,0x00444440,0x00000000,0x00444440,0x00004000,0x00000000,
0x04032204,0x04002104,0x04466666,0x00022240,0x00022226,0x02622222,0x02262622,0x01022200,
0x972A00#
651,0x00aaa650,0x0a556661,
0x02100211,0x084699a0,0x00a55546,0x0a699946,0x08655461,0x08499955,0x00a55555,0x086598a6,
0x02100211,0x08465540,0x084aa954,0x02912a44,0x0a559995,0x0a556666,0x029aa659,0x08461184,
0x02100211,0x08469984,0x08400a55,0x0a510845,0x0a6512a6,0x0a998844,0x02108651,0x08465548,
0x02211112,0x08655558,0x0a955555,0x0aa5555a,0x08655448,0x0a655559,0x02219552,0x08469980,
0x00222220,0x08aaaaa0,0x02aaaaaa,0x00aaaaa0,0x08aaa880,0x08aaaaa2,0x0022aaa0,0x08866640,
0x00000000,0x00000000,0x00000000,0x00000000,0x00210000,0x00000000,0x00000010,0x00021110,
0x00211954,0x00295510,0x00844000,0x00000844,0x00029440,0x00000000,0x00000120,0x00212221,
0x02122a55,0x0219aa21,0x008a9100,0x08421944,0x00086580,0x00a59555,0x00085644,0x00a54442,
0x02255556,0x02194461,0x00866600,0x00862a44,0x00084610,0x086a6a66,0x00a5a844,0x084a9844,
0x0a5aaa55,0x02195592,0x00844800,0x00084444,0x00084520,0x08484844,0x00861844,0x08402944,
0x0a500a55,0x02196620,0x00865100,0x00069944,0x00085600,0x08695955,0x00842944,0x08400a44,
0x0a611956,0x02295510,0x00866204,0x084a1a44,0x00a56400,0x086a6a66,0x00840a54,0x08846548,
0x08a22aa8,0x002aaa20,0x00884448,0x08802988,0x00aa8800,0x08888888,0x008808a8,0x0088aa80,
0x00001110,0x00211110,0x00211111,0x00211110,0x00211111,0x02111111,0x02111111,0x02111110,
0x00212221,0x02122211,0x02122211,0x02122211,0x0212a651,0x02222211,0x02222211,0x02222211,
0x00a55565,0x0a544651,0x02944a55,0x0a644651,0x02108651,0x08440295,0x08440295,0x08400a55,
0x0869a965,0x0a548a95,0x0a699555,0x08888a55,0x0
0x974400#
*(long *)&sp->r0 = col;
setSemiTrans( sp, _stp );
sp->x0 = x;
sp->y0 = y;
sp->u0 = _u0 + (c&0x07)*8;
sp->v0 = _v0[c/8];
sp->clut = _clut[_stp][c/8];
addPrim( &_dr[_index], sp );
sp++;
x += 8;
_cnt++;
}
} else if ( c == '\n' ) // 改行文字 (\n)
{
x = _x0;
y += SIZE_H;
} else if ( c == '\a' ) // 色変更 (\a)
{
c = *str++;
if ( 0x30 <= c && c < 0x3a )
{
c -= 0x30;
col = _col[c];
} else if ( c == '\n' )
{
x = _x0;
y += SIZE_H;
} else if ( c == '\0' )
break;
else
col = _col[7];
}
}
_x = x;
_y = y;
}
return ( _cnt );
}
int DfntPrintP( int id, char *str, long col, short x, short y )
{
short ox0, oy0, ox, oy;
int cnt;
// 保存
ox0 = _x0;
oy0 = _y0;
ox = _x;
oy = _y;
// 座標を変更して書く
_x0 = _x = x;
_y0 = _y = y;
cnt = DfntPrint( id, str, col );
// 復帰
_x0 = ox0;
_y0 = oy0;
_x = ox;
_y
0x981200#
D_READ_INIT;
TRANS_STEP_S++;
break;
case 1:
if ( cd_file_load_NB(LOAD_G2D_00+4) ){
tim_trans((TIM_W *)TIM_TABLE[0],0);
cd_read_step=CD_READ_INIT;
SetSpd( (SPD_W**)em_04_spd );
TRANS_STEP_S = ( sp->ModSel.mode == 1 ) ? /*0:マッスル 1:プラクティス 2:エキストラ*/
2 : 3;
}
break;
case 2: /*プラクティス 用*/
if ( cd_file_load_NB(LOAD_PAS2D) ){
tim_trans( (TIM_W*)TIM_TABLE[0],0 );
cd_read_step = CD_READ_INIT;
TRANS_STEP_S++;
}
break;
default:
TRANS_STEP_S=0;
TRANS_STEP=0;
return 1;
}
return 0;
}
/*==========================================================================
==プレーヤー1側
==名前とプレートの表示設定
== in: CLASS_W* cls 表示する人のクラス
== Uchar flag 表示ON/OFF(ON==表示 / OFF==非表示)
==
==========================================================================*/
#define PLT_TYPE_U 0x28 /*プレーヤー#のパターンの幅*/
#define PLT_TYPE_V 0x10 /*プレーヤー#のパターンの高さ*/
void SetG2dName0400( CLASS_W* cls, Uchar flag )
{
sys_w;
SPD_W* spd;
Uchar tp;
/*表示OFFのとき*/
if ( flag == OFF ){
s->classw0[G_CLS_NAME01].kind = 0; /*選手名OFF*/
s->classw0[G_CLS_PLATE01].kind = 0; /*フレームOFF*/
return;
}
set2d(G_CLS_PLATE01, SPD_PLATE01, STP05P05|MODE16,0,0,13,0,10,1); /*ネームプレート2*/
/*プレーヤー#の表示の切り替え*/
spd = GetSpd( SPD_PLATE01 );
if ( cls->cpu ){ /*COMのとき*/
spd[0].u = 0;
spd[0].v = (1+cls->player_no)*PLT_TYPE_V;
0x985200#
w;
EM_ACT* tag = &em04_act[0];
/*文字は点滅を繰り返すのみ*/
if ( tag->tmp ){
if ( ++tag->timer > 10 ){
tag->tmp = 0;
tag->timer = 0;
/*表示OFF*/
s->classw0[G_CLSR_REPLAY].kind = 0;
}
}else{
if ( ++tag->timer > 10 ){
tag->tmp = 1;
tag->timer = 0;
/*表示ON*/
set2d( G_CLSR_REPLAY, SPD_REPLAY, MODE16, 0,0, 12, 0, 10, 1 );
}
}
}
/*==========================================================================
==リプレープレート初期化
== リプレーを再生する前に毎回呼んで欲しい
== 初期表示までは行う
==
== in: short mode 操作可能(REP_CTRL_ACT)か 操作不可能(REP_CTRL_NOP)
== short flag 一番最初の時だけは 0 を入れるそれ以外は 0 以外
==========================================================================*/
void InitG2dRepPlate04( short mode, short flag )
{
sys_w;
SPD_W* spd;
CLASS0_W* cls;
register int i;
RECT rect;
if ( !flag ){ /*一番最初のリプレー*/
rep_ctrl04.status = mode;
rep_ctrl04.timer = rep_ctrl04.mode = rep_ctrl04.silent = 0;
}else{ /*繰り返されるリプレー*/
rep_ctrl04.status &= REP_CTRL_SAV; /*セーブは状態が保存される*/
rep_ctrl04.status |= mode;
rep_ctrl04.timer = rep_ctrl04.mode = rep_ctrl04.silent = 0;
}
/*初期表示*/
/*リプレー用ボタン*/
set2d( G_CLSR_BUTTON, SPD_REP_BUTT, MODE16, 0,0, 13, 0, 10, 1 );
/*リプレー用メニュー1*/
set2d( G_CLSR_MENU1, SPD_REP_MENU1, MODE16, 0,0, 13, 0, 10, 1 );
spd = GetSpd( SPD_REP_MENU1 );
spd[1].palette = 0x01;
for ( i=2; i<5; i++ ){
s
0x988A00#
TRANS_STEP_S ++;
// }
break;
case 3: /* グラウンドデータ読み込み */
if(cd_file_load_NB(sp->stage_no*2+LOAD_GROUND_MODEL)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
case 4: /* アイテムデータ読み込み */
// if(cd_file_load_NB( LOAD_ITEM_04 )) {
// cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
// }
break;
case 5: /* モーションデータ読み込み */
if(cd_file_load_NB(sp->motion_no+LOAD_MOTION_DATA1)) {
cd_read_step = CD_READ_INIT;
TRANS_STEP_S ++;
}
break;
default:
TRANS_STEP_S = 0;
return 1;
}
return 0;
}
int G3dTrans04demo( int mode )
{
sp_w;
switch( TRANS_STEP_S )
{
case 0:
cd_read_step = CD_READ_INIT;
TRANS_STEP_S++;
break;
case 1:
if (mode != 2){
if (cd_file_load_NB(sp->chara[mode] + LOAD_MOTION_DATA2)){ /* 99.12.11 Hosogai */
cd_read_step = CD_READ_INIT;
TRANS_STEP_S++;
}
}else{
/* 金剛君専用モーションデータ読み込み (99.11.26 Hosogai) */
if (cd_file_load_NB(LOAD_B5_MOT_KON)){
cd_read_step = CD_READ_INIT;
// TRANS_STEP_S++;
TRANS_STEP_S = 0;
return (1);
}
}
break;
default:
demo_save04(mode); /* 99.12.11 Hosogai */
TRANS_STEP_S = 0;
return( 1 );
}
return( 0 );
}
/* 99.12.11 Hosogai */
static void demo_save04(int mode)
{
memcpy((char*)(0x80140000 + mode*0x10000), (char*)ANIME_TABLE2, 0x10000);
}
/* ---------------------------------------------------------
TIM_TABLE2以下に退避
0x998600#
--------------------------------------------- */
void ReplayInit( void )
{
memset( &replay_w04, 0, sizeof( REPLAY_W ) );
replay_w04.status = REPLAY_STATUS_SPEED_NORMAL;
replay_w04.sleep_time = -1;
/* Hosogai ↓ */
replay_w04.rep_data = (REPLAY_FRAME_DT*)((char*)MODEL_TABLE+0x008000); /* MODEL_TBLを半分拝借 */
// bzero((char*)replay_w04.rep_data,(int)sizeof(REPLAY_FRAME_DT)*REPLAY_FRAME_MAX);
bzero((char*)replay_w04.rep_data, 0x8000);
/* そして一応クリア */
}
0x9B0200#
#define USE_NO_STATION // 極道な非常駐方式を採用する場合
#if USE_SIZE == SIZE_NO_USE
#define DfntLoad( vx, vy )
#define DfntOpen( id, stp, sx, sy )
#define DfntClose()
#define DfntPrint( id, str, col )
#define DfntPrintP( id, str, col, x, y )
#define DfntFlush()
#else
#define DfntLoad Dfnt04Load
#define DfntOpen Dfnt04Open
#define DfntClose Dfnt04Close
#define DfntPrint Dfnt04Print
#define DfntPrintP Dfnt04PrintP
#define DfntFlush Dfnt04Flush
extern void DfntLoad( short vx, short vy );
extern int DfntOpen( int id, int stp, short sx, short sy );
extern int DfntClose( void );
extern int DfntPrint( int id, char *str, long col );
extern int DfntPrintP( int id, char *str, long col, short x, short y );
extern void DfntFlush( void );
#endif
#endif
0x9EDE00#
/* チョーてきとーな値 */
// b50mw.result[j] = time_record_tbl[4*sp->chara[i]+sp->cpu_level] + time_offset_tbl[4*sp->chara[i]+sp->cpu_level];
// b50mw.result[j] = time_record_tbl[4*sp->chara[i]+b50mw.cpu_level] + time_offset_tbl[4*sp->chara[i]+b50mw.cpu_level];
b50mw.result[j] = get_skip_time(sp->chara[i]);
g_MAEinit(0);
g_ResSet(j,0,b50mw.result[j]);
}
// NOWGAME = 4;
return 0;
}
static short get_skip_time(int no)
{
short ret;
ret = time_record_tbl[BM_SKILL(no)*4
0x9F4E00#
/* 木,手すり,外灯, */
s->classw1[1].DWorld.super = &b50m_hell;
setVector(&s->classw1[1].scale,2*ONE,2*ONE,2*ONE);
disp5d(&s->classw1[2],2,PUNCH_OUT_OT2); /* ビル */
s->classw1[2].DWorld.super = &b50m_hell;
setVector(&s->classw1[2].scale,2*ONE,2*ONE,2*ONE);
disp5d(&s->classw1[3],3,PUNCH_OUT_OT1); /* 森,手前の地面 */
s->classw1[3].DWorld.super = &b50m_hell;
setVector(&s->classw1[3].scale,2*ONE,2*ONE,2*ONE);
disp5d(&s->classw1[4],4,GROUND_OT); /* 奥の
0x9FB600#
get_key_input(int i);
キー情報取得
IN: i - Player No.
OUT: key - キー情報
--------------------------------------------------------- */
static Ushort get_key_input(int i)
{
// sys_w;
// sp_w;
b50m_cls;
Ushort key;
if (cls[i]->cpu == 0){
key = b50m_joyw[i].joytrg; /* 人様の入力 */
}else{
key = cpu_key_input(i,1); /* CPUの入力 */
}
ba_key_flush(i,key);
return (key);
}
/* ---------------------------------------------------------
static Ushort cpu_key_input
0xA00A00#
, mat_pz;
obj = &s->classw1[0];
if( ! obj->kind ){
return;
}
dp = (u_long *)GROUND_TABLE[0]; /* Modelが変わったらここも変更!!*/
dt = (u_long)dp + 0x0000399c;
vp = (SVECTOR *)dt;
if( ! sw ){
for( i=0; i<11; i++ ){
vp[ mat_point[no][i] ].vy = MAT_HIGH;
}
return;
}else{
long *t = &(cls[no]->obj3D_w[PARTS_BODY ].pCoordSect[ KOSHI ].workm.t[0]);
mat_px = (t[0] - obj->xposi) >> 1;
mat_pz = (t[2] - obj->zposi) >> 1;
if( abs( mat_px ) > STEP_LINE/2 && -945/2 < mat_pz && mat_pz < 945/2 ) {
short nh, nv, mv, av, ax;
mv = 0;
for( i=KARADA2; i<L_ASHI+1; i++ ){
ax = (short)cls[no]->obj3D_w[PARTS_BODY].pCoordSect[i].workm.t[0];
if (ax < STEP_LINE){
continue;
}
av = (short)cls[no]->obj3D_w[PARTS_BODY].pCoordSect[i].workm.t[1];
av = av + 50 + 400;
if( mv < av ){
mv = av;
}
limitRange( mv, 0, DV_LMT );
}
for( i=0; i<11; i++ ){
nh = (short) SquareRoot0( sqr( (long)( vp[ mat_point[no][i] ].vx - mat_px ) )
+ sqr( (long)( vp[ mat_point[no][i] ].vz - mat_pz ) ) );
nv = -DV * nh / DH + mv;
limitRange( nv, 0, DV_LMT );
vp[ mat_point[no][i] ].vy = MAT_HIGH + nv;
}
}else{
mat_act(OFF,no);
}
}
}
#undef DV_LMT
#undef DP_MAT
#undef DH
#undef DV
#undef MAT_HIGH
static void bg_tile_init()
{
POLY_G4 *p = &b50m_bg.obj;
SetPolyG4(p);
p->r0 = p->g0 = 0;
p->b0 = 0xff;
p->r1 = p->g1 = 0;
p->b1 = 0xff;
p->r2 = p->g2 = p->b2 = 0xf
0xA12A00#
{
s->classw1[i].rot.vx=sh->p[i].arrivalrotx;
s->classw1[i].rot.vy=sh->p[i].arrivalroty;
s->classw1[i].yposi=0;
}
#endif
}
}
#endif
if(sh->p[i].vanish !=4)
{
if(ballcnt<sh->p[i].starttime) /* ボールが当たっていない */
{
Sh_Panel_Coordinate(i,0,&vec,&s->classw1[i].rot);
SH_setClass1Vec(&s->classw1[i],(short)vec.vx,(short)vec.vy,(short)vec.vz);
}
else
{
if((ballcnt>=sh->p[i].starttime) && (ballcnt<sh->p[i].downtime))
{
Sh_Panel_Coordinate(i,((ballcnt)-sh->p[i].starttime),&vec,&rot);
SH_setClass1Vec(&s->classw1[i],(short)vec.vx,(short)vec.vy,(short)vec.vz);
s->classw1[i].rot=rot;
}
else if(ballcnt>=sh->p[i].downtime && sh->p[i].vanish)
{
Sh_Panel_Coordinate(i,sh->p[i].downtime-sh->p[i].starttime,&vec,&rot);
// SH_setClass1Vec(&s->classw1[i],(short)vec.vx,(short)vec.vy,(short)vec.vz);
SH_setClass1Vec(&s->classw1[i],(short)vec.vx,vec.vy,(short)vec.vz);
// s->classw1[i].rot=rot;
// s->classw1[i].rot.vx=1024;s->classw1[i].rot.vy=0;s->classw1[i].rot.vz=0;
}
if((ballcnt>=sh->p[i].downtime) && (ballcnt<sh->p[i].endtime))
{
Sh_Panel_Coordinate2(i,ballcnt-sh->p[i].downtime,&rot,&vec);
s->classw1[i].rot=rot;
s->classw1[i].yposi=vec.vy;
}
if(ballcnt>=sh->p[i].endtime && sh->p[i].vanish)
{
s->classw1[i].rot.vx=sh->p[i].arrivalrotx;
s->classw1[i].rot.vy=sh->p[i].arrivalroty;
s->classw1[i].yposi=0;
}
0xA1AA00#
eF(ON==表示/OFF==非表示)
==========================================================================*/
void SetG2dIntro05( CLASS_W* cls, Uchar flag )
{
sys_w;
register int i;
INTRO_NAME
SPD_W* spd;
Uchar tp;
/*表示OFFのとき*/
if ( flag == OFF ){
for ( i=0; i<6; i++ ){
s->classw0[G_CLS_IT_JOB+i].kind = 0;
}
return;
}
spd = GetSpd( SPD_JOB_00+PD_JOB(entrybox[cls->entry_no]) );
set2d( G_CLS_IT_JOB, SPD_JOB_00+PD_JOB(entrybox[cls->entry_no]), MODE16, 0,0, 10, 0, 10, 1 ); /*職業表示*/
if ( PD_JOB(entrybox[cls->entry_no]) == JB_STAFF )
set2d( G_CLS_IT_JOB2, SPD_JOB_06b, MODE16, 0,0, 11, 0, 10, 1 ); /*職業表示*/
if ( entrybox[cls->entry_no] < CR_ED1 ){
/*デフォルトの選手名のパターンを表示させる*/
/*テクスチャページのセット*/
switch( entrybox[cls->entry_no] ){
case CR_KNE: /*ケイン*/
case CR_HIG: /*うしおくん*/
case CR_KON: /*金剛くん*/
tp = 10;
break;
default:
tp = 11;
break;
}
spd = GetSpd( SPD_NAM_00+entrybox[cls->entry_no] );
set2d(G_CLS_IT_NAME,SPD_NAM_00+entrybox[cls->entry_no],MODE16,
name_pos_tbl[ entrybox[cls->entry_no] ]-spd->offset_x,IN_POS_Y-spd->offset_y,tp,0x69,10,1); /*選手名*/
}else{
/*名前の文字数を数える*/
for( tp=0,i=0; i<NAME_LENGTH; i++ ){
if ( s->edit_head[entrybox[cls->entry_no]-CR_ED1].name[i] != F_SPC )
tp++;
}
/*エディット選手の名前を表示させる*/
if ( tp ){
spd = GetSpd(SPD_IT_NAME);
set2d( G_CLS_IT_NAME, SPD_IT_NAME, MODE16, IN_M7_X,0, 10, 0x6
0xA31600#
-----------------------*/
/* 関数宣言 */
/*----------------------------------------------*/
#if SH_DEBUG
extern void Sh_Debug_View_Move(void);
#endif
void Sh_Debug_View_Move(void);
void Sh_Debug_View_Move(void);
int Sh_View_Set(int type,short vno0,short vno1,short time);
void Sh_View_Type0(void);
void Sh_View_Type1(void);
void Sh_Setview_Panel(int buffno,int panelno);
void Sh_Setview_Vector(int buffno,VECTOR *vec);
void Sh_Setview_View(int buffno,int sw);
0xA38600#
hort cx,short cy,u_char r,u_char g,u_char b,short mx,short my,short scalex,short scaley,long rotate);
void Sh_Draw_Box(RECT *rect,CVECTOR *col,GsOT *w_ot,short pri,u_long attribute);
void Sh_Draw_Line(short x0,short y0,short x1,short y1,CVECTOR *col,int otz,u_long attribute);
void Sh_Draw_Line_Box(_SH_XY4 *xy4,CVECTOR *col,int otz,u_long attribute);
void Sh_Tpage_Mode_Change(int flg,int otz);
void Sh_Draw_Batting_Zone(void);
void Sh_Draw_Cross_Gauge(void);
void Sh_Draw_Swing_Zanzou(void);
void Sh_Dr
0xA3CA00#
t,&col,&SepOT[0].ot[ACTIVE_SIDE],3,fattribute);
if(sh->fadetype != SH_FADE_NORMAL){SH_setCVector(&col,sh->fadecol,sh->fadecol,sh->fadecol);}
else
{
if(time>2){SH_setCVector(&col,255,0,255);}
else if(time==2){SH_setCVector(&col,255,255,255);}
else if(time<2){SH_setCVector(&col,0,255,255);}
}
/* 左側小 */
setRECT(&rect,(ofsx+time*SH_WRATIO)-5,ofsy+1,6-2,width-2);
Sh_Draw_Box(&rect,&col,&SepOT[0].ot[ACTIVE_SIDE],2,fattribute);
/* 右側小 */
setRECT(&rect,(ofsx-time*SH_WRATIO)+1,ofsy+1,6-2,width-2);
Sh_Draw_Box(&rect,&col,&SepOT[0].ot[ACTIVE_SIDE],2,fattribute);
/*
Sh_Gssprite_Init(&spr,0,sh_tossx-(52/2),SH_TOSSY-16,52,32,GetTPage(0,1,832,0),0,128+56,PALETU(0x8a),PALETV(0x8a),128,128,128, 0,0,ONE,ONE,0);
GsSortSprite(&spr,&SepOT[0].ot[ACTIVE_SIDE],1);
setRECT(&rect,(ofsx+time*SH_WRATIO)-6,ofsy,6,width);
// Sh_Draw_Box(&rect,&col,&SepOT[0].ot[ACTIVE_SIDE],8,(0<<30));
*/
}
/*----------------------------------------------*/
/* 宣言部分表示 */
/*----------------------------------------------*/
void Sh_Draw_Declaration(void)
{
sys_w;
sp_w;
int i;
int doffx,doffy; /* 宣言全体のオフセット 左上が基準 */
int col2;
static int colcnt; /* カラーカウント */
/* 宣言用パネル座標 */
/* 基準位置よりのオフセット */
short pxy[10][2]= {{43, 2}, /* 1 */
{30,15}, /* 2 */
{56,15}, /* 3 */
{17,28}, /* 4 */
{69,28}, /* 5 */
{ 4,41}, /* 6 */
{30,41}, /* 7 */
{56
0xA3FC00#
/*----------------------------------------------*/
/* ジャストヒットボール軌跡 */
/*----------------------------------------------*/
void Sh_Draw_Just_Locus(void)
{
sp_w;
//sys_w;
int i;
static int cnt=0;
if(!sh->b.bathitcnt){return;}
for(i=sh->b.bathitcnt;i<sh->b.bathitcnt+400;i+=1)
{
cnt=(sh->r.pbcnt+1-i)/2;
if(cnt<0 || cnt>10){return;}
Sh_Ball_Vector(&sp->vec,i); /* ボールのベクトル取得 */
// sp->vec.vz=0;
SH_setCVector(&col,128,128,128);
Sh_Draw_Ef_Bsmoke(cnt,sp->vec,col); /* エフェクト表示 */
}
}
/*----------------------------------------------*/
/*デバッグ用フレーム当たり判定表示 */
/*----------------------------------------------*/
void Sh_Debug_Draw_Frame_Decision(RECT *rect,int sw)
{
// sys_w;
sp_w;
SVECTOR x[4]; /* 座標値 */
PushMatrix();
SetSemiTrans(&f4,1);
if(sw==0){setRGB0(&f4,255,255,0);}
else if(sw==1){setRGB0(&f4,0,0,255);}
setVector(&rot, 0,0,0);
setVector(&vec, 0,0,SH_PANEL_VECZ);
0xA43C00#
p->ls); /* 視点マトリックス作用 */
SetTransMatrix(&sp->ls);
otz=RotAverage4(&x[0],&x[1],&x[2],&x[3],(long *)&ft4.x0,(long *)&ft4.x1,(long *)&ft4.x2,(long *)&ft4.x3,&dmy, &flg);
otz/=10;
if(otz>8) /* 簡易 far clip */
{
GsSortPoly(&ft4,&SepOT[0].ot[ACTIVE_SIDE],otz);
Sh_Tpage_Mode_Change(2,otz);
}
PopMatrix();
/* 計算終了 */
}
/*----------------------------------------------*/
/*ボールの影表示 */
/*----------------------------------------------*/
void Sh_Draw_Ball_Shadow(void)
{
sp_w;
sys_w;
SVECTOR x[4];/* 座標値 */
/* ボール表示チェック */
if(s->classw1[SH_OBJ_BALL].obj3D_w[0].be==OFF){return;}
/* 3次元座標値の設定 */
setVector(&x[0],-SH_BALL_SHADOW_SIZE/2,0,-SH_BALL_SHADOW_SIZE/2);
setVector(&x[1], SH_BALL_SHADOW_SIZE/2,0,-SH_BALL_SHADOW_SIZE/2);
setVector(&x[2],-SH_BALL_SHADOW_SIZE/2,0, SH_BALL_SHADOW_SIZE/2);
setVector(&x[3], SH_BALL_SHADOW_SIZE/2,0, SH_BALL_SHADOW_SIZE/2);
ft4.clut=GetClut(PALETU(0x94),PALETV(0x94))
0xA46200#
pex[0],&apex[1],&apex[2],&apex[3],(long *)&f4.x0,(long *)&f4.x1,(long *)&f4.x2,(long *)&f4.x3,&dmy, &flg);
otz=(otz/16)-1;
if(otz>0) /* 似非ニアクリップ */
{
SetShadeTex(&ft4,0);
SetSemiTrans(&ft4,0);
setRGB0(&ft4,96,96,96);
SetShadeTex(&f4,0);
SetSemiTrans(&f4,1);
setRGB0(&f4,Random(16),Random(16),Random(16));
GsSortPoly(&ft4,&SepOT[0].ot[ACTIVE_SIDE],otz+1);
/* ディスプレイをちらつかせる為の板 */
GsSortPoly(&f4,&SepOT[0].ot[ACTIVE_SIDE],otz);
Sh_Tpage_Mode_Change(2,otz);
}
PopMatrix();
}
void Sh_Camera_Rot(SVECTOR *rot2)
{
sp_w;
long dx,dy,dz;
//VECTOR rot;
dx = sp->rview.vpx - sp->rview.vrx; /* vr.vx - vp.vx */
dy = sp->rview.vpy - sp->rview.vry; /* vr.vy - vp.vy */
dz = sp->rview.vpz - sp->rview.vrz; /* vr.vz - vp.vz */
rot2->vx = ratan2( dy, dz);
rot2->vy = ratan2( dx, dz);
rot2->vz = ratan2( dx, dy);
#if 0
if(rot2->vy <= 2048 && rot2->vy >= -1024){rot2->vy = 1024-rot2->vy;}
else if(rot2->vy < -1024 && rot2->vy >= -2048){rot2->vy = -3072-rot2->vy;}
#endif
}
/*------------------------------------------------
テクスチャーデータの半透明ビットの変更
引数:半透明ビットを変えたいCLUT番号(u_char cnum)
半透明のオンオフ(u_char flg)(0:半透明オフ 1:半透明オン)
戻値:なし
------------------------------------------------*/
void Sh_Sub_Tclut(u_char cnum,u_char flg)
{
// sp_w;
sys_w;
register int i; /* 作業カウンター */
short *pt; /* 作業ポインタ */
short tclut[16]; /* 作業ワーク */
RECT rect; /*
0xA51600#
}, /* 金剛下 */
{-200,-1020, 60, 400}, /* 金剛右 */
{ 140,-1020, 60, 400}, /* 金剛左 */
};
/* パネル←→宣言番号 対応テーブル {x,y} */
/* 1 2 3 4 5 6 7 8 9 金剛 */
static u_char tpanelno[10][2]={{3,0},{2,1},{4,1},{1,2},{5,2},{0,3},{2,3},{4,3},{6,3},{3,2}};
static u_char decflg[4][7]; /* 宣言用フラグ */
/* モーションフレーム数記憶 */
int sh_motf[4]={35,30,45,40};
/*----------------------------
0xA58A00#
.bdcnt].hang=abs(sh->b.tra[sh->b.bdcnt].hang);}
sh->b.tra[sh->b.bdcnt].hang=sh->b.tra[sh->b.bdcnt-1].hang*2/3;
// if(sh->b.tra[sh->b.bdcnt].hang<128 && sh->b.tra[sh->b.bdcnt].v<5){sh->b.tra[sh->b.bdcnt].hang=128;}
if((sh->b.bdcnt%30)==0 && sh->b.tra[sh->b.bdcnt].v<5){sh->b.tra[sh->b.bdcnt].v=sh->b.tra[sh->b.bdcnt-1].v-SH_sign(sh->b.tra[sh->b.bdcnt-1].v);}else{sh->b.tra[sh->b.bdcnt].v=sh->b.tra[sh->b.bdcnt-1].v;}
}
else /* バウンドモード */
{
sh->b.tra[sh->b.bdcnt].hang=-sh->b.tra[sh->b.bdcnt-1].hang/2;
sh->b.tra[sh->b.bdcnt].v=sh->b.tra[sh->b.bdcnt-1].v*2/3;
}
sh->b.tra[sh->b.bdcnt].x=sh->c.bvec.vx;
sh->b.tra[sh->b.bdcnt].y=sh->c.bvec.vy;
sh->b.tra[sh->b.bdcnt].z=sh->c.bvec.vz;
}
/* 天井チェック */
if((sh->c.bvec.vy < -23000) && (sh->b.bdcnt<SH_TRANSITION_MAX))
{
sh->b.bdcnt+=1; /* バウンドカウント増加 */
sh->b.tra[sh->b.bdcnt].starttime=sh->b.time;
sh->b.tra[sh->b.bdcnt].wang=-sh->b.tra[sh->b.bdcnt-1].wang/2;
sh->b.tra[sh->b.bdcnt].hang=-512;
sh->b.tra[sh->b.bdcnt].v=sh->b.tra[sh->b.bdcnt-1].v/2;
sh->b.tra[sh->b.bdcnt].x=sh->c.bvec.vx;
sh->b.tra[sh->b.bdcnt].y=sh->c.bvec.vy;
sh->b.tra[sh->b.bdcnt].z=sh->c.bvec.vz;
}
/* 減衰 */
#if 0
if(abs(sh->b.tra[sh->b.bdcnt].v)>20 && sh->b.tra[sh->b.bdcnt].cnt>10 && sh->c.bvec.vz>SH_PANEL_VECZ)
{
sh->b.bdcnt+=1; /* バウンドカウント増加 */
sh->b.tra[sh->b.bdcnt].starttime=sh->b.time;
sh->b.tra[sh->b.bdcnt].wang=sh->b.tra[sh->b.bdcnt-1].wang;
sh->b.tra[sh->b.bdcnt].hang=sh->b.tra[s
0xA64C00#
sp_step0_up();
}
break;
case 2:
switch(sp->step2)
{
case 0:
SD_call(B_TOTYU);
sp->step2+=1;
break;
case 1:
if(MenuFadeIn(32) == 1)
{
if(Sh_Ranking_Disp(1))
{
sp->step2+=1;
}
}
break;
case 2:
if(MenuFadeOut(32,0) == 1)
{
sp->step2=0;
sp_step0_up();
}
break;
}
break;
case 3:
sh->playernum+=1; /* キャラクターナンバーインクリメント */
if(sh->playernum>=entry_num)
{
Sh_Sound_All_Stop();
sp_gstep_set(SH_CEREMONY);
return 0;
}
else
{
sp_step0_up();
}
break;
case 4:
if(OP_CP && (entrybox2[sh->playernum]&0xf0)) /* CPU見ない && CPU */
{
Sh_Init(1);
s->classw[0].entry_no = sh->playernum;
s->classw[0].player_no = entrybox2[sh->playernum]&0x0f;
s->classw[0].cpu = entrybox2[sh->playernum]&0xf0;
sp->chara[0] = entrybox[sh->playernum];
Sh_Simple_Cpu();
sp_step0_up();
}
else /* CPU見る or 人 */
{
Sh_Sound_All_Stop();
s
0xA69600#
ーマルモード*/
{
state1=50;
}
else if(sh->spoil) /* 枠外 */
{
state1=60+state2;
}
else if(sh->b.fhitcnt) /* フレーム */
{
state1=70+state2;
}
else /* 通常失敗 */
{
state1=80+state2;
}
}
switch(state1)
{
/**************/
/* 古館:成功 */
/**************/
case 0: /* 最初から3回連続 */
/* 本当はありえない */
Sh_Speak_Success_Moment();
break;
case 10: /* 2枚抜き */
Sh_Speak_Success_Moment();
jik=FS_F00+Random(3);
SD_call(Sh_Sp
0xA72A00#
OR col;
_SH_XY4 xy4;
POLY_FT4 ft4;
POLY_F4 f4;
u_char twflg; /* トス横角度フラグ */
u_char thflg; /* トス縦角度フラグ */
/* タイマー ※誤って混同しないよう多めに取る */
int compeltimer; /* 強制ステップアップ用タイマー */
int timer[1]; /* 汎用タイマー */
/* ミートカーソル */
short meetx,meety;
/* フラグ */
u_long dispflg; /* 表示フラグ ビット管理[32] */
short fadenum;
/* パワプロゲージ用 */
short pmarkx,pmarky; /* 目標のX,Y */
short downpanelnum;
short downpanel[25]; /* 抜いたパネルナンバー */
/* モーション用 */
short battingmotno;
short motstate[2]; /* モーション状態 */
char batting; /* バッティングをしたか? */
short dispballnum;
short restballnum;
char restpanel;
char clearpanel;
char pitchingnum;
char failurenum;
char gameover;
char parfect;
short pawaofsx,pawaofsy; /* パワプロゲージオフセット */
short emotno; /* モーションナンバー */
char justflg;
char reverse; /* 0:右打ち(左バッターボックス) 1:左打ち */
char fadetype; /* 2Dフェード管理用フラグ */
char fadestep; /* フェードステップ */
short fadecol; /* フェードカラー */
int decx,decy;
short sengenp[2]; /* 宣言パネル */
char sengenflg; /* 二枚抜きフラグ */
char sengenofs; /* 二枚抜き用オフセット */
char extentstep[2]; /* 枠広がりステップ 0:トス枠 1:バッター枠 */
char ann;
char gmode;
/* 0:スイング音 */
/* 1:パネルヒット音 */
/* 2:フレームヒット音 */
/* 3:バットヒット音 */
short se[10]; /* 効果音保存用 */
/* ポイント用 */
short point[3]; /* [0]:全ポイント [1]:昔のポ
0xA8CE00#
=================================================================*/
static int Em05_func00( void* arg )
{
sys_w;
EM_ACT* tag;
CLASS0_W* cls;
tag = (EM_ACT*)arg;
cls = &s->classw0[ tag->cls ]; /*編集対象のクラス*/
switch ( tag->step ){
case 0: /*下ごしらえ*/
/*拡大率等の設定*/
scale_work05 = 256;
cls->scalex = ONE*4;
cls->scaley = ONE*4;
cls->my = 0x40;
cls->kind = 1;
tag->tmp = tag->timer = 0;
tag->step++;
break;
case 1:
if ( decrease_siz
0xA9A400#
ep(CLASS_W *cls);
void head_upstep(CLASS_W *cls);
void leg_upstep(CLASS_W *cls);
void foot_upstep(CLASS_W *cls);
void hurdle_jump(CLASS_W *cls);
void receive_breast_motion(CLASS_W *cls);
void up_footstool_motion(CLASS_W *cls);
void step_down_motion(CLASS_W *cls);
void pass_motion(CLASS_W *cls);
void shoot_motion(CLASS_W *cls);
void shoot_success(CLASS_W *cls);
void shoot_miss(CLASS_W *cls);
void rif_miss(CLASS_W *cls);
void ( *rif_func[] )(CLASS_W *cls) = {
stand_motion, /*0x00 立ち・歩き */
head_plain, /*0x01 平地 頭 */
leg_plain, /*0x02 平地 腿 */
foot_plain, /*0x03 平地 足 */
head_slope, /*0x04 坂 頭 */
leg_slope, /*0x05 坂 腿 */
foot_slope, /*0x06 坂 足 */
head_downstep, /*0x07 下り階段 頭*/
leg_downstep, /*0x08 下り階段 腿*/
foot_downstep, /*0x09 下り階段 足*/
head_upstep, /*0x0a 上り階段 頭*/
leg_upstep, /*0x0b 上り階段 腿*/
foot_upstep, /*0x0c 上
0xA9DA00#
ールの影の初期化*/
#ifdef SKIP_ON
gm_skip_flg=OFF;
#endif
}
/*メインのキャラを取込む*/
void gm_set_cls(Uchar mode)
{
sys_w;
switch(mode){
case 0: /*初期化*/
default:
gm_work.main_cls = &s->classw[0];
gm_work.sub_cls = &s->classw[1];
gm_work.ball_cls1 = &s->classw1[0];
break;
case 1: /*メイン(競技側)とサブ(パスを受ける側)を切り替える*/
if(gm_work.main_cls == &s->classw[0]){
gm_work.main_cls = &s->classw[1];
gm_work.sub_cls = &s->classw[0];
}
else{
gm_work.main_cls = &s->classw[0];
gm_work.sub_cls = &s->classw[1];
}
break;
}
}
/*競技中*/
int GM_Play(void)
{
sys_w;
sp_w;
JOY_W *pad;
CLASS_W *cls = gm_work.main_cls;
CLASS1_W *cls1 = gm_work.ball_cls1;
pad = &sp->joyw[0];
/*ポーズ系のコマンド*/
if( sp->PAUSE_RES == 1 ) { /* ポーズの完了状態(やり直し) */
SD_call(SD_CTL_XAKILL2);
SD_call(SD_CTL_ALLOFF); /*鳴っているものをすべて止める*/
if( practice_reset() ){ /*ステップを切り替えた方が安全かも・・・*/
gm_sound_stop(); /*鳴っているものをすべて止める*/
sp->PAUSE_RES = 0;
}
return 0;
}
if((pad->joytrg & P_START) && FADE_RGB == 0){
g_PAinit( 0 ); /* 0: 1P 1: 2P */
PAUSE_FLAG = PAUSE_STEP; /* 中身は sp->pause_fg = 1 です */
s->classw[0].pclip=OFF;
gm_sound_stop(); /*鳴っているものをすべて止める*/
}
#ifdef TEST
/*test 任意のエリアから始める*/
if(pad->joytrg & P_SELECT){ /*座標初期化*/
GM_AllRes
0xAB2A00#
タ標修正に入る*/
if(check_ball_move(gm_work.main_cls, gm_work.ball_cls1)){
sp->step1++;
gmmotp->turn_flg = ON;
gm_clear_dxdz();
set_course_ot(0);
}
gm_move_chara(gm_work.main_cls); /*キャラの移動*/
if(gm_work.main_cls->zposi>GM_STEPDOWN-50){ /*台から落ちないようにする*/
gm_work.main_cls->zposi = GM_STEPDOWN-50;
}
break;
case 5: /*座標の修正*/
check_ball_move(gm_work.main_cls, gm_work.ball_cls1); /*ボールの移動と拾い判定*/
if( gm_regulate(gm_work.main_cls, gm_work.ball_cls1, 1200, -5200) ){
sp->step1++;
gmmotp->turn_flg = OFF;
}
break;
case 6: /*一度受けてから回転*/
if(check_ball_move(gm_work.main_cls, gm_work.ball_cls1)){
sp->step1++;
}
// gm_move_chara(gm_work.main_cls); /*キャラの移動*/
break;
case 7: /*ターンする(パス向き)*/
check_ball_move(gm_work.main_cls, gm_work.ball_cls1); /*ボールの移動と拾い判定*/
if( gm_turn(gm_work.main_cls, gm_work.ball_cls1, 1024) ){
gm_ball.link = ON;
sp->step1++;
};
break;
case 8: /*パスゲージを出す*/
if(check_ball_move(gm_work.main_cls, gm_work.ball_cls1)){ /*ボールの移動と拾い判定*/
gm_high.f_foot.r=128; /*test ゲージの色変え*/
gm_high.f_foot.g=128;
gm_high.f_foot.b=32;
/*test */
rif_range[0][0] = -800; rif_range[0][1] = -760; rif_range[0][2] = -720; /*頭*/
rif_range[1][0] = -440; rif_range[1][1] = -390; rif_range[1][2] = -310; /*腿*/
rif_range[2][0] =
0xAB5200#
0;
cls1->xposi = (len * rsin(cls->rot.vy - 2048)>>12) + cls->xposi;
cls1->zposi = (len * rcos(cls->rot.vy - 2048)>>12) + cls->zposi;
}
/******************************/
/*ハードル用のボールのチェック*/
/******************************/
Uchar check_J_ball_posi(CLASS_W *cls, CLASS1_W *cls1)
{
sp_w;
short sdNum = 0;
JOY_W *pad;
short body_kyori;
short hit_kyori;
Uchar key = OFF; /*蹴りかえしのボタン入力 off=0*/
pad = &sp->joyw[0];
body_kyori = gm_get_xzlen(cls, cls1, 0);
hit_kyori = gm_get_xzlen(cls, cls1, 1);
if(pad->joytrg & P_RUP){
gm_ball.high = 0; /*3m頭まで*/
key = 2;
}
else if(pad->joytrg & P_RRIGHT){
gm_ball.high = 1; /*90cm上まで*/
key = ON;
}
else if(pad->joytrg & P_RDOWN){
gm_ball.high = 2; /*50cm上まで*/
key = ON;
}
if(gm_ball.bound != 1){ /*ボールは落ちていない*/
if( (key) && (gm_ball.dy == GM_BALL_DOWN)&&
(body_kyori <= 250) && (hit_kyori<= 120) )
{
if( cls1->yposi>cls->yposi+rif_range[0][0] && cls1->yposi<cls->yposi+rif_range[0][2] )
{
/*リフティング音*/
selectLiftingSound(GMM_HEAD_PLAIN, &sdNum);
gmmotp->mot_act = 1;
gmmotp->mot_no = GMM_HEAD_PLAIN;
ball_posi_init(cls, cls1, gm_ball.high); /*ボールの移動初期化*/
}
else if( cls1->yposi>cls->yposi+rif_range[1][0] && cls1->yposi<cls->yposi+rif_range[1][2] )
{
gmmotp->mot_act = 1;
if( (key==2)&&( cls1->yposi>=cls->yposi+rif_range[1][1] && cls1->yposi<cls->yposi+rif_ra
0xAB8600#
M_HEAD_PLAIN, &sdNum);
SD_call(sdNum);
gmmotp->mot_act = 1;
gmmotp->mot_no = GMM_HEAD_USTEP;
gmmotp->turn_flg = OFF;
ball_posi_init(cls, cls1, gm_ball.high); /*ボールの移動初期化*/
return 1;
}
else if( (cls1->yposi>cls->yposi+rif_range[1][0] && cls1->yposi<cls->yposi+rif_range[1][1]) )
{
/*リフティング音*/
selectLiftingSound(GMM_LEG_PLAIN, &sdNum);
SD_call(sdNum);
gmmotp->mot_act = 1;
gmmotp->mot_no = GMM_LEG_PLAIN;
ball_posi
0xABAC00#
㏍唐iめる*/
if(gm_turn(gm_work.main_cls, gm_work.ball_cls1, 2048))
{
sp->step1 = 0;
}
break;
case 11: /* カメラ後ろ横へ */
GsSortBoxFill(&shoot_pow[0], &SepOT[0].ot[sp->active_side], 15);
SetG2dSt06AutoLifting(OFF); /*AUTO表示*/
auto_rif_ball_move(gm_work.main_cls, gm_work.ball_cls1, 0);
gm_ball_keep(gm_work.main_cls, gm_work.ball_cls1);
GM_Pose_Change(gm_work.main_cls); /*モーションを進める*/
GM_Pose_Change(gm_work.sub_cls); /*モーションを進める*/
/* 参照点変更 */
sp->rview.vrx = -15*gm_work.main_cls->work2 * rsin(gm_work.main_cls->rot.vy) >> 12;
sp->rview.vrz = -15*gm_work.main_cls->work2 * rcos(gm_work.main_cls->rot.vy) >> 12;
sp->rview.vrx += gm_work.main_cls->xposi;
sp->rview.vrz += gm_work.main_cls->zposi;
gm_work.main_cls->work0 += 17;
gm_work.main_cls->work1 -= 10;
gm_work.main_cls->work2++;
if (30 < gm_work.main_cls->work2)
{
sp->step1 = 3;
}
break;
case
0xABFE00#
k;
case 11: /*player test*/
sp->step0 = GMS_CHARA;
sp->step1 = 0;
break;
}
}
static GsBOXF shoot_pow[2];
void init_shoot_pow(void)
{
gm_set_GsBOXF(&shoot_pow[0], &highgauge_tbl[0]); /*枠*/
gm_set_GsBOXF(&shoot_pow[1], &highgauge_tbl[11]); /*ゲージ*/
}
/*仮 シュートのパワーゲージ*/
void disp_shoot_pow(short pow)
{
sp_w;
if(sp->step0 == GMS_SHOOT && 8 <= sp->step1){
return;
}
if(sp->step0 == GMS_SHOOT && sp->step1>3){
if(pow>30) pow = 60-pow;
0xAC2860#
tu\b\AS_B10A.vag
hatu\d\AM_D00B.vag
..\mr00\hatu\b\AS_B06B.vag
..\mr00\hatu\b\AS_B11B.vag
hatu\f\AM_F00A.vag
hatu\f\AM_F01A.vag
hatu\f\AM_F00B.vag
hatu\f\AM_F01B.vag
hatu\e\AM_E00.vag
hatu\e\AM_E01.vag
hatu\e\AM_E02.vag
hatu\e\AM_E03.vag
hatu\e\AM_E04.vag
hatu\e\AM_E05.vag
hatu\e\AM_E05B.vag
hatu\e\AM_E06.vag
hatu\e\AM_E06B.vag
hatu\e\AM_E08.vag
hatu\g\AM_G00.vag
hatu\g\AM_G00H.vag
hatu\g\AM_Gt = -143;
else if( (z>=2650 && z<2800)&&(re_x<=1870 && re_x>=1450) ) ret = -214;
else if( (z>=2800 && z<2950)&&(re_x<=1870 && re_x>=1450) ) ret = -285;
else if( (z>=2950 && z<3100)&&(re_x<=1870 && re_x>=1450) ) ret = -356;
else if( (z>=3100 && z<3250)&&(re_x<=1870 && re_x>=1450) ) ret = -428;
else if( (z>=3250 && z<3400)&&(re_x<=1870 && re_x>=1450) ) ret = -499;
else if( (z>=3400 && z<GM_END_USTEP)&&(re_x<=1870 && re_x>=1450) ) ret = -570;
else if( (z>=GM_END_USTEP && z<GM_START_DSTEP2)&&(re_x<=1870 && re_x>=1450) ) ret = -570;
else if( (z>=GM_START_DSTEP2 && z<5270)&&(re_x<=1870 && re_x>=1450) ) ret = -464;
else if( (z>=5270 && z<GM_END_DSTEP2)&&(re_x<=1870 && re_x>=1450) ) ret = -357;
else if( (z>=GM_END_DSTEP2 && z<5830)&&(re_x<=1870 && re_x>=930) ) ret = -250;
else if( (z>=5830 && z<7090)&&(re_x<=1070 && re_x>=930) ) ret = -250;
else if( (z>=7090 && z<7490)&&(re_x<=1150 && re_x>=850) ) ret = -250;
else ret = 240;
return ret;
}
#else
/*ボールの跳ね返る基準の高さを求める ちょっとやばい*/
static short ball_rebound(short x, short z)
{
short ret = 240; /*1m=400で 60cm*/
short re_x = abs(x);
if(z>=-10200 && z<=-9400){
if( check_ball_x(re_x, 800, 1600) ) ret = 0;
}
else if(z>=-9400 && z<=-8600){
if( check_ball_x(re_x, 1000, 1400) ) ret = 0;
}
else if(z>=-8600 && z<=-8200){
if( check_ball_x(re_x, 600, 1400) ) ret = 0;
}
else if(z>=-8600 && z<=-7800){
if( check_ball_x(re_x, 200, 600) ) ret = 0;
}
else if(z>=-7800 && z<=-7400){
if( check_ba
0xAC5200#
return 0;
}
/********************/
/*カメラを入れる */
/********************/
void set_camera(GM_CAMERA *came)
{
sp_w;
// if(&gm_camera != came){
sp->rview.vrx = came->vrx;
sp->rview.vry = came->vry;
sp->rview.vrz = came->vrz;
gm_camera.rot_y = came->rot_y;
gm_camera.rot_xz = came->rot_xz;
gm_camera.length = came->length;
// }
sp->rview.vpy = (gm_camera.length * rsin(gm_camera.rot_y)>>12) + sp->rview.vry;
sp->rview.vpx = ((gm_camera.length * rcos(gm_camera.rot_y)>>12)* rcos(gm_camera.rot_xz)>>12) + sp->rview.vrx;
sp->rview.vpz = ((gm_camera.length * rcos(gm_camera.rot_y)>>12)* rsin(gm_camera.rot_xz)>>12) + sp->rview.vrz;
}
/********************/
/*移動カメラ */
/********************/
static void opening_camera (GM_CAMERA *came0, GM_CAMERA *came1, short frame)
{
sp_w;
camera_idou(came0->vrx, came1->vrx, &sp->rview.vrx, frame);
camera_idou(came0->vry, came1->vry, &sp->rview.vry, frame);
camera_idou(came0->vrz, came1->vrz, &sp->rview.vrz, frame);
camera_idou(came0->rot_y, came1->rot_y, &gm_camera.rot_y, frame);
camera_idou(came0->rot_xz, came1->rot_xz, &gm_camera.rot_xz, frame);
camera_idou(came0->length, came1->length, &gm_camera.length, frame);
if(sp->rview.vrz == -65536){
sp->rview.vrz = 0;
}
/*注視点決定*/
sp->rview.vpy = (gm_camera.length * rsin(gm_camera.rot_y)>>12) + sp->rview.vry;
sp->rview.vpx = ((gm_camera.length * rcos(gm_camera.rot_y)>>12)* rcos(gm_camera.rot_xz)>>12) + sp->rview.vrx;
sp->rview.vpz = ((gm_came
0xAD2400#
:
tp = 10;
break;
default:
tp = 11;
break;
}
set2d(G_CLS_NAME01,SPD_NAM_00+entrybox[cls->entry_no],MODE16,0xff58,0x0052,tp,0,10,1); /*選手名*/
}else{
set2d(G_CLS_NAME01,SPD_NAME01,MODE16,0,0,10,0,10,1); /*選手名*/
disp2dName( G_CLS_NAME01, 0, s->edit_head[entrybox[cls->entry_no]-CR_ED1].name ); /*名前を変える*/
}
}
#undef PLT_TYPE_V
#undef PLT_TYPE_U
/*##########################################################################
##ポイントの値設定
## in: Ushort point 獲得したポイント
##########################################################################*/
static Ushort get_point;
static Ushort old_point;
Ushort GmkNewPoint;
void SetG2dPointVal06( Ushort point )
{
if (point == 0xffff)
{
/* 獲得したポイントが 0点って事は無いから初期化する */
get_point = old_point = 0;
}
else
{
get_point = point;
old_point = GmkNewPoint;
}
GmkNewPoint = get_point + old_point;
}
/*###################################################
0xAD7E00#
x18,0xb0,0xb8,0xffe4,0x0010,0x4f},
{DAT,0x28,0x18,0xb0,0xb8,0x0008,0x0010,0x4f},
{DAT,0x10,0x18,0xa8,0xd0,0x0030,0x0010,0x4f},
{END,0x10,0x18,0xa8,0xd0,0x0040,0x0010,0x4f},
};
static SPD_W kiroku_1_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x20,0x10,0x40,0xc0,0xff87,0x000c,0x4d},
{DAT,0x20,0x10,0x60,0xc0,0xffa2,0x000c,0x4d},
{DAT,0x20,0x10,0x00,0xc0,0xffbc,0x000c,0x4d},
{DAT,0x20,0x10,0x20,0xd0,0xffda,0x000c,0x4d},
{DAT,0x20,0x10,0x00,0xc0,0xfff6,0x000c,0x4d},
0xAF2600#
p->rview.vrz;
sp->rview.vpy += sp->rview.vry;
sp->step1++;
break;
case 8:
if( MenuFadeIn(32) == 1)
{
sp->step1++;
}
break;
case 9:
objectReStore(indexNum[replayNum++]);
if (CheckTrg(0, P_RRIGHT))
{
SD_call(SD_CTL_XAKILL2);
sp->step0 = GMS_REPOP;
sp->step1 = 5;
break;
}
if (230 < replayNum)
{
// SD_call(SD_CTL_FADEOUTX);
replayNum = 0;
sp->step1 = 6;
}
break;
}
G2Dstate = G2dReplayCtrl06(); /* リプレイ2D
0xAF6840#
x001a2800/0x800+VOFS15, (0x000076e0+0x7ff)/0x800, FLG1 }, //FURU\FS_D24.VAG
{ 0x001aa000/0x800+VOFS15, (0x00007fd0+0x7ff)/0x800, FLG1 }, //FURU\FS_D25.VAG
{ 0x001b2000/0x800+VOFS15, (0x00008960+0x7ff)/0x800, FLG1 }, //FURU\FS_D26.VAG
{ 0x001bb000/0x800+VOFS15, (0x000063d0+0x7ff)/0x800, FLG1 }, //FURU\FS_D27.VAG
{ 0x001c1800/0x800+VOFS15, (0x00005790+0x7ff)/0x800, FLG1 }, //FURU\FS_D28.VAG
{ 0x001c7000/0x800+VOFS15, (0x00005080+0x SD_call(B_FIN_1);
}
}
else
{
/*BGM*/
SD_call(B_FIN_1);
GM_Pose_Set(&s->classw[0], DEMO_MOTION_OFFSET+3, 0, 0);
// GM_Pose_Set(&s->classw[0], DEMO_MOTION_OFFSET+1, 0, 0);
set_demo_hand(0, 3); /* 手のパーツ変更 */
tmp->work0 = gmmotp->passAreaNum;
s->classw[0].zposi = GM_PASSAREA_1-1000;
s->classw[0].rot.vy = 2048;
}
cameraRotY = 3072;
sp->step1++;
break;
case 3:
sp->rview.vrx = s->classw[0].xposi;
sp->rview.vry = -50;
sp->rview.vrz = s->classw[0].zposi;
sp->rview.vpx = REP_VIEW_DIST_FIN * rsin(cameraRotY) >> 12;
sp->rview.vpz = REP_VIEW_DIST_FIN * rcos(cameraRotY) >> 12;
sp->rview.vpy = REP_VIEW_VR_Y_FIN;
sp->rview.vpx += sp->rview.vrx;
sp->rview.vpz += sp->rview.vrz;
// sp->rview.vpy += sp->rview.vry;
sp->step1++;
break;
case 4:
if (MenuFadeIn(32) == 1)
{
/* 記録コール */
if (sp->chara[0] < CR_ED1) /* エディット以外 */
{
ReplayNameCall(sp->chara[0]); /*選手名*/
}
if ((gmmotp->passAreaNum == 9) && (gm_work.ball_cls1->work2 == 1))
{
SD_call(call[Random(6)]);
jumpStep = 6;
}
else
{
if (0 < tmp->work0)
{
/*記録コール*/
SD_call(FGM_R01+tmp->work0-1);
}
/*コメント*/
if (4 < tmp->work0)
{
/*良かった*/
SD_call(FGM_Q08+Random(3));
}
else
{
switch (Random(2))
{
case 0:
/*ダメダメ*/
SD_call(FGM_Q01);
break;
case 1
0xAFC4B0#
君を取っていった、これで少し楽になったか」
..\CMN\FURU\FK3_A00.VAG #「虫食い状態で残ってしまった、これは非常に狙いにくい」
..\CMN\FURU\FK3_A01.VAG #「*番!」「見事に落としました!」
..\CMN\FURU\FK3_A02.VAG #「-番!」「決めてきました!」
..\CMN\FURU\FK3_A03.VAG #「*番!」「見事成功です!」
..\CMN\FURU\FK3_A04.Vssw0[ em06_act[1].cls ].xposi -= 80;
if ( s->classw0[ em06_act[1].cls ].xposi < -300 ){
/*表示OFF*/
s->classw0[ em06_act[1].cls ].kind = 0;
em06_act[1].tmp++;
TRANS_STEP++;
}
}
if ( TRANS_STEP == 3 ){
/*表示OFF*/
s->classw0[ em06_act[0].cls ].kind = 0;
TRANS_STEP = 0;
return 1;
}
return 0;
}
/*##########################################################################
##共用関数
###################################################################
0xB13200#
om(2));
}
else
{
/*失敗*/
if ((randNum = Random(11)) < 4)
{
ReplayNameCall(sp->chara[0]); /*選手名*/
SD_call(FGM_P04+randNum);
}
else
{
SD_call(furuNG[randNum-4]);
}
/*BGM*/
SD_call(B_REP4_1+Random(2));
}
}
else
{
AnaDispSwitch(&s->classw[4], ON);
/*進藤さん*/
if (sp->chara[0] < CR_ED1) /* エディット以外 */
{
SD_call(SN_00F+sp->chara[0]); /*選手名*/
}
if ((gmmotp->passAreaNum == 9) && (gm_work.ball_cls1->work2 == 1))
{
/*パーフェクト達成*/
SD_call(SG_006+Random(5));
/*BGM*/
SD_call(B_REP3_1+Random(2));
}
else
if ((gmmotp->passAreaNum == 9) && (gm_work.ball_cls1->work2 == 2))
{
/*ゴール前でこけた*/
SD_call(SG_010+Random(8));
/*BGM*/
SD_call(B_REP4_1+Random(2));
}
else
{
/*失敗*/
randNum = Random(5);
if ((gmmotp->passAreaNum == 0) && (3 <= randNum))
{
/*パスも通らない*/
randNum += 2;
}
SD_call(sinNG[randNum]);
/*BGM*/
SD_call(B_REP4_1+Random(2));
}
}
sp->step1++;
break;
case 3:
if( MenuFadeIn(32) == 1)
{
sp->step1++;
}
break;
case 4:
#ifdef TEST
/*test 任意のエリアから始める*/
if(sp->joyw[1].joytrg & P_LUP) a_test = (a_test+1<=11)? a_test+1: 0;
if(sp->joyw[1].joytrg & P_LDOWN) a_test = (a_test-1>=0)? a_test-1:11;
FntPrint("test_area %d\n", a_test);
#endif
if(GmkRepKeyIn() == 1)
{
SD_call(SD_CTL
0xB1AA00#
}else
{
ret = 2;
}
}else
{
/* 再生フラグ */
play_flg = ( ( ddp_env.flg >> 1 ) & 0x03 );
if( sp->joyw[ddp_replay.honor].joytrg & PADstart || sp->joyw[ddp_replay.honor].joytrg & PADRup )
{
/* 等速 */
play_flg = ( play_flg == 1 ) ? ( 0 ) : ( 1 );
}else
{
if( sp->joyw[ddp_replay.honor].joytrg & PADRleft )
{
/* 1/2速 */
play_flg = ( play_flg == 2 ) ? ( 0 ) : ( 2 );
}
}
if( play_flg == 1 )
{
cnt = 1;
}else
{
if( play_flg == 2 )
{
cnt = sp->active_side;
}
}
/* 前後フラグ */
if( !( ( sp->joyw[ddp_replay.honor].joy_w & PADR1 ) && ( sp->joyw[ddp_replay.honor].joy_w & PADL1 ) ) )
{
if( ( sp->joyw[ddp_replay.honor].joy_w & PADR1 ) && ( ( ( ddp_env.flg >> 3 ) & 0x02 ) == 0 ) )
{
fr_flg = 1;
cnt = ( play_flg == 1 ) ? ( 2 ) : ( 1 );
}else
{
if( ( sp->joyw[ddp_replay.honor].joy_w & PADL1 ) && ( ( ( ddp_env.flg >> 3 ) & 0x01 ) == 0 ) )
{
fr_flg = 2;
cnt = ( play_flg == 1 ) ? ( 2 ) : ( 1 );
}
}
}
if( ( fr_flg & 0x01 ) != ( ( ddp_env.flg >> 3 ) & 0x01 ) )
{
SetG2dFew07();
}
if( ( fr_flg & 0x02 ) != ( ( ddp_env.flg >> 3 ) & 0x02 ) )
{
SetG2dRew07();
}
if( fr_flg == 2 )
{
for( i = 0; i < cnt; i++ )
{
if( ddp_env.cnt > 0 )
{
ddp_env.cnt--;
ddp_replay.cnt += ( ddp_replay.limit - 1 );
ddp_replay.cnt %= ddp_replay.limit;
}el
0xB1E600#
beholder.dpz = DDP_CAMERA;
r = 0;
l = 0;
beh_i = 0;
beh_n = 0;
}
beholder.dpx %= 4096;
beholder.dpy %= 4096;
beholder.view.vpx += l * rsin( r + beholder.dpy ) / 4096;
beholder.view.vpz += l * rcos( r + beholder.dpy ) / 4096;
beholder.view.vrx = beholder.view.vpx + beholder.dpz * rsin( beholder.dpy ) / 4096 * rcos( beholder.dpx ) / 4096;
beholder.view.vry = beholder.view.vpy + beholder.dpz * rsin( beholder.dpx ) / 4096;
be
0xB34200#
_man[0].anim, dead_man[0].pose );
ddp_pose_set( 1, dead_man[1].anim, dead_man[1].pose );
s->classw[0].merge_timer = 0;
s->classw[1].merge_timer = 0;
ddp_head_angle();
class_gs3d( &s->classw[0] );
class_gs3d( &s->classw[1] );
himo.draw( 0 );
put_himo( ddp_env.cnt );
ddp_effect( 0 );
ddp_replay.ebuf[ddp_env.cnt] = ddp_snow_store();
/* リプレープレート制御 */
G2dReplayCtrl07();
/* スキップ? */
if( tmp == 1 )
{
/* セーブ? */
if( ( ddp_env.flg & 0x01 ) != 0 )
{
SD_call( SD_CTL_XAKILL2 );
ddp_env.pau = ddp_env.cnt;
/* セーブへ直行 */
ddp_next( DDP_XIV, 0 );
}else
{
SD_call( SD_CTL_XAKILL2 );
ddp_sd_fade();
/* リプレイ抜ける */
ddp_env.flg |= ( 1 << 7 );
ddp_env.pau = ddp_env.cnt;
sp->gstepw = 5;
}
}else
{
/* 通常の終了 */
if( tmp == 2 )
{
sp->gstepw++;
}
}
break;
case 4:
s->classw[0].merge_timer = 0;
s->classw[1].merge_timer = 0;
ddp_head_angle();
class_gs3d( &s->classw[0] );
class_gs3d( &s->classw[1] );
himo.draw( 0 );
ddp_effect( 0 );
/* リプレープレート制御 */
G2dReplayCtrl07();
if( ddp_snd_wait() != 0 )
{
ddp_env.pau = ddp_env.cnt;
sp->gstepw++;
}
break;
case 5:
/* リプレープレート制御 */
G2dReplayCtrl07();
ddp_head_angle();
class_gs3d( &s->classw[0] );
class_gs3d( &s->classw[1] );
Himor( ddp_env.
0xB44C00#
>light[2].r = 0x00;
sp->light[2].g = 0x00;
sp->light[2].b = 0x00;
sp->amb_r = 0xf00;
sp->amb_g = 0xf00;
sp->amb_b = 0xf00;
sp->fog.dqa = -3278;
sp->fog.dqb = 1.25 * 4096 * 4096;
sp->fog.rfc = 0x00;
sp->fog.gfc = 0x00;
sp->fog.bfc = 0x00;
GsSetFlatLight( 0, &sp->light[0] );
GsSetFlatLight( 1, &sp->light[1] );
GsSetFlatLight( 2, &sp->light[2] );
GsSetAmbient( sp->amb_r, sp->amb_g, sp->amb_b );
GsSetFogParam( &sp->fog );
}
short ddp_skill[] = {
/* 0 */ 0 + DDP_ARM_INC,
/* 1 */ 1 + DDP_ARM_INC,
/* 2 */ 1 + DDP_ARM_INC,
/* 3 */ 2 + DDP_ARM_INC,
/* 4 */ 2 + DDP_ARM_INC,
/* 5 */ 2 + DDP_ARM_INC,
/* 6 */ 2 + DDP_ARM_INC,
/* 7 */ 3 + DDP_ARM_INC,
/* 8 */ 3 + DDP_ARM_INC,
/* 9 */ 4 + DDP_ARM_INC,
};
/* プレイヤー初期化 */
void dead_man_init( void )
{
sp_w;
sys_w;
int i, j;
for( i = 0; i < 2; i++ )
{
/* あんた、人間じゃねェよ */
dead_man[i].man = ( ( s->classw[i].cpu & 0xf0 ) == 0 ) ? ( 0 ) : ( 1 ) ;
/* 重心・状態・モーション */
dea
0xB4CE00#
_FALLDOWN4 )
{
if( dead_line[s->classw[ddp_replay.winner].anime_no - DDP_A_FALLDOWN0] - s->classw[ddp_replay.winner].pose < DEAD_JUDGE )
{
ddp_replay.judge = 1;
}
}
/* com vs com ? */
if( dead_man[0].man != 0 && dead_man[1].man != 0 )
{
ddp_replay.honor = 0;
ddp_replay.player = ddp_replay.winner;
}else
{
/* 一人用? */
if( ddp_tour.player == 0 )
{
ddp_replay.honor = 0;
ddp_replay.player = ( dead_man[0].man == 0 ) ? ( 0 ) : ( 1 );
}else
{
ddp_rep
0xB58A00#
---------------------------------------------------------------------*/
void ddp_man( unsigned char id );
void ddp_cpu_speed( unsigned char id );
void ddp_cpu_stamina( unsigned char id );
void ddp_cpu_strength( unsigned char id );
void ddp_cpu( unsigned char id );
/*--------------------------------------------------------------------------*/
/* PUBLIC VALUE */
/*--------------------------------------------------------------------------*/
void ( *ddp_brain[] )( unsigned char ) = {
// ddp_man,
ddp_man,
ddp_cpu,
ddp_cpu_speed,
ddp_cpu_stamina,
ddp_cpu_strength,
};
/*--------------------------------------------------------------------------*/
/* PRIVATE FUNCTION */
/*--------------------------------------------------------------------------*/
unsigned short ddp_renda( unsigned char id, int level );
/*--------------------------------------------------------------------------*/
/* PRIVATE VALUE */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/* FUNCTION */
/*--------------------------------------------------------------------------*/
void ddp_man( unsigned char id )
{
sp_w;
dead_man[id].ko = dead_man[id].k;
dead_man[id].k =
0xB62600#
CR_HIG: /*うしおくん*/
case CR_KON: /*金剛くん*/
tp = 10;
break;
default:
tp = 11;
break;
}
spd = GetSpd( SPD_NAM_00+entrybox[cls->entry_no] );
set2d(G_CLS_IT_NAME,SPD_NAM_00+entrybox[cls->entry_no],MODE16,
name_pos_tbl[ entrybox[cls->entry_no] ]-spd->offset_x,IN_POS_Y-spd->offset_y,tp,0x69,10,1); /*選手名*/
}else{
/*名前の文字数を数える*/
for( tp=0,i=0; i<NAME_LENGTH; i++ ){
if ( s->edit_head[entrybox[cls->entry_no]-CR_ED1].name[i] != F_SPC )
tp++
0xB68C00#
sp_w;
switch( TRANS_STEP_S )
{
case 0:
cd_read_step = CD_READ_INIT;
if( sp->chara[mode] < 0x0e )
{
demo_box[mode] = sp->chara[mode];
}else
{
demo_box[mode] = dice( 10 );
}
TRANS_STEP_S++;
break;
case 1:
if( cd_file_load_NB( demo_box[mode] + LOAD_MOTION_DATA2 ) )
{
cd_read_step = CD_READ_INIT;
TRANS_STEP_S++;
}
break;
case 2:
memcpy( ( char * )( 0x80140000 + mode * 0x10000 ), ( char * )ANIME_TABLE2, 0x10000 );
TRANS_STEP_S++;
break;
default:
TRANS_STEP_S = 0;
return( 1 );
}
return( 0 );
}
void demo_copy07( unsigned char id )
{
memcpy( ( char * )ANIME_TABLE2, ( char * )( 0x80140000 + id * 0x10000 ), 0x10000 );
}
0xB73600#
.parry[0] == 0 )
{
himo.parry[0] = ( himo.h[parry[0]].vec.vx > 360 ) ? ( 1 ) : ( -1 );
}
if( himo.parry[1] == 0 )
{
himo.parry[1] = ( himo.h[parry[1]].vec.vx > 360 ) ? ( 1 ) : ( -1 );
}
if( parry[0] != 0 )
{
himo.h[parry[0]].vec.vx += ( tooth[0] * himo.parry[0] );
for( i = 1; i < parry[0]; i++ )
{
himo.h[i].vec.vx += tooth[0] * himo.parry[0] * rsin( 1024 * i / parry[0] ) / 4096;
}
for( i = parry[0] + 1; i < parry[1]; i++ )
{
himo.h[i].vec.vx += tooth[0] *
0xB80E00#
{DAT,0x18,0x10,0x08,0xe0,0x005e,0xffde,0x03},
{DAT,0x10,0x10,0x00,0xd8,0x0056,0xffd5,0x03},
{DAT,0x10,0x10,0x00,0xd8,0x0056,0x0019,0x03},
{DAT,0x18,0x10,0x08,0xe0,0x005e,0x0022,0x03},
{DAT,0x18,0x10,0x00,0xf0,0x0056,0x0031,0x03},
{DAT,0x20,0x08,0x20,0xd8,0x0079,0x0006,0x03},
{DAT,0x10,0x20,0x20,0xe0,0x0079,0x000f,0x03},
{DAT,0x10,0x20,0x20,0xb8,0x0079,0xffe7,0x03},
{DAT,0x08,0x08,0x28,0xe0,0x0081,0x000e,0x03},
{END,0x38,0x10,0x00,0xa8,0x009c,0x0002,0x0d},
};
static SPD_W tour2_spd[]={
0xB86600#
ize = 0x08;
spd[70].xsize = u_wk[0]-0x10;
spd[71].xsize = 0x00;
}
else {
spd[64].xsize = 0x08;
spd[65].xsize = 0x08;
spd[66].xsize = 0x08;
spd[67].xsize = u_wk[0]-0x18;
spd[68].xsize = 0x08;
spd[69].xsize = 0x08;
spd[70].xsize = 0x08;
spd[71].xsize = u_wk[0]-0x18;
}
if( u_wk[0] == PH5_8 ) {
u_wk[0] = 0;
u_wk[1]++;
}
else {
spd[63].ccode = DAT;
spd[71].ccode = END;
}
break;
case 6: // フェーズ6
u_wk[0]++;
if( u_wk[0] <= 0x08
0xB88400#
*6].offset_y = (i==0)? 0xffeb:0x002f;
spd[21+i*6].ysize = 0x08;
spd[21+i*6].offset_y = (i==0)? 0xfff3:0x0037;
}
}
if( u_wk[0] == PH2_4 ) {
u_wk[0] = 0;
u_wk[1]++;
}
else {
spd[15].ccode = DAT;
spd[27].ccode = END;
}
break;
case 3: // フェーズ3
u_wk[0]++;
if( u_wk[0] <= 0x08 ) {
spd[28].xsize = u_wk[0];
spd[29].xsize = 0x00;
spd[30].xsize = 0x00;
spd[31].xsize = 0x00;
spd[32].xsize = 0x00;
spd[33].xsize = u_wk[0];
spd[34].xsize = 0x00;
spd[35].xsize = 0x00;
spd[36].xsize = 0x00;
spd[37].xsize = 0x00;
}
else if( u_wk[0] <= 0x10 ) {
spd[28].xsize = 0x08;
spd[29].xsize = u_wk[0]-0x08;
spd[30].xsize = 0x00;
spd[31].xsize = 0x00;
spd[32].xsize = 0x00;
spd[33].xsize = 0x08;
spd[34].xsize = u_wk[0]-0x08;
spd[35].xsize = 0x00;
spd[36].xsize = 0x00;
spd[37].xsize = 0x00;
}
else if( u_wk[0] <= 0x18 ) {
spd[28].xsize = 0x08;
spd[29].xsize = 0x08;
spd[30].xsize
0xBA6400#
x28,0x00,0xffc9,0xffd8,0x4d},
{DAT,0x28,0x18,0x00,0xc8,0xffed,0xffd8,0x4d},
{END,0x28,0x18,0x28,0xc8,0x0013,0xffd8,0x4d},
};
static SPD_W batt_2_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x28,0x18,0x50,0x00,0xffc7,0xffd8,0x4d},
{DAT,0x28,0x18,0x00,0xc8,0xffed,0xffd8,0x4d},
{END,0x28,0x18,0x28,0xc8,0x0013,0xffd8,0x4d},
};
static SPD_W batt_3_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x08,0x18,0x78,0x00,0xffa0,0xffd8,0x4d},
{DAT,0x20,0x18,0x80,0x00,0xffa8,0xffd8,0x4d},
{DAT,0x28,0x18,0x50,0xc8,0xffc6,0xffd8,0x4d},
{DAT,0x28,0x18,0x80,0x80,0xffed,0xffd8,0x4d},
{DAT,0x28,0x18,0xd8,0x80,0x0013,0xffd8,0x4d},
{END,0x28,0x18,0x28,0xc8,0x003a,0xffd8,0x4d},
};
static SPD_W batt_f_spd[]={
/* ccode,xsize,ysize,u,v,offset_x,offset_y palette */
{DAT,0x28,0x18,0x80,0x80,0xffc0,0xffd8,0x4e},
{DAT,0x28,0x18,0xa8,0x80,0xffec,0xffd8,0x4e},
{END,0x28,0x18,0x28,0xc8,0x0018,0xffd8,0x4e},
};
static SPD_W win_spd[]={
/* ccode,xsize,ysiz
0xBADD90#
1341154; 0x00d008f2; 0x0d330d13;
0x04f11134; 0x091204f1; 0x08f20d13; 0x00d00912;
0x47bf439f; 0x3f5d3f5d; 0x3
0xBB1A00#
Uchar LCom_Increment(void); /* COM競技みない時のスキップ */
Uchar LCom_Skip(void); /* COMのスキップ */
void LCom_Set(void); /* COMのセット */
Uchar LCom_Declare(void); /* COMのパネル宣言 */
Uchar LCom_Direction(void); /* COMの左右狙い */
Uchar LCom_Power(void); /* COMの蹴るパワー */
Uchar LCom_MeetX(void); /* COMのミートポイントX */
void LCom_MeetY(void); /* COMのミートポイントY */
short cc_test = 261;
void LCom_Set_Test(void); /* COMのセットテスト */
#ifdef YOSSY_TEST
void LAct_Set(Uchar); /* 行動情報のセット */
void LAct_Output(void); /* 行動情報のファイル出力 */
void Pc_Make(int,Uchar *,int); /* PCにデータを作成する */
#endif
/*----- リプレイロード -----*/
void LSave_Dload(void); /* リプレイデータの読みこみ */
void LSave_Make(Uchar); /* リプレイデータの作成 */
void LSave_Set(void); /* リプレイデータのセット */
/*------------------------------------------------
ロングシュートの子プロセス本体
引数:なし
戻値:なし
------------------------------------------------*/
int child08(void)
{
child08_init(); /* ロングシュートの子プロセスの初期化 */
switch(ls->mode)
{
/* マッスルランキングのイベント管理 */
/* プラクティスモードのイベント管理 */
case MODE_MUSCLE:
case MODE_PRACTICE: LEvent_System[ls->event]();
break;
/* エキストラモードのイベント管理 */
case MODE_EXTRA: LExtra_System[ls->event]();
break;
/* リプレイロードのイベント管理 */
case MODE
0xBB6F60#
x008f08f2; 0x11541154; 0x113404f1; 0x08f200d0;
0x04f10912; 0x0d331575; 0x08f204d1; 0x08f21154;
0x04f100d0; 0x04f11976; 0x04f104f1; 0x00b000d0;
0x439f4bbf;
0xBBF400#
->gage2->theta,-2048,2048);
if(KEYLUP(JOY2)) ls->ball->wind++;
if(KEYLDOWN(JOY2)) ls->ball->wind--;
limitRange(ls->ball->wind,0,99);
LObject_Wind();
ls->ball->W_dir = ls->gage2->theta * -1;
ls->ball->W_power = ls->ball->wind * 10;
LBall_Wind_Set();
#endif
#if 0 /* OT実験 */
if(OLDKEYL2(JOY1)) ls->CHECK[0]--;
if(OLDKEYR2(JOY1)) ls->CHECK[0]++;
limitRange(ls->CHECK[0],0,256);
#endif
/* ボールの軌道予測・テスト版 */
LBall_Simulate_Test();
/* 決定 */
if( (!ls->cpu && OLDKEYRRIGHT(JOY1)) || (ls->cpu && LCom_Direction()) )
{
/* SE */
SD_call(SD_18_GAGE2);
/* 実況 */
if(ls->ana == ANA_HATU && SD_status[23] != 1)
{
LTalk_Hatu_After(1);
}
else if(ls->ana == ANA_FURU) LTalk_Furu_After(5);
#ifdef YOSSY_TEST
/* 行動情報のセット(0:左右の狙い 1:パワー 2:ミートポイント 3:結果 4:ファイル出力) */
LAct_Set(0);
#endif
LMotion_Set(MKD_SET2KICK1,MFLG_INIT);
// LMotion_Set(
0xBC2E00#
cls->xposi = 0;
cls->zposi = -1024;
cls->rot.vy = 2048;
LMotion_Set(MKD_BAD2 + ls->flg,MFLG_INIT);
}
else
{
ret = LDemo_Change(DM_IMP_IDX+(tmp<<1),DM_IMP_IDX+1+(tmp<<1),256);
}
break;
/* 肩を落として歩く */
case 3: if(!type)
{
/* カメラ */
tmp = Random(2);
LDemo_Set(DM_IMP_IDX+8+(tmp<<1));
/* 選手 */
cls->xposi = 4096;
cls->zposi = 6144;
cls->rot.vy = -1024;
LMotion_Set(MKD_BAD1
0xBCE600#
化) */
if(!ls->foot) com->H_dir[i] = *(ls->Dcom + ofs); /* 右利き */
else com->H_dir[i] = 2048 - (*(ls->Dcom + ofs)); /* 左利き */
com->V_dir[i] = *(ls->Dcom + ofs + 1); /* ボールの上下狙いのセット */
com->Power[i] = tmp_pow[1] + (*(ls->Dcom + ofs + 3)); /* ボールの蹴るパワーのセット */
/* ボールのカーブ狙いのセット(利き足で変化) */
if(!ls->foot) com->C_dir[i] = *(ls->Dcom + ofs + 2); /* 右利き */
else com->C_dir[i] = -1 * (*(ls->Dcom + ofs + 2)); /* 左利き */
c
0xBDDE00#
0, 1 );
}
/*==========================================================================
==リプレープレート・メインタスク
== リプレー中は毎フレーム実行してもらう
== この関数の前にセットされたモードがこの関数で反映される。
== out: short ステータス
==========================================================================*/
short G2dReplayCtrl08()
{
sys_w;
SPD_W* spd;
RECT rect;
register int check_trn = 0;
if ( rep_ctrl08.silent )
return rep_ctrl08.status;
/*リプレーの文字の制御*/
0xBFBC00#
case POINT_INIT: ls->get_point = 0; /* 獲得ポイント */
ls->old_point = 0; /* 過去ポイント */
ls->new_point = 0; /* 総合ポイント */
break;
/* 成功 */
case POINT_SUCCESS: ls->old_point = ls->new_point;
ls->get_point = 20;
if(ls->declare->select == ls->declare->now_get) ls->get_point += 5;
ls->new_point = ls->old_point + ls->get_point;
break;
/* 失敗 */
case POINT_MISS: ls->old_point = ls->new_point;
ls->get_point = 0;
break;
/* パーフェクト達成 */
case POINT_PERFECT: ls->old_point = ls->new_point;
ls->get_point = 50 + (ls->ball->rest * 10);
ls->new_point = ls->old_point + ls->get_point;
break;
/* パーフェクト未達成 */
case POINT_IMPERFECT: ls->old_point = ls->new_point;
ls->get_point = 0;
break;
/* ビンゴ獲得 */
case POINT_BINGO: ls->old_point = ls->new_point;
ls->get_point = ls_bingo_pt[ls->declare->bingo] - ls_bingo_pt[ls->declar
0xC01F80#
{ 0x00643000/0x800+VOFS15, (0x00007870+0x7ff)/0x800, FLG1 }, //SHIN\SS_047.VAG
{ 0x0064b000/0x800+VOFS15, (0x000065b0+0x7ff)
0xC08400#
タル) */
/********** 作業領域 **********/
extern LS_SYS ls_sys; /* ロングシュートの構造体 */
extern LS_SYS *ls; /* ロングシュートの構造体へのポインタ */
#endif
/********** END OF FILE **********/
0xCF2E00#
tile texture */
unsigned Mime : 1; /* MIM(MIMe) 0: with no Built-in MIMe */
/* 1: with Built-in MIMe */
unsigned NoAssign: 5; /* No Assign (Not Used) */
unsigned Div : 1; /* DIV(divide) 0: no divide */
/* 1: divide */
unsigned FOG : 1; /* FOG(fog) 0: fog off */
/* 1: fog on */
unsigned Lght : 1; /* LGT(light) 0: lighting */
0xD19200#
F_K_gu, /*グ*/
F_K_ge, /*ゲ*/
F_K_go, /*ゴ*/
F_K_lya, /*ャ*/
F_K_lyu, /*ュ*/
F_K_lyo, /*ョ*/
F_K_ltu, /*ッ*/
F_K_vu, /*ヴ*/
f_dum0e, /**/
F_K_ha, /*ハ*/
F_K_hi, /*ヒ*/
F_K_hu, /*フ*/
F_K_he, /*ヘ*/
F_K_ho, /*ホ*/
F_K_za, /*ザ*/
F_K_zi, /*ジ*/
F_K_zu, /*ズ*/
F_K_ze, /*ゼ*/
F_K_zo, /*ゾ*/
f_dum0f, /**/
f_dum10, /**/
f_dum11, /**/
f_dum12, /**/
f_dum13, /**/
f_dum14, /**/
F_E_A, /*A*/
F_E_B, /*B*/
F_E_C, /*C*/
F_E_D, /*D*/
F_E_E, /*E*/
F_E_F, /*F*/
F_E_G, /*G*/
F_E_H, /*H*/
F_E_I, /*I*/
F_E_J, /*J*/
F_E_K, /*K*/
F_E_L, /*L*/
F_E_M, /*M*/
F_E_N, /*N*/
F_E_O, /*O*/
F_E_P, /*P*/
F_E_Q, /*Q*/
F_E_R, /*R*/
F_E_S, /*S*/
F_E_T, /*T*/
F_E_U, /*U*/
F_E_V, /*V*/
F_E_W, /*W*/
F_E_X, /*X*/
F_E_Y, /*Y*/
F_E_Z, /*Z*/
f_dum15, /**/
f_dum16, /**/
f_dum17, /**/
f_dum18, /**/
f_dum19, /**/
f_dum1a, /**/
F_E_a, /*a*/
F_E_b, /*b*/
F_E_c, /*c*/
F_E_d, /*d*/
F_E_e, /*e*/
F_E_f, /*f*/
F_E_g, /*g*/
F_E_h, /*h*/
F_E_i, /*i*/
F_E_j, /*j*/
F_E_k, /*k*/
F_E_l, /*l*/
F_
0xD23600#
-------------------------------*/
#define OBJ_IDX_P1 0
#define OBJ_IDX_P2 60
#define OBJ_IDX_OBJ 120
typedef struct _OBJ3D_W {
Schar be; /* != 0: display, > 0: No Clip */
Uchar type; /* 表示形態 NORMAL BOT */
Uchar ot_no; /* 接続OTの選択 */
/* plygon */
u_char ObjBlockNum; /* モデリングデータのオブジェクトの数を保持する */
GsUNIT *pGsObject; /* オブジェクトハンドラ (ポインタ) */
GsCOORDUNIT *pCoordSect; /* オブジェクトごとの座標系 */
Ul
0xD28C00#
ruct _EVENT_RANK { /* 各競技の記録保持者*/
Schar playerIndex; /* 名前へのインデックス */
Uchar dummy[3];
Ulong record; /* 記録 */
} EVENT_RANK;
typedef struct _POINT_RANK { /* 総合戦でのポイントランキング*/
Schar playerIndex; /* 名前へのインデックス */
Uchar dummy;
Ushort point; /* ポイント */
} POINT_RANK;
typedef struct _S_PLAY { /* 個人ランキング戦用*/
Schar playerIndex; /* 名前へのインデックス */
Schar progress; /* 進行状況 */
Ushort point; /* ポイント */
} S_PLAY;
typedef struct _T_PLAY { /* チームランキング戦用*/
Schar playerIndex; /* 名前へのインデックス */
Schar teamMate[2]; /* チーム員のインデックス */
Schar progress; /* 進行状況 */
Ushort point; /* ポイント */
} T_PLAY;
typedef struct _PLAY_W {
S_PLAY single; /* 個人総合 */
T_PLAY team; /* チーム総合 */
S_PLAY ladys; /* レディース */
} PLAY_W;
0xD48400#
T /* ダミー (メッセージなし) */
#define MES_NOCARD (0xf1) /* カードが接続されていない */
#define MES_NOBLOCK (0xf2) /* 空きブロックが足りない */
#define MES_OVERWRT (0xf3) /* 既にファイルが存在する (上書き確認) */
#define MES_DESTROY (0xf4) /* カードが壊れている可能性がある */
#define MES_NOFILE1 (0xf5) /* ファイルが見つからない (新規保存確認) */
#define MES_NOFILE2 (0xf6) /* ファイルが見つからない (警告のみ) */
#define MES_FORMAT1 (0xf7) /* フォーマットされていない (フォーマット確認) */
#define MES_FORMAT2 (0xf8) /* フォーマットされていない (警告のみ) */
#define MES_DATAERR (0xf9) /* データが壊れている可能性がある */
#define MES_SVEND (0xfa) /* セーブ終了 */
#define MES_SVFAIL (0xfb) /* セーブ失敗 */
#define MES_LDEND (0xfc) /* ロード終了 */
#define MES_LDFAIL (0xfd) /* ロード失敗 */
#define MES_FMEND (0xfe) /* フォーマット終了~セーブ */
#define MES_FMFAIL (0xff) /* フォーマット失敗 */
#define MES_NOWCH (0x10) /* チェック中 */
#defin
0xD70400#
/* 0x0156000 : 0x10000 */
#define DECO_TBL ( RING_BUF + 0x10000 ) /* 0x0166000 : 0x11000 */
/* MDEC 動画の再生パラメータ */
typedef struct {
int sct; /* 絶対セクタ */
unsigned char is24bit; /* 24bitカラー */
unsigned long head; /* 先頭フレーム */
unsigned long tail; /* 終了フレーム */
short posx; /* X座標 */
short posy; /* Y座標 */
short width; /* 幅 */
short height; /* 高さ */
unsigned char skip; /* スキップ可/不可 */
int frame_rate; /* 0:60fps 2:30fps 3:20fps 4:15fps */
short disp_vx; /* 表示領域の先頭X */
short vol_l; /* 左音量 */
short vol_r; /* 右音量 */
} MOVIE_INFO;
/* 16bit/24bit対応マクロ */
#define VRAMPIX(pixels,is24bit) ((is24bit)?((pixels)*3)/2:(pixels)) /* VRAM 上でのピクセル数 */
#define DCT_MODE(is24bit) ((is24bit)?3:2) /* デコードモード */
/* デコード環境変数 */
typedef struct {
unsigned long *vlcbuf[2]; /* VLC バッファ(ダブルバッファ) */
int vlcid; /* 現在 VLC デコード中バッファの ID
0xD7A400#
T2 1305 /*的抜き2 */
#define SD_15_FLAME1 1306 /*フレーム1 */
#define SD_15_FLAME2 1307 /*フレーム2 */
#define SD_15_FLAME3 1308 /*フレーム3 */
#define SD_15_GAGE1 1309 /*ゲージ音1 */
#define SD_15_GAGE2 1310 /*ゲージ音2 */
#define SD_15_GAGE3 1311 /*ゲージ決定 */
#define SD_15_FLAME4 1312 /*フレーム全体が動く */
/*ゲームメーカー*/
#define SD_16_FOOT1L 1296 /*左足音1 */
#define SD_16_FOOT1R 1297 /*右足音1 */
#define SD_16_FOOT2L 1298 /*左足音2(ゲーム中) */
#define SD_16_FOOT2R 1299 /*右足音2(ゲーム中) */
#define SD_16_START 1300 /*開始音 */
#define SD_16_KICK 1301 /*キック音 */
#define SD_16_RIFT1 1302 /*リフティング1(通常) */
#define SD_16_RIFT2 1303 /*リフティング2(弱い) */
#define SD_16_RIHT3 1304 /*リフティング3(通常) */
#define SD_16_RIFT4 1305 /*リフティング4(弱い) */
#define SD_16_BOUND1 1306 /*バウンド1(1回目) */
#define SD_16_BOUND2 1307 /*バウンド2(2回目以降)*/
0xD85640#
004a80
0x00004180
0x00004e50
0x00004d60
0x00004d30
0x000052f0
0x00005240
0x00003eb0
0x00006410
0x00004c40
0x00005610
0x000072c0
0x00008450
0x00001fb0
0x00001f40
0x00002700
0x000020c0
0x000057b0
0x00007700
0x00005ec0
0x00007190
0x00007a60
0x000064c0
0x00008130
0x00005840
0x00004890
0x00004c00
0x000081c0
0x0000a4b0
0x00008c30
0x000060b0
0x000088b0
0x00008a50
0x00005560
0x00005470
0x00005bf0
0x00006800
0x000061
0xD87D10#
0x00002160+0x7ff)/0x800, FLG1 }, //HATU\HD_F01.VAG
{ 0x005e6800/0x800+VOFS17, (0x00003d60+0x7ff)/0x800, FLG1 }, //HATU\HD_F02.VAG
{ 0x005ea800/0x800+VOFS17, (0x00002ed0+0x7ff)/0x800, FLG1 }, //HATU\HD_F03.VAG
{ 0x005ed800/0x800+VOFS17
0xD93200#
ます!」*/
FGM_K05, /*「軽々と細道を進んで行く!」*/
FGM_K06, /*「難なく細道をクリアしそうな勢いだ!」*/
FGM_K07, /*「このボール運びの前には、道幅は関係ないのか!」*/
/*中盤(危なげ)*/
FGM_K08, /*「細さのプレッシャーは、想像以上に厳しいようだ!」*/
FGM_K09, /*「なんとしても、細道を抜けボールを次へつなげて欲しい!」*/
FGM_K10, /*「じわりじわりと、無言の重圧が精神を浸食し始めているのか?」*/
FGM_K11, /*「細道の下では、敗北の烙印が熱せられております!」*/
/*順調にクリア*/
FGM_K12, /*「難なく、細道をクリア!」*/
FGM_K13, /*「順当に、細道を抜けてきました!」*/
FGM_K14, /*「問題なく、細道を通り抜けて行きました!」*/
FGM_K15, /*「細道、余裕のクリアだ!」*/
/*危なげにクリア*/
FGM_K16, /*「細道を、何とか通過!」*/
FGM_K17, /*「プレッシャーをはねのけて、細道通過であります!」*/
FGM_K18, /*「なんとか、細道を攻略しました!」*/
FGM_K19, /*「やりました、細道とりあえずクリアです!」*/
};
/*************************************************************
シュート
*************************************************************/
enum {
/*開始*/
FGM_L00 = (FGM_K19+1), /*「ゴールネットを揺らてし、有終の美を飾る事が出来るか!」*/
FGM_L01, /*「パーフェクトへ向けて、渾身のシュートをゴールへ叩き込むか!」*/
FGM_L02, /*「ゴールの向こう、パーフェクトの栄冠をつかむ事が出来るか!」*/
FGM_L03, /*「さあ、あとは自分のタイミングでシュートを撃つだけだ!」*/
/*シュート(キッ
0xD99200#
FL_J05, /*「風の門番が行く手を大きく阻んでおります」*/
FL_J06, /*「この風を神風に変える事が出来るんでありましょうか」*/
FL_J07, /*「ナチュラルなボール変化が予想されます」*/
};
/*************************************************************
宣言後
*************************************************************/
enum {
/*かみ*/
FL_C00 = (FL_J07+1), /*「左方向を」*/
FL_C01, /*「右方向を」*/
FL_C02, /*「上方向を」*/
FL_C03, /*「下方向を」*/
FL_C04, /*「左隅を」*/
FL_C05, /*「右隅を」*/
FL_C06, /*「左を」*/
FL_C07, /*「右を」*/
FL_C08, /*「上を」*/
FL_C09, /*「下を」*/
FL_C10, /*「左上を」*/
FL_C11, /*「右上を」*/
FL_C12, /*「左下を」*/
FL_C13, /*「右下を」*/
FL_C14, /*「高めを」*/
FL_C15, /*「ど真ん中を」*/
FL_C16, /*「低めを」*/
/*なか*/
FL_C17, /*「宣言!」*/
FL_C18, /*「狙います!」*/
FL_C19, /*「狙っている!」*/
FL_C20, /*「宣言しました!」*/
FL_C21, /*「狙っています!」*/
FK2_A00, /*「*番です、*番の」「ボードを狙います!」*/
FK2_A01, /*「*番です、*番の」「ボードを狙っていきます!」*/
FK2_A02, /*「*番です、*番を」「狙います!」*/
FK2_A03, /*「*番です、*番を」「狙っていきます!」*/
/*しも*/
FL_C22, /*「なかなか難しいところです」*/
FL_C23, /*「難しいコースを狙います」*/
FL_C24, /*「狙ったボードにいくでしょうか」*/
FL_C25, /
0xD9BE00#
」*/
SL_E06, /*「6球目は」*/
SL_E07, /*「7球目は」*/
SL_E08, /*「8球目は」*/
SL_E09, /*「9球目は」*/
SL_E0A, /*「10球目は」*/
SL_E0B, /*「11球目は」*/
SL_E0C, /*「12球目は」*/
/*~球と*/
SL_F01, /*「1球と」*/
SL_F02, /*「2球と」*/
SL_F03, /*「3球と」*/
SL_F04, /*「4球と」*/
SL_F05, /*「5球と」*/
SL_F06, /*「6球と」*/
SL_F07, /*「7球と」*/
SL_F08, /*「8球と」*/
SL_F09,
0xDA0400#
/*「目の前にはパーフェクトをはばむ9つ難関レーン」*/
FP_B01, /*「趣向を凝らした9つのレーンが待ち構えております」*/
FP_B02, /*「趣向を凝らしに凝らした、いやーな9つのレーンが待ちかまえております」*/
FP_B03, /*「9つのレーンが難解な問題のごとく立ちはだかっております」*/
FP_B04, /*「9つのレーンが難解なパズルのごとく立ちはだかっております」*/
/*なか*/
FP_B05, /*「ピンとボールを己の手足のように操ってクリアだ!」*/
FP_B06, /*「己の集中力とテクニックすべてを賭けて挑戦!」*/
FP_B07, /*「クリアするためにはピンアクションのイメージをレーンで実現させるしかありません」*/
/*しも*/
FP_B08, /*「鮮やかなテクニックで観客を魅了するか!さあ、パンチアウトの登場だ!」*/
FP_B09, /*「さあ、いよいよ始まるぞ!パンチアウト!」*/
FP_B10, /*「レーンを舞台としたショーのスタートです!パンチアウト!」*/
FP_B11, /*「レーンを舞台とした頭脳戦の始まりであります。*/
FP_B12, /*「レーンをすべるようなエンターテイメント。パンチアウトの始まり
0xDA2C00#
************************************************/
enum {
/*成功*/
FP_F00 = (FP_E52+1), /*「(選手名)」「イメージ通りのボールコントロールであります」*/
FP_F01, /*「狙い通りのピンアクションです」*/
FP_F02, /*「(選手名)」「きっちり倒します。すばらしいテクニックです」*/
FP_F03, /*「まさに神業、絶妙なコントロール」*/
FP_F04, /*「絶妙なピンアクションはイメージ通りです」*/
FP_F05, /*「イメージがそのまま現実となりました」*/
FP_F06, /*「理想的な球筋で見事クリアしました」*/
FP_F07, /*「ピンアクションに助けられたようです」*/
FP_F08, /*「まさに奇蹟か。なかなか魅せてくれます」*/
FP_F09, /*「驚異のピンアクションで辛くもクリアしました」*/
FP_F10, /*「九死に一生を得ました」*/
/*失敗*/
FP_F11, /*「球はピンにかすりもしません」*/
FP_F12, /*「どうしたんでしょうか」*/
FP_F13, /*「かすりもしません」*/
FP_F14, /*「狙いが外れたのか緊張したのか」*/
FP_F15, /*「狙いすぎたんでありましょうか」*
0xDA9400#
enum {
/*2レーン以下 かみ*/
HP_E40 = (HP_E39+1), /*「どうしたのでしょうか、」*/
HP_E41, /*「どうしてしまったんでしょうか?」*/
HP_E42, /*「調子が悪いのでしょうか」*/
/*しも*/
HP_E43, /*「まったくいいところがありません」*/
HP_E44, /*「これはひどい有り様です」*/
HP_E45, /*「がんばって欲しいところです」*/
/*3~5レーン かみ*/
HP_E46, /*「計算が狂ったのか、それとも予想以上だったのか」*/
HP_E47, /*「顔はよかったんですが」*/
HP_E48, /*「意気込みは良かったのですが」*/
/*しも*/
HP_E49, /*「まだまだ完全制覇には遠く及びません」*/
HP_E50, /*「もっとテクニックを磨いて欲しいところです」*/
HP_E51, /*「いまひとつの成績でした」*/
/*6~7レーン かみ*/
HP_E52, /*「残念ながらここで終了!」*/
HP_E53, /*「あと一歩のところまできましたが、」*/
HP_E54, /*「ここまでたどり着いたのですが、」*/
/*しも*/
HP_E55, /*「完全制覇ならずー!」*/
HP_E56, /*「残念ながらここで終了です!
0xDB2400#
FS_G13, /*「バットがむなしく空を切った、風圧で顔がゆがむようだっ」*/
/*見逃して失敗*/
FS_G14, /*「あぁっ、もったいない、見逃してしまったーっ」*/
FS_G15, /*「見逃しーっ、この時点での見逃しは痛すぎるっ」*/
FS_G16, /*「見逃すような球じゃないはずだ、一体どうしたっ」*/
/*ラスト1球*/
FS_G17, /*「最後のトスを失敗してしまったーっ、これはもったいないっ」*/
FS_G18, /*「ラストを空振りーーっ、これはどうしたことだーーっ」*/
FS_G19, /*「最後を見逃して、どうするつもりだったんだーっ」*/
/*アウトパネル*/
FS_G20, /*「アウトー!」*/
FS_G21, /*「ワンアウトです!」*/
FS_G22, /*「ツーアウトになってしまいました。」*/
FS_G23, /*「スリーアウト!」*/
FS_G24, /*「ゲームセット!」*/
FS_G25, /*「やってしまったー!!」*/
FS_G26, /*「チェンジ!」*/
/*パネルに当たらない*/
FS_G27, /*「ファール」*/
FS_G28, /*「ファール」(テンション低め)*/
FS_G29, /*「ボール」*/
FS_G30, /*「ボール
0xDB4C00#
[ムラン性の当たりですが、ボードには当たりませんでした」*/
SS_031, /*「センターへ抜けてしまいました」*/
SS_032, /*「スタンドに飛び込まんばかりです」*/
SS_033, /*「左中間への長打コースです」*/
SS_034, /*「右中間への長打コースです」*/
/*フレーム*/
SS_035, /*「細いフレームに直撃です」*/
SS_036, /*「見事、フレームに直撃しています」*/
/*既に抜けたところ*/
SS_037, /*「空いたところをボールが通過してしまいました」*/
SS_038, /*「既に空いた空間を抜けていきました」*/
SS_039, /*「もうここにボードはありません」*/
/*失敗汎用*/
SS_040, /*「これは残念です」*/
SS_041, /*「これは痛い」*/
SS_042, /*「これはもったいない」*/
SS_043, /*「これは惜しい」*/
SS_044, /*「何事も思い通りには行きません」*/
SS_045, /*「思い切って打ちましたが、打球はボードをそれてしまいました」*/
SS_046, /*「ちょっと力が有り余った感じです」*/
SS_047, /*「もう少しでボードをとらえるところだったんですが」*/
0xDC3400#
*/
FGT_J07, /*「軽々と行ったーーっ」*/
/*失敗直後*/
FGT_J08, /*「歯を食いしばった」*/
FGT_J09, /*「この表情で投げていった」*/
FGT_J10, /*「今度はどうだっ」*/
/*パワー/角度がベスト*/
FGT_J11, /*「強力だっ、これはすごい」*/
FGT_J12, /*「いいタイミングだっ」*/
};
/*************************************************************
結果
*************************************************************/
enum {
/*成功*/
FGT_K00 = (FGT_J12+1), /*「越えました」「(選手名)」*/
FGT_K01, /*「越えていきました」「*m」*/
FGT_K02, /*「行ったーーっ、行きました」*/
FGT_K03, /*「またまた樽が無重力状態のようだ」*/
FGT_K04, /*「エビ反るぞギリシャ彫刻」*/
FGT_K20, /*「綺麗な放物線だっ」*/
FGT_K24, /*「筋肉の勇者達の演じる物語*/
/*高さ余裕で成功*/
FGT_K06, /*「軽々だーーっ」*/
FGT_K07, /*「軽々とこえて行ったーっ」*/
FGT_K08, /*「余裕で越えたーっ」*/
FGT_K09, /*「楽々と越えたーっ」*/
0xDC5400#
*「30と言う」*/
FGT_N40C, /*「40と言う」*/
FGT_N50C, /*「50と言う」*/
FGT_N60C, /*「60と言う」*/
FGT_N70C, /*「70と言う」*/
FGT_N80C, /*「80と言う」*/
FGT_N90C, /*「90と言う」*/
/*通常テンション*/
FGT_O04M, /*「4m」*/
FGT_O05M, /*「5m」*/
FGT_O06M, /*「6m」*/
FGT_O07M, /*「7m」*/
FGT_O08M, /*「8m」*/
FGT_O09M, /*「9m」*/
FGT_O10M, /*「10m」*/
FGT_O11M, /*「11m」*/
FGT_O12M, /*「12m」*/
FGT_O10C, /*「10センチ」*/
FGT_O20C, /*「20センチ」*/
FGT_O25C, /*「25センチ」*/
FGT_O30C, /*「30センチ」*/
FGT_O40C, /*「40センチ」*/
FGT_O50C, /*「50センチ」*/
FGT_O60C, /*「60センチ」*/
FGT_O70C, /*「70センチ」*/
FGT_O75C, /*「75センチ」*/
FGT_O80C, /*「80センチ」*/
FGT_O90C, /*「90センチ」*/
/*ハイテンション*/
FGT_P04M, /*「4m」*/
FGT_P05M, /
0xDC8A00#
Aいよいよ決勝戦であります!」*/
FD_C08, /*「さあ、いよいよです。ファイナル・マッチ!」*/
FD_C09, /*「いよいよ天王山!」*/
/*しも*/
FD_C10, /*「両雄の熱い魂がぶつかり合う、晴れ舞台!」*/
FD_C11, /*「両雄のうち、一体どちらが優勝の栄冠に輝くのでありましょうか?!」*/
FD_C12, /*「勝利の美酒に酔いしれるのはどちらでありましょうか?」*/
};
/*************************************************************
スタート
*************************************************************/
enum {
FD_D00 = (FD_C12+1), /*「さあ、いよいよ、最終決戦の火蓋が切られました!」*/
FD_D01, /*「さあ、最終決戦、決勝の幕が開きました!」*/
FD_D02, /*「さあ、両者様子をうかがいながら、勝負を仕掛けようというところ!」*/
FD_D03, /*「さあ、いきなり引いた!」*/
FD_D04, /*「さあ、いきなり仕掛けた!」*/
FD_D05, /*「さあ、いきなりゆるめた!」*/
FD_D06, /*「いきなり引いた!」*/
FD_D07, /*「いきなり仕掛けた!」*/
FD_D08, /*「いきなりゆるめた!」*/
FD_D09, /*「(選手名!)」「いきなり引いた!」*/
FD_D10, /*「(選手名!)」「いきなり仕掛けた!」*/
FD_D11, /*「(選手名!)」「いきなりゆるめた!」*/
};
/*************************************************************
駆け引き
*************************************************************/
enum {
FD_E00 = (FD_D11+1), /*「(選手名!)」「引いている!」*/
FD_E01, /*「(選手名!)」「引く!引きます!」*/
FD_E02, /*「(選手名!)」「引い
0xDCAC00#
/*「パワーとバランス、駆け引きの過激な共演でありました!」*/
FD_H04, /*「ほんの一瞬も気が抜けない緊張の連続!」*/
FD_H05, /*「スタミナも集中力も完全に消耗しきっている!」*/
/*しも*/
FD_H06, /*「そして、ついにこの過激な円柱上の格闘技、デッドマンズドロップを制した!」*/
FD_H07, /*「見事デッドマンズドロップの頂点を制するに至りました!」*/
FD_H08, /*「ご覧ください!デッドマンズドロップを制した栄誉ある勇者の姿であります!」*/
/*敗北の一言*/
/*かみ*/
FD_H09, /*「(選手名!)」「ここまでやってまいりましたが及びませんでした!」*/
FD_H11, /*「(選手名!)」「ここで敗れ去ってしまった!」*/
FD_H13, /*「(選手名!)」「決勝まで来てあと1勝が取れなかった!」*/
/*しも*/
FD_H10, /*「これは無念としか言いようがない!」*/
FD_H12, /*「ここで勝利をおさめて優勝をつかみたかった!」*/
FD_H14, /*「その悔しさがこちらにも伝わってくる!」*/
};
/*************************************************************
アナウンサ
0xDCCC00#
**********
決着
*************************************************************/
enum {
HD_D00 = (HD_C46+1), /*「(選手名!)」「決着をつけた!」*/
HD_D01, /*「(選手名!)」「勝利をおさめました!」*/
HD_D02, /*「(選手名!)」「あっという間に勝負が決まりました!」*/
HD_D03, /*「(選手名!)」「万事急須!」*/
HD_D04, /*「いきなりだ!いきなりだ!」*/
HD_D05, /*「(選手名)」「成すすべなく敗れました!」*/
HD_D06, /*「(選手名!)」「落ちました!奈落の底へ落ちて行きました!」*/
HD_D07, /*「(選手名!)」「逆転勝ち!」*/
HD_D08, /*「万全の体勢から落ちてしまった!」「(選手名!)」*/
/*相手が自爆*/
HD_D09, /*「自爆ー!」*/
HD_D10, /*「(選手名!)」「自爆してしまいました!」*/
HD_D11, /*「(選手名)」「自爆!よって」*/
HD_D12, /*「(選手名)」「勝利を決めた!」*/
HD_D13, /*「(選手名)」「自ら敗者となったー!これにより」*/
HD_D14, /*「(選手名)」「勝者となりました!」*/
};
/**
0xDD0C00#
**************************
スタート後
*************************************************************/
enum {
/*序盤*/
FBT_D00 = (FBT_C17+1), /*「さあ、号砲一発鳴りわたりました」*/
FBT_D01, /*「さあ、行くぞ疾走する尺取虫だ」*/
FBT_D02, /*「さあ、スタートした」*/
FBT_D03, /*「さあ、どうだ」*/
FBT_D04, /*「早くもリードしたのは」「(選手名)」*/
FBT_D05, /*「さあ、始まりました!」*/
FBT_D06, /*「素晴らしいスタートを切りました」「(選手名)」*/
FBT_D07, /*「さあ、ゴール目指してバック転が開始されました」*/
FBT_D08, /*「さあ、ゴール目指してバック転が始まった」*/
FBT_D09, /*「号砲と共に、筋肉の大車輪が回転を始めました」*/
FBT_D10, /*「スタートはほぼ一線」*/
FBT_D11, /*「スタートが良かったのは」「(選手名)」*/
FBT_D12, /*「横一線のスタートだ」*/
FBT_D13, /*「(選手名)」「若干スタートが遅れた」*/
FBT_D14, /*「号砲一発」*/
FBT_D15, /*「(選手名)」「まずは軽やかに一歩リードしました
0xDD2C00#
!」*/
/*世界新記録*/
FBT_F15, /*「暫定的に世界記録を更新しましたが、このまま優勝できるのでしょうか?」*/
FBT_F16, /*「この世界新記録とともに優勝できるのでありましょうか?」*/
/*最終結果*/
FBT_F17, /*「(選手名)」「結果」「第(1-10)位」表下参照*/
/*優勝*/
FBT_F18, /*「(選手名)」「優勝です」*/
FBT_F19, /*「(選手名)」「見事、栄冠を勝ち取りました」*/
FBT_F20, /*「(選手名)」「自己新記録で優勝しました」*/
FBT_F21, /*「(選手名)」「世界新で優勝という2つの栄冠を一挙に手に入れました」*/
/*優勝以外*/
FBT_F22, /*「(選手名)」「優勝には一歩およびませんでした」*/
FBT_F23, /*「あと一歩のところで栄冠をつかみ損ねました」*/
FBT_F24, /*「上位には入賞しましたが残念」*/
FBT_F25, /*「この次に期待したいものであります」*/
FBT_F26, /*「バック転に更なる磨きをかけてほしいものです」*/
FBT_F27, /*「(選手名)」「他の選手に比べ実力不足だったようです」*/
};
/**********************************************
0xDD9600#
、不気味な緊張が二人を包みこんでいきます」*/
FBT_C12, /*「勝利へ向けて闘志が、モチベーションが徐々に激化してまいりました」*/
FBT_C14, /*「シノギを削って、相乗効果となるか」*/
FBT_C16, /*「どちらに勝利の女神が微笑むのか?」*/
};
/*************************************************************
スタート時
*************************************************************/
enum {
FBF_G00 = (FBT_C16+1), /*「行ったーっ」*/
FBF_G01, /*「どっちが速いっ」*/
FBF_G02,
0xDDB400#
ヲ込んだっ」*/
FBF_M33, /*「取った、取りました、最後の混戦を制したのは」「(選手名)」*/
FBF_M34, /*「あぁー、最後の最後で詰めを誤った」「(選手名)」*/
FBF_M35, /*「運が悪いの一言ではすまされない、無念だっ」「(選手名)」*/
FBF_M36, /*「決まったーっ、激闘を制したのは」「(選手名)」*/
FBF_M37, /*「(選手名)」「ラッキーに助けられたっ、勝利が転がり込んできたっ」*/
FBF_M38, /*「優勝を目前にしながら、フィールドの底深く沈んでしまったっ」*/
};
/*************************************************************
最終結果
*************************************************************/
enum {
/*フライングで敗退*/
FBF_N00 = (FBF_M38+1), /*「(選手名)」「最後の最後がこんな結末で、無念だーっ」*/
FBF_N01, /*「(選手名)」「悔しさが、こちらにも伝わってくるようだーっ」*/
FBF_N02, /*「(選手名)」「力を発揮することもかなわずっ」*/
/*フライングで優勝*/
FBF_N03, /*「ラスト、タナボタから優勝を納めた」「(選手名)」*/
FBF_N04, /*「
0xDDDA00#
を押さえているっ」*/
HB_D25, /*「(選手名の)」「進路に身体を割り込ませたっ」*/
};
/*************************************************************
探し物
*************************************************************/
enum {
HB_F00 = (HB_D25+1), /*「おぉっと、二人とも旗を持っていない」*/
HB_F01, /*「両者の手に旗がないぞ」*/
HB_F02, /*「二人とも手には旗の影すらないっ」*/
HB_F03, /*「さあ、どこだっ」*/
HB_F04, /*「勝者はまだ決まっていないっ」*/
HB_F05, /*「まだ決着は付いていない」*/
};
/*************************************************************
決着
*************************************************************/
enum {
HB_G00 = (HB_F05+1), /*「取った、取りました」「(選手名)」*/
HB_G01, /*「やった、ゲットだ、」「(選手名)」*/
HB_G02, /*「(選手名だっ)、」「速かった」*/
HB_G03, /*「やはり速かった、」「(選手名)」*/
HB_G04, /*「遅れてきた」*/
HB_G05, /*「(選手名)、」「タナボタの勝利だ」*/
HB_G06, /*「残された旗を、あっさりと手に入れてしまった、」「(選手名)」*/
HB_G07, /*「(選手名)、」「後ろから悠々だ」*/
HB_G08, /*「あっさりと後ろからさらっていった」*/
HB_G09, /*「(選手名)、」「行き過ぎてしまった」*/
HB_G10, /*「(選手名)、」「旗を取り損ねた」*/
HB_G11, /*「(選手名)、」「旗に届いていない」*/
HB_G12, /*「(選手名)、」「わずかに届かなかった」*/
HB_G13, /*「最後に旗を手にしたのは、」「(選手名)」*/
HB_G14,
0xDE1E00#
驛潟塔Oへ入ります」*/
FN_F20, /*「リングには入りましたが、そこにはすでにボールが入っています」*/
FN_F21, /*「すでにそのリングには先約がいました」*/
FN_F22, /*「攻略済みのリングへ再度ボールが入りました」*/
FN_F23, /*「ミスの原因は何だったのか?」*/
FN_F24, /*「リングに弾かれています」*/
FN_F25, /*「リングに嫌われた」*/
FN_F26, /*「残念ですが、揺れるリングに阻まれています」(hide)*/
FN_F27, /*「惜しくも、動いているリングに弾かれました」(I
0xDE4200#
/
HN_C03, /*「*番」「左右に動くリングです」(II)*/
HN_C04, /*「通常のバスケットボールのリングです」*/
HN_C05, /*「4番と7番の2つを超えなければいけません」(hide)*/
HN_C06, /*「7番の後ろに隠れたリングです」(hide)*/
HN_C07, /*「hideの所以、8番に隠れたリングです」(hide)*/
/*かみ*/
HN_C08, /*「リングが縦に動く」*/
HN_C09, /*「リングが横に動く」*/
HN_C10, /*「手前のリングの陰に隠れていて」*/
/*しも*/
HN_C11, /*「難しいところです」*/
HN_C12, /*「難しいところ!」*/
HN_C13, /*「微妙なコントロールが要求されます」*/
};
/*************************************************************
シュート時
*************************************************************/
enum {
HN_D00 = (HN_C13+1), /*「大きく息を吐きました」*/
HN_D01, /*「意地とプライドをかけて挑戦」*/
HN_D02, /*「観衆が固唾を飲んで見守っています」*/
HN_D03, /*「しっかりとリングを見据えております」*/
HN_D04, /*「緊張感がこちらにも伝わってきます」*/
HN_D05, /*「さあ、注目の1球目」(最初のみ)*/
HN_D06, /*「今度は少し慎重に狙いを定めていきます」*/
/*パーフェクト直前*/
HN_D07, /*「いよいよパーフェクトまであと」「*つ!」*/
HN_D08, /*「いよいよパーフェクトまで残ったリングは1つ、」「*番!」*/
HN_D09, /*「(選手名)、」「パーフェクトまであと」「*つ!」*/
HN_D10, /*「パーフェクトへ向けてシュートです!」*/
HN_D11, /*「(選手名)、」「投げた!」*/
};
/**********************
0xDE9200#
鼾№ナはありません!」*/
FK4_A33, /*「疲労にその集中力を奪われてしまったのか!」*/
FK4_A34, /*「確実に決めて行くしかありません」*/
FK4_A35, /*「ここにきて乱れてしまいました!」*/
FK4_A36, /*「まさに崖っぷち状態」*/
FK4_A37, /*「緊張も最高潮に達しております!」*/
FK4_A38, /*「ここまでは好調でしたが、思わぬ所でつまづいた!」*/
FK4_A39, /*「見ている側も、一瞬たりとも目が離せない!」*/
FK4_A40, /*「さあ、踏み出したその先は、天国か地獄か」*/
FK4_A41, /*「さすがに疲れがでたのか!」*/
/*残り目標ラスト*/
FK4_A42, /*「今度こそ決めて終わりにしたい」*/
/*残り目標ラストで2投目以降*/
FK4_A43, /*「チャンスはまだまだあります、次こそ決めてほしい!」*/
};
/*************************************************************
宣言前
*************************************************************/
enum {
FK3_B00 = (FK4_A43+1),/*「(1-14)球目」「さあ、何番を狙いますか?」*/
FK3_B01, /*「*球目」「さあ、何番に行きますか?」*/
FK3_B02, /*「さあ、何番でしょうか?」*/
FK3_B03, /*「さあ、何番ですか?」*/
FK3_B04, /*「さあ、どこを狙いますか」*/
FK3_B05, /*「*球目」「さあ、何番を狙いますか?」*/
FK3_B06, /*「*球目」「さあ、何番ですか?」*/
FK3_B07, /*「さあ、何番から行きますか。」*/
FK3_B080, /*「さあ、どこを狙っていくのでしょう」*/
FK3_B081, /*「まずどれこから行きますか」*/
FK3_B09, /*「まずどれから行きますか」*/
FK3_B10, /*「さあ、次はどこを
0xDEB200#
チてしまったー!」*/
FK4_C43, /*「最後の最後が決められないっ」*/
};
/*************************************************************
成功
*************************************************************/
enum {
/*汎用*/
FK3_F00 = (FK4_C43+1), /*「決めたっ」「*番!」*/
FK3_F01, /*「取ったー!」「*番!」*/
FK3_F02, /*「*番!」「鮮やかっ!」*/
FK3_F03, /*「*番!」「ゲット!」*/
/*宣言どおり*/
FK3_F04, /*「*番、」「宣言通りだー!」*/
FK3_F05, /*「*番」「宣言どーりっ」*/
FK3_F06, /*「宣言通り!命中!」「*番!」*/
FK3_F07, /*「取ったーっ、宣言通り!」「*番!」*/
FK3_F08, /*「宣言通り!」「*番!」*/
FK3_F09, /*「決めたっ、宣言どーりっ」*/
FK3_F10, /*「行った、宣言どーりっ」*/
FK3_F11, /*「宣言通りだー!」*/
FK3_F12, /*「狙った通り!」*/
FK3_F13, /*「とりました、宣言通り!」*/
FK3_F14, /*「どうだ、宣言通り!」*/
FK3_F15, /*「宣言通り!スナイパーだー!」*/
/*記録更新*/
FK3_F16, /*「行ったーっ、ついに記録更新だっ」*/
FK3_F17, /*「決めたーっ、また記録更新だーっ」*/
FK3_F18, /*「行ったーっ、まだ記録を伸ばして行くっ」*/
/*パーフェクト*/
FK3_F19, /*「行ったーーっ、ついにパーーフェクト達成ーーっ」*/
FK3_F20, /*「パーーーーフェクト、ついにパーーーフェクトっ」*/
FK3_F21, /*「最後を決めたーーっ、パーフェクトだーーっ」*/
/*感嘆詞*/
FK4_D00, /*「おおーっ!」*/
FK4_D01, /*「おーっ!」*/
FK4_D02, /*「
0xDECE30#
*/
B(255); B(0); B(0); B(0x30); /* r3, g3, b3, code */
H(1394); H(1404); /* norm1, norm2 */
H(1398); H(633); /* norm3, vert3 */
B(255); B(0); B(0); B(0x30); /* r3, g3, b3, code */
H(1404); H(1398); /* norm1, norm2 */
H(1406); H(635); /* norm3, vert3 */
B(255); B(0); B(0); B(0x30); /* r3, g3, b3, code */
H(1398); H(1406); /* norm1, norm2 */
H(1379); H(33); /* norm3, vert3 */
B(255); B(0); B(0); B(0x30); /* r3, g3, b3, code */
H(
0xDEEC00#
/*「松井秀喜へ」*/
FZ_06P, /*「ラモス瑠偉へ」*/
FZ_06R, /*「大森晃へ」*/
DUM62, /*松坂大輔*/
FZ_06L, /*「秋山幸二へ」*/
FZ_06W, /*「工藤公康へ」*/
FZ_06H2, /*「中山雅史へ」*/
FZ_06B, /*「池谷直樹へ」*/
FZ_06A, /*「ケイン・コスギへ」*/
FZ_06D, /*「古田敦也へ」*/
DUM64, /*武豊*/
DUM65, /*舞の海*/
DUM66, /*うしおくん*/
FZ_06K, /*「金剛くんへ」*/
FZ_06H, /*「ゴン中山へ」*/
FZ_06I, /*「井原正巳へ」*/
/*フルネームへ ハイテンション*/
FZ_07F, /*「松井秀喜へ」*/
FZ_07P, /*「ラモス瑠偉へ」*/
FZ_07R, /*「大森晃へ」*/
DUM72, /*松坂大輔*/
FZ_07L, /*「秋山幸二へ」*/
FZ_07W, /*「工藤公康へ」*/
FZ_07H2, /*「中山雅史へ」*/
FZ_07B, /*「池谷直樹へ」*/
FZ_07A, /*「ケイン・コスギへ」*/
FZ_07D, /*「古田敦也へ」*/
DUM74, /*武豊*/
DUM75, /*舞の海*/
DUM76, /*うしおくん*/
FZ_07K, /*「金剛くんへ」*/
F
0xDF0C00#
uそれではリプレイを見てみましょう」*/
SY_007, /*「リプレイで振り返ってみましょう」*/
};
/*************************************************************
選手名 ものすごくダミー
*************************************************************/
enum {
/*通常テンション*/
SN_00F = (SY_007+1), /*「松井選手」*/
SN_00P, /*「ラモス選手」*/
sDUM01, /*大森*/
sDUM02, /*松坂*/
SN_00L, /*「秋山選手」*/
sDUM03, /*工藤*/
SN_00H, /*「中山選手」*/
SN_00B, /*「池谷選手」*/
SN_00A, /*「ケイン選手」*/
SN_00D, /*「古田選手」*/
sDUM04, /*武*/
sDUM05, /*舞の海*/
sDUM06, /*うしおくん*/
SN_00K, /*「金剛くん」*/
/*ハイテンション*/
SG_NAF, /*「松井」*/
SG_NAP, /*「ラモス」*/
sDUM11, /*大森*/
sDUM12, /*松坂*/
sDUM13, /*秋山*/
sDUM14, /*工藤*/
SG_NAH, /*「中山」*/
SG_NAB, /*「池谷」*/
SG_NAA, /*「ケイン」*/
SG_NAD, /*「古田」*/
sDUM15, /*武*/
sDUM16, /*舞
0xDF45A0#
(-3171, 1468, -2136); /* norm[783] */
SVECTOR( 2562, -3096, -788); /* norm[784] */
SVECTORHK2_D17, /*「これはっ!」*/
HK2_D18, /*「なんとっ!」*/
HK2_D19, /*「およよよよ!」*/
HK2_D20, /*「ぬぉぉぉ!」*/
HK2_D21, /*「なにぃー」*/
HK2_D22, /*「あぁーっ!」*/
HK2_D23, /*「やややややっ!」*/
HK2_D24, /*「おぉーっ!」*/
HK2_D25, /*「おぉー?」*/
HK2_D26, /*「おっ!」*/
HK2_D27, /*「あっとぉ!」*/
HK2_D28, /*「あぁーっと!」*/
};
/*************************************************************
0xDF7200#
ール!」*/
HK2_I17, /*「(選手名)、」「もっと上が狙えそうです!」*/
HK2_I18, /*「(選手名)、」「これは肩慣らしといったところでしょう!」*/
HK2_I19, /*「(選手名)、」「盛り上げてくれました!」*/
HK2_I20, /*「(選手名)、」「これは準備運動といったところでしょう!」*/
};
/*************************************************************
カウント物
*************************************************************/
enum {
/*通常テンション*/
HK2_J01 = (HK2_I20+1), /*「1番」*/
HK2_J02, /*「2番」*/
HK2_J03, /*「3番」*/
HK2_J04, /*「4番」*/
HK2_J05, /*「5番」*/
HK2_J06, /*「6番」*/
HK2_J07, /*「7番」*/
HK2_J08, /*「8番」*/
HK2_J09, /*「9番」*/
/*通常テンション*/
HK2_K01, /*「1番です」*/
HK2_K02, /*「2番です」*/
HK2_K03, /*「3番です」*/
HK2_K04, /*「4番です」*/
HK2_K05, /*「5番です」*/
HK2_K06, /*「6番です」*/
HK2_K07, /*「7番です」*/
HK2_K08, /*「8番です」*/
HK2_K09, /*「9番です」*/
/*通常テンション*/
HK2_L01, /*「1番を」*/
HK2_L02, /*「2番を」*/
HK2_L03, /*「3番を」*/
HK2_L04, /*「4番を」*/
HK2_L05, /*「5番を」*/
HK2_L06, /*「6番を」*/
HK2_L07, /*「7番を」*/
HK2_L08, /*「8番を」*/
HK2_L09, /*「9番を」*/
/*ハイテンション*/
HK2_M01, /*「1番」*/
HK2_M02, /*「2番」*/
HK2_M03, /*「3番」*/
HK2_M04, /*「4番」*/
HK
0xE01A00#
*エンディングオブジェクトモデル miya991010*/
#define LOAD_END_TEX (0x117) /*エンディングオブジェクトテクスチャ miya991010*/
#define LOAD_END_MOTION (0x118) /*エンディングモーション miya991010*/
/*オーバーレイ関数で定義されているテーブルへのオフセット*/
#define OVERLAY_CHILD00 (0x00) /* パンチアウト */
#define OVERLAY_CHILD01 (0x01) /* ナインフープス */
#define OVERLAY_CHILD02 (0x02) /* ビーチフラッグス */
#define OVERLAY_CHILD03 (0x03) /* ガロンスロー */
#define OVERLAY_CHILD04 (0x04) /* バック転50M走 */
#define OVERLAY_CHILD05 (0x05) /* スプレーヒッター */
#define OVERLAY_CHILD06 (0x06) /* ゲームメーカー */
#define OVERLAY_CHILD07 (0x07) /* デットマンズドロップ */
#define OVERLAY_CHILD08 (0x08) /* ロングシュート */
#define OVERLAY_CHILD09 (0x09) /* エンディング */
#define OVERLAY_END (0x09) /* エンディング */
#define OVERLAY_SOUND (0x0a) /* サウンド */
#define OVERLAY_SAFE (0x0b) /* チェック */
#define OVERLAY_M_COMN (0x0c) /* 進行共通 */
#define OVERLAY_MEMCARD (0x0d) /* メモリーカード */
#define OVERLAY_SELECT (0x0e) /* モードセレクト系 */
#define OVERLAY_RANKING (0x0f) /* ランキング系 */
#define OVERLAY_MOVIE (0x10) /* ムービー */
/*CD上の絶対位置とデータサイズの定義*/
#define CD_DUMMY_POS 0
#define CD_DUMMY_SZ 0
#define CD_DATA11 800 /*プログラムのCD位置 data11.bin*/
#define CD_DATA00 2400 /*キャラモデルCD位置 data00.bin*/
#define CD_DATA01 3500 /*モーションCD位置 data01.bin*/
#define
0xE11600#
_TE,
L_TE,
R_TE2,
L_TE2,
L_TE3,
R_MONO1,
R_MONO2,
R_MONO3,
R_MONO4,
R_ROPE,
R_ROPE2,
#endif
};
/*キャラパーツ(新)CLASS_Wのobj3D_w[]へのオフセット*/
#define PARTS_BODY 0 /*本体*/
#define PARTS_HEAD 1 /*頭*/
#define PARTS_RHAND 2 /*右手パー*/
#define PARTS_LHAND 3 /*左手パー*/
#define PARTS_RHAND2 4 /*右手グー*/
#define PARTS_LHAND2 5 /*左手グー*/
#define PARTS_HUM1 6 /*ハンマー1*/
#define PARTS_HUM2 7 /*ハンマー2*/
#define PARTS_HUM3 8 /*ハン