# The jumptable .data5:80225224 Cmd_Process_JumpTable:.long 0 .data5:80225224 # 0 .data5:80225228 .long Cmd_OpenTrack__Fv # 1 .data5:8022522C .long Cmd_OpenTrackBros__Fv # 2 .data5:80225230 .long Cmd_Call__Fv # 3 .data5:80225234 .long Cmd_CallF__Fv # 4 .data5:80225238 .long Cmd_Ret__Fv # 5 .data5:8022523C .long Cmd_RetF__Fv # 6 .data5:80225240 .long Cmd_Jmp__Fv # 7 .data5:80225244 .long Cmd_JmpF__Fv # 8 .data5:80225248 .long Cmd_LoopS__Fv # 9 .data5:8022524C .long Cmd_LoopE__Fv # A .data5:80225250 .long Cmd_ReadPort__Fv # B .data5:80225254 .long Cmd_WritePort__Fv # C .data5:80225258 .long Cmd_CheckPortImport__Fv # D .data5:8022525C .long Cmd_CheckPortExport__Fv # E .data5:80225260 .long Cmd_WaitReg__Fv # F .data5:80225264 .long Cmd_ConnectName__Fv # 10 .data5:80225268 .long Cmd_ParentWritePort__Fv # 11 .data5:8022526C .long Cmd_ChildWritePort__Fv # 12 .data5:80225270 .long 0 # 13 .data5:80225274 .long Cmd_SetLastNote__Fv # 14 .data5:80225278 .long Cmd_TimeRelate__Fv # 15 .data5:8022527C .long Cmd_SimpleOsc__Fv # 16 .data5:80225280 .long Cmd_SimpleEnv__Fv # 17 .data5:80225284 .long Cmd_SimpleADSR__Fv # 18 .data5:80225288 .long Cmd_Transpose__Fv # 19 .data5:8022528C .long Cmd_CloseTrack__Fv # 1A .data5:80225290 .long Cmd_OutSwitch__Fv # 1B .data5:80225294 .long Cmd_UpdateSync__Fv # 1C .data5:80225298 .long Cmd_BusConnect__Fv # 1D .data5:8022529C .long Cmd_PauseStatus__Fv # 1E .data5:802252A0 .long Cmd_SetInterrupt__Fv # 1F .data5:802252A4 .long Cmd_DisInterrupt__Fv # 20 .data5:802252A8 .long Cmd_ClrI__Fv # 21 .data5:802252AC .long Cmd_SetI__Fv # 22 .data5:802252B0 .long Cmd_RetI__Fv # 23 .data5:802252B4 .long Cmd_IntTimer__Fv # 24 .data5:802252B8 .long Cmd_ConnectOpen__Fv # 25 .data5:802252BC .long Cmd_ConnectClose__Fv # 26 .data5:802252C0 .long Cmd_SyncCPU__Fv # 27 .data5:802252C4 .long Cmd_FlushAll__Fv # 28 .data5:802252C8 .long Cmd_FlushRelease__Fv # 29 .data5:802252CC .long Cmd_Wait3__Fv # 2A .data5:802252D0 .long Cmd_PanPowSet__Fv # 2B .data5:802252D4 .long Cmd_IIRSet__Fv # 2C .data5:802252D8 .long Cmd_FIRSet__Fv # 2D .data5:802252DC .long Cmd_EXTSet__Fv # 2E .data5:802252E0 .long Cmd_PanSwSet__Fv # 2F .data5:802252E4 .long Cmd_OscRoute__Fv # 30 .data5:802252E8 .long Cmd_IIRCutOff__Fv # 31 .data5:802252EC .long Cmd_OscFull__Fv # 32 .data5:802252F0 .byte 0 # 33 .data5:802252F1 .byte 0 # 34 .data5:802252F2 .byte 0 # 35 .data5:802252F3 .byte 0 # 36 .data5:802252F4 .byte 0 # 37 .data5:802252F5 .byte 0 # 38 .data5:802252F6 .byte 0 # 39 .data5:802252F7 .byte 0 # 3A .data5:802252F8 .byte 0 # 3B .data5:802252F9 .byte 0 # 3C .data5:802252FA .byte 0 # 3D .data5:802252FB .byte 0 # 3E .data5:802252FC .byte 0 # 3F .data5:802252FD .byte 0 # 40 .data5:802252FE .byte 0 # 41 .data5:802252FF .byte 0 # 42 .data5:80225300 .byte 0 # 43 .data5:80225301 .byte 0 # 44 .data5:80225302 .byte 0 # 45 .data5:80225303 .byte 0 # 46 .data5:80225304 .byte 0 # 47 .data5:80225305 .byte 0 # 48 .data5:80225306 .byte 0 # 49 .data5:80225307 .byte 0 # 4A .data5:80225308 .byte 0 # 4B .data5:80225309 .byte 0 # 4C .data5:8022530A .byte 0 # 4D .data5:8022530B .byte 0 # 4E .data5:8022530C .long Cmd_CheckWave__Fv # 4F .data5:80225310 .long Cmd_Printf__Fv # 50 .data5:80225314 .long Cmd_Nop__Fv # 51 .data5:80225318 .long Cmd_Tempo__Fv # 52 .data5:8022531C .long Cmd_TimeBase__Fv # 53 .data5:80225320 .long Cmd_Finish__Fv # 54 .data5:80225324 .long 0 # 55 # The actual function .text1:80012CC0 # Cmd_Process(seqp_ *, unsigned char, unsigned short) .text1:80012CC0 Cmd_Process__FP5seqp_UcUs: # CODE XREF: RegCmd_Process(seqp_ *,int,ulong)+90p .text1:80012CC0 # Jam_SeqmainNote+738p .text1:80012CC0 .text1:80012CC0 .set var_38, -0x38 .text1:80012CC0 .set var_34, -0x34 .text1:80012CC0 .set var_24, -0x24 .text1:80012CC0 .set var_20, -0x20 .text1:80012CC0 .set arg_4, 4 .text1:80012CC0 .text1:80012CC0 mflr %r0 .text1:80012CC4 lis %r6, dword_80225124@h .text1:80012CC8 stw %r0, arg_4(%sp) .text1:80012CCC addi %r0, %r6, dword_80225124@l .text1:80012CD0 stwu %sp, -0x40(%sp) .text1:80012CD4 stmw %r24, 0x40+var_20(%sp) .text1:80012CD8 li %r28, 0 .text1:80012CDC li %r27, 0 .text1:80012CE0 stb %r4, 0x40+var_34(%sp) .text1:80012CE4 lis %r4, ((dword_8031FA80+0x10000)@h) .text1:80012CE8 subi %r26, %r4, 0x580 # dword_8031FA80 .text1:80012CEC lbz %r31, 0x40+var_34(%sp) .text1:80012CF0 stw %r3, 0x40+var_38(%sp) .text1:80012CF4 slwi %r29, %r31, 2 .text1:80012CF8 add %r4, %r0, %r29 .text1:80012CFC lwz %r30, 0x40+var_38(%sp) .text1:80012D00 lwz %r0, -0x300(%r4) .text1:80012D04 stw %r0, 0x40+var_24(%sp) .text1:80012D08 lhz %r0, 0x40+var_24+2(%sp) .text1:80012D0C lhz %r25, 0x40+var_24(%sp) .text1:80012D10 or %r0, %r0, %r5 .text1:80012D14 b Cmd_Process_SetupJumpTable .text1:80012D18 # --------------------------------------------------------------------------- .text1:80012D18 .text1:80012D18 loc_80012D18: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+E4j .text1:80012D18 clrlwi %r24, %r0, 16 .text1:80012D1C clrlwi %r0, %r0, 30 .text1:80012D20 cmpwi %r0, 2 .text1:80012D24 beq loc_80012D68 .text1:80012D28 bge loc_80012D3C .text1:80012D2C cmpwi %r0, 0 .text1:80012D30 beq loc_80012D48 .text1:80012D34 bge loc_80012D58 .text1:80012D38 b loc_80012D88 .text1:80012D3C # --------------------------------------------------------------------------- .text1:80012D3C .text1:80012D3C loc_80012D3C: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+68j .text1:80012D3C cmpwi %r0, 4 .text1:80012D40 bge loc_80012D88 .text1:80012D44 b loc_80012D74 .text1:80012D48 # --------------------------------------------------------------------------- .text1:80012D48 .text1:80012D48 loc_80012D48: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+70j .text1:80012D48 mr %r3, %r30 .text1:80012D4C bl __ByteRead__FP5seqp_ # __ByteRead(seqp_ *) .text1:80012D50 clrlwi %r3, %r3, 24 .text1:80012D54 b loc_80012D88 .text1:80012D58 # --------------------------------------------------------------------------- .text1:80012D58 .text1:80012D58 loc_80012D58: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+74j .text1:80012D58 mr %r3, %r30 .text1:80012D5C bl __WordRead__FP5seqp_ # __WordRead(seqp_ *) .text1:80012D60 clrlwi %r3, %r3, 16 .text1:80012D64 b loc_80012D88 .text1:80012D68 # --------------------------------------------------------------------------- .text1:80012D68 .text1:80012D68 loc_80012D68: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+64j .text1:80012D68 mr %r3, %r30 .text1:80012D6C bl __24Read__FP5seqp_ .text1:80012D70 b loc_80012D88 .text1:80012D74 # --------------------------------------------------------------------------- .text1:80012D74 .text1:80012D74 loc_80012D74: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+84j .text1:80012D74 mr %r3, %r30 .text1:80012D78 bl __ByteRead__FP5seqp_ # __ByteRead(seqp_ *) .text1:80012D7C addi %r4, %r3, 0 .text1:80012D80 addi %r3, %r30, 0 .text1:80012D84 bl __ExchangeRegisterValue__FP5seqp_Uc # __ExchangeRegisterValue(seqp_ *,uchar) .text1:80012D88 .text1:80012D88 loc_80012D88: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+78j .text1:80012D88 # Cmd_Process(seqp_ *,uchar,ushort)+80j ... .text1:80012D88 add %r4, %r26, %r27 .text1:80012D8C srawi %r0, %r24, 2 .text1:80012D90 stw %r3, 0(%r4) .text1:80012D94 clrlwi %r0, %r0, 16 .text1:80012D98 addi %r28, %r28, 1 .text1:80012D9C addi %r27, %r27, 4 .text1:80012DA0 .text1:80012DA0 Cmd_Process_SetupJumpTable: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+54j .text1:80012DA0 cmplw %r28, %r25 .text1:80012DA4 blt loc_80012D18 .text1:80012DA8 lis %r3, Cmd_Process_JumpTable@h .text1:80012DAC stb %r31, 0x2C34(%r13) .text1:80012DB0 addi %r0, %r3, Cmd_Process_JumpTable@l .text1:80012DB4 stw %r30, 0x2C30(%r13) .text1:80012DB8 add %r3, %r0, %r29 .text1:80012DBC lwz %r0, -0x300(%r3) .text1:80012DC0 cmplwi %r0, 0 .text1:80012DC4 mr %r12, %r0 .text1:80012DC8 bne loc_80012DD4 .text1:80012DCC li %r3, 0 .text1:80012DD0 b loc_80012DDC .text1:80012DD4 # --------------------------------------------------------------------------- .text1:80012DD4 .text1:80012DD4 loc_80012DD4: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+108j .text1:80012DD4 mtlr %r12 .text1:80012DD8 blrl .text1:80012DDC .text1:80012DDC loc_80012DDC: # CODE XREF: Cmd_Process(seqp_ *,uchar,ushort)+110j .text1:80012DDC lmw %r24, 0x40+var_20(%sp) .text1:80012DE0 lwz %r0, 0x40+arg_4(%sp) .text1:80012DE4 addi %sp, %sp, 0x40 .text1:80012DE8 mtlr %r0 .text1:80012DEC blr .text1:80012DEC # End of function Cmd_Process(seqp_ *,uchar,ushort)