the cutting room mirror

Uncompiled Source Code

This is a sub-page of Bishi Bashi Special.

Both the Japanese and European releases of the game contain source code fragments within their CD_DATA archives.

(Source: tikal.)

Bishi Bashi Special (JP)#

These fragments can be found in CD_DATA.BIN.

0x568200

 LEN
 800C44F8  SPD
 800C44FC  ACC0
 800C4500  HAN0
 800C4502  _SPEED_BSS_ORGEND
 800C4502  _SPEED_BSS_OBJEND
 800C4504  _SPEED_ORGEND
 800C4504  _SPEED_OBJEND
 800C4504  _SPEED_DTORS_ORGEND
 800C4504  _SPEED_DTORS_ORG
 800C4504  _SPEED_DTORS_OBJEND
 800C4504  _SPEED_DTORS_OBJ
 800C4504  _SPEED_CTORS_ORGEND
 800C4504  _SPEED_CTORS_ORG
 800C4504  _SPEED_CTORS_OBJEND
 800C4504  _SPEED_CTORS_OBJ
 800C4528  _DASSOU_TEXT_ORGEND
 800C4528  _DASSOU_TEXT_OBJEND
 800C4528  _DASSOU_DATA_ORG
 800C4528  _DASSOU_DATA_OBJ
 800C4554  _DOTTI_SDATA_ORGEND
 800C4554  _DOTTI_SDATA_ORG
 800C4554  _DOTTI_SDATA_OBJEND
 800C4554  _DOTTI_SDATA_OBJ
 800C4554  _DOTTI_SBSS_ORGEND
 800C4554  _DOTTI_SBSS_ORG
 800C4554  _DOTTI_SBSS_OBJEND
 800C4554  _DOTTI_SBSS_OBJ
 800C4554  _DOTTI_DATA_ORGEND
 800C4554  _DOTTI_DATA_OBJEND
 800C4554  _DOTTI_BSS_ORG
 800C4554  _DOTTI_BSS_OBJ
 800C457C  _DOTTI_ORGEND
 800C457C  _DOTTI_OBJEND
 800C457C  _DOTTI_DTORS_ORGEND
 800C457C  _DOTTI_DTORS_ORG
 800C457C  _DOTTI_DTORS_OBJEND
 800C457C  _DOTTI_DTORS_OBJ
 800C457C  _DOTTI_CTORS_ORGEND
 800C457C  _DOTTI_CTORS_ORG
 800C457C  _DOTTI_CTORS_OBJEND
 800C457C  _DOTTI_CTORS_OBJ
 800C457C  _DOTTI_BSS_ORGEND
 800C457C  _DOTTI_BSS_OBJEND
 800C458C  AMIDA_MANU
 800C467C  _MAZE_TEXT_ORGEND
 800C467C  _MAZE_TEXT_OBJEND
 800C467C  _MAZE_DATA_ORG
 800C467C  _MAZE_DATA_OBJ
 800C46EC  _HANABI_SDATA_ORGEND
 800C46EC  _HANABI_SDATA_ORG
 800C46EC  _HANABI_SDATA_OBJEND
 800C46EC  _HANABI_SDATA_OBJ
 800C46EC  _HANABI_SBSS_ORG

0x721C00

