mirror of
https://github.com/pmret/papermario.git
synced 2024-11-14 15:03:25 +01:00
106 lines
4.6 KiB
ArmAsm
106 lines
4.6 KiB
ArmAsm
|
.set noat # allow manual use of $at
|
||
|
.set noreorder # don't insert nops after branches
|
||
|
|
||
|
|
||
|
glabel play_effect
|
||
|
/* 035964 8005A564 27BDFFD8 */ addiu $sp, $sp, -0x28
|
||
|
/* 035968 8005A568 AFB20020 */ sw $s2, 0x20($sp)
|
||
|
/* 03596C 8005A56C 0080902D */ daddu $s2, $a0, $zero
|
||
|
/* 035970 8005A570 3C038008 */ lui $v1, 0x8008
|
||
|
/* 035974 8005A574 2463F210 */ addiu $v1, $v1, -0xdf0
|
||
|
/* 035978 8005A578 00121040 */ sll $v0, $s2, 1
|
||
|
/* 03597C 8005A57C 00521021 */ addu $v0, $v0, $s2
|
||
|
/* 035980 8005A580 000210C0 */ sll $v0, $v0, 3
|
||
|
/* 035984 8005A584 AFB1001C */ sw $s1, 0x1c($sp)
|
||
|
/* 035988 8005A588 00438821 */ addu $s1, $v0, $v1
|
||
|
/* 03598C 8005A58C 0000202D */ daddu $a0, $zero, $zero
|
||
|
/* 035990 8005A590 AFB00018 */ sw $s0, 0x18($sp)
|
||
|
/* 035994 8005A594 3C10800A */ lui $s0, 0x800a
|
||
|
/* 035998 8005A598 26104000 */ addiu $s0, $s0, 0x4000
|
||
|
/* 03599C 8005A59C AFBF0024 */ sw $ra, 0x24($sp)
|
||
|
.L8005A5A0:
|
||
|
/* 0359A0 8005A5A0 8E020000 */ lw $v0, ($s0)
|
||
|
/* 0359A4 8005A5A4 30420001 */ andi $v0, $v0, 1
|
||
|
/* 0359A8 8005A5A8 50400005 */ beql $v0, $zero, .L8005A5C0
|
||
|
/* 0359AC 8005A5AC 24840001 */ addiu $a0, $a0, 1
|
||
|
/* 0359B0 8005A5B0 8E020004 */ lw $v0, 4($s0)
|
||
|
/* 0359B4 8005A5B4 10520006 */ beq $v0, $s2, .L8005A5D0
|
||
|
/* 0359B8 8005A5B8 2882000F */ slti $v0, $a0, 0xf
|
||
|
/* 0359BC 8005A5BC 24840001 */ addiu $a0, $a0, 1
|
||
|
.L8005A5C0:
|
||
|
/* 0359C0 8005A5C0 2882000F */ slti $v0, $a0, 0xf
|
||
|
/* 0359C4 8005A5C4 1440FFF6 */ bnez $v0, .L8005A5A0
|
||
|
/* 0359C8 8005A5C8 26100020 */ addiu $s0, $s0, 0x20
|
||
|
/* 0359CC 8005A5CC 2882000F */ slti $v0, $a0, 0xf
|
||
|
.L8005A5D0:
|
||
|
/* 0359D0 8005A5D0 14400030 */ bnez $v0, .L8005A694
|
||
|
/* 0359D4 8005A5D4 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 0359D8 8005A5D8 0000202D */ daddu $a0, $zero, $zero
|
||
|
/* 0359DC 8005A5DC 3C10800A */ lui $s0, 0x800a
|
||
|
/* 0359E0 8005A5E0 26104000 */ addiu $s0, $s0, 0x4000
|
||
|
.L8005A5E4:
|
||
|
/* 0359E4 8005A5E4 8E020000 */ lw $v0, ($s0)
|
||
|
/* 0359E8 8005A5E8 30420001 */ andi $v0, $v0, 1
|
||
|
/* 0359EC 8005A5EC 10400006 */ beqz $v0, .L8005A608
|
||
|
/* 0359F0 8005A5F0 2882000F */ slti $v0, $a0, 0xf
|
||
|
/* 0359F4 8005A5F4 24840001 */ addiu $a0, $a0, 1
|
||
|
/* 0359F8 8005A5F8 2882000F */ slti $v0, $a0, 0xf
|
||
|
/* 0359FC 8005A5FC 1440FFF9 */ bnez $v0, .L8005A5E4
|
||
|
/* 035A00 8005A600 26100020 */ addiu $s0, $s0, 0x20
|
||
|
/* 035A04 8005A604 2882000F */ slti $v0, $a0, 0xf
|
||
|
.L8005A608:
|
||
|
/* 035A08 8005A608 14400003 */ bnez $v0, .L8005A618
|
||
|
/* 035A0C 8005A60C 3C0700FF */ lui $a3, 0xff
|
||
|
.L8005A610:
|
||
|
/* 035A10 8005A610 08016984 */ j .L8005A610
|
||
|
/* 035A14 8005A614 00000000 */ nop
|
||
|
|
||
|
.L8005A618:
|
||
|
/* 035A18 8005A618 34E7FFFF */ ori $a3, $a3, 0xffff
|
||
|
/* 035A1C 8005A61C 0000282D */ daddu $a1, $zero, $zero
|
||
|
/* 035A20 8005A620 2402FFFF */ addiu $v0, $zero, -1
|
||
|
/* 035A24 8005A624 3C038019 */ lui $v1, 0x8019
|
||
|
/* 035A28 8005A628 24637000 */ addiu $v1, $v1, 0x7000
|
||
|
/* 035A2C 8005A62C AFA20010 */ sw $v0, 0x10($sp)
|
||
|
/* 035A30 8005A630 AFA20014 */ sw $v0, 0x14($sp)
|
||
|
/* 035A34 8005A634 00041300 */ sll $v0, $a0, 0xc
|
||
|
/* 035A38 8005A638 00431021 */ addu $v0, $v0, $v1
|
||
|
/* 035A3C 8005A63C 8E26000C */ lw $a2, 0xc($s1)
|
||
|
/* 035A40 8005A640 0C0199E8 */ jal osMapTLB
|
||
|
/* 035A44 8005A644 00473824 */ and $a3, $v0, $a3
|
||
|
/* 035A48 8005A648 8E240004 */ lw $a0, 4($s1)
|
||
|
/* 035A4C 8005A64C 8E250008 */ lw $a1, 8($s1)
|
||
|
/* 035A50 8005A650 0C00A5CF */ jal dma_copy
|
||
|
/* 035A54 8005A654 8E26000C */ lw $a2, 0xc($s1)
|
||
|
/* 035A58 8005A658 8E220010 */ lw $v0, 0x10($s1)
|
||
|
/* 035A5C 8005A65C 5040000D */ beql $v0, $zero, .L8005A694
|
||
|
/* 035A60 8005A660 24020001 */ addiu $v0, $zero, 1
|
||
|
/* 035A64 8005A664 8E240014 */ lw $a0, 0x14($s1)
|
||
|
/* 035A68 8005A668 0C00AB0A */ jal general_heap_malloc
|
||
|
/* 035A6C 8005A66C 00822023 */ subu $a0, $a0, $v0
|
||
|
/* 035A70 8005A670 14400003 */ bnez $v0, .L8005A680
|
||
|
/* 035A74 8005A674 AE02001C */ sw $v0, 0x1c($s0)
|
||
|
.L8005A678:
|
||
|
/* 035A78 8005A678 0801699E */ j .L8005A678
|
||
|
/* 035A7C 8005A67C 00000000 */ nop
|
||
|
|
||
|
.L8005A680:
|
||
|
/* 035A80 8005A680 8E240010 */ lw $a0, 0x10($s1)
|
||
|
/* 035A84 8005A684 8E250014 */ lw $a1, 0x14($s1)
|
||
|
/* 035A88 8005A688 0C00A5CF */ jal dma_copy
|
||
|
/* 035A8C 8005A68C 8E06001C */ lw $a2, 0x1c($s0)
|
||
|
/* 035A90 8005A690 24020001 */ addiu $v0, $zero, 1
|
||
|
.L8005A694:
|
||
|
/* 035A94 8005A694 0040182D */ daddu $v1, $v0, $zero
|
||
|
/* 035A98 8005A698 AE120004 */ sw $s2, 4($s0)
|
||
|
/* 035A9C 8005A69C AE000008 */ sw $zero, 8($s0)
|
||
|
/* 035AA0 8005A6A0 AE030000 */ sw $v1, ($s0)
|
||
|
/* 035AA4 8005A6A4 8FBF0024 */ lw $ra, 0x24($sp)
|
||
|
/* 035AA8 8005A6A8 8FB20020 */ lw $s2, 0x20($sp)
|
||
|
/* 035AAC 8005A6AC 8FB1001C */ lw $s1, 0x1c($sp)
|
||
|
/* 035AB0 8005A6B0 8FB00018 */ lw $s0, 0x18($sp)
|
||
|
/* 035AB4 8005A6B4 03E00008 */ jr $ra
|
||
|
/* 035AB8 8005A6B8 27BD0028 */ addiu $sp, $sp, 0x28
|
||
|
|
||
|
/* 035ABC 8005A6BC 00000000 */ nop
|