the cutting room mirror

MR CMN2.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!.

0x4E8600#

   BLOOD_O,                    //2 O型
    BLOOD_AB,                   //3 AB型
};

利き手、利き足:
enum {
    RIGHT_HANDED = 0,   //0 右利き
    LEFT_HANDED,            //1 左利き
};

競技:lt_sys.hで競技#を定義
enum {
    GM_PANCH = 0,           //0 パンチアウト
    GM_9FOOPS,              //1 9フープス
    GM_BEACH,                   //2 ビーチフラッグス
    GM_GALLON,              //3 ガロンスロー
    GM_BACK50,              //4 バック転50m走
    GM_SPRAY,                   //5 スプレイヒッター
    GM_G_MAKER,             //6 ゲームメーカー
    GM_DEADMAN,             //7 デッドマンズドロップ
    GM_L_SHOOT,             //8 ロングシュート
};

0x4F0E00#

 )<<1)
                + ( (*(pt2 + 0) & 0x8 )>>3 ) + ( (*(pt2 + 1) & 0x10)>>2 )
                + ( (*(pt2 + 6) & 0x2 )<<2 ) + ( (*(pt2 + 5) & 0x1 )<<5 );
    temp[ 5 ] = (( *(pt2 + 5) & 0x7e )>>1);
    temp[ 6 ] = (( *(pt2 + 6) & 0x7c )>>1) + ( *(pt2 + 6)&0x1 );
    temp[ 7 ] = (( *(pt2 + 7) & 0x78 )>>1) + ( *(pt2 + 7)&0x3 );
    temp[ 8 ] = (( *(pt2 + 8) & 0x8 )<<1) + ( *(pt2 + 8)&0x7 ) +
                ( (*(pt2 + 3)&0x20 ) >> 2 ) + ( (*(pt2 + 9) & 0x40)>>1);
    temp[ 9 ] =( *(pt2 + 9) & 0x3f );

#endif

// さあここから
    *(pt2 + 0) = rand(

0x502600#

------------------------------------*/
/*  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     i, sp;

0x50AA00#

xf0+i+1;
    }

    /* リプレイデータ(データなし) */
    SWK.rp[0] = SWK.rp[1] = SWK.rp[2] = SWK.rp[3] = 0;

    for( i=0; i<64; i++ )   SWK.g_flg[i] = 0;
    for( i=0; i<10; i++ )   SWK.sv_res[i] = 0;

#if 0
    {
        u_char *dat, *p = (u_char *)&s->OptDat;
        for( i=1; i<29; i++ ) {
            dat = &p[128*i];
            memset( dat, i, 128 );
        }
    }
#endif
}



/*------------------------------------------------------------------*/
/*                          共用並列処理用タスク                                                                      */
/*------------------------------------------------------------------*/
/*                                                                                                                                  */
/*------------------------------------------------------------------*/
/*----------------------------*/
/*  BG アニメーション                              */
/*----------------------------*/
#define BG_MOVE_X   (2)
#define BG_MOVE_Y   (2)
#define BG_ANIME    (3)

static u_short bg_spd;

static int m_BGAction0( void )
{
    sp_w;
    sys_w;
    CLASS0_W *spr;
    SPD_W    *spd;
    u_char   *wk;
    short    *wk2;
    u_char   i, n;

    n = ( sp->inter_mode == INT_VSYNC ) ? 1 : 2 ;

    for( i=0; i<n; i++ )
    {
        spr = &s->classw0[BG_2];            /* 縦移動BG        */
        spr->yposi -= BG_MOVE_Y;
        if( spr->yposi < -768 )
                spr->yposi = 0;

        spr = &s->classw0[BG_3];            /* 横移動BG        */
        spr->xposi -= BG_MOVE_X;
        if( spr->xposi < -768 )
                spr->xposi = 0;

        wk  = (u_char  *)&m_spw[EFF0];
        wk[0] ++;
        if( wk[0] > BG_ANIME )
        {
            wk[0] = 0;
            wk[1] ++;
            if( wk[1] >= 6 )
                wk[1] = 0;

                                                                    /* アニメーションBG    */
            spd = (SPD_W *)GetSpdN( bg_spd+wk[1] );
            s->classw0[EF

0x50EC00#

;
    u_char i, nn, *area;

    if( no == 0xff ) {
        no = 0;
        nn = 8;
    } else {
        nn = no+1;
    }

    for(; no<nn; no++ )
    {
        area = (tbl == 0) ? &SWK.Nedit[no][1] : &SWK.Medit[no][1];

        if( (tbl == 0)?SWK.Nedit[no][0]:SWK.Medit[no][0] )
        {
            for( i=0; i<NAME_LENG; i++ )
            {
                if( type ) {                            /* 設定 */
                    c_name[14+no][i] = area[i];
                } else {                                    /* 取得 */
                    area[i] = c_name[14+no][i];
                }
            }
        }
        else
        {
            if( type ) {                                /* 設定 */
                memcpy( c_name[14+no], ed_name, 8 );
                c_name[14+no][5] = 0xf0 + 1 + no;
            } else {
                for( i=0; i<NAME_LENG; i++ )
                    area[i] = c_name[14+no][i];
            }
        }
    }
}

/*==============================================================================*/
/*  エディットキャラ名を予約エリアへ転送                                                 */
/*==============================================================================*/
static Uchar EDNAM1[7] = { 0x3d,0x4d,0x5d,0x6d,0x7d,0x4e,0x5e };    /*  エディット1名前専用 */
//static Uchar EDNAM2[7] = { 0x6e,0x7e,0x3f,0x4f

0x51BE00#

リトライ要求があるまで何もしないでウェイト  */
    /*--------------------------------------------------------------------------*/

    return( MesType );
};


/*------------------------------------------------------------------------------*/
/*  使用ブロック数算出                                                              */
/*------------------------------------------------------------------------------*/
/*  パラメータ                                                                      */
/*      fcnt    :   検索ファイル数                                                 */
/*      dinfo   :   カードディレクトリ情報                                               */
/*-----------------------------------------

0x53A400#

5 ) ) ||
                    ( NowMoj == 2 && ( curpos == 0xd4 || curpos == 0xe4 ) ) )
            {
                m_SprClr(CUR1 );
                m_SprClr(UNDER);
                op_step++;
                mvcnt = 0;
                /* 保存エリアに入力名セット */
                for( i=0; i<8; i++ )
                    svNAME[i] = spd[i].u | (spd[i].v >> 4);

/* AF_RMC-M_01 */
                /* ??? */
                /*------------------------------*/
                taOK = maOK = hiOK = kgOK = 0;
                for( i=0; i<8; i++ ) {
                    if( svNAME[i] == exTA[i] ) {
                        taOK |= 1<<i;
                    }
                    if( svNAME[i] == exMA[i] ) {
                        maOK |= 1<<i;
                    }
                    if( svNAME[i] == exHI[i] ) {
                        hiOK |= 1<<i;
                    }
                    if( svNAME[i] == exKG[i] ) {
                        kgOK |= 1<<i;
                    }
                }
                if( taOK == 0xff ) {
                    SWK.TBS |= 0x0400;
                    SD_call( SD_GATE );
                } else
                if( maOK == 0xff ) {
                    SWK.TBS |= 0x0800;
                    SD_call( SD_GATE );
                } else
                if( hiOK == 0xff ) {
                    SWK.TBS |= 0x1000;
                    SD_call( SD_GATE );
                } else
                if( kgOK == 0xff ) {
                    SWK.TBS |= 0x2000;
                    SD_call( SD_GATE );
                }
                else 

0x542A00#

 },
                {  6,  6,  7,  6,  5,  4,  4,  3,  3 },
                {  5,  5,  6,  5,  4,  3,  3,  2,  2 },
                {  6,  6,  7,  6,  5,  4,  4,  3,  3 },
                {  5,  5,  6,  5,  4,  3,  3,  2,  2 },
                {  4,  4,  5,  4,  3,  2,  2,  1,  1 },
};

static u_char t_GM[9][9] = {    /* ゲームメーカー : 体型 & 年齢   */
                {  5,  6,  6,  5,  4,  4,  3,  2,  2 },
                {  6,  7,  7,  6,  5,  4,  4,  3,  3 },
                {  3,  4,  4,  3,  3,  2,  2,  1,  1 },
                {  5,  6,  6,  5,  4,  4,  2,  2,  2 },
                {  6,  7,  7,  6,  5,  4,  4,  3,  3 },
                {  3,  3,  3,  2,  2,  2,  1,  1,  1 },
                {  5,  6,  6,  7,  6,  6,  4,  3,  2 },
                {  6,  7,  7,  8,  7,  6,  6,  4,  3 },
                {  2,  2,  2,  1,  1,  1,  1,  0,  0 },
};

static u_char t_DD[10] =            /* デッドマン  : 体型 & 年齢   */
                {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9 };

static u_char t_LS[9][9] = {    /* ロングシュート : 体型 & 年齢   */
                {  5,  6,  6,  5,  4,  4,  3,  2,  2 },
                {  6,  7,  7,  6,  5,  4,  4,  3,  3 },
                {  3,  4,  4,  3,  3,  2,  2,  1,  1 },
                {  5,  6,  6,  5,  4,  4,  2,  2,  2 },
                {  6,  7,  7,  6,  5,  4,  4,  3,  3 },
                {  3,  3,  3,  2,  2,  2,  1,  1,  1 },
                {  5,  6,  6,  7,  6,  6,  4,  3,  2 },
                {  6,  7,  7,  8,  7,  6,  6,  4,  3 },
                {  2,  2,  2,  1,  1,  1,  1,  0,  0 },
};

                                /*  2点間のランダム数値を取得するマクロ */
#define     BETRND(a,b)     ( a + ( rand() % (b-a+1) ) )

static u_char t_HT[3][2] = {        /*  身長  : 体型(SML)   */
                { 160, 169 },
                { 170, 179 },
                { 180, 189 },
};

static u_char t_WT[30][3][2] = {    /*

0x54A200#

029,0xfff4,0x03},
    {DAT,0x10,0x10,0xe0,0x60,0x0036,0xfff4,0x03},
    {END,0x10,0x10,0x90,0x50,0x0043,0xfff4,0x03},
    {DAT,0x10,0x10,0xb0,0x60,0x001c,0xfff4,0x03},       // モノラル
    {DAT,0x10,0x10,0x80,0x60,0x0029,0xfff4,0x03},
    {DAT,0x10,0x10,0xd0,0x60,0x0036,0xfff4,0x03},
    {END,0x10,0x10,0xf0,0x60,0x0043,0xfff4,0x03},
};
SPD_W   op_stup4s_spd[]={
    {DAT,0x10,0x10,0xd0,0x80,0x0029,0x0008,0x03},       // みる   COM競技
    {END,0x10,0x10,0xf0,0x80,0x0036,0x0008,0x03},
    {DAT,0x10,0x10,0xd0,0x80,0x0024,0x0008,0x03},       // みない
    {DAT,0x10,0x10,0xa0,0x80,0x0031,0x0008,0x03},
    {END,0x10,0x10,0xf0,0x70,0x003e,0x0008,0x03},
};
SPD_W   op_stup5s_spd[]={
    {DAT,0x10,0x10,0xe0,0x30,0x001d,0x001c,0x03},       // 振動ON  コントローラ1
    {DAT,0x10,0x10,0xf0,0x30,0x002b,0x001c,0x03},
    {DAT,0x10,0x10,0xb0,0x90,0x0039,0x001c,0x03},
    {END,0x10,0x10,0xc0,0x90,0x0045,0x001c,0x03},
    {DAT,0x10,0x10,0xe0,0x30,0x0018,0x001c,0x03},       // 振動OFF
    {DAT,0x10,0x10,0xf0,0x30,0x0026,0x001c,0x03},
    {DAT,0x10,0x10,0xb0,0x90,0x0034,0x001c,0x03},
    {DAT,0x10,0x10,0xd0,0x90,0x0040,0x001c,0x03},
    {END,0x10,0x10,0xd0,0x90,0x004c,0x001c,0x03},
};
SPD_W   op_stup6s_spd[]={
    {DAT,0x10,0x10,0xe0,0x30,0x001d,0x0030,0x03},       // 振動ON  コントローラ2
    {DAT,0x10,0x10,0xf0,0x30,0x002b,0x0030,0x03},
    {DAT,0x10,0x10,0xb0,0x90,0x0039,0x0030,0x03},
    {END,0x10,0x10,0xc0,0x90,0x0045,0x0030,0x03},
    {DAT,0x10,0x10,0xe0,0x30,0x0018,0x0030,0x03},       // 振動OFF
    {DAT,0x10,0x10,0xf0,0x30,0x0026,0x0030,0x03},
    {DAT,0x10,0x10,0xb0,0x90,0x0034,0x0030,0x03},
    {DAT,0x10,0x10,0xd0,0x90,0x004

0x54FC00#

,0x70,0x003f,0xffd5,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0033,0xffe6,0x05},       //   3段目
    {DAT,0x10,0x10,0x00,0x80,0x0041,0xffe6,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x004a,0xffe6,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0053,0xffe6,0x05},
    {DAT,0x10,0x10,0x30,0x70,0x003f,0xffe6,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0033,0xfff7,0x05},       //   4段目
    {DAT,0x10,0x10,0x00,0x80,0x0041,0xfff7,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x004a,0xfff7,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0053,0xfff7,0x05},
    {DAT,0x10,0x10,0x30,0x70,0x003f,0xfff7,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0033,0x0008,0x05},       //   5段目
    {DAT,0x10,0x10,0x00,0x80,0x0041,0x0008,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x004a,0x0008,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0053,0x0008,0x05},
    {DAT,0x10,0x10,0x30,0x70,0x003f,0x0008,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0033,0x0019,0x05},       //   6段目
    {DAT,0x10,0x10,0x00,0x80,0x0041,0x0019,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x004a,0x0019,0x05},
    {DAT,0x10,0x10,0x00,0x80,0x0053,0x0019,0x05},
    {DAT,0x10,0x10,0x30,0x70,0x003f

0x555600#

8,0x08,0xb8,0xc0,0x0035,0xfff3,0x04},
    {END,0x40,0x08,0x80,0xc8,0x004d,0xfff3,0x04},
};
SPD_W   zan_poi_spd[]={         /* 残りポイント ポイント */
    {DAT,0x10,0x10,0x00,0xf0,0x0035,0xffcd,0x32},       /* 二桁(十)    */
    {DAT,0x10,0x10,0x00,0xf0,0x003f,0xffcd,0x32},       /* 二桁(一)    */
    {END,0x10,0x10,0x00,0xf0,0x003a,0xffcd,0x32},       /* 一桁           */
};

SPD_W   point_ya_spd[]={        /* 矢印 */
    {DAT,0x10,0x10,0x80,0xa0,0xffd6,0xffc2,0x76},       /* 通常  +11  */
    {END,0x10,0x10,0x80,0xb0,0x000a,0xffc2,0x76},       /* 2・3間 +15 */
};


SPD_

0x55A400#

,0x003a,0x2a},
    {DAT,0x10,0x10,0x40,0x20,0xff92,0x003a,0x2a},
    {DAT,0x10,0x10,0x80,0x20,0xffa0,0x003a,0x2a},
    {DAT,0x10,0x10,0x50,0x40,0xffae,0x003a,0x2a},
    {DAT,0x10,0x10,0x40,0x40,0xffd8,0x003a,0x2a},
    {DAT,0x10,0x10,0x10,0x40,0xfff4,0x003a,0x2a},
    {DAT,0x10,0x10,0x90,0x00,0x0002,0x003a,0x2a},
    {DAT,0x10,0x10,0x80,0x20,0xff84,0x0048,0x2a},
    {END,0x10,0x10,0x70,0x20,0xff92,0x0048,0x2a},
    {DAT,0x10,0x10,0x00,0xa0,0xff76,0x002c,0x2a},
    {DAT,0x10,0x10,0x60,0x30,0xff84,0x002c,0x2a},
    {DAT,0x10,0x10,0x40,0x40,0xff92,0x002c,0x2a},
    {DAT,0x10,0x10,0x50,0x40,0xffa0,0x002c,0x2a},
    {DAT,0x10,0x10,0x40,0xa0,0xffbc,0x002c,0x2a},
    {DAT,0x10,0x10,0x90,0x40,0xff84,0x003a,0x2a},
    {DAT,0x10,0x10,0x80,0x70,0xffbc,0x003a,0x2a},
    {DAT,0x10,0x10,0x20,0x50,0xffca,0x003a,0x2a},
    {DAT,0x10,0x10,0x30,0x50,0xffe6,0x003a,0x2a},
    {DAT,0x10,0x10,0x90,0x50,0xff76,0x0048,0x2a},
    {DAT,0x10,0x10,0x80,0x40,0xffa0,0x0048,0x2a},
    {END,0x10,0x00,0x00,0xf0,0xff66,0x003a,0x2a},   // 1/2 表示消去
    {DAT,0x10,0x10,0x10,0x40,0xff92

0x55EA00#

x10,0x10,0x10,0x60,0xff84,0x0048,0x2a},
    {END,0x10,0x10,0xc0,0x80,0xff92,0x0048,0x2a},
    {DAT,0x10,0x10,0xe0,0x40,0xff92,0x002c,0x2a},
    {DAT,0x10,0x10,0x10,0x20,0xffae,0x002c,0x2a},
    {DAT,0x10,0x10,0x20,0x20,0xffbc,0x002c,0x2a},
    {DAT,0x10,0x10,0x30,0x20,0xffe6,0x002c,0x2a},
    {DAT,0x10,0x10,0x90,0x40,0xff76,0x003a,0x2a},
    {DAT,0x10,0x10,0x40,0x20,0xff84,0x003a,0x2a},
    {DAT,0x10,0x10,0x50,0x20,0xff92,0x003a,0x2a},
    {DAT,0x10,0x10,0xe0,0x40,0xffca,0x003a,0x2a},
    {DAT,0x10,0x10,0x80,0x40,0xffa0,0x0048,0x2a},
    {END,0x10,0x00,0x00,0xf0,0xff66,0x003a,0x2a},   // 1/2 表示消去
    {DAT,0x10,0x10,0x00,0x30,0xff76,0x002c,0x2a},       // 古田 2/2
    {DAT,0x10,0x10,0xa0,0x00,0xff84,0x002c,0x2a},
    {DAT,0x10,0x10,0x10,0x20,0xff92,0x002c,0x2a},
    {DAT,0x10,0x10,0x00,0x50,0xffe6,0x002c,0x2a},
    {DAT,0x10,0x10,0x00,0x00,0xfff4,0x002c,0x2a},
    {DAT,0x10,0x10,0x60,0x20,0x0002,0x002c,0x2a},
    {DAT,0x10,0x10,0x10,0x40,0xffbc,0x003a,0x2a},
    {DAT,0x10,0x10,0x90,0x00,0xffd8,0x003a,0x2a},
    {DAT,0x10,0x10,0x80,0x20,0xfff4,0x003a,0x2a},
    {DAT,0x10,0x10,0x30,0x30,0x0002,0x003a,0x2a},
    {DAT,0x10,0x10,0x10,0x00,0xff76,0x0048,0x2a},
    {END,0x10,0x10,0x70,0x20,0xff84,0x0048,0x2a},
    {DAT,0x10,0x10,0x90,0x40,0xffa0,0x002c,0x2a},
    {DAT,0x10,0x10,0x60,0x20,0xffae,0x002c,0x2a},
    {DAT,0x10,0x10,0x70,0x20,0xffbc,0x002c,0x2a},
    {DAT,0x10,0x10,0x00,0x30,0xffca,0x002c,0x2a},
    {DAT,0x10,0x10,0x20,0x00,0xffd8,0x002c,0x2a},
    {DAT,0x10,0x10,0x90,0x40,0xff76,0x003a,0x2a},
    {DAT,0x10,0x10,0x10,0x30,0xff84,0x003a,0x2a},
    {DAT,0x10,0x10,0x20,0x30,

0x569200#

 競技後セレクト       */
static int task_gamesel( void );                            /*  3: 競技セレクト               */
static int task_gamernk( void );                            /*  4: 競技ランキング         */
static int task_playrnk( void );                            /*  5: プレイヤー成績         */
static int task_rnk_sv ( void );                            /*  6: ランキング セーブ      */

static int ( *rnk_task[] )() = {
        task_total  ,       /*  0: 総合ランキング                 */
        task_rnksel ,       /*  1: 競技後セレクト                  */
        task_rnksel ,       /*  2: 競技後セレクト2             */
        task_gamesel,       /*  3: 競技セレクト                       */
        task_gamernk,       /*  4: 競技ランキング                 */
        task_playrnk,       /*  5: プレイヤー成績                 */
        task_rnk_sv ,       /*  6: セーブデータ選択               */

        task_rnk_sv ,       /*  7: ダミー                             */
};



/*----   global   ------------*/

extern char   SD_status[];
extern short  buru_tbl[];               /* BG(手前)「ぶるっ!」 */
extern short  updn_tbl[];               /* BG(奥)  「ぶるっ!」    */
extern u_long m_spw[];
extern Uchar BGM_wtim;  /* BGM鳴り出し待ちウェイトタイマー切り替え監視 */

extern u_char MR_JUN[];                 /* マッスルランキング競技順テーブル */

extern M_WORK mw;

u_char r_sav[8];                    /* カーソル位置の保存                    */
u_char NowStsR;                     /* 状態ステータス                          */
u_char OldStsR;                     /* 状態ステータス                          */
u_char NewStsR;                     /* 状態ステータス                          */
u_char r_sv_rank;                   /* ランキング情報(順位)セーブ用    */


/*  メモリーカード処理用 */
extern short ofsT[];
extern long  sizT[];
extern MESS mess[];
static u_char tno, msg, next;


/*------------------------------------------------------------------*/
/*                          function                                                                                        */
/*-------------------------------------------------------

0x578C00#

0,0x40,0xe0,0x0031,0xff9c,0x1f},
};


/*--------------------------------------------*/
/*      モードセレクト 奥                              bg2.opd             */
/*--------------------------------------------*/
SPD_W   r_bg_d_spd[]={      //  BG D
    {DAT,0x40,0x40,0x00,0x00,0xff60,0xffd0,0x0f},
    {DAT,0x40,0x40,0x00,0x40,0xff60,0x0010,0x0f},
    {DAT,0x40,0x40,0x40,0x00,0xffa0,0xffd0,0x0f},
    {DAT,0x40,0x40,0x40,0x40,0xffa0,0x0010,0x0f},
    {DAT,0x40,0x40,0x80,0x00,0xffe0,0xffd0,0x0f},
    {DAT,0x40,0x40,0x80,0x40,0xffe0,0x0010,0x0f},
    {DAT,0x40,0x40,0xc0,0x00,0x0020,0xffd0,0x0f},
    {DAT,0x40,0x40,0xc0,0x40,0x0020,0x0010,0x0f},
    {DAT,0x40,0x40,0x00,0x80,0x0060,0xffd0,0x0f},
    {END,0x40,0x40,0x00,0xc0,0x0060,0x0010,0x0f},
};

SPD_W   r_bg_d_b1_spd[]={   //  マッスル文字 縦
    {DAT,0x28,0x40,0xd8,0x80,0xff70,0x0078,0x0e},
    {DAT,0x28,0x40,0xd8,0xc0,0xff70,0x00b8,0x0e},
    {DAT,0x28,0x38,0xb0,0x80,0xff70,0x00f8,0x0e},
    {DAT,0x28,0x40,0x88,0x80,0xff70,0x0138,0x0e},
    {DAT,0x28,0x40,0x88,0xc0,0xff70,0x0178,0x0e},
    {DAT,0x28,0x48,0xb0,0xb8,0xff70,0x01b8,0x0e},

0x586A00#

------------------------------*/
/*      セーブデータ                                                                */
/*--------------------------------------------*/
SPD_W   rnk_sv_dt_spd[]={   //  データパラメータ
    {DAT,0x08,0x08,0x80,0x20,0xff91,0xfff4,0x2a},       // 0 ALL BATTLES
    {DAT,0x08,0x08,0xd0,0x00,0xff99,0xfff4,0x2a},
    {DAT,0x08,0x08,0xd0,0x00,0xffa1,0xfff4,0x2a},
    {DAT,0x08,0x08,0x88,0x20,0xffad,0xfff4,0x2a},
    {DAT,0x08,0x08,0x80,0x20,0xffb6,0xfff4,0x2a},
    {DAT,0x08,0x08,0xa8,0x28,0xffbe,0xfff4,0x2a},
    {DAT,0x08,0x08,0xa8,0x28,0xffc6,0xfff4,0x2a},
    {DAT,0x08,0x08,0xd0,0x00,0xffce,0xfff4,0x2a},
    {DAT,0x08,0x08,0xa0,0x20,0xffd6,0xfff4,0x2a},
    {DAT,0x08,0x08,0xa0,0x28,0xffde,0xfff4,0x2a},
    {DAT,0x10,0x10,0x90,0x00,0x0002,0xffe4,0x2a},       // 10 ○競技終了
    {DAT,0x38,0x10,0x80,0x30,0x0010,0xffe4,0x2a},
    {DAT,0x10,0x10,0x90,0x00,0x0052,0xffe4,0x2a},       // 12 ○位
    {DAT,0x10,0x10,0xc8,0x30,0x0060,0xffe4,0x2a},
    {DAT,0x28,0x10,0xd8,0x00,0x0002,0xfff0,0x2a},       // 14 よわい ふつう つよい
    {DAT,0x10,0x10,0x80,0x00,0x003b,0xfff0,0x2a},       // 15 ポイント 千百十一
    {DAT,0x10,0x10,0x80,0x00,0x0047,0xfff0,0x2a},
    {DAT,0x10,0x10,0x80,0x00,0x0050,0xfff0,0x2a},
    {DAT,0x10,0x10,0x80,0x00,0x0059,0xfff0,0x2a},
    {DAT,0x08,0x10,0xd0,0x20,0x0045,0xfff0,0x2a},       // 19           コンマ
    {END,0x10,0x10,0xb8,0x30,0x0062,0xfff0,0x2a},       // 20           P
};
SPD_W   rnk_sv_nm_spd[]={   //  名前
    {DAT,0x10,0x10,0x80,0x00,0xff8e,0xffe4,0x2a},
    {DAT,0x10,0x10,0x80,0x00,0xff9c,0xffe4,0x2a},
    {DAT,0x10,0x10,0x80,0x00,0xffaa,0xffe4,0x2a},
    {DAT,0x10,0x10,0x80,0x00,0xffb8,0xffe4,0x2a},
    {DAT,0x10,0x10,0x80

0x596400#

; i++ ) {
                if( i== 0 ) {
                    srand( STIMER );
                }
                switch( n ) {
                case 0: SWK.ri[i].PO = (rand() % 10);
                                SWK.ri[i].Point[n] = SWK.ri[i].PO * 10;
                                break;
                case 1: SWK.ri[i].NH = (rand() % 10);
                                SWK.ri[i].Point[n] = SWK.ri[i].NH * 10;
                                break;
                case 2: SWK.ri[i].BF = 0;
                                SWK.ri[i].Point[n] = 0;
                                break;
                case 3: SWK.ri[i].GT = (rand() % 1000);
                                SWK.ri[i].Point[n] = SWK.ri[i].GT / 100;
                                break;
                case 4: SWK.ri[i].BA = (rand() % 10000);
                                SWK.ri[i].Point[n] = SWK.ri[i].BA / 1000;
                                break;
                case 5: SWK.ri[i].SH = (rand() % 10);
                                SWK.ri[i].Point[n] = SWK.ri[i].SH * 10;
                                break;
                case 6: SWK.ri[i].GM = (rand() % 10);
                                SWK.ri[i].Point[n] = SWK.ri[i].GM * 10;
                                break;
                case 8: SWK.ri[i].LS = (rand() % 10);
                                SWK.ri[i].Point[n] = SWK.ri[i].LS * 10;
                                break;
                default:break;
                }
            }
            switch( n ) {
            case 2:
                SWK.ri[1].BF = 3;   SWK.ri[1].Point[

0x5A2600#

, CHARA_SELECT, CHARA_SELECT , CHARA_SELECT, CHARA_SELECT, CHARA_SELECT };
static u_char next_mode12 [] = { OPTION_SETUP  , OPTION_INST  , OPTION_PROF , OPTION_GALL  };
static u_char next_mode13 [] = { END, END, END , END, END, END, END-1 };
static u_char next_mode18 [] = { EDIT_WORK     , EDIT_WORK    , EDIT_WORK    };

static u_char next_mode_d1[] = { END  , END  , END  , END  , END  , END  , END  , END  , END  , END  , END  , END  , END  , END   };
static u_char next_mode_d2[] = { END-1, END-1, END

0x5AFC00#

0,0x002d,0x006a,0xff76,0xffb3,0xfff0,0x002d,0x006c,
};
static short  no_posX2[] = {                /* 二桁 一の位 */
    0xff79,0xffb5,0xfff2,0x002f,0x006c,0xff78,0xffb5,0xfff2,0x002f,0x006d,
};
static u_char no_posUV[][2] = {         /* 数値UV座標  */
    { 0x48, 0xb8 },
    { 0x70, 0xa0 },
    { 0x78, 0xa0 },
    { 0x38, 0xb0 },
    { 0x40, 0xb0 },
    { 0x48, 0xb0 },
    { 0x70, 0xa8 },
    { 0x78, 0xa8 },
    { 0x38, 0xb8 },
    { 0x40, 0xb8 },
};

static void set_card_no( u_char cno, u_char num )
{
    sys_w;
    SPD_W  *spd;
    u_char idx;
    spd = s->classw0[cno].chara;

    idx = num/10;
    spd[0].u = no_posUV[idx][0];    /* 十の位 */
    spd[0].v = no_posUV[idx][1];
    spd[0].ysize = ( num < 10 ) ? 0x00 : 0x08;

    idx = num%10;
    spd[1].u = no_posUV[idx][0];    /* 一の位 */
    spd[1].v = no_posUV[idx][1];
    spd[1].offset_x = ( num < 10 ) ?
                            no_posX1[idx-1] : no_posX2[idx-1];
}

/*----------------------------*/
/*  スプライトスケールコピー (c0←c1)      */
/*----------------------------*/
static void set_spr_scale( u_char c0, u_char c1 )
{
    sys_w;

0x5C2E00#

       // ナインフープス
    {DAT,0x10,0x10,0x90,0xb0,0xff72,0x0004,0x03},
    {DAT,0x10,0x10,0xb0,0xd0,0xff7e,0x0004,0x03},
    {DAT,0x10,0x10,0xc0,0xc0,0xff8a,0x0004,0x03},
    {DAT,0x10,0x10,0x90,0xf0,0xff96,0x0004,0x03},
    {DAT,0x10,0x10,0xe0,0xe0,0xffa2,0x0004,0x03},
    {DAT,0x10,0x10,0xe0,0xb0,0xffae,0x0004,0x03},
    {DAT,0x10,0x10,0x50,0x30,0xff65,0x000e,0x2b},       // 9HOOPS
    {DAT,0x10,0x10,0x70,0x00,0xff6f,0x000e,0x2b},
    {DAT,0x10,0x10,0x60,0x10,0xff78,0x000e,0x2b},
    {DAT,0x10,0x10,0x60,0x10,0xff81,0x000e,0x2b},
    {DAT,

0x5CCA00#

x0018,0x28},
    {DAT,0x08,0x08,0xf0,0x78,0xfffc,0x0018,0x28},
    {END,0x08,0x08,0xf8,0x78,0x0004,0x0018,0x28},
};

/*  ↑バ  ジョンを    んで  さい          */
/*  ↓   ー               選       下                   */
SPD_W   font03_1_spd[]={
    {DAT,0x10,0x10,0xa0,0x70,0xff68,0xffc2,0x04},       // フォント(tp:06)
    {DAT,0x10,0x10,0x60,0xb0,0xff84,0xffc2,0x04},
    {DAT,0x10,0x10,0xc0,0xa0,0xff92,0xffc2,0x04},
    {DAT,0x10,0x10,0x90,0x90,0xffa0,0xffc2,0x04},
    {DAT,0x10,0x10,0x70,0x30,0xffae,0xffc2,0x04},
    {DAT,0x10,0x10,0x90,0x30,0xffcc,0xffc2,0x04},
    {DAT,0x10,0x10,0xd0,0x00,0xffda,0xffc2,0x04},
    {DAT,0x10,0x10,0x00,0x20,0xfff8,0xffc2,0x04},
    {END,0x10,0x10,0x10,0x00,0x0006,0xffc2,0x04},
};
SPD_W   font03_2_spd[]={
    {DAT,0x10,0x10,0x40,0x70,0xff76,0xffc2,0x04},       // フォント(tp:07)
    {DAT,0x10,0x10,0x20,0x00,0xffbd,0xffc2,0x04},
    {END,0x10,0x10,0x30,0x00,0xffe9,0xffc2,0x04},
};

/*  ↑  でよろしいですか                 */
/*  ↑    はい   いいえ                           */
/*  ↓以上        ?                */
SPD_W   font06_1_spd[]={
    {DAT,0x10,0x10,0xd0,0x00,0xffd0,0xffc8,0x2a},       // フォント(tp:06)
    {DAT,0x10,0x10,0x90,0x10,0xffde,0xffc8,0x2a},
    {DAT,0x10,0x10,0x90,0x20,0xffec,0xffc8,0x2a},
    {DAT,0x10,0x10,0x10,0x20,0xfffa,0xffc8,0x2a},
    {DAT,0x10,0x10,0x10,0x00,0x0008,0xffc8,0x2a},
    {DAT,0x10,0x10,0xd0,0x00,0x0016,0xffc8,0x2a},
    {DAT,0x10,0x10,0x20,0x20,0x0024,0xffc8,0x2a},
    {DAT,0x10,0x10,0x00,0x10,0x0032,0xffc8,0x2a},

    {DAT,0x10,0x10,0x00,0x50,0xffd0,0xffe0,0x2a},
    {DAT,0x10,0x10,0x10,0x00,0xffdf,0xffe0,0x2a},
    {DAT,0x10,0x10,0x10,0x00,0x0002,0xffe0,0x2a},
    {DAT,0x10,0x10,0x10,

0x5D4200#

d  ,       /* 0x302f           ガロンスロー                     */
        (Ulong)game_04_spd  ,       /* 0x3030           バック転50M走               */
        (Ulong)game_05_spd  ,       /* 0x3031           スプレーヒッター                   */
        (Ulong)game_06_spd  ,       /* 0x3032           ゲームメーカー                    */
        (Ulong)game_07_spd  ,       /* 0x3033           デットマンズドロップ      */
        (Ulong)game_08_spd  ,       /* 0x3034           ロングシュート                    */

        (Ulong)c_game_spd   ,       /* 0x3035           カーソル選択時             */
        (Ulong)h_game_spd   ,       /* 0x3036           カーソル非選択時            */

    /*--------------------*/
    /*  ゲームセレクト(イメージ)     */
    /*--------------------*/
        (Ulong)gimg_00_spd  ,       /* 0x3037           パンチアウト                     */
        (Ulong)gimg_01_spd  ,       /* 0x3038           ナインフープス                    */
        (Ulong)gimg_02_spd  ,       /* 0x3039           ビーチフラッグス              */
        (Ulong)gimg_03_spd  ,       /* 0x303a           ガロンスロー                     */
        (Ulong)gimg_04_spd  ,       /* 0x303b           バック転50M走               */
        (Ulong)gimg_05_spd  ,       /* 0x303c           スプレーヒッター                   */
        (Ulong)gimg_06_spd  ,       /* 0x303d           ゲームメーカー                    */
        (Ulong)gimg_07_spd  ,       /* 0x303e           デットマンズドロップ      */
        (Ulong)gimg_08_spd  ,       /* 0x303f           ロングシュート                    */

    /*--------------------*/
    /* バージョン選択(MS_V1) */
    /*--------------------*/
        (Ulong)t_versel1_spd,       /* 0x3040       VERSION SELECT(TTL) */
        (Ulong)t_versel2_spd,       /* 0x3041       バージョンの選択  (TTL)   */

        (Ulong)ver_po0_spd  ,       /* 0x3042           パンチアウト                     */
        (Ulong)ver_po1_spd  ,       /* 0x3043               Ⅰ                           */
        (Ulong)ver_po2_spd  ,       /* 0x3044               Ⅱ                           */
        (Ulong)ver_po3_spd  ,       /* 0x3045               Ⅲ                           */
        (Ulong)c_verpo_spd  ,       /* 0x3046           カーソル選択時             */
        (Ulong)h_verpo_spd  ,       /* 0x3047           カーソル非選

0x5FAA00#

,0x01},
    {END,0x10,0x10,0x40,0x60,0x0045,0x0008-20,0x01},
};
/* カーソル OK */
SPD_W   _wc_ok07_spd[]={
    /* 構成数統一(カーソル移動用)のため2つ同内容 */
    {DAT,0x48,0x18,0xb0,0xe8,0xffde,(0x001e)-20,0xfe},
    {END,0x48,0x18,0xb0,0xe8,0xffde,(0x001e)-20,0xfe},
};

/* (確認) 未フォーマット */
SPD_W   _warn081_spd[]={
    {DAT,0x10,0x10,0xf0,0x10,0xffca,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x40,0x40,0xffda,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x80,0x60,0xffea,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x90,0x60,0xfffa,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x60,0x80,0x000a,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x00,0x70,0x002a,0xfff0-20,0x01},
    {DAT,0x10,0x10,0xe0,0x60,0x004a,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x00,0x50,0x005a,0xfff0-20,0x01},
    {DAT,0x10,0x10,0x20,0xb0,0xff94,0x0000-20,0x01},
    {DAT,0x10,0x10,0xe0,0x90,0xffa4,0x0000-20,0x01},
    {DAT,0x10,0x10,0x50,0x60,0xffc4,0x0000-20,0x01},
    {DAT,0x10,0x10,0xd0,0xa0,0xffd4,0x0000-20,0x01},
    {DAT,0x10,0x10,0x40,0x90,0xffe4,0x0000-20,0x01},
    {DAT,0x10,0x10,0x00,0x20,0xfff4,0x0000-20,0x01},
    {DAT,0x10,0x10,0x80,0x20,0x0004,0x0000-20,0x01},
    {DAT,0x10,0x10,0x30,0x30,0x0014,0x0000-20,0x01},
    {DAT,0x10,0x10,0x10,0x00,0x0024,0x0000-20,0x01},
    {DAT,0x10,0x10,0x50,0x00,0x0034,0x0000-20,0x01},
    {DAT,0x10,0x10,0x30,0x20,0x0044,0x0000-20,0x01},
    {DAT,0x10,0x10,0x90,0x30,0x0054,0x0000-20,0x01},
    {DAT,0x10,0x10,0x20,0xb0,0xffa8,0x0010-20,0x01},
    {DAT,0x10,0x10,0xe0,0x90,0xffb8,0x0010-20,0x01},
    {DAT,0x10,0x10,0x50,0x60,0xffd8,0x0010-20,0x01},
    {DAT,0x10,0x10,0xd0,0xa0,0xffe8,0x0010-20,0x01},
    {DA

0x602E00#

042,0xfff3,0x04},      // 秒
        // スプレーヒッター
    {END,0x10,0x10,0x10,0x30,0x0036,0xfff3,0x04},       // "枚"
        // ゲームメーカー
    {END,0x28,0x08,0x58,0x10,0x0033,0xfff8,0x04},       // "エリア"
        // デットマンズドロップ
    {END,0x30,0x10,0x80,0x90,0x0027,0xffe5,0x04},       // トーナメントアタリ
        // ロングシュート
    {END,0x10,0x10,0x10,0x30,0x0036,0xfff3,0x04},       // "枚"

        // ナインフープス EX
    {END,0x38,0x08,0x80,0xb8,0x0033,0xfff8,0x04},       // ステージ
        // スプレーヒッター EX
    {END,0x10,0x10,0xc0,0xb8,0x0043,0xfff3,0x04},       // 点
        // ロングシュート EX
    {DAT,0x10,0x08

0x606E00#

0xfff3,0x04},

    {END,0x00,0x00,0x00,0x00,0x0000,0x0000,0x00},       // 表示なし
};


/*------------------------------------------------------------------*/
/*          ポーズ画面関連                                                                                               */
/*------------------------------------------------------------------*/
    /* トップ画面 */
SPD_W   Tpause_spd[]={  /* 1P(2P) PAUSE (タイトル) (MR/PR/EX共通) tB */
    /* 1P PAUSE */
    {DAT,0x10,0x10,0x00,0xb0,0xffba,0xffbe,0x01},
    {DAT,0x18,0x10,0x28,0xb0,0xffce,0xffbe,0x01},
    {DAT,0x20,0x10,0x60,0xa0,0xffe4,0xffbe,

0x612600#

,0xffd0,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x008d,0xffd0,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x009a,0xffd0,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x005f,0xffe1,0x05},       /* 秒 */
    {DAT,0x10,0x10,0xf0,0x00,0x006c,0xffe1,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x008d,0xffe1,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x009a,0xffe1,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x005f,0xfff2,0x05},       /* 秒 */
    {DAT,0x10,0x10,0xf0,0x00,0x006c,0xfff2,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x008d,0xfff2,0x05},
    {DAT,0x10,0x10,0xf0,0x00,0x009a,0xfff2,0x05

0x615C00#

 ,     /*  0x66    データがありません      */
        (Ulong)c_replay_spd ,       /*  0x67    選択カーソル                      */
        (Ulong)non_spd      ,       /*  0x68    ダミー                                */
        (Ulong)g_tour_spd   ,       /*  0x69    トーナメント記録用               */

    /*----------------------------------------------------------------*/
    /*      ポーズ画面関連                                                                                               */
    /*----------------------------------------------------------------*/
        (Ulong)Tpause_spd   ,       /*  0xce    1P/2P PAUSE(タイトル)tB */
        (Ulong)cont1_spd    ,       /*  0xcf    ゲームを続ける    tA  */
        (Ulong)cont2_spd    ,       /*  0xd0                    tB  */
        (Ulong)setup_spd    ,       /*  0xd1    設定変更                tB  */
        (Ulong)exit_spd     ,       /*  0xd2    ゲームをやめる        tA  */
        (Ulong)retry_spd    ,       /*  0xd4    やりなおす           tA  */
        (Ulong)gmchg1_spd   ,       /*  0xd5    競技変更        tA  */
        (Ulong)gmchg2_spd   ,       /*  0xd5    競技変更        tB  */

        (Ulong)Tsetup_spd   ,       /*  0xd7    設定変更(タイトル)  tB  */
        (Ulong)buru1L_spd   ,       /*  0xd8    振動(コントローラ1)     tB  */
        (Ulong)buru1R_spd   ,       /*  0xd9    ON/OFF                  tB  */
        (Ulong)buru2L_spd   ,       /*  0xda    振動(コントローラ

0x619E00#

*)&em_no1[1] ) ){
                TRANS_STEP++;
            }
            break;
        case 3: /*優勝者が一人では無いとき*/
                if ( num > 1 ){
                    set2d( G_CLS_W_WINNER, SPD_W_WINER, MODE16, 0,0, 14, 0, 10, 1 );    /*WINNERS表示*/
                    /*顔の表示*/
                SetNO1_Face( num );
            }
            TRANS_STEP = 0;
            return 1;
            break;

    }

    return 0;
}

/***************************************************************************
    NO.1の顔表示
        in: int num     顔の枚数
*******************************************************************

0x640A00#

ASE_SUP+0x10)          /*靴1                0x10*/
#define EBASE_SHOE2 (EBASE_SHOE1+0x10)      /*靴2                0x10*/



/*髪の色、小物の色*/
/*髪の色#に応じた小物の色*/
typedef struct {
    Schar item1[8];     /*小物1*/
    Schar item2[8];     /*小物2*/
}HAIR_PTN;

/*服装による肌の色と服の色の組み合わせ*/
/*服装ごとにカラーバリエーションが12パターン用意されている*/
/*パターンを指定するようにする*/
typedef struct {
    Schar wear1[12];        /*上着1*/
    Schar wear2[12];        /*上着2*/
    Schar under1[12];       /*下着1*/
    Schar under2[12];       /*下着2*/
    Schar under3[12];       /*下着3*/
    Schar line[12];         /*ライン*/
    Schar sup[12];          /*サポーター*/
}ED_PTN;
/*靴の色の組み合わせ*/
/*服のパターンをオフセットにして靴のパターンを引っ張れるようにする*/
typedef struct {
    Schar shoe1[12];        /*靴1*/
    Schar shoe2[12];        /*靴2*/
}SHOES_PTN;


/*一人分のカラーを連続転送するためのバッファ*/
/*  -1が入っていたら転送しない  */
typedef struct {
    Schar skin;         /*肌*/
    Schar anti;         /*アンチ*/
    Schar hair;         /*髪*/
    Schar item1;        /*小物1*/
    Schar item2;        /*小物2*/
    Schar wear1;        /*上着1*/
    Schar wear2;        /*上着2*/
    Schar under1;       /*下着1*/
    Schar under2;       /*下着2*/
    Schar under3;       /*下着3*/
    Schar line;         /*ライン*/
    Schar sup;          /*サポーター*/
    Schar shoe1;        /*靴1*/
    Schar shoe2;        /*靴2*/
}ED_TRN_BUF;

/*------------------------------------------------------------------*/
/*                          prototype                                                                                       */
/*------------------------------------------------------------------*/


/*----------------------------------

0x642A00#

 -1, -1, -1, -1 }, /*サポーター*/
    },
/*#3 タンクトップ+パワーパンツ*/
    {
        { 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*/
        { 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 }, /*サポーター*/
    },
/*#4 タンクトップ+タイツ*/
    {
        { 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*/
        { 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

0x647C00#

, side, EBASE_SUP, 490, 0 );
        /*小物*/
    if ( offset_k != -1 ){
        if ( trn_buf.item2 != -1 )
            GED_Col_Trans( wear1_pal_v[ trn_buf.item2 ][0], wear1_pal_v[ trn_buf.item2 ][1], 0x10, side, EBASE_ITEM2, 490, 0 );
        GED_Col_Trans( wear1_pal_v[ trn_buf.item1 ][0], wear1_pal_v[ trn_buf.item1 ][1], 0x10, side, EBASE_ITEM1, 490, 0 );
    }
        /*靴*/
    if ( trn_buf.shoe1 != -1 )
        GED_Col_Trans( shoes_pal_v[ trn_buf.shoe1 ][0], shoes_pal_v[ trn_buf.shoe1 ][1], 0x10, side, EBASE_SHOE1, 490, 0 );
    GED_Col_Trans( shoes_pal_v[ trn_buf.shoe2 ][0], shoes_pal_v[ trn_buf.shoe2 ][1], 0x10, side, EBASE_SHOE2, 490, 1 );
}

0x6B9200#

_init();                               /* init Softwere Reset <p_init.c> */

    /*----------------------*/
    /*      DEGUG FONT用         */
    /*----------------------*/
#ifdef DEBUG
    FntLoad(0x3c0,0x000);
    SetDumpFnt(FntOpen(-0xb0,-0x50,0x180,0xf0,0,0x100));
#endif

    /*----------------------*/
    /*      main loop                   */
    /*----------------------*/
    while(1) {
#ifdef DEBUG                                                                    /* Vcount disp */
        GsInitVcount();
        FntPrint( "%3x / %3x : %3x / %3x :",vcnt0,vcnt0_max,vcnt1,vcnt1_max);
        FntPrint( "%5x / %5x\n", packet_size, PACKETMAX );
#else
        GsClearVcount();
#endif

#if 0
        if ( INTER_MODE != INT_GAME || PAUSE_FLAG){ /*進行画面時 miya*/
            joy_read();                                                             /* read joypad <p_io.c> */
        }
#else
        joy_read();
#endif

        ACTIVE_SIDE = GsGetActiveBuff();                    /* アクティブなバッファを取得 */
        if(ACTIVE_SIDE == 0) {
            GPUADDRESS = (u_long *)&out_packet[0];
        }else{
            GPUADDRESS = (u_long *)&out_packet[1];
        }
                                                                                            /* オーダーリングテーブルのクリア */
#if 1           // disp3d.cでlengthを変更しているので、万一を考えてここでなおしておく  1999.07.30 (矢)
        SepOT[0].ot[ACTIVE_SIDE].length = OT_LENGTH;
#endif
        GsClearOt(0,     0,&SepOT[0].ot[ACTIVE_SIDE]);
//      GsClearOt(0,OT_SIZE-2,&SepOT[0].ot2[ACTIVE_SIDE]);
        GsClearOt(0,    10,&ana_ot[ACTIVE_SIDE]);       /*アナウンサー用*/

        GsSetWorkBase (( PACKET* )GPUADDRESS );

        step();                                                                     /* step work <p_2.c> */

        GsSetRefViewUnit(sp->view_pt);                      /* 視点位置の設定 */

        sp->wsmatrix = GsWSMATRIX;                              /* ワールドスリーンマトリクスの保存 */

        class_set(

0x6E2E00#

反転*/
                        coord2->matrix.t[0]=-(long)opdr->tx;
                        coord2->matrix.t[1]=(long)opdr->ty;
                        coord2->matrix.t[2]=(long)opdr->tz;
                    }
                }else{      /*頭のサイズを維持しつつ、モーションのトランスを調整*/
                    if ( !cls->hdir ){
                        coord2->matrix.t[0]=(long)((opdr->tx* (2*cls->scale.vx-cls->scale.vy)/cls->scale.vx )/* *1001/1000*/);
                    }else{
                            /*モーション反転*/
                        coord2->matrix.t[0]=-(long)((opdr->tx* (2*cls->scale.vx-cls->scale.vy)/cls->scale.vx )/* *1001/1000*/);
                    }
                

0x6E5A00#

be = OFF;      /* 開いた手     */
                cls->obj3D_w[PARTS_RHAND2].be = ON;         /* 握った手     */
            }
            else if (cls->pose == 30)
            {
                cls->obj3D_w[PARTS_LHAND].be    = OFF;      /* 開いた手     */
                cls->obj3D_w[PARTS_LHAND2].be = ON;         /* 握った手     */
            }
            else if (cls->pose == 46)
            {
                cls->obj3D_w[PARTS_LHAND].be    = ON;           /* 開いた手     */
                cls->obj3D_w[PARTS_LHAND2].be = OFF;        /* 握った手     */
            }
            else if (cls->pose == 49)
            {
                cls->obj3D_w[PARTS_RHAND].be    = ON;           /* 開いた手     */
                cls->obj3D_w[PARTS_RHAND2].be = OFF;        /* 握った手     */
            }
            else if (cls->pose == 94)
            {
                cls->obj3D_w[PARTS_LHAND].be    =
                cls->obj3D_w[PARTS_RHAND].be    = OFF;      /* 開いた手     */
                cls->obj3D_w[PARTS_RHAND2].be =
                cls->obj3D_w[PARTS_LHAND2].be = ON;         /* 握った手     */
            }
        }
        break;

    case CR_MAI:
        if (cls->anime_no == 0)                                                             /*準備*/
        {
            if (cls->pose == 31)
            {
                cls->obj3D_w[PARTS_RHAND].be    = ON;           /* 開いた手     */
                cls->obj3D_w[PARTS_RHAND2].be = OFF;
            }
            else if ((cls->pose == 0) || (cls->pose == 51))
            {
                cls->obj3D_w[PARTS_RHAND].be    = OFF;      /* 握った手     */
                cls->obj3D_w[PARTS_RHAND2].be = ON;
            }
        }
        break;
    }
}


/*#############################################################################
;       No.1モーション用手のモデル切換え
#############################################################################*/
static  void    changeNo1MotionHand(CLASS_W *cls)
{
    if (cls->no1AnmType != 2)                   return;                             /*変更無し*/

    /*バ

0x6E9600#

.t[1])>>1;
                coord2->matrix.t[2]=(coord2->matrix.t[2]+cls->oldmatrix[obj_cnt].t[2])>>1;
            }
            cls->oldmatrix[obj_cnt] = coord2->matrix;
            obj_cnt++;
            {
                MATRIX lw;
                GsGetLwsUnit(coord2,&lw,&cls->ls);  /* ローカル スクリーン ローカル ワールド マトリクスを計算 */
                GsSetLightMatrix(&lw);                          /* 光源マトリクスをGTEにセット */
                GsSetLsMatrix(&cls->ls);                        /* ローカル スクリーン マトリックスをGTEにセット */
            }
        }
        /* オブジェクトを透視変換しオーダリングテーブルに登録する */
        GsSortUnit(pGsUNIT,&ana_ot[sp->active_side], 

0x6F4C00#

step = CD_READ_INIT;
            LoadEf = KongoWaitPlay;
            sp->ovrlay_step++;
        }
        break;
    case 1:
        KongoWaitPlay( 0 ); /*ローディング金剛君登場 毎フレーム呼ばれること*/
        if( OverLay(OVERLAY_END) ){
            sp->ovrlay_step++;
        }
        break;
    case 2:
        if ( child09() ){           /*とっても仮*/
            Screen_Set2(384,240);   /*画面の解像度を仮で戻しておく*/
            SD_f_pause = 0;     /*サウンドの処理関連*/
            cd_read_step = CD_READ_INIT;
            sp->ovrlay_step++;
        }
        break;
    case 3:
        if( OverLay( OVERLAY_MOVIE ) ) {
            cd_read_step = CD_READ_INIT;
            if( movie_num ) {   /* 隠しが増えた   */
                sp->ovrlay_step++;
            }else{                      /* 変化なし         */
                sp->ovrlay_step=5;
            }
        }
        break;
    case 4:     /*隠しキャラのムービー*/
        Movie( movie_num );
        if ( sp->ModSel.mode != 2 ) {
            sp->ovrlay_step++;
        }else{
            CdReset(0);
            step_set( SELECT_STEP );
            sp->ovrlay_step = 0;
        }
        break;
    case 5:     /*エンディングムービー*/
            /*ケインをユーザーが使っていて優勝したらケインムービー*/
        for( good_ed=top_rank=0,i=0; i

0x6FA400#

8  DecDCTinSync
 800D15C8  DecDCTout
 800D1684  DecDCToutCallback
 800D1624  DecDCToutSync
 800D0FA8  DecDCTvlc2
 800D12F8  DecDCTvlcBuild
 800D0F78  DecDCTvlcSize2
 801FA928  Dec_Buff
 800C2610  DefaultSet
 8001BF0C  Default_Set
 800A4E58  DelG2dPerfect06
 800A0098  DelG2dRepPlate00
 800A6E54  DelG2dSt06DispPartnerPlate
 8009CB2C  DelG2fRepPlate01
 800988B0  DelG2fRepPlate02
 80098AA4  DelG2fRepPlate03
 8009ECF0  DelG2fRepPlate04
 8009AE8C  DelG2fRepPlate05
 800A5EA0  DelG2fRepPlate06
 80099E24  DelG2fRepPlate07
 8009A854  DelG2fRepPlate08
 8001E72C  DelOpd
 800C2D38  DelTTLAction
 8003200C  DeliverEvent
 80013D14  Demo
 8002291C  DisableEvent
 8003B3E8  DisablePAD
 8002825C  DpqColor3
 80028234  DpqColorLight
 8002486C  DrawOTag
 80026CE0  DrawOTag2
 8002499C  DrawOTagEnv
 80024810  DrawPrim
 80024278  DrawSync
 80024180  DrawSyncCallback
 800367A0  DsDataCallback
 80036778  DsReadyCallback
 8003678C  DsStartCallback
 80036764  DsSyncCallback
 800403DC  EF_S_00_p
 800

0x6FCE00#

all_Set
 800A3290  LBall_Set_Hangle
 800A331C  LBall_Set_Vangle
 800A2AB4  LBall_Simulate
 800A4868  LBall_Special_Set
 800A3188  LBall_Spin
 800A31EC  LBall_Task
 800A2C2C  LBall_Tmp
 800A2B68  LBall_Wind
 800A47F8  LBall_Wind_Set
 800AA570  LBoard_Eset
 800AA2F8  LBoard_Mplay
 800AA420  LBoard_Mset
 800AA1E0  LBoard_System
 800AA4B8  LBoard_Zone
 800A9ECC  LCom_Declare
 800AA034  LCom_Direction
 800A9564  LCom_Increment
 800AA104  LCom_MeetX
 800AA15C  LCom_MeetY
 800AA0A8  LCom_Power

0x6FEE00#

layer03GetNext
 8009F940  Player03GetRecord
 8009F998  Player03GetThrowN
 8009FA0C  Player03HumanN
 8009F15C  Player03Init
 8009F9A8  Player03IsLast
 8009E994  Player03Kick
 8009E03C  Player03Motion
 8009ED58  Player03Operate
 8009F08C  Player03OperateInit
 8009DCE0  Player03SetHand
 8009DC00  Player03SetMot
 8009DBB4  Player03SetPos
 8009F6D4  Player03SetRecord
 8009E7C0  Player03SetSE
 8009DBE4  Player03SetVec
 80027C80  PopMatrix
 8001A1D0  Pose_Change
 8009A434  Pose_Change02
 8009DAD

0x701400#

etGeomScreen
 80024070  SetGraphDebug
 800240CC  SetGraphQueue
 8002B874  SetIR0
 8002B860  SetIR123
 800C1B64  SetIdxSpd
 8003B094  SetInitPadFlag
 80035C68  SetIntrMask
 8002AFFC  SetLightMatrix
 800C348C  SetLineBox
 800272BC  SetLineF2
 800272DC  SetLineF3
 8002B8D4  SetMAC123
 8001E0F8  SetMenuFade
 800C10BC  SetMsg
 8001EC84  SetNO1_Each
 8001F30C  SetNO1_Face
 8001EFC0  SetNO1_Fin
 800C20BC  SetPF4
 80019BF0  SetPartsHand
 80019BE8  SetPartsItem
 800271BC  SetPolyF3
 800271FC  SetPolyF4
 8002721C  SetPolyFT4
 800271DC  SetPolyG3
 8002723C  SetPolyG4
 8002295C  SetRCnt
 8002B84C  SetRGBfifo
 8002B8C0  SetRii
 8002819C  SetRotMatrix
 800C1AF0  SetSELAction
 80015D4C  SetSTP
 8002B8AC  SetSXSYfifo
 8002B880  SetSZfifo3
 8002B894  SetSZfifo4
 8009143C  SetSelMode
 800C1BF0  SetSelSpd
 8002715C  SetSemiTrans
 8002718C  SetShadeTex
 80018AE0  SetSpd
 80018AEC  SetSpd2
 8002725C  SetSprt8
 800C2CF0  SetTTLAction
 8002729C  SetTile
 8002727C  SetTile1
 800281CC  Set

0x703A00#

 8007E3B4  Stsector_offset
 80039144  SysDeqIntRP
 80039134  SysEnqIntRP
 800B0000  TIM_TABLE
 80140000  TIM_TABLE2
 8009EA98  TVcam02AutoIsAuto
 8009EA6C  TVcam02AutoOn
 8009EAB0  TVcam02AutoRestTime
 8009E9C0  TVcam02AutoSet
 8009E95C  TVcam02AutoSetParent
 8009EA8C  TVcam02AutoTime
 8009E934  TVcam02Get
 8009E940  TVcam02GetAuto
 8009E73C  TVcam02Init
 8009EC74  TVcam02SerialIsAuto
 8009EC4C  TVcam02SerialOn
 8009ECD0  TVcam02SerialRestTimeAll
 8009EC8C  TVcam02SerialRestTimeOne
 8009EAF4  TVcam02SerialSet
 8009EBAC  TVcam02SerialSetDirect
 8009E8A8  TVcam02Set
 8009E8DC  TVcam02SetDirect
 8009E904  TVcam02SetParent
 8009ED50  TVcam02SetPosition
 800A0E14  TVcam03AutoIsAuto
 800A0DE8  TVcam03AutoOn
 800A0E2C  TVcam03AutoRestTime
 800A0D3C  TVcam03AutoSet
 800A0CD8  TVcam03AutoSetParent
 800A1130  TVcam03AutoStop
 800A0E08  TVcam03AutoTime
 800A0CB0  TVcam03Get
 800A0CBC  TVcam03GetAuto
 800A0AB8  TVcam03Init
 800A0FF0  TVcam03SerialIsAuto
 800A0FC8  TVcam03SerialOn
 800A104C  TVcam03SerialRestTimeAll
 800A1008  TVcam03SerialRestTimeOne
 800A0E70  TVcam03SerialSet
 800A0F28  TVcam03SerialSetDirect
 800A1150  TVcam03SerialStop
 800A0C24  TVcam03Set
 800A0C58  TVcam03SetDirect
 800A0C80  TVcam03SetParent
 800A1170  TVcam03SetPosition
 8009A264  TaruClsInit
 8009A358  TaruClsSet
 8009C1B8  TaruCopy
 8009A140  TaruGetTexture
 8009A534  TaruHitClr
 8009A640  TaruHitDraw
 8009A608  TaruHitMove
 8009A55C  TaruHitSet
 8009A710  TaruLoad
 8009C380  TaruMotion
 800

0x706600#

ncSetGunPort
 80039464  _padGetActSize
 8004A820  _padGunExec
 8004A818  _padInfoDir
 8003A9E4  _padInitDirSeq
 800387C4  _padInitSioMode
 8004A81C  _padIntExec
 8003949C  _padLoadActInfo
 8004A830  _padModeMtap
 800391F4  _padRecvAtLoadInfo
 80039170  _padSendAtLoadInfo
 80039154  _padSetAct
 80039A10  _padSetActAlign
 80039160  _padSetCmd
 80039B5C  _padSetMainMode
 8003847C  _padSetVsyncParam
 8004A824  _padSioChan
 80038BE8  _padSioRW
 80038DF8  _padSioRW2
 8004A828  _padSioState
 80

0x708C00#

  _pchild06_data_obj
 800ACA03  _pchild06_data_objend
 800ABED4  _pchild06_data_org
 800ACA03  _pchild06_data_orgend
 00000B2F  _pchild06_data_size
 800AD348  _pchild06_dtors_obj
 800AD348  _pchild06_dtors_objend
 800AD348  _pchild06_dtors_org
 800AD348  _pchild06_dtors_orgend
 00000000  _pchild06_dtors_size
 80090000  _pchild06_obj
 800AD348  _pchild06_objend
 80090000  _pchild06_org
 800AD348  _pchild06_orgend
 80090004  _pchild06_rdata_obj
 80090664  _pchild06_rdata_objend
 80090004  _pchild06_rdata_org
 80090664  _pchild06_rdata_orgend
 00000660  _pchild06_rdata_size
 800ACA08  _pchild06_sbss_obj
 800ACA08  _pchild06_sbss_objend
 800ACA08  _pchild06_sbss_org
 800ACA08  _pchild06_sbss_orgend
 00000000  _pchild06_sbss_size
 800ACA08  _pchild06_sdata_obj
 800ACA08  _pchild06_sdata_objend
 800ACA08  _pchild06_sdata_org
 800ACA08  _pchild06_sdata_orgend
 00000000  _pchild06_sdata_size
 0001D348  _pchild06_size
 80090664  _pchild06_text_obj
 800ABED4  _pchild06_text_objend
 80090

0x70BC00#

 _svm_damper
 801FCAB8  _svm_envx_hist
 801FCAB4  _svm_envx_ptr
 801FCAF8  _svm_okof1
 801FCAFA  _svm_okof2
 801FC3C0  _svm_okon1
 801FC3C2  _svm_okon2
 801FC3C8  _svm_onos1
 801FC3CA  _svm_onos2
 801FC3C4  _svm_orev1
 801FC3C6  _svm_orev2
 801FCBE4  _svm_pg
 801FCB00  _svm_rattr
 801FC930  _svm_sreg_buf
 801FC910  _svm_sreg_dirty
 801FCBE0  _svm_stereo_mono
 801FCBF0  _svm_tn
 801FCC78  _svm_vab_count
 801FCBF8  _svm_vab_not_send_size
 801FCB18  _svm_vab_pg
 801FCC80  _svm_vab_start
 801FCBA0  _svm_vab_tn
 801FCC38  _svm_vab_total
 801FCC20  _svm_vab_used
 801FCB58  _svm_vab_vh
 801FCBE8  _svm_vg
 801FCBEC  _svm_vh
 801FC3D0  _svm_voice
 80010000  _text_obj
 8004A8FC  _text_objend
 80010000  _text_org
 8004A8FC  _text_orgend
 0003A8FC  _text_size
 8007E70C  _waitTime
 8017BD6C  _warn011_spd
 8017BEB0  _warn012_spd
 8017BF58  _warn021_spd
 8017BF64  _warn022_spd
 8017BF7C  _warn031_spd
 8017BF88  _warn032_spd
 8017BFA0  _warn041_spd
 8017C0B4  _warn042_spd
 8017C108  

0x70EA00#

8009F24C  ddp_tour_dare
 8009EFD0  ddp_tour_init
 8009F504  ddp_tour_manager
 800A8A34  ddp_tournament
 80091F3C  ddp_v
 8009280C  ddp_vi
 80093B68  ddp_vii
 800956D0  ddp_viii
 800A8C30  ddp_vs_name
 800A2478  ddp_walk_se
 800960D4  ddp_x
 80096440  ddp_xi
 800967D8  ddp_xii
 80096838  ddp_xiii
 80097014  ddp_xiv
 800974AC  ddp_xv
 8009769C  ddp_xvi
 80097740  ddp_xvii
 800A8A0C  dead_line
 800AA200  dead_man
 8009C728  dead_man_init
 8009C914  deadmansdrop
 8004962C  debug_cause
 8001601C  decode
 80018EBC  decrease_rgb_classw0
 800190D8  decrease_size_classw0
 800A5624  def_camera04
 800A8C18  def_ddp_rand
 800A8C1C  def_ddp_round
 8003EF94  def_demo_hand
 800A8CE4  def_eye
 801FB988  def_vol
 8004ACA0  demo_box
 8009F068  demo_copy04
 8009B180  demo_copy05
 8009A21C  demo_copy07
 8004AB25  demo_count
 8004AB2A  demo_step
 80018858  disp2d
 8001E39C  disp2dName
 8001E490  disp2dPoint
 8001A50C  disp3d
 8001AC40  disp3d_ana
 8001A9E0  disp4d
 8001AA8C  disp4d_BOT
 8001AB1C  disp5d
 8001AB84  disp5d2
 8009E3C4  disp_ball_kage
 800A3370  disp_char_kage
 8009F1E4  disp_char_navi
 8001AAF8  disp_ground
 8009F46C  disp_shoot_kaku
 8009EF88  disp_shoot_pow
 8001AAD4  disp_wall
 8003E250  dn_tack
 800A5A98  down_p1_spd
 800A5AC8  down_p2_spd
 80040134  dummy2_spd
 800A9848  ed_L11_spd
 800A98A8  ed_L12_spd
 800A9548  ed_Lya_spd
 80099D70  ed_ModelInit
 800A9C68  ed_R11_spd
 800A9CB0  ed_R12_spd
 800A9560  ed_Rya_spd
 800A97AC  ed_age_spd
 800A9B60  ed

0x711A00#

05_p
 800414FC  loadb_PAT0007_p
 80041510  loadb_PAT0008_p
 80041524  loadb_PAT0009_p
 80041538  loadb_PAT0010_p
 8004154C  loadb_PAT0011_p
 80041560  loadb_PAT0012_p
 80041574  loadb_PAT0013_p
 80041588  loadb_PAT0014_p
 8004159C  loadb_PAT0015_p
 800415B0  loadb_PAT0016_p
 800415C4  loadb_pattern_table
 80036E94  log
 800370D4  log10
 800B1478  lopt
 800AEBF8  ls
 800AD26C  ls_bingo_pt
 800AD278  ls_bingo_tbl
 800AD290  ls_bmot_idx
 800AD238  ls_explain
 800AD244  ls_explain2
 80042BB8  ls_fuki_spd
 800AD248  ls_panel_pos
 80042AE0  ls_rogo_spd
 80042B10  ls_sousa_spd
 800AD4D0  ls_sys
 8003D314  lseek
 80078370  lumi
 800C2D70  m_BGMAutoSel
 800C0148  m_ClrAction
 80096B44  m_CurAct0
 80096CC0  m_CurAct1
 80096D20  m_CurAct2
 800C1A58  m_FntMove
 800C19F0  m_FntSet
 800C018C  m_GetAction
 800C00A8  m_RunAction
 800C010C  m_SetAction
 800C01AC  m_SprClr
 800C01E0  m_SprClrS
 800C0724  m_SprMove
 800C0888  m_SprMoveS
 800C0964  m_SprMoveS2
 800C05BC  m_SprSet
 800C069C  m_SprSetS
 800C0A44  m_SprStp
 800C4BC8  m_spw
 800C0080  m_work_init
 800C0B24  m_yaji_sel
 8017FC24  mae_nameA_spd
 8017FF24  mae_nameB_spd
 8017F744  mae_plt_spd
 8017FA44  mae_point_spd
 80180224  mae_ttl_spd
 80012F5C  main
 800A5CB4  mark_p1_spd
 800A5CC0  mark_p2_spd
 8004A7D8  math_err_point
 8004A7D4  math_errno
 80170618  mcAction
 80171B3C  mcAutoCheck
 801710F4  mcDataGet
 80171124  mcDataSet
 80170FEC  mcExistChk
 80170F74  mcFileExist
 801700C0  mcFileSet
 80170F1C 

0x715C00#

00A1E8C  speak04_main
 800A2FF8  speak04_next
 800A391C  speak04_operate
 800A37F4  speak04_replay
 800A3774  speak04_replay_init
 800A30A8  speak04_result
 800A5AE0  speed_p1_spd
 800A5B04  speed_p2_spd
 80022B6C  sprintf
 801FB96C  spu22
 801FA880  spu22_w
 801F9588  spuvol
 801F95A8  spuvol22
 8006CD08  spw
 8001C024  sqr
 80022B4C  srand
 80014C7C  ssstep_set
 80014C60  ssstep_up
 80014C4C  sstep_set
 80014C30  sstep_up
 80093644  stand_motion
 8003632C  startIntrDMA
 8003620C  startIntrVSync
 8004AC3C  start_angle
 801FBA64  start_up_time
 8004AC78  start_vp
 8004AC88  start_vr
 80013740  step
 800950C8  step_down_motion
 80014C14  step_set
 80014BF4  step_up
 801FBA58  str_adrs
 801FB928  str_buf
 801FB930  str_cnt
 801F0BE8  str_dummy
 801FA830  str_se_buf
 801EE104  str_se_off22
 801EE0BC  str_se_off23
 801EE0E0  str_se_on22
 801EE098  str_se_on23
 801FA890  str_se_size
 8003D624  strcat
 80022ADC  strcmp
 80022AEC  strlen
 80012F40  stup0
 80012EC4  stup1

0x718C00#

0014670  Child
 80014BF4  step_up
 80014C14  step_set
 80014C30  sstep_up
 80014C4C  sstep_set
 80014C60  ssstep_up
 80014C7C  ssstep_set
 80014C88  gstep_up
 80014CA4  gstep_set
 80014CB0  sp_gstep_set
 80014CCC  sp_step0_set
 80014CD8  sp_step0_up
 80014CF4  sp_step1_set
 80014D00  sp_step1_up
 80014D1C  joy_init
 80014DC4  joy_read
 80014EA4  anacon_caribrate
 80014ECC  joy_check
 800152EC  ShockON
 80015434  ShockPtnSet
 8001548C  GetShockPad
 800154B0  AutoShock
 800154F0  pad_run
 800155B4  cd_file_load
 80015764  cd_file_load_NB
 80015918  First_Trans
 800159A8  tim_trans
 80015D4C  SetSTP
 80015DC8  OverLay
 8001601C  decode
 80016248  CharTrans
 80016A7C  AnaTrans
 80016CCC  No1_Trans
 80016DAC  No1_Trans2
 80016FC4  no1_Chara_Trans
 80017120  PCdRead
 800171D4  PCdReadSync
 800174E4  P_cbcdready
 80017704  GED_LoadPal
 800177EC  GED_LoadBody
 8001798C  GED_LoadHead
 80017B14  GED_LoadBtex
 80017D1C  GED_LoadHtex
 80017E54  GED_SetVram
 80018404  GED_SetMod

0x71C400#

3BB7C  MemCardAccept
 8003BE8C  MemCardOpen
 8003C014  MemCardClose
 8003C058  MemCardReadData
 8003C24C  MemCardWriteData
 8003C440  MemCardReadFile
 8003C698  MemCardWriteFile
 8003C8F0  MemCardGetDirentry
 8003CB50  MemCardCallback
 8003CB64  MemCardSync
 8003CC80  MemCardCreateFile
 8003CE7C  MemCardDeleteFile
 8003D030  MemCardFormat
 8003D0EC  MemCardUnformat
 8003D304  open
 8003D314  lseek
 8003D324  read
 8003D334  write
 8003D344  close
 8003D354  nextfile
 8003D364  erase
 8003D374  firstfile
 8003D614  firstfile2
 8003D624  strcat
 8003D634  _card_info
 8003D644  _card_load
 8003D654  _card_write
 8003D664  _new_card
 8003D674  _card_clear
 8003D7F8  _card_format
 8003DA04  _card_read
 8003DA14  _card_status
 8003DA24  UserFuncInit
 8003DA34  UserFuncOpen
 8003DAB0  UserFuncExecute
 8003DB1C  UserFuncComplete
 8003DB34  funcEvSpIOE
 8003DB48  funcEvSpError
 8003DB5C  funcEvSpTimeout
 8003DB70  funcEvSpNewcard
 8003DB84  funcEvSpIOEx
 8003DB98  funcEvSpError

0x721E00#

00988B0  DelG2fRepPlate02
 800988D8  Sh_Again
 800988E8  KillG2d02
 800988F0  t_rnk_s2_spd
 80098924  G3dTrans02_Stage
 80098944  rnk_sel_g1_spd
 8009896C  Sh_Motion_Batting
 800989B0  rnk_sel_g2_spd
 80098A1C  rnk_sel_g3_spd
 80098A24  SetG2dSave03
 80098A38  Sh_Point_Calc
 80098A3C  SetG2dRew03
 80098A3C  SetG2dAna07
 80098A68  G3dTrans02_Demo
 80098A70  rnk_sel_g4_spd
 80098A70  SetG2dFew03
 80098AA4  DelG2fRepPlate03
 80098AB0  SetG2dPerfect08
 80098AD0  rnk_sel_g5_spd
 80098ADC  Kill

0x724A00#

C  TVcam02AutoSetParent
 8009E994  Player03Kick
 8009E9A4  ddp_pose_set
 8009E9C0  TVcam02AutoSet
 8009EA6C  TVcam02AutoOn
 8009EA8C  TVcam02AutoTime
 8009EA94  Player03CalcAngle
 8009EA98  TVcam02AutoIsAuto
 8009EAB0  TVcam02AutoRestTime
 8009EAF4  TVcam02SerialSet
 8009EB68  ddp_falldown
 8009EBAC  TVcam02SerialSetDirect
 8009EBE4  Player03CalcPower
 8009EC4C  TVcam02SerialOn
 8009EC68  ddp_falldown2
 8009EC70  SetG2dSave04
 8009EC74  TVcam02SerialIsAuto
 8009EC88  SetG2dRew04
 8009EC8C  TVcam02SerialRestTimeOne
 8009ECBC  SetG2dFew04
 8009ECD0  TVcam02SerialRestTimeAll
 8009ECF0  DelG2fRepPlate04
 8009ECF4  ddp_snow_store
 8009ED28  KillG2d04
 8009ED50  TVcam02SetPosition
 8009ED58  Player03Operate
 8009ED64  ddp_snow_load
 8009ED64  Sh_Draw_Ex_Base
 8009ED64  G3dTrans04
 8009ED98  ddp_effect
 8009EE84  SetG2dPerfect00
 8009EE84  G3dTrans04demo
 8009EF08  Snow02Init
 8009EF28  ddp_se
 8009EF3C  init_shoot_pow
 8009EF68  SetG2dLane00
 8009EF80  Snow02Move
 8009EF88  disp_shoot_pow
 8009EFD0  ddp_tour_init
 8009EFF4  Sh_Draw_Ex_Count
 8009EFF8  SetG2dClear00
 8009F068  demo_copy04
 8009F074  SetG2dMiss00
 8009F08C  Player03OperateInit
 8009F094  SetG2dResult00
 8009F09C  init_shoot_kaku
 8009F0B4  LObject_Gage4
 8009F0D8  Snow02Draw
 8009F124  Player03ClrParam
 8009F15C  Player03Init
 8009F1E4  disp_char_navi
 8009F22C  camera04_plyr_slant
 8009F24C  ddp_tour_dare
 8009F30C  Sh_Draw_Bat
 8009F3A0  ddp_auto_vs
 8009F400  Player03GetNext
 8009F46C  disp_sho

0x727400#

0_spd
 800A39A8  effect_Shadow_02
 800A3A44  ver_po1_spd
 800A3A4C  beholder_2
 800A3A50  ver_po2_spd
 800A3A50  effect_Shadow_03
 800A3A5C  ver_po3_spd
 800A3A68  ver_9h0_spd
 800A3A80  return_packet
 800A3AAC  set_semi_rate
 800A3ABC  LBall_Hit_Zwall
 800A3B04  ver_9h1_spd
 800A3B10  ver_9h2_spd
 800A3B1C  ver_9h3_spd
 800A3B38  beholder_3
 800A3B40  c_verpo_spd
 800A3B60  effect_Shadow1_03
 800A3B88  h_verpo_spd
 800A3BC4  gm_revision_head
 800A3BD0  effect_Shadow_pos_03
 800A3BD0  c_ver9h_spd
 800A3C18  h_ver9h_spd
 800A3C60  t_verset1_spd
 800A3C64  gm_recover_head
 800A3CF0  t_verset2_spd
 800A3D20  gm_revision_leg
 800A3D24  bf_GageInit
 800A3D34  Sh_Camera_Rotate
 800A3D50  ver_set0_spd
 800A3DC0  gm_revision_foot
 800A3DF8  ver_set1_spd
 800A3E60  Sh_Camera_Zoom
 800A3E60  GM_Kongo
 800A3E94  ver_set2_spd
 800A3EB0  effect_Smoke_03
 800A3EBC  effect_Backlight04
 800A3EC4  ver_kind0_spd
 800A3EE8  ver_kind1_spd
 800A3F04  bf_GageSetup
 800A3F24  ver_ya_spd
 800A

0x72A400#

 800A7C48  _pchild07_data_obj
 800A7C90  ddp_paused
 800A7C94  ddp_pause
 800A7C98  ddp_sound
 800A7C9C  ddp_gauged
 800A7CA0  ddp_ha_body
 800A7CA8  ddp_ha_type
 800A7CAC  rec_scya_spd
 800A7CC4  rec_plt_spd
 800A7CD4  ddp_ha_tail
 800A7CD4  Sh_Replay_Calculation
 800A7CE8  ddp_boxf
 800A7CF8  ddp_lose_pos
 800A7D18  ddp_gallery
 800A7D1C  ddp_pica_cnt
 800A7D48  em07_sd_xxx
 800A7DE4  LTalk_Name
 800A7ED0  LTalk_Number
 800A7EFC  LTalk_Test
 800A7F04  LTalk_Furu_Opening
 800A7F4C  LTalk_Furu_Change
 800A7F6C  LTalk_Furu_Past
 800A7F94  rec_nam_spd
 800A7F98  po_ball_mot_set
 800A8010  em_07_spd
 800A8034  dd_explain
 800A8040  Sh_Replay_Out
 800A8064  LTalk_Furu_Before
 800A80D0  LTalk_Furu_Declare
 800A80F0  LTalk_Furu_After
 800A80F4  Sh_Replay_Motion
 800A81A4  LTalk_Furu_After2
 800A8334  LTalk_Furu_Shoot
 800A8378  LTalk_Furu_Success
 800A83D4  So_Board_Vibration
 800A841C  LTalk_Furu_Miss
 800A8534  rec_edit_spd
 800A8544  LTalk_Furu_Replay
 800A85A0  Sh_Display

0x72CA00#

4_spd
 800AAB90  himo_final_joint
 800AAB98  hj3
 800AABEC  ch_name5_spd
 800AAC28  hj4
 800AAC4C  ch_name6_spd
 800AACAC  ch_name7_spd
 800AAD0C  ch_name8_spd
 800AAD6C  c_ch_sel_spd
 800AAD84  prof_com0_spd
 800AAE28  himo
 800AAE3C  gm_sound_stop
 800AAE5C  prof_com1_spd
 800AAE64  GM_SD_call_name
 800AAEA4  gm_jikkyou_clr
 800AAEB8  GM_SD_call_Crank
 800AAED4  ball4_spd
 800AAF1C  em_05_spd
 800AAF68  sh_explain
 800AAF80  Sh_Extra_Func
 800AAFBC  sh_ex_info
 800AB040  GM_SD_call_Slope
 800AB0B4  prof_com2_spd
 800AB142  _pchild03_data_orgend
 800AB142  _pchild03_data_objend
 800AB148  _pchild03_sdata_orgend
 800AB148  _pchild03_sdata_org
 800AB148  _pchild03_sdata_objend
 800AB148  _pchild03_sdata_obj
 800AB148  _pchild03_sbss_orgend
 800AB148  _pchild03_sbss_org
 800AB148  _pchild03_sbss_objend
 800AB148  _pchild03_sbss_obj
 800AB148  _pchild03_bss_org
 800AB148  _pchild03_bss_obj
 800AB178  glw
 800AB1F0  GM_SD_call_Downstep1
 800AB20C  hj_i3
 800AB20E  hj_i4
 800AB213  _pchild02_data_orgend
 800AB213  _pchild02_data_objend
 800AB21C  _pchild02_sdata_orgend
 800AB21C  _pchild02_sdata_org
 800AB21C  _pchild02_sdata_objend
 800AB21C  _pchild02_sdata_obj
 800AB21C  _pchild02_sbss_orgend
 800AB21C  _pchild02_sbss_org
 800AB21C  _pchild02_sbss_objend
 800AB21C  _pchild02_sbss_obj
 800AB220  _pchild02_bss_org
 800AB220  _pchild02_bss_obj
 800AB240  prof_com3_spd
 800AB2BC  LSound_All_OFF
 800AB2E4  LSound_Talk_Echeck
 800AB350  LSub_Ball_NCheck
 800AB370  

0x72F600#

B14C0  _safety_bss_org
 800B14C0  _safety_bss_obj
 800B14D0  _safety_orgend
 800B14D0  _safety_objend
 800B14D0  _safety_bss_orgend
 800B14D0  _safety_bss_objend
 800B5000  HOMEHEAD_TABLE
 800B8000  AWAYMODEL_TABLE
 800BD000  AWAYHEAD_TABLE
 800C0000  _m_comn_rdata_org
 800C0000  _m_comn_rdata_obj
 800C0000  _m_comn_org
 800C0000  _m_comn_obj
 800C0000  M_COMN_ADDRESS
 800C0000  GROUND_TABLE
 800C0080  m_work_init
 800C0080  _m_comn_text_org
 800C0080  _m_comn_text_obj
 800C0080  _m_comn_r

0x731C00#

ame2_spd
 8017DB84  _name3_spd
 8017DBE4  _name4_spd
 8017DC44  _nodat_spd
 8017DCB0  _data0_spd
 8017DD58  _data1_spd
 8017DE00  _data2_spd
 8017DEA8  _data3_spd
 8017DF50  _data4_spd
 8017DFF8  _rnum0_spd
 8017E100  _rnum1_spd
 8017E208  _rnum2_spd
 8017E310  _rnum3_spd
 8017E418  _rnum4_spd
 8017E520  _mode_spd
 8017E6C4  _game_spd
 8017EB08  c_replay_spd
 8017EBD4  Tpause_spd
 8017EC64  cont1_spd
 8017ECAC  cont2_spd
 8017ECB8  setup_spd
 8017ECE8  exit_spd
 8017ED3C  retry_spd
 8017ED78  gmchg1_spd
 8017ED90  gmchg2_spd
 8017EDA8  Tsetup_spd
 8017EDD8  buru1L_spd
 8017EDFC  buru1R_spd
 8017EE38  buru2L_spd
 8017EE68  buru2R_spd
 8017EEA4  voiceL_spd
 8017EEBC  voiceR_spd
 8017EEF8  soundL_spd
 8017EF10  soundR_spd
 8017EF28  Tgmchg1_spd
 8017EF40  Tgmchg2_spd
 8017EF58  gm01_spd
 8017EF64  gm02_spd
 8017EF70  gm03_spd
 8017EF7C  gm04_spd
 8017EF88  gm05_spd
 8017EFA0  gm06_spd
 8017EFAC  gm07_spd
 8017EFC4  gm08_spd
 8017EFDC  gm09_spd
 8017EFE8  Tpname1_spd

0x734A00#

ts
 801FB9C0  read_s
 801FB9C4  cd_err
 801FB9C6  save_22
 801FB9C8  time_60
 801FB9CC  f_mono
 801FB9D0  se_grp
 801FB9E0  XA_fade
 801FB9E8  XA_back
 801FB9F0  sd_pause_ok
 801FB9F2  SD_se_n
 801FB9F4  SD_seqc
 801FB9F8  VOL_spu
 801FB9FC  SD_seqn
 801FBA00  XA_play
 801FBA02  XA_size
 801FBA04  SD_se_stream
 801FBA08  cd_code
 801FBA0C  bgm_vol
 801FBA0E  pause_failed
 801FBA10  sd_type
 801FBA12  SD_bgm_n
 801FBA14  SD_se_nb
 801FBA16  org_da_entry
 801FBA18  pos_sts
 801FBA20  SD_seq_n
 801FBA22  XA_count
 801FBA24  SD_start
 801FBA25  f_samecd
 801FBA28  fpw
 801FBA40  time_sec
 801FBA44  sd_track
 801FBA46  da_count
 801FBA48  vab_size
 801FBA4C  da_entry
 801FBA4E  seq_time
 801FBA50  size_lim
 801FBA54  cd_retry
 801FBA58  str_adrs
 801FBA5C  seq_port
 801FBA5E  SD_cdwait
 801FBA60  SD_player
 801FBA64  start_up_time
 801FBA68  load
 801FBA6C  XA_ch
 801FBA6E  seq_pitch
 801FBA70  XA_se
 801FBA90  SD_f_pause
 801FBA91  SD_ispause
 801FBA98  SsFCALL
 801FBB2C  _snd_ev_flag
 801FBB30  _snd_openflag
 801FBB34  VBLANK_MINUS
 801FBB38  _ss_score
 801FBBB8  _SsMarkCallback
 801FC3B8  _snd_seq_s_max
 801FC3BA  _snd_seq_t_max
 801FC3C0  _svm_okon1
 801FC3C2  _svm_okon2
 801FC3C4  _svm_orev1
 801FC3C6  _svm_orev2
 801FC3C8  _svm_onos1
 801FC3CA  _svm_onos2
 801FC3D0  _svm_voice
 801FC910  _svm_sreg_dirty
 801FC928  _autopan
 801FC930  _svm_sreg_buf
 801FCAB0  _autovol
 801FCAB4  _svm_envx_ptr
 801FCAB8  _svm_envx_hist
 801FCAF8  _svm_okof1
 

0x750E00#

e
 800A6E2C  LTalk_Furu_After
 800A6E34  ddp_man
 800A6E40  t_setup2_spd
 800A6E58  op_stup1_spd
 800A6E7C  op_stup2_spd
 800A6E94  op_stup3_spd
 800A6EAC  op_stup4_spd
 800A6EB4  ddp_renda
 800A6EE0  LTalk_Furu_After2
 800A6EE8  op_stup5_spd
 800A6F3C  op_stup6_spd
 800A6F90  op_stup7_spd
 800A6F90  gl_gageOn_Height
 800A6FC0  op_stup1s_spd
 800A7004  ddp_cpu
 800A7008  gl_gageOn_Power
 800A702C  op_stup2s_spd
 800A7068  op_stup3s_spd
 800A7068  gl_gageOn_Walldist
 800A7070  LTalk_Furu_

0x8C6200#

SULT_SUCCESS2) ||
            (GmkRepDat[idx].anime_no0 == GM_RESULT_SUCCESS3))
    {
        s->classw[0].obj3D_w[PARTS_LHAND].be = s->classw[0].obj3D_w[PARTS_RHAND].be = OFF;      /* 開いた手 */
        s->classw[0].obj3D_w[PARTS_RHAND2].be = s->classw[0].obj3D_w[PARTS_LHAND2].be = ON;     /* 握った手 */
    }
    else
    {
        s->classw[0].obj3D_w[PARTS_LHAND].be = s->classw[0].obj3D_w[PARTS_RHAND].be = ON;           /* 開いた手 */
        s->classw[0].obj3D_w[PARTS_RHAND2].be = s->classw[0].obj3D_w[PARTS_LHAND2].be = OFF;    /* 握った手 */
    }
}


#if 0
/*------------------------------------------------------------------*/
/*      カメラ位置計算                                                                                             */
/*------------------------------------------------------------------*/
static  void    setStandardPosition(void)
{
    sp_w;
    short       rotY;

    rotY = ratan2(-gm_work.main_cls->xposi, 2000);

    sp->rview.vpx = -cameraDist * rsin(rotY+2048) >> 12;
    sp->rview.vpz = -cameraDist * rcos(rotY+2048) >> 12;
    sp->rview.vpy = -600;

    sp->rview.vpx += gm_work.main_cls->xposi;
    sp->rview.vpz += gm_work.main_cls->zposi;
    sp->rview.vpy += gm_work.main_cls->yposi;
}


/*------------------------------------------------------------------*/
/*              カメラ座標計算                                                                                     */
/*------------------------------------------------------------------*/
static  void    SetVPPosition(short rotY, VECTOR *pVp)
{
    sp_w;
    MATRIX      temp;
    VECTOR      targetVect;

    /* カメラ位置計算 */
    temp = GsIDMATRIX;                  /* 単位行列をもってくる */
    RotMatrixY(rotY, &temp);

    ApplyMatrixLV(&temp, pVp, &targetVe

0x8DFA00#

0000015(GsARGUNIT *);
    extern u_long *GsU_00020008(GsARGUNIT *);
    extern u_long *GsU_00020009(GsARGUNIT *);
    extern u_long *GsU_0002000c(GsARGUNIT *);
    extern u_long *GsU_0002000d(GsARGUNIT *);
    extern u_long *GsU_00020010(GsARGUNIT *);
    extern u_long *GsU_00020011(GsARGUNIT *);
    extern u_long *GsU_00020014(GsARGUNIT *);
    extern u_long *GsU_00020015(GsARGUNIT *);
    extern u_long *GsU_0000000a(GsARGUNIT *);
    extern u_long *GsU_0000000b(GsARGUNIT *);
    extern u_long *GsU_0000000e(GsARGUNIT *);
    extern u_long *GsU_0000000f(GsARGUNIT *);
    extern u_long *GsU_00000012(GsARGUNIT *);
    extern u_long *GsU_00000013(GsARGUNIT *);
    extern u_long *GsU_00000016(GsARGUNIT *);
    extern u_long *GsU_00000017(GsARGUNIT *);
    extern u_long *GsU_00030008(GsARGUNIT *);
    extern u_long *GsU_00030009(GsARGUNIT *);
    extern u_long *GsU_0003000c(GsARGUNIT *);
    extern u_long *GsU_0003000d(GsARGUNIT *);
    extern u_long *GsU_00030010(GsARGUNIT *);
    extern u_long *GsU_00030011(GsARGUNIT *);
    extern u_long *GsU_00030014(GsARGUNIT *);
    extern u_long *GsU_00030015(GsARGUNIT *);
    extern u_long *GsU_00040048(GsARGUNIT *);
    extern u_long *GsU_00040049(GsARGUNIT *);
    extern u_long *GsU_0004004c(GsARGUNIT *);
    extern u_long *GsU_0004004d(GsARGUNIT *);
    extern u_long *GsU_00040050(GsARGUNIT *);
    extern u_long *GsU_00040051(GsARGUNIT *);
    extern u_long *GsU_00040054(GsARGUNIT *);
    extern u_long *GsU_00040055(GsARGUNIT *);
    extern u_long *GsU_00010008(GsARGUNIT *);
    extern u_long *GsU_00010009(GsARGUNIT *);
    extern u_long *G

0x8EC200#

----------------------------------*/
static  void    SetVPPosition(short rotY, VECTOR *pVp)
{
    sp_w;
    MATRIX      temp;
    VECTOR      targetVect;

    /* カメラ位置計算 */
    temp = GsIDMATRIX;                  /* 単位行列をもってくる */
    RotMatrixY(rotY, &temp);

    ApplyMatrixLV(&temp, pVp, &targetVect);

    sp->rview.vpx = targetVect.vx;
    sp->rview.vpy = targetVect.vy;
    sp->rview.vpz = targetVect.vz;
}


/*------------------------------------------------------------------*/
/*              カメラ座標計算                                                                                     */
/*------------------------------------------------------------------*/
static  void    SetVPPosition2(CLASS_W *cls, short idx)
{
    sys_w;
    sp_w;

    cameraRotY = cls->rot.vy + cameraPosi[idx][CAM_ROT];
    cameraRotX = cameraPosi[idx][CAM_HIGH];
    cameraDist = cameraPosi[idx][CAM_DIST];

    sp->rview.vpx = cameraDist * rsin(cameraRotY) >> 12;
    sp->rview.vpz = cameraDist * rcos(cameraRotY) >> 12;
    sp->rview.vpy = -400 + (cameraDist * rsin(cameraRotX) >> 12);

    if (idx%2 == 0)
    {
        sp->rview.vrx = sp->rview.vrz = 0;
        sp->rview.vry = -580;
    }
    else
    {
        sp->rview.vrx = cls->xposi;
        sp->rview.vry = -400;
        sp->rview.vrz = cls->zposi;
    }
}
#endif


/*------------------------------------------------------------------*/
/*      リプレイ用のキー入力判定                                                                            */
/*------------------------------------------------------------------*/
static  int     GmkRepKeyIn(void)
{
    sp_w;
    sys_w;
    short       addVal = 0;                                                     /* L,R押下時の上げ底 */

    /******************************************

0x8F4E00#

512,240);  /*画面の解像度を仮で戻しておく*/

#ifdef TEST     /*デバッグフォントがつぶされるのでここで再設定*/
        SetDispMask(0);
        DrawSync(0);
        FntLoad(0x3c0,0x000);
        SetDumpFnt(FntOpen(-0xb0,-0x50,0x180,0xf0,0,0x100));
        DrawSync(0);
        SetDispMask(1);
#endif

        ligit_init();       /*解像度を変更するとライトが初期化されるので再設定*/

        disp3d( &s->classw[0], 0,       0, 0,    -2000, 2048);
        disp3d( &s->classw[1], 1,-300, 0,    -1800, 2048);
        disp4d( &s->classw1[ 0], 0,  0, 0, 0,    0 );                   /*ボール*/
        di

0xA6B200#

--------------------------------------------*/
#define DR_MAX      64      /* 使用するDR_MODEの最大数 */
void LObject_DR(Uchar flg,short otz)
{
    static DR_MODE  dr[DR_MAX][2];  /* DR_MODE */

    SetDrawMode(&dr[ls->dr_idx][*ls->side],0,0,GetTPage(0,flg,0,(*ls->side)*240),0);
    AddPrim(&SepOT[0].ot_work[*ls->side][otz],&dr[ls->dr_idx][*ls->side]);
    ls->dr_idx++;
}

/*------------------------------------------------
 ラインの描画
 引数:始点XY座標(short x0,short y0)
       終点XY座標(short x1,short y1)
       OTZ(short z)
       輝度(Uchar r,Uchar g,Uchar b)
 戻値:なし
------------------------------------------------*/
void LObject_Line(short x0,short y0,short x1,short y1,short otz,Uchar r,Uchar g,Uchar b)
{
    GsLINE  line;   /* 直線ハンドラ */

    line.attribute = 0;
    line.x0 = x0;
    line.y0 = y0;
    line.x1 = x1;
    line.y1 = y1;
    line.r  = r;
    line.g  = g;
    line.b  = b;

    GsSortLine(&line,&SepOT[0].ot[*ls->side],otz);
}

/*------------------------------------------------
 グラデーションラインの描画
 引数:輝度0(Uchar r0,Uchar g0,Uchar b0)
       輝度1(Uchar r1,Uchar g1,Uchar b1)
       始点XY座標(short x0,short y0)
       終点XY座標(short x1,short y1)
 戻値:なし
------------------------------------------------*/
void LObject_GLine(Uchar r0,Uchar g0,Uchar b0,Uchar r1,Uchar g1,Uchar b1,short x0,short y0,short x1,short y1)
{
    GsGLINE     line;

    line.attribute = 0;
    line.x0 = x0;
    line.y0 = y0;
    line.x1 = x1;
    line.y1 = y1;
    line.r0 = r0;
    line.g0 = g0;
    line.b0 = b0;
    l

0xA6E600#

,&sxy[0],&sxy[1],&sxy[2],&sxy[3],&p,&flag);

    /* エラー時は描画しない */
    if(flag < 0)    return;

    /* XY座標の算出 */
    for(i=0;i<4;i++)
    {
        if(ls->mode == MODE_EXTRA)
        {
            sx[i]  = ((short)(sxy[i] & 0x0000FFFF)) + 192;
            sy[i]  = ((short)((sxy[i]>>16) & 0x0000FFFF)) + 28 - EXTRA_DEFY;
        }
        else
        {
            sx[i]  = ((short)(sxy[i] & 0x0000FFFF)) + 192;
            sy[i]  = ((short)((sxy[i]>>16) & 0x0000FFFF)) + 28;
        }
    }

    /* OTに登録 */
    setXY4(&pt->ft4,sx[0],sy[0],sx[1],sy[1],sx[2],sy[2],sx

0xA71600#

ex_ft4,(-1*pt->ex_flg)<<4,(-1*pt->ex_flg)<<4,0);   /* 障害物 */
        for(i=4;i<8;i++)
        {
            pt->line[i].r = (-1*pt->ex_flg)<<4;
            pt->line[i].g = (-1*pt->ex_flg)<<4;
            pt->line[i].b = 0;
        }
    }

    /* ベクトルのセット */
    setVector(&v[0],-SIGHT_SIZE,-SIGHT_SIZE,0);
    setVector(&v[1], SIGHT_SIZE,-SIGHT_SIZE,0);
    setVector(&v[2],-SIGHT_SIZE, SIGHT_SIZE,0);
    setVector(&v[3], SIGHT_SIZE, SIGHT_SIZE,0);

    /* マトリックス用のベクトルをセット */
    setVector(&ls->vec,pt->ex_v.vx,pt->ex_v.vy,pt->ex_v.vz);

0xA74600#

                   {96,192,32,24},
                                        {48,176,48,48},
                                        {48,223,48,32},
                                        {96,192,32,24},
                                        {96,176,32,16},
                                   };

    /* 前準備 */
    if(replay->spark_cnt == 0)  return;
    if(ls->mode == MODE_EXTRA)
    {
        if(ls->event == EXTRA_REPLAY)   frame = replay->frame;
        else                            frame = replay->cnt;
    }
    else if(ls->mode == MODE_REPLAY)
    {
        frame = replay->frame;
    }
    else
    {
        if(ls->event == EVENT_REPLAY)   frame = replay->frame;
        else                            frame = replay->cnt;
    }

    /* アニ

0xA76E00#

ct_Wind(void)
{
    ls->sprt->gs[24].u = (ls->ball->wind/10)<<4;;
    ls->sprt->gs[26].u = (ls->ball->wind%10)<<4;
}

/*------------------------------------------------
 エキストラモードの情報表示の更新
 引数:なし
 戻値:なし
------------------------------------------------*/
void LObject_Extra(void)
{
    LSPRT   *sprt = ls->sprt;       /* スプライト情報へのポインタ */
    LEXTRA  *extra = ls->extra;     /* エキストラモード情報へのポインタ */

    /* エキストラモードのハイスコア更新のチェック */
    LSub_Score_Check(

0xA7A200#

    pt->v.vx = ball->ball_x;
    pt->v.vy = ball->ball_y;
    pt->v.vz = ball->ball_z;
    pt->flg = 1;
}

/

/********** 関数プロトタイプ宣言 **********/

/*----- 初期化 -----*/
void LInit_Model(void);         /* モデルデータの初期化 */
void LInit_Work(Uchar);         /* ゲームワークの初期化 */
void LInit_Sprite(void);        /* スプライトの初期化 */
void LInit_Ball(void);          /* ボールの初期化 */
void LInit_Player(void);        /* 選手の初期化 */
void LInit_Kage(void);          /* 影の初期化 */
void LInit_Gage1(void);         /* ゲージ・******************/
/*シュート後成功   */
/******************/
void shoot_success(CLASS_W *cls)
{
    switch(gmmotp->mot_act){
        case 1:
            if(GM_Random(2)){
                GM_Pose_Set(cls, GM_RESULT_SUCCESS1, 0, 0);
            }
            else{
                GM_Pose_Set(cls, GM_RESULT_SUCCESS2, 0, 0);
            }
            gmmotp->mot_act++;
            break;
        case 2:
        default:
            if(End_Pose_Stop(cls)){
//              gmmotp->mot_act = 0;
//              gmmotp->mot_no = 0;
            }
            break;
    }
}


/******************/
/*シュート後失敗   */
/******************/
void shoot_miss(CLASS_W *cls)
{
    switch(gmmotp->mot_act){
        case 1:
            if(GM_Random(2)){
                GM_Pose_Set(cls, GM_RESULT_MISS1, 0, 0);
            }
            else{
                GM_Pose_Set(cls, GM_RESULT_MISS2, 0, 0);
            }
            gmmotp->mot_act++;
            break;
        case 2:
        default:
            if(End_Pose_Stop(cls)){
//              gmmotp->mot_act = 0;
//              gmmotp->mot_no = 0;
            }
            break;
    }
}


/********************/
/*失敗時うなだれ       */
/********************/
void rif_miss(CLASS_W *cls)
{
    sp_w;

    switch(gmmotp->mot_a

0xA7D600#

 idou);
                move_regulate( &gm_work.main_cls->yposi,    gm_work.sub_cls->yposi, idou);
                move_regulate( &gm_work.main_cls->zposi,    gm_work.sub_cls->zposi, idou);
            }

            else{
                gm_work.main_cls->xposi = -gm_work.sub_cls->xposi;
                gm_work.main_cls->yposi =    gm_work.sub_cls->yposi;
                gm_work.main_cls->zposi =    gm_work.sub_cls->zposi;
            }
            break;
#endif
    }
}


/************************/
/*補正をかけながらの移動*/
/************************/
void move_regulate(short *moto, short saki,

0xA80400#

n Header           */
#include    "taka.h"
#include    "game.h"
#include    "lt_spd.h"
#include    "lt_cd.h"
#include    "g2d.h"
#include    "sdcall2.h"
#include    "mr_cmn2.h"
#include    "mr_18.h"

///////////////////////////////////////////////////////////////////////////
//define
///////////////////////////////////////////////////////////////////////////
/*
    クラスの内訳
    0x00:フェード用
----
    0x01:選手名1
    0x02:選手名プレート1
    0x03:ポイント
    0x04:アナウンサー名
    0x05:アナウンサープレート
    0x06:紹介表示用職業
    0x07:紹介表示用職業2
    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_C

0xA83600#

d[0].u = num%6*0x28;
    spd[0].v = num/6*0x18;

    return ret;
}

/*==========================================================================
    成功
==初期表示と演出
==  in: short num 何番をゲットしたか(1~9)
==  out:    ==0:    処理中 ==1:終了
==========================================================================*/
int SetG2dGet08( short num )
{
    int ret;
    SPD_W* spd;

    ret = _call_Em01( SPD_EM08_GET );
    spd = GetSpd( SPD_EM08_GET );
    spd[0].u = num%6*0x28;
    spd[0].v = num/6*0x18;

    return re

0xA86400#

ロ存しておく*/
            cls->xposi = 300;
            spd = (SPD_W*)cls->chara;
            i=-1;
            do{
                i++;
                keep_spd_x08[i] = spd[i].offset_x;
            }while( spd[i].ccode != END );
            SD_call(SD_SLIDEIN);
            tag->tmp = tag->timer = 0;
            tag->step++;
            break;
        case 1:     /*画面右からホームポジションへ*/
            cls->xposi -= 64;
            if ( cls->xposi < 0 ){
                cls->xposi = 0;
                tag->step++;
            }
            break;
        case 2:     /*そのまま少し待つ*/
            if ( ++tag->timer > 30*2 ){ /*2フレで2秒程度*/
                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->

0xA88C00#

_x,offset_y    palette */
    {DAT,0x28,0x18,0x00,0x00,0xffc3,0x0010,0x4d},
    {DAT,0x28,0x18,0x80,0xa0,0x0000,0x0010,0x4d},
    {END,0x10,0x18,0xa8,0xe8,0x002c,0x0010,0x4d},
    };
static SPD_W    get_1_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x00,0x00,0xff94,0x0010,0x4e},
    {DAT,0x28,0x18,0x80,0xa0,0xffbc,0x0010,0x4e},
    {DAT,0x28,0x18,0x80,0xb8,0xffe8,0x0010,0x4e},
    {DAT,0x20,0x18,0xb8,0xd0,0x000e,0x0010,0x4e},
    {DAT,0x28,0x18,0x90,0xd0,0x002e,0x0010,0x4e},
    {DAT,0x10,0x18,0xa8,0xe8,0x0051,0x0010,0x4e},
    {END,0x10,0x18,0xa8,0xe8,0x0061,0x0010,0x4e},
    };
static SPD_W    miss_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x30,0x18,0xd0,0xb8,0xffb0,0x0010,0x4f},
    {DAT,0x10,0x18,0x80,0xd0,0xffdc,0x0010,0x4f},
    {DAT,0x28,0x18,0xd0,0xa0,0xffec,0x0010,0x4f},
    {DAT,0x28,0x18,0xd0,0xa0,0x0010,0x0010,0x4f},
    {DAT,0x10,0x18,0xa8,0xe8,0x0038,0x0010,0x4f},
    {END,0x10,0x18,0xa8,0xe8,0x0048,0x0010,0x4f},
    };
static SPD_W    kiroku_1_spd[]={
    /*  ccode,xsize,ysi

0xA8B600#

1)){
                sp->step1++;
                gm_ball.link = ON;
                break;
            }
            gm_move_chara(gm_work.main_cls);                                                /*キャラの移動*/
            break;

        case 7:         /*座標の修正*/
            GMComkeyInput(com, 0);                                      /*COMの動き*/
            check_ball_move(gm_work.main_cls, gm_work.ball_cls1);       /*ボールの移動と拾い判定*/
            if( gm_regulate(gm_work.main_cls, gm_work.ball_cls1, gm_work.main_cls->xposi, -1900+hurdle_no*2400) ){
                sp->step1++;
                gm_high.f_thigh.r=128;                                      /*test ゲージの色変え*/
                gm_high.f_thig

0xA8DE00#

osi+rif_range[1][2]) )
            {
                /*リフティング音*/
                selectLiftingSound(GMM_LEG_PLAIN, &sdNum);
                GM_SD_call(sdNum);

                gmmotp->mot_act = 1;
                gmmotp->mot_no  = GMM_LEG_USTEP;
                gmmotp->turn_flg = OFF;
                ball_posi_init(cls, cls1, gm_ball.high);                                /*ボールの移動初期化*/
                return 1;
            }
            else if( (cls1->yposi>=cls->yposi+rif_range[2][0] && cls1->yposi<cls->yposi+rif_range[2][1]) )
            {
                /*リフティング音*/
                selectLiftingSound(GMM_FOOT_PLAIN, &sdNum);
                GM_SD_call(sd

0xA91200#

-------------------------------
 カメラの管理
 引数:なし
 戻値:なし
------------------------------------------------*/
void LView_System(void)
{
    LVIEW       *view = ls->view;       /* カメラ情報へのポインタ */
    GsRVIEWUNIT *pt = ls->view->pt;     /* HMD視点位置(リファレンス型)へのポインタ */

    /* カメラの参照座標 */
    LView_Parent();

    /* カメラの設定 */
    pt->vpx = ((((view->r * rcos(view->v))>>12) * rcos(view->h))>>12) + view->vrx + view->dx;
    pt->vpy =   ((view->r * rsin(view->v))>>12)                       + view->vry + view->dy;
    pt->vpz = ((((view->r * rcos(view->v))>>12) * rsin(view->h))>>12) + view->vrz + view->dz;
    pt->vrx = view->vrx + view->dx;
    pt->vry = view->vry + view->dy;
    pt->vrz = view->vrz + view->dz;

    /* 視点位置の設定 */
    GsSetRefViewUnit(pt);
}

/*------------------------------------------------
 カメラの注視点の座標をセット
 引数:カメラの注視点XYZ座標(short x,short y,short z)
 戻値:なし
------------------------------------------------*/
void LView_Notice(short x,short y,short z)
{
    LVIEW   *view = ls->view;   /* カメラ情報へのポインタ */

    view->vrx = x;
    view->vry = y;
    view->vrz = z;
}

/*------------------------------------------------
 カメラの視点要素をセット
 引数:カメラの要素群
 戻値:なし
------------------------------------------------*/
void LView_Set(short h,short v,short r,short dx,short dy,short dz)
{
    LVIEW   *view = ls->view;   /* カメラ情報へのポインタ */

    view->h = h;    /* カメラの水平角度 */
    view->v = v;    /* カメラの垂直角度 */
    vie

0xA94200#

1]->dx,    cnt);
    ret += LDemo_Culc(&view->dy,            pt[0]->dy,  pt[1]->dy,  cnt);
    ret += LDemo_Culc(&view->dz,            pt[0]->dz,  pt[1]->dz,  cnt);
    LView_Projection(*view->proj);

    /* 終了判定 */
    return(ret);
}

/*------------------------------------------------
 カメラデモの計算
 引数:変化させるカメラの要素へのポインタ(short *pt)
       変化前の値(short A)
       変化後の値(short B)
       変化に掛かるフレーム数(short cnt)
 戻値:終了判定(0:終了 1:継続)
------------------------------------------------*/
Uchar LDemo_Culc(short *pt,short A,short B,short cnt)
{
    if((*pt) != B)
    {
        *pt += (B - A) / cnt;
        if((A > B && (*pt) < B) || (A < B && (*pt) > B))
        {
            (*pt) = B;
            return(0);
        }
    }
    else
    {
        return(0);
    }

    return(1);
}

/*------------------------------------------------
 リプレイの初期化
 引数:なし
 戻値:なし
------------------------------------------------*/
void LReplay_Init(void)
{
    register int    i;                      /* 作業カウンター */
    LSAVE           *save = ls->save;       /* セーブ情報へのポインタ */
    LREPLAY         *replay = ls->replay;   /* リプレイ情報へのポインタ */

    bzero(replay->pt,LWORK_SIZE);   /* リプレイワークをリプレイの最大記録数のサイズだけ0クリアする */
    replay->frame = 0;              /* フレーム(再生)の初期化 */
    replay->cnt = 0;                /* カウンター(記録)の初期化 */
    replay->cont = 0;               /* リプレイの再生方法の初期化(0:自動 1:手動) */
    replay->manual = 0;             /* リプレイの手動操作時のフラグの初期化(0:停止 1:等速再生 2:スロー再生 3:停止L1 4:停止R1 5:等速L1 6:等速R1 7:スローL1 8:スローR1) */

0xA96A00#

 16;       /* 水平視点 */
        if(KEYLRIGHT(JOY1)) view->h += 16;      /* 水平視点 */
        if(KEYLUP(JOY1))    view->v -= 16;      /* 垂直視点 */
        if(KEYLDOWN(JOY1))  view->v += 16;      /* 垂直視点 */

        /* カメラの視点切り替え */
        if(OLDKEYSELECT(JOY1))
        {
            if(ls->mode == MODE_EXTRA || ls->save->EX == 1) view->event = (++view->event)%4;
            else                                            view->event = (++view->event)%5;
            LView_Event_Replay(0);
        }

        /* リプレイのプレートアニメ管理 */
        LReplay_Anime();

        /* 停止、等速再生、スロー再生切り替え */
        if(OLDKEYRUP(JOY1) || OLDKEYSTART(JOY1))    replay->manual = cont_tbl[replay->manual][0];
        else if(OLDKEYRLEFT(JOY1))                  replay->manual = cont_tbl[replay->manual][1];

        /* 巻き戻し、早送り切り替え */
        if((!KEYL1(JOY1) && !KEYR1(JOY1)) || (KEYL1(JOY1) && KEYR1(JOY1)))  LReplay_Speed(speed_tbl[replay->manual][0]);
        else if(KEYL1(JOY1))                                                LReplay_Speed(speed_tbl[replay->manual][1]);
        else if(KEYR1(JOY1))                                                LReplay_Speed(speed_tbl[replay->manual][2]);
    }
}

/*------------------------------------------------
 リプレイのプレートアニメ管理
 引数:なし
 戻値:なし
------------------------------------------------*/
void LReplay_Anime(void)
{
    extern REP_CTRL rep_ctrl08;     /* リプレー用プレート制御構造体 */

    if((!KEYL1(JOY1) && !KEYR1(JOY1)) || (KEYL1(JOY1) && KEYR1(JOY1)))
    {
        if(rep_ctrl08.status & REP_CTRL_REW)        SetG2dRew08();
        if(rep_ctrl08.status & REP_CTRL_FEW)        SetG2dFew08();
    }
    else if(KEYL1(JOY1))
    {
        if(!(rep_ctrl08.status & REP_CTRL_REW))     SetG2dRew08

0xA9AC00#

nFF */
                    break;
        /* グー */
        case G_G:
        case G_P:   (pt+PARTS_LHAND)->be  = 0;  /* 左手パーをOFF */
                    (pt+PARTS_LHAND2)->be = 1;  /* 左手グーをON */
                    break;
    }

    /* 右手 */
    switch(type)
    {
        /* パー */
        case P_P:
        case G_P:   (pt+PARTS_RHAND)->be  = 1;  /* 右手パーをON */
                    (pt+PARTS_RHAND2)->be = 0;  /* 右手グーをOFF */
                    break;
        /* グー */
        case G_G:
        case P_G:   (pt+PARTS_RHAND)->be  = 0;  /* 右手パーをOFF */
                    (pt+PARTS_RHAND2)->be = 1;  /* 右手グーをON */
                    break;
    }
}

/*------------------------------------------------
 モーションの手の管理
 引数:なし
 戻値:なし
------------------------------------------------*/
void LMotion_TSystem(void)
{
    CLASS_W     *cls = ls->Phuman;  /* 選手モデルへのポインタ */
    Uchar       *pt = ADDR_HAND;    /* モーションの手の平テーブルへのポインタ */

    if(cls->pose != 0)  return;
    LMotion_Hand(*(pt + cls->anime_no));
}

/*------------------------------------------------
 モーションの足音
 引数:なし
 戻値:な

0xA9E600#

    s->classw1[24].obj3D_w[0].ot_no = 250;      /*客席(右)*/
    s->classw1[25].obj3D_w[0].ot_no = 249;      /*看板*/
    s->classw1[26].obj3D_w[0].ot_no = 250;      /*客席(後ろ)*/
    s->classw1[27].obj3D_w[0].ot_no = 251;      /*照明*/

    /*コース*/
    for(i=7; i<=20; i++){
        s->classw1[i].obj3D_w[0].ot_no = 248;       /*下から3番目*/
    }

    /*ゴール*/
    s->classw1[5].obj3D_w[0].ot_no = 248;           /*下から3番目*/
#else
    /*背景*/
    s->classw1[21].obj3D_w[0].ot_no = GROUND_OT;        /*地面*/
    s->classw1[22].obj3D_w[0].ot_no = 254;      /*

0xAA1E00#

恚A */
        ball->ball_y = ball->tmp_y;     /* ボールのY座標の復帰 */
        ball->ball_z = ball->tmp_z;     /* ボールのZ座標の復帰 */
    }
}

/*------------------------------------------------
 ボールの当たり判定
 引数:なし
 戻値:なし
------------------------------------------------*/
void LBall_Hit(void)
{
    /* ボールの座標保管 */
    LBall_Tmp(0);

    /* ボールとZ軸の壁の当たり判定 */
    LBall_Hit_Zwall(MODE_MUSCLE);

    /* ボールとX軸の壁の当たり判定 */
    LBall_Hit_Xwall();

    /* ボールと地面の当たり判

0xAA9400#

フバウンドフラグを立てる */
            LHelp_Effect3_Set();                                                        /* エフェクト3(着弾点)をセットする */

            if(ls->mode != MODE_REPLAY)
            {
                LReplay_Srec(SD_18_POST);               /* リプレイのSE記録 */
                if(ls->step != 2)
                {
                    SD_call(SD_18_POST);                /* SE */
                    AutoShock(ls->Phuman,VIB_FRAME);    /* 振動 */
                }
            }
        }
        ball->hit_x = 1;                                                                /* ボールのX座標当たりフラグ(0:未衝突 1:衝突済) */
    }

    /* リプレイのカメラ座標のセット */
    if(ball->ball_x >= X_LIMIT || ball->ball_x <= -X_LIMIT) LReplay_Cpos(); 
}

/*------------------------------------------------
 ボールの水平角度の反射(入射)
 引数:角度変化のタイプ(1:入射 -1:反射)(Uchar type)
 戻値:なし
------------------------------------------------*/
void LBall_Ref_Hangle(Schar type)
{
    LBALL   *ball = ls->ball;   /* ボール情報へのポインタ */

    /* ボールの入射角度を計算する(風のZ方向の最終速度は加味しない) */
#if 0
//  ball->H_angle = ratan2(ball->dz + ball->W_ez , ball->dx + ball->C_ex + ball->W_ex);
    ball->H_an

0xAACA00#

<塔gカメラ */
void beholder_2( void )
{
    sp_w;

    beholder.ddd += ( 4096 - 8 );
    beholder.ddd %= 4096;

    /* 視点更新 */
    beholder.view.vpx = beholder.view.vrx + 500 * rsin( beholder.ddd ) / 4096;
    beholder.view.vpz = beholder.view.vrz + 500 * rcos( beholder.ddd ) / 4096;

    GsSetRefViewUnit( sp->view_pt );
}

/* 勝ち負けカメラ(対戦直後) */
void beholder_3( unsigned char id )
{
    sp_w;
    sys_w;

    SVECTOR svc;

    if( beholder.ddd == 0 )
    {
        /* 勝った? */
        if( id == ddp_replay.winner )
        {
            /* 落ちた? */
            if( dead_man[id].death_mask >= DDP_A_FALLDOWN0 && dead_man[id].death_mask <= DDP_A_FALLDOWN4 )
            {
                /* 参照点取得 */
                get_joint( id, DDP_J_WAIST, &svc );
                /* 参照点更新 */
                beholder.view.vrx = svc.vx;
                beholder.view.vry = svc.vy - 100;
                beholder.view.vrz = svc.vz;
                beholder.dpy = dice( 8 ) * 128 + 512;
                beholder.dpz = dice( 4 ) * 128 - 128;

                beholder.dpx = 2048;
                beholder.ddd = 1;
            }else
            {
                /* 参照点取得 */
                get_joint( id, DDP_J_WAIST, &svc );
                /* 参照点更新 */
                beholder.view.vrx = svc.vx;
                beholder.view.vry = svc.vy - 100;
                beholder.view.vrz = svc.vz;
                if( id == 0 )
                {
                    beholder.dpy = -dice( 4 ) * 128;
                }else
                {
                    beholder.dpy = dice( 4 ) * 128 + 2048;
                }
                beholder.dpz = dice( 6 ) * 128 + 1664;

                beholder.dpx = 2048;
                beholder.ddd = 2;
            }
        }else
        {
            /* 参照点取得 */
            get_joint( id, DDP_J_WAIST, &svc );

            /* 参照点更新 */
            switch( s->classw[id]

0xAB0A00#

EX_Replay(void);       /* 実況EX(進藤):リプレイ */
void LTalk_Hatu_EX_Shoot(Uchar);        /* 実況EX(初田):シュート前 */
void LTalk_Hatu_EX_Success(void);       /* 実況EX(初田):成功 */
void LTalk_Hatu_EX_Miss(void);          /* 実況EX(初田):失敗 */
void LTalk_Hatu_EX_Replay(void);        /* 実況EX(初田):リプレイ */
void LTalk_Hatu_EX_GEnd(Uchar);         /* 実況EX(初田):結果 */

#define FURU_OPENING        0       /* 競技前演出 */
#define FURU_CHANGE         2       /* アナウンサー交替 */
#define FURU_PAST           3       /* 前回の感想 */
#define FURU_BEFORE         13      /* 宣言前 */
#define FURU_DECLARE        17      /* 宣言時 */
#define FURU_AFTER          18      /* 宣言後 */
#define FURU_SHOOT          27      /* シュート時 */
#define FURU_SUCCESS        29      /* 成功 */
#define FURU_MISS           35      /* 失敗 */
#define FURU_REPLAY         44      /* リプレイ */
#define FURU_GEND           51      /* 結果 */
#define SHIN_REPLAY         58      /* リプレイ */
#define HATU_INTRO          64      /* 選手紹介 */
#define HATU_PAST           74      /* 前回の感想 */
#define HATU_BEFORE         90      /* 宣言前 */
#define HATU_DECLARE        92      /* 宣言時 */
#define HATU_AFTER          94      /* 宣言後 */
#define HATU_SUCCESS        111     /* 成功 */
#define HATU_MISS           118     /* 失敗 */
#define HATU_REPLAY         125     /* リプレイ */
#define HATU_GEND           133     /* 結果 */

#define FURU_EX_SHOOT       138     /* シュート前(エキストラモード) */
#define FURU_EX_SUCCESS     144     /* 成功(エキストラモード) */
#define FURU_EX_MISS        145     /* 失敗(エキストラモード) */
#define FURU_EX_REPLAY      147     /* リプレイ(エキストラモード) */
#define FURU_EX_GEND        151     /* 結果(エキストラモード) */
#define SHIN_E

0xAB4C00#

Talk_Call(FURU_REPLAY+4);  /* 「わずかに外れてしまいました、ボールはむなしく宙を舞います」 */                /* 汎用 */
    }
    else if(declare->now_get >= 0)
    {
        /* 成功 */
        if(declare->now_get == declare->select) LTalk_Call(FURU_REPLAY+5);  /* 「見るものをひきつける!」 */             /* 宣言通り */
        else                                    LTalk_Call(FURU_REPLAY+6);  /* 「さすが、確実に打ち抜いていきます」 */    /* 宣言とは違う */
    }
}

/*------------------------------------------------
 実況(古舘):競技終了
 引数:実況タイプ(Uchar type)
 戻値:なし
------------------------------------------------*/
void LTalk_Furu_GEnd(Uchar type)
{
    LBOARD  *board = ls->board;     /* ボード情報へのポインタ */

    switch(type)
    {
        /* 記録*枚 */
        case 0:     LTalk_Call(FURU_GEND);  /* 「松井秀喜(ハイテンション)、記録(1~8)枚」 */
                    break;

        /* コメント(パーフェクト未達成) */
        case 1:     if(board->rest == 1)
                    {
                        LTalk_Call(FURU_GEND+2);    /* 「あと1枚、あと1枚が遠かった。残念です、これは悔いが残ります」 */          /* 残り1枚 */
                    }
                    else if(board->rest == 2)

0xABB600#

* LV3~4 */
                        LTalk_Call(HATU_EX_GEND+3);     /* 「これで終わってしまったー!がっかりしている!これはくやしー!」 */
                    }
                    else if(extra->level >= 5 && extra->level <= 6)
                    {
                        /* LV5~6 */
                        LTalk_Call(HATU_EX_GEND+4);     /* 「残念!もっと見たかったのですが、これで終わりです!」 */
                    }
                    break;
    }
}

d LTalk_Hatu_Declare(void);         /* 実況(初田):宣言時 */
void LTalk_Hatu_After(Uchar);           /* 実況(初田):宣言後 */
void LTalk_Hatu_Success(void);          /* 実況(初田):成功 */

0xAC2400#

o現フラグを立てる */
    //  g_FlgSet(13);       /* ギャラリーモードフラグ(ロングシュートを4枚以上クリア) */
    //  g_FlgSet(21);       /* ギャラリーモードフラグ(ロングシュートでビンゴ完成) */
    //  g_FlgSet(37);       /* ギャラリーモードフラグ(ロングシュートを完全制覇) */
    //  g_FlgSet(43);       /* ギャラリーモードフラグ(EXロングシュートを4レベル以上クリア) */
    //  g_FlgSet(48);       /* ギャラリーモードフラグ(EXロングシュートを全レベルクリア) */
#endif

#if 0
    sp->stage_no = 0;
    set_kongou_mode();  /* 金剛くん出現フラグを立てる */
    sp->stage_no = 8;

    sp->stage_no = 0;   set_konami_mode();  /* エキストラモードフラグ */
    sp->stage_no = 1;   set_konami_mode();  /* エキストラモードフラグ */
    sp->stage_no = 3;   set_konami_mode();  /* エキストラモードフラグ */
    sp->stage_no = 5;   set_konami_mode();  /* エキストラモードフラグ */
    sp->stage_no = 8;   set_konami_mode();  /* エキストラモードフラグ */
#endif

    /***** (仮)ゲームモードの指定 *****/
#ifdef  YOSSY_SPEED
//  sp->ModSel.mode = MODE_MUSCLE;      /* 00:マッスルランキング */
//  sp->ModSel.m

0xAC5A00#

*view->proj;
                        (pt+1)->h    = view->h;
                        (pt+1)->v    = view->v;
                        (pt+1)->r    = view->r;
                        (pt+1)->dx   = view->dx;
                        (pt+1)->dy   = view->dy;
                        (pt+1)->dz   = view->dz;
                    }
                    if(KEYLLEFT(JOY1))      cnt -= 4;
                    if(KEYLRIGHT(JOY1))     cnt += 4;
                    limitRange(cnt,4,512);
                    if(OLDKEYRRIGHT(JOY1))  LDemo_Set(DM_OPEN_IDX);
                    if(KEYRUP(JOY1))        LDemo_Change(DM_OPEN_IDX,DM_OPEN_IDX+1,cnt);
                    FntPrint("DA(%d,%d,%d,%d,%d,%d,%d)\n",  pt->proj,pt->h,pt->v,pt->r,pt->dx,pt->dy,pt->dz);
                    FntPrint("DB(%d,%d,%d,%d,%d,%d,%d)\n",  (pt+1)->proj,(pt+1)->h,(pt+1)->v,(pt+1)->r,(pt+1)->dx,(pt+1)->dy,(pt+1)->dz);
                    FntPrint("CNT(%d)\n",cnt);
                    break;
#endif

        /* メイン */
        case 4:     if(ls->flg == 0)
                    {
                        /* カメラデモ */
                        if(LDemo_Change(tbl[ls->sstep][0],tbl[ls->sstep][1],tbl[ls->sstep][2]) == 0)
                        {
                            ls->sstep++;
                            if(ls->sstep < OP_DEMO_NUM) LDemo_Set(tbl[ls->sstep][0]);
                            else                        ls->flg++;
                        }
                    }
                    else if(ls->flg == 1)
                    {
                        /* 古舘の実況の終了を待つ */
                        if(LSound_Talk_Echeck(16) == 1)
                        {
                            ls->flg = OP_NORMAL_END;
                            ls->step = 6;
                        }
                    }

                    /* スキップ */
                    if(OLDKEYRRIGHT(JOY1))
                    {
                        ls->flg = OP_SKIP_END;
                        ls->step = 5;
                    }
                    break;

        /* フェードアウト */
        case 5:     if(MenuFadeOut(32,0) == 1)  ls->step++;
                    break;

        /* 終了 */
        case 6:     if(sd_type)
                    {
                        AnaDispSwitch(ls->Pfuru,OFF);   /* 古館モデル・非表示 */

0xAC8E00#

w->dx;
                        pt->dy   = view->dy;
                        pt->dz   = view->dz;
                    }
                    if(OLDKEYRLEFT(JOY1))
                    {
                        (pt+1)->proj = *view->proj;
                        (pt+1)->h    = view->h;
                        (pt+1)->v    = view->v;
                        (pt+1)->r    = view->r;
                        (pt+1)->dx   = view->dx;
                        (pt+1)->dy   = view->dy;
                        (pt+1)->dz   = view->dz;
                    }
                    if(OLDKEYRRIGHT(JOY1))  LDemo_Set(DM_RES_IDX);
                    if(KEYRUP(JOY1))        LDemo_Change(DM_RES_IDX,DM_RES_IDX+1,64);
                    if(OLDKEYRDOWN(JOY1))
                    {
                        tmp = 0;
        

0xAD0200#

ン */
        case 1:     if(MenuFadeIn(32) == 1)
                    {
                        /* BGM */
                        if(board->rest == 1)
                        {
                            SD_call(O_ATO);     /* 「あと1枚」コール */
                        }
                        else if(board->rest == 2)
                        {
                            SD_call(O_200);     /* 「200万」コール */
                        }
                        else
                        {
                            if(ball->wind < 10)         SD_call(O_SEN02);   /* 風速:0.0m/s~0.9m/s */
                            else if(ball->wind < 30)    SD_call(O_SEN10);   /* 風速:1.0m/s~2.9m/s */
                            else if(ball->wind < 50)    SD_call(O_SEN07);   /* 風速:3.0m/s~4.9m/s */
                            else if(ball->wind < 100)   SD_call(O_SEN04);   /* 風速:5.0m/s~9.9m/s */
                        }

                        /* 実況 */
                        if(ls->ana == ANA_HATU)
                        {
                            LTalk_Hatu_Past();
                            LTalk_Hatu_Before();
                        }
                        else if(ls->ana == ANA_FURU)
                        {
                            LTalk_Furu_Past();
                            LTalk_Furu_Before();
                        }
                        ls->step++;
                    }
                    break;

        /* パネル選択 */
        case 2:
#if 1
                    LView_Declare();                        /* パネル宣言のカメラワーク */
                    if(!ls->cpu)        LCont_Declare();    /* パネル宣言の操作 */

                    if( (!ls->cpu && OLDKEYRRIGHT(JOY1)) || (ls->cpu && LCom_Declare()))
//                  if( OLDKEYRRIGHT(JOY1) )
                    {
                        /* SE */
                        SD_call(SD_DECIDE);

                        /* 実況 */
                        SD_call(SD_CTL_XAKILL2);        /* 実況を全て止める */
                        if(ls->ana == ANA_HATU)         LTalk_Hatu_Declare();
                        else if(ls->ana == ANA_FURU)    LTalk_Furu_Declare();

                        /* カメラ */
                        LView_Parent_Set(VR_HUMAN);
                        tmp = Random(DM_DEC_NUM);
//                      tmp = (tmp++)%DM_DEC_NUM;
                        LDemo_Set(DM_DE

0xAD5C00#

i = 6144;
                        cls->rot.vy = -1024;
                        LMotion_Set(MKD_BAD1,MFLG_INIT);
                    }
                    else
                    {
                        LMotion_Walk();
                        ret = LDemo_Change(DM_IMP_IDX+8+(tmp<<1),DM_IMP_IDX+9+(tmp<<1),256);
                    }
                    break;

/***** パーフェクト達成 *****/

        /* 通常 */
        case 4:     if(!type)
                    {
                        /* カメラ */
                        tmp = 0;
                        LDemo_Set(DM_PER_IDX);

                        /* 選手 */
                        cls->xposi = 0;
                        cls->zposi = -1024;
                        cls->rot.vy = 2048;

                        /* 特殊カメラ */
                        if(*ls->chara == NO_AKIYAMA)
                        {
                            LView_Parent_Set(VR_FREE);
                            LView_Notice(0,0,-1536);
                        }

                        /* 選手デモモーション */
                        LMotion_Dset(1);
                    }
                    else
                    {
                        /* カメラデモ */
                        if(LDemo_Change(DM_PER_IDX+(tmp<<1),DM_PER_IDX+(tmp<<1)+1,128) == 0)
                        {
                            tmp++;
                            if(tmp < 4)
                            {
                                LDemo_Set(DM_PER_IDX+(tmp<<1));
                                LMotion_Dset(1);
                            }
                            else    return(0);
                        }
                    }
                    break;

        /* 金剛くん専用 */
        case 5:     if

0xAE6E00#

   /*「(選手名が)」「自爆!」*/
    FD_F09,                             /*「(選手名が)」「優勝を決めました!」*/

    FD_F12,                             /*「(選手名が)」「自爆!」*/
    FD_F13,                             /*「(選手名が)」「自ら消えて行きました!」*/

    FD_F10,                             /*「(選手名の)」「自爆により」*/
    FD_F11,                             /*「(選手名が)」「優勝を決めました!」*/
};


short ddp_fu_replay[] = {
    FK1_C01,                            /*「それではリプレイです」*/
    FK1_C02,                            /*「リプレイを見てみましょう」*/
    FK1_C04,                            /*「リプレイで振り返ってみましょう」*/
    FK1

0xAECC00#

== 72 )
                {
                    /* 右手 */
                    SD_call( SD_17_CLAP2 );
                }
                if( s->classw[id].pose == 98 )
                {
                    /* 足をする */
                    SD_call( SD_17_SLIDE );
                }
                if( s->classw[id].pose == 31 || s->classw[id].pose == 37 || s->classw[id].pose == 42 || s->classw[id].pose == 70 || s->classw[id].pose == 104 )
                {
                    SD_call( SD_17_KANE1 );
                }
                if( s->classw[id].pose == 26 || s->classw[id].pose == 85 )
                {
                    SD_call( SD_17_KANE2 );
                }
                if( s->classw[id].pose == 14 || s->classw[id].pose == 34 || s->classw[id].pose == 40 || s->classw[id].pose == 54 )
                {
                    SD_call( SD_17_KANE3 );
                }
            }
            if( s->classw[id].work0 == DEMO_MOTION_OFFSET + 2 )
            {
                if( s->classw[id].pose == 16 )
                {
                    /* 足をする */
                    SD_call( SD_17_SLIDE );
                }
                if( s->classw[id].pose == 12 )
                {
                    /* 左足 */
                    SD_call( SD_17_FOOT1L + id * 2 );
                }
            }
            break;
        case 0x09:      /* 古田 */
            if( s->classw[id].work0 == DEMO_MOTION_OFFSET + 3 )
            {
                if(

0xAF3C00#

   GsCOORDUNIT     DWorld;                             /* 体全体用                                 */
    GsCOORDUNIT     DWorld_H;                           /* 頭専用                                      */
    MATRIX              ls;

/*1999.04.14    深野*/
    OBJ3D_W                 obj3D_w [ OBJ3DMAX ];

    MATRIX              oldmatrix[OBJECTMAX];
    Ushort              anime_no;                           /* モーション番号                              */
    Uchar                   pose;                                   /* モーション内のポーズフレーム             */
    Uchar                   player_no;                      /* キャラ#                                 */
    Uchar                   animeType;                      /* モーション種別(通常,DEMO)*/
    Uchar                   no1AnmType;                     /* No.1モーションのタイプ*/

    Uchar                   cpu;                                    /* 0:PLAYER 1:CPU                       */
/*1999.07.07    nakayama*/
    Uchar                   entry_no;                           /* キャラのエントリーした順番                */

    short                   hangle;                             /* 頭の角度Y軸                           */
    short                   hangle_ud;                      /* 頭の角度X軸                           */
/*99.05.26  nakayama*/
    Uchar                   side;                                   /*==0:player1側  ==1:player2側*/
    Uchar                   hdir;                                   /*反転情報  ==0:右利き ==1:左利き*/

    Uchar                   merge_timer;                    /*  */

                                                                            /* Free Work */
    Uchar                   mainstep;                           /* ステップワーク */
    Uchar                   substep;
    Uchar   

0xAFCC00#

示*/
        /*リプレー用ボタン*/
    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++ ){
        spd[i].palette = mode ? 0x01 : 0x03;
    }
        /*リプレー用メニュー2*/
    set2d( G_CLSR_MENU2, SPD_REP_MENU2, MODE16, 0,0, 11, 0, 10, 1 );
    spd = GetSpd( SPD_REP_MENU2 );
    spd[0].palette = mode ? 0x01 : 0x03;
    spd[1].palette = mode ? 0x01 : 0x03;
        /*L、Rの文字*/
    set2d( G_CLSR_LR, SPD_REP_LR, MODE16, 0,0, 13, 0, 10, 1 );
    spd = GetSpd( SPD_REP_LR );
    spd[0].palette = mode ? 0x01 : 0x03;
    spd[1].palette = mode ? 0x01 : 0x03;
        /*戻しマーク*/
    set2d( G_CLSR_REW, SPD_REP_REW, MODE16, 0,0, 13, 0, 10, 1 );
        /*送りマーク*/
    set2d( G_CLSR_FEW, SPD_REP_FEW, MODE16, 0,0, 13, 0, 10, 1 );
    if ( !mode ){       /*操作不能時*/
            /*輝度を半分に*/
        cls = &s->classw0[ G_CLSR_REW ];
        cls->r = cls->g = cls->b = 0x40;
        cls = &s->classw0[ G_

0xB09400#

ITEM_02                    (0xa0)      /* ビーチフラッグス           ファイル数 2個 */
#define LOAD_ITEM_03                    (0xa2)      /* ガロンスロー              ファイル数 2個 */
#define LOAD_ITEM_04                    (0xa4)      /* バック転50M走        ファイル数 2個 */
#define LOAD_ITEM_05                    (0xa6)      /* スプレーヒッター            ファイル数 3個 */
#define LOAD_ITEM_06                    (0xa9)      /* ゲームメーカー             ファイル数 2個 */
#define LOAD_ITEM_07                    (0xab)      /* デットマンズドロップ   ファイル数 2個 */
#define LOAD_ITEM_08                    (0xad)      /* ロングシュート             ファイル数 2個 */
#define LOAD_ITEM_09                    (0xaf)      /* エンディング             ファイル数 2個 */

/*共用パレット(b.col系)*/
#define LOAD_COMN_PAL                   (0xb1)
/*ロード時タイトル&説明*/
#define LOAD_WAIT_00                    (0xb2)  /*ここから9競技分  */
/*ロード時金剛君*/
#define LOAD_WAIT_KONGO             (0xbb)  /*ここから2パターン */
/*コナミロゴ*/
#define LOAD_LOGO                           (0xbd)  /*ロゴ*/

/*99.12.15 sugi */
#define LOAD_PO_DAT_TBL             (0xbe)      /* パンチアウトデータテーブル */
/*競技中の2D*/
#define LOAD_G2D_00                     (0xbf)  /*ここから10競技分 */

/*No.1用2Dデータ*/
#define LOAD_NO1_CSR                    (0xc8)
/*No.1用顔グラ*/
#def

0xB1AE00#

1  /*宣言                                */
#define SPD_EM08_GET            0x1002  /*成功                                */
#define SPD_EM08_MISS           0x1003  /*失敗                                */
#define SPD_EM08_RESULT1    0x1004  /*結果表示1                 */
#define SPD_EM08_RESULT2    0x1005  /*結果表示2                 */
#define SPD_EM08_BINGO      0x1006  /*ビンゴ!                      */
#define SPD_EM08_RESULT3    0x1007  /*エキストラ用結果      */
#define SPD_EM08_START      0x1008  /*エキストラ用開始      */
#define SPD_EM08_GET2           0x1009  /*エキストラ用成功      */
#define SPD_EM08_CLEAR      0x100a  /*エキストラ用クリア */
#define SPD_EM08

0xB2B400#

2;                 /* 反応速度 */
    unsigned char brain2;                   /* 反応 */

    unsigned short btn[8];                  /* 連打のスケジュール */
    unsigned short bbb;                     /* 連打のスケジュール用カウンタ */

    unsigned char man;                      /* 0:man 1:machine */
    unsigned char ctrl;                     /* コントローラ */

    unsigned char death_mask;               /* 勝ち負け決定時のモーション */
    unsigned char motion[8];                /* モーション履歴 */
    unsigned char mmm;                      /* モーション履歴用カウンタ */

    SVECTOR svc;                            /* 演出用 */

} DEAD_MAN;

typedef struct {

    unsigned char player;       /* 0:1人用 1:多人数用 */
    unsigned char dtbl[8];      /* 試合結果( 3位非対応トーナメント表用 ) */
    unsigned char dtbl2[8];     /* 試合結果( 3位対応内部処理用 ) */
    unsigned char tour[8];      /* 組み合わせ */
    unsigned char tournament;   /* X回戦 ( 0:1 1:2 2:3位決定 3:決勝 ) */
    unsigned char mode;         /* 試合形式 ( 0:8 1:4 2:2 )*/
    unsigned char round;        /* 試合回数 */
    signed char dare[2];        /* 何番目のキャラ */

} DDP_TOUR;

typedef struct {

    unsigned char dare;

    unsign

0xB48C00#

4 バック転50m走*/
    GM_SPRAY,                   /*5 スプレイヒッター*/
    GM_G_MAKER,             /*6 ゲームメーカー*/
    GM_DEADMAN,             /*7 デッドマンズドロップ*/
    GM_L_SHOOT,             /*8 ロングシュート*/


    GM_STRUCK = 0,      /*0 ストラックアウト*/
    GM_KICK,                    /*1 キックターゲット*/
    GM_MONSTER,             /*2 モンスターボックス*/
    GM_SHOTGUN,             /*3 ショットガンタッチ*/
    GM_TUGOFWAR,            /*4 タッグオブウォー*/
    GM_HUSTLER,             /*5 ハスラー*/
    GM_DARUMA,              /*6 ダルマ*/
    GM_BRAIN,                   /*7 ブレインパニック*/
};

/*===== キャラ# ===============*/
enum {
    CR_MAT = 0, /*0x00 松井秀喜*/
    CR_RAM,         /*0x01 ラモス瑠偉*/
    CR_OSA,         /*0x02 大森晃*/
    CR_DAI,         /*0x03 松坂大輔*/
    CR_AKI,         /*0x04 秋山幸二*/
    CR_KUD,         /*0x05 工藤公康*/
    CR_GON,         /*0x06 中山雅史*/
    CR_IKE,         /*0x07 池谷直樹*/
    CR_KNE,         /*0x08 ケイン・コスギ*/
    CR_FUR,         /*0x09 古田敦也*/
    CR_TAK,         /*0x0a 武豊*/
    CR_MAI,         /*0x0b 舞の海*/
    CR_HIG,         /*0x0c 潮くん*/
    CR_KON,         /*0x0d 金剛くん*/
    CR_ED1,         /*0x0e エディット1*/
    CR_ED2,         /*0x0f エディット2*/

0xB4E600#

.player].pose + 1].pd != STOP )
            {
                Pose_Change( &s->classw[ddp_replay.player] );
                ddp_demo_se( ddp_replay.player );
            }
            class_gs3d( &s->classw[ddp_replay.player] );

            if( ddp_env.fnt == 1 )
            {
                if( SetG2dJudge07( &s->classw[ddp_replay.player], ( ddp_replay.player == ddp_replay.winner ) ? ( 0 ) : ( 1 ) ) != 0 )
                {
                    ddp_env.fnt = 0;
                }

                if( sp->joyw[ddp_replay.honor].joytrg & PADRright )
                {
                    ddp_sd_fade();
                    sp->gstepw = 4;
                }
            }else
            {
    

0xB5B400#

 選手情報の構造体へのポインタを渡す */
    ls->ball = &ls->lball;                      /* ボール情報の構造体へのポインタを渡す */
    ls->board = &ls->lboard;                    /* ボード情報の構造体へのポインタを渡す */
    ls->declare = &ls->ldeclare;                /* 宣言パネル情報の構造体へのポインタを渡す */
    ls->motion = &ls->lmotion;                  /* モーション情報の構造体へのポインタを渡す */
    ls->sprt = &ls->lsprt;                      /* スプライト情報の構造体へのポインタを渡す */
    ls->kage = &ls->lkage;                      /* 影情報の構造体へのポインタを渡す */
    ls->gage1 = &ls->lgage1;                    /* ゲージ1(左右の狙い)情報の構造体へのポインタを渡す */
    ls->gage2 = &ls->lgage2;                    /* ゲージ2(風)情報の構造体へのポインタを渡す */
    ls->gage3 = &ls->lgage3;                    /* ゲージ3(パワー&ミート)情報の構造体へのポインタを渡す */
    ls->gage4 = &ls->lgage4;                    /* ゲージ4(予想着弾点)情報の構造体へのポインタを渡す */
    ls->orbit = &ls->lorbit;                    /* 軌道情報の構造体へのポインタを渡す */
    ls->effect1 = &ls->leffect1;                /* エフェクト1(必殺シュート)情報の構造体へのポインタを渡す */
    ls->effect2 

0xB63E00#

メイン) */
        case 11:    if(ls->mode == MODE_EXTRA)  g_RRset(*ls->chara,8,ls->extra->total);
                    else                        g_RRset(*ls->chara,8,9-ls->board->rest);
                    g_RSinit((Uchar *)save,sizeof(ls->lsave));
                    PAUSE_FLAG = RSAVE_STEP;
                    set_local_func(LObject_Replay); /* ポーズ中の描画 */
                    ls->pause = 1;                  /* ポーズフラグ(0:なし 1:あり) */
                    ls->step++;
                    break;

        /* リプレイセーブ完了 */
        case 12:    clr_local_func();
                    ls->pause = 0;                  /* ポーズフラグ(0:なし 1:あり) */
                    ls->step++;

0xB69C00#

                   /*                           100: sprite                                            */
        unsigned LgtMod  : 1; /* LMD(light-mode) 0: with normal                                 */
                                                    /*                               1: with no normal                          */
        unsigned MipMap  : 1; /* MIP(mip-map)        0: no mip-map                                  */
                                                    /*                               1: mip-map                                         */
        unsigned PreSet  : 1; /* PST(pre-set)        0: no preset                                       */
                                                    /*                               1: preset                                          */
        unsigned Tile        : 1; /* TIL(tile)           0: with no tile texture                */
                                                    /*                               1: with 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)                                                    */
} PRIM_FIELD;


#define  PRIM_MSK                       0x000007FF
#define  GetPrimType( x )       (HWORD)( PRIM_MSK & x )


#define  PRM_MIME                       0x00000400  /* MIMe                                                         */
#define  NO_BUILT                       0x00000000  /*  0: with no Built-in MIMe                */
#define  BUILT                          0x00000400  /*  1: with Built-in MIMe                       */

#define 

0xB76600#

(マッスルランキング) */
        case 1:     while(1)
                    {
                        LReplay_Record();               /* リプレイの記録 */
                        LBall_Move();                   /* ボールの移動 */
                        LBoard_System();                /* ボードの管理 */
                        LSub_Flag(1);                   /* 旗のはためき */
                        LMotion_System();               /* モーションの管理 */
                        ls->orbit->draw_flg = 1;        /* 軌道の描画フラグのセット(0:スキップ 1:描画) */
                        LObject_Orbit();                /* 軌道の描画 */
                        LBall_Echeck();                 /* ボールの停止判定 */

                        /* 終了判定 */
                        if(ls->ball->end 

0xB83C00#

].func = Em08_func00;

        spd = GetSpd( SPD_EM08_RESULT2 );
        spd[2].u = num%6*0x28;
        spd[2].v = num/6*0x18;

        TRANS_STEP++;
    }

    if ( em08_act[0].func ){
        if ( em08_act[0].func( (void*)&em08_act[0] ) ){
            TRANS_STEP++;
        }
    }
    if ( em08_act[1].func ){
        em08_act[1].func( (void*)&em08_act[1] );
    }
        /*記録表示を左にスライド*/
    if ( em08_act[0].step == 3 && !em08_act[1].func && em08_act[1].tmp != 0x81 ){
        if ( em08_act[0].tmp > 4 ){ /*4文字くらい動きはじめたら*/
            em08_act[1].tmp = 0x80;
        }
    }
    if ( em08_act[1].tmp == 0x80 ){
        s->classw0[ em08_act[1].cls ].xposi -= 80;
        if ( s->classw0[ em08_act[1].cls ].xposi < -300 ){
                /*表示OFF*/
            s->classw0[ em08_act[1].cls ].kind = 0;
            em08_act[1].tmp++;
            TRANS_STEP++;
        }
    }


    if ( TRANS_STEP == 3 ){
            /*表示OFF*/
        s->classw0[ em08_act[0].cls ].kind = 0;
        TRANS_STEP = 0;
        return 1;
    }
    return 0;
}

/*==========================================================================
    ビンゴ!
==初期表示と演

0xB91E00#

NE         0x1001  /*チャレンジ前                */
#define SPD_EM00_FINAL      0x1002  /*ファイナルレーン前 */
#define SPD_EM00_CLEAR      0x1003  /*クリア                           */
#define SPD_EM00_MISS           0x1004  /*はずれ                           */
#define SPD_EM00_RESULT1    0x1005  /*結果表示1                     */
#define SPD_EM00_RESULT2    0x1006  /*結果表示2                     */
/*9フープス*/
#define SPD_EM01_PERFECT    0x1000  /*パーフェクト達成      */
#define SPD_EM01_SENGEN     0x1001  /*ターゲット宣言           */
#define SPD_EM01_GET            0x1002  /*命中                                */
#define SPD_EM01_MISS           0x1003  /*はずれ       

0xB98C00#

に画面消去抑制スイッチ追加。その他、不要なメンバ削除
    1999/04/28  松岡  OBJ3D_W に pPrimTbl を追加、CLASS_W の hand,item を削除
    1999/04/20  松岡  CLASS2_Wを廃止 CLASS_W SP_W SYS_W SYS0_W 中の未使用メンバを削除
    1999/04/14  深野  OBJ3D_W を追加
                                        HMD 3Dオブジェクト用
    1999/04/08  松尾  sp_w に motion_no のメンバを追加
                                        CLASS_W に反転再生判定用のメンバ revAnmFlag 追加
    1999/03/30  松岡  sp_w に stage_no,mode_fg,mode_no,chara のメンバを追加
                                        CLASS2_Wのワーク数を48へ変更
    1999/03/23  松岡  OBJECTMAX 変更 CLASS2_W のメンバー変更
    1999/03/01  松岡  地面表示専用として CLASS2_W を追加、各 CLASS_SUU を変更
    1999/02/22  松尾  プレイヤー用のワーク(PLAY_W)を筋肉番付用に変更
                                            ※また変更する予定
    1999.02.15  松岡  スクラッチパッドにカメラ情報追加
    1999.02.05  松岡  CLASS_W,CLASS1_Wに画面分割用のメンバーを追加 scr_ot
    1999.01.25  中山  CLASS0_Wに画面分割用のメンバーを追加 scr_ot
    1999.01.18  中山  BG表示のための定義追加    BG_INF_MAX
    1999.01.18  中山  BG表示のための構造体追加       MAP_INF BG_INF
    1999.01.08  中

0xBB9C00#

*/

#define LOAD_ED_ANM                     (LOAD_ED_MD_A1+8)       /*モーション                                      2個*/

/*エンディングデモプログラム*/
#define LOAD_END_MODEL              (0x146)                         /*エンディングオブジェクトモデル           miya991010*/
#define LOAD_END_TEX                    (0x147)                         /*エンディングオブジェクトテクスチャ miya991010*/
#define LOAD_END_MOTION             (0x148)                         /*エンディングモーション                           miya991010*/

/* 99.12.17 Hosogai */
#define NO1_MOTION_NO                   (0x149)     /* No1モーションデータテーブル */

/*空飛ぶ金剛くん用背景*/
#define LOAD_KON_SORA                   (0x14c)     /*空飛ぶ金剛くん背景*/

/* ギャラリーモード用 */
#define LOAD_GALL_CSR1              (0x14d)                         /* ギャラリーモード用の絵    */
#define LOAD_GALL_CSR2              (0x14e)                         /* ギャラリーモード用の絵    */

/*CharTrans()内の謎のべた値*/
#define CHAR_TRANS_SPRAY_KONGO  (14)        /*"mod21a.bin"から"mod00a.bin"のINDEX差/3*/
#define CHAR_TRANS_SPRAY_MAT        (16)        /*"mod10a.bin"から"mod00a.bin"のINDEX差/3*/
#define CHAR_TRANS_SPRAY_DAI        (15)        /*"mod13a.bin"から"mod03a.bin"のINDEX差/3*/
#define CHAR_TRANS_SPRA

0xBC0A00#

大きさ */
#define     MAX_SCR_HEIGHT  256
#define     SLICE_IMG_SIZE  (VRAMPIX(16,TRUE)*MAX_SCR_HEIGHT)

/* 16 の倍数でない大きさの動画を表示するためのマクロ */
#define mov_bound(val,n)    \
    ((((val)-1)/(n)+1)*(n))

#define mov_bound16(val)    \
    (mov_bound((val),16))

/* strNext(),strNextVlc()がタイムアウトさせる繰り返しの数 */
#define MOVIE_WAIT 2000

/* ムービーワーク */
typedef struct {

    /* デコード環境の実体 */
    DECENV dec;

    /* 最左端スライスを示すフラグ */
    int isFirstSlice;

    /* 終了フラグ:所定のフレームまで再生すると1になる */
    int endOfMovie;

    /* フレームナンバー */
    int mov_now;

    /* CD-ROMロケーション */
    CdlLOC file;

    /* 現在のロケーション */
    CdlLOC cur_loc;

    unsigned long tttt;             /* 表示/描画切り替え */
    DISPENV disp[2];                /* display buffer : 表示バッファ 上記ttttに対応して入れ替え */

    /* 音フェードフラグ */
    unsigned char fade;

} MOVIE_WORK;

extern int Movie( int id );

・

0xBD6400#

ター */
    LEFFECT6        *pt = ls->effect6;          /* エフェクト6ワークへのポインタ */
    Uchar           smoke_rgb[2] = {64,128};
    short           smoke_size[2] = {64,128};

    for(i=0;i<2;i++)
    {
        /* プリミティブの初期化 */
        LInit_Sub_FT4(&pt->ft4[i],1);
        setRGB0(&pt->ft4[i],smoke_rgb[i],smoke_rgb[i],smoke_rgb[i]);
        pt->ft4[i].tpage = GetTPage(0,1,512,256);
        pt->ft4[i].clut = GetClut(SPRT_CX(0x92),SPRT_CY(0x92));

        /* ベクトルの初期化 */
        setVector(&pt->v[i][0],-1*smoke_size[i],-1*smoke_size[i],0);
        setVector(&pt->v[i][1],   smoke_size[i],-1*smoke_size[i],0);
        setVector(&pt->v[i][2],-1*smoke_size[i],   smoke_size[i],0);
        setVector(&pt->v[i][3],   smoke_size[i],   smoke_size[i],0);
    }
}

/*------------------------------------------------
 エフェクト7(エキストラ着弾箇所)の初期化
 引数:なし
 戻値:なし
------------------------------------------------*/
void LInit_Effect7(void)
{
    register int    i;                  /* 作業カウンター */
    LEFFECT7        *pt = ls->effect7;  /* エフェクト7情報へのポインタ */

    /* POLY_G3

0xBE4600#

                   {96,192,32,24},
                                        {48,176,48,48},
                                        {48,223,48,32},
                                        {96,192,32,24},
                                        {96,176,32,16},
                                   };

    /* 前準備 */
    if(replay->spark_cnt == 0)  return;
    if(ls->mode == MODE_EXTRA)
    {
        if(ls->event == EXTRA_REPLAY)   frame = replay->frame;
        else                            frame = replay->cnt;
    }
    else if(ls->mode == MODE_REPLAY)
    {
        frame = replay->frame;
    }
    else
    {
        if(ls->event == EVENT_REPLAY)   frame = replay->frame;
        else                            frame = replay->cnt;
    }

    /* アニ

0xBF2A00#

            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<7; 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, 0x69, 10, 1 );    /*選手名*/
            disp2dName( G_CLS_IT_NAME, 0, s->edit_head[entrybox[cls->entry_no]-CR_ED1].name );                          /*名前を変える*/
        }
    }

        /*年齢、身長、体重の表示*/
    set2d( G_CLS_IT_PARA, SPD_IT_PARAM, MODE16, 0,0, 11, 0, 10, 1 );    /*パラメータ表示*/
    {
        short age,height,weight;
        SPD_W* spd;

        age = PD_AGE(entrybox[cls->entry_no]);
        height = PD_HEIGHT(entrybox[cls->entry_no]);
        weight = PD_WEIGHT(entrybox[cls->entry_no]);
            /*年齢*/
        spd = GetSpd( SPD_IT_PARAM );
        if ( entrybox[cls->entry_no] != CR_KON ){   /*金剛くん以外*/
            spd[0].u = age/10 * 0x10;
            age %= 10;
            spd[1].u = age * 0x10;
        }else{  /*金剛くんは年齢不祥*/
            spd[0].u = spd[1].u = 0xe0;
        }
            /*身長*/
        spd[2].u = height/100 * 0x10;
        height %= 100;
        spd[3].u = height/10 * 0x10;
        height %= 10;
        spd[4].u = height * 0x10;
            /*体重*/
        if ( weight/100 ){  /*100kg以上ある時*/
            spd[5].offset_y = 0x0059;
            spd[5].u = weight/100 * 0x10;
        }else{          /*100kgはないとき*/
            spd[5].offset_y = -256;
        }
        weight %= 100;
        spd[6].u = weight/10 * 0x10;
        weight %= 10;
        spd[7].u = weight 

0xD95E00#

021,0x22},     // 上 5
   {DAT,0x10,0x10,0xf0,0x00,0xff9f +1,0x004b,0x22},        // 下 6
   {DAT,0x10,0x10,0xf0,0x00,0xffc7 +1,0x004b,0x22},        // 下 7
   {DAT,0x10,0x10,0xf0,0x00,0x003f +1,0x004b,0x22},        // 下 8
   {DAT,0x10,0x10,0xf0,0x00,0x0067 +1,0x004b,0x22},        // 下 9
   {DAT,0x10,0x10,0xf0,0x00,0xff77 +1,0x0021,0x22},        // 上 左 隠し
   {DAT,0x10,0x10,0xf0,0x00,0x008f +1,0x0021,0x22},        // 上 右 隠し
   {DAT,0x10,0x10,0xf0,0x00,0xff77 +1,0x004b,0x22},        // 下 左 隠し
   {DAT,0x10,0x10,0xf0,0x00,0x008f +1,0x004b,0x22},        //

0xD9EA00#

----*/
    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 = OFF;

        sp->inter_mode = INT_VSYNC; /* 画面モード切り替え */
        op_step++;
        break;
    case 43:
        /* 待避データの復帰 */
        setRECT( &rect, 0x180, 0x100, (0x80*2)/4, 0x80*2 ); /* face00,01 */
        LoadImage( &rect, (u_long *)0x80148000 );
        DrawSync( 0 );
        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, 0x1c0, 0x100, (0x80*2)/4, 0x80 );   /* game00 */
        LoadImage( &rect, (u_long *)0x800d4000 );
        DrawSync( 0 );
        setRECT( &rect, 0x3a0, 0x00, 0x80/4, 0x80 );    /* option05 */
        LoadImage( &rect, (u_long *)0x800d8000 );
        DrawSync( 0 );

        setRECT( &rect, 0x000, 0x1fb, (0x80*8)/4, 0x01 );   /* pal */
        LoadImage( &rect, (u_long *)0x800d3800 );
        DrawSync( 0 );

        /* BGのテクスチャページ復帰 */
        spr = SETCLS0( BG_0 );  spr->tpage = 0x0a;
        spr = SETCLS0( BG_1 );  spr->tpage = 0x09;
        spr = SETCLS0( BG_2 );  spr->tpage = 0x0a;
                                                        spr->kind  = ON;
        spr = SETCLS0( BG_3 )

0xDA5E00#

al( CUR1 );
        s->classw0[CUR1].yposi = mc_pos[0] * 0x10;
        break;
    case 22:
        ret  = 1;
        for( i=0; i<8; i++ ) {
            ret &= m_SprMove( CH_NAM+i, 2, OFF|(1<<7) );
            set_spr_pos( CH_NAM+i+8, CH_NAM+i );
            if( mvcnt <= i ) {
                mvcnt ++;
                break;
            }
        }
        ret &= m_SprMove( CH_MSG, 5, OFF|(1<<7) );
        if( ! ret )
            break;
        sno = MS_CH + 2 + pos_sav[EDIT_SELECT];
        SetSelSpd( CH_MSG, sno, 1 );

        for( i=0; i<8; i++ ) {
            pDT = get_pEDbuf( 1^sl_flg, i );
            name_decode( &pDT[1], CH_NA

0xDB2200#

erge_timer = 0;
        cls[i]->xposi = p->xposi[i];
        cls[i]->yposi = PLYR_YPOS;
        if ((p->xposi[i] >= STEP_LINE) && ((p->anime[i]==bm_mot_fini1)||(p->anime[i]==bm_mot_fini2)||(p->anime[i]==bm_mot_fini3))){
            cls[i]->yposi -= 30*4;
        }
    }
}

void ReplayRecSub(int no, short c)
{
//  sys_w;
    b50m_cls;
    REPLAY_FRAME_DT *p = &replay_w04.rep_data[c];
    int i;
    
    for (i=0; i<2; i++){
        p->anmp[i] = cls[i]->anime;
//      p->anime[i] = cls[i]->anime_no;
        p->anime[i] = bm_pwork[i].anime_no;
        p->pose[i] = cls[i]->pose;
        p->xposi[i] = cls[i]->xposi;
        p->theta[i] = bm_rgauge[i].theta;
        p->spd[i] = bm_rgauge[i].spd;
        p->spd_max[i] = bm_rgauge[i].spd_max;
        p->rk_step[i] = bm_rgauge[i].rk_step;
        p->stack[i] = bm_rgauge[i].stack;
        p->step[i] = bm_pwork[i].step;
        p->sstep[i] = bm_pwork[i].sstep;
        p->amari[i] = bm_pwork[i].amari;
        p->rest[i] = bm_pwork[i].rest;
        p->timer[i] = bm_pwork[i].timer;
    }
#if 0
    p->rand = bm_randw.counter;
#endif
}

void ReplayInitJoy()
{
    memset(&replay_joy04, 0, sizeof(REPLAY_JOY_W));
    ReplayInit();
}

int ReplayRecJoy(Ushort *key)
{
    int ret = 0;
    REPLAY_JOY_W *p = &replay_joy04;
//  REPLAY_FRAME_DT *r;
    
#if 0
    p->trg[0][p->count_max] = ((*key) & 0xf000)>>12;
    
    IF_JOY2{
        p->trg[1][p->count_max] = (*(key+1) & 0xf000)>>12;
    }
#else
    p->trg[0][p->count_max] = *key;
    
    IF_JOY2{
        p->trg[1][p->count_max] = *(key+1);
    }
#endif
    
//  r = &replay_w04.rep_data[p->count_max];
//  b50m_replay_record(r);
    
    p->count_max++;
    if (p->count_max 

0xDB8200#

========================================== */

/* ---------------------------------------------------------
        共通 include
--------------------------------------------------------- */
#include "ps000.h"
#include "gbl_data.h"
#include "taka.h"
#include "game.h"
#include "g2d.h"
#include "camera.h"
#include "..\..\inc\mr_14.h"
#include "..\..\inc\mr_cmn2.h"
#include "..\..\inc\g2d.h"

/* ---------------------------------------------------------
        ローカル include
--------------------------------------------------------- */
#include "b50m.h"
#include "prot04.h"
#include "replay.h"

/* ---------------------------------------------------------
        define
--------------------------------------------------------- */
#define LEAD_P (bmjw.lead_p)
#define DELAY_P (bmjw.delay_p)

/* ---------------------------------------------------------
        prototype
--------------------------------------------------------- */
static void length_set(void);
static void flg_set(void);
static void speak04_start(void);
static int speak04_opening(void);
static void speak04_middle_I(void);
static void speak04_middle_II(int,int);
static void speak04_others(void);
static void speak04_crush(int);
static void speak04_finish(int);
static void speak04_delay(void);
static void speak04_seesaw(void);
static void bmjw_stepset(int);
static void bmjw_stepinc(void);
static void vo_tbl_init(void);
static void ba_sd_call(int,int,int);
static void tbl_shuffle(int*,int);
static int sd_vo_tbl(int*);
static void sd_call_

0xDC1A00#

のみ強引に*/
            check_ball_move(gm_work.sub_cls, gm_work.ball_cls1);

            /* ボールを出した後は、ニュートラルにしておく */
            End_Pose_Change(gm_work.main_cls, GM_NORMAL_STAND);

            /*カメラを切り替えるタイミング調整*/
            if (gmmotp->passAreaNum%2 == 0)
            {
                ret = (gm_work.ball_cls1->xposi < 0)?1:0;
            }
            else
            {
                ret = (gm_work.ball_cls1->xposi > 0)?1:0;
            }

            if (ret)
            {
                if (gmmotp->passAreaNum%2 == 0)
                {
                    /*パケット節約*/
                    s->classw1[22].pclip = OFF;
                    s->classw1[24].pclip = ON;
                }
                else
                {
                    /*パケット節約*/
                    s->classw1[22].pclip = ON;
                    s->classw1[24].pclip = OFF;
                }

                /*受け取りアシスト用ゲージ色変更*/
                gm_high.f_thigh.r = gm_high.f_thigh.g = 128;
                gm_high.f_thigh.b = 32;

                gm_high.u_thigh.h = 0;

                /*ゲージの高さ変更*/
                setPassAssistGageHigh();

                /*COM用の設定*/
                com->work2 = gm_high.f_thigh.y + gm_high.f_thigh.h/2;
                                                                                                    /*次で使う中心位置*/
                com->work1 = gm_high.f_thigh.h/4+GM_Random(gm_high.f_thigh.h/2);        /*次で使う*/

                gm_work.ball_cls1->work6 = ON;                      /*胸トラップ*/

                sp->step1++;
            }
            break;

        case 3:
            if (com->cpu)
            {
            /*****************************************/
            /** COM用の利府      *******************/
            /*****************************************/
                if ((com->work2 - com->work1 <= gm_high.csl.y) &&
                        (gm_high.csl.y <= com->work2 + com->work1))
                {
                    pad->joytrg |= P_RRIGHT;
                }
            }

            if (check_ball

0xDC6200#

y+=char_turn;
    }

    cls->rot.vy = (cls->rot.vy<0)           ? cls->rot.vy+4096 :
                                (cls->rot.vy>=4096) ? cls->rot.vy-4096 : cls->rot.vy;

    buff = cls->rot.vy-muki;
    if( abs(buff)<16 ) cls->rot.vy = muki;

    cls->xposi = (char_speed * rsin(cls->rot.vy - 2048)>>12) + cls->xposi;
    cls->zposi = (char_speed * rcos(cls->rot.vy - 2048)>>12) + cls->zposi;

    /*ボールの移動*/
    len = (len+2 <120)? len+2:
                (len-2 >120)? len-2: 120;

    cls1->xposi = (len * rsin(cls->rot.vy - 2048)>>12) + cls->xposi;
    cls1->zposi = (len * rcos(cls->rot.vy - 2048)>>12) + cls->zposi;

//  move_partner(0);            /*パートナーの移動*/

    if(cls->rot.vy == muki){
        gm_ball.link = OFF;
        return 1;
    }
    else{
        gm_ball.link = ON;
        return 0;
    }
}




/****************************/
/*坂の処理                                  */
/****************************/
/*返り値 0:処理中 1:処理終了*/
/****************************/
int GM_Slope(void)
{
    sp_w;
    sys_w;

    switch(sp->step1){
        case 0:         /*一回目のボール受け*/
            GMComkeyInput(gm_work.sub_cls, 0);                              /*COMの動き*/
            if ((s->classw[0].cpu) && (sp->joyw[0].joytrg == P_RRIGHT))
            {
                gm_work.sub_cls->work4 = gm_high.f_head.y + gm_high.f_head.h/2;
                                                                                                    /*次で使う中心位置*/
                /*一度高く上げる*/
                sp->joyw[0].joytrg &= ~P_RRIGHT;
                sp->joyw[0].joytrg |= P_RUP;
            }

            if(check_ball_move(gm_work.main_cls, gm_work.ball_cls1)){
                sp->step1++;
                gmmotp->turn_flg = OFF;
                gmmotp->camCtrlFlg = 0x00;
                set_course_ot(1);

                gm_jikkyou_clr();

0xDCD400#

step;
    Uchar  status;
    Uchar  action;
    Uchar  trans_fg;
    Uchar  pri;
    Uchar  hit_pin_no;  /* 直前に衝突したピン#を保存 */
    Uchar  hit_pos;
    short  timer;
    short  pin_no;
    short  work0;
    short  work1;
    long   base_speed;
    long   base_accel;
    long   direct_angle;
    long   angle;
    long   angle_step;
    long   rotate;
    long   rot_step;
    long   roll;
    VECTOR sample_pos[6];
    VECTOR pos;
    VECTOR next_pos;
    VECTOR speed;
    VECTOR accel;
} PO_PIN_W;

typedef struct {
    Uchar obj_kind; /*  障害物の種類          */
    Uchar result;       /*  障害物と球の関係    */
    long  x;                /*  障害物のx座標     */
    long  z;                /*  障害物のy座標     */
    long  width;        /*  障害物の幅               */
    long  height;       /*  障害物の高さ          */
    long  depth;        /*  障害物の奥行き     */
} PO_EX_OBJ_W;

#define PO_PIN_WORK_ADR     (PO_PIN_W *)0x8016c000L /* ピンのワークを置くアドレス */

#endif
的な倍率 */
#define MAGNIFICATION           (MODEL_SCALE * GRID_SCALE)
#define LANE_NUM                    9
#define MAX_PIN_NUM             10
#define REPLAY_SLOW_WAIT    2
#define REPLAY_BUFF

0xDD6C00#

ーブ表示点滅がONになっていたら*/
        rep_ctrl00.mode ^= REP_CTRL_SAV;
        rep_ctrl00.status ^= REP_CTRL_SAV;
        spd = GetSpd( SPD_REP_MENU1 );
        spd[1].palette = 0x01;
    }

    rep_ctrl00.status |= rep_ctrl00.mode;

    if ( rep_ctrl00.status & REP_CTRL_ACT ){
            /*戻しマーク始動*/
        if ( rep_ctrl00.status & REP_CTRL_REW ){
            if ( !(rep_ctrl00.timer%0x05) ){
                frame_lighten_org( 0x64, 1, 3 );
            }
        }
            /*送りマーク始動*/
        if ( rep_ctrl00.status & REP_CTRL_FEW ){
            if ( !(rep_ctrl00.timer%0x05) ){
                frame_lighten_org( 0x64, 4, 6 );
            }
        }
    }
        /*セーブマーク点滅*/
    if ( rep_ctrl00.status & REP_CTRL_SAV ){
        if ( !(rep_ctrl00.timer%10) ){
            spd = GetSpd( SPD_REP_MENU1 );
            if ( spd[1].palette == 0x01 ){
                spd[1].palette = 0x66;
            }else{
                spd[1].palette = 0x01;
            }
        }
    }
    rep_ctrl00.mode = 0;
    rep_ctrl00.timer++;
    return rep_ctrl00.status;
}

/***************************************************************************
    リプレープレート・セーブ点滅  ON/OFF

0xDDE400#

   gm_camera.vrx = cls->xposi;
    gm_camera.vry = cls->yposi-550;
    gm_camera.vrz = cls->zposi;
    set_camera(&gm_camera);

    Pose_Change(cls);
    Pose_Change(cls_1);
    return 0;
}


/******************************/
/*背景他OTの設定                          */
/******************************/
void set_gm_ot(void)
{
    sys_w;
    int i;

#if 0
    /*背景*/
    s->classw1[21].obj3D_w[0].ot_no = GROUND_OT;        /*地面*/
    s->classw1[22].obj3D_w[0].ot_no = 250;      /*客席(左)*/
    s->classw1[23].obj3D_w[0].ot_no = 250;      /*客席(正面)*/
    s->classw1[24].obj3D_w[0].ot_no = 250;      /*客席(右)*/
    s->classw1[25].obj3D_w[0].ot_no = 249;      /*看板*/
    s->classw1[26].obj3D_w[0].ot_no = 250;      /*客席(後ろ)*/
    s->classw1[27].obj3D_w[0].ot_no = 251;      /*照明*/

    /*コース*/
    for(i=7; i<=20; i++){
        s->classw1[i].obj3D_w[0].ot_no = 248;       /*下から3番目*/
    }

    /*ゴール*/
    s->classw1[5].obj3D_w[0].ot_no = 248;           /*下から3番目*/
#else
    /*背景*/
    s->classw1[21].obj3D_w[0].ot_no = GROUND_OT;        /*地面*/
    s->classw1[22].obj3D_w[0].ot_no = 254;      /*

0xDE4A00#

lg = ON;
    }
}

#if 0
/********************/
/*キャラの表示            */
/********************/
void dispset_char_kage(Uchar no)
{
    ckage[no].disp_flg = ON;
}

/********************/
/*キャラの影非表示  */
/********************/
void clearset_char_kage(Uchar no)
{
    ckage[no].disp_flg = OFF;
}
#endif

/******************/
/*キャラの影描画   */
/******************/
#define CHARAKAGE_SIZE (120)

void disp_char_kage(CLASS_W *cls)
{
    sp_w;
    sys_w;
    register int i;
    long p;
    long flag;
    Uchar Ot_no[2];

    KAGE_PRIM *kp;

    kp = (cls == &s->classw[0])? &ckage[0]: &ckage[1];

    if(cls->pclip == ON) return;            /*kind == 0*/
    if(kp->disp_flg == OFF) return;

    PushMatrix();

//  GsSetRefViewUnit(&sp->rview);

    if(kp->disp_flg == ON){
    setVector(&sp->vec, (long)cls->obj3D_w[PARTS_BODY].pCoordSect[KOSHI].workm.t[0],
                                            (long)cls->yposi,
                                            (long)cls->obj3D_w[PARTS_BODY].pCoordSect[KOSHI].workm.t[2]);
    }

    setVector(&sp->rc,cls->rot.vx,cls->rot.vy,cls->rot.vz);
    setVector(&sp->sc,cls->scale.vx,cls->scale.vy,cls->scale.vz);

    RotMatrix(&sp->rc,&sp->lm);         /*  回転  */
    ScaleMatrix(&sp->lm,&sp->sc);       /*  拡縮  */
    TransMatrix(&sp->lm,&sp->vec);  /*  移動  */

    cls->DWorld.matrix = sp->lm;
    cls->DWorld.flg = 0;

    GsGetLwsUnit(&cls->DWorld,&sp->lm,&cls->ls);        /* ローカル スクリーン ローカル ワールド マトリクスを計算 */
    GsSetLightMatrix(&sp->lm);                                          /* 光源マトリクスをGTEにセット */
    GsSetLsMatrix(&cls->ls);                                                /* ローカル スクリーン マトリックスをGTEにセット */

    setVector(&kp->pos[0], -CHARAKAGE_SIZE

0xDEBC00#

フ情報取得) */
void  g_RRset( Uchar, Uchar, Ushort );  /*  セーブデータ見出し情報取得             */
int SetNO1_Each( char num, u_short spd_num );
Uchar set_palette_spd(Uchar cls_no, Uchar spd_no, Uchar col);
Uchar set_spd_classw0(Uchar cls_no,Ushort spd);
Uchar set_rgb_classw0(Uchar cls_no,Uchar l);
void set2d2(Uchar name,Ushort spd,Ulong attribute,short x,short y,Uchar tpage,
            Uchar palette,short sx,short sy,short mx,short my,Uchar pri,short kind);
Uchar set_xy_classw0(Uchar cls_no,long x,long y);
int G3dTrans00_Mot( u_char load_no );
void g_FlgSet( u_short no );
void set_demo_hand( unsigned char mode, unsigned char offset );

void po_ana_speak(short situation);

void po_character_SE(void);
void po_ball_pin_SE(void);

short po_ball_move(void);
void  po_pin_model_change(short mode);
void  po_background_clip(short no);

/* ---------- カメラ ---------- */
void po_view_init(void);
void po_view_main(void);
void po_view_set(short mode);
void po_view_no_set(short camera_no);

/*----------------------

0xDFFE00#

_skip = 1;
        switch (cls->step0) {
            case 0:
                ability_calc(&static_ability, &real_ability, &lucky);
                difficulty = po_lane_diff_tbl[work->version][work->lane_no];                    /* 選択したレーンの難易度 */
                result = static_ability + real_ability;
                theory_tbl = (Ulong *)po_data_tbl[DAT_THEORY];
                if (sp->chara[0] <= CR_KON) {   /* キャラ別セオリー */
                    pTheory = (PO_THEORY_DATA *)theory_tbl[sp->chara[0]];
                } else {
                    if (work->player.hdir) {        /* 汎用左利きセオリー */
                        pTheory = (PO

0xE05200#

======================================================================*/
static void SetG2dReplay04()
{
    sys_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, MODE

0xE0AE00#

c short time_offset_tbl[] = {
     50,300,    /* Level 0 */
     40,280,    /* Level 1 */
     30,260,    /* Level 2 */
     20,260,    /* Level 3 */
     10,240,    /* Level 4 */
      0,240,    /* Level 5 */
    -10,220,    /* Level 6 */
    -20,220,    /* Level 7 */
    -30,200,    /* Level 8 */
    -40,200,    /* Level 9 */
};
#else
static short time_offset_tbl[] = {
    300,300,300,300,            /* (0)松井 */
    300,300,300,300,            /* (1)ラモス */
    300,300,300,300,            /* (2)おさる */
    300,300,300,300,            /* (3)松坂 */
    300,300,300,300,            /* (4)秋山 */
    300,

0xE18A00#

_cls;
    int ret = 0;
    
    switch (bm_pwork[i].step){
        case PLYR_DASH:
#if B50M_DASH
            if ((mode == 0)&&(WATCH_TIMER <= 15)){
                if (start_dash_chk(i,key)){
                    b50mw.dash[i] = 1;
                }
            }
#endif
            if ((WATCH_TIMER > 15)|| cls[i]->cpu || (mode == 1)){
                bm_pwork[i].step = PLYR_START;      /* サービスタイム終了 */
            }
        case PLYR_START:                                                /* スタート直後 */
            rot_key_input(i,key);
            
            if (player_move_start(i)){
                pwstep_set(i,PLYR_NORMAL);      /* -> Normal rotation */
            }
            rot_gauge_main(i);
            
            if (b50mw.false[i]){
                bm_pwork[i].flg |= 4;
                pwstep_set(i,PLYR_FALSE);       /* -> False Start */
            }
        break;
        
        case PLYR_NORMAL:                                               /* 通常回転 */
            rot_key_input(i,key);
            player_move(i);
            
            if (chk_goal_in(i)){
                if (mode == 0){
                    b50mw.goal_time[i] = WATCH_TIMER;   /* b50m_main中ならタイムを記録 */
                }
                bm_pwork[i].flg |= 1;                           /* GoalフラグをON */
                pwstep_set(i,PLYR_GOAL);                                    /* → Goal in Step */
            }else if (chk_crush(i)){
                bm_pwork[i].flg |= 2;               /* Crush flag ON */
                pwstep_set(i,PLYR_CRUSH);       /* -> Crush */
            }
            rot_gauge_main(i);
        break;
        
        case PLYR_GOAL: /* 3: */                                                /* ゴールイン */
            player_move_goal(i,mode);
            ret = 1;
            rot_gauge_main(i);
        break;
        
        case PLYR_CRUSH: /* 4: */                                               /* 転倒 */
            if (player_move_crush(i,mode)){
                bm_pwork[i].timer = 30*2;
                bm_pwork[i].step = PLYR_C2STAND;        /* -> Crush Stand */
            }
            
            if (chk_goal_in(i)){
                if (mode == 0){
        

0xE1C400#

static Ushort cpu_key_input(int i,int mode);
        CPU思考ルーチン
IN:     i - Player No.
            mode - 0:CPU思考初期化, 1:CPUキー取り出し
OUT:    キー情報
--------------------------------------------------------- */
static Ushort cpu_key_input(int i, int mode)
{
    int j;
    
    static Uchar chk[2] = {0,0};
    static Ushort zure[2] = {512,512};
    static Uchar flg[2] = {1,1};
    static Uchar panic[2] = {0,0};
    static Uchar status[2] = {0,0};     /* 0 : ミスなし */
                                                                        /* 1 : ミスあり */
                                                                        /* 2 : ボタン押さず */
    
    Ushort correct_key[] = {
        P_LLEFT,0,P_LUP,0,P_LRIGHT,0,P_LDOWN,0,P_LLEFT,0,P_LUP,
    };
    Ushort just_pos[] = {
        2048,0,3072,0,4096,0,1024,0,
    };
    
//  Uchar false_rate[4] = {70,50,30,0};
    Uchar false_rate[4] = {50,35,20,15};
    Uchar false_rate2[4] = {60,50,40,0};
    Uchar reverse_rate[4] = {10,7,5,0};
    Ushort zure_rate[4] = {300,240,180,100};
    Uchar false_num[4] = {2,2,1,1};
//  Uchar false_num[4] = {5,4,2,1};
    
//  sp_w;
//  Uchar level = sp->cpu_level;
    Uchar level;

0xE1FE00#

pwork[no].step){
        case 0:
//          cls->xposi = START_LINE + 4000;
            cls->xposi = START_LINE + 5000;
//          Pose_Set(cls,bm_mot_walk1+bm_pwork[no].tmp,no*20);
//          bm_pwork[no].anime_no = bm_mot_walk1+bm_pwork[no].tmp;
            Pose_Swap(no,bm_mot_walk1+bm_pwork[no].tmp,no*20);
            p->step++;
        break;
        
        case 1:
            if (Pose_Change2(cls,1) &&  (cls->xposi <= START_LINE+15*30)){
                Pose_Set(cls,bm_mot_w2s,0);
                bm_pwork[no].anime_no = bm_mot_w2s;
                p->step++;
            }
            cls->xposi -= 15;
        break;
    

0xE24200#

5,SD_14_DOWN2);
            break;
            
            case bm_mot_b2f2:
                chk_se_and_call(i,25,SD_14_GOAL1);
            break;
            
            case bm_mot_fallh:
                chk_se_and_call(i,25,SD_14_DOWN1);
            break;
            
            case bm_mot_fallk:
                chk_se_and_call(i,38,SD_14_DOWN1);
            break;
            
            case bm_mot_risek:
                chk_se_and_call(i,36,SD_14_DOWN3);
            break;
            
            case bm_mot_b2f3:
                chk_se_and_call(i,25,foot[i]);
                chk_se_and_call(i,43,foot[i]);
                chk_se_and_call(i,68,foot[i]);
            break;
            
            case bm_mot_b2fk:
                chk_se_and_call(i,22,SD_14_DOWN3);
            break;
            
            case bm_mot_walk1:
            case bm_mot_walk2:
            case bm_mot_walk3:
            case bm_mot_walk4:
                chk_se_and_call(i,3,SD_14_FOOT1);
//              chk_se_and_call(i,15,SD_14_FOOT2);
                chk_se_and_call(i,20,SD_14_FOOT2);
            break;
            
            case bm_mot_w2s:
                chk_se_and_call(i,15,SD_14_FOOT2);
            break;
            
            case bm_mot_rot:
                chk_se_and_call(i,21,SD_14_FOOT1);
                chk_se_and_call(i,33,SD_14_FOOT2);
            break;
            
            default:
            break;
        }
    }
}

static Uchar se_old_pose[2];

static int chk_se(int mode, int no, Uchar pose)
{
//  static Uchar old_pose[2];
    b50m_cls;
    int ret = 0;
    
    switch (mode){
        case 0:
            se_old_pose[no] = cls[no]->pose;
        break;
        
        case 1:
            if (se_old_pose[no] > cls[no]->pose){
                if (pose <= cls[no]->pose){
                    ret = 1;
                }
            }else if (cls[no]->pose >= pose && se_old_pose[no] <= pose){
                ret = 1;
            }
        break;
    }
    
    return (ret);
}

static int chk_se_and_call(int no, Uchar pose, in

0xE29600#

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();
            if (sp->step1 != FINAL_DEMO_STEP) ring_pal_anim(1);
            else                              ring_pal_anim(0);
        }
    } else {
        if (work->game_mode == GM_KONAMI) {
            ring_pal_anim(0);
        }
    }
}

static void nh_character(void)
{
    sys_w;
    Ushort anime_no;

0xE2FA00#

 &r, &m );
    setVector( (VECTOR *)m.t, (short)dx, (short)dy, (short)dz );
    CompMatrix( &GsWSMATRIX, &m, &m );
    SetRotMatrix( &m );
    SetTransMatrix( &m );

    otz = RotAverage3( &v[0], &v[1], &v[2],
                                        (long *)&pg3->x0, (long *)&pg3->x1, (long *)&pg3->x2, &p, &flag );
    if ( otz < 0 ) otz = 0;
    GsSortPoly(pg3, &SepOT[0].ot[ACTIVE_SIDE], otz>>(14-OT_LENGTH) );

    PopMatrix();
    counter++;
    if (counter > 0x100) counter = 0;
}

static void set_just_mark(void)
{
    sp_w;
    sys_w;
    static Uchar fade = 0x80;
    static Schar diff = 0x08;
    NH_GAME_W *work;
    GsSPRITE *spr, just_mark;

    if (fade == 0x80 && diff < 0) diff = 0x08;
    if (fade == 0xa0 && diff > 0) diff = -0x08;
    fade += diff;
    spr = &just_mark;
    work = &nh_game_w;
    spr->attribute = MODE16;
    spr->x = P_GAGUE_XPOS + (P_GAGUE_W >> 1);
    spr->y = P_GAGUE_YPOS + P_GAGUE_H - (work->power - MIN_POWER)  * P_GAGUE_H / (MAX_POWER - MIN_POWER);
    spr->w = 0x40;
    spr->h = 0x28;
    spr->tpage = 0x18;
    spr->u = /*0*/0x40;
    spr->v = /*0x58*/0x00;
    spr->cx = /*0x100*/PALETU(0x48);
    spr->cy = /*0x1e9*/PALETV(0x48);
    spr->r = spr->g = spr->b = fade;
    spr->mx = spr->w >> 1;
    spr->my = spr->h >> 1;
    spr->scalex = ONE;
    spr->scaley = ONE;
    spr->rotate = 0;
    GsSortSprite(spr, &SepOT[0].ot[ACTIVE_SIDE], 7);
}

static void set_ball_locus(void)
{
    sp_w;
    short i, x, y, w, h ,size;
    long otz, p, flag, proj, dist1, dist2;
    SVECTOR v, current;
    POLY_FT4 *pft4, ball_locus;
    NH_REPLAY_W *replay_w;

    pft4 = &ball_locus;
    replay_w = &nh_repl

0xE3A200#

*****************************/
void SetG2dAna01( Uchar num, Uchar flag )
{
    sys_w;

        /*表示OFFのとき*/
    if ( flag == OFF ){
        s->classw0[G_CLS_ANA_NAME].kind = 0;
        s->classw0[G_CLS_ANA_PLT].kind = 0;
        return;
    }

    set2d( G_CLS_ANA_NAME, SPD_ANA_FURU+num, MODE16, 0,0, 13, 0, 10, 1 );   /*アナウンサー名*/
    set2d( G_CLS_ANA_PLT, SPD_ANA_PLATE, MODE16, 0,0, 12, 0, 10, 1 );   /*プレート表示*/
}


/***************************************************************************
    選手の紹介表示
        in: CLASS_W* cls    表示する人のクラス
            Uchar flag      表示ON/OFF(ON==表示/OFF==非表示)
***************************************************************************/
void SetG2dIntro01( 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;
    }

        /*1999.08.04    nakayama*/
    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 ); /*職業表示*/
    else
        set2d( G_CLS_IT_JOB2, SPD_JOB_06b, MODE16, 0,0, 11, 0, 10, 0 ); /*職業表示*/

    if ( entrybox[cls->entry_no] < CR_ED1 ){
            /*デフォルトの選手名のパターンを表示させる*/
            /*テクスチャページのセット*/
        switch( entrybox[cls->entry_no] ){
            case CR_K

0xE42C00#

anel;} /* ノーマルモードは抜いたパネル数 */
            else{tmp=sh->ex.score;} /* エキストラモードは得点 */
            g_RRset(sp->chara[0],5,tmp);
            g_RSinit((u_char *)&sh->saved,sizeof(_SH_SAVE_DATA));
            PAUSE_FLAG = RSAVE_STEP;
            if(sh->gameover){SD_call(B_FIN_1);} /* ゲームオーバー時サウンド復活 */
            sp_step0_up();
        }
    break;

    case 10:
        if(sp->ModSel.mode == 3){return 1;} /* リプレイロード時はゲームから抜ける */
        if(sp->chara[0]==CR_AKI){s->classw[0].rot.vy=3072;} /* 秋山回転初期化 */
        if((sp->chara[0]==CR_AKI) && (sh->success))
        SH_BIT_OFF(sh->dispflg,SH_DISP_CROSS_GAUGE);
        SH_BIT_OFF(sh->dispflg,SH_DISP_BATTING_ZONE);
        DelG2fRepPlate05();
        Sh_Replay_Calculation(sh->r.time-1);
        if(!sh->gameover){Sh_Sound_All_Stop(0);}
        else{SD_call(SD_CTL_XAKILL2);}
        sh->r.time=0;
        Sh_Replay_Out();
        Sh_Declaration_Scan_Space();
        sh->thflg=0;
        sh->twflg=0;
        SetG2dPoint05(&s->classw[0],OFF);   /* ポイント消去 */
        Sh_Gstep_Up();  /* ゲームステップインクリメント */
    break;
    }
return 0;
}

/

0xE46400#

>r.speed ==2)
        {
            sh->r.speed = 1;
            if(sp->step2==1){sp->step2=0;}
        }
        else
        {
            sp->step2 = (sp->step2 != 0) ? 0 : 1 ;
        }
    }

    /* リプレイデータセーブフラグ */
    if((joy_t & TRG_SAVE) && (sp->ModSel.mode != 3))    /* SAVE */
    {
        sh->r.save=SH_rev(sh->r.save);
        SetG2dSave05();
    }

    switch(sp->step2)
    {
    case 0:/* 再生 */
        if(Sh_Play_View(sh->r.speed))
        {
            Sh_Play_View (sh->r.speed);
            break;
        }
        if(Sh_Play_Normal(sh->r.speed) == 0){ret=1;}/* 最後まで再生 */
    break;

    case 1:/* 停止 */
        Sh_Play_View(sh->r.speed);
    break;
    }

}

/*----------------------------------------------*/
/*リプレイ通常再生                              */
/*----------------------------------------------*/
static u_char Sh_Play_Normal(int speed)
{
    u_char ret = 0;

    if( sh->r.pbcnt < sh->r.time-2 ) {
        sh->r.pbcnt += speed;
        ret = 1;
    }
    return ret;
}

/*----------------------------------------------*/
/*リプレイ逆転再生                              */
/*----------------

0xE4EA00#

    short   x2, y2;
} POLY_G3;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    u_char  r1, g1, b1, pad1;
    short   x1, y1;
    u_char  r2, g2, b2, pad2;
    short   x2, y2;
    u_char  r3, g3, b3, pad3;
    short   x3, y3;
} POLY_G4;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    u_char  u0, v0; u_short clut;
    u_char  r1, g1, b1, p1;
    short   x1, y1;
    u_char  u1, v1; u_short tpage;
    u_char  r2, g2, b2, p2;
    short   x2, y2;
    u_char  u2, v2; u_short pad2;
} POLY_GT3;              

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    u_char  u0, v0; u_short clut;
    u_char  r1, g1, b1, p1;
    short   x1, y1;
    u_char  u1, v1; u_short tpage;
    u_char  r2, g2, b2, p2;
    short   x2, y2;
    u_char  u2, v2; u_short pad2;
    u_char  r3, g3, b3, p3;
    short   x3, y3;
    u_char  u3, v3; u_short pad3;
} POLY_GT4;              

 


typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    short   x1, y1;
} LINE_F2;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    u_char  r1, g1, b1, p1;
    short   x1, y1;
} LINE_G2;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    short   x1, y1;
    short   x2, y2;
    u_long  pad;
} LINE_F3;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0;
    u_char  r1, g1, b1, p1;
    short   x1, y1;
    u_char  r2, g2, b2, p2;
    short   x2, y2;
    u_long  pad;
} LINE_G3;               

typedef struct {
    u_long  tag;
    u_char  r0, g0, b0, code;
    short   x0,     y0

0xE56400#

==================*/
/*==========================================================================
==リプレーの文字を表示する
==  毎フレーム通すことで点滅する。
==  点滅を前提としているので初期状態に依存しない
==========================================================================*/
static void SetG2dReplay05()
{
    sys_w;
    EM_ACT* tag = &em05_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 を入れるそれ

0xE5DE00#

ze    = 0x00;
                spd[55+i*6].ysize    = 0x00;
                spd[56+i*6].ysize    = 0x00;
                spd[57+i*6].ysize    = u_wk[0];
                spd[57+i*6].offset_y = (i==0)? ((0xfffc)+0x08)-u_wk[0]:
                                               (0x0040+0x08)-u_wk[0];
            }
            else if( u_wk[0] <= 0x10 ) {
                spd[52+i*6].ysize    = 0x08;
                spd[53+i*6].ysize    = u_wk[0]-0x08;
                spd[54+i*6].ysize    = 0x00;
                spd[55+i*6].ysize    = 0x00;
                spd[56+i*6].ysize    = u_wk[0]-0x08;
                spd[56+i*6].offset_y = (i==0)? (0xfff4+0x08)-(u_wk[0]-0x08):
        

0xE60600#

---------------*/
/*      return: ==0 動作中 / ==1 終了                                                                */
/*  注意:TRANS_STEP_Sを使用しています                                                         */
/*------------------------------------------------------------------*/
extern u_char cd_read_step;
extern u_char cd_file_load_NB(Ushort no);
extern unsigned char demo_box[];    /* 2000/01/06 sato*/

int G3dTrans05( void )
{
    sp_w;
int tmp;    /* 12/26 satou */

    switch( TRANS_STEP_S ){
    case 0:
        cd_read_step = CD_READ_INIT;
        TRANS_STEP_S +=2;
    break;

    case 1: /*  グラ

0xE62600#

  -580,   -160,   0x80, -0x400,   2000},
    {     0,   -580,   -160,   0x80,  0x500,   2000},
    {     0,   -580,   -160, -0x380,  0xe00,   8000},
    {     0,   -580,   -160,   0x20, 0x1700,   /*2000*/3000},
};
#endif

static NH_VIEW_DATA cmn_perfect_view_dat[] = {
    {     0,   -400,   -160, -0x1e0,  0x100,   7000},
    {     0,   -400,   -160,   0x1c,  0x510,   3200},
};

static NH_VIEW_DATA aki_perfect_view_dat[] = {
    {     0,   -660,   -160,  -0x08,  0x580,   7800},
    {     0,   -540,   -160,   0x28,  0x3

0xE65200#

   NH_VIEW_W *view_w;

    view_w = &nh_view_w;
    view_w->step = view_w->substep = 0;
    view_w->work = 0;
    view_w->timer = 0;
    view_w->camera_no = 0;
    sp->camera_kind = mode;
}

void nh_view_no_set(short camera_no)
{
    NH_VIEW_W *view_w;

    view_w = &nh_view_w;
    view_w->camera_no = camera_no;
}

#if 0   /* 今は使ってない */
static void  nh_view_value_set(NH_VIEW_DATA data)
{
    sp_w;

    sp->rview.vrx = data.vrx;
    sp->rview.vry = data.vry;
    sp->rview.vrz = data.vrz;
    sp->rview.vpx = data.vpx;
    sp->rview.vpy = data.vpy;
    sp->rview.vpz = data.vpz;
}
#endif

#if NH_VIEW_TEST
static short nh_view_projection_interpolate(short total_time)
{
    sp_w;
    NH_VIEW_W *view_w;

    view_w = &nh_view_w;
    sp->projection = view_w->prev_pro + (view_w->next_pro - view_w->prev_pro) * view_w->timer / total_time;
    GsSetProjection(sp->projection);
    return 0;
}
#endif

#if 0   /* 今は使ってない */
static short nh_view_interpolate(short total_time)
{
    sp_w;
    NH_VIEW_W *view_w;

    view_w = &nh_view_w;
    sp->rview.vrx = view_w->prev.vrx + (view_w->next.vrx - view_w->prev.vrx) * view_w->timer / total_time;
    sp->rview.vry = view_w->prev.vry + (view_w->next.vry - view_w->prev.vry) * view_w->timer / total_time;
    sp->rview.vrz = view_w->prev.vrz + (view_w->next.vrz - view_w->prev.vrz) * view_w->timer / total_time;
    sp->rview.vpx = view_w->prev.vpx + (view_w->next.vpx - view_w->prev.vpx) * view_w->timer / total_time;
    sp->rview.vpy = view_w->prev.vpy + (view_w->next.vpy - view_w->prev.vpy) * view_w->timer / tota

0xE67A00#

   view_w->next = view_w->prev;
            nh_view_rot_interpolate(1);
            view_w->step++;
        case 1:
            if (++view_w->timer > 90) {
                view_w->next = enter_view_dat[1];
                view_w->timer = 0;
                view_w->step++;
            }
            break;
        case 2:
            if (nh_view_rot_interpolate(220)) {
                view_w->step++;
            }
            break;
        case 3:
            view_w->prev = enter_view_dat[2];
            view_w->next = enter_view_dat[3];
            view_w->step++;
        case 4:
            view_w->prev.vrx = view_w->next.vrx = cls->xposi;
            view_w->prev.vrz = view_w->next.vrz = cls->zposi;
            if (nh_view_rot_interpolate(60)) {
                view_w->prev = view_w->next;
                view_w->step++;
            }
            break;
        default:
            nh_view_rot_interpolate(1);
            break;
    }
}

#else       /* cls->rot.vyを参照してカメラ座標を補間 */

static void nh_view_enter(void)
{
    sys_w;
    CLASS_W *cls;
    NH_VIEW_W *view_w;

    cls = &s->classw[0];
    view_w = &nh_view_w;
    switch (view_w->step) {
        case 0:
            view_w->prev = enter_view_dat[0];
            if (cls->rot.vy > 0xb00) {
                view_w->prev.vrx = -3704;
                view_w->prev.vrz = -7084;
                view_w->next = view_w->prev;
                nh_view_rot_interpolate(1);
                break;
            } else {
                view_w->next = enter_view_dat[1];
                view_w->step++;
            }
        case 1:
            view_w->prev.vrx = view_w->next.vrx = cls->xposi;
            view_w->prev.vrz = view_w->next.vrz = cls->zposi;
            view_w->timer = 0xb00 - cls->rot.vy;
            if (nh_view_rot_interpolate(0x240)) {
                view_w->prev = enter_view_dat[2];
                view_w->next = enter_view_dat[3];
                view_w->step++;
            }
        

0xE69A00#

1464,4750,     0,-1080,3990,700,   0}, /* オープニング2 フレーム*/

//{  3072,1184,3533,  0,-2669,-12481,600,   0}, /* オープニング1 グラウンド中央*/

    {  2629,1204,3818,  0,-17372,15746,1000,   0},  /* オープニング 電工看板*/
    {  1872,1104, 848,  2526,-2192,1226,1000,  0},  /* オープニング2 観客 */


    {  3072,1664,25450,  0,5250,12540,600,   0},    /* オープニング1 グラウンド中央*/
    {  3072,1104,3580,  0,-11790,4410,600,   0},    /* オープニング2 フレーム*/


//{  2755, 1023,2527,    0,0,0,1000,   2},  /* 選手紹介 プレイヤーアップ*/
//{  1728, 1023,2527,    0,0,0,1000,   2},  /* 選手紹介 プレイヤーアップ*/
//{   435,  923,1177,    0,0,0,1000,   2},  /* 選手紹介 プレイヤーアップ*/

    {  2912, 1204,2560-256,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ1*/
    {  3892,  984,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ2*/
    {  4600, 1256,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ3*/

    {  1184+2048,1204,2560-256,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ1*/
    {   204+2048, 984,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ2*/
    {  -504+2048,1256,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ3*/

#if 0
    {  2912-2048,1204,2560-256,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ1*/
    {  3892-2048, 984,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ2*/
    {  4600-2048,1256,2048,    0,0,0,1000,   0},    /* 選手紹介右 プレイヤーアップ3*/
#endif
#if 0
    {   864, 1204,2048,    0,0,0,1000,   0},    /* 選手紹介左 プレイヤーアップ1*/
    {  1844

0xE6C400#

    {
        sp->projection+=100;
        GsSetProjection(sp->projection);
        GsSetRefViewUnit(&sp->rview);
    }

    /* 視点モードチェンジ */
    if((joy_w & P_TR) && (joy_w & P_TR1)){vmode=0;}
    if((joy_w & P_TL) && (joy_w & P_TL1)){vmode=1;}

    if(joy_w & P_TL3){Sh_Setview_View(SV_BUFF1,vmode);} /* 視点始点 */
    if(joy_w & P_TR3){Sh_Setview_View(SV_BUFF2,vmode);} /* 視点終点 */

#if 1
    /* 視点移動発動 */
    if(*sh->joy_w[0] & P_RUP)
    {
        Sh_View_Set(1,SV_BUFF1,SV_BUFF2,vmtime);
        if((*sh->joy_w[0] & P_TR) && (*sh->joy_w[0] & P_TR1)){vmtime+=1;}
        if((*sh->joy_w[0] & P_TL) && (*sh->joy_w[0] & P_TL1)){vmtime-=1;}
    }
#endif

    prin(vmtime);

    /* 視点移動初期化*/
    if(*sh->joy_t[0] & P_RDOWN)
    {
        sh->v.camflg=0;
    }

    viewmax=sizeof(sh_vdata)/8/2;
    if(*sh->joy_t[0] & P_SELECT)
    {
        viewnum+=1;
        if(viewnum>viewmax){viewnum=0;}
        Sh_View_Set(0,viewnum,0,0);
    }
    prin(viewnum);

#if 0
    if(*sh->joy_w[0] & P_RLEFT)
    {
        sh->v.dx=cls->xposi;    /* dx */
        sh->v.dy=-500;  /* dy */
        sh->v.dz=cls->zposi;        

0xE71400#

   {
        /* 汎用プリミティブ初期化 */
        SetPolyF4(&f4);
        SetPolyFT4(&ft4);
        SetPolyG3(&g3);
        SetPolyG4(&g4);
        farst=1;
    }

    Sh_Tosser_Fist();   /* トサーの拳設定 */
    Sh_Ball_Parent();   /* ボールの親子付け管理 */

    Sh_Draw_2d();   /* 2D管理 */
    Sh_Draw_Besmear();  /* 画面下塗りつぶし */

    if(SH_BIT(sh->dispflg,SH_DISP_LOCUS) && !SH_BIT(sh->dispflg,SH_DISP_JLOCUS)){Sh_Draw_Locus(sh->r.pbcnt);}
//  Sh_Draw_Locus(sh->r.pbcnt);
    if(SH_BIT(sh->dispflg,SH_DISP_JLOCUS)){Sh_Draw_Just_Locus();}
//  Sh_Draw_Just_Locus();

    if(SH_BIT(sh->dispflg,SH_DISP_JLOCUS))
    {
        if(sh->r.pbcnt>=(SH_JUST_FRAME+8))
        {
//          if((sh->r.pbcnt/2)==(sh->b.bathitcnt/2)){Sh_Draw_Center_Flush(1,0,15,100);}
//          if((sh->r.pbcnt/2)==((SH_JUST_FRAME+8)/2)){Sh_Draw_Center_Flush(1,0,15,100);}
//          Sh_Draw_Center_Flush(1,0,15,100);
            Sh_Draw_Center_Flush(0,0,15,100);
        }
    }

    if(SH_BIT(sh->dispflg,SH_DISP_HIT_SPOT)){Sh_Draw_Hit_Spot();}   /* ボールがパネルに届いたときの位置 */

    /* 金剛君パーフェクト時は影無し */
    if(!((sp-

0xE83C00#

見事、やってくれます!」*/
    FK3_G08,                            /*「すごいコントロールだ!」*/
    FK3_G09,                            /*「魅せ方をよく知っている!」*/
    FK3_G10,                            /*「まさにスナイパー」*/
    FK3_G16,                            /*「狙った獲物は決して外すことがない!」*/
};

static Ushort furu_rep_get[] = {
    FN_F00,                             /*「ボールはまるで生き物のようにリングを捕らえます」*/
    FN_F06,                             /*「ネットがボールを迎え入れた」*/
    FN_F04,                             /*「バウンドに救われたようです」*/
    FK3_G00,                            /*「土壇場でゲット、さすが、盛り上げどころを知っています」*/
};

static Ushort furu_rep_miss[] = {
    FN_F12,                             /*「残念ながらボールはリングを捕らえる事ができません」*/
    FN_F23,                             /*「ミスの原因は何だったのか?」*/
    FK3_G17,                            /*「わずかに外れてしまいました、ボールはむなしく宙を舞います」*/
    FK3_G18,                            /*「狙った場所に、上手くボールが行きません」*/
    FK3_G19,                            /*「ミスの原因は何だったのか?」*/
    FK3_G20,                            /*「狙い通りにいきません」*/
    FK3_G22,                            /*「これは狙いすぎたか?」*/
};

static Ushort furu_rep_double[] = {
    F

0xE8BC00#

   /*「もう決めていくしかありません」*/
    HK2_A48,        /*「失敗は許されません」*/
    HK2_A49,        /*「慎重に狙って欲しい場面です」*/
    HN_B00,         /*「ここから開き直って全てのリングにいれてほしい」*/
};

/*ノーミス*/
static Ushort hatu_target_shimo4[] = {
    HK2_A50,        /*「ここまでノーミス」*/
    HK2_A51,        /*「どこまでノーミスで行けるでしょうか」*/
    HK2_A52,        /*「まだ、ミスはありません」*/
    HK2_A53,        /*「ここまで、無駄球を一球も出していません」*/
    HK2_A54,        /*「ツキも味方に付けて快進撃はどこまで続くのでしょうか」*/
};

/* 固有 */
static Ushort hatu_target_shimo_unique1[] = {
    HN_C08,         /*「リングが縦に動く」*/
    HN_C09,         /*「リングが横に動く」*/
    HN_C10,         /*「手前のリングの陰に隠れていて」*/
};

static Ushort hatu_target_shimo_unique2[] = {
    HN_C11,         /*「難しいところです」*/
    HN_C12,         /*「難しいところ!」*/
    HN_C13,         /*「微妙なコントロールが要求されます」*/
};

/* パーフェクトへ向けてのシュート */
static Ushort hatu_target_shimo_last[] = {
    HK2_C08,        /*「これを決めて、パーフェクトを手にしたい」

0xE95400#

当たり判定初期化 */
    if(sh->extra)
    {
        switch(sh_ex_info[i][1])
        {
        case 0:
            size=SH_PANEL_SIZE1;
        break;
        case 1:
            size=SH_PANEL_SIZE2;
        break;
        case 2:
            size=SH_PANEL_SIZE3;
        break;
        }
    }
    else    /* ノーマル */
    {
        if(i==9)    /* 金剛パネル */
        {
            size=SH_PANEL_SIZE2;
        }
        else    /* 通常パネル */
        {
            size=SH_PANEL_SIZE1;
        }
    }
    setRECT(&sh->p[i].hitrange,s->classw1[i].xposi-size/2,s->classw1[i].yposi-size/2,size,size);

    /* 回転初期化 */
        setVector( &s->classw1[i].rot, 0,0,0 );
    /* パネル初期位置 */
        sh->p[i].x=s->classw1[i].xposi;
        sh->p[i].y=s->classw1[i].yposi;
        sh->p[i].z=s->classw1[i].zposi+SH_PANEL_VECZ;
        s->classw1[i].kind=1;   /* 表示ON */
    /* フレームへ親子付けをする */
        s->classw1[i].DWorld.super=&s->classw1[SH_OBJ_FRAME1].DWorld;
    }

}

/*----------------------------------------------*/
/*モデル初期化                                  */
/*----------------------------------------------*/
int  Sh_Model_Init(void)
{
sp_w;
sys_w;

0xE9A200#

->b.tra[sh->b.bdcnt].hang=384;}

            /* 打って、なにも当たらなかったら */
            if(!sh->b.phitcnt && !sh->b.fhitcnt && sh->b.bathitcnt)
            {
                sh->b.tra[sh->b.bdcnt].v=-10;
                sh->b.tra[sh->b.bdcnt].hang=128;
            }

//          if(sh->b.tra[sh->b.bdcnt].v<512){
        }

        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((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;
    }
#endif

/* 減衰 */
#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[sh->b.bdcnt-1].hang;
        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)*8;
        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;
    }
#endif

#if 1
/* フェンスチェック */
    if(sh->c.bvec.vz > (5000

0xEA4600#

止 */
//      motcnt=0;
//      Pose_Set(cls,DEMO_MOTION_OFFSET+2, 0);
//      set_demo_hand(0,2);
        Sh_Motion_Demo(&s->classw[0],1,2);  /* 大喜びモーション初期化 */
//      Sh_Motion_Demo(&s->classw[1],1,2);
        mojiflg=0;
        if(sp->ModSel.mode==0)  /* マッスルランキングモード */
        {
            SetG2dPoint05(&s->classw[0],ON);    /* ポイント表示 */
        }
        sp_step0_up();
    break;

    case 1:
//      Sh_Camera_Rotate(SH_zerosign(sh->reverse)*-3,0,0);

        if(MenuFadeIn(32) == 1)
        {
            Sh_Motion_Demo(&s->classw[0],0,2);  /* 大喜び

0xEA5E00#

TKON1,0,0);
            sh->timer[0]=0;
            s->classw[0].yposi=0;
            AutoShock(&s->classw[0],2);
            SD_call(SD_GATE);
            SD_call(SD_CTL_FADEOUTX);
            sp_step0_up();
        }
    break;

    case 7:
        sh->timer[0]+=1;
        Sh_Camera_Rotate(-3,0,3);

        if(sh->timer[0]%2){sh->v.dy +=200;}
        else{sh->v.dy -=200;}

        if(sh->timer[0]==8)
        {
            sp_step0_up();
        }
    break;

    case 8:
        sh->compeltimer+=1;
        Sh_Camera_Rotate(-3,0,0);
        if(*sh->joy_t[0] & P_RRIGHT || sh->compeltimer>250)
        {
            Sh_Sound_All_Stop(1

0xEA8A00#

R_LR
#undef G_CLSR_REW
#undef G_CLSR_FEW
#undef G_CLSR_PLATE

///////////////////////////////////////////////////////////////////////////
//prototype
///////////////////////////////////////////////////////////////////////////
int G2dTrans01();                                               /*データ読み込み 及び テクスチャ転送*/
void SetG2dName01( CLASS_W* ,Uchar );       /*名前1表示*/
void SetG2dPoint01( CLASS_W* ,Uchar );  /*ポイント表示*/
void SetG2dAna01( Uchar, Uchar );               /*アナウンサー名表示*/
void SetG2dIntro01( CLASS_W*, Ucha/* エフェクト7(エキストラ着弾箇所)フラグ */
                                    LView_Parent_Set(VR_WORLD);
                                    tmp = Random(DM_ELV_NUM);
                                    LDemo_Set(DM_ELV_IDX + (tmp<<1));
                                    ls->step = 5;
                                }
                                else    ls->step = 7;   /* レベル未クリア */
                            }
                        }
                    }
                    else
                    {
                        if(declare->now_get == -1)
                        {
                            /* 悲しみ */
                            if(SetG2dMiss08() == 1)     ls->step = 7;
                        }
                        else
                        {
                            /* 喜び */
                            if(SetG2dGet08(declare->now_get+1) == 1)
                            {
                                if(declare->bingo == declare->old_bingo || declare->bingo >= 7) ls->step = 7;   /* 通常 or 7ビンゴ以上 */
                                else
                                {
                                    if(ls->mode != MODE_EXTRA)  LSub_Point(POINT_BINGO);    /* ポイントの管理 */
#ifndef YOSSY_SPEED
                                    if(ls->mode == MODE_MUSCLE && !ls->cpu) g_FlgSet(21);   /* ギャラリーモードフラグ(ロングシュートでビンゴ完成) */
#endif
                                    LView_Parent_Set(VR_WORLD);
                                    tmp = Random(DM_BIN_NUM);
                                    LDemo_Set(DM_BIN_IDX + (tmp<<1));
                                    ls->step++; 

0xEAAA00#

iウンサーフラグ(0:初田 1:古舘 2:進藤) */
    static Uchar    BGM[2] = {0,0};         /* BGMフラグ */
    static Uchar    ed_num;
    extern REP_CTRL rep_ctrl08;             /* リプレー用プレート制御構造体 */
    LREPLAY         *replay = ls->replay;   /* リプレイ情報へのポインタ */
    LSAVE           *save = ls->save;       /* セーブ情報へのポインタ */

    switch(ls->step)
    {
        /* 初期化(自動リプレイ) */
        case 0:     InitG2dRepPlate08(REP_CTRL_NOP,0);  /* リプレープレート・表示 */

                    /* アナウンサー */
                    tmp = Random(20);
                    if((ls->mode != MODE_EXTRA && tmp < 16) || (ls->mode == MODE_EXTRA && tmp < 19))
                    {
                        if(ls->ana == ANA_HATU)         ana_flg = ANA_HATU;
                        else if(ls->ana == ANA_FURU)    ana_flg = ANA_FURU;
                    }
                    else
                    {
                        ana_flg = ANA_SHIN;
                    }

                    /* 自動リプレイのセット */
                    LReplay_Set(0);

                    /* BGM */
                    if((ls->mode != MODE_EXTRA && ls->declare->now_get == -1) || (ls->mode == MODE_EXTRA && !ls->extra->now_score))
                    {
                        /* 失敗 */
                        save->BGM = B_REP5_1 + BGM[0];
                        SD_call(B_REP5_1 + BGM[0]);
                        BGM[0] = (++BGM[0])%2;
                    }
                    else if((ls->mode != MODE_EXTRA && ls->declare->now_get >= 0) || (ls->mode == MODE_EXTRA && ls->extra->now_score))
                    {
                        /* 成功 */
                        save->BGM = B_REP2_1 + BGM[1];
                        SD_call(B_REP2_1 + BGM[1]);
                        BGM[1] = (++BGM[1])%2;
                    }
                    ls->step++;
                    break;

        /* フェードイン(自動リプレイ) */
        case 1:     if(MenuFadeIn(32) == 1) ls->step++;
                    break;

        /* メイン(自動リプレイ) */
        case 2:     G2dReplayCtrl08(

0xEAE400#

       disp3d(ls->Phuman,0,PLAYER_X,PLAYER_Y,PLAYER_Z,2048);
                        ls->Phuman->kind = 0;
                        ls->step = 0;
                        if(ls->mode == MODE_EXTRA)
                        {
                            if(ls->entry == 0)
                            {
                                g_MAEinit(0);                           /* ランキングの初期化 */
                                for(i=0;i<8;i++)    g_ResSet(i+1,0,0);  /* ランキングのセット */
                                ls->step = 0;
                                ls->event = EXTRA_OPENING;
                            }
                            else
                            {
                                ls->event = EXTRA_INTRO;
                            }
                        }
                        else
                        {
                            /* 宣言パネルの初期化 */
                            declare->select = 4;        /* 宣言されているパネルの初期化(0-8) */
                            declare->now_get = -1;      /* 今回抜いたパネルの初期化(-1:失敗 0-8:各パネル) */
                            declare->old_get = -2;      /* 前回抜いたパネルの初期化(-2:初回 -1:失敗 0-8:各パネル) */
                            LBoard_System();            /* ボードの管理 */

                            ls->event = EVENT_INTRO;
                        }
                    }
                    return;
    }

    LView_Cont();                                                   /* カメラの手動操作 */
    LView_System();                                                 /* カメラの管理 */
    if(ls->mode == MODE_EXTRA)  LObject_Draw_Extra(E

0xEB1E00#

)
{
sp_w;
//sys_w;
int i,tmp;
static int markw,markh,deadoralive,battingtime;
/*                     1     2      3     4      5     6      7      8       9       K */
short hitofs[10][2]={{0,7},{3,3},{-3,3},{5,0},{-5,0},{7,-4},{3,-4},{-3,-4},{-7,-4},{0,0}};
static int markx,marky; /* CPU目標 */

    sh->cpupad=0;   /* パッド情報初期化 */

    switch(sp->gstepw)
    {
    case SH_DECLARATION:    /* 宣言部分 */
        sh->timer[1]+=1;
        if(!(sh->timer[1]%10))  /* 10フレームに一回だけ動作 */
        {
            i=Random(5);
    

0xEB5C00#

*/
                    LView_Parent_Set(VR_HUMAN);
                    LDemo_Set(DM_INTRO_IDX);

                    /* BGM */
                    SD_call(O_START3);

                    ls->sstep++;
                    break;

        /* BGMウェイト(もし、2秒経過したら進む) */
        case 1:
//                  if((SD_status[22] == 1) || ((++ls->cnt) >= (2*30)))
                    {
                        ls->cnt = 0;
                        ls->sstep++;
                    }
                    break;

        /* フェードイン */
        case 2:     if(MenuFadeIn(32) == 1)
                    {
                        /* 実況 */
                        SD_call(SD_CTL_XAKILL2);        /* 実況を全て止める */
                        LTalk_Hatu_Intro();
                        ls->sstep++;
                    }
                    break;

        /* 最初の移動(160フレーム) */
        case 3:     LDemo_Change(DM_INTRO_IDX,DM_INTRO_IDX+1,160);
                    if(cls->rot.vy > 704)
                    {
                        cls->rot.vy -= 2;
                        if(cls->rot.vy == 704)
                        {
                            if(sd_type) SetG2dAna08(ANA_HATU,OFF);  /* アナウンサープレート・非表示 */
                            SetG2dIntro08(cls,ON);                  /* 選手紹介・表示 */

//                          LMotion_Set(MKD_WALK1 + Random(4),MFLG_INIT);
//                          LMotion_Set(MKD_WALK2 + Random(3),MFLG_INIT);
                            LMotion_Set(MKD_WALK3 + 

0xEB9A00#

emo_301_SE,
    (Ulong)NULL,
    (Ulong)demo_303_SE,
};

static Ulong aki_demo_SE[/* Motion No. */] = {
    (Ulong)NULL,
    (Ulong)demo_401_SE,
    (Ulong)NULL,
    (Ulong)NULL,
};

static Ulong kudo_demo_SE[/* Motion No. */] = {
    (Ulong)NULL,
    (Ulong)NULL,
    (Ulong)NULL,
    (Ulong)NULL,
};

static Ulong gon_demo_SE[/* Motion No. */] = {
    (Ulong)demo_600_SE,
    (Ulong)demo_601_SE,
    (Ulong)NULL,
    (Ulong)demo_603_SE,
};

static Ulong ike_demo_SE[/* Motion No. */] = {
    (Ulong)demo_700_SE,
    (Ulong)demo_701_SE,
    (Ulong)NULL,
    (Ulong)demo_703_SE,
};

static Ulong kane_demo_SE[/* Motion No. */] = {
    (Ulong)NULL,
    (Ulong)demo_801_SE,
    (Ulong)demo_802_SE,
    (Ulong)NULL,
};

static Ulong furu_demo_SE[/* Motion No. */] = {
    (Ulong)NULL,
    (Ulong)NULL,
    (Ulong)NULL,
    (Ulong)demo_903_SE,
};

static Ulong take_demo_SE[/* Motion No. */] = {
    (Ulong)NULL,
    (Ulong)demo_a01_SE,
    (Ulong)NULL,
    (Ulong)demo_a03_SE,
};

static Ulong mai_demo_SE[/* Motion No. */] = {
    (Ulong)demo_b00_SE,
    (Ulong)demo_b01_SE,
    (Ulong)NULL,
    (Ulong)demo_b03_SE,
};

static Ulong ushio_demo_SE[/* Motion No. */] = {
    (Ulong)demo_c00_SE,
    (Ulong)demo_c01_SE,
    (Ulong)NULL,
    (Ulong)NULL,
};

static Ulong kon_demo_SE[/* Motion No. */] = {
    (Ulong)demo_d00_SE,
    (Ulong)NULL,
    (Ulong)demo_d02_SE,
    (Ulong)demo_d03_SE,
};

static Ulong demo_SE[/* Character No. */] = {
    (Ulong)matu_demo_SE,
    (Ulong)ramos_demo_SE,
    (Ulong)osaru_demo_SE,
    (Ulong)dai_demo_SE,
    (Ulong)aki_demo_SE,
    (Ulong)kudo_demo_SE,
    (Ulong)g

0xEBD600#

HK2_C00);
        break;
        
        case 3:
            SD_call(HK2_C00+tmp);
            SD_call(HS_N23+sh->sengenofs);
        break;
        }
    }
    else    /* 金剛君 */
    {
    tmp=Random(2);

        switch(tmp)
        {
        case 0:
            SD_call(HK2_C03);   /* 狙うのは */
            SD_call(HS_N00);    /* 金剛君だ */
        break;

        case 1:
            SD_call(HS_C13);
        break;
        }
    }
_END_

/* 環境音 */
    if(sh->restpanel==1){SD_call(O_200+Random(2));}/* 残りパネル1 */
    else if(sh->restpanel==2){SD_call(O_200);}/* 残りパネル2 */
    else if(sh->sengenflg==2){SD_ca

0xEC2200#

                    */
/*  sw: 0:状況 1:記録                           */
/*----------------------------------------------*/
void Sh_Speak_Gameover(int sw)
{
int st=0;
int ability=0;
sp_w;

if(PD_AB_SH(sp->chara[0])>=5){ability=1;}   /* 得意 */
else{ability=0;}    /* 不得意 */

_FURUTACHI_
    if(!sw)
    {
        if(sh->restpanel==1)    /* 残りパネル一枚 */
        {
            SD_call(FK4_E40+Random(4));
            SD_call(FK4_E45);
            SD_call(FK4_E46+Random(6));
        }
        else    /* 残りパネル2・3枚 */
        {
            Sh_Speak_Player_Name(0); /* 選手名を呼ぶ */
            SD_call(FK4_E25+Random(3));
            SD_call(FK4_E28+Random(3));
            SD_call(FK4_E34+Random(3));
        }
    }

    if(sw==1)
    {
        SD_call(FS_I00);    /*「(選手名)、記録(*枚!)」*/
        Sh_Speak_Number(sh->clearpanel-1,SHSP_MAI_HIGH);    /* 枚数 */
    }
_HATUTA_
    if(sw==0)
    {
        Sh_Speak_Player_Name(0); /* 選手名を呼ぶ */
        /* 状況判断 */
        if(!sw) /* 状況実況 */
        {
            if(sh->clearpanel<3)/* 枚数が少ないとき */
            {
                if(ability) /* 得意 */
                {st=0;}
                else    /* 不得意 */
                {st=1;}
            }
            else /*if(so->clearpanel<5)*/
            {
                if(ability) /* 得意 */
                {st=3;}
                else    /* 不得意 */
                {st=4;}
            }
        }
        /* 実況 */
        switch(st)
        {
        case 0: /* だめだめ&得意 */
            SD_call(HK2_I09+Random(4));
        break;
        case 1: /* だめだめ&不得意 */
            SD_call(HK2_I06+Random(3));
        break;
        case 2: /* そこそこ&得意 */
            SD_call(HK2_I16+Random(5));
        break;
        case 3: /* そこそこ&不得意 */
            SD_call(HK2_I13+Random(3));
        break;
        }
    }
    if(sw==1)   /* 記録数実

0xEC4A00#

_w->frame == REPLAY_BUFF_SIZE) replay_w->frame = REPLAY_BUFF_SIZE - 1;
        if ((work->success & 0x10) && replay_w->net_move == 0) {
            replay_w->net_move = replay_w->frame;
        }
        replay_w->frame++;
#if NH_TEST
        FntPrint("%d\n",replay_w->frame);
#endif
    }
//  set_mark();
    return 0;
}

/* 2次関数でパワーを増加 */
static short get_power(short current, short total)
{
    short power;

    power = MAX_POWER - MIN_POWER;
    power = current * current * power / total / total + MIN_POWER;
    return power;
}

/* テーブルでも作ってそこから収束させた方がよさそう */
static void calc_best_power_init(void)
{
    sp_w;
    sys_w;
    short diff;
    CLASS_W *cls;
    SVECTOR sv0, sv1;
    MATRIX m;
    NH_GAME_W *work;
    NH_BALL_W *pBall;
    NH_RING_W *pRing;

    cls = &s->classw[0];
    work = &nh_game_w;
    pBall = &nh_ball_w;
    pRing = &nh_ring_w[0];
    /* ターゲットリングの検索 */
    while (pRing->ring_no != work->target_no) pRing++;
    /* ボールがリリースされる瞬間のワールド座標を計算 */
    if (sp->chara[0] == CR_KON) {
        setVector(&sv0,     0,  -543,  -253);   /* MOT_K_SHOOTの24フレーム目の値 */
    } else {
        if (work->target_no > 5) setVector(&sv0,   0,  -747,  -218);    /* MOT_SHOOT1の24フレーム目の値 */
        else                     setVector(&sv0,   0,  -771,  -227);    /* MOT_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

0xEC9400#

--------------------*/
#define SH_rev(a) (a?0:1)
#define SH_sign(a) (a<0?-1:1)
#define SH_revsign(a) (a<0?1:-1)
#define SH_max(a,b) ((a>b)?a:b)
#define SH_zerosign(a) (a?1:-1)

#define SH_BIT(x,bit) (x & (1<<bit))
#define SH_BIT_ON(x,bit) (x=(x | (1<<bit) ))
#define SH_BIT_OFF(x,bit) (x=(x & (~(1<<bit)) ))

#if SH_DEBUG
    #define prin(a) FntPrint(#a"=%d\n",a)
#else
    #define prin(a)  /* FntPrint("\n") */
#endif

#define SH_DEG_TO_RAD(d)    (2.0 * PI * (d) / 360.0)
#define SH_DEG_TO_VEC(d)    (ONE * (d) / 360)
#define SH_setCVector(v, _r, _g, _b) \
    (v)->r = _r, (v)->g = _g, (v)->b = _b
/* 単独物体に値をセット */
#define SH_setClass1Vec(v, _x, _y, _z) \
    (v)->xposi = _x, (v)->yposi = _y, (v)->zposi = _z   
typedef signed char s_char;

#define SH_PADL3     (1<<9)     /*アナログスティックボタン左*/
#define SH_PADR3     (1<<10)    /*アナログスティックボタン右*/
#define P_TL3     (1<<9)        /*アナログスティックボタン左*/
#define P_TR3     (1<<10)   /*アナログスティックボタン右*/

#define SH_COMPEL_STEP_U

0xECD400#

rn void Sh_Debug_Draw_Declaration_Panel(void);
extern void Sh_Draw_Locus(int cnt);
extern void Sh_Draw_Just_Locus(void);
extern void Sh_Debug_Draw_Frame_Decision(RECT *rect,int sw);
//extern void Sh_Draw_Ef_Bsmoke(int cnt,VECTOR vec,CVECTOR col,int sw);
//extern void Sh_Draw_Ef_Psmoke(int cnt,VECTOR vec,CVECTOR col,int size);
extern void Sh_Draw_Ef_Smoke(int cnt,VECTOR vec,CVECTOR col,int type,int size,int pri);
extern void Sh_Draw_Ef_Foot_Smoke(int cnt,VECTOR *vec,CVECTOR *col);
extern void Sh_Draw_Ef_Foot_Smoke(int cnt,VECTOR *vec,CVECTOR *col);
extern void Sh_Panel_Hit_Ef(void);
extern void Sh_Draw_Ef_Spark(int cnt,VECTOR vec);
extern void Sh_Frame_Hit_Ef(void);
extern void Sh_Bat_Hit_Ef(void);
extern void Sh_Foot_Ef(CLASS_W *cls);
extern void Sh_Draw_Hit_Spot(void);
extern void Sh_Draw_Player_Shadow(CLASS_W *cls);
extern void Sh_Draw_Ball_Shadow(void);
extern void Sh_Backboard_Tex_Change(int num);
extern void Sh_Draw_Container_Ball(int num);
extern void Sh_Draw_Centralize(void);
extern

0xED3A00#

               So_Speak_Bnumber(so->restballnum-1,3);  /* 1:?球目と */
                SD_call(SS_A14b);   /*「なってしまいました」*/
            break;

            case 2:
                SD_call(SS_A15a);   /*「残るボードは後(1~16枚)、」*/
                So_Speak_Piece(so->restpanel-1,0);
                SD_call(SS_A15b);   /*「変わらずです」*/
            break;

            case 3:
                SD_call(SS_A16+Random(4));
            break;
            }
        }
    }
_OWARI_
}

/*----------------------------------------------*/
/*パーフェクト                                  */
/*----------------------------------------------*/
void So_Speak_Perfect(void)
{
    SD_call(B_JNG_PFCT);
    SD_call(FS_L00+Random(4));
    SD_call(FS_L04+Random(4));
    SD_call(FS_L08+Random(4));
}

/*----------------------------------------------*/
/*ゲームオーバー                                */
/* sw: 0:状況 1:記録                            */
/*----------------------------------------------*/
void So_Speak_Gameover(int sw)
{
int st=0;
int ability=0;
sp_w;

if(PD_AB_SH(sp->chara[0])>=5){ability=1;}else{ability=0;}

_FURUTACHI_
    if(!sw)
    {
        So_Speak_Player_Name(0); /* 選手名を呼ぶ */
        SD_call(FS_M01+Random(8));
    }
    else if(sw==1)
    {
        SD_call(FS_M00);    /*「(選手名)、記録(*枚!)」*/
        So_Speak_Piece(so->clearpanel-1,0); /* 枚数 */
    }
_HATUTA_
    if(!sw)
    {
        So_Speak_Player_Name(0); /* 選手名を呼ぶ */
        /* 状況判断 */
        switch(so->gmode)
        {
        case 0: /* ノーマルモード */
            if(!sw) /* 状況実況 */
            {
                if(so->clearpanel<3)/* 枚数が少ないとき */
                {
                    if(ability) /* 得意 */
                    {st=0;}
    

0xED9600#

//int change;

    /* 古館に交代時 */
    switch(so->gmode)
    {
    case 0:
        asobidama=so->restballnum-so->restpanel;
        if(so->clearpanel>=6 && !so->announcer)
        {
            so->recollection_speak=O_MID1;
            return;
        }
    break;

    case 1: /* 9モードの時はすぐ抜ける */
#if 0
        if(so->restballnum==1){asobidama=0;}
        else{asobidama=1;}
        if(so->kmsno==5 && so->clearpanel>=4)
        {
            so->recollection_speak=O_MID1;
            return;
        }
#endif
        so->recollection_speak=O_MID1;
        return;
    break;

    case 2:
        as

0xEDDC00#

           /* POLY_G4プリミティブ */

    short       col[9];         /* 弾道矢印の輝度 */

    short       dx;             /* 左右矢印の速度 */
    short       ddx;            /* 左右矢印の加速度 */
    short       dy;             /* 上下矢印の速度 */
    short       ddy;            /* 上下矢印の加速度 */
    short       drate;          /* 矢印の加速率 */
    short       dlimit;         /* 矢印の速度制限 */

    short       cdx;            /* カーブ矢印の速度 */
    short       cddx;           /* カーブ矢印の加速度 */
    short       Llimit;         /* カーブの左変化リミット */
    short       Rlimit;         /* カーブの右変化リミット */

} LGAGE1;

/*----- ゲージ2(風)情報の構造体 -----*/
typedef struct {

    POLY_FT4    ft4;            /* POLY_FT4プリミティブ */
    short       theta;          /* 風のなす角度 */

} LGAGE2;

/*----- ゲージ3(パワー&ミート)情報の構造体 -----*/
typedef struct {

    GsSPRITE    just[2];            /* GsSPRITEプリミティブ(JUSTゲージ 0:ミートポイント 1:パワーゲージ) */
    GsSPRITE    meet[4];            /* GsSPRITEプリミティブ(ミートポイント) */
    GsSPRITE    ball;               /* GsSPRITEプリミティブ(サッカーボール) */
    GsSPRITE    sign[3];            /* GsSPRITEプリミティブ(0:MAX 1:MIN 2:POWER) */
    POLY_G4     pow[4];             /* POLY_G4プリミティブ(ハ

0xEDFA00#

ョ量 */
    short       limit;          /* 移動限界 */
    short       next;           /* 移動フラグの変化 */

} LMOVE;

#if 0
    /* リプレーデータの先頭にくっつく8バイトの内訳 */
    typedef struct {
        u_char  num;            /* 選手番号:これは通常の選手も必ず必要 */
        u_char  col_hs;         /* 髪の色(0~3:10の位)/肌の色(0~3:1の位) */
        u_char  model;          /* 髪型(0~4:10の位)/体型(0~8:1の位) */
        u_char  style;          /* 服装(0~25) */
        u_char  wear;           /* 服の色(0~7) */
        u_char  height;         /* 身長 */
        u_char  hdir;           /* 利き手(10の位)/利き足(1の位)*/
        u_char shbb;            /*打席(最上位1ビット)/靴の色(0~11:下位7ビット)*/
    } REP_HEAD;
#endif

/*----- セーブ情報の構造体 -----*/
typedef struct {

    REP_HEAD    head;           /* ヘッダ */

    Uchar       foot;           /* 利き足(0:右利き 1:左利き) */
    Uchar       board_flg[9];   /* ボードの状態(0:表示 1:非表示) */
    Uchar       EX;             /* エキストラ(0:マッスルランキング 1:エキストラモード) */
    Uchar       EX_LV;          /* エキストラモードのレベル */

    short       H_dir;          /* ボールの水平角度 */
    short       V_dir;          /* ボールの垂直角度 */
    short       C_dir;          /* ボールのカーブ角度 */
    int         Power;          /* ボールを蹴るパワー */
    int         W_dirx;         /* 風のX方向の成分 */
    int         W_dirz;         /* 風のZ方向の成分 */

    short       px;             /* 選手のX座標 */
    short       pz;             /* 選手のZ座標 */
    short       pry;            /* 選手のY回転角度 */
    short       ptheta;         /* 選手とボールのなす角度 */

    short       BGM;            /* BGM */
    Uchar       se_idx;         /* SEのインデックス */
    Uchar       se_frame[32];   /* SEの格納フレーム */
    Ushort      se_no[32];      /* SEの格納命令 */
    Uchar       talk_

0xEE1E00#

me );                          /*名前を変える*/
    }

}

/*************************************************************************
    プレーヤー2側
    名前とプレートの表示設定
        in: CLASS_W* cls    表示する人のクラス
        Uchar flag      表示ON/OFF(ON==表示 / OFF==非表示)
*************************************************************************/
void SetG2dName0501( CLASS_W* cls, Uchar flag )
{
    sys_w;
    SPD_W* spd;
    Uchar tp;

        /*表示OFFのとき*/
    if ( flag == OFF ){
        s->classw0[G_CLS_NAME02].kind = 0;  /*

0xEE4E00#

[ em05_act[0].cls ].kind = 0;
        TRANS_STEP = 0;
        return 1;
    }
    return 0;
}

/*==========================================================================
==エキストラ用演出文字 
==初期表示と演出
==  in:     short type: ==0(シングルヒット)
                                            ==1(ツーベースヒット)
                                            ==2(スリーベースヒット)
                                            ==3(ホームラン)
                                            ==4(アウト)
                                            ==5(ボール)
                                            ==6(ゲームセット)
                                            ==7(ボール4)
==  out:    ==0:    処理中 ==1:終了
=================================

0xEE8200#

d = 0;
    }
}

/***************************************************************************
    ポイントセット関数
***************************************************************************/
void G2d_Set_Point05( Ushort getp, Ushort oldp, Ushort newp )
{
    get_point = getp;
    old_point = oldp;
    new_point = newp;
}



/*==========================================================================
==スプレーヒッター用演出文字のパターン
==========================================================================*/
static SPD_W    parfect_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x80,0x20,0x00,0x80,0xff40,0x0010,0x49},
    {DAT,0x70,0x20,0x80,0x80,0xffc0,0x0010,0x49},
    {DAT,0x60,0x20,0x00,0xa0,0x0030,0x0010,0x49},
    {DAT,0x18,0x20,0x60,0xa0,0x008c,0x0010,0x49},
    {END,0x18,0x20,0x60,0xa0,0x00a0,0x0010,0x49},
    };
static SPD_W    target_1_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x00,0x00,0xffc8,0x0010,0x4d},
    {DAT,0x28,0x18,0xa8,0xa0,0xfffe,0x0010,0x4d},
    {END,0x10,0x18,0x70,0xc0,0x0030,0x0010,0x4d},
    };
static SPD_W    target_2_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x00,0x00,0xffb5,0x0010,0x4d},
    {DAT,0x10,0x10,0xf0,0x90,0xffda,0x0018,0x4d},
    {DAT,0x28,0x18,0x00,0x00,0xffec,0x0010,0x4d},
    {DAT,0x28,0x18,0xa8,0xa0,0x0018,0x0010,0x4d},
    {END,0x10,0x18,0x70,0xc0,0x0044,0x0010,0x4d},
    };
static SPD_W    target_3_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x80,0xb8

0xEF3200#

ll->wind + Random(ball->wind) ) * rsin(cls1->rot.vy))>>12;
                    cls1->rot.vx += ball->wind<<1;
                    cls1->rot.vz += Random(ball->wind);
                    break;
    }
}

/*------------------------------------------------
 着弾エリアを算出する
 引数:なし
 戻値:なし
------------------------------------------------*/
void LSub_Area_Culc(void)
{
    register int    i;                      /* 作業カウンター */
    LEXTRA          *extra = ls->extra;     /* エキストラモード情報へのポインタ */
    short           theta;
    Uchar           tmp[3];
    static Uchar    tbl[3][2] = {
                                    {0,1},{0,2},{1,2},
                                };
    static Uchar    tbl2[4][2] = {
                                    {3,0},{2,1},{1,2},{0,3},
                                 };

/***** 1ヶ所 *****/

    if(extra->cnt == 1)
    {
        extra->area[0] = 0;
        return;
    }

/***** 算出 *****/

    for(i=0;i<3;i++)
    {
        /* ボールの当たった箇所Aとボールの当たった箇所Bのなす角度を算出する */
        theta = ratan2(extra->v[tbl[i][0]].vy - extra->v[tbl[i][1]].vy,extra->v[tbl[i][0]].vx - extra->v[tbl[i][1]].vx);

        if(theta >= 0 && theta <= 1024)         tmp[i] = 0;     /* 左上 */
        else if(theta > 1024 && theta <= 2048)  tmp[i] = 1;     /* 右上 */
        else if(theta < 0 && theta >= -1024)    tmp[i] = 2;     /* 左下 */
        else                                    tmp[i] = 3;     /* 右下 */
    }

/***** 2ヶ所 *****/

    extra->area[0] = tbl2[tmp[0]][0];
    extra->area[1] = tbl2[tmp[0]][1];
    if(extra->cnt == 2) return;

/***** 3ヶ所 *****/

    if(tmp[0] == 0)
    {
        /* 左上 */
        if(tmp[1] == 1)         extra->area[2] = 1;     /* 右上 */
        else if(tmp[1] == 2)    extra->area[2] = 2;
        else if(tmp[1] == 3)
        {
            extra->ar

0xEF8E00#

;
        default:
            TRANS_STEP_S = 0;
            return( 1 );
    }

    return( 0 );
}

void demo_copy05( int mode )
{
    memcpy( ( char * )ANIME_TABLE2, ( char * )( 0x80140000 + mode * 0x10000 ), 0x10000 );
}

0xEFBC00#

初期化
        TVcamInit( 0 );                             // 自前カメラの初期化

        // 自前の2D部品を登録
        bf_GageInit();

        // 旗
        disp4d( &s->classw1[CLS1_HATA], ITM_FLAG,     HATA_POS_X, 0, HATA_POS_Z, 0 );
        HataInit( HATA_POS_X );

        // マット
        disp4d( &s->classw1[CLS1_MAT0], ITM_MAT_0,     0, INIT_POS_Y, 0, 0 );
        disp4d( &s->classw1[CLS1_MAT1], ITM_MAT_1,     0, INIT_POS_Y, 0, 0 );
        s->classw1[CLS1_MAT0].obj3D_w[0].ot_no = 32;            // 堅い部分は、確実に足の下に
        s->classw1[CLS1_MAT1].obj3D_w[0].ot_no = 2;             // ふかふか部分は、めり込んでも良し

        // 木とか看板とか
        disp4d( &s->classw1[CLS1_OBJECTS], ITM_OBJECTS,  0, INIT_POS_Y, 0, 0 );
        s->classw1[CLS1_OBJECTS].obj3D_w[0].ot_no = 32;

        // セット
        disp5d( &s->classw1[CLS1_STUDIO_F], GND_STUDIO_F, 32 );
        s->classw1[CLS1_STUDIO_F].yposi = INIT_POS_Y;
        setScaleClass1( &s->classw1[CLS1_STUDIO_F], MODEL_SCALE );
        disp5d( &s->classw1[CLS1_STUDIO_B], GND_STUDIO_B, 32 );
        s->classw1[CLS1_STUDIO_B].yposi = INIT_POS_Y;
        setScaleClass1( &s->classw1[CLS1_

0xF00E00#

   Sh_Pitching_Result,
    Sh_Furutachi_Entry,
    Sh_Perfect,
    Sh_Gameover,
    Sh_Next_Player_Check,
    Sh_Next_Player,
    Sh_Ceremony,
    Sh_Cpu_Skip,
    Sh_Again,
    Sh_Test,
};

/* パネル座標 */
short sh_pposi[][2]={   {   0,-1660},   /* 1番パネル */
                                            {-210,-1240},   /* 2番パネル */
                                            { 210,-1240},   /* 3番パネル */
                                            {-420, -820},   /* 4番パネル */
                                            { 420, -820},   /* 5番パネル */
                                            {-630, -400},   /* 6番パネル */
                                            {-210, -400},   /* 7番パネル */
                                

0xF03E00#

読み込み */
        case 4:     LoadEf(0);
            if(CharTrans(0,1))sp->step0+=1;
        break;

        case 5:                                                             /*99.07.27  nakayama    アナウンサーロード*/
            LoadEf( 0 );
            if( AnaTrans() ){
                sp_step0_up();
            }
        break;

        case 6:                                                             /*99.09.24 satou デモモーションロード */
            LoadEf( 0 );
            if( G3dTrans05demo( 0 ) ){
                sp_step0_up();
            }
        break;

        /* スタートボタンが押されるのを待つ */
        case 7: 
            if(LoadEf(1) == 2)sp->step0+=1;
        break;

        /* システムワークの初

0xF06400#

sh->joy_t[2] = &sp->joyw[1].joytrg;    /* 2コン初期化 */
    sh->joy_w[2] = &sp->joyw[1].joy_w;
    sh->joy_t[3] = &sh->cpupad; /* CPUコントローラー */
    sh->joy_w[3] = &sh->cpupad;
    sh->joy_t[0]  = &sp->joyw[0].joytrg;    /* アクティブコントローラ初期化 */
    sh->joy_w[0]  = &sp->joyw[0].joy_w;
    sh->joy_old[0]= &sp->joyw[0].joyold;
    sh->actpad=1;

//  s->classw[0].obj3D_w[6].be = ON;        /* 左手グー */

    set_local_func(Sh_Draw);    /* メイン割り込み関数セット */

//sp->gstepw+=1;
Sh_Gstep_Up();

return 0;
}

/*----------------------------------------------*/
/* ゲーム部分セット                             */
/*----------------------------------------------*/
void Sh_Play_Set(void)
{
sp_w;
sys_w;
/* 初期値 */
#define SH_BATTER_VY 3072
#define SH_TOSSER_VY 432

short batter_x=-350;
short batter_z=SH_ALL_OFFSETZ;
short tosser_x=900;
short tosser_z=1000+SH_ALL_OFFSETZ;
short container_x=950;
short container_z=700+SH_ALL_OFFSETZ;
short container_roty=0;
short batter_vy;
short tosser_vy;

//  s->c

0xF0D400#

           Sh_View_Set(0,SV_BUFF1,0,0);
//                  Sh_View_Set(0,SV_BUFF2,0,0);
            }

            if(joy_w & P_LRIGHT){cls->xposi+=50;}
            if(joy_w & P_LLEFT){cls->xposi-=50;}
            if(joy_w & P_LUP){cls->zposi-=50;}
            if(joy_w & P_LDOWN){cls->zposi+=50;}

            if(joy_w & P_TL){cls->rot.vy-=100;}
            if(joy_w & P_TL1){cls->rot.vy+=100;}

            prin(cls->xposi);
            prin(cls->zposi);
            prin(cls->rot.vy);
            prin(sw);

#if 0
    /* 視点 */
    if(joy_w & P_LRIGHT){sp->rview.vpx+=100;}
    if(joy_w & P_LLEFT){sp->rview.vpx-=100;}
    if(joy_w & P_LUP){sp->rview.vpy-=100;}
    if(joy_w & P_LDOWN){sp->rview.vpy+=100;}
    if(joy_w & P_TL){sp->rview.vpz-=100;}
    if(joy_w & P_TL1){sp->rview.vpz+=100;}

    /* 注視点 */
    if(joy_w & P_RRIGHT){sp->rview.vrx+=100;}
    if(joy_w & P_RLEFT){sp->rview.vrx-=100;}
    if(joy_w & P_RUP){sp->rview.vry-=100;}
    if(joy_w & P_RDOWN){sp->rview.vry+=100;}
    if(joy_w & P_TR){sp->rview.vrz-=100;}
    if(joy_w & P_TR1){sp->rview.vrz+=100;}
#endif

#if 0
            Sh_Camera_Rotate(5,0,0);

            Sh_Motion_Demo(&s->clas

0xF10A00#

汲フ座標(吹き飛び中)                    */
/*カウント60フレームで計算                      */
/*----------------------------------------------*/
int  Sh_Panel_Coordinate(int no,int frame,VECTOR *vec,SVECTOR *rot)
{
//  sp_w;
//int worky,workz;
//int y0,z0;
//int worky0,workz0;
int v,g,gain;
int x,y,z;
int worky1,worky2;
/* 内部計算用 */
POLY_F4 f4;
SVECTOR apex[4];/* 座標値 */
//VECTOR vec;
//SVECTOR rot;
MATRIX m;
long flg,dmy;

#if 0
    /* パネルの中心に近いほど力が強まる */
    if(sh->p[i].wang>sh->p[no].hang)
    {
        gain=20-abs(sh->p[no].wang);
        if(gain<0){gain=0;}
    }
    else
    {
        gain=20-abs(sh->p[no].hang);
        if(gain<0){gain=0;}
    }

//  v=(so_chrdat[sp->chara[0]][0]/6)+gain;  /* パネルの吹き飛ぶ力はスピードにより変化 */
#endif

    v=-10;

    g=5; /* 9.8÷2≒5 */

/* Y方向 */
    worky1=v*rsin(sh->p[no].hang)*frame/ONE*400/(30*SH_CALC_FRAME);
    worky2=(g*(frame*frame))*400/(30*SH_CALC_FRAME)/(30*SH_CALC_FRAME);
    y=worky1+worky2;
/* z方向 */
    z=v*rsin(sh->p[no].wang)*frame/ONE*400/(30*SH_CALC_FRAME);
/* x方向 */
    x=v*rcos(sh->p[no].wang)*frame/ONE*400/(30*SH_CALC_FRAME);

    vec->vx=sh->p[no].x+x;
    vec->vy=sh->p[no].y+y;
    vec->vz=sh->p[no].z+z/4;

    rot->vx=-(sh->p[no].rotx*10*frame);
    rot->vy=sh->p[no].roty*10*frame;
    rot->vz=0;

    rot->vx%=ONE;
    rot->vy%=ONE;
//  rot->vz%=ONE;
/* ※パネルのZ軸回転は無し */

/* パネルの地面着地用計算 */
    setVector(&apex[0],-SH_PANEL_SIZE1/2,0,-SH_PANEL_SIZE1/2);
    setVector(&apex[1], SH_PANEL_SIZE1/2,0,-SH_PANEL_SIZE1/2);
    setVecto

0xF15A00#

everse,SV_BUFF1,60))
                {
                    sh->timer[0]=0;
                    sh->v.camflg=0;
                    sp_step0_up();
                }
            }
        }
    break;

    case 2:
        if(*sh->joy_t[1] & P_RRIGHT)
        {
            sp->step0=5;
            return 0;
        }

            if(sh->restpanel==2)
            {
                switch(sp->step1)
                {
                case 0:
                    if(Sh_View_Set(1,SV_BUFF1,SV_BUFF1,10))
                    {
                        sh->v.camflg=0;
                        sp->step1+=1;
                    }
                break;

                case 1:
                    if(Sh_View_Set(1,SV_BUFF1,SV_BUFF2,100))
                    {
                        sh->v.camflg=0;
                        Sh_Setview_View(SV_BUFF1,0);
                        sp_step0_up();
                    }
                break;
                }
            }
            else
            {
                switch(sp->step1)
                {
                case 0:
                    if(Sh_View_Set(1,SV_BUFF1,SV_BUFF1,20))
                    {
                        sh->v.camflg=0;
                        sp->step1+=1;
                    }
                break;

                case 1:
                    if(Sh_View_Set(1,SV_BUFF1,SV_BUFF2,60))
                    {
                        sh->v.camflg=0;
                        sp->step1+=1;
                    }
                break;

                case 2:
                    if(Sh_View_Set(1,SV_BUFF2,SV_BUFF2,10))
                    {
                        sh->v.camflg=0;
                        sp->step1+=1;
                    }
                break;

                case 3:
                    if(Sh_View_Set(1,SV_BUFF2,SV_BUFF3,60))
                    {
                        sh->v.camflg=0;
                        Sh_Setview_View(SV_BUFF1,0);
                        sp->step1=0;
//                      sp_step0_up();
                        sp->step0+=1;
                    }
                break;
                }
            }
    break;

    case 3:
        if(*sh->joy_t[1] & P_RRIGHT)
        {
            sp->step0=5;
            return 0;
        }

        if(Sh_View_Set(1,SV_BUFF1,SV_BUFF1,10))
        {
            sh->v.camflg=0;
            sp_step0_up();
        }

#if 0
        switch(sp->step1)
        {
        case 0:
            if(Sh_View_Set(1,SV_BUFF1,SV_BUFF1,10))
            {

0xF1E200#

tVector(&pt->v[2],-SPARK_SIZE, SPARK_SIZE,0);
    setVector(&pt->v[3], SPARK_SIZE, SPARK_SIZE,0);

#if 0
    static Uchar    col = 0x84;
    if(OLDKEYL1(JOY1))  col--;
    if(OLDKEYR1(JOY1))  col++;
    pt->ft4.clut = GetClut(SPRT_CX(col),SPRT_CY(col));
    FntPrint("COL(0x%02x)\n",col);
#endif
}

/*------------------------------------------------
 エフェクト6(煙)の初期化
 引数:なし
 戻値:なし
------------------------------------------------*/
void LInit_Effect6(void)
{
    register int    i;                          /* 作業用カウンター */
    LEFFECT6        *pt = ls->effect6;          /* エフェクト6ワークへのポインタ */
    Uchar           smoke_rgb[2] = {64,128};
    short           smoke_size[2] = {64,128};

    for(i=0;i<2;i++)
    {
        /* プリミティブの初期化 */
        LInit_Sub_FT4(&pt->ft4[i],1);
        setRGB0(&pt->ft4[i],smoke_rgb[i],smoke_rgb[i],smoke_rgb[i]);
        pt->ft4[i].tpage = GetTPage(0,1,512,256);
        pt->ft4[i].clut = GetClut(SPRT_CX(0x92),SPRT_CY(0x92));

        /* ベクトルの初期化 */
        setVector(&pt->v[i][0],-1*smoke_size[i],-1*smoke_size[i],0);
        setVector(&pt->v[i][1],   smoke_size[i],-1*smoke_size[i],0);
        setVector(&pt->v[i][2],-1*smoke_size[i],   smoke_size[i],0);
        setVector(&pt->v[i][3],   smoke_size[i],   smoke_size[i],0);
    }
}

/*------------------------------------------------
 エフェクト7(エキストラ着弾箇所)の初期化
 引数:なし
 戻値:なし
------------------------------------------------*/
void LInit_Effect7(void)
{
    register int    i;                  /* 作業カウンター */
    LEFFECT7        *pt = ls->effect7;  /* エフェクト7情報へのポインタ */

    /* POLY_G3

0xF23600#

o;
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;   /* モーションナンバー */

ch

0xF25C00#

int G3dTrans05demo( int mode );
extern void set_demo_hand( unsigned char mode, unsigned char offset );
extern void set_konami_mode( void );    /* コナミモードフラグON */
extern void set_kongou_mode( void );    /* 金剛君フラグON */extern char   buff[];     /*p_1.c     test デバッグフォント*/

extern char buff[];     /*p_1.c     test デバッグフォント*/
extern void g_RankInfo( Uchar *, Ushort * );    /* ランキング情報取得 */
extern void g_PAinit( u_char );
extern void setAnaModel(void);
extern void View_Init( void );

extern volatile short XA_play;

/*----------------------------------------------*/
/* 変数エクスターン                             */
/*----------------------------------------------*/
/* sh_gbl.c */
extern short sh_vdata[][8];
/* disp3d.c */
extern int ana_posctl;


#endif
0,
    SH_EX_MODEL_INIT,
    SH_EX_FIRST_INIT,
    SH_EX_OPENING,
    SH_EX_PLAYER_INTRODUCTION,
    SH_EX_PREPARATION,
    SH_EX_TOSS,
    SH_EX_BATTING,
    SH_EX_REPLAY,
    SH_EX_PITCHING_RESULT,
    SH_EX_FURUTACHI_ENTRY,
    SH_EX_PERFECT

0xF2CA00#

nt("riff %d\n", rif_range[2][2]);
#endif
    ret = ( gm_func[sp->stepw_s] )();

    switch(ret){
    case 0:
        break;
    default:
        AllWork_Clear( 0 );                                 // <others.c>
        Classw_Clear( 1 );
        return 1;
        break;
    }


#ifdef TEST
{
    sys_w;

    if( sp->joyw[0].joy_w & P_START && sp->joyw[0].joytrg & P_SELECT ) {
        AllWork_Clear( 0 );                                 // <others.c>
        Classw_Clear( 1 );
        return 1;                                                       /* 競技終了 */
    }
    FntPrint("step0 %d step1 %d step2 %d step3 %d gms %d\n", sp->step0, sp->step1, sp->step2, sp->step3, sp->stepw_s);
    FntPrint("proj %d\n", sp->projection);

    if(sp->stepw_s == GM_REPLAY){
        FntPrint("char xyz %d %d %d\n", s->classw[0].xposi, s->classw[0].yposi, s->classw[0].zposi);
        FntPrint("ball xyz %d %d %d\n", s->classw1[0].xposi, s->classw1[0].yposi, s->classw1[0].zposi);
        FntPrint("len %d\n", gm_get_xzlen(&s->classw[0], gm_work.ball_cls1, 0));
    }
}
#endif

    return 0;
}


/********************/
/* 初期化処理                */
/********************/
int GM_Init(void)
{
    int i;
    sp_w;
    sys_w;
#if TEST_MEM_DAT
    long        mfp;
#endif

    switch( sp->gstepw ) {
    case 0:                                                             /* */
        if ( LoadEf( 0 ) == 1 ){                        /*nakayama  VRAMへのデータ転送が可能になるまで待つ*/
            GM_SdOffFlag = 0;                                   /*通常 SD_call()指定*/
            gstep_up();

#if TEST_MEM_DAT
            if (sp->mode_fg == 3) {                     /* リプレイ再生 */
                while (( mfp = PCinit()) != 0);
                if ( mfp = PCopen( "savedat.dat", 0, 0 ) == -1 )
                {
                    //オープンエラー
                    FntPrint("!!!!!!!!! Fail to SAVE

0xF32C00#

_HURDLE1) || (sp->step0 == GMS_HURDLE2)) &&
                    (sp->step1 == 4 || sp->step1 == 8) )
        {
            if(check_J_ball_posi(cls, cls1)){                       /*ハードル用*/
                ret = 1;
            }
        }
//      else if( (sp->step0 == GMS_DSTAIRS1)&& (sp->step1 == 4) )
        else if( (sp->step0 == GMS_DSTAIRS1)&& ((sp->step1 == 5)||(sp->step1 == 6)) )
        {
            ret = check_D_ball_posi(cls, cls1);                 /*下り階段  同じようなものがどんどん増えてゆく*/
        }
        else if( (sp->step0 == GMS_UPSTAIRS)&& (sp->step1 == 2) )
        {
            ret = check_U_ball_posi(cls, cls1);                 /*上り階段  同じようなものがどんどん増えてゆく*/
        }
        else if( (sp->step0 == GMS_DSTAIRS2)&& (sp->step1 == 3) )
        {
            ret = check_D_ball_posi(cls, cls1);                 /*下り階段  同じようなものがどんどん増えてゆく*/
        }
        else
        {
            if(check_ball_posi(cls, cls1)){                 /*ボール拾い判定*/
                ret = 1;
                break;
            }
//              ret = check_ball_posi(cls, cls1);                   /*ボール拾い判定*/
        }
        if(ret)
        {
            if ((sp->step0 != GMS_TOSS) && (sp->step0 != GMS_PASS))
            {
                break;
            }
        }

0xF35E00#

                if( (cls->zposi >= GM_START_SLOPE) && (cls->zposi < GM_END_SLOPE) ){
                    gmmotp->mot_no+=3;                                              /*坂用リフモーション*/
                }
//              else if((GM_STEPDOWN - 50 <= cls->zposi) && (cls->zposi < GM_STEPDOWN)){
//                  gmmotp->mot_no = GMM_DOWN_STEP;                     /*台降り*/
//              }
//              else if( (cls->zposi >= GM_START_DSTEP1) && (cls->zposi < GM_END_DSTEP1) ){
//                  gmmotp->mot_no+=6;                                          /*階段降り*/
//              }
                else{
                    Pose_Set2(cls, GM_UKE_WALK2, 0);                    /*歩き*/
                }
            }
            if(gm

0xF38C00#

               cls->hdir = (cls->hdir)? 0: 1;
            }
            break;
    }
}


/**********/
/*坂リフ足*/
/**********/
void foot_slope(CLASS_W *cls)
{
    switch(gmmotp->mot_act){
        case 1:
            GM_Pose_Set(cls, GM_FOOT_PLAIN, 3, 0);

            /*ボールを足に寄せる*/
            gm_revision_foot(cls, gm_work.ball_cls1);
            gm_work.ball_cls1->work4 = OFF;

            gmmotp->mot_act++;
            break;
        case 2:                                         /*ボタン押し用あたりを見るステップ*/
        default:
            if(End_Pose_Change(cls, GM_SLOPE_STAND)){
                gmmotp->mot_act= 0;
                gmmotp->mot_no = 0;
                cls->hdir = (cls->hdir)? 0: 1;
            }
            break;
    }
}



/**************************/
/*階段上りモーション(頭)  */
/**************************/
void head_upstep(CLASS_W *cls)
{
    sp_w;

    switch(gmmotp->mot_act){
        case 1:
            GM_Pose_Set(cls, GM_HEAD_PLAIN, 3, 0);

//          gm_revision_head(cls, gm_work.ball_cls1, 0);
            gm_revision_head(cls, gm_work.ball_cls1, 1);
            gm_work.ball_cls1->work4 = ON;

            gmmotp->mot_act++;
            break;
        case 2:
            gm_recover_head(cls, g

0xF3BA00#

)
                {
                    sp->rview.vrz += addZval[cls->pose-5];
                }
            }

            if(End_Pose_Change(cls, GM_NORMAL_STAND)){
                cls->merge_timer = 0;                                       /*座標が大きく変わるためマージを止める*/
                gmmotp->mot_act= 0;
                gmmotp->mot_no = 0;
                cls->hdir = (cls->hdir)? 0: 1;
            }
            break;
    }
    if(cls->anime_no == GM_JUMP){
        cls->zposi += gm_jump_tbl[cls->pose];
    }
}



/**********************************/
/*パス受けモーション(胸)                  */
/**********************************/
void receive_breast_motion(CLASS_W *cls)
{
    switch(gmmotp->mot_act){
        case 1:
            GM_Pose_Set(cls, GM_UKE, 0, 0);
            gm_work.ball_cls1->xposi = ( 90 * rsin(cls->rot.vy-2048)>>12) +
                                                                        cls->obj3D_w[PARTS_BODY].pCoordSect[KOSHI].workm.t[0];
            gm_work.ball_cls1->zposi = ( 90 * rcos(cls->rot.vy-2048)>>12) +
                                                                        cls->obj3D_w[PARTS_BODY].pCoordSect[KOSHI].workm.t[2];
            gm_work.ball_cls1->work4 = ON;
            gmmotp->mot_act++;
            break;
        case 2:
            if(End_Pose_Change(cls, GM_NORMAL_STAND)){
                gmmotp->mot_act= 0;
                gmmotp->mot_no = 0;
            }
            break;
        default:
            gmmotp->mot_act= 0;
            gmmotp->mot_no = 0;
            break;
    }
}


/**********************************/
/*台に登る                  */
/**********************************/
void up_footstool_motion(CLASS_W *cls)
{
    switch(gmmotp->mot_act){
        case 1:
            GM_Pose_Set(cls, GM_LEG_PLAIN, 3, 0);
            gm_work.ball_cls1->work4 = OFF;
            gmmotp->mot_act++;
            break;
        case 2:
//          if(End_Pose_Change(cls, GM_STAND_UPSTEP)){          /*段上り*/

0xF45600#

 0;

            sp->step1++;
            break;

        case 1:                                                 /*リフティング中*/
            SetG2dSt06PassDisp(ON);
            SetG2dSt06RUPActive(ON);
            SetG2dSt06RRIGHTActive(ON);

            /*****************************************/
            /** COM用の蹴り待ち *******************/
            /*****************************************/
            if (com->cpu)
            {
                switch(com->step0)
                {
                case 0:
                    if(pad->joytrg & P_RRIGHT)
                    {
                        /*COMキャンセル*/
                        pad->joytrg &= ~P_RRIGHT;                   /*をキャンセル*/
                    }

0xF4A600#

turn_flg = OFF;
        return 0;
    }
    else{
        gmmotp->turn_flg = ON;
    }

//  move_partner(0);            /*パートナーの移動*/
    gm_clear_dxdz();

    if(cls->zposi <= GM_START_SLOPE)                /*クランク*/
    {
        turn = turn*4/3;
    }


    /*2048を超える回転はない*/
    cls->rot.vy = (cls->rot.vy+turn<muki)? cls->rot.vy+turn:
                                (cls->rot.vy-turn>muki)? cls->rot.vy-turn: muki;

    cls->rot.vy = (cls->rot.vy<0)           ? cls->rot.vy+4096 :
                                (cls->rot.vy>=4096) ? cls->rot.vy-4096 : cls->rot.vy;


    len = (len+4 <110)?

0xF4EE00#

keyInput(gm_work.main_cls, 1);                         /*COMの動き*/
            if ((s->classw[0].cpu) && (sp->joyw[0].joytrg == P_RRIGHT))
            {
//              gm_work.main_cls->work4 = gm_high.f_head.y + gm_high.f_head.h/2;
                gm_work.main_cls->work4 = (gm_high.gauge[0][1].y0+gm_high.gauge[0][1].y2)/2;
                                                                                                    /*次で使う中心位置*/
                /*一度高く上げる*/
                sp->joyw[0].joytrg &= ~P_RRIGHT;
                sp->joyw[0].joytrg |= P_RUP;
            }

            check_ball_move(gm_work.main_cls, gm_work.ball_cls1);               /*ボールの移動と拾い判定*

0xF60A00#

ret = -240;
    }
    else if(z>=-4290 && z<-4130){
//      if( check_ball_x(re_x, 800, 1600) ) ret = -175;
        if( check_ball_x(re_x, 800, 1600) ) ret = -180;
    }
    else if(z>=-4130 && z<-3970){
//      if( check_ball_x(re_x, 800, 1600) ) ret = -117;
        if( check_ball_x(re_x, 800, 1600) ) ret = -120;
    }
    else if(z>=-3970 && z<-3810){
//      if( check_ball_x(re_x, 800, 1600) ) ret = -59;
        if( check_ball_x(re_x, 800, 1600) ) ret = -60;
    }
    else if(z>=-3810 && z<-3800){
        if( check_ball_x(re_x, 800, 1600) ) ret = 0;
    }
    else if(z>=-3800 && z<-3250){
        if( check_ball_x(re_x, -3*z/11-236, 1450) ) ret = 0;
    }
    else if(z>=-3250 && z<1150){
        if( check_ball_x(re_x, 650, 1450) ) ret = 0;
    }
    else if(z>=1150 && z<1550){
        if( check_ball_x(re_x, 650, z*21/20+242) ) ret = 0;
    }
    else if(z>=1550 && z<GM_START_USTEP){
        if( check_ball_x(re_x, z-900, 1870) ) ret = 0;
    }
    else if(z>=GM_START_USTEP && z<2500){
        if( check_ball_x(re_x, 1450, 1870) ) ret = 0;
    }
    else if(z>=2500 && z<2650){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -143;
    }
    else if(z>=2650 && z<2800){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -214;
    }
    else if(z>=2800 && z<2950){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -285;
    }
    else if(z>=2950 && z<3100){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -356;
    }
    else if(z>=3100 && z<3250){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -428;
    }
    else if(z>=3250 && z<3400){
        if( check_ball_x(re_x, 1450, 1870) ) ret = -499;
    }
    else if(z>=3400 && z<GM_END_USTEP){
        if( check_

0xF67A00#

k;
        case    0: g_ResSet( gm_status.player_no+1,     0, 0);      break;
        case    1: g_ResSet( gm_status.player_no+1,  10, 1);        break;
        case    2: g_ResSet( gm_status.player_no+1,  20, 2);        break;
        case    3: g_ResSet( gm_status.player_no+1,  40, 3);        break;
        case    4: g_ResSet( gm_status.player_no+1,  70, 4);        break;
        case    5: g_ResSet( gm_status.player_no+1, 110, 5);        break;
        case    6: g_ResSet( gm_status.player_no+1, 150, 6);        break;
        case    7: g_ResSet( gm_status.player_no+1, 190, 7);        break;
        case    8: g_ResSet( gm_status.player_no+1, 230, 8);        break;
        case    9: g_ResSet( gm_status.player_no+1, 280, 8);        break;
        case 10: g_ResSet( gm_status.player_no+1, 350, 9);      break;
        case 11: g_ResSet( gm_status.player_no+1, 230, 8);      break;
        default:
            if(area%3==0)               g_ResSet( gm_status.player_no+1, 230, 8);
            else if(area%3==1)  g_ResSet( gm_status.player_no+1, 280, 8);
            else if(area%3==2)  g_ResSet( gm_status.player_no+1, 350, 9);
            break;
    }
#endif

}


/**********************/
/*競技順表示                 */
/**********************/
int GM_Order(void)
{
    sp_w;
    sys_w;
    int i;
    JOY_W *pad;

    pad = &sp->joyw[0];

    switch(sp->step0){
        case 0:                                                                     /*データのセット*/
            if (MenuFadeOut(32, 0) ){
                set_camera(&op_came_tbl[13]);
//          AnaDispSwitch(&s->classw[3],OFF);
//          SetG2dAna03( ANA_FURU, OFF );
//              GM_SD_call(B_RESULT);       /*test*/

                g_MAEinit( 0 );
                for(i=0; i<entry_num; i++){
                    g_ResSet( i+1, 0, 0 );
                }
                g_MAEjun( 1, 0 );

//              sp->step0++;
                sp_step0_up

0xF6D400#

           switch(sp->step0){                  /*まだ影が無い時や影に足が食われる*/
                case GMS_SLOPE:
                    if(cls->zposi > GM_STEPUP){
                        Ot_no[0] = 6;       Ot_no[1] = 32;
                    }
                    else if(cls->zposi > GM_END_SLOPE){
                        Ot_no[0] = 0; Ot_no[1]= kp->otz;
                    }
                    else{
                        Ot_no[0] = 6;       Ot_no[1] = 32;
                    }
                    break;
                case GMS_UPSTAIRS:
                    if(cls->zposi > GM_END_USTEP){
                        Ot_no[0] = 7;       Ot_no[1] = 64;
                    }
                    else{
                        Ot_no[0] = 8;       Ot_no[1] = 128;
                    }
                    break;
//              case GMS_UPSTAIRS:  Ot_no[0] = 9;       Ot_no[1] = 253;     break;
//              case GMS_HURDLE1:       Ot_no[0] = 8;       Ot_no[1] = 128;     break;
//              case GMS_HURDLE2:       Ot_no[0] = 8;       Ot_no[1] = 128;     break;
                    case GMS_DSTAIRS1:  Ot_no[0] = 6;       Ot_no[1] =  32;     break;

                    case GMS_TOSS:
                    case GMS_PASS:
                    case GMS_CRANK:
                    case GMS_HURDLE1:
                    case GMS_HURDLE2:
                    case GMS_DSTAIRS2:
                        Ot_no[0] = 0; Ot_no[1]= kp->otz;
                        break;
                default:                        Ot_no[0] = 6;       Ot_no[1] = 32;      break;
            }
        }
        el

0xF72C00#

           if(ball->wind >= 10 && ball->wind <= 30)                wind_type += 1; /* 通常 */
                        else if(ball->wind > 30)                                wind_type += 2; /* 強風 */
                    }

                    /* 風のタイプ別攻略 */
                    LTalk_Call(HATU_AFTER + 4 + wind_type);
                    break;

        /* シュート前 */
        case 1:     LTalk_Call(HATU_EX_SHOOT);      /* 「コンセントレーションが高まってきました」 */
                    break;

        /* シュート時 */
        case 2:     LTalk_Call(HATU_EX_SHOOT+1);    /* 「さあ、どうだー!」 */
                    break;
    }
}

/*------------------------------------------------
 実況EX(初田):成功
 引数:なし
 戻値:なし
------------------------------------------------*/
void LTalk_Hatu_EX_Success(void)
{
    /* 汎用 */
    LTalk_Call(HATU_EX_SUCCESS);    /* 「これはっ!いったーっ」 */
}

/*------------------------------------------------
 実況EX(初田):失敗
 引数:なし
 戻値:なし
------------------------------------------------*/
void LTalk_Hatu_EX_Miss(void)
{
    if(ls->declare->reason == 1)
    {
        /* フレーム */
        LTalk_Call(HATU_EX_MISS+1);     /* 「あーっと!

0xF7FA00#

OFF
##  リプレー関係の表示そのものを消す
##  クラスの表示スイッチをオフにするだけ
##########################################################################*/
void DelG2fRepPlate06()
{
    sys_w;
    register int i;

    rep_ctrl06.silent = 1;  /*沈黙せよ*/
    for ( i=G_CLSR_REPLAY; i<=G_CLSR_PLATE; i++ ){
        s->classw0[ i ].kind = 0;
    }
}

/***************************************************************************
    グラフィック全消去
***************************************************************************/
void KillG2d06(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;
    }
}


/*##########################################################################
##ゲームメーカー用演出文字のパターン
##########################################################################*/
static SPD_W    parfect_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x80,0x20,0x00,0x80,0xff44,0x0013,0x49},
    {DAT,0x70,0x20,0x80,0x80,0xffc4,0x0013,0x49},
    {DAT,0x60,0x20,0x00,0xa0,0x0034,0x0013,0x49},
    {DAT,0x18,0x20,0x60,0xa0,0x0092,0x0013,0x49},
    {END,0x18,0x20,0x60,0xa0,0x00a8,0x0013,0x49},
    };
static SPD_W    ready_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x80,0xa0,0xffa7,0x0010,0x4d},
    {DAT,0x20,0x18,0x80,0xb8,0xffca,0x0010,0x4d},
    {DAT,0x28,0x18,0xa8,0xa0,0xffeb,0x0010,0x4d},
    {DAT,0x28,0x18,0xd8,0xb8,0x0010,0x0010,0x4d},
    {END,0x28,0x18,0x80,0xd0,0x0034,0x0010,0x4d},
    };
static

0xF85E00#

優勝者の判定 */
                    LSub_Winner_Check();

                    /* 優勝人数1~3人ならば表彰式へ、そうでなければ終了 */
                    if(player->v_num >= 1 && player->v_num <= 3)    ls->step++;
                    else                                            ls->step = 8;
                    break;

        /* 表彰式テクスチャーの読み込み */
        case 1:     if(No1_Trans() == 1)
                    {
                        if(player->v_num == 1)
                        {
                            motion->dtype = Random(3);
                            ls->step++;
                        }
                        else
                        {
                            while( !No1_Trans2(&player->v_box[0],player->v_num) );  /* 優勝シーン用顔グラ転送

0xF8A200#

               if(pt->next_mx >= (pt->pw<<1))  pt->next_mx = (pt->pw<<1);
                        pt->next_mw = pt->next_mx;
                        limitRange(pt->next_mw,pt->lx,(pt->pw<<1));
                    }

                    /* 終了 */
                    if(ls->flg == 1)
                    {
                        /* JUST */
                        if((pt->mw >= (pt->gx - pt->gw)) && (pt->mw <= (pt->gx + pt->gw)))
                        {
                            pt->mw = pt->gx;
                            pt->just_cnt[1] = 1;
                            SD_call(SD_RESULT);     /* SE */
                        }
                        else
                        {
                            SD_call(SD_18_GAGE4);   /* SE */
                        }

                        /* SE */
                        SD_SeStop(SD_18_GAGE2);
                        SD_call(SD_18_GAGE3);

                        /* JUSTよりパワー弱く打つとスタミナが減らない(※COMはスタミナが減らない) */
                        if(ls->mode != MODE_EXTRA && !ls->cpu && pt->mw >= pt->gx - pt->gw) ls->stamina--;

                        /* パワーのずれ */
                        ball->Power = ((pt->mw - pt->gx) * 64) + BASIC_POWER;
                        LInit_Ball();
                        LBall_Simulate();

                        ls->flg = 0;
                        ls->step = 0;
                        if(ls->mode == MODE_EXTRA)  ls->game = EXGM_MEET;
                        else                        ls->game = GAME_MEET;
                    }
                    break;
    }

    LHelp_Gage1_Color(6);                           /* 左右の狙いの色の初期化 */
    if(ls->mode == MODE_EXTRA)  LEX_Stage_Move();   /* エキストラモードの各ステージの仕掛け */
}

/*------------------------------------------------
 ゲームイベント03:ミートポイント
 引数:なし
 戻値:なし
------------------------------------------------*/
static void LGame_Meet(void)
{
    short       tmp = 0;            /* 作業ワーク */
    CLASS_W     *cls = ls->Phuman;  /* 選手モデルへのポインタ */
    LBALL       *ball = ls->ball;   /* ボール情報

0xF8EE00#

       LGEnd_Produce(1);   /* 演出 */
                    break;

        /* メイン(実際には実況待ちの必要アリ) */
        case 4:     if(LGEnd_Produce(1) == 0 || OLDKEYRRIGHT(JOY1))
//      case 4:     if(OLDKEYRRIGHT(JOY1))
                    {
#ifdef  DEMO_EDIT_PERFECT
                        ls->sstep++;        /* カメラエディター */
#else
                        ls->sstep += 2;     /* 通常進行 */
#endif
                    }

#if 0
                    if(KEYLUP(JOY1))    ls->Phuman->rot.vx += 16;
                    if(KEYLDOWN(JOY1))  ls->Phuman->rot.vx -= 16;
                    if(KEYLLEFT(JOY1))  ls->Phuman->rot.vz += 16;
                    if(KEYLRIGHT(JOY1))

0xF92400#

       /*0c    プレイヤー登場         */
    GMS_NEXTPLAYER,         /*0d    次のキャラに更新        */
    GMS_KONGO        ,          /*0e    金剛くん登場              */
}GM_PLAY_STATUS;


typedef struct{
    CLASS_W     *main_cls;
    CLASS_W     *sub_cls;
    CLASS1_W    *ball_cls1;
}GM_WORK;

typedef struct{         /*リフティングモーション管理用*/
    Uchar status;                               /*競技中の行動状態*/
    Uchar mot_no;                               /*アニメの番号*/
    Uchar mot_act;                          /*行動状態*/
    Uchar mot_stop;                         /*モーションを止めるフラグ*/
    short turn_rot;                         /*ターンする角度*/
    Uchar turn_flg;                         /*ターン           キャラの歩きモーションを出す*/
    Uchar move;                                 /*移動してよいかのフラグ*/

    /* 松尾追加 99.11.09 *******/
    Uchar       passAreaNum;                /* パスエリアの番号 */
    Uchar       camCtrlFlg;                 /* 強制カメラ用制御 0:なし 0x1:Y制御 0x2:Z制御*/
    Uchar       gageType;                       /* パス受け用 */
    Uchar       dummy;                          /* 穴埋め */
}GM_MOTION;


/*ゲーム情報用の構造体*/
typedef struct{
    Uchar player_no;                /*何番目のキャラがプレイしているか(entryboxのインデックス)*/
    Uchar skip_flg;                 /*スキップ

0xF93E00#

->ball;    /* ボール情報へのポインタ */
    LSAVE           *save = ls->save;   /* セーブ情報へのポインタ */

#if 0
    ・エディット選手
    ・ラモスや金剛くんなどキックモーションが違う選手には要注意
    ・実況
    ・カメラ
#endif

    switch(type)
    {
        case 0:     for(i=0;i<9;i++)
                    {
                        save->board_flg[i] = ls->board->flg[i];     /* ボードの状態(0:表示 1:非表示) */
                    }
                    save->H_dir = ball->H_dir;                      /* ボールの水平角度のセット */
                    save->V_dir = ball->V_dir;                      /* ボールの垂直角度のセット */
                    save->C

0xF9B400#

w[0].work1);                   /*キープ*/
        sp->step1++;
        break;

    case 5:
        objectReStore(indexNum[replayNum++]);
        if (CheckTrg(0, P_RDOWN))
        {
            /* リプレイセーブ */
            if (sp->mode_fg != 3)
                SetG2dSave06();
        }

        if (CheckTrg(0, P_RRIGHT))
        {
            SD_call(SD_CTL_XAKILL2);

            sp->step0 = GMS_REPOP;
            sp->step1 = 5;
            break;
        }

        if (GMK_REPDATA_NUM-70 < replayNum)
        {
//          SD_call(SD_CTL_FADEOUTX);

            replayNum = 0;
            sp->step1++;
        }
#if 0
        else if (replayNum == GMK_REPDATA_NUM-90)
        {
            SD_call(s->classw[3].work0);
            if (gm_work.ball_cls1->work2 != 1)
                SD_call(s->classw[3].work1);
        }
#endif
        break;

    case 6:
        /*最後はここ*/
        if( MenuFadeOut(32, 0) )
        {
            SD_call(SD_CTL_XAKILL2);
            InitG2dRepPlate06(REP_CTRL_ACT, 0);     /* リプレイ用2D初期化 */
            replayNum = 0;
            sp->step0 = GMS_REPOP;
            sp->step1 = 0;
        }
        break;

    case 7:
        /*パス失敗時のカメラ*/
        sp->rview.vrx = gm_work.sub_cls->xposi;
        sp->rview.vry = gm_work.sub_cls->yposi - 400;

0xFA0400#

dRew06(); G2DstateR = OFF;}
        if (G2DstateF == OFF)               G2DstateF = ON;     //{ SetG2dFew06(); G2DstateF = ON; }
        break;

    case    REP_RSLOW:
    case    REP_RPLAY:
    case    REP_RPLAY2:
    case    REP_REV:
        if (G2DstateR == OFF)               G2DstateR = ON;     //{ SetG2dRew06(); G2DstateR = ON; }
        if (G2DstateF == ON)                G2DstateF = OFF;    //{ SetG2dFew06(); G2DstateF = OFF;}
        break;
    }

    /********************************************************
    **  ステップに応じたフレームカウンタの設定                      **
    ********************************************************/
    if ((curState+addVal)*lrFlag != REP_STOP)
    {
        limitRange(replayNum, 0, GmkRepCountS - 2);
    }

    /********************************************************
    **  リプレイタイムアウトフラグの判定                                     **
    ********************************************************/
    if ((repTimeChkFlag == OFF) && ((sp->joyw[0].joy_w != 0) ||
            (replayNum == GmkRepCountS - 3)))
    {
        repTimeChkFlag = ON;
    }

    /********************************************************
    **  何か押さ

0xFA5200#

2))
                    {
                    case 0:
                        /*ダメダメ*/
                        SD_call(FGM_Q01);
                        break;
                    case 1:
                        /*ダメダメ*/
                        SD_call(FGM_Q03);
                        break;
                    }
                }

                jumpStep = 7;
            }

            tmp->time0 = 0;
            sp->step1++;
        }
        break;

    case 5:
        if (++tmp->time0 >= 45)
        {
            sp->step1 = jumpStep;
            tmp->time0 = 0;
        }
        break;

    case 6:
        /* 完全制覇表示用 */
        if (SetG2dPerfect06() == 1)                                     /* 表示が終った */
        {
            sp->step1 = 8;
        }
        break;

    case 7:
        /* 結果表示 */
        if (SetG2dResult06(tmp->work0) == 1)        /* 表示が終った */
        {
            sp->step1++;
        }
        break;

    case 8:
        if ((++tmp->time0 >= 150) || (CheckTrg(0, P_RRIGHT)))
        {
            SD_call(SD_CTL_FADEOUTX);
            sp->step1++;
        }
        break;

    case 9:
        if (MenuFadeOut(32, 0))
        {
            g_ResSet( gm_status.player_no+1, GmkNewPoint, tmp->work0);

            s->classw[0].obj3D_w[PARTS_RHAND].be    =
            s->classw[0].obj3D_w[PARTS_LHAND].be    = ON;           /* 開いた手     */
            s->classw[0].obj3D_w[PARTS_LHAND2].be =
            s->classw[0].obj3D_w[PARTS_RHAND2].be = OFF;        /* 握った手     */

            s->classw1[0].pclip =
            s->classw[1].pclip = OFF;                                   /*井原を戻す*/
            GM_AllResetStart();

            s->classw1[22].pclip = s->classw1[24].pclip = OFF;  /*看板, 後ろ客席*/

            sp->stepw_s = GM_RANK;          /*(play)*/
            sp->step0 = 0;
            sp->step1 = 0;
        }
        break;
    }


    if (sp->step1 > 3)
    {
        character_SE_demo();

        sp->rview.vpx = REP_VIEW_DIST_FIN * rsin(cameraRotY) >> 12;
        sp->rview.vpz = REP_VIEW_DIST_FIN * rcos(cameraRotY)

0xFABA00#

рュん以外*/
            spd[0].u = age/10 * 0x10;
            age %= 10;
            spd[1].u = age * 0x10;
        }else{  /*金剛くんは年齢不祥*/
            spd[0].u = spd[1].u = 0xe0;
        }
            /*身長*/
        spd[2].u = height/100 * 0x10;
        height %= 100;
        spd[3].u = height/10 * 0x10;
        height %= 10;
        spd[4].u = height * 0x10;
            /*体重*/
        if ( weight/100 ){  /*100kg以上ある時*/
            spd[5].offset_y = 0x0059;
            spd[5].u = weight/100 * 0x10;
        }else{          /*100kgはないとき*/
            spd[5].offset_y = -256;
        }
        weight %= 100;
        spd[6].u = weight/10 * 0x10;
        weight %= 10;
        spd[7].u = weight * 0x10;
    }

    set2d( G_CLS_IT_FORM, SPD_IT_PARAM2, MODE16, 0,0, 11, 0, 10, 1 );   /*パラメータ単位*/
    set2d( G_CLS_IT_PLT, SPD_IT_PLATE, STP05P05|MODE16, 0,0, 12, 0, 10, 1 );    /*プレート表示*/


}

/***************************************************************************
    演出文字表示&アクション!
***************************************************************************/
/***************************************************************************
    パーフェクト達成
    初期表示と演出
        out:    ==0:    処理中 ==1:終了
***************************************************************************/
int SetG2dPerfect06()
{
    sp_w;

    switch ( TRANS_STEP ){
        case 0:     /*パターン初期表示*/
            set2d( G_CLS_EM_A, SPD_EM06_PERFECT, MODE16, 0,0, 12, 0, 10, 0 );
            em06_act[0].step = 0;
            em06_act[0].flag = 1;   /*収束時フラッシュ有り*/
            em06_act[0].cls = G_CLS_EM_A;
            em06_act[0].func = Em06_func00;
            TRANS_STEP++;
            break;
        case 1:

0xFB9600#

Random(4) );
                        GM_SD_call_name(entrybox[gm_status.player_no]);
                    }
                    GM_SD_call( FGM_H08+speak_no );
                }
                gm_status.jikkyou++;
            }
            break;
        case 2:
            if(cls->zposi>GM_END_DSTEP1){
                if( gm_status.area_blue[gmmotp->passAreaNum]<8 )
                    GM_SD_call( FGM_H13+GM_Random(4) );
                else
                    GM_SD_call( FGM_H17+GM_Random(4) );
                gm_status.jikkyou++;
            }
            break;
    }
}


/*ハードルの実況*/
void GM_SD_call_Hurdle(CLASS_W *cls)
{
    Uchar no=0;
    Uchar speak_no;

    if(c

0xFC0200#

チ
                                        記録表示にモーション追加
                                        リプレイ時の実況を追加
    1999/12/09  松尾  記録表示,BGM追加
    1999/12/09  松尾  実況など追加
    1999/11/27  松尾  作りはじめ!!
 *===========================================================================*/

/*------------------------------------------------------------------*/
/*                          include                                                                                         */
/*------------------------------------------------------------------*/
#include    "ps000.h"
#include    "gbl_data.h"                /* Global Data definition Header            */
#include    "taka.h"
#include    "camera.h"
#include    "game.h"        /*nakayama*/
#include    "g2d.h"         /*nakayama*/

#include    "sdcall.h"
#include    "sd_ouen2.h"
#include    "mr_cmn2.h"
#include    "mr_16.h"

#include    "gm06.h"
#include    "m_mem.h"

extern  GMreplay        *GmkRepDat;                         /*リプレイデータ*/
extern  GMrepsave       *GmkRepSav;                         /*リプレイセーブデータ*/
extern  short               GmkRepCount;
extern  short               GmkRepCountS;
extern  GM_WORK         gm_work;                    /*cls切り替え用*/
extern  GM_MOTION       *gmmotp;
static  short               indexNum[GMK_REPDATA_NUM];
extern  GM_STATUS       gm_status;
extern  Ushort          GmkNewPoint;

#ifdef TEST
extern  Uchar   a_test;
#endif

/*------------------------------------------------------------------*/
/*                          define                                                                                          */
/*------------------------------------------------------------------*/
#define REP_VIEW_DIST       (5000)
#define REP_VIEW_VR_Y       (-500)
#define AUTO_REP_FRM_S  (5)
#define AUTO_REP_FRM_E  (65)

#define REP_STOP    0
#define REP_SLOW    1
#define REP_PLAY

0xFE0200#

mkRepDat[GmkRepCount].ballKeeper = ballKeeper;

    /*キャラ情報キープ*/
    GmkRepDat[GmkRepCount].xposi0 = s->classw[0].xposi;
    GmkRepDat[GmkRepCount].yposi0 = s->classw[0].yposi;
    GmkRepDat[GmkRepCount].zposi0 = s->classw[0].zposi;
    GmkRepDat[GmkRepCount].rotY0    = s->classw[0].rot.vy;
    GmkRepDat[GmkRepCount].anime_no0 = s->classw[0].anime_no;
    GmkRepDat[GmkRepCount].pose0         = s->classw[0].pose;
    GmkRepDat[GmkRepCount].hdir0         = s->classw[0].hdir;

    GmkRepDat[GmkRepCount].xposi1 = s->classw[1].xposi;
    GmkRepDat[GmkRepCount].yposi1 = s->classw[1].yposi;
    GmkRepDat[GmkRepCount].zposi1 = s->classw[1].zposi;
    GmkRepDat[GmkRepCount].rotY1    = s->classw[1].rot.vy;
    GmkRepDat[GmkRepCount].anime_no1 = s->classw[1].anime_no;
    GmkRepDat[GmkRepCount].pose1         = s->classw[1].pose;
    GmkRepDat[GmkRepCount].hdir1         = s->classw[1].hdir;

    GmkRepDat[GmkRepCount].xposib = s->classw1[0].xposi;
    GmkRepDat[GmkRepCount].yposib = s->classw1[0].yposi;
    GmkRepDat[GmkRepCount].zposib = s->classw1[0].zposi;

    GmkRepCount = (++GmkRepCount)%GMK_REPDATA_NUM;
    GmkRepCountS++;
    limitRange(GmkRepCountS, 0, GMK_REPDATA_NUM - 1);
}


/*終了処理*/
int GM_End(void)
{
    if(MenuFadeOut(32,1)){
        AllWork_Clear( 0 );                                 // <others.c> //
        Classw_Clear( 1 );
        return 1;               /* 処理が終了したら */
    }
    return 0;
}


/*キャラ座標の初期化*/
static void obj_pos_init(void)
{
//  gm_set_cls(0);

    /*プレイヤーキャラ初期位置*/
    gm_work.main_cls->xposi = -1200;
    gm_work.main_cls->yposi =           0;
    gm_work.main_cls->zposi = 

0xFEB400#

28,    32,  32},           /* 6:f_foot*/

    { 0, 185,       0, 23,   1, 255, 255, 255},         /* 7:csl*/

    { 0, 185,   -10 - GMK_CUR_AJST, 23, 23, 255,    48,  32},           /* 8:toss           まつお追加 */
    { 0, 185,    13 - GMK_CUR_AJST, 23, 11, 128,    32,  16},           /* 9:toss           まつお追加 */
    { 0, 185,    24 - GMK_CUR_AJST, 23,  7,  96,    16,  16},           /* a:toss           まつお追加 */

    { 0, 186,    80 - GMK_CUR_AJST, 21,  0, 255,    16,  16},           /* b:shoot pow*/
};


/*GsBOXFの設定*/
static void gm_set_GsBOXF(GsBOXF *gm, GsBOXF *gm_data)
{
    gm->attribute = gm_data->attribute;
    gm->x = gm_data->x;
    gm->y = gm_data->y;
    gm->w = gm_data->w;
    gm->h = gm_data->h;
    gm->r = gm_data->r;
    gm->g = gm_data->g;
    gm->b = gm_data->b;
}


/**********************************/
/*高さゲージの設定                              */
/**********************************/
static void gm_init_hgauge(void)
{
    gm_set_GsBOXF(&gm_high.back,    &highgauge_tbl[0]);
    gm_set_GsBOXF(&gm_high.u_head, &highgauge_tbl[1]);
    gm_set_GsBOXF(&gm_high.f_head, &highgauge_tbl[2]);
    gm_set_GsBOXF(&gm_high.u_t

0xFF4A00#

{
    short len = gm_get_xzlen(cls, cls1, 0);         /*キャラとボールの距離*/

    if(gmmotp->move == OFF ){
        gmmotp->turn_flg = OFF;
        return 0;
    }

    if( gm_ball.bound == ON){
        gmmotp->turn_flg = OFF;
        gm_ball.link = OFF;
        return 1;
    }

    cls->xposi = (cls->xposi+4 < x)? cls->xposi+4:
                             (cls->xposi-4 > x)? cls->xposi-4: x;

    cls->zposi = (cls->zposi+4 < z)? cls->zposi+4:
                             (cls->zposi-4 > z)? cls->zposi-4: z;

    len = (len+2 <100)? len+2:
                (len-2 >100)? len-2: 100;

    cls1->xposi = (len * rsin(cls->rot.vy - 2048)>>12) + cls->xposi;
    cls1->zposi = (len * rcos(cls->rot.vy - 2048)>>12) + cls->zposi;

//  move_partner(0);            /*パートナーの移動*/

    if(cls->xposi == x && cls->zposi == z){
        gmmotp->turn_flg = OFF;
        gm_ball.link = OFF;
        return 1;
    }
    else{
        gm_ball.link = ON;
        gmmotp->turn_flg = ON;
        return 0;
    }
}


/****************************/
/*クランクの処理                       */
/****************************/
/*返り値 0:処理中 1:処理終了*/
/****************************/
int GM_Crank(void)
{
    sp_w;

    switch(sp->step1){
        case 0:         /*一回目のボール受け*/
            GMComkeyInput(gm_work.main_cls, 0);                             /*COMの動き*/
            if(check_ball_move(gm_work.main_cls, gm_work.ball_cls1)){
                gm_jikkyou_clr();
                set_course_ot(0);
                gm_ball.link = OFF;
//              sp->step1++;
                sp->step1=2;
            }
            break;

        case 1:         /*ターンする(進行方向)*/
            check_ball_move(gm_work.main_cls, gm_work.ball_cls1);                   /*ボールの移動と拾い判定*/
            if( gm_turn(gm_work.main_cls, gm_work.

0x1003C00#

ールの影初期化*/
/******************/
static  void init_ball_kage(void)
{
    SetPolyFT4(&bkp->ft4);
    setRGB0(&bkp->ft4, 0x80, 0x80, 0x80);
    SetSemiTrans(&bkp->ft4,1);          /* (0:半透明オフ 1:半透明オン) */
    SetShadeTex(&bkp->ft4,0);               /* (0:輝度変化オン 1:輝度変化オフ) */

    bkp->ft4.tpage = GetTPage(0,2,512,256);
    bkp->ft4.clut = GetClut(0x140, 0x1f2);          /*0x94 x320,y498*/
    setUV4(&bkp->ft4,0,0,64,0,0,64,64,64);
    bkp->disp_flg = ON;
}

#if 0
/******************/
/*ボールの影表示   */
/******************/
static  void dispset_ball_kage(void)
{
    bkp->disp_flg = ON;
}

/******************/
/*ボールの影非表示*/
/******************/
static  void clearset_ball_kage(void)
{
    bkp->disp_flg = OFF;
}
#endif

/******************/
/*ボールの影描画   */
/******************/
void disp_ball_kage(CLASS1_W *cls1)
{
    sp_w;
    register int i;
    long p;
    long flag;
    short buff;

    if(cls1->pclip == ON)           return;         /*ボールが消えているときは出さない*/
    if(bkp->disp_flg == OFF)    return;

    PushMatrix(

0x1007600#

   }
        else{
            setVector(&pos[0],  0,   0, -500);
            setVector(&pos[1], 50,  15,  -50);
            setVector(&pos[2],  0, -15,  -50);
        }

        otz = RotTransPers3(&pos[0], &pos[1], &pos[2], &sxy[0], &sxy[1], &sxy[2], &p, &flag);
        otz >>= (14 - OT_LENGTH);

        shoot_kaku[i].x0 = (short)(sxy[0]&0x0000ffff);
        shoot_kaku[i].y0 = (short)((sxy[0]>>16)&0x0000ffff);
        shoot_kaku[i].x1 = (short)(sxy[1]&0x0000ffff);
        shoot_kaku[i].y1 = (short)((sxy[1]>>16)&0x0000ffff);
        shoot_kaku[i].x2 = (short)(sxy[2]&0x0000ffff)

0x100AE00#

;
    short tmp;

#if 0
    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);
#endif

    tmp = (short)sp->rview.vrx;
    camera_idou(came0->vrx, came1->vrx, &tmp, frame);

0x100DE00#

            }
            cls->zposi = (cls->zposi+8 <-9800)? cls->zposi+8: -9800;
            break;
        case 8:                 /*少し待って*/
            /*足音*/
            if ((cls->pose == 0) || (cls->pose == 19))
                GM_SD_call(SD_16_FOOT2R);
            else if (cls->pose == 13)
                GM_SD_call(SD_16_FOOT2L);

            if( End_Pose_Change(cls, GM_STAND) ){
                cls->zposi = -9800;                         /*念のため*/
                sp->step1++;
            }
            cls->zposi = (cls->zposi+6 <-9800)? cls->zposi+6: -9800;
            break;
        case 9:                 /*少し待って*/
            /*デモモーションを入れるのか?*/

0x1010C00#

ntrybox2[gm_status.player_no]>>4) == 1 ){      /*comなら見ない*/
                        makecomdata();
                        if(gm_status.player_no+1==entry_num){
                            sp->stepw_s = GM_RANK;
                            sp->step0 = 0;
                            sp->step1 = 0;
                        }
                    }
                    else{
                        sp->step1++;
                        sp->step2 = 0;
                    }
                }
            }
            else{
                sp->stepw_s = GM_NO1;                   /*表彰式へ*/
                sp->step0 = 0;
                sp->step1 = 0;
            }
            break;
        case 1:
            if( GM_change_model(entrybox[gm_status.player_no]) )
            {
                sp->stepw_s = GM_PLAY;
                sp->step0 = GMS_CHARA;
                sp->step1 = 0;

                copyCharData();
            }
            break;
    }
    return 0;
}


/*エントリーボックスの内容をCLASS_Wに入れる*/
static void set_entrybox_inf(void)
{
    sys_w;
    s->classw[0].entry_no = gm_status.player_no;
    s->classw[0].cpu = (entrybox2[gm_status.player_no]&0xf0)>>4;
    s->classw[0].player_no = entrybox2[gm_status.player_no]&0x0f;
}


/********************************/
/*モデルの読込み                               */
/********************************/
/*sp->step2を使っているの

0x1019A00#

370,  -1622,  -1650,    971,       /* 競技前説かいだん */
/* 26 */       386,  -1650,   1370,    386,  -1650,  -7654,     /* 競技前説かいだん */
/* 27 */     -4166,   -409,      0,    360,  -1080,      0,     /* リプレイ中央 */
/* 28 */      -137,  -1305,   2227,    420,  -1880,      0,     /* リプレイ1P勝ち */
/* 29 */       857,  -1305,  -2227,    300,  -1880,      0,     /* リプレイ2P勝ち */
/* 30 */       842,  -1253,   2133,     80,  -1940,      0,     /* リプレイ1P勝ち */
/* 31 */      -122,  -1253,  -2133,    640,  -1940,      0,     /* リプレイ2P勝ち */
/* 32 */     -1840,   -640,      0,    360,   -640,      0,     /* リプレイ前落下 */
/* 33 */      -934,  -1299,  -3745,    360,   -640,  -2000,     /* リプレイ2P後 */
/* 34 */      -934,  -1299,   3745,    360,   -640,   2000,     /* リプレイ1P後 */
/* 35 */      4038,   -428,   4038,   3000,   -500,   3000,     /* 勝ち1P */
/* 36 */      4038,   -428,  -4038,   3000,   -500,  -3000,     /* 勝ち2P */
/* 37 */      4887,   -151,   1113,   4000,   -400,   2000,     /* 選手紹介1P */
/* 38 */      4887,   -151,  -1113,   4000,   -400,  -2000,     /* 選手紹介2P */
/* 39 */      5253,   -151,   2060,   4000,   -400,   2000,     /* 選手紹介1P */
/* 40 */      5253,   -151,  -2060,   4000,   -400,  -2000,     /* 選手紹介2P */
/* 41 */      3054,   -462,   2857,   4000,   -400,   2000,     /* 選手紹介1P */
/* 42 */      3054,   -462,  -2857,   4000,   -400,  -2000,     /* 選手紹介2P */
/* 43 */      5151,   -275,   2544,   4000,   -400,   2000,     /* 選手紹介1P */
/* 44 */      5151,   -275,  -2544,   4000,   -400,  -2000,     /*

0x101FC00#

) beholder.dpz = 32;

                    if( sp->joyw[1].joytrg & PADRdown )
                    {
                        beholder.view.vpx = 0;
                        beholder.view.vpy = 0;
                        beholder.view.vpz = 0;
                        beholder.view.vrx = 0;
                        beholder.view.vry = 0;
                        beholder.view.vrz = 0;

                        beholder.dpx = 0;
                        beholder.dpy = 0;
                        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;
                    beholder.view.vrz = beholder.view.vpz + beholder.dpz * rcos( beholder.dpy ) / 4096 * rcos( beholder.dpx ) / 4096;

                    if( sp->joyw[0].joytrg & PADstart )
                    {
                        *( BEH_BUF + beh_n * 6 + 0 ) = beh

0x1028600#

clude "child07.h"
#include "snow.h"

/*--------------------------------------------------------------------------*/
/*      DEFINE                                                              */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*      MACRO                                                               */
/*----------------------------------------------------------------------

0x102CA00#

            sp->chara[1] = entrybox[ddp_tour.tour[ddp_tour.dare[1]]];

            s->classw[0].entry_no = ddp_tour.tour[ddp_tour.dare[0]];
            s->classw[0].player_no = entrybox2[ddp_tour.tour[ddp_tour.dare[0]]] & 0x0f;
            s->classw[0].cpu = entrybox2[ddp_tour.tour[ddp_tour.dare[0]]] & 0xf0;
            s->classw[0].hdir = pl_data[sp->chara[0]][4] / 10;
            ddp_hdir[0] = s->classw[0].hdir;

            s->classw[1].entry_no = ddp_tour.tour[ddp_tour.dare[1]];
            s->classw[1].player_no = entrybox2[ddp_tour.tour[ddp_tour.dare[1]]] & 0x0f;
            s->classw[1].cpu = entrybox2[ddp_tour.tour[ddp_tour.dare[1]]] & 0xf0;
            s->classw[1].hdir = pl_data[sp->chara[1]][4] / 10;
            ddp_hdir[1] = s->classw[1].hdir;

            dead_man_init();

            /* COM見ない & 1PCPU & 2PCPU? */
            if( ( OP_CP != 0 ) && ( ( s->classw[0].cpu & 0xf0 ) != 0 ) && ( ( s->classw[1].cpu & 0xf0 ) != 0 ) )
            {
                /* 最初の試合? */
                if( ddp_tour.round == 1 )
                {
                    sp->gstepw++;
                }else
                {
                    ddp_replay.winner = ddp_auto_vs();
                    ddp_tour_manager();
                    ddp_next( ( ( ddp_tour.tournament == 3 ) ? ( DDP_X ) : ( DDP_II ) ), 0 );
                }
            }else
            {
                sp->gstepw++;
            }
            break;
        case 1:
            /* キャラ読み込み */
            if( CharTrans( -1, 0 ) != 0 )
            {
                disp3d( &s->classw[0], 0, 0, 0, 0, 0 );
                s->classw[0].kind = 0;
                sp->gstepw++;
            }
            break;
        case 2:
            /* キャラ読み込み */
            if( CharTrans( -1, 1 ) != 0 )
            {
                disp3d( &s->classw[1], 1, 0, 0, 0, 0 );
                s->classw[1].kind = 0;
                ddp_next( ( sp->mode_

0x1033C00#

p = ( ddp_env.tmp + 1 + dice( 3 ) ) % 4;
                    ddp_pose_set( ddp_replay.winner, DDP_A_WINA + ddp_env.tmp, 0 );
                }else
                {
                    ddp_pose_set( ddp_replay.winner, DDP_A_STAND, 0 );
                    /* この立ちループだけ強制的にグー */
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_RHAND2].be = 1;
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_RHAND].be = 0;
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_LHAND2].be = 1;
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_LHAND].be = 0;
                }
            }

            Pose_Change( &s->classw[0] );
            Pose_Change( &s->classw[1] );

            class_gs3d( &s->classw[0] );
            class_gs3d( &s->classw[1] );

            if( ddp_sound != 0 )
            {
                if( s->classw[ddp_replay.player].anime_no == DDP_A_WIND )
                {
                    if( s->classw[ddp_replay.player].pose == 27 )
                    {
                        /* 足音 */
                        SD_call( SD_17_FOOT1R + ddp_replay.player * 2 );
                    }
                    if( s->classw[ddp_replay.player].pose == 29 )
                    {
                        /* 足音 */
                        SD_call( SD_17_FOOT1L + ddp_replay.player * 2 );
                    }

0x103D400#

           Pose_Change( &s->classw[0] );
            class_gs3d( &s->classw[0] );
            class_gs3d( &s->classw[1] );
            himo.draw( ddp_env.flg );

            if( MenuFadeOut( 64, 0 ) != 0 )
            {
                set_beholder( 20 );
                set_beholder_auto( 21, 82 );
                /* 青の柱は */
                SD_call( FD_C04 + dice( 2 ) );
                /*選手名 */
                ddp_sd_call2( 1, ( ( dice( 2 ) == 0 ) ? ( FU_FU_NA_N ) : ( FU_FU_NA_H ) ) );

                s->classw[0].xposi = ddp_final_svc.vx;
                s->classw[0].yposi = ddp_final_svc.vy;
                s->classw[0].zposi = ddp_final_svc.vz;
                s->classw[0].rot.vy = 2048;
                ddp_pose_set( 0, DDP_A_UPSTAIR, 0 );

                /* 選手紹介表示 */
                SetG2dIntro07( &s->classw[1], ON );

                sp->gstepw++;
            }
            break;
        case 7:
            class_gs3d( &s->classw[0] );
            class_gs3d( &s->classw[1] );
            himo.draw( ddp_env.flg );

            if( MenuFadeIn( 64 ) != 0 )
            {
                sp->gstepw++;
            }
            break;
        case 8:
            if( ++ddp_env.cnt > 10 )
            {
                ddp_stairs( 0 );
            }else
            {
                class_gs3d( &s->classw[0] );
            }
            ddp_stairs( 

0x1041400#

se == 28 )
                        {
                            /* 足音 */
                            SD_call( SD_17_AFOOT1R + id );
                        }else
                        {
                            if( s->classw[id].pose == 40 )
                            {
                                /* 足音 */
                                SD_call( SD_17_FOOT1L + id * 3 );
                            }else
                            {
                                if( s->classw[id].pose == 40 )
                                {
                                    /* 足音 */
                                    SD_call( SD_17_FOOT1R + id );
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

#if DDP_HOSI
#define DDP_HOSI_MAX (100)
#define DDP_HOSI_AKARI (0x80)

TILE_1 ddp_hosi_tile1[2][DDP_HOSI_MAX];
SVECTOR ddp_hosi_vec[DDP_HOSI_MAX];
int ddp_pica_cnt = 0;

void HosiInit( void )
{
    int i;

    /* 初期化 */
    for( i = 0; i < DDP_HOSI_MAX; i++ )
    {
        /* タイル初期化 */
        SetTile1( &ddp_hosi_tile1[0][i] );
        SetTile1( &ddp_hosi_tile1[1][i] );
        ddp_hosi_tile1[0][i].r0 = ddp_hosi_tile1[1][i].r0 = DDP_HOSI_AKARI;
        ddp_hosi_tile1[0][i].g0 = ddp_hosi_tile1[1][i].g0 = DDP_HOSI_AKARI;
        ddp_hosi_tile1[0][i].b0 = ddp_hosi_tile1[1][i].b0 = DDP_HOSI_AKARI;
        ddp_hosi_vec[i].vx = dice

0x104FA00#

                           dead_man[i].anim = DDP_A_FALLDOWN0 + dice( 2 );
                        }
                    }else
                    {
                        if( dead_man[1 ^ i].anim == DDP_A_FALLDOWN3 || dead_man[1 ^ i].anim == DDP_A_FALLDOWN4 )
                        {
                            dead_man[i].anim = ( dead_man[1 ^ i].anim == DDP_A_FALLDOWN3 ) ? ( DDP_A_FALLDOWN4 ) : ( DDP_A_FALLDOWN3 );
                        }else
                        {
                            dead_man[i].anim = DDP_A_FALLDOWN3 + dice( 2 );
                        }
                    }
                    break;
            }

            if( dead_man[i].g > DDP_S_ZONE * 4 + DDP_D_ZONE * 4 )
            {
                dead_man[i].g = DDP_S_ZONE * 4 + DDP_D_ZONE * 4;
            }
            if( dead_man[i].g < -DDP_S_ZONE * 4 - DDP_D_ZONE * 4 )
            {
                dead_man[i].g = -DDP_S_ZONE * 4 - DDP_D_ZONE * 4;
            }
        }else
        {
            if( dead_man[i].status == DDP_D )
            {
                sd = DDP_ANA_FUKKI;
                dead_man[i].slip = 0;
                dead_man[i].status = DDP_N;
            }
        }
    }

    /* 最後にモーション処理 */
    for( i = 0; i < 2; i++ )
    {
        if( s->classw[i].anime_no == DDP_A_FAKE )
        {
            if( ( long )s->classw[i].anime[s->classw[i].pose + 1].pd == STOP )
            {
                dead_man[i].anim = DDP_A_FAKELOOP;
            }
        }

        if( s->classw[i].anime_no != dead_man[i].anim )
        {
            ddp_pose_set( i, dead_man[i].anim, 0 );
        }

        if( dead_man[i].anim == DDP_A_FORESLIP || dead_man[i].anim == DDP_A_BACKSLIP )
        {
            if( ddp_eff_step[i] == 0 ) ddp_eff_step[i]++;
        }
    }

    if( ddp_replay.game < 3 * 30 ) ddp_replay.game++;

    if( dead_man[0].slip != 2 && dead_man[1].slip != 2 )
    {
        dead_man[0].mmm++;
        dead_man[0].mmm %= 8;
        dead_man[0].motion[dead_man[0].mmm] = s->classw

0x1053C00#

;
    for( i = 0; i < entry_num; i++ )
    {
        if( ( entrybox2[i] & 0xf0 ) == 0 ) tmp++;
    }
    if( tmp > 1 )
    {
        /* 対戦 */
        ddp_tour.player = 1;
    }else
    {
        /* ひとりよう */
        ddp_tour.player = 0;
    }

    /* 成績初期化 */
    for( i = 0; i < entry_num; i++ )
    {
        ddp_tour.dtbl[i] = 0;
        ddp_tour.dtbl2[i] = 0;
        ddp_tour.tour[i] = i;
    }

    ddp_tour.tournament = 0;
    ddp_tour.round = 0;

    /* 組み合わせ抽選 */
    for( i = 0; i < def_ddp_rand[ddp_tour.mode]; i++ )
    {
        r0 = dice( def_ddp_rand[ddp_tour.mode] );
        r1 = dice( def_ddp_rand[ddp_tour.mode] );

        tour = ddp_tour.tour[r0];
        ddp_tour.tour[r0] = ddp_tour.tour[r1];
        ddp_tour.tour[r1] = tour;
    }

    for( i = 0; i < 8; i++ )
    {
        sp->ESW[i] = ddp_tour.tour[i];
    }
}

unsigned char def_ddp_round[] = {
    8, 7, 4,
    4, 3, 255,
    1, 255, 255,
};

/* 対戦組み合わせ */
void ddp_tour_dare( void )
{
    sp_w;

    int i;

    /* とりあえず初田に喋らせる */
    ddp_announcer.dare = 1;

    /* ランキング? */
    if( sp->mode_fg == 0 )
    {
        /* 

0x105AC00#

ネ */
                                SD_call( HD_E05 + dice( 2 ) );
                            }
                        }else
                        {
                            if( ddp_replay.critical == 4 )
                            {
                                if( dice( 2 ) == 0 )
                                {
                                    /* 最後 */
                                    SD_call( HD_E05 + dice( 2 ) );
                                    /* 選手名 */
                                    ddp_sd_call2( ddp_replay.winner, ( ( dice( 2 ) == 0 ) ? ( HA_FU_NA_H ) : ( HA_FA_NA_H ) ) );
                                }else
                                {
                                    /* 選手名 */
                                    ddp_sd_call2( ddp_replay.winner, ( ( dice( 2 ) == 0 ) ? ( HA_FU_NA_H ) : ( HA_FA_NA_H ) ) );
                                    /* ロープを */
                                    SD_call( HD_E05 + dice( 2 ) );
                                }
                            }else
                            {
                                /* 最後 */
                                SD_call( HD_E05 + dice( 2 ) );
                                /* 選手名 */
                                ddp_sd_call2( ddp_replay.winner, ( ( dice( 2 ) == 0 ) ? ( HA_FU_NA_H ) : ( HA_FA_NA_H ) ) );
                            }
                        }
                    }else
                    {
                        sd_tmp = dice( 5 );
                        if( sd_tmp > 1 )
                        {
                            /* 選手名 */
                            ddp_sd_call2( 1 ^ ddp_replay.winner, ( ( dice( 2 ) == 0 ) ? ( HA_FU_NA_N ) : ( HA_FA_NA_L ) ) );
                        

0x1060A00#

---------------------------------------------------------------------*/
void ddp_man( unsigned char id );
void ddp_cpu( unsigned char id );

/*--------------------------------------------------------------------------*/
/*      PUBLIC VALUE                                                        */
/*--------------------------------------------------------------------------*/
void ( *ddp_brain[] )( unsigned char ) = {
    ddp_man,
    ddp_cpu,
};

/*--------------------------------------------------------------------------*/
/*      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 = ( ( sp->joyw[dead_man[id].ctrl].joy_w & ( PADLup | PADLdown | PADLleft | PADLright ) ) >> 8 ) | ( ( sp->joyw[dead_man[id].ctrl].joy_w & ( PADRup | PADRdown | PADRleft | PADRright ) ) >> 4 );
    dead_

0x1079C00#

no - DDP_A_FALLDOWN0] ) himo.clutch[id] = 1;
            else himo.clutch[id] = 0;
            break;
        case DDP_A_DANGEL0:
        case DDP_A_DANGEL1:
        case DDP_A_DANGEL2:
        case DDP_A_DANGEL3:
        case DDP_A_DANGEL4:
            himo.clutch[id] = 1;
            break;
        default:
            himo.clutch[id] = 0;
            break;
    }

    /* 金具外れたら20cmくらい増やす */
    if( c > himo.clutch[id] )
    {
        himo.length[id] -= 80;
    }
    if( c < himo.clutch[id] )
    {
        himo.length[id] += 80;
    }
}


/* 腰紐 */
void himoI( unsigned char id )
{
    sp_w;

    long otz[2];

    otz[0] = ( himo.j[id][HIMO_JOINT_RHIP].z + himo.j[id][HIMO_JOINT_CHIP].z ) / 2;
    otz[1] = ( himo.j[id][HIMO_JOINT_CHIP].z + himo.j[id][HIMO_JOINT_LHIP].z ) / 2;

    himo.line.x0 = himo.j[id][HIMO_JOINT_RHIP].xy.s.x;
    himo.line.y0 = himo.j[id][HIMO_JOINT_RHIP].xy.s.y;
    himo.line.x1 = himo.j[id][HIMO_JOINT_CHIP].xy.s.x;
    himo.line.y1 = himo.j[id][HIMO_JOINT_CHIP].xy.s.y;
    ddpSortLine( &himo.line, &SepOT[0].ot[sp->active_side], otz[0] );

    himo.line.x0 = himo.j[id][HIMO_JOINT_CHIP

0x107BA00#

] ) ) / 4096;
        }
    }

    for( i = 1; i < HIMO_MAX; i++ )
    {
        himo.h[i].z = RotTransPers( &himo.h[i].vec, &himo.h[i].xy.l, &p, &flag );
    }

    for( i = 0; i < HIMO_MAX; i++ )
    {
        himo.line.x0 = himo.h[i + 0].xy.s.x;
        himo.line.y0 = himo.h[i + 0].xy.s.y;
        himo.line.x1 = himo.h[i + 1].xy.s.x;
        himo.line.y1 = himo.h[i + 1].xy.s.y;

        otz = ( himo.h[i + 0].z + himo.h[i + 1].z ) / 2;
        ddpSortLine( &himo.line, &SepOT[0].ot[sp->active_side], otz );
    }
}

/*
    2 点間をを補完するルーチン
    h で渡される配列の先頭・終端、つまり始点・終点は既に決定されていることが前提
    2 点間の分割数 n は 2 の x 乗でなくてはならない

    2 点間の中央を次々と計算するので、見た目の誤差が少ない( 必ず始点・終点に到達する、各点の誤差は分散される )
    2 点間の距離が分割数より短くなると、誤差が大きくなるので意味がない

*/

#define a2b(A,B)    \
    (((A)-(B))/2+(B))

#if 0
/*
    本物の補完関数 by tkm
*/
void hokan( int *h, int n )
{
    int i, j;
    int ni, nl;
    double nd;

    nd = ( log( n ) / log( 2 ) );
    nl = ( int )nd;

    for( i = 1; i < nl + 1; i++ )
    {
        ni = n >> ( i - 1 );
        for( j = 0; j < ( 1 << ( i - 1 ) ); j++ )
        {
            *( h + ( n >> i ) + j * ni ) = a2b( *( h + j * ni ), *( h + ( j + 1 ) * ni ) );
        }
    }
}
#endif

void himo_hokan( void )
{
    int i, j, ni;

    /* PS の対数計算は遅いので計算済みの値を使う */
    for( i = 1; i < himo.l + 1; i++ )
    {
        ni = HIMO_MAX >> ( i - 1 );
        for( j = 0; j < ( 1 << ( i - 1 ) ); j++ )
        {
            himo.h[( HIMO_MAX >> i ) + j * ni].vec.vx = a2b( himo.h[j * ni].vec.vx

0x10AE200#

************/
void KillG2d07(void)
{
    int i;
    sp_w;
    sys_w;

    TRANS_STEP_S=0;
    TRANS_STEP=0;
    for( i=1; i<=0x0d; i++ ){
        s->classw0[i].kind = 0;
    }
}

/* 動くやつを空回し */
int SetG2dNull07( void )
{
    sp_w;

    if( TRANS_STEP == 0 ) return( 1 );

    if( em07_act[0].func )
    {
        if( em07_act[0].func( ( void * )&em07_act[0] ) )
        {
            TRANS_STEP = 0;
            return( 1 );
        }
    }
    return( 0 );
}

/*************************************************************************
    デッドマンズドロップ用演出文字のパターン
*************************************************************************/
static SPD_W    pull_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x38,0x98,0xffaa,0xffd8,0x4d},
    {DAT,0x28,0x18,0x00,0x80,0xffce,0xffd8,0x4d},
    {DAT,0x20,0x18,0x60,0x98,0xfff4,0xffd8,0x4d},
    {DAT,0x20,0x18,0x60,0x98,0x0014,0xffd8,0x4d},
    {DAT,0x10,0x18,0x80,0xb8,0x0034,0xffd8,0x4d},
    {END,0x10,0x18,0x80,0xb8,0x0044,0xffd8,0x4d},
    };
static SPD_W    batt_1_spd[]={
    /*  ccode,xsize,ysize,u,v,offset_x,offset_y palette */
    {DAT,0x28,0x18,0x28,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 pale

0x10B3A00#

AllWork_Clear( 0 );                                    // <others.c>

            sp->clear_fg = 0;

            sp->gstepw++;
            break;
        case 6:                                                         /* オブジェクトの登録 */
            /*nakayama*/
            /*アナウンサーのテクスチャをVRAMに転送する*/
            tim_trans( (TIM_W *)A_TIM_TABLE[0],0 );     /*テクスチャ*/
            tim_trans( (TIM_W *)A_TIM_TABLE[1],0 );     /*カラー*/
            setAnaModel();

            /* 解像度を変更するとライトが初期化されるので再設定 */
            ddp_light_init();

            /* nakayama */
            View_Init();                                                // camera.c

            sp->view_pt = &beholder.view;

            /* 乱数初期化 */
            srand( ( unsigned int )VSync( -1 ) );

            /* 一発目初期化 */
            ddp_init_1st();

            /* 音は全滅させとく */
            SD_call( SD_CTL_XAKILL2 );
            SD_call( SD_CTL_BGMOFF );
            SD_call( SD_CTL_ALLOFF );

#if DDP_DEBUG
            {
                RECT t, p;
                /* デバッグフォント */
                uso_fnt_init( USO_BUF2, 24 - 256, 16 - 120 );
                uso_pcload( "..\\DDP\\EF_073.TIM", USO_BUF2, 0 );
                uso_set_tim( ( unsigned long * )USO_BUF2, &t, &p );
#if DDP_HOSI
                uso_pcload( "..\\DDP\\EARTH256.TIM", USO_BUF2, 0 );
                uso_set_tim( ( unsigned long * )USO_BUF2, &t, &p );
                uso_pcload( "..\\DDP\\STAR16.TIM", USO_BUF2, 0 );
                uso_set_tim( ( unsigned long * )USO_BUF2, &t, &p );
#endif
            }
#endif

            switch( sp->mode_fg )
            {
                case 0:                     /* ランキング */
                    ddp_next( DDP_I, 0 );
                    break;
                case 1:                     /* プラクティス */
                    ddp_next( DDP_II, 0 );
                    break;
                case 2:                     /* エキストラ */
                case 3:                     /* リプレイ */
                    ddp_next( DDP_XV, 0

0x10BC200#

( s->classw[ddp_replay.player].pose == 27 )
                    {
                        /* 足音 */
                        SD_call( SD_17_FOOT1R + ddp_replay.player * 2 );
                    }
                    if( s->classw[ddp_replay.player].pose == 29 )
                    {
                        /* 足音 */
                        SD_call( SD_17_FOOT1L + ddp_replay.player * 2 );
                    }
                }else
                {
                    if( s->classw[ddp_replay.player].anime_no == DDP_A_DANGEL0 )
                    {
                        if( s->classw[ddp_replay.player].pose == 8 )
                        {
                            /* 発泡スチロール音 */
                            SD_call( SD_17_MOVE1 + dice( 2 ) );
                        }
                    }
                }
            }

            himo.draw( 0 );
            put_himo( 0 );

            ddp_effect( 0 );

            if( SetG2dJudge07( &s->classw[ddp_replay.player], ( ddp_replay.player == ddp_replay.winner ) ? ( 0 ) : ( 1 ) ) != 0 )
            {
                sp->gstepw++;
            }
            break;
        case 8:                             /* 決着 */
            /* ポーズ許可 */
            ddp_pause = 1;

            beholder_3( ddp_replay.player );

            if( ( long )s->classw[ddp_replay.winner].anime[s->classw[ddp_replay.winner].pose + 1].pd == STOP )
            {
                if( s->classw[ddp_replay.winner].anime_no == DDP_A_STAND )
                {
                    ddp_env.tmp = ( ddp_env.tmp + 1 + dice( 3 ) ) % 4;
                    ddp_pose_set( ddp_replay.winner, DDP_A_WINA + ddp_env.tmp, 0 );
                }else
                {
                    ddp_pose_set( ddp_replay.winner, DDP_A_STAND, 0 );
                    /* この立ちループだけ強制的にグー */
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_RHAND2].be = 1;
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_RHAND].be = 0;
                    s->classw[ddp_replay.winner].obj3D_w[PARTS_LHAND2].be = 1;
                    s->classw[ddp_replay.winner].obj3D_w

0x10C1E00#

( ddp_env.cnt );

            ddp_effect( 0 );
            ddp_replay.ebuf[ddp_env.cnt] = ddp_snow_store();

            /* リプレープレート制御 */
            G2dReplayCtrl07();

            /* スキップ? */
            if( tmp == 1 )
            {
                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 =

0x10CAC00#

&SepOT[0].ot[sp->active_side], 10 );

    return( ret );
}
#endif

ern void ddp_replay_rec( void );
extern void ddp_replay_play( unsigned char cnt );
extern int ddp_falldown( void );
extern void ddp_falldown2( void );
extern unsigned long ddp_snow_store( void );
extern void ddp_snow_load( unsigned long snow );
extern void ddp_effect( unsigned char mode );
extern void ddp_set_bg( unsigned char mode );
extern void ddp_tour_dare( void );
extern short a2zero( short *a, short i, short n );
extern uns

0x10D1200#

[ル移動 */
                               };

/*----- リプレイロードイベント -----*/
static void  LReload_Restore(void); /* 02:復元 */
static void  LReload_Main(void);    /* 03:リプレイ */
static mfunc LReload_System[] = {   /* リプレイロードのイベント管理 */
                                    LEvent_Dload,       /* 00:データの読み込み */
                                    LEvent_Dinit,       /* 01:データの初期化 */
                                    LReload_Restore,    /* 02:復元 */
                                    LReload_Main,       /* 03:リプレイ */
                                };

/*----- 選手紹介イベント -----*/
static void  LIntro_Normal(void);   /* 00:通常 */
static void  LIntro_Ramos(void);    /* 01:ラモス瑠偉 */
static void  LIntro_Gon(void);      /* 02:中山雅史 */
static void  LIntro_Kongou(void);   /* 03:金剛くん */
static mfunc LIntro_System[] = {    /* 選手紹介イベントの管理 */
                                    LIntro_Normal,  /* 00:通常 */
                                    LIntro_Ramos,   /* 01:ラモス瑠偉 */
                                    LIntro_Gon,     /* 02:中山雅史 */
                                    LIntro_Kongou,  /* 03:金剛くん */
                               };

/*----- 競技終了イベント -----*/
static Uchar LGEnd_Produce(Uchar);  /* 競技終了イベントの演出 */
static void  LGEnd_Perfect(void);   /* 00:パーフェクト達成 */
static void  LGEnd_Imperfect(void); /* 01:パーフェクト未達成 */
static mfunc LGEnd_System[] = {     /* 競技終了イベントの管理 */
                                    LGEnd_Perfect,      /* 00:パーフェクト達成 */
                                    LGEnd_Imperfect,    /* 01:パーフェクト未達成 */
                              };

/*----- セット -----*/
static void LSet_Board(void);                   /* ボードのセット */
static void LSet_Gage1(void);                   /* ゲージ1(左右の狙い)のセット */
static void LSet_Gage3(void);                   /* ゲージ3(パワ

0x10D7600#

= GAME_DECLARE;
#else
    LMotion_Set(MKD_STAND,MFLG_INIT);
    ls->game = GAME_DIRECTION;
#endif

    /* アナウンサー交替(初田→古舘)(残りパネル3枚になったら) */
    if(ls->ana == ANA_HATU && ls->declare->old_get >= 0 && ls->board->rest == 3)
    {
        ls->ana = ANA_FURU;
        ls->event = EVENT_CHANGE;
    }
}

/*------------------------------------------------
 イベント06:ゲームのメイン
 引数:なし
 戻値:なし
------------------------------------------------*/
static void LEvent_GMain(void)
{
    if(ls->mo

0x10E5A00#

w
    sll $3,$17,1
    addu    $3,$3,$17
    sll $3,$3,3
    addu    $3,$3,$2
    lbu $2,20($3)
    #nop
    beq $2,$0,$L50
    lbu $2,21($3)
    #nop
    .set    noreorder
    .set    nomacro
    beq $2,$0,$L50
    andi    $5,$18,0x00ff
    .set    macro
    .set    reorder

    .set    noreorder
    .set    nomacro
    beq $5,$0,$L50
    move    $4,$17
    .set    macro
    .set    reorder


    .loc    1 411
LM137:
    #.set   volatile
    sh  $0,16($sp)
    #.set   novolatile

    .loc    1 412
LM138:
    sh  $0,18($3)
    sh  $0,16($3)

    .loc    1 413
LM139:
    sb  $0,21($3)
    sb  $0,20($3)

    .loc    1 414
LM140:
    sb  $0,23($3)

    .loc    1 415
LM141:
    .set    noreorder
    .set    nomacro
    jal ActuClr
    sb  $0,22($3)
    .set    macro
    .set    reorder

$L50:

    .loc    1 417
LM142:
$Le9:
    .bend   $Le9    45
    #.set   volatile
    lhu $2,16($sp)
    #.set   novolatile

    .loc    1 418
LM143:
    lw  $31,36($sp)
    lw  $18,32($sp)
    lw  $17,28($sp)
    lw  $16,24($sp)

    .loc    1 417
LM144:
    sll $2,$2,16
    sra $2,$2,16

    .loc    1 418
LM145:
    .set    noreorder
    .set    nomacro
    j   $31
    addu    $sp,$sp,40
    .set    macro
    .set    reorder


    .loc    1 418
LM146:
    .end    Vibration
    .align  2
    .def    ShockON;    .val    ShockON;    .scl    2;  .type   0x21;   .endef
    .globl  ShockON

    .loc    1 424
LM147:

    .loc    1 424
LM148:
    .ent    ShockON
ShockON:
    .frame  $sp,48,$31      # vars= 8, regs= 6/0, args= 16, extra= 0
    .mask   0x801f0000,-4
    .fmask  0x00000000,0
$Lb10:
    .begin  $Lb10   1
    .def    result; .val    -32;    .scl    1;  .type   0x3;    .endef
    .def    i;  .val    17; .scl    4;  .type   0x4;    .endef
    subu    $sp,$sp,48
    sw  $17,28($sp)

    .loc    1 429
LM149:
    move    $17,$0
    lui $2,%hi(sys0) # high

0x1113ED8#

Furu_After2
 800A6EE8  op_stup5_spd
 800A6F3C  op_stup6_spd
 800A6F90  op_stup7_spd
 800A6F90  gl_gageOn_Height
 800A6FC0  op_stup1s_spd
 800A7004  ddp_cpu
 800A7008  gl_gageOn_Power
 800A702C  op_stup2s_spd
 800A7068  op_stup3s_spd
 800A7068  gl_gageOn_Walldist
 800A7070  LTalk_Furu_

0x113D600#

tse = AREA_STSE0;      /*AREA_STSE*/
            se1_err = 0;
            ouen = 0;
            SE_BGM_fade = 0;
        }else{
            if ( Q_vag[Pp] != 0 ){
                SD_stream1 = Q_vag[Pp];
                SD_intse = AREA_STSE0;      /*AREA_STSE*/
                se1_err = 0;
                Q_vag[Pp] = 0;
                Pp++;
                if(Pp > 31)
                    Pp=0;
            }
        }
    }

    XA_count = 0;
    for(i=0;i<24;i++) {
        if(Q_vag[i] != 0 ) XA_count++;
    }
    if (SD_status[23] == 1) XA_count++;
    if (SD_intse != 0) XA_count++;
}

/*------------------------------*/
/*      ストリーム 開始        */

0x1143A00#

{
printf("check 2\n");
                    SD_intse = AREA_STSE0;      /*最初から*/
                }
            } else {
                if ( result = CdlDiskError ){
printf("check 1\n");
                    se1_err++;
                    if(se1_err > 20) {
                        se1_err = 0;
                        SD_intse = AREA_STSE_ERR;   /*あきらめた*/
printf("give up[%d]\n",SD_stream1);
                    }else{
                        SD_intse = AREA_STSE0;      /*最初から*/
                    }
                }
            }
#else
                    /*PCファイル オープン&シーク*/
            if ( SD_stream1 <= (VOICE_TOP-COMN_TOP) ){  /*共有音声*/
                while ( ( fp = PCopen("mr_cmn2.bin", 0, 0 ) ) == -1 );
            }else if ( SD_stream1 >= 2200 ){                        /*応援音声*/
                while ( ( fp = PCopen("cheer2.bin", 0, 0 ) ) == -1 );
            }else{                                                                          /*競技実況*/
                while ( ( fp = PCopen(file_name[Kyougi_no], 0, 0 ) ) == -1 );
            }
            t_flag = PClseek( fp,(long)fp_se, 0 );
            SD_intse++;
#endif
                break;

/*  CDread    */
        case AREA_STSE+1:
#if SD_CD
            result = CdSync(1,sub_status);
            if( result == CdlComplete) {             /* Data Ready */
                if( (sub_status[0] & 0x10) == 0x10) {
                    SD_intse = AREA_STSE_ERR;
                    break;
                }
//              if ( CdRead (fpe_se, (void *) str_se_buf, CdlModeSpeed) ){
                if ( KCdRead( fp_se, fpe_se, (void*)str_se_buf ) ){
                    sec_cnt = 0;
                    read_end = read_end_p = 0;
                    SD_intse++;
                }
            }else {
                if ( result == CdlDiskError ){
printf("check 3\n");
                    SD_intse = AREA_STSE0;
                    break;
                }
            }
#else
                /*PCファイルリード&クローズ*/
            PCread( fp, (char *)str_se_buf, fpe_se );
            PCclose( fp );
            SD

0x1153A00#

ead_step = CD_READ_INIT;
            sp->ovrlay_step++;
        }
        break;
    case    6:  /* ムービー プログラム読み込み */
        if( OverLay( OVERLAY_MOVIE ) ) {
            cd_read_step = CD_READ_INIT;
            sp->ovrlay_step = (sp->ModSel.mode==3)? 8:7;
        }
        break;
    case    7:
        Title();
        break;
    case    8:
        Select();
        break;
    }
}

/*-----------------------------------*/
/* 進行関連  k.shimizu Aug.04th 1999 */
/*-----------------------------------*/
/*----------------------------------------------------------------------------
        ランキング      ステップ管理
----------------------------------------------------------------------------*/
void RnkStep( void )
{
    sp_w;

    switch( sp->ovrlay_step ) {
    case    0:  /* 初期化 */
        if ( SD_f_pause ){
            SD_f_pause = 0;     /*サウンドの処理関連*/
            SD_call( SD_CTL_XAKILL2 );
            SD_call( SD_CTL_ALLOFF );
        }
        AllWork_Clear(0);
        INTER_MODE = INT_VSYNC;
        cd_read_step = CD_READ_INIT;
        sp->ovrlay_step++;
        break;
    case    1:  /* 予備 */
        sp->ovrlay_step++;
        break;
    case    2:  /* 2Dデータ ロード&転送 */
        if( cd_file_load_NB( LOAD_DAT2D ) ) {
            tim_trans((TIM_W *)TIM_TABLE[0],0);
            tim_trans((TIM_W *)TIM_TABLE[1],0);
            cd_read_step = CD_READ_INIT;
            sp->ovrlay_step++;
        }
        break;
    case    3:  /* メモリーカード プログラム読み込み */
        if( OverLay( OVERLAY_MEMCARD ) ) {
            cd_read_step = CD_READ_INIT;
            sp->ovrlay_step++;
        }
        break;
    case    4:  /* 進行共通 プログラム読み込み */
        if( OverLay( OVERLAY_M_COMN ) ) {
            cd_read_step = CD_READ_INIT;
            sp->ovrlay_step++;
        }
        break;
    case    5:  /* ラン

0x1162200#

2d_02.obj: st02\g2d_02.c $(HDRS) st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\child02s.obj: st02\child02s.c $(HDRS) st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\hata2.obj: st02\hata2.c $(HDRS) st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\player2.obj: st02\player2.c $(HDRS) st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\cpu2.obj: st02\cpu2.c $(HDRS) st02\cpu.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\tvcam2.obj: st02\tvcam2.c $(HDRS) st02\tvcam.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\replay2.obj: st02\replay2.c $(HDRS) st02\replay.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\snow2.obj: st02\snow2.c $(HDRS) st02\snow.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\tkm_sp2.obj: st02\tkm_sp2.c $(HDRS) st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\effect2.obj: st02\effect2.c $(HDRS) st02\effect.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\gage2.obj: st02\gage2.c $(HDRS) st02\gage.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\ana2.obj: st02\ana2.c $(HDRS) st02\ana.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<

..\obj\d_font2.obj: st02\d_font2.c $(HDRS) st02\d_font.h st02\beach.h
    $(CC) $(CFLAGS_CHILD02) st02\$&.c -o$<






# ガロンスロー
..\obj\child03.obj: st03\child03.c $(HDRS) st03\gallon.h
    $(CC) $(CFLAGS_CHILD03) st03\$&.c -o$<

..\obj\g2d_03.obj: st03\g2d_03.c $(HDRS) s

0x116CC00#

3, 0xea, 0x10, 0x10, 0x04, 0x00},
};
*/
OPD_PATTERN_HEADER loadb_PAT0007_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xc0, 0x10, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0008_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xc2, 0x10, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0009_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xc4, 0x10, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0010_p[] = {
    {0x0001, 0x0000, 0x08, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xe0, 0x08, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0011_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xe1, 0x10, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0012_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xe3, 0x10, 0x10, 0x04, 0x00},
};
OPD_PATTERN_HEADER loadb_PAT0013_p[] = {
    {0x0001, 0x0000, 0x10, 0x10, 0, 0, 0, 0}, 
    {0x0000, 0x0000, 0x03, 0xe5, 0x10, 0x10

0x1176A00#

d+0x7ff)/0x800, (Ulong)MODEL_TABLE      }, /*  0xab    デットマンズドロップ  */
    { 0x000c9800/0x800+CD_DATA03, (0x0000571c+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xac                                    */
    { 0x000cf000/0x800+CD_DATA03, (0x00007ddd+0x7ff)/0x800, (Ulong)MODEL_TABLE       }, /*  0xad    ロングシュート                */
    { 0x000d7000/0x800+CD_DATA03, (0x00005720+0x7ff)/0x800, (Ulong)TIM_TABLE2            }, /*  0xae                                    */
    { 0x000dc800/0x800+CD_DATA03, (0x00007ddd+0x7ff)/0x800, (Ulong)MODEL_TABLE       }, /*  0xaf    エンディング                */
    { 0x000e4800/0x800+CD_DATA03, (0x00005720+0x7ff)/0x800, (Ulong)TIM_TABLE2            }, /*  0xb0                                    */
            /*2D関係 data04.bin*/
    { 0x00000000/0x800+CD_DATA04, (0x00002264+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb1    共通パレット*/
    { 0x00002800/0x800+CD_DATA04, (0x00004b14+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb2    説明画面0   */
    { 0x00007800/0x800+CD_DATA04, (0x00004f2c+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb3    説明画面1   */
    { 0x0000c800/0x800+CD_DATA04, (0x00004854+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb4    説明画面2   */
    { 0x00011800/0x800+CD_DATA04, (0x00004fd4+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb5    説明画面3   */
    { 0x00016800/0x800+CD_DATA04, (0x00004480+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb6    説明画面4   */
    { 0x0001b000/0x800+CD_DATA04, (0x00004efc+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb7    説明画面5   */
    { 0x00020000/0x800+CD_DATA04, (0x00004458+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb8    説明画面6   */
    { 0x00024800/0x800+CD_DATA04, (0x000047cc+0x7ff)/0x800, (Ulong)TIM_TABLE             }, /*  0xb9    説明画面7   */
    

0x117C400#

00+CD_DATA07,  (0x00004890+0x7ff)/0x800,   (Ulong)TIM_TABLE2            }, /*  0x17e                           */
    { 0x0012b000/0x800+CD_DATA07,   (0x00005a24+0x7ff)/0x800,   (Ulong)TIM_TABLE2            }, /*  0x17f                           */
    { 0x00131000/0x800+CD_DATA07,   (0x0000b94c+0x7ff)/0x800,   (Ulong)TIM_TABLE2            }, /*  0x180                           */
    { 0x0013d000/0x800+CD_DATA07,   (0x0002d9c4+0x7ff)/0x800,   (Ulong)TIM_TABLE2            }, /*  0x181   計53枚            */
};
#else
/*HDからデータを読むために*/
static Ulong hd_read_addr[] = {
(Ulong)TIM_TABLE2,              /*  00  MODチップ対策    */
(Ulong)CHILD_ADDRESS,           /*  01  child00     */
(Ulong)CHILD_ADDRESS,           /*  02  child01     */
(Ulong)CHILD_ADDRESS,           /*  03  child02     */
(Ulong)CHILD_ADDRESS,           /*  04  child03     */
(Ulong)CHILD_ADDRESS,           /*  05  child04     */
(Ulong)CHILD_ADDRESS,           /*  06  child05     */
(Ulong)CHILD_ADDRESS,           /*  07  child06     */
(Ulong)CHILD_ADDRESS,           /*  08  child07     */
(Ulong)CHILD_ADDRESS,           /*  09  child08     */
(Ulong)CHILD_ADDRESS,           /*  0a  エンディング    */
(Ulong)TIM_TABLE,                   /*  0b  サウンドプログラム */
/* 進行関連 */
(Ulong)M_COMN_ADDRE

0x1184B70#

eg, Gen24Reg, EXTERNAL

[Gen24NFC]
AddReg=All, GenericAddReg, Gen24NFCReg, EXTERNAL

[Gen24I]
AddReg=All, GenericAddReg, Gen24Reg, INTERNA                    */
    "..\\bin\\char_EA.bin",     /*115   テクスチャA                          */
    "..\\bin\\char_EB.bin",     /*116   テクスチャB                          */
    "..\\bin\\char_EC.bin",     /*117   テクスチャC                          */
    "..\\bin\\atama_t0.bin",    /*118   頭テクスチャ0                     */
    "..\\bin\\atama_t1.bin",    /*119   頭テクスチャ1                     */
    "..\\bin\\atama_t2.bin",    /*11a   頭テクスチャ2                     */
    "..\\bin\\atama_t3.bin",    /*11b   頭テクスチャ3                     */
    "..\\bin\\atama_t4.bin",    /*11c   頭テクスチャ4                     */
    "..\\bin\\atama_t5.bin",    /*11d   頭テクスチャ5                     */
    "..\\bin\\atama_t6.bin",    /*11e   頭テクスチャ6                     */
    "..\\bin\\atama_t7.bin",    /*11f   頭テクスチャ7                     */
    "..\\bin\\atama_t8.bin",    /*120   頭テクスチャ8                     */
    "..\\bin\\atama_t9.bin",    /*121   頭テクスチャ9                     */
    "..\\bin\\atama_tA.bin",    /*122   頭テクスチャA                     */
    "..\\bin\\atama_tB.bin",    /*123   頭テクスチャB                     */
        /*頭モデル*/
    "..\\bin\\ataE0a.bin",      /*124   モデル1頭                           */
    "..\\bin\\ataE0b.bin",      /*125   モデル1頭                           */
    "..\\bin\\ataE1a.bin",      /*126   モデル2頭                           */
    "..\\bin\\ataE1b.bin

0x11E8E00#

**********************************************
else
***************************************************************************/
extern Ulong* inf_opd[];
short ginf_timer,ginf_step,ginf_timer2;
int SD_title_ready;
CVECTOR lumi;
u_char v_memory;
/***************************************************************************
***************************************************************************/
u_char sd_title_call[] = {      /*各競技のタイトルコールの数*/
    2, 1,       /*po 9f*/
    3, 3,       /*bf gt*/
    1, 1

0x11F2A00#

ン込み中*/
    (Ulong)press_spd,       /*03    入力待ち    */
    (Ulong)ber_spd,         /*04    しましま    */
    (Ulong)light_spd,       /*05    あかり     */
    (Ulong)waku_spd,        /*06    枠               */
/*競技用*/
    (Ulong)gm_rogo_spd, /*07    ロゴ          */
    (Ulong)gm_sousa_spd,/*08    金剛くん    */
    (Ulong)gm_fuki_spd, /*09    吹き出し    */
};

    /*デッドマンズドロップ用・パターン*/
Ulong inf_dd_opd[] = {
/*共通*/
    (Ulong)back01_spd,  /*00    背景 上    */
    (Ulong)back02_spd,  /*01    背景 下    */
    (Ulong)load_spd,        /*02    読み込み中*/
    (Ulong)press_spd,       /*03    入力待ち    */
    (Ulong)ber_spd,         /*04    しましま    */
    (Ulong)light_spd,       /*05    あかり     */
    (Ulong)waku_spd,        /*06    枠               */
/*競技用*/
    (Ulong)dd_rogo_spd, /*07    ロゴ          */
    (Ulong)dd_sousa_spd,/*08    金剛くん    */
    (Ulong)dd_fuki_spd, /*09    吹き出し    */
};

    /*ロングシュート用・パターン*/
Ulong inf_ls_opd[] = {
/*共通*/
    (Ulong)back01_spd,  /*00    背景 上    */
    (Ulong)back02_spd,  /*01    背景 下    */
    (Ulong)load_spd,        /*02    読み込み中*/
    (Ulong)press_spd,       /*03    入力待ち    */
    (Ulong)ber_spd,         /*04    しましま    */
    (Ulong)light_spd,       /*05    あかり     */
    (Ulong)waku_spd,        /*06    枠               */
/*競技用*/
    (Ulong)ls_rogo_spd, /*07    ロゴ          */
    (Ulong)ls_sousa_spd,/*08    金剛くん    */
    (Ulong)ls_fuki_spd, /*09    吹き出し    */
    (Ulong)ex_long_spd, /*0a    エキストラ吹き出し   */
};


    /*とりまとめ*/
Ulong* inf_opd[] = {
    inf_po_opd,     /*0 パンチアウト*/
    inf_9f_opd,     /*1 9フープス*/
    inf_bf_opd,     /*2 ビーチフラッグス*/
    inf_gt_opd,     /*3 ガロンスロー*/
    inf_b5_opd,     /*4 バック転50m走*/
    inf_sh_opd,     /*5 スプレイヒッター*/
    inf_gm_opd,     /*6 ゲームメーカー*/
    inf_dd_o

0x1281E00#

O
FURU\FK3_G23.VAG                            
FURU\FK3_G24.VAG                            
FURU\FK3_G25.VAG                            
FURU\FK3_G26.VAG                            
FURU\FK3_G27.VAG                            
        #既に抜いた穴
FURU\FK3_G28.VAG                            

#   結果表示
    #パーフェクト/完全制覇 達成
FURU\FK4_E00.VAG                            
FURU\FK4_E01.VAG                            
FURU\FK4_E02.VAG                            
FURU\FK4_E03.VAG                            
FURU\FK4_E04.VAG                            
    #パーフェクト専用
FURU\FK4_E05.VAG                            
FURU\FK4_E06.VAG                            
FURU\FK4_E07.VAG                            
FURU\FK4_E08.VAG                            

FURU\FK4_E09.VAG                            
FURU\FK4_E10.VAG                            

0x1287400#

       #「均整の取れた体格をしておりますが」

    #しも
        #パワー用
HATU\HK1_B10.VAG                    #「パワーだけではパーフェクトを達成できません」
HATU\HK1_B11.VAG                    #「パワーだけでは完全制覇は狙えません」
        #スタミナ用
HATU\HK1_B35.VAG                    #「自慢のスタミナがこの競技にどう生かされるのでしょうか」
        #汎用
HATU\HK1_B12.VAG                    #「見事勝利を勝ち取ることができるか!」
HATU\HK1_B13.VAG                    #「どちらかといえば得意な競技です」
HATU\HK1_B18.VAG                    #「自分の力を出し切ることができるでしょうか!」
HATU\HK1_B19.VAG                    #「すばらしい記録の誕生を祈りましょう」
HATU\HK1_B20.VAG                    #「やれるところまでがんばってほしいところです」
HATU\HK1_B21.VAG                    #「自分がどこまで通用するのか確かめたいそうです」
HATU\HK1_B26.VAG                    #「どのような技を披露してくれるのでしょうか」
HATU\HK1_B27.VAG                    #「完全制覇目指してがんばってほしいところです」
HATU\HK1_B28.VAG                    #「この難関をどこまで突き進んでくれるのか楽しみです」
HATU\HK1_B29.VAG                    #「己の能力を最大限に発揮して欲しいところです」
HATU\HK1_B33.VAG                    #「己の力を十二分に出し切

0x128B400#

HATU\HK2_G15.VAG                   #「これは残念」
HATU\HK2_G16.VAG                    #「これは痛い」
HATU\HK2_G17.VAG                    #「これはもったいない」
HATU\HK2_G18.VAG                    #「これは惜しい」
HATU\HK2_G19.VAG                    #「何事も思い通りには行きません」
HATU\HK2_G20.VAG                    #「何事も思い通りには行きません」
HATU\HK2_G21.VAG                    #「失敗してしまいましたが、チャンスはまだあります!」
HATU\HK2_G22.VAG                    #「失敗の経験を次へつなげて欲しい!」
HATU\HK2_G23.VAG                    #「同じ過ちを繰り返すわけにはいきません!」
HATU\HK2_G24.VAG                    #「しかしまだチャンスは残っている」
HATU\HK2_G25.VAG                    #「遊び球が無くなってしまったぞ」
    #ターゲットを外した汎用
..\MR15\HATU\HS_G01.VAG                 #「ボールは的から大きく外れています」
..\MR15\HATU\HS_G02.VAG                 #「的のはるか外側をボールが通過して行きます」
..\MR15\HATU\HS_G03.VAG                 #「わずかに的の外をボールが通過しています」
..\MR15\HATU\HS_G04.VAG                 #「ボールはわずかに的の外です」

..\MR15\HATU\HS_G00.VAG                 #「大きく外れてしまいました」
..\MR15\HATU\HS_G06.VAG                 #「全くあさっての方向だ」
..\MR15\HATU\HS_G

0x1333600#

800+VOFS00,    (0x00001e10+0x7ff)/0x800, FLG1 },   //FURU\FK4_C07.VAG
   { 0x002fd000/0x800+VOFS00,  (0x00001ef0+0x7ff)/0x800, FLG1 },   //FURU\FK4_C08.VAG
   { 0x002ff000/0x800+VOFS00,  (0x000036d0+0x7ff)/0x800, FLG1 },   //FURU\FK4_C09.VAG
   { 0x00302800/0x800+VOFS00,  (0x00004140+0x7ff)/0x800, FLG1 },   //FURU\FK4_C10.VAG
   { 0x00307000/0x800+VOFS00,  (0x000027d0+0x7ff)/0x800, FLG1 },   //FURU\FK4_C11.VAG
   { 0x00309800/0x800+VOFS00,  (0x00001500+0x7ff)/0x800, FLG1 },   //FURU\FK4_C12.VAG
   { 0x0030b000/0x800+VOFS00,  (0x00003

0x1334E00#

000/0x800+VOFS00,  (0x00001f00+0x7ff)/0x800, FLG1 },   //FURU\FK1_C05.VAG
   { 0x0040f000/0x800+VOFS00,  (0x00002300+0x7ff)/0x800, FLG1 },   //FURU\FK1_C06.VAG
   { 0x00411800/0x800+VOFS00,  (0x000035a0+0x7ff)/0x800, FLG1 },   //FURU\FK1_C07.VAG
   { 0x00415000/0x800+VOFS00,  (0x00004210+0x7ff)/0x800, FLG1 },   //FURU\FK1_C08.VAG
   { 0x00419800/0x800+VOFS00,  (0x00003c10+0x7ff)/0x800, FLG1 },   //FURU\FK1_C09.VAG
   { 0x0041d800/0x800+VOFS00,  (0x00001470+0x7ff)/0x800, FLG1 },   //FURU\FK1_D00.VAG
   { 0x0041f000/0x800+VOFS00,  (0

0x1336400#

RU\FK4_E33.VAG
    { 0x00569800/0x800+VOFS00,  (0x00004fb0+0x7ff)/0x800, FLG1 },   //FURU\FK4_E34.VAG
    { 0x0056e800/0x800+VOFS00,  (0x00004980+0x7ff)/0x800, FLG1 },   //FURU\FK4_E35.VAG
    { 0x00573800/0x800+VOFS00,  (0x00005400+0x7ff)/0x800, FLG1 },   //FURU\FK4_E36.VAG
    { 0x00579000/0x800+VOFS00,  (0x00006710+0x7ff)/0x800, FLG1 },   //FURU\FK4_E37.VAG
    { 0x0057f800/0x800+VOFS00,  (0x000070e0+0x7ff)/0x800, FLG1 },   //FURU\FK4_E38.VAG
    { 0x00587000/0x800+VOFS00,  (0x00007b50+0x7ff)/0x800, FLG1 },   //FURU\FK4_E39.VAG
    { 0x0058f000/0x800+VOFS00,  (0x00007370+0x7ff)/0x800, FLG1 },   //FURU\FK4_E40.VAG
    { 0x00596800/0x800+VOFS00,  (0x00004e50+0x7ff)/0x800, FLG1 },   //FURU\FK4_E41.VAG
    { 0x0059b800/0x800+VOFS00,  (0x00006e00+0x7ff)/0x800, FLG1 },   //FURU\FK4_E42.VAG
    { 0x005a2800/0x800+VOFS00,  (0x000066b0+0x7ff)/0x800, FLG1 },   //FURU\FK4_E44.VAG
    { 0x005a9000/0x800+VOFS00,  (0x00006a50+0x7ff)/0x800, FLG1 },   //FURU\FK4_E45.VAG
    { 0x005b0000/0x800+VOFS00,  (0x00006320+0x7ff)/0x800, FLG1 },   //FURU\FK4_E46.VAG
    { 0x005b6800/0x800+VOFS

0x133A400#

       
    { 0x0077f800/0x800+VOFS00,  (0x00002850+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_05H.VAG         
    { 0x00782800/0x800+VOFS00,  (0x00002ae0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_05I.VAG         
    { 0x00785800/0x800+VOFS00,  (0x00002900+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06F.VAG         
    { 0x00788800/0x800+VOFS00,  (0x00002560+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06P.VAG         
    { 0x0078b000/0x800+VOFS00,  (0x000028e0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06R.VAG         
    { 0x0078e000/0x800+VOFS00,  (0x000034b0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06S.VAG         
    { 0x00791800/0x800+VOFS00,  (0x000027a0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06L.VAG         
    { 0x00794000/0x800+VOFS00,  (0x00003130+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06W.VAG         
    { 0x00797800/0x800+VOFS00,  (0x00002900+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06H2.VAG            
    { 0x0079a800/0x800+VOFS00,  (0x00002810+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06B.VAG         
    { 0x0079d800/0x800+VOFS00,  (0x00002810+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_06A.VAG         
    { 0x007a0800/0x800+VOFS00,  (0x00002400+0x7ff)/0x800, FLG1 },   //F_NAME\FZ

0x133BA00#

01f70+0x7ff)/0x800, FLG1 },    //F_NAME\FZ_10P.VAG         
    { 0x0082e000/0x800+VOFS00,  (0x00002830+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10R.VAG         
    { 0x00831000/0x800+VOFS00,  (0x00003310+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10S.VAG         
    { 0x00834800/0x800+VOFS00,  (0x00002460+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10L.VAG         
    { 0x00837000/0x800+VOFS00,  (0x00002ef0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10R.VAG         
    { 0x0083a000/0x800+VOFS00,  (0x00002ff0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10H2.VAG            
    { 0x0083d000/0x800+VOFS00,  (0x00002840+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10B.VAG         
    { 0x00840000/0x800+VOFS00,  (0x000027f0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10A.VAG         
    { 0x00842800/0x800+VOFS00,  (0x000021e0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10D.VAG         
    { 0x00845000/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10T.VAG         
    { 0x00846800/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10U.VAG         
    { 0x00848000/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10V.VAG         
    { 0x00849800/0x800+VOFS00,  (0x000021b0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10K.VAG         
    { 0x0084c000/0x800+VOFS00,  (0x00002360+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10H.VAG         
    { 0x0084e800/0x800+VOFS00,  (0x00002320+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_10I.VAG         
    { 0x00851000/0x800+VOFS00,  (0x000025b0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_11F.VAG         
    { 0x00853800/0x800+VOFS00,  (0x00002690+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_11P.VAG         
    { 0x00856000/0x800+VOFS00,  (0x00002880+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_11R.VAG         
    { 0x00859000/0x800+V

0x133DA00#

00, FLG1 },    //F_NAME\FZ_16F.VAG         
    { 0x0092e800/0x800+VOFS00,  (0x000014b0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16P.VAG         
    { 0x00930000/0x800+VOFS00,  (0x00001590+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16R.VAG         
    { 0x00931800/0x800+VOFS00,  (0x00001b70+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16S.VAG         
    { 0x00933800/0x800+VOFS00,  (0x00001970+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16L.VAG         
    { 0x00935800/0x800+VOFS00,  (0x00001620+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16W.VAG         
    { 0x00937000/0x800+VOFS00,  (0x000018d0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16H2.VAG        
    { 0x00939000/0x800+VOFS00,  (0x00001a00+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16B.VAG         
    { 0x0093b000/0x800+VOFS00,  (0x00001300+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16A.VAG         
    { 0x0093c800/0x800+VOFS00,  (0x00001090+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16D.VAG         
    { 0x0093e000/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16T.VAG         
    { 0x0093f800/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16U.VAG         
    { 0x00941000/0x800+VOFS00,  (0x00001780+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16V.VAG         
    { 0x00942800/0x800+VOFS00,  (0x00001b70+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16K.VAG         
    { 0x00944800/0x800+VOFS00,  (0x00000aa0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16H.VAG         
    { 0x00945800/0x800+VOFS00,  (0x00001330+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_16I.VAG         
    { 0x00947000/0x800+VOFS00,  (0x00001820+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_17F.VAG         
    { 0x00949000/0x800+VOFS00,  (0x000018c0+0x7ff)/0x800, FLG1 },   //F_NAME\FZ_17P.VAG         
    { 0x0094b000/0x800+VOFS00,  (0x0000133

0x133F600#

b0+0x7ff)/0x800, FLG1 },   //S_NAME\SG_NAP.VAG     
   { 0x009ee800/0x800+VOFS00,  (0x00002c70+0x7ff)/0x800, FLG1 },   //S_NAME\SN_00O.VAG     
   { 0x009f1800/0x800+VOFS00,  (0x00002c70+0x7ff)/0x800, FLG1 },   //S_NAME\SN_00O.VAG     
   { 0x009f4800/0x800+VOFS00,  (0x00002c70+0x7ff)/0x800, FLG1 },   //S_NAME\SN_00O.VAG     
   { 0x009f7800/0x800+VOFS00,  (0x00002c70+0x7ff)/0x800, FLG1 },   //S_NAME\SN_00O.VAG     
   { 0x009fa800/0x800+VOFS00,  (0x00001d40+0x7ff)/0x800, FLG1 },   //S_NAME\SG_NAH.VAG     
   { 0x009fc800/0x800+VOFS00,  (0x00001b80

0x1340E00#

(0x000053d0+0x7ff)/0x800, FLG1 },  //HATU\HK1_B24.VAG                  
   { 0x00aec800/0x800+VOFS00,  (0x000069f0+0x7ff)/0x800, FLG1 },   //HATU\HK1_B25.VAG                  
   { 0x00af3800/0x800+VOFS00,  (0x00005120+0x7ff)/0x800, FLG1 },   //HATU\HK1_B30.VAG                  
   { 0x00af9000/0x800+VOFS00,  (0x00008780+0x7ff)/0x800, FLG1 },   //HATU\HK1_B31.VAG                  
   { 0x00b01800/0x800+VOFS00,  (0x00008350+0x7ff)/0x800, FLG1 },   //HATU\HK1_B32.VAG                  
   { 0x00b0a000/0x800+VOFS00,  (0x000055e0+0x7ff)/0x800, FLG1 },   //..\MR18\HATU\HL_A00.VAG       
   { 0x00b0f800

0x1342A00#

x000062d0+0x7ff)/0x800, FLG1 },    //HATU\HK2_A27.VAG                  
    { 0x00d03000/0x800+VOFS00,  (0x00003740+0x7ff)/0x800, FLG1 },   //HATU\HK2_A28.VAG                  
    { 0x00d06800/0x800+VOFS00,  (0x00004800+0x7ff)/0x800, FLG1 },   //HATU\HK2_A29.VAG                  
    { 0x00d0b000/0x800+VOFS00,  (0x000059f0+0x7ff)/0x800, FLG1 },   //HATU\HK2_A30.VAG                  
    { 0x00d11000/0x800+VOFS00,  (0x00003270+0x7ff)/0x800, FLG1 },   //HATU\HK2_A31.VAG                  
    { 0x00d14800/0x800+VOFS00,  (0x000050a0+0x7ff)/0x800, FLG1 },   //HATU\HK2_A32.VAG                  
    { 0x00d1a000/0x800+VOFS00,  (0x00004930+0x7ff)/0x800, FLG1 },   //HATU\HK2_A33.VAG                  
    { 0x00d1f000/0x800+VOFS00,  (0x00003f20+0x7ff)/0x800, FLG1 },   //HATU\HK2_A34.VAG                  
    { 0x00d23000/0x800+VOFS00,  (0x00008880+0x7ff)/0x800, FLG1 },   //HATU\HK2_A35.VAG                  
    { 0x00d2c000/0x800+VOFS00,  (0x00008c70+0x7ff)/0x800, FLG1 },   //HATU\HK2_A36.VAG                  
    { 0x00d35000/0x800+VOFS00,  (0x00005a50+0x7ff)/0x800, FLG1 },   //HATU\HK2_A37.VAG                  
    { 0x00d3b000/0x800+VOFS00,  (0x00003ea0+0x7ff)/0x800, FLG1 },   //HATU\HK2_A38.VAG                  
    { 0x00d3f000/0x800+VOFS00,  (0x00004060+0x7ff)/0x800, FLG1 },   //HATU\HK2_A39.VAG                  
    { 0x00d43800/0x800+VOFS00,  (0x000052f0+0x7ff)/0x800, FLG1 },   //HATU\HK2_A40.VAG                  
    { 0x00d49000/0x800+VOFS00,  (0x00007450+0x7ff)/0x800, FLG1 },   //HATU\HK2_A41.VAG                  
    { 0x00d50800/0x800+VOFS00,  (0x00006550+0x7ff)/0x800, FLG1 },   //HATU\HK2_A42.VAG                  
    { 0x00d57000/0x800+VOFS00,  (0x00003fc0+0x7ff)/0x800, FLG1 },   //HATU\HK2_A43.VAG                  
    { 0x00d5b000/0x800+VOFS00,  (0x00004840+0x7ff)/0x800, FLG1 },   //HATU\HK2_A44.VAG                  

0x1344200#

   
    { 0x00e6c000/0x800+VOFS00,  (0x00003370+0x7ff)/0x800, FLG1 },   //HATU\HK2_D04.VAG                  
    { 0x00e6f800/0x800+VOFS00,  (0x000035c0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D05.VAG                  
    { 0x00e73000/0x800+VOFS00,  (0x00003b50+0x7ff)/0x800, FLG1 },   //HATU\HK2_D06.VAG                  
    { 0x00e77000/0x800+VOFS00,  (0x00003880+0x7ff)/0x800, FLG1 },   //HATU\HK2_D07.VAG                  
    { 0x00e7b000/0x800+VOFS00,  (0x00003490+0x7ff)/0x800, FLG1 },   //HATU\HK2_D08.VAG                  
    { 0x00e7e800/0x800+VOFS00,  (0x000048c0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D09.VAG                  
    { 0x00e83800/0x800+VOFS00,  (0x00002170+0x7ff)/0x800, FLG1 },   //HATU\HK2_D10.VAG                  
    { 0x00e86000/0x800+VOFS00,  (0x000017a0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D11.VAG                  
    { 0x00e87800/0x800+VOFS00,  (0x00002bb0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D12.VAG                  
    { 0x00e8a800/0x800+VOFS00,  (0x00003b90+0x7ff)/0x800, FLG1 },   //HATU\HK2_D13.VAG                  
    { 0x00e8e800/0x800+VOFS00,  (0x00006060+0x7ff)/0x800, FLG1 },   //HATU\HK2_D14.VAG                  
    { 0x00e95000/0x800+VOFS00,  (0x00005580+0x7ff)/0x800, FLG1 },   //HATU\HK2_D15.VAG                  
    { 0x00e9a800/0x800+VOFS00,  (0x00004390+0x7ff)/0x800, FLG1 },   //HATU\HK2_D16.VAG                  
    { 0x00e9f000/0x800+VOFS00,  (0x000019b0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D17.VAG                  
    { 0x00ea1000/0x800+VOFS00,  (0x00001cc0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D18.VAG                  
    { 0x00ea3000/0x800+VOFS00,  (0x00002cd0+0x7ff)/0x800, FLG1 },   //HATU\HK2_D19.VAG                  
    { 0x00ea6000/0x800+VOFS00,  (0x00003130+0x7ff)/0x800, FLG1 },   //HATU\HK2_D20.VAG                  
    { 0x00ea9800/0x800+VOFS00,  (0x00002620+0x7ff)/0x800, 

0x1345C00#

x7ff)/0x800, FLG1 },   //HATU\HK2_F01.VAG                  
    { 0x00fcc000/0x800+VOFS00,  (0x00002d30+0x7ff)/0x800, FLG1 },   //HATU\HK2_F02.VAG                  
    { 0x00fcf000/0x800+VOFS00,  (0x00002be0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F03.VAG                  
    { 0x00fd2000/0x800+VOFS00,  (0x00005410+0x7ff)/0x800, FLG1 },   //HATU\HK2_F04.VAG                  
    { 0x00fd7800/0x800+VOFS00,  (0x00003150+0x7ff)/0x800, FLG1 },   //HATU\HK2_F05.VAG                  
    { 0x00fdb000/0x800+VOFS00,  (0x00005af0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F06.VAG                  
    { 0x00fe1000/0x800+VOFS00,  (0x00004780+0x7ff)/0x800, FLG1 },   //HATU\HK2_F07.VAG                  
    { 0x00fe5800/0x800+VOFS00,  (0x00003ce0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F08.VAG                  
    { 0x00fe9800/0x800+VOFS00,  (0x000040b0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F09.VAG                  
    { 0x00fee000/0x800+VOFS00,  (0x00003ea0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F10.VAG                  
    { 0x00ff2000/0x800+VOFS00,  (0x00002c00+0x7ff)/0x800, FLG1 },   //HATU\HK2_F11.VAG                  
    { 0x00ff5000/0x800+VOFS00,  (0x000026c0+0x7ff)/0x800, FLG1 },   //HATU\HK2_F12.VAG                  
    { 0x00ff7800/0x800+V

0x1347400#

0e800/0x800+VOFS00,    (0x000060a0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G01.VAG       
    { 0x01115000/0x800+VOFS00,  (0x00006ee0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G02.VAG       
    { 0x0111c000/0x800+VOFS00,  (0x00007060+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G03.VAG       
    { 0x01123800/0x800+VOFS00,  (0x00005060+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G04.VAG       
    { 0x01129000/0x800+VOFS00,  (0x00004b90+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G00.VAG       
    { 0x0112e000/0x800+VOFS00,  (0x00004ee0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G06.VAG       
    { 0x01133000/0x800+VOFS00,  (0x000049b0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G07.VAG       
    { 0x01138000/0x800+VOFS00,  (0x00005290+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G08.VAG       
    { 0x0113d800/0x800+VOFS00,  (0x00003ed0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G09.VAG       
    { 0x01141800/0x800+VOFS00,  (0x00004370+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G10.VAG       
    { 0x01146000/0x800+VOFS00,  (0x00002fe0+0x7ff)/0x800, FLG1 },   //..\MR15\HATU\HS_G11.VAG       
    { 0x01149000/0x800+VOFS00,  (0x

0x134BE00#

//H_NAME\HZ_03P.VAG                    
   { 0x013ac000/0x800+VOFS00,  (0x00001660+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_03R.VAG                 
   { 0x013ad800/0x800+VOFS00,  (0x00001690+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_03S.VAG                 
   { 0x013af000/0x800+VOFS00,  (0x000014a0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_03L.VAG                 
   { 0x013b0800/0x800+VOFS00,  (0x00000e40+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_03W.VAG                 
   { 0x013b1800/0x800+VOFS00,  (0x00001740+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_03H.VAG                 
   { 0x013b3000/0x800+VOFS00,  (0x00001550+0x7ff)

0x134DA00#

0x800+VOFS00,  (0x00001c80+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08.VAG                  
    { 0x0146f000/0x800+VOFS00,  (0x00001da0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08D.VAG                 
    { 0x01471000/0x800+VOFS00,  (0x00001860+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08T.VAG                 
    { 0x01473000/0x800+VOFS00,  (0x00002820+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08U.VAG                 
    { 0x01476000/0x800+VOFS00,  (0x00002bd0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08V.VAG                 
    { 0x01479000/0x800+VOFS00,  (0x00002d00+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08K.VAG                 
    { 0x0147c000/0x800+VOFS00,  (0x00001ed0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_08R2.VAG                
    { 0x0147e000/0x800+VOFS00,  (0x00003da0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09D.VAG                 
    { 0x01482000/0x800+VOFS00,  (0x000042d0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09P.VAG                 
    { 0x01486800/0x800+VOFS00,  (0x00004490+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09R.VAG                 
    { 0x0148b000/0x800+VOFS00,  (0x00003ee0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09S.VAG                 
    { 0x0148f000/0x800+VOFS00,  (0x00003b70+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09L.VAG                 
    { 0x01493000/0x800+VOFS00,  (0x00003600+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09W.VAG                 
    { 0x01496800/0x800+VOFS00,  (0x00004660+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09H.VAG                 
    { 0x0149b000/0x800+VOFS00,  (0x00004f80+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09B.VAG                 
    { 0x014a0000/0x800+VOFS00,  (0x000038a0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09A.VAG                 
    { 0x014a4000/0x800+VOFS00,  (0x00003ab0+0x7ff)/0x800, FLG1 },   //H_NAME\HZ_09D.VAG                 
    { 0x014a8000/0x800+VOFS00,  (0x00004d80+0x7ff)/0x800, F

0x1399C00#

                          */
#define  SD_RNK015  SD_PL2+14  /*   [チーム]、スタートで出遅れてしまったようです。             */
#define  SD_RNK016  SD_PL2+15  /*   [チーム]、初戦でつまづいてしまったようです。               */
#define  SD_RNK017  SD_PL2+16  /*   しかしまだ始まったばかり。ガンバって下さい。               */
#define  SD_RNK018  SD_PL2+17  /*   とはいっても勝負はこれからです。                           */
                               /*   ショゲてるワケにはいきませんね。                           */
#define  SD_RNK019  SD_PL2+18  /*   [チーム]、まずまずのスタートです。                         */
#define  SD_RNK020  SD_PL2+19  /*   [チーム]、苦戦を強いられましたが何とか引き分け。           */
#define  SD_RNK021  SD_PL2+20  /*   この先の試合に期待しましょう。                             */
#define  SD_RNK022  SD_PL2+21  /*   今期のレベルの高さがうかがえた一戦でした。                 */
#define  SD_RNK023  SD_PL2+22  /*   [チーム]、やはり強い。                                     */
#define  SD_RNK024  SD_PL2+23  

0x139C400#

2+117 /*   せめて最下位だけはなんとしても脱したい所でしょう。         */
#define  SD_RNK119  SD_PL2+118 /*   どうも今年はツキに見放されています。                       */
#define  SD_RNK120  SD_PL2+119 /*   [チーム]、ここで早くも優勝が決定しましたっ!               */
#define  SD_RNK121  SD_PL2+120 /*   サポーターも大喜びです。                                   */
#define  SD_RNK122  SD_PL2+121 /*   おめでとうございますっ!                                   */
#define  SD_RNK123  SD_PL2+122 /*   [チーム]、さすがに強い。                                   */
#define  SD_RNK124  SD_PL2+123 /*   [チーム]、やはり期待を裏切りません。                       */
#define  SD_RNK125  SD_PL2+124 /*   ついに優勝を勝ち取りました。                               */
#define  SD_RNK126  SD_PL2+125 /*   優勝です。                                                 */
#define  SD_RNK127  SD_PL2+126 /*   [チーム]、ついにトップに上り詰めました。                   */
#define  SD_RNK128  SD_PL2+127 /*   さすがとしか言いようがありません。                     

0x13A0400#

L5  SD_PL7+30   /*ED   */
#define     SD_PL4  SD_PL5+17   /*EX   */
#define     SD_PL3  SD_PL4+32   /*HC   */
#define     SD_PL6  SD_PL3+41   /*NUM  */
#define     SD_PL8  SD_PL6+30   /*TEAM */
#define     SD_PL2  SD_PL8+40   /*RNK  */
#define     SD_PL0  SD_PL2+143  /*TEN  */
#define     SD_PL9  SD_PL0+6    /*WOW  */
/*----------------------------------*/
/*-----     #1-1        -----*/
#define  SD_OP01    SD_PL     /*こんにちは、ポリーです。                                                    */
#define  SD_OP02    SD_PL+1   /*こんばんは、ポリーです。                                                    */
#define  SD_OP03    SD_PL+2   /*真夏のような暑さの中行われました~                                          */
#define  SD_OP04    SD_PL+3   /*とてもいい天候に恵まれました~                                              */
#define  SD_OP05    SD_PL+4   /*ちょっと肌寒い中行われました~                                              */
#define  SD_OP06    SD_PL+5   /*冷たい小雨が降る中行われました~                 

0x13A6200#

                           /*  両軍良く戦いました。                                        */
#define  SD_EX09    SD_PL4+ 8   /*  [チーム]、一時はヒヤッとさせられる場面も                    */
                                /*  ありましたが、なんとかPK勝ちです。                        */
#define  SD_EX10    SD_PL4+ 9   /*  [チーム]、PK戦までもつれこんでの勝利です。                */
#define  SD_EX11    SD_PL4+10   /*  つくづく土壇場に強いチームですね。                          */
#define  SD_EX12    SD_PL4+11   /*  極限の緊張感の中での勝利、さすがですね。                    */
#define  SD_EX13    SD_PL4+12   /*  [チーム]、長丁場ではありましたが、                          */
                                /*   最後はビシッとVゴールで勝利をモノにしました。             */
#define  SD_EX14    SD_PL4+13   /*  [チーム]、苦しそうに見せながらも結局最後は                  */
                                /*   Vゴールを決めて勝利です。                                 */ 
#define  SD_EX15    SD_PL4+14   /*  さすがに役者ぞろい、魅せてくれます。                        */
#define  SD_EX16    SD_PL4+15   /*  これでは相手チームも体力が続かないでしょう。                */
#define  SD_EX17    SD_PL4+16   /*  [チーム]、こんなことでいいんでしょうか?                    */
#define  SD_EX18    SD_PL4+17   /*  [チーム]、どうしたのでしょうか?大敗を喫しています。        */
#define  SD_EX19    SD_PL4+18   /*  今後の試合に不安を感じずにいられません。                    */
#define  SD_EX20    SD_PL4+19   /*  これでは先が思いやられます。            

0x13A9600#

055f0+0x7ff)/0x800, FLG3 },    //JF_A09.vag
   {0x0039c800/0x800+OFFS, (0x0000cde0+0x7ff)/0x800, FLG3 },   //JF_A10.vag
   {0x003a9800/0x800+OFFS, (0x0000c9e0+0x7ff)/0x800, FLG3 },   //JF_A11.vag
   {0x003b6800/0x800+OFFS, (0x000055f0+0x7ff)/0x800, FLG3 },   //JF_A12.vag
   {0x003bc000/0x800+OFFS, (0x0001b810+0x7ff)/0x800, FLG3 },   //JF_E13.vag
   {0x003d8000/0x800+OFFS, (0x0000d6b0+0x7ff)/0x800, FLG3 },   //JF_E14.vag
   {0x003e5800/0x800+OFFS, (0x00006a00+0x7ff)/0x800, FLG3 },   //JF_E15.vag
   {0x003ec800/0x800+OFFS, (0x0000

0x13B6600#

   {0x012ee800/0x800+OFFS, (0x00006550+0x7ff)/0x800, FLG3 },   //KS_A10.vag
   {0x012f5000/0x800+OFFS, (0x00006090+0x7ff)/0x800, FLG3 },   //KS_A11.vag
   {0x012fb800/0x800+OFFS, (0x00018f50+0x7ff)/0x800, FLG3 },   //KS_A12.vag
   {0x01314800/0x800+OFFS, (0x00006370+0x7ff)/0x800, FLG3 },   //KS_E13.vag
   {0x0131b000/0x800+OFFS, (0x00006420+0x7ff)/0x800, FLG3 },   //KS_E14.vag
   {0x01321800/0x800+OFFS, (0x000065a0+0x7ff)/0x800, FLG3 },   //KS_E15.vag
   {0x01328000/0x800+OFFS, (0x0000e760+0x7ff)/0x800, FLG3 },   //KS_E16.vag

0x13BD200#

########################################################################*/
#define     STANDHEAD_HIT           0x04
#define     STANDHEAD_END           0x0b
#define     STANDHEAD_AUTO_STEP     0x00
#define     STANDHEAD_SET_STEP      0x01
#define     STANDHEAD_MAIN_STEP     0x02
#define     STANDHEAD_END_STEP      0x03
#define     STANDHEAD_TURN_ANGLE    0x10
/*          work0-work3予約           */
#define     DIRECE_ANGLE            work4
#define     STANDHEAD_SPEED         (0xa0-Random(PD_HEADACC))
#define     STANDHEAD_HIGH          (-0x1a0*PD_HIGH/180)

/*#############################################################################
            ジャンプボレー
#############################################################################*/
#define     JUMPVOLLEY_JUMP         0x01
#define     JUMPVOLLEY_HIT          0x08
#define     JUMPVOLLEY_DOWN         0x0f
#define     JUMPVOLLEY_END          0x00
#define     JUMPVOLLEY_WAIT_STEP    0x00
#define     JUMPVOLLEY_MAIN_STEP    0x01
#define     JUMPVOLLEY_DOWN_STEP    0x02
#define     JUMPVOLLEY_SPEED        0xa8

/*#############################################################################
            ハーフボレーシュート
#############################################################################*/
#define     HALFVOLLEY_HIT          0x05
#define     HALFVOLLEY_MAIN_STEP    0x00
#define     HALFVOLLEY_DOWN_STEP    0x01
#define     HALFVOLLEY_DOWN         (0x0f)
#define     HALFVOLLEY_END          (0x19)
#define     HALFVOLLEY_SPEED        0x8c

/*#############################################################################
            ダイビングヘッドシュート
#############################################################################*/
#define     DIVINGHEA

0x13C0600#

           0x2c
#define     PL_GOALKICK_STEP        0x2d
#define     PL_TIMEUP_STEP          0x2e
#define     PL_CORNERKICK_STEP      0x2f
#define     PL_FREEKICK_STEP        0x30
#define     PL_PENALTYKICK_STEP     0x31
#define     PL_FOUL_STEP            0x32
#define     PL_GOALIN_STEP          0x33
#define     PL_GAMEPK_STEP          0x34
#define     PL_WALL_STEP            0x35
#define     PL_PKMATCH_STEP         0x36

#define     PL_END_1_1_STEP         0x37
#define     PL_END_1_RUN_STEP       0x38
#define     PL_END_1_2_STEP         0x39
#define     PL_END_1_2_2_STEP       0x3a
#define     PL_END_1_3_STEP         0x3b
#define 

0x13C6E00#

EINT_TIMER             timer
#define     FEINT_END               0x10
#define     FEINT_LOOP              0x06

/*#############################################################################
            ボールを奪われたプレイヤー
#############################################################################*/
#define     AUTORUN_INIT_STEP   0x00
#define     AUTORUN_MAIN_STEP   0x01
#define     AUTORUN_STOP_STEP   0x02
#define     AUTORUN_DASH_TIME   0x10
#define     AUTORUN_RUN_TIME    0x0c
#define     AUTORUN_WAIT_TIME   0x06

/*######################################

0x13C9600#

 ヴェルディ          */
#define SD_VK00     SD_NM5      /*  菊池新吉        */
#define SD_VK01     SD_NM5+ 1   /*  石川            */
#define SD_VK02     SD_NM5+ 2   /*  アルジェウ      */
#define SD_VK03     SD_NM5+ 3   /*  林             */
#define SD_VK04     SD_NM5+ 4   /*  柱谷            */
#define SD_VK05     SD_NM5+ 5   /*  中村            */
#define SD_VK06     SD_NM5+ 6   /*  前園            */
#define SD_VK07     SD_NM5+ 7   /*  北沢            */
#define SD_VK08     SD_NM5+ 8   /*  栗

0x13CB200#

 /*  山口            */
#define SD_KS09     SD_NM12+ 9  /*  藤吉            */
#define SD_KS10     SD_NM12+10  /*  クレーベル      */
#define SD_KS11     SD_NM12+11  /*  野口            */
#define SD_KS12     SD_NM12+12  /*  本田            */
#define SD_KS13     SD_NM12+13  /*  松山            */
#define SD_KS14     SD_NM12+14  /*  永田            */
#define SD_KS15     SD_NM12+15  /*  櫛引            */
/*                              ガンバ              */
#define SD_GO00     SD_NM13     /*  本並            */
#define SD_GO01     SD_NM13+ 1  /*  実好           */
#define SD_GO02     SD_NM13+ 2  /*  宮本            */
#define SD_GO03     SD_NM13+ 3  /*  バブンスキー    */
#define SD_GO04     SD_NM13+ 4  /*  木山            */
#define SD_GO05     SD_NM13+ 5  /*  平岡            */
#define SD_GO06     SD_NM13+ 6  /*  エムボマ        */
#define SD_GO07     SD_NM13+ 7  /*  クルプニ        */
#define SD_GO08     SD_NM13+ 8  /*  松波            */
#define SD_GO09     SD_NM13+ 9  /*  森岡            */
#define SD_GO10     SD_NM13+10  /*  森下            */
#define SD_GO11     SD_NM13+11  /*  斉藤            */
#define SD_GO12     SD_NM13+12  /*  島田            */
#define SD_GO13     SD_NM13+13  /*  木場            */
#define SD_GO14     SD_NM13+14  /*  小島            */
#define SD_GO15     SD_NM13+15  /*  岡中            */
/*                              セレッソ            */
#define SD_CO00     SD_NM14     /*  武田じろう      */
#define SD_CO01     SD_NM14+ 1  /*  木澤            */

0x13CD200#

 SD_TM061    SD_TM0+43   /*  ジェフ                  */
#define SD_TM062    SD_TM0+44   /*  レイソル                */
#define SD_TM063    SD_TM0+45   /*  レッズ                  */
#define SD_TM064    SD_TM0+46   /*  ヴェルディ              */
#define SD_TM065    SD_TM0+47   /*  マリノス                */
#define SD_TM066    SD_TM0+48   /*  フリューゲルス          */
#define SD_TM067    SD_TM0+49   /*  ベルマーレ              */
#define SD_TM068    SD_TM0+50   /*  エスパルス              */
#define SD_TM069    SD_TM0+51   /*  ジュビロ                */
#define SD_TM070    SD_TM0+52   /*  グランパス              */
#define SD_TM071    SD_TM0+53   /*  サンガ                  */
#define SD_TM072    SD_TM0+54   /*  ガンバ                  */
#define SD_TM073    SD_TM0+55   /*  セレッソ                */
#define SD_TM074    SD_TM0+56   /*  ヴィッセル              */
#define SD_TM075    SD_TM0+57   /*  サンフレッチェ          */
#define SD_TM076    SD_TM0+58   /*  アビスパ                */
#define SD_TM077    SD_TM0+59   /*  J イースト            */
#define SD_TM078    SD_TM0+60   /*  J ウエスト            */
#define SD_TM079    SD_TM0+61   /*  オリジナル1            */
#define SD_TM07A    SD_TM0+62   /*  オリジナル2            */
#define SD_TM100    SD_TM1      /*  鹿島アントラーズ        */
#define SD_TM101    SD_TM1+1    /*  ジェフユナイテッド市原  */
#define SD_TM102    SD_TM1+2    /*  柏レイソル              */
#define SD_TM103    SD_TM1+3    /*  浦和レッドダイヤモンズ  */
#define

0x13D2C00#

 SD_JI15     SD_NM10+15  /*  尾崎            */
/*                              グランパス          */
#define SD_NG00     SD_NM11     /*  伊藤            */
#define SD_NG01     SD_NM11+ 1  /*  本田            */
#define SD_NG02     SD_NM11+ 2  /*  小川            */
#define SD_NG03     SD_NM11+ 3  /*  大岩            */
#define SD_NG04     SD_NM11+ 4  /*  飯島            */
#define SD_NG05     SD_NM11+ 5  /*  トーレス        */
#define SD_NG06     SD_NM11+ 6  /*  西ケ谷          */
#define SD_NG07     SD_NM11+ 7  /*  古賀            */
#define SD_NG08     SD_NM11+ 8  /*  リカルジーニョ  */
#define SD_NG09     SD_NM11+ 9  /*  浅野            */
#define SD_NG10     SD_NM11+10  /*  望月            */
#define SD_NG11     SD_NM11+11  /*  平野            */
#define SD_NG12     SD_NM11+12  /*  岡山            */
#define SD_NG13     SD_NM11+13  /*  ストイコビッチ  */
#define SD_NG14     SD_NM11+14  /*  小倉            */
#define SD_NG15     SD_NM11+15  /*  森山            */
/*                     

0x13D4E00#

 SD_TM026    SD_TM0+27   /*  フリューゲルスを        */
#define SD_TM027    SD_TM0+28   /*  ベルマーレを            */
#define SD_TM028    SD_TM0+29   /*  エスパルスを            */
#define SD_TM029    SD_TM0+30   /*  ジュビロを              */
#define SD_TM030    SD_TM0+31   /*  グランパスを            */
#define SD_TM031    SD_TM0+32   /*  サンガを                */
#define SD_TM032    SD_TM0+33   /*  ガンバを                */
#define SD_TM033    SD_TM0+34   /*  セレッソを              */
#define

0x13D8C00#

「ました。
    A034,           //ゲームに影響しそうな雨が降りしきっています。
    A035,           //この雨はプレーにどのような影響を与えるのでしょうか。
    A036,           //この最悪のコンディション、プレーに影響しそうです。
    A037,           //この雨の中、こんなに沢山のサポーターが応援に駆けつけてくれました。
};
//////////////////////////////////////////////////////////////
//A 試合開始前 スタジアム状況 夜
//////////////////////////////////////////////////////////////
enum {
//晴れ
    A038 = (A037+1),    //サポーター一人一人の声援が、鮮やかな満天の星空に共鳴しています。
    A039,           //夜になり、風が涼しくなってきました。
    A040,           //夜になってもサポーターのエネルギーは衰えることを知りません。
    A040B,          //dummy
//雨
    A041,           //夜になっても、雨が止まず非常に厳しいコンデションになってしまいました。
    A033B,          //応援するサポーターにとっては、辛い最悪のコンディションになってしまいました。
    A035B,          //この雨はプレーにどのような影響を与えるのでしょうか。
    A036B,          //この最悪のコンディション、プレーに影響しそうです。
    A037B,          //この雨の中、こ

0x13DAA00#

//////////
enum {
//オールスター
    B008 = (B007+1),    //いよいよ始まりました、夢の競演オールスターゲーム。
    B009,           //出場選手は、まさにワールドクラス、すごいゲームになりそうです。
    B010,           //Jリーガーの夢の競演、いよいよスタートしました。
    B011,           //ワールドクラスの芸術的なプレイに期待が高まります。
    B012,           //すごい、本当にすごい顔ぶれです。非常に結果が楽しみな一戦です。
//トーナメント・1回戦
    B013,           //さぁ、いよいよ始まりました(大会名)
    B014,           //負けたら終わりなので気合いを入れていきたい。
    B014B,          //負けたら終わりなので気合いを入れていきたい。
//トーナメント・2回戦
    B014C,          //負けたら終わりなので気合いを入れていきたい。
    B016,           //ここも勝って次にコマを進めたい。
    B016B,          //ここも勝って次にコマを進めたい。
//トーナメント・3回戦
    B017,           //準決勝へ勝ち残りたい両チーム。
    B018,           //勢いに乗って、準決勝に進出したいところです。
//トーナメント・準決勝
    B019,           //いよいよ準決勝、勝ち残ったチームはさすがにレベルが高い。
    B020A,          //準決勝を迎え、
    B020B,          //(大会名)いよいよ大詰めです。
//トーナメント・決勝
    B021,           //決勝戦、最強を決める最後の試合が、今始まりました。
    B022,           //両雄の対決、どちらが勝ってもおかしくありません。
    B022B,          //両雄の対決、どちらが勝ってもおかしくありません。
//Jリーグ・開幕戦
    B023,           //いよいよJリーグ開幕です。はたして、どのチームがチャンピオンになるのか、楽しみです。
    B024,           //さぁ、いよいよ待ちに待った開幕戦を迎えました。
    B025,           //熱い、熱い白熱したシーズンになりそうです。
    B026,           //どのような、ドラマティックな結末が待っているのでしょう

0x13DC600#

/蹴ったが誰もいない!                                            パスミス
    D085,           //周りを良く見てほしい。                                       パスミス
    D128,           //いやー!厳しい!                                                  パスミス
    D151,           //フォローがほしい!
    D152,           //誰もいない!!
    D153,           //パスミス!
    D154,           //カットされましたぁ!
    D155,           //だめだぁ。
    D156,           //これはちょっと長すぎました。
    D157,           //うまくかみ合わない!!
    D158,           //なんということだぁ!
    D159,           //これはダメです。
};

//////////////////////////////////////////////////////////////////////////////////////

0x13DDE00#

オた。
    C060A,          //緊張あふれるゲームを
    C060B,          //(チーム名が)モノにしました。
};
//////////////////////////////////////////////////////////////
//C 試合終了 状況解説 後半終了直後実況の後に続けて 負けが確定した
//////////////////////////////////////////////////////////////
enum {
//後半終了後 共通
    C062 = (C060B+1),           //(チーム名)負けてしまいました。
    C063,           //(チーム名)残念ながら敗れました。
//後半終了後 2点差以内の負け
    C064,           //(チーム名)あと一歩及びませんでした。
    C065,       

0x13DF200#

vわず応援したくなった試合でした。
    C112,           //日増しにJリーグのレベルが上がっているのがわかる試合でした。
    C113,           //激しい戦いに驚いた試合でした。
    C114,           //歴史に残る一戦でした。
    C115,           //私たちの記憶に残る一戦でした。
    C116,           //熱い、熱い試合でした。
    C117,           //スペクタクルなサッカーが展開された試合でした。
    C118,           //まばたきする間もない素晴らしい内容でした。
};
//////////////////////////////////////////////////////////////
//C 試合終了 結果感想② 結果感想①実況の後に続けて
//////////////////////////////////////////////////////////////
enum {
//天気に応じて(ドームのときは無視)
    C119 = (C118+1),    //雨の中、サポーターの皆さんごくろうさまでした。
    C120,           //爽快な天気に恵まれ、サポーターの皆さんも気持ちよく応援できたのでは無いでしょうか。
};
//////////////////////////////////////////////////////////////
//C 試合終了 結果感想③ 結果感想②実況の後に続けて
//////////////////////////////////////////////////////////////
enum {
    C121 = (C120+1),    //皆さんは、どう思われましたでしょうか。
    C122,           //満足出来る内容だったのではないでしょうか。
    C123,           //この素晴らしい感動をあなたに、是非TVをごらんの皆さんも、スタジアムに足を運んで下さい。
    C124,           //新たな最強伝説、ここに生まれた気がします。
    C125,           //TVの前のあなたは、どのように思われたでしょう。
    C126,           //次節もこのような試合であることを願います。
};
//////////////////////////////////////////////////////////////
//C 試合終了 結果感想④ 結果感想③実況の後に続けて
//////////////////////////////////////////////////////

0x13E1A00#

/(選手名)全くのフリーでした。
    E013,           //(選手名)いい時間に得点を上げました。
    E014,           //(選手名)本当に良く決めました。
    E015,           //(選手名)あの距離から、見事の一言です。
    E016,           //(選手名)豪快なシュートでした。
    E022,           //(選手名)全くのフリーでした。
            //決められたチーム
    E018,           //(チーム名)ディフェンダー気合いを入れていかないと。
    E019,           //(チーム名)相手に対してのマークが合っていないようです。
    E020,           //(チーム名)ディフェンダー、動きについていけなかったようです。
    E021,           //(チーム名)守りがあまいです。
    E023,           //(チーム名)完璧に振られてしまいました。
    E024,           //(チーム名)一瞬のスキをつかれました。
    E025,           //(チーム名)完全にやられました。
            //決められたキーパー
    E026,           //(キーパー名)反応はしているんですが、今一歩届きません
    E027,           //(キーパー名)反応するも、相手が一枚上手でした。
};
//////////////////////////////////////////////////////////////
//D インプレー シュートミス
//////////////////////////////////////////////////////////////
enum {
//共通
    D102 = (E027+1),    //集中力を切らしてはいけません。                       シュートミス
    D141,           //あぁ.......。                                                            シュート大外し
    D142,           //あららら。                                                             シュート大外し
    D352,           //(選手名)狙っていました。
//ゴールキックになる
    D359,           //外れました。
    D360,           //大きく外れました。
    D364,           //執念の一発でした。
    D351,           //これは惜しい!!
    D358,           //良いシュートが打てませんでした。
    D361,           //ちょっと無理だったか?
    D369,           //いいシュートでした。
    D370,           //バランスが崩れたか。
    D377,       

0x13E6400#

////////////////////////////////
enum {
//自分がリードしている
//1点リード
    D001 = (D555+1),    //実力はほぼ互角。
    D002,           //両チームいいゲームを展開しています。
    D003,           //(チーム名A)追加点を上げたいところでしょう。
    D004,           //(チーム名A)一点のリードを保っています。
//1点リードで相手無得点
    D005,           //(チーム名A)このまま押さえていきたい。

//3点以内リード
    D006,           //(チーム名A)絶好調です。
    D007,           //(チーム名A)今日は攻めています。
    D008,           //(チーム名A)いい感じでチームが動いています。
//3点以内リードで相手無得点
    D009,           //(チーム名A)ディフェンスラインがうまく機能しています。
    D010,           //(チーム名A)集中力が持続しています。
    D011,           //(チーム名A)攻守のバランスがうまく取れています。

//5点以内リード
    D012,           //(チーム名A)FW陣の活躍が素晴らしい!!
    D014,           //(チーム名A)一方的に試合を進めています。
    D013,           //(チーム名B)どうもピリッとしません。
//5点以内リードで相手無得点
    D015,           //(チーム名A)攻守ともに安定しています。
    D016,           //(チーム名A)これは強い

0x13E7E00#

/2人目のキッカーは、(選手名)
    E108,           //3人目のキッカーは、(選手名)
    E109,           //4人目のキッカーは、(選手名)
    E110,           //5人目のキッカーは、(選手名)
    E111,           //6人目のキッカーは、(選手名)
    E112,           //7人目のキッカーは、(選手名)
    E113,           //8人目のキッカーは、(選手名)
    E114,           //9人目のキッカーは、(選手名)
    E115,           //10人目のキッカーは、(選手名)
    E116,           //11人目のキッカーは、(選手名)
//その後続けて言う
//客観的に決めた
//客観的に外した
    D442A,          //外したぁ!
    D443A,  

0x13E9200#

では”?勝?敗?位と”に続く
//////////////////////////////////////////////////////////////
enum {
//モード共通
    A045 = (A044+1),    //サポーターの声援を一身に背負い、
    A046,           //熱い思いのサポーターに見守られながら、
//リーグ・共通
    A047,           //全く負け知らず、怒涛のフォワード陣を有する         
    A048,           //破竹の勢いで勝っている                                                   
    A049,           //これまで順調な戦いぶりでコンディションがいい        
    A050,           //相変わらず素晴らしい内容で勝ち進んでいる              
    A051,           //いい感じで、頑張っている                                              
    A052,           //調子は決して悪くはない                                                   
    A053,           //そこそこにチーム状態が良さそうな                              
    A054,           //勝ったり、負けたりでいまひとつ好調が続かない        
    A055,           //今の状態から、何とか抜け出したい                              
    A056,           //最近チームの組織がうまくかみ合っていない              
    A057,           //調整不足か、全くいいところがない                              
    A058,           //最近、どうも決定力不足を感じます                              
    A059,           //最近、なかなか得点出来ず苦しんでいる                        
//リーグ・ステージ序盤(1~6)
    A060,           //失点が多い最近、守備陣の奮起に期待したい              
    A061,           //なかなか、いいスタートを切った                                   
    A062,           //この調子で、白星を重ねて行きたい                              
    A063,           //スタートに失敗し、今後の建て直しに期待が高まる   
    A064,           //今一つ調子に乗れないでいる                                         
    A065,           //何とか勝率を5割に戻したい                                         
//リーグ・ステージ終盤(13~17)
    A066,           //このまま優勝まで行ってしまいそうな                         
    A067,           //優勝候補であることには間違いない                              
    A068,           //優勝の可能性がある限り、頑張ってほしい                   
    A069,           //終盤、何とか実力を出し切って

0x13EAE00#

です。
//トーナメント・決勝
   B021,           //決勝戦、最強を決める最後の試合が、今始まりました。
   B022,           //両雄の対決、どちらが勝ってもおかしくありません。
   B022B,          //両雄の対決、どちらが勝ってもおかしくありません。
//Jリーグ・開幕戦
   B023,           //いよいよJリーグ開幕です。はたして、どのチームがチャンピオンになるのか、楽しみです。
   B024,           //さぁ、いよいよ待ちに待った開幕戦を迎えました。
   B025,           //熱い、熱い白熱したシーズンになりそうです。
   B026,           //どのような、ドラマティックな結末が待っているのでしょう

0x13EF600#

、か。
   C122,           //満足出来る内容だったのではないでしょうか。
   C123,           //この素晴らしい感動をあなたに、是非TVをごらんの皆さんも、スタジアムに足を運んで下さい。
   C124,           //新たな最強伝説、ここに生まれた気がします。
   C125,           //TVの前のあなたは、どのように思われたでしょう。
   C126,           //次節もこのような試合であることを願います。
};
//////////////////////////////////////////////////////////////
//C 試合終了 結果感想④ 結果感想③実況の後に続けて
//////////////////////////////////////////////////////

0x13F3600#

///////////////////////
//D インプレー
//////////////////////////////////////////////////////////////
enum {
//ルーズボール
    D247A = (D092+1),   //切り返す。
    D249,           //ボールをキープ。
    D250,           //中を見る。
    D251,           //さぁ、これは。
    D252,           //さぁ、ここから。
    D253,           //中へ折り返す。
    D254,           //胸で落として。
    D255,           //ここからの展開を早くしなければなりません。
    D256,           //右足でコントロール。
    D257,           //左足でコントロール。
    D248,           //(選手名)から
//ボールの奪い合い
    D265,           //早いプ

0x13F4A00#

ウぁ、スローインです。
    D302,           //(チーム名の)ボールです。
    D303,           //(チーム名の)スローインです。
    D304,           //(チーム名の)スローイン。
};
//////////////////////////////////////////////////////////////
//D インプレー   ファール
//////////////////////////////////////////////////////////////
enum {
//オフサイド
    D195 = (D304+1),    //オフサイド。
    D196,           //これはオフサイドです。
    D197,           //旗が上がっていました。
    D198,           //これはオフサイドの旗が上がってます。
    D140,           //おや?                                                                       オフサイド
//カード無しファール
    D310,           //(チーム名)ファールです。
    D311,           //(選手名)倒してしまいました。
    D312,           //おぉーと、痛いところでのファール!!
    D313,           //ここで、ファウルは厳しい!!
    D325,           //ホイッスルがありました。
    D326,           //おぉっと、ファール!
    D317,           //完全に後ろからです、これはあぶない!!
    D318,           //フェアプレーを徹底してほしいです。
    D316,           //これは、あぶない危険すぎる!!
//イエロー
    D447,           //これは、イエローカードだぁ!!
    D448,           //おぉーと、イエローカードが出されました。
    D449,           //んー?イエローが出されましたか?
    D450,           //今のは、レッドでもおかしくないでしょう。
    D455,           //またもイエローカード、
//レッド
    D456,           //これは、レッドカードだぁ!!
    D457,           //おぉーと、レッドカードが出されました。
    D458,           //んー?このレッドは当然です。
    D459,           //おぉーと、レッドカードだぁ、これは厳しい
//コメント
        //カードが出なかったとき
    D324,           //ファールにはなりましたが、ここは止めるしかなかったでしょう。
    D319,           //ラフプレーは感心できません。
    D320,           //うま

0x13F6C00#

!
//-------------------------------------
//相手がリードしている
//1点ビハインド
    D032,           //(チーム名A)まだまだわかりません。
    D033,           //(チーム名A)一点のビハインド。
    D034,           //(チーム名B)一点のリードを保っています。
//1点ビハインドで自分無得点
    D035,           //(チーム名A)攻撃陣に奮起してほしい。
    D036,           //(チーム名A)これからです、期待しましょう。

//3点以内ビハインド
    D037,           //(チーム名A)集中力が切れかかっているようです。
    D038,           //(チーム名A)まだまだ諦めないでほしい。
    D041,           //(チーム名A)攻撃陣の動きに切れが見えません。
    D039,           //(チーム名A)二点のビハインド。
    D040,           //(チーム名A)三点のビハインド。
//3点以内ビハインドで自分無得点
    D042,           //(チーム名A)攻撃陣の動きが物足りなく感じます。
    D043,           //相手チームのディフェンダーの壁は厚い!!
    D044,           //(チーム名A)どうしたぁ!!

//5点以内ビハインド
    D045,           //大丈夫でしょうか、(チーム名A)
    D047,           //(チーム名A)どうもピリッとしません。
    D046,           //(チーム名B)一方的に試合を進めています。
//5点以内ビハ

0x13FA200#

#define CD_GRMODEL_I4   CD_GRMODEL_I3+GRMODELI3_SIZE        /*  GRDM_I4.BIN */
#define CD_GRMODEL_I5   CD_GRMODEL_I4+GRMODELI4_SIZE        /*  GRDM_I5.BIN */
#define CD_GRMODEL_J1   CD_GRMODEL_I5+GRMODELI5_SIZE        /*  GRDM_J1.BIN */
#define CD_GRMODEL_J2   CD_GRMODEL_J1+GRMODELJ1_SIZE        /*  GRDM_J2.BIN */
#define CD_GRMODEL_J3   CD_GRMODEL_J2+GRMODELJ2_SIZE        /*  GRDM_J3.BIN */
#define CD_GRMODEL_J4   CD_GRMODEL_J3+GRMODELJ3_SIZE        /*  GRDM_J4.BIN */
#define CD_GRMODEL_J5   CD_GRMODEL_J4+GRMODELJ4_SIZE        /*  GRDM_J5.BIN */
#define CD_GRMODEL_I1B  CD_GRMODEL_J5+GRMODELJ5_SIZE    /*  GRDM_I1B.BIN    */
#define CD_GRMODEL_I2B  CD_GRMODEL_I1B+GRMODELI1B_SIZE/*    GRDM_I2B.BIN    */
#define CD_GRMODEL_I3B  CD_GRMODEL_I2B+GRMODELI2B_SIZE/*    GRDM_I3B.BIN    */
#define CD_GRMODEL_I4B  CD_GRMODEL_I3B+GRMODELI3B_SIZE/*    GRDM_I4B.BIN    */
#define CD_GRMODEL_I5B  CD_GRMODEL_I4B+GRMODELI4B_SIZE/*    GRDM_I5B.BIN    */
/******************************************************************************
;       グラウンドキャラ
******************************************************************************/
#define GRCHRE1DR_SIZE  (138940-1)/BL+1
#define GRCHRE1DS_SIZE  (138940-1)/BL+1
#define GRCHRE1NR_SIZE  (146904-1)/BL+1
#define GRCHRE1NS_SIZE  (146904-1)/BL+1
#define GRCHRE2DR_SIZE  (139596-1)/BL+1
#define GRCHRE2DS_SIZE  (139596-1)/BL+1
#define GRCHRE2NR_SIZE  (147560-1)/BL+1
#define GRCHRE2NS_SIZE  (147560-1)/BL+1
#define GRCHRE3DR_SIZE  (142408-1)/BL+1
#define GRCHRE3DS_SIZE  (142408-1)/BL+1
#define GRCHRE3NR_SIZE  (150372-1)/BL+1
#define GRCHRE3NS_SIZE  (150372-1)/BL+1
#define GRC

0x13FC200#

R  CD_GRCHR_F5DS+GRCHRF5DS_SIZE    /*  GDC_F5NR.BIN    */
#define CD_GRCHR_F5NS   CD_GRCHR_F5NR+GRCHRF5NR_SIZE    /*  GDC_F5NS.BIN    */

#define CD_GRCHR_G1DR   CD_GRCHR_F5NS+GRCHRF5NS_SIZE    /*  GDC_G1DR.BIN    */
#define CD_GRCHR_G1DS   CD_GRCHR_G1DR+GRCHRG1DR_SIZE    /*  GDC_G1DS.BIN    */
#define CD_GRCHR_G1NR   CD_GRCHR_G1DS+GRCHRG1DS_SIZE    /*  GDC_G1NR.BIN    */
#define CD_GRCHR_G1NS   CD_GRCHR_G1NR+GRCHRG1NR_SIZE    /*  GDC_G1NS.BIN    */
#define CD_GRCHR_G2DR   CD_GRCHR_G1NS+GRCHRG1NS_SIZE    /*  GDC_G2DR.BIN    */
#define CD_GRCHR_G2DS   CD_GRCHR_G2DR+GRCHRG2DR_SIZE    /*  GDC_G2DS.BIN    */
#define CD_GRCHR_G2NR   CD_GRCHR_G2DS+GRCHRG2DS_SIZE    /*  GDC_G2NR.BIN    */
#define CD_GRCHR_G2NS   CD_GRCHR_G2NR+GRCHRG2NR_SIZE    /*  GDC_G2NS.BIN    */
#define CD_GRCHR_G3DR   CD_GRCHR_G2NS+GRCHRG2NS_SIZE    /*  GDC_G3DR.BIN    */
#define CD_GRCHR_G3DS   CD_GRCHR_G3DR+GRCHRG3DR_SIZE    /*  GDC_G3DS.BIN    */
#define CD_GRCHR_G3NR   CD_GRCHR_G3DS+GRCHRG3DS_SIZE    /*  GDC_G3NR.BIN    */
#define CD_GRCHR_G3NS   CD_GRCHR_G3NR+GRCHRG3NR_SIZE    /*  GDC_G3NS.BIN    */
#define CD_GRCHR_G4DR   CD_GRCHR_G3NS+GRCHRG3NS_SIZE    /*  GDC_G4DR.BIN    */
#define CD_GRCHR_G4DS   CD_GRCHR_G4DR+GRCHRG4DR_SIZE    /*  GDC_G4DS.BIN    */
#define CD_GRCHR_G4NR   CD_GRCHR_G4DS+GRCHRG4DS_SIZE    /*  GDC_G4NR.BIN    */
#define CD_GRCHR_G4NS   CD_GRCHR_G4NR+GRCHRG4NR_SIZE    /*  GDC_G4NS.BIN    */
#define CD_GRCHR_G5DR   CD_GRCHR_G4NS+GRCHRG4NS_SIZE    /*  GDC_G5DR.BIN    */
#define CD_GRCHR_G5DS   CD_GRCHR_G5DR+GRCHRG5DR_SIZE    /*  GDC_G5DS.BIN    */
#define CD_GRCHR_G5NR   CD_GRCHR_G5DS+GRCHRG5DS_SIZE    /*  GDC_G5NR.BIN    */
#define CD_GRCHR_G5NS   CD_GRCHR_G5NR+GRCHRG5NR_SIZE    /*  GDC_G5NS.

0x13FDA00#

L+1
#define MOD_23_SIZE     (74653-1)/BL+1
#define MOD_24_SIZE     (73125-1)/BL+1
#define MOD_25_SIZE     (81293-1)/BL+1
#define MOD_26_SIZE     (68725-1)/BL+1
#define MOD_27_SIZE     (70253-1)/BL+1
#define MOD_28_SIZE     (72445-1)/BL+1
#define MOD_29_SIZE     (81709-1)/BL+1
#define MOD_30_SIZE     (81401-1)/BL+1
#define MOD_31_SIZE     (81589-1)/BL+1
#define MOD_32_SIZE     (81049-1)/BL+1
#define MOD_33_SIZE     (66537-1)/BL+1
#define MOD_34_SIZE     (72109-1)/BL+1
#define MOD_35_SIZE     (64165-1)/BL+1
#define MOD_36_SIZE     (71541-1)/BL+1
#define MOD_37_SIZE     (66749-1)/BL+1
#define MOD_38_SIZE     (74997-1)/BL+1
#define MOD_39_SIZE     (71781-1)/BL+1
#define MOD_40_SIZE     (71293-1)/BL+1
#define MOD_41_SIZE     (81689-1)/BL+1
#define MOD_42_SIZE     (81449-1)/BL+1
#define MOD_43_SIZE     (81485-1)/BL+1
#endif

#define CD_P1_01_MODEL  13600                                               /*  MOD1_01.BIN */
#define CD_P1_02_MODEL  CD_P1_01_MODEL+MOD_01_SIZE  /*  MOD1_02.BIN */
#define CD_P1_03_MODEL  CD_P1_02_MODEL+MOD_02_SIZE  /*  MOD1_03.BIN */
#define CD_P1_04_MODEL  CD_P1_03_MODEL+MOD_03_SIZE  /*  MOD1_04.BIN */
#define CD_P1_05_MODEL  CD_P1_04_MODEL+MOD_04_SIZE  /*  MOD1_05.BIN */
#define CD_P1_06_MODEL  CD_P1_05_MODEL+MOD_05_SIZE  /*  MOD1_06.BIN */
#define CD_P1_07_MODEL  CD_P1_06_MODEL+MOD_06_SIZE  /*  MOD1_07.BIN */
#define CD_P1_08_MODEL  CD_P1_07_MODEL+MOD_07_SIZE  /*  MOD1_08.BIN */
#define CD_P1_09_MODEL  CD_P1_08_MODEL+MOD_08_SIZE  /*  MOD1_09.BIN */
#define CD_P1_10_MODEL  CD_P1_09_MODEL+MOD_09_SIZE  /*  MOD1_10.BIN */
#define CD_P1_11_MODEL  CD_P1_10_MODEL+MOD_10_SIZE  /*  MOD1_11.BIN

0x13FFA00#

CD_NAME_08 CD_NAME_07+JNAME07_SIZE //  NAME_08.BIN */
#define CD_NAME_09  CD_NAME_08+JNAME08_SIZE //  NAME_09.BIN */
#define CD_NAME_10  CD_NAME_09+JNAME09_SIZE //  NAME_10.BIN */
#define CD_NAME_11  CD_NAME_10+JNAME10_SIZE //  NAME_11.BIN */
#define CD_NAME_12  CD_NAME_11+JNAME11_SIZE //  NAME_12.BIN */
#define CD_NAME_13  CD_NAME_12+JNAME12_SIZE //  NAME_13.BIN */
#define CD_NAME_14  CD_NAME_13+JNAME13_SIZE //  NAME_14.BIN */
#define CD_NAME_15  CD_NAME_14+JNAME14_SIZE //  NAME_15.BIN */
#define CD_NAME_16  CD_NAME_15+JNAME15_SIZE //  NAME_16.BIN */
#define CD_NAME_17  CD_NAME_16+JNAME16_SIZE //  NAME_17.BIN */
#define CD_NAME_18  CD_NAME_17+JNAME17_SIZE //  NAME_18.BIN */
#define CD_NAME_19  CD_NAME_18+JNAME18_SIZE //  NAME_19.BIN */
#define CD_NAME_20  CD_NAME_19+JNAME19_SIZE //  NAME_20.BIN */
#define CD_NAME_21  CD_NAME_20+JNAME20_SIZE //  NAME_21.BIN */
#define CD_NAME_22  CD_NAME_21+JNAME21_SIZE //  NAME_22.BIN */
#define CD_NAME_23  CD_NAME_22+JNAME22_SIZE //  NAME_23.BIN */
#define CD_NAME_24  CD_NAME_23+JNAME23_SIZE //  NAME_24.BIN */


//98.8.21   中山
#define CD_R_NAME       17100                                       //JNAME.BIN
#define R_NAME_SIZE (65060-1)/BL+1

//98.9.18   中山  看板テクスチャ用
#define CD_KANBAN       17200                                       //KANBAN.BIN
#define KANBAN_SIZE (14812-1)/BL+1
#define CD_JKANBAN  17220                                       //J_KANBAN.BIN
#define JKANBAN_SIZE    (11956-1)/BL+1
#define CD_NKANBAN  17240                                       //N_KANBAN.BIN
#define NKANBAN_SIZE    (15760-1)/BL+1

/******************************************************************************
;
;       メイ

0x1401A00#

SIZE   (38501-1)/BL+1
#define GRMODELJ5_SIZE  (40293-1)/BL+1

#define CD_GRMODEL_E1   12800                                                       /*  GRDM_E1.BIN */
#define CD_GRMODEL_E2   CD_GRMODEL_E1+GRMODELE1_SIZE        /*  GRDM_E2.BIN */
#define CD_GRMODEL_E3   CD_GRMODEL_E2+GRMODELE2_SIZE        /*  GRDM_E3.BIN */
#define CD_GRMODEL_E4   CD_GRMODEL_E3+GRMODELE3_SIZE        /*  GRDM_E4.BIN */
#define CD_GRMODEL_E5   CD_GRMODEL_E4+GRMODELE4_SIZE        /*  GRDM_E5.BIN */
#define CD_GRMODEL_F1   CD_GRMODEL_E5+GRMODELE5_SIZE        /*  GRDM_F1.BIN */
#define CD_GRMODEL_F1N  CD_GRMODEL_F1+GRMODELF1_SIZE    /*  GRDM_F1N.BIN    */
#define CD_GRMODEL_F2   CD_GRMODEL_F1N+GRMODELF1N_SIZE  /*  GRDM_F2.BIN */
#define CD_GRMODEL_F2N  CD_GRMODEL_F2+GRMODELF2_SIZE    /*  GRDM_F2N.BIN    */
#define CD_GRMODEL_F3   CD_GRMODEL_F2N+GRMODELF2N_SIZE  /*  GRDM_F3.BIN */
#define CD_GRMODEL_F3N  CD_GRMODEL_F3+GRMODELF3_SIZE    /*  GRDM_F3N.BIN    */
#define CD_GRMODEL_F4   CD_GRMODEL_F3N+GRMODELF3N_SIZE  /*  GRDM_F4.BIN */
#define CD_GRMODEL_F4N  CD_GRMODEL_F4+GRMODELF4_SIZE    /*  GRDM_F4N.BIN    */
#define CD_GRMODEL_F5   CD_GRMODEL_F4N+GRMODELF4N_SIZE  /*  GRDM_F5.BIN */
#define CD_GRMODEL_F5N  CD_GRMODEL_F5+GRMODELF5_SIZE    /*  GRDM_F5N.BIN    */
#define CD_GRMODEL_G1   CD_GRMODEL_F5N+GRMODELF5N_SIZE  /*  GRDM_G1.BIN */
#define CD_GRMODEL_G2   CD_GRMODEL_G1+GRMODELG1_SIZE        /*  GRDM_G2.BIN */
#define CD_GRMODEL_G3   CD_GRMODEL_G2+GRMODELG2_SIZE        /*  GRDM_G3.BIN */
#define CD_GRMODEL_G4   CD_GRMODEL_G3+GRMODELG3_SIZE        /*  GRDM_G4.BIN */
#define CD_GRMODEL_G5   CD_GRMODEL_G4+GRMODELG4_SIZE        /*  GRDM_G5.BIN */
#define CD_GRMODEL_H1   CD_GRMODEL_G5+GRMODELG5_SIZE        /*  

0x1403A00#

DR+GRCHRE3DR_SIZE  /*  GDC_E3DS.BIN    */
#define CD_GRCHR_E3NR   CD_GRCHR_E3DS+GRCHRE3DS_SIZE    /*  GDC_E3NR.BIN    */
#define CD_GRCHR_E3NS   CD_GRCHR_E3NR+GRCHRE3NR_SIZE    /*  GDC_E3NS.BIN    */
#define CD_GRCHR_E4DR   CD_GRCHR_E3NS+GRCHRE3NS_SIZE    /*  GDC_E4DR.BIN    */
#define CD_GRCHR_E4DS   CD_GRCHR_E4DR+GRCHRE4DR_SIZE    /*  GDC_E4DS.BIN    */
#define CD_GRCHR_E4NR   CD_GRCHR_E4DS+GRCHRE4DS_SIZE    /*  GDC_E4NR.BIN    */
#define CD_GRCHR_E4NS   CD_GRCHR_E4NR+GRCHRE4NR_SIZE    /*  GDC_E4NS.BIN    */
#define CD_GRCHR_E5DR   CD_GRCHR_E4NS+GRCHRE4NS_SIZE    /*  GDC_E5DR.BIN    */
#define CD_GRCHR_E5DS   CD_GRCHR_E5DR+GRCHRE5DR_SIZE    /*  GDC_E5DS.BIN    */
#define CD_GRCHR_E5NR   CD_GRCHR_E5DS+GRCHRE5DS_SIZE    /*  GDC_E5NR.BIN    */
#define CD_GRCHR_E5NS   CD_GRCHR_E5NR+GRCHRE5NR_SIZE    /*  GDC_E5NS.BIN    */

#define CD_GRCHR_F1DR   CD_GRCHR_E5NS+GRCHRE5NS_SIZE    /*  GDC_F1DR.BIN    */
#define CD_GRCHR_F1DS   CD_GRCHR_F1DR+GRCHRF1DR_SIZE    /*  GDC_F1DS.BIN    */
#define CD_GRCHR_F1NR   CD_GRCHR_F1DS+GRCHRF1DS_SIZE    /*  GDC_F1NR.BIN    */
#define CD_GRCHR_F1NS   CD_GRCHR_F1NR+GRCHRF1NR_SIZE    /*  GDC_F1NS.BIN    */
#define CD_GRCHR_F2DR   CD_GRCHR_F1NS+GRCHRF1NS_SIZE    /*  GDC_F2DR.BIN    */
#define CD_GRCHR_F2DS   CD_GRCHR_F2DR+GRCHRF2DR_SIZE    /*  GDC_F2DS.BIN    */
#define CD_GRCHR_F2NR   CD_GRCHR_F2DS+GRCHRF2DS_SIZE    /*  GDC_F2NR.BIN    */
#define CD_GRCHR_F2NS   CD_GRCHR_F2NR+GRCHRF2NR_SIZE    /*  GDC_F2NS.BIN    */
#define CD_GRCHR_F3DR   CD_GRCHR_F2NS+GRCHRF2NS_SIZE    /*  GDC_F3DR.BIN    */
#define CD_GRCHR_F3DS   CD_GRCHR_F3DR+GRCHRF3DR_SIZE    /*  GDC_F3DS.BIN    */
#define CD_GRCHR_F3NR   CD_GRCHR_F3DS+GRCHRF3DS_SIZE    /*  GDC_F3NR.BIN    */
#defi

0x1405E00#

EL+MOD_03_SIZE /*  MOD1_04.BIN */
#define    CD_P1_05_MODEL  CD_P1_04_MODEL+MOD_04_SIZE  /*  MOD1_05.BIN */
#define    CD_P1_06_MODEL  CD_P1_05_MODEL+MOD_05_SIZE  /*  MOD1_06.BIN */
#define    CD_P1_07_MODEL  CD_P1_06_MODEL+MOD_06_SIZE  /*  MOD1_07.BIN */
#define    CD_P1_08_MODEL  CD_P1_07_MODEL+MOD_07_SIZE  /*  MOD1_08.BIN */
#define    CD_P1_09_MODEL  CD_P1_08_MODEL+MOD_08_SIZE  /*  MOD1_09.BIN */
#define    CD_P1_10_MODEL  CD_P1_09_MODEL+MOD_09_SIZE  /*  MOD1_10.BIN */
#define    CD_P1_11_MODEL  CD_P1_10_MODEL+MOD_10_SIZE  /*  MOD1_11.BIN

0x1407A00#

CD_NAME_08 CD_NAME_07+JNAME07_SIZE //  NAME_08.BIN */
#define CD_NAME_09  CD_NAME_08+JNAME08_SIZE //  NAME_09.BIN */
#define CD_NAME_10  CD_NAME_09+JNAME09_SIZE //  NAME_10.BIN */
#define CD_NAME_11  CD_NAME_10+JNAME10_SIZE //  NAME_11.BIN */
#define CD_NAME_12  CD_NAME_11+JNAME11_SIZE //  NAME_12.BIN */
#define CD_NAME_13  CD_NAME_12+JNAME12_SIZE //  NAME_13.BIN */
#define CD_NAME_14  CD_NAME_13+JNAME13_SIZE //  NAME_14.BIN */
#define CD_NAME_15  CD_NAME_14+JNAME14_SIZE //  NAME_15.BIN */
#define CD_NAME_16  CD_NAME_15+JNAME15_SIZE //  NAME_16.BIN */
#define CD_NAME_17  CD_NAME_16+JNAME16_SIZE //  NAME_17.BIN */
#define CD_NAME_18  CD_NAME_17+JNAME17_SIZE //  NAME_18.BIN */
#define CD_NAME_19  CD_NAME_18+JNAME18_SIZE //  NAME_19.BIN */
#define CD_NAME_20  CD_NAME_19+JNAME19_SIZE //  NAME_20.BIN */
#define CD_NAME_21  CD_NAME_20+JNAME20_SIZE //  NAME_21.BIN */
#define CD_NAME_22  CD_NAME_21+JNAME21_SIZE //  NAME_22.BIN */
#define CD_NAME_23  CD_NAME_22+JNAME22_SIZE //  NAME_23.BIN */
#define CD_NAME_24  CD_NAME_23+JNAME23_SIZE //  NAME_24.BIN */


//98.8.21   中山
#define CD_R_NAME       17100                                       //JNAME.BIN
#define R_NAME_SIZE (65028-1)/BL+1

//98.9.18   中山  看板テクスチャ用
#define CD_KANBAN       17200                                       //KANBAN.BIN
#define KANBAN_SIZE (15468-1)/BL+1
#define CD_JKANBAN  17220                                       //J_KANBAN.BIN
#define JKANBAN_SIZE    (11952-1)/BL+1
#define CD_NKANBAN  17240                                       //N_KANBAN.BIN
#define NKANBAN_SIZE    (15012-1)/BL+1

/******************************************************************************
;
;       メイ

0x1409400#

   2.24*/
#define SD_AISATU13A    SD_AI+24    /*ご覧下さい。何人かのサポーターが、この夕凪をかき回す様に、                                                            */
#define SD_AISATU13B    SD_AI+25    /*旗を振っています。熱い!こんばんは、ジョン・カビラです。                                                              */
#define SD_AISATU13C    SD_AI+26    /*                                                                                                                  2.24*/
#define SD_AISATU14A    SD_AI+27    /*こんばんは、ジョン・カビラです。雨がスタジアム全体を包んでいます。                                                    */
#define SD_AISATU14B    SD_AI+28    /*サポートするチームによって、これが歓喜の涙になるのか、それとも絶望の涙になるのか。                                    */
#define SD_AISATU14C    SD_AI+29    /*                                                                                                                  2.24*/
#define SD_AISATU15A    SD_AI+30    /*サッカーファン

0x140B400#

---*/
/*      試合内容紹介/リーグ戦(選手入場シーン)                                                 */
/*----------------------------------------------------------------------------------------------*/
#define     SD_SETU00   SD_ETC1     /*          インターナショナルリーグ                        */
#define     SD_SETU01   SD_ETC1+1   /*            1節                                          */
#define     SD_SETU02   SD_ETC1+2   /*            2節                                          */
#define     SD_SETU03   SD_ETC1+3   /*            3節                                          */
#define     SD_SETU04   SD_ETC1+4   /*            4節                                          */
#define     SD_SETU05   SD_ETC1+5   /*            5節                                          */
#define     SD_SETU06   SD_ETC1+6   /*            6節                                          */
#define     SD_SETU07   SD_ETC1+7   /*            7節                                          */
#define     SD_SE

0x140D200#

*選手入場です。成長著しいこのチームがどの様なサッカーを見せてくれるか      */
#define     SD_KOFF223B SD_KOFF2+30 /*非常に楽しみです。                                                        */
#define     SD_KOFF224A SD_KOFF2+31 /*45年目の初挑戦、今ここに花開きます。                                    */
#define     SD_KOFF224B SD_KOFF2+32 /*世界が舞台だ。走れ、青い稲妻!                                            */
#define     SD_KOFF225A SD_KOFF2+33 /*ドーハの涙はもう知らない。新しい青い鎧を身にまといし日本男児。            */
#define     SD_KOFF225B SD_KOFF2+34 /*今度は歓喜の涙を流す時が来た。                                            */

/*----------------------------------------------------------------------------------------------*/
/*      チームのユニフォーム紹介(インターナショナルカップ決勝戦専用)                          */
/*----------------------------------------------------------------------------------------------*/
#define     SD_KOFF300  SD_KOFF2+35 /*  祖国の名誉と己のプライドを賭け、最後の戦いに挑みます。                                      */
#define     SD_KOFF301  SD_KOFF2+36 /*  選ばれし者達の最高の舞台が幕をあけます。                                                    */
#define     SD_KOFF302  SD_KOFF2+37 /*  怒涛の様に渦巻く声援を受け、世界最高峰の男達がピッチに姿を現します。                        */
#define     SD_KOFF303  SD_KOFF2+38 /*  全てを勝ち抜いてきた強者共がピッチにその勇姿を見せています。                                */
#define     SD_KOFF304  SD_KOFF

0x1410400#

 パス(ヒールパス)                                          */
#define     SD_PASS180  SD_PASS+35  /*  ヒールパス。                                            */
#define     SD_PASS181  SD_PASS+36  /*  ノールックでバックパス。                                */
#define     SD_PASS182  SD_PASS+37  /*  変幻自在のパスワーク。                                  */
#define     SD_PASS183  SD_PASS+38  /*  味方をも欺くノールックパス。                            */
#define     SD_PASS184  SD_PASS+39  /*  圧巻のトリックフェイク!                                */
/*                                  パス(ヘッドパス)                                          */
#define     SD_PASS190  SD_PASS+40  /*  ヘッドで落とす。                                        */
#define     SD_PASS191  SD_PASS+41  /*  ヘッドで落として。                                      */
#define     SD_PASS192  SD_PASS+42  /*  ヘッドで繋いで。                                        */
/*                                  パス(パスを流した時) 

0x1413400#

・閧ワした。                                   */
/*                                  ゴール!の後に続くコメント(1点リード)                                            */
#define     SD_GOAL330  SD_GOAL+30  /* 「チーム名」1点リード!                                                         */
#define     SD_GOAL331  SD_GOAL+31  /* 「チーム名」差をつけられました。                                                 */
/*                                  ゴール!の後に続くコメント(後半40分~ロスタイムの勝ち越し)                        */
#define     SD_GOAL340  SD_GOAL+32  /* クゥ~~~!これが勝利を呼び込む一撃だ!                                         */
#define     SD_GOAL341  SD_GOAL+33  /* 土壇場になってもこの勝負強さ!一対何なのか。執念でゴールをもぎとりました!       */
#define     SD_GOAL342  SD_GOAL+34  /* 人間より高い意志の存在を感じるこのゴール、正に奇跡!                             */
/*                                  ゴール!の後に続くコメント(後半40分~ロスタイムの勝ち越される)      

0x1417A00#

                      */
#define SD_INP702   SD_INP+35   /*  これから、反撃だ!                                          */
#define SD_INP703   SD_INP+36   /*  カウンターアタックか!?                                    */

/*----------------------------------------------------------------------------------------------*/
/*                      デイフェンス    クリア                                                  */
/*----------------------------------------------------------------------------------------------*/
/*                              クリア(大きいクリア)                                          */
#define SD_DEFEN100 SD_DEF      /*  大きく前方にクリア。                                        */
#define SD_DEFEN101 SD_DEF+ 1   /*  大きくクリアしました。                                      */
/*                              小さいクリア                                                    */
#define SD_DEFEN110 SD_DEF+ 2   /*  これは危険なクリア。                                        */
#define SD_DEFEN111 SD_DEF+ 3   /*  クリアが小さいぞ。                                          */
/*                              ヘディングでクリア                                              */
#define SD_DEFEN120 SD_DEF+ 4   /*  ヘディングでクリア。                                        */
#define SD_DEFEN121 SD_DEF+ 5   /*  ナイス、ヘディング!                                        */
#define SD_DEFEN122 SD_DEF+ 6   /*  ナイスカバリング                                            */
/*      

0x1419600#

おっ、ショートコーナー!                                    */
#define SD_SETP123  SD_SETP+11  /*  ニアポストを狙った!                                        */
#define SD_SETP124  SD_SETP+12  /*  ファーポストのスペースを狙った!                            */
/*                              コーナーキック蹴った時のコメント(ゴールを狙う)                */
#define SD_SETP130  SD_SETP+13  /*  ゴールマウスに吸い込まれるのか!                            */
#define SD_SETP131  SD_SETP+14  /*  おおっと、直

0x141CA00#

        */
/*----------------------------------------------------------------------------------------------*/
/*                              時間経過(1分経過)                                            */
#define SD_JIKAN100 SD_JIKAN    /*  両チーム相手の出方をうかがっているようです。                */
#define SD_JIKAN101 SD_JIKAN+ 1 /*  さあ、立ち上がりは慎重に攻めたいところ。                    */
#define SD_JIKAN102 SD_JIKAN+ 2 /*      静かな滑り出しです。                                    */
/*                              時間経過(5分経過)                                            */
#define SD_JIKAN110 SD_JIKAN+ 3 /*      5分経過                                                */
#define SD_JIKAN111 SD_JIKAN+ 4 /*      5分経過、静かな立ち上がりです。                        */
#define SD_JIKAN112 SD_JIKAN+ 5 /*      手元の時計は5分を過ぎました。                          */
/*                              時間経過(10分経過)                                          */
#define SD_JIKAN120 SD_JIKAN+ 6 /*      10分経過。依然として大きな動きはありません。          */
#define SD_JIKAN121 SD_JIKAN+ 7 /*      10分過ぎて、序盤から激しいゲームです。                */
#define SD_JIKAN122 SD_JIKAN+ 8 /*      そろそろ10分。                                        */
/*                              時間経過(15分経過)                                          */
#define SD_JIKAN130 SD_JIKAN+ 9 /*      15分経過                                              */
#define SD_JIKAN131 SD_J

0x1420400#

  攻守のアンサンブルが巧くいっているようです。                */
#define SD_TTEN252  SD_TTEN+79  /*  素晴らしい試合運びです。                                    */
#define SD_TTEN253  SD_TTEN+80  /*  このままいけば、栄光を勝ち取る事が出来る。                  */
/*                              上に続く実況者のコメント(接戦/同点)                           */
#define SD_TTEN260  SD_TTEN+81  /*  そろそろ 危険な時間帯になりましたかぁ。                    */
#define SD_TTEN261  SD_TTEN+82  /*  集中力持続しています。                                      */
#define SD_TTEN262  SD_TTEN+83  /*  勝利へのモチベーションを失わずに行って欲しいですね。        */
#define SD_TTEN263  SD_TTEN+84  /*  そろそろ 危険な時間帯に入ります。                          */
/*                              上に続く実況者のコメント(無得点/追加点がなかなか入らない時)   */
#define SD_TTEN270  SD_TTEN+85  /*  いい形には成るんですが、得点に結びつける事が出来ません。    */
#define SD_TTEN271  SD_TTEN+86  /*  両チームとも疲れが目立

0x1427200#

出場権を得ました。                                             2.24   */
#define SD_END220B  SD_END+32   /* 220A 「チーム名」 220B                                                                                                2.24   */
#define SD_END221   SD_END+33   /*「チーム名」見事、ワールドカップ本戦への出場権を得ました。                                                                    */
#define SD_END222   SD_END+34   /*「チーム名」辛らくも勝ちましたが、なんとかワールドカップ本戦出場を決めました。                                         2.24   */
#define SD_END222A  SD_END+34   /*「チーム名」辛らくも勝ちましたが、なんとかワールドカップ本戦出場を決めました。                                         2.24   */
#define SD_END222B  SD_END+35   /* 222A 「チーム名」 222B                                                                                                2.24   */
#define SD_END223   SD_END+36   /*「チーム名」予戦試合全てを消化する前に、予戦落ちが決定しました。                                                       2.24   */
#define SD_END223A  SD_END+36   /*「チーム名」予戦試合全てを消化する前に、予戦落ちが決定しました。                                                       2.24   */
#define SD_END223B  SD_END+37   /* 223A 「チーム名」 223B                                                                                                2.24   */
#define SD_END224   SD_END+38   /*「チーム名」惜しくも本戦出場権を逃しました。                                                                        

0x142AE00#

121  SD_KOFF+28  /*予選リーグ第1節です。                                                    */
#define SD_KOFF122  SD_KOFF+29  /*予選リーグ第2節です。                                                    */
#define SD_KOFF123  SD_KOFF+30  /*予選リーグ第3節です。                                                    */
#define SD_KOFF124  SD_KOFF+31  /*予選リーグ第4節です。                                                    */
#define SD_KOFF125  SD_KOFF+32  /*予選リーグ第5節です。                       

0x142E200#

-----*/
/*          キックオフ                                                                          */
/*----------------------------------------------------------------------------------------------*/
/*                      キックオフ直前/試合開始のセリフ(センターサークルをズームアップ)       */
#define     SD_KOFF10   SD_KOFF2+53 /*  さぁ、キックオフです。                                  */
#define     SD_KOFF11   SD_KOFF2+54 /*  試合開始の笛です。                                      */
#define     SD_KOFF12   SD_KOFF2+55 /*  キックオフの笛です。                                    */
#define     SD_KOFF13   SD_KOFF2+56 /*  両チーム、ピッチに散りました。さあ、キックオフです。    */
#define     SD_KOFF14   SD_KOFF2+57 /*  さあ、試合開始です。                                    */
#define     SD_KOFF15   SD_KOFF2+58 /*  さあ、前半戦が始まります。                              */

/*----------------------------------------------------------------------------------------------*/
/*          キックオフ直前/試合開始のセリフ(インターナショナルカップ決勝時)                   */
/*----------------------------------------------------------------------------------------------*/
#define     SD_KOFF500  SD_KOFF2+59 /*  栄光をつかむのはどちらのチームなのか?地響きのような声援を受け今、運命のキックオフ!    */
#define     SD_KOFF501  SD_KOFF2+60 /*  大会屈指の好カード、いよいよ幕が切って落とされます。                                    */
#define     SD_KOFF502  SD_KOFF2+61 /*  頂点を決める戦いの火

0x1438200#

            タッチラインへクリア                                            */
#define SD_DEFEN140 SD_DEF+11   /*  タッチラインへ逃れた。                                      */
#define SD_DEFEN141 SD_DEF+12   /*  ボールを外に出した。                                        */
#define SD_DEFEN142 SD_DEF+13   /*  外へ蹴り出した。                                            */
#define SD_DEFEN143 SD_DEF+14   /*  ボールを外へ蹴り出した                                      */
/*                              スライディングでクリア                                          */
#define SD_DEFEN150 SD_DEF+15   /*  果敢にスライディング!                                      */
#define SD_DEFEN151 SD_DEF+16   /*  身を呈してのスライディング!                                */
#define SD_DEFEN152 SD_DEF+17   /*  スライディング!                                            */

/*----------------------------------------------------------------------------------------------*/
/*                          センタリング                                                        */
/*----------------------------------------------------------------------------------------------*/
#define SD_INP800   SD_INP2     /* クロスボール                                                 */
#define SD_INP801   SD_INP2+ 1  /*  おっ、センタリング!                                        */
#define SD_INP802   SD_INP2+ 2  /*  ゴール前ひとりいる!                                        */
#define SD_INP803   SD_INP2+ 3  /*  ゴール前にふたりい

0x143BC00#

が決まる)                                */
#define SD_SETP250  SD_SETP2+33 /*      ファンタスティック!                                            */
#define SD_SETP251  SD_SETP2+34 /*      直接ねじこんだ!                                                */
#define SD_SETP252  SD_SETP2+35 /*      芸術的なフリーキック!                                          */
#define SD_SETP253  SD_SETP2+36 /*      なんてアーティスティックな!                                    */
#define SD_SETP254  SD_SETP2+37 /*      ゴールマウスへ一直線!                                          */
#define SD_SETP255  SD_SETP2+38 /*      マーヴェラス!                                                  */
#define SD_SETP256  SD_SETP2+39 /*      これは一言。アート!                                            */
/*                              ペナルティーキックが与えられた瞬間(試合中)                            */
#define SD_SETP300  SD_SETP2+40 /*      ペナルティキックが与えられました。                              */
#defin

0x143EE00#

efine SD_TTEN143  SD_TTEN+26  /*  6対3                                                      */
#define SD_TTEN144  SD_TTEN+27  /*  7対3                                                      */
#define SD_TTEN150  SD_TTEN+28  /*  4対4 同点です。                                          */
#define SD_TTEN151  SD_TTEN+29  /*  5対4                                                      */
#define SD_TTEN152  SD_TTEN+30  /*  6対4                                                      */
#define SD_TTE

0x1445C00#

圧勝です。                                                                                                                    */
#define SD_END113   SD_END+ 9   /*大量得点による一方的な試合展開でした。                                                                                        */
/*                              1点しか点差がない場合                                                                                                          */
#define SD_END120   SD_END+10   /*1点を守りきりました。                                                                                                        */
#define SD_END121   SD_END+11   /*接戦をものにしています。                                                                                                      */
#define SD_END122   SD_END+12   /*1点を死守しての勝利です。                                                                                                    */
/*                              僅差でいい試合だった時(負け)            

0x1449E00#

チャンス  */
#define SD_KANSEI5              1310        /* 歓声 得点       */

#define SD_KANSEIS              1312        /* 通常歓声停止  */
#define SD_KANSEI6              1313        /* ゴール         */
#define SD_KANSEI7              1314        /* ゴール         */
#define SD_KANSEI8              1314        /* ブー           */
#define SD_SHOOT3                   1316        /*新シュート音      */
#define SD_PEE                      1316
#define SD_SHOOT4                   1317        /*新シュート音      */
#define SD_DON                      1317
#define SD_SHOOT5                   1318        /*