pレットデータアドレス */
    0,                      /* ファイルサイズ */
    512, 508,               /* テクスチャの転送先座標 */
     16,   4,               /* テクスチャのサイズ */
    512, 510,               /* パレットの転送先座標 */
      0,                    /* 初期パレット番号 */
      2,                    /* 16bit CLUT */
      -1                    /* 半透明レート */
  },
};
static OBJ_DATA_T obj_entry[]={
// アイコン群
 {  0,  0,  0, 136, 64,896,  0,  0,482, 1,  0, -1  },   // みんなでビシバシ却下!
 {  0,  0,  0, 240, 64,512,  0,  0,480, 1,  0, -1  },   // みんなでビシバシ
 {  0,  0,  0, 240, 64,512, 64,  0,480, 1,  0, -1  },   // 1人でビシバシ
 {  0,  0,  0, 240, 64,512,128,  0,480, 1,  0, -1  },   // OPTION
 {  0,  0,  0, 128, 32,768,144,  0,480, 1,  0, -1  },   // 参加人数
 {  0,  0,  0, 128, 32,768,176,  0,480, 1,  0, -1  },   // 対戦方式
 {  0,  0,  0, 128, 32,832,144,  0,480, 1,  0, -1  },   // 対戦数
 {  0,  0,  0, 128, 32,832,176,  0,480, 1,  0, -1  },   // セレクト方式
 {  0,  0,  0,  63, 32,640,  0,  0,480, 1,  0, -1  },   // 2人
 {  0,  0,  0,  63, 32,672,  0,  0,480, 1,  0, -1  },   // 

Bishi Bashi Special 2 (JP)#

This fragment can be found in CD_DATA.BIN, starting from offset 0x450200.

raph.h"
#include "u_games.h"
#include "r_stginf.h"
#include "r_pseuio.h"
#include "r_comres.h"
#include "s_disp.h"
#include "s_io.h"
#include "s_etc.h"
#include "u_map.h"

#include "sd.h"
#include "spu.h"
#include "spu_lbl.h"

#include "ug_dash.h"

/*===================================================================*/
/* static prottype                                                   */
/*===================================================================*/
static DASH_T w;

static void by_player(short p);                 /* プレイヤー入力の整理 */
static void action_common(void);                /* 共通部分の処理 */
static void action_dash(short p);               /* ゲームの中身 */
static void disp_dash(short p);                 /* 表示関数 */
static void by_cpu(short p);                    /* CPU思考ルーチン */
static void clear_dash_work(void);              /* ワーククリア */
static void running_set(short p);               /* 走るパターンをセット  */

/*===================================================================*/
/* program section                                                   */
/*===================================================================*/

/* ----------------------------------------------------------------- */
/* --------------------------- 初期化関数 -------------------------- */
/* ----------------------------------------------------------------- */
short dash_init(void) {
  short p;

  sd_cmd(SPU_TRANS(VAB_DASH, TRANS_NEW));   /* ダッシュゲームのサウンド */
  sd_cmd(SPU_TRANS(VAB_OK_NG, TRANS_ADD));  /* 

Bishi Bashi Special (EU) - Super Bishi Bashi#

These fragments can be found in CD_DATA1.BIN.

0x4B7D88

3                          #
#####################################################
*/
#define    SD_SE05_TITLE1      (I_SE_CODE+0x0043277F)      /*

0x68CE00

x04c, 0x04f, 0x051, 0x053
  },
  { /* 92 */
    0x03c, 0x03d, 0x03f, 0x041, 0x043, 0x044, 0x046, 0x048,
    0x049, 0x04b, 0x04c, 0x04c, 0x04d, 0x050, 0x052, 0x053
  },
  { /* 93 */
    0x03c, 0x03d, 0x03f, 0x041, 0x043, 0x045, 0x047, 0x048,
    0x04a, 0x04b, 0x04c, 0x04d, 0x04d, 0x050, 0x052, 0x054
  },
  { /* 94 */
    0x03d, 0x03e, 0x040, 0x042, 0x044, 0x045, 0x047, 0x049,
    0x04a, 0x04c, 0x04d, 0x04d, 0x04e, 0x051, 0x053, 0x054
  },
  { /* 95 */
    0x03d, 0x03e, 0x040, 0x042, 0x044, 0x046, 0x048, 0x049,
    0

0x694400

                   /* アニメーションパターンデータのセット */
      obj_pos_set(ANS_PLATE_TOP, i, ANS_PLATE_X + i * SCORE_BD_W,
                    ANS_PLATE_Y, 0);    /* 表示座標のセット */
      OBJ_DISP_OFF(ANS_PLATE_TOP, i);   /* 表示禁止 */

      w->font_count[i] = ANS_PLATE_TOP + 1;
      if (GET_PLAYER_STATUS(i)) {
        /* プレイヤーが存在している時 */

        /* スコアボードの表示 */
        obj_set_2d2(w->font_count[i], i,
                            0x1000, 0x1000, 0, 12, 128, &obj_SCORE_OBJ);
                                            /* スプライトの登録 */
        obj_anime_set(w->font_count[i], i, score_board_data);
                                /* アニメーションパターンデータのセット */
        obj_pos_set(w->font_count[i], i,
                SCORE_BD_X + SCORE_BD_W * i, SCORE_BD_Y, 0);
                                            /* 表示座標のセット */
        w->font_count[i]++;
      }
      disp_pin_indicater(i);    /* ピンインジケータの表示 */
    }
    w->step++;
    break;

  case 1:           /*  ---- 得点の初期化 ---- */
    /* 得点の未確定をセット */
    for (i = 0; i < NUM_PLAYER; i++) {
      for (j = 0; j < GAME_FRAME; j++) {
        w->p_score[i][j].score = NO_SCORE;

0x7032BC

STMDDIVTG4LFG
 80041768  GSTMDDIVTG4NL
 8003DD08  GSTMDDIVTNF3
 80040498  GSTMDDIVTNF4
 8003F068  GSTMDDIVTNG3
 800419F8  GSTMDDIVTNG4
 800479E8  GSTMDFASTF3GL
 80047C08  GSTMDFASTF3GLFG
 80047E28  GSTMDFASTF3GNL
 80044548  GSTMDFASTF3L
 80044698  GSTMDFASTF3LFG
 80044408  GSTMDFASTF3NL
 80047FA8  GSTMDFASTF4GL

0x8C0C21

*/
            short next_angle;

            if (pin_p2->hit_count < MAX_PIN_HIT) {
              next_angle = pin_p2->angle - (angle - pin_p2->angle);
              set_pin_action(pno, i, PIN_YOWAI, next_angle,
                                                pin_p2->base_speed / 4);
#if 0
              pin_p1->base_speed = 0;   /* 止める */
              pin_p1->base_accel = 0;
#endif
              pin_p1->hit_count++;
            }
          }
          else {
            angle += (get_rand_v(0x20) - 0x10);     /* 適当にばらつかせる */
#if 0
            if (ret < PAT_YURE_AREA) {
              /* おしい!倒れそうで倒れない */
              set_pin_action(pno, j, 1, angle, 0);
            }
            else if (ret < PAT_SLIDE_AREA) {
              /* おしい!横に少し移動するだけ */
              set_pin_action(pno, j, 2, angle, p_speed);
            }
            else if (p_speed < YOWAI_SPEED) {
              /* 弱い倒れかた */
              set_pin_action(pno, j, 0, angle, p_speed + 0x0040);
              pin_p1->base_accel = -0x800;
            }
            else {
              /* 強い倒れかた */
              set_pin_action(pno, j, 3, angle, p_speed + 0x0100);
            }
            pin_p2->hit_count++;
#else
#if 0

Bishi Bashi Special (EU) - Hyper Bishi Bashi#

These fragments can be found in CD_DATA2.BIN.

0x40ED0D

) $(CFLAG_SYS) -o$*.obj $&.c

obj\o_bg.obj: o_bg.c $(INCLUDE)
   $(CC) $(CFLAG_SYS) -o$*.obj $&.c

obj\howto.obj: howto.c $(INCLUDE)
   $(CC) $(CFLAG_SYS) -o$*.obj $&.c

obj\s_comand.obj: s_comand.c $(INCLUDE)
   $(CC) $(CFLAG_SYS) -o$*.obj

0x42C5ED

nt, int, int);
int

0x483770

V] = GsTMDdivTNF3;
   /* texture gour triangle */
   GsFCALL5.tg3[GsDivMODE_NDIV][GsLMODE_NORMAL] = GsPrstTG3L;
   GsFCALL5.tg3[GsDivMODE_NDIV][GsL

0x486D50

_LOFF] = GsA4divTG4NL;
   GsFCALL4.ntg4[GsDivMODE_NDIV] = GsTMDfastTNG4;
   GsFCALL4.ntg4[GsDivMODE_DIV] = GsA4divTNG4;
   /* gradation triangle */
   GsFCALL4.f3g[GsLMODE_NORMAL] 

