All pastes #915194 Raw Edit

jaudio command parser

public text v1 · immutable
#915194 ·published 2008-02-23 16:44 UTC
rendered paste body
# 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)