the cutting room mirror

MR 10 V.BIN

This article has a talk page!
view on tcrf.net

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       /*ハン