the cutting room mirror

Bishi Bashi Special 3: Step Champ

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

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Verify if there's any methods to access the following:

  • Maniac Mode in Dance de Step.
  • The track "theme" in Dance de Step.

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.

bishibashispecial3-anotherAC.png bishibashispecial3-tripleAC.png

(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

References#


  1. GAME Data Room - PlayStation Software List 2000↩︎