0x4A8B40

       (MINICAR_P_TOP+(MINICAR_P_SIZE>>11))
#define M34_S_TOP      (AMIDA_D_TOP+(AMIDA_D_SIZE>>11))
#define AMIDA_P_TOP        (M34_S_TOP+(M34_S_SIZE>>11))
#define ROKET_D_TOP        (AMIDA_P_TOP+(AMIDA_P_SIZE>

0x5788F0

ern void SetTile16(TILE_16 *p) ;
extern void SetTile8(TILE_8 *p) ;
extern void TermPrim(void *p) ;
extern u_long *BreakDraw(void);
extern void ContinueDraw(u_long *insaddr, u_long *contaddr);
extern int IsIdleGPU(int max_count);
extern int GetODE(void);
extern int 

0x57C828

obj"
    include "obj\twin.obj"
    include "obj\guitar.obj"
    include "obj\shoot.obj"

    include "obj\sb_nezu.obj"

    include "sys\on_vram\ikasama.obj"


    include "c:/psx/lib/2mbyte.obj"

    inclib "c:/psx/lib/libapi"
    inclib "c:/psx/lib/libetc"
    inclib "c:/psx/lib/libgte"
    inclib "c:/psx/lib/libgpu"
    inclib "c:/psx/lib/libgs"
    inclib "c:/psx/lib/libpres2"
    inclib "c:/psx/lib/libcd"
    inclib "c:/psx/lib/libds"
    inclib "c:/psx/lib/libc"
    inclib "c:/psx/lib/li

