|
|
This needs some investigation.
|
The third of the Bishi Bashi Special games. Unlike the previous two, which were compilations, this one is a more or less direct port of the arcade game Step Champ, which is basically Bishi Bashi but on a dance pad.
Dummy File#
The game contains a file titled DMY, which, when read as signed 16-bit PCM audio, reveals itself to be an audio track from Diver's Dream.
(Source: tikal.)
Unused Graphics#
These two graphics, found near the data of the Dance de Step mode, are leftovers from the original Arcade release.
(Source: tikal.)
Uncompiled Source Code#
CD_DATA.BIN, the package that contains most of the game's assets, has a few sections of uncompiled source code and listings:
0xA8400
p
cmp\How07a1.cmp
cmp\How07b0.cmp
cmp\How07b1.cmp
cmp\How08a0.cmp
cmp\How08a1.cmp
cmp\How09a0.cmp
cmp\How09a1.cmp
cmp\How09b0.cmp
cmp\How09b1.cmp
cmp\How10a0.cmp
cmp\How10a1.cmp
cmp\How10b0.cmp
cmp\How10b1.cmp
cmp\How11a0.cmp
cmp\How11a1.cmp
cmp\How12a0.cmp
cmp\How12a1.cmp
cmp\How12b0.cmp
cmp\How12b1.cmp
cmp\How12c0.cmp
cmp\How12c1.cmp
cmp\How13a0.cmp
cmp\How13a1.cmp
cmp\How14a0.cmp
cmp\How14b0.cmp
cmp\How14b1.cmp
cmp\How14c0.cmp
cmp\How14c1.cmp
cmp\How15a0.cmp
cmp\How16a0.cmp
cmp\How17a0.cmp
cmp\How17a1.cmp
cmp\How17b0.cmp
cmp\How17b1.cmp
cmp\How18a0.cmp
cmp\How18a1.cmp
cmp\How18a2.cmp
cmp\How19a0.cmp
cmp\How19a1.cmp
cmp\How19b0.cmp
cmp\How19b1.cmp
cmp\How19c0.cmp
cmp\How19c1.cmp
cmp\How20a0.cmp
cmp\How20a1.cmp
cmp\How21a0.cmp
cmp\How21a1.cmp
cmp\How21b0.cmp
cmp\How22a0.cmp
cmp\How22a1.cmp
cmp\How22b0.cmp
cmp\How23a0.cmp
cmp\How23a1.cmp
cmp\How23b0.cmp
cmp\How23b1.cmp
cmp\How23c0.cmp
cmp\How23d0.cmp
cmp\How24a0.cmp
cmp\How24a1.cmp
cmp\How24b0.cmp
c
0xD2200
3
.half 32764
.half 32765
.half 32766
.half 32766
.half 32767
.half 32767
.half 32767
.half 32767
.half 32767
.half 32767
.globl seesaw_base_pos
.align 2
seesaw_base_pos:
.half -102
.half 0
.half 0
.half 0
.half 102
.half 0
.align 2
com_wait_time_data:
.byte 18
.byte 15
.byte 13
.byte 11
.byte 9
.byte 7
.byte 6
.byte 4
.align 2
com_move_time_data:
.byte 12
.byte 10
.byte 9
.byte 8
.byte 7
.byte 6
.byte 5
.byte 4
.align 2
com_get_time_data:
.byte 12
.byte 10
.byte 9
.byte 8
.byte 7
.byte 6
.byte 5
.byte 4
.align 2
food_set_data0:
.half 60
.half 0
.half 5940
.half 0
.align 2
food_set_data1:
.half 60
.half 36
.half 120
.half -36
.half 180
.half 18
.half 240
.half -18
.half 300
.half 36
.half 360
.half -36
.half 420
.half 18
.half 480
.half -18
.half 540
.half 36
.half 600
.half 0
.half 660
.half 18
.half 720
.half -18
.half 780
.half -36
.half 840
.half -36
.half 900
.half -36
.half 960
.half -36
.half 1020
.half -36
.half 1080
.half -36
.half 1140
.half -36
.half 1200
.half 0
.half 1260
.half 18
.half 1320
.half -18
.half 1380
.half 36
.half 1440
.half 36
.half 1500
.half 36
.half 1560
.half 36
.half 1620
.half 36
.half 1680
.half 36
.half 5940
.half 0
.globl food_set_data
.data
.align 2
food_set_data:
.word food_set_data0
.word food_set_data1
.rdata
.align 2
seesaw_rect:
.ha
0xEE200
175
LM10:
lw $17,4($18)
.loc 1 181
LM11:
jal BgInit
.loc 1 182
LM12:
jal ObjAllClear
.loc 1 183
LM13:
li $4,281018368 # 0x10c00000
.set noreorder
.set nomacro
jal SoundCall
li $5,1 # 0x00000001
.set macro
.set reorder
.loc 1 184
LM14:
li $4,268435456 # 0x10000000
.set noreorder
.set nomacro
jal SoundCall
li $5,1 # 0x00000001
.set macro
.set reorder
.loc 1 192
LM15:
move $6,$0
li $11,4 # 0x00000004
li $10,2 # 0x00000002
li $9,3 # 0x00000003
move $5,$18
addu $8,$17,$11
move $7,$17
.loc 1 188
LM16:
sb $0,100($17)
$L5:
.loc 1 194
LM17:
addu $3,$18,$6
lbu $2,214($3)
addu $4,$17,$6
nor $2,$0,$2
andi $2,$2,0x0001
sb $2,97($4)
.loc 1 195
LM18:
lbu $2,214($3)
#nop
sb $2,101($4)
.loc 1 196
LM19:
lw $2,112($5)
#nop
lbu $2,98($2)
#nop
sh $2,70($7)
.loc 1 197
LM20:
lw $2,112($5)
#nop
lbu $2,97($2)
#nop
andi $2,$2,0x0003
sh $2,58($7)
.loc 1 198
LM21:
lw $2,112($5)
#nop
lbu $2,97($2)
#nop
srl $2,$2,7
sb $2,94($4)
.loc 1 199
LM22:
lw $2,112($5)
#nop
lhu $2,100($2)
#nop
sh $2,88($7)
.loc 1 201
LM23:
lh $2,50($17)
#nop
bne $2,$11,$L4
lw $2,348($18)
#nop
andi $2,$2,0x0008
bne $2,$0,$L4
bne $6,$10,$L4
.loc 1 202
LM24:
sh $9,58($8)
.loc 1 192
LM25:
$L4:
addu $5,$5,4
addu $6,$6,1
slt $2,$6,3
.set noreorder
.set nomacro
bne $2,$0,$L5
addu $7,$7,2
.set macro
.set reorder
.loc 1 206
LM26:
0x102E00
96 # 0x00000060
.set macro
.set reorder
.loc 1 1053
LM663:
li $4,169 # 0x000000a9
.set noreorder
.set nomacro
j $L612
li $5,52 # 0x00000034
.set macro
.set reorder
$L465:
.loc 1 1055
LM664:
li $4,169 # 0x000000a9
li $5,52 # 0x00000034
li $6,34 # 0x00000022
$L612:
.set noreorder
.set nomacro
jal ObjPosSet
move $17,$0
.set macro
.set reorder
.loc 1 1056
LM665:
li $4,169 # 0x000000a9
.set noreorder
.set nomacro
jal ObjSemiSet
mo
0x11E400
al ObjDispOn
.loc 1 1991
LM1444:
$Le87:
.bend $Le87 14
lw $31,36($sp)
lw $20,32($sp)
lw $19,28($sp)
lw $18,24($sp)
lw $17,20($sp)
lw $16,16($sp)
#nop
.set noreorder
.set nomacro
j $31
addu $sp,$sp,40
.set macro
.set reorder
.loc 1 1991
LM1445:
.end Result_print_ranking
.align 2
.def Result_print_cleared; .val Result_print_cleared; .scl 3; .type 0x21; .endef
.loc 1 1996
LM1446:
.loc 1 1996
LM1447:
.ent Result_print_cleared
Result_print_cleared:
.frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, extra= 0
.mask 0x80010000,-4
.fmask 0x00000000,0
.def w; .val 4; .scl 17; .tag .168fake; .size 128; .type 0x18; .endef
.def pid; .val 5; .scl 17; .type 0x4; .endef
subu $sp,$sp,24
.loc 1 1998
LM1448:
addu $4,$4,$5
.loc 1 1996
LM1449:
sw $31,20($sp)
sw $16,16($sp)
.loc 1 1998
LM1450:
lbu $2,94($4)
#nop
.set noreorder
.set nomacro
bne $2,$0,$L975
addu $16,$5,102
.set macro
.set reorder
.loc 1 2002
LM1451:
0x13FC00
et macro
.set reorder
move $17,$2
.loc 1 3217
LM2456:
.set noreorder
.set nomacro
beq $17,$0,$L1543
move $2,$0
.set macro
.set reorder
.loc 1 3218
LM2457:
.set noreorder
.set nomacro
bgez $17,$L1410
li $2,1 # 0x00000001
.set macro
.set reorder
.loc 1 3219
LM2458:
lui $3,%hi(s_step0) # high
li $2,7 # 0x00000007
.loc 1 3220
LM2459:
$L1552:
.set noreorder
.set nomacro
j $L1394
sw $2,%lo(s_step0)($3)
.set macro
.set reorder
$L1410:
.loc 1 3221
LM2460:
.set noreorder
.set nomacro
beq $17,$2,$L1412
lui $3,%hi(s_step0) # high
.set macro
.set reorder
li $2,3 # 0x00000003
.set noreorder
.set nomacro
j $L1394
sw $2,%lo(s_step0)($3)
.set macro
.set reorder
$L1412:
.loc 1 3223
LM2461:
move $16,$0
li $17,15138816 # 0x00e70000
$L1417:
.set noreorder
.set nomacro
jal ObjDispOff
sra $4,$17,16
.set macro
.set reorder
li $2,65536 # 0x00010000
addu $17,$17,$2
addu $16,$16,1
slt
0x185600
hu $2,2($3)
addiu $4,$4,%lo(Ott+2176) # low
sh $2,10($17)
lhu $2,4($3)
sll $18,$18,11
sh $2,12($17)
lhu $2,6($3)
li $6,-16777216 # 0xff000000
sh $2,14($17)
lw $2,92($19)
lw $3,0($17)
sll $2,$2,10
addu $2,$18,$2
addu $2,$2,$4
lw $2,0($2)
and $3,$3,$6
and $2,$2,$5
or $3,$3,$2
sw $3,0($17)
lw $2,92($19)
#nop
sll $2,$2,10
addu $18,$18,$2
addu $18,$18,$4
lw $2,0($18)
and $17,$17,$5
and $2,$2,$6
or $2,$2,$17
sw $2,0($18)
lw $31,32($sp)
lw $19,28($sp)
0x208A00
,*r2,*r3;
u_long *rtn;
} CRVECTOR4;
typedef struct {
u_long ndiv;
u_long pih,piv;
u_short clut,tpage;
CVECTOR rgbc;
u_long *ot;
RVECTOR r0,r1,r2,r3;
CRVECTOR4 cr[5];
} DIVPOLYGON4;
typedef struct {
short xy[3];
short uv[2];
short rgb[3];
} SPOL;
typedef struct {
short sxy[4][2];
short sz[4][2];
short uv[4][2];
short rgb[4][3];
short code;
} POL4;
typedef struct {
short sxy[3][2];
short sz[3][2];
short uv[3][2];
short rgb[3][3];
short code;
} POL3;
typedef struct {
SVECTOR *v;
SVECTOR *n;
SVECTOR *u;
CVECTOR *c;
u_long len;
} TMESH;
typedef struct {
SVECTOR *v;
SVECTOR *n;
SVECTOR *u;
CVECTOR *c;
u_long lenv;
u_long lenh;
} QMESH;
extern void InitGeom();
extern void EigenMatrix(MATRIX *m, MATRIX *t);
extern int
0x253600
short note, short fine, short voll, short volr);
extern short SsUtKeyOffV(short voice);
extern short SsUtPitchBend(short, short, short, short, short);
extern short SsUtChangePitch(short, short, short, short, short,
short, short);
extern short SsUtChangeADSR(short, short, short, short,
unsigned short, unsigned short);
extern short SsUtSetVabHdr(short, VabHdr*);
extern short SsUtGetVabHdr(short, VabHdr*);
extern short SsUtSetProgAtr(sho
0x257600
u_short v0, v1;
u_short v2, p4;
} TMD_P_TNG3;
typedef struct {
u_char out, in, dummy, cd;
u_char tu0, tv0;
u_short clut;
u_char tu1, tv1;
u_short tpage;
u_char tu2, tv2;
u_short p0;
u_char tu3, tv3;
u_short p1;
u_short n0, v0;
u_short v1, v2;
u_short v3, p2;
} TMD_P_TF4;
typedef struct {
u_char out, in, dummy, cd;
u_char tu0, tv0;
u_short clut;
u_char tu1, tv1;
u_short tpage;
u_char tu2, tv2;
u_short p0;
u_char tu3, tv3;
u_short p1;
0x262200
extern TIM_DATA_T TD_Onvram[];
extern OBJ_PATTARN_T OP_Onvram[];
# 32 "include\\System.h" 2
typedef struct {
short DrawFlag;
short ClearFlag;
short FilmFlag;
short ClipFlag;
int VSyncMode;
u_short XRes;
u_short YRes;
u_short Interlace;
u_short Dither;
u_short R, G, B;
u_char BackR, BackG, BackB;
u_char DrawR, DrawG, DrawB;
DRAWENV DrawEnv[2 +1];
DR_ENV DrawClip[2 ][3];
DISPENV DispEnv[2 ];
TILE ClearPrim[2 ];
vu_long SystemTimer;
} HARD_SYSTEM_T;
typedef struct {
u_char BackGraundType;
DRAWENV *PlayerDrawEnvNow;
u_short DemoGameFlag;
u_char ResetFlag;
u_long DisplayFlag;
long DemoTimer;
u_short TitleLoopCounter;
u_char ContinueCounter
0x27F400
.def f4g; .val 280; .scl 8; .dim 3; .size 12; .type 0x67c; .endef
.def g4g; .val 292; .scl 8; .dim 3; .size 12; .type 0x67c; .endef
.def .eos; .val 304; .scl 102; .tag .84fake; .size 304; .endef
.def _GsFCALL; .scl 13; .tag .84fake; .size 304; .type 0x8; .endef
.def .85fake; .scl 10; .type 0x8; .size 16; .endef
.def out; .val 0; .scl 8; .type 0xc; .endef
.def in; .val 1; .scl 8; .type 0xc; .endef
.def dummy; .val 2; .scl 8; .type 0xc; .endef
.def cd; .val 3; .scl 8; .type 0xc; .endef
.def r0; .val 4; .scl 8; .type 0xc; .endef
.def g0; .val 5; .scl 8; .type 0xc; .endef
.def b0; .val 6; .scl 8; .type 0xc; .endef
.def code; .val 7; .scl 8; .type 0xc; .endef
.def n0; .val 8; .scl 8; .type 0xd; .endef
.def v0; .val 10; .scl 8; .type 0xd; .endef
.def v1; .val 12; .scl 8; .type 0xd; .endef
.def v2; .val 14; .scl 8; .type 0xd; .endef
.def .eos; .val 16; .scl 102; .tag .85fake; .size 16; .endef
.def TMD_P_F3; .scl 13; .tag .85fake; .size 16; .type 0x8; .endef
.def .86fake; .scl
0x2B8E00
hort *depth_right);
extern void SpuGetReverbModeDelayTime (long *delay);
extern void SpuGetReverbModeFeedback (long *feedback);
extern void SpuSetESA( long revAddr );
typedef struct {
char status;
char pad1;
char pad2;
char pad3;
long last_size;
unsigned long buf_addr;
unsigned long data_addr;
} SpuStVoiceAttr;
typedef struct {
long size;
long low_priority;
SpuStVoic
0x2C0E00
0x0dbf,0x0dbc,
0x0db9,0x0db6,0x0db2,0x0daf,0x0dac,0x0da9,0x0da5,0x0da2,
0x0d9f,0x0d9b,0x0d98,0x0d95,0x0d91,0x0d8e,0x0d8b,0x0d87,
0x0d84,0x0d81,0x0d7d,0x0d7a,0x0d77,0x0d73,0x0d70,0x0d6c,
0x0d69,0x0d65,0x0d62,0x0d5f,0x0d5b,0x0d58,0x0d54,0x0d51,
0x0d4d,0x0d4a,0x0d46,0x0d43,0x0d3f,0x0d3c,0x0d38,0x0d35,
0x0d31,0x0d2d,0x0d2a,0x0d26,0x0d23,0x0d1f,0x0d1c,0x0d18,
0x0d14,0x0d11,0x0d0d,0x0d09,0x0d06,0x0d02,0x0cfe,0x0cfb,
0x0cf7,0x0cf3,0x0cf0,0x0cec,0x0ce8,0x0ce5,0x0ce1,0x0cdd,
0x0cd9,0x0cd6,
0x699200
Optype[x][i].x+98;
ObjDispOn(Optype[x][i].pt);
}
break;
}
ConCurMove();
}
else {
if (Pad[0].Push & (1 << 15) ) {
switch (x = ((( Sub.ConMenu )<2)?0:(( Sub.ConMenu )<4)?1:(( Sub.ConMenu )<6)?2:(( Sub.ConMenu )<9)?3:4) ) {
case 0:
case 1:
case 2:
SoundCall( ((((u_long)( (3) &0xF)<<28) | (( 60 &0x7F)<<6) | (1<<27) ) | (( 0 &0xF)<<22) | ( 0 &0x3F) | (( 55 &0x7F)<<13) ) , (1) );
ObjDispOff((((Option->Controller&(1<<x))>>x)*3)+(24+x));
Option->Controller ^= (0x01<<x);
ObjDispOn((((Option->Controller&(1<<x))>>x)*3)+(24+x));
break;
case 3:
SoundCall( ((((u_long)( (3) &0xF)<<28) | (( 60 &0x7F)<<6) | (1<<27) ) | (( 0 &0xF)<<22) | ( 0 &0x3F) | (( 55 &0x7F)<<13) ) , (1) );
x = ((Option->Controller&0x18)>>3);
for (i=0; i<3; i++) {
ObjDispOff(i+31);
ObjDispOff(i+80);
for (j=0; j<12; j++) {
ObjDispOff(i*12+j+44);
}
}
x--;
if (x<0) x = 2;
if (!Game->Option.MultTap) {
if (x > 1) x = 1;
}
ObjDispOn(x+31);
Option->Controller &= (~0x18);
Option->Controller |= (x<<3);
for (i=0; i<3; i++) {
Obj = GetObj(i+80);
Obj->x = ControllerOffset[x][i]+98;
if (i<=x) ObjDispOn(i+80);
else ObjDispOff(i+80);
}
for (i=0; i<OptypeNum[x]; i++) {
Obj = GetObj(Optype[x][i].pt);
Obj->x = Optype[x][i].x + 98
0x6AD600
x3; .endef
.def r1; .val 12; .scl 8; .type 0xc; .endef
.def g1; .val 13; .scl 8; .type 0xc; .endef
.def b1; .val 14; .scl 8; .type 0xc; .endef
.def pad1; .val 15; .scl 8; .type 0xc; .endef
.def x1; .val 16; .scl 8; .type 0x3; .endef
.def y1; .val 18; .scl 8; .type 0x3; .endef
.def r2; .val 20; .scl 8; .type 0xc; .endef
.def g2; .val 21; .scl 8; .type 0xc; .endef
.def b2; .val 22; .scl 8; .type 0xc; .endef
.def pad2; .val 23; .scl 8; .type 0xc; .endef
.def x2; .val 24; .scl 8; .type 0x3
0x6D3A00
.set reorder
slt $2,$3,19
.set noreorder
.set nomacro
beq $2,$0,$L179
li $18,6 # 0x00000006
.set macro
.set reorder
.set noreorder
.set nomacro
j $L179
li $18,5 # 0x00000005
.set macro
.set reorder
$L184:
.set noreorder
.set nomacro
j $L179
li $18,3 # 0x00000003
.set macro
.set reorder
$L182:
.set noreorder
.set nomacro
j $L179
li $18,2 # 0x00000002
.set macro
.set reorder
$L180:
.set noreorder
.set nomacro
j $L179
li $18,1 # 0x00000001
.set macro
.set reorder
$L178:
move $18,$0
$L179:
.loc 1 752
LM292:
move $3,$18
slt $2,$3,4
.set noreorder
.set nomacro
beq $2,$0,$L190
lui $2,%hi(MenuColor) # high
.set macro
.set reorder
.loc 1 753
LM293:
addiu $2,$2,%lo(MenuColor) # low
sll $3,$3,1
addu $3,$3,$2
lbu $17,0($3)
lbu $3,1($3)
#nop
slt $2,$17,$3
.set noreorder
.set nomacro
beq $2,$0,$L236
addu $2,$18,2
.set macro
.set reorder
move $19,$3
.loc 1 754
LM294:
sll $16,$17,16
$L237:
sra $16,$16,16
.set noreorder
.set nomacro
jal GetObj
move $4,$16
.set macro
.set reorder
move $3,$2
.loc 1 755
LM295:
lw $2,48($3)
move $4,$16
lw $2,0($2)
lh $5,8($3)
lh $6,10($2)
.loc 1 753
LM296:
.loc 1 755
LM297:
.set noreorder
.set nomacro
jal ObjColorSet
addu $17,$17,1
.set macro
.set reorder
.loc 1 753
LM298:
slt $2,$17,$19
.set noreorder
.set nomacro
bne $2,$0,$L237
sll $16,$17,16
.set macro
.set reord
0x6F0200
ro
beq $2,$0,$L810
sll $4,$16,16
.set macro
.set reorder
.loc 1 1780
LM1169:
.set noreorder
.set nomacro
jal GetObj
sra $4,$4,16
.set macro
.set reorder
move $5,$2
.loc 1 1781
LM1170:
lhu $2,2($5)
.loc 1 1782
LM1171:
addu $4,$17,$19
.loc 1 1781
LM1172:
addu $2,$2,-8
sh $2,2($5)
.loc 1 1782
LM1173:
sll $2,$2,16
sra $2,$2,16
lh $3,0($4)
lhu $4,0($4)
slt $2,$2,$3
beq $2,$0,$L810
.loc 1 1783
LM1174:
sh $4,2($5)
.loc 1 1778
LM1175:
$L810:
addu $16,$16,1
slt $2,$16,16
.set noreorder
.set nomacro
bne $2,$0,$L811
addu $17,$17,2
.set macro
.set reorder
.loc 1 1788
LM1176:
move $16,$0
lui $2,%hi(AsiDefx) # high
addiu $19,$2,%lo(AsiDefx) # low
li $17,6094848 # 0x005d0000
$L818:
.loc 1 1789
LM1177:
lw $2,16($18)
#nop
slt $2,$2,80
.set noreorder
.set nomacro
beq $2,$0,$L841
li $2,65536 # 0x00010000
.set macro
.set reorder
.loc 1 1790
LM1178:
.set noreorder
.set nomacro
jal GetObj
sra $4,$17,16
.set macro
.set reorder
move $5,$2
.loc 1 1792
LM1179:
lui $2,%hi(Option) # high
.loc 1 1791
LM1180:
lhu $4,2($5)
.loc 1 1792
LM1181:
lw $2,%lo(Option)($2)
.loc 1 1791
LM1182:
addu $4,$4,-8
sh $4,2($5)
.loc 1 1792
LM1183:
lbu $3,0($2)
sll $4,$4,16
andi $3,$3,0x0070
srl $3,$3,4
sll $2,$3,3
subu $2,$2,$3
addu $2,$16,$2
addu $3,$2,$19
lbu $2,0($3)
sra $4,$4,16
slt $4,$4,$2
.set noreorder
.set nomacro
beq $4,$0,$L