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);
}
/*-------------------------------------------------------------------*/
/* 専用関数群 */
/*-------------