0x7752E0

CTORS_ORG
 8009B77C  _FISH_CTORS_ORGEND
 00000000  _FISH_CTORS_SIZE
 8009B254  _FISH_DATA_OBJ
 8009B779  _FISH_DATA_OBJEND
 8009B254  _FISH_DATA_ORG
 8009B779  _FISH_DATA_ORGEND
 00000525  _FISH_DATA_SIZE
 8009B77C  _FISH_DTORS_OBJ
 8009B77C  _FISH_DTORS_OBJEND
 8009B77C  _FISH

0x779468

 8009B750  _STAR_BSS_OBJ
 8009B828  _STAR_BSS_OBJEND
 8009B750  _STAR_BSS_ORG
 8009B828  _STAR_BSS_ORGEND
 000000D8  _STAR_BSS_SIZE
 8009B828  _STAR_CTORS_OBJ
 8009B828  _STAR_CTORS_OBJEND
 8009B828  _STAR_CTORS_ORG
 8009B828  _STAR_CTORS_ORGEND
 00000000  _STAR_CTORS_SIZE
 8009AF54  _STAR_DATA_OBJ
 8009B74D  _STAR_DATA_OBJEND
 8009AF54  _STAR_DATA_ORG
 8009B74D  _STAR_DATA_ORGEND
 000007F9 

0xA1DAC0

e_timer/50;
    if( ! (SETSUMEI_CHECK) )    //19980603sgy appended 説明時は表示しない事にする
    {
      number_disp(31,    w->stage_timer/50,17*8-7,3*8, DECIMAL+SIZE16+2, 0);
      string_disp(32,                  ".",21*8-7,4*8, 0, 0);
      number_disp(33,(w->stage_timer - i*50)/5 ,22*8-7,3*8, DECIMAL+SIZE16+1, 0);
    }

  if((w->stage_timer%50) == 0) {
    switch(i) {                         /* カウントダウン */
    case 3:sd_call_se(SE_THREE, 0);break;
    case 2:sd_call_se(SE_TWO  , 0);break;
    case 1:sd_call_se(SE_ONE  , 0);break;
    }
  }
#else
      i = w->stage_timer/60;
    if( ! (SETSUMEI_CHECK) )    //19980603sgy appended 説明時は表示しない事にする
    {
      number_disp(31,    w->stage_timer/60,17*8-7,3*8, DECIMAL+SIZE16+2, 0);
      string_disp(32,                  ".",21*8-7,4*8, 0, 0);
      number_disp(33,(w->stage_timer - i*60)/6 ,22*8-7,3*8, DECIMAL+SIZE16+1, 0);
    }

  if((w->stage_timer%60) == 0) {
    switch(i) {                         /* カウントダウン */
    case 3:sd_call_se(SE_THREE, 0);break;
    case 2:sd_call_se(SE_TWO  , 0);break;
    case 1:sd_call_se(SE_ONE  , 0);break;
    }
  }
#endif

  if(w->stage_timer <= 0) {
    disp_ready_go(3);
    return (-1);                /* タイムアップ */
  }

  return (0);
}

/*-------------------------------------------------------------------*/
/*          専用関数群                                                */
/*-------------