prime/asm/Dolphin/SI/SISamplingRate.s

90 lines
3.8 KiB
ArmAsm

.include "macros.inc"
.section .data, "wa"
.global lbl_803F6FB8
lbl_803F6FB8:
.incbin "baserom.dol", 0x3F3FB8, 0x168
.section .text, "ax"
.global SISetSamplingRate
SISetSamplingRate:
/* 803BFF0C 003BCE6C 7C 08 02 A6 */ mflr r0
/* 803BFF10 003BCE70 90 01 00 04 */ stw r0, 4(r1)
/* 803BFF14 003BCE74 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803BFF18 003BCE78 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803BFF1C 003BCE7C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803BFF20 003BCE80 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803BFF24 003BCE84 3B A3 00 00 */ addi r29, r3, 0
/* 803BFF28 003BCE88 28 1D 00 0B */ cmplwi r29, 0xb
/* 803BFF2C 003BCE8C 3C 60 80 3F */ lis r3, lbl_803F6FB8@ha
/* 803BFF30 003BCE90 3B E3 6F B8 */ addi r31, r3, lbl_803F6FB8@l
/* 803BFF34 003BCE94 40 81 00 08 */ ble lbl_803BFF3C
/* 803BFF38 003BCE98 3B A0 00 0B */ li r29, 0xb
lbl_803BFF3C:
/* 803BFF3C 003BCE9C 4B FC 17 25 */ bl OSDisableInterrupts
/* 803BFF40 003BCEA0 93 AD B0 20 */ stw r29, lbl_805A9BE0@sda21(r13)
/* 803BFF44 003BCEA4 7C 7E 1B 78 */ mr r30, r3
/* 803BFF48 003BCEA8 4B FC 95 91 */ bl VIGetTvFormat
/* 803BFF4C 003BCEAC 2C 03 00 02 */ cmpwi r3, 2
/* 803BFF50 003BCEB0 41 82 00 24 */ beq lbl_803BFF74
/* 803BFF54 003BCEB4 40 80 00 14 */ bge lbl_803BFF68
/* 803BFF58 003BCEB8 2C 03 00 00 */ cmpwi r3, 0
/* 803BFF5C 003BCEBC 41 82 00 18 */ beq lbl_803BFF74
/* 803BFF60 003BCEC0 40 80 00 1C */ bge lbl_803BFF7C
/* 803BFF64 003BCEC4 48 00 00 20 */ b lbl_803BFF84
lbl_803BFF68:
/* 803BFF68 003BCEC8 2C 03 00 05 */ cmpwi r3, 5
/* 803BFF6C 003BCECC 41 82 00 08 */ beq lbl_803BFF74
/* 803BFF70 003BCED0 48 00 00 14 */ b lbl_803BFF84
lbl_803BFF74:
/* 803BFF74 003BCED4 7F E4 FB 78 */ mr r4, r31
/* 803BFF78 003BCED8 48 00 00 20 */ b lbl_803BFF98
lbl_803BFF7C:
/* 803BFF7C 003BCEDC 38 9F 00 30 */ addi r4, r31, 0x30
/* 803BFF80 003BCEE0 48 00 00 18 */ b lbl_803BFF98
lbl_803BFF84:
/* 803BFF84 003BCEE4 38 7F 00 60 */ addi r3, r31, 0x60
/* 803BFF88 003BCEE8 4C C6 31 82 */ crclr 6
/* 803BFF8C 003BCEEC 4B FB FA 21 */ bl OSReport
/* 803BFF90 003BCEF0 3B A0 00 00 */ li r29, 0
/* 803BFF94 003BCEF4 38 9F 00 00 */ addi r4, r31, 0
lbl_803BFF98:
/* 803BFF98 003BCEF8 3C 60 CC 00 */ lis r3, 0xCC00206C@ha
/* 803BFF9C 003BCEFC A0 03 20 6C */ lhz r0, 0xCC00206C@l(r3)
/* 803BFFA0 003BCF00 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 803BFFA4 003BCF04 41 82 00 0C */ beq lbl_803BFFB0
/* 803BFFA8 003BCF08 38 A0 00 02 */ li r5, 2
/* 803BFFAC 003BCF0C 48 00 00 08 */ b lbl_803BFFB4
lbl_803BFFB0:
/* 803BFFB0 003BCF10 38 A0 00 01 */ li r5, 1
lbl_803BFFB4:
/* 803BFFB4 003BCF14 57 A3 10 3A */ slwi r3, r29, 2
/* 803BFFB8 003BCF18 7C 04 1A 2E */ lhzx r0, r4, r3
/* 803BFFBC 003BCF1C 7C 64 1A 14 */ add r3, r4, r3
/* 803BFFC0 003BCF20 88 83 00 02 */ lbz r4, 2(r3)
/* 803BFFC4 003BCF24 7C 65 01 D6 */ mullw r3, r5, r0
/* 803BFFC8 003BCF28 4B FF F3 39 */ bl SISetXY
/* 803BFFCC 003BCF2C 7F C3 F3 78 */ mr r3, r30
/* 803BFFD0 003BCF30 4B FC 16 B9 */ bl OSRestoreInterrupts
/* 803BFFD4 003BCF34 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803BFFD8 003BCF38 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803BFFDC 003BCF3C 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803BFFE0 003BCF40 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803BFFE4 003BCF44 38 21 00 20 */ addi r1, r1, 0x20
/* 803BFFE8 003BCF48 7C 08 03 A6 */ mtlr r0
/* 803BFFEC 003BCF4C 4E 80 00 20 */ blr
.global SIRefreshSamplingRate
SIRefreshSamplingRate:
/* 803BFFF0 003BCF50 7C 08 02 A6 */ mflr r0
/* 803BFFF4 003BCF54 90 01 00 04 */ stw r0, 4(r1)
/* 803BFFF8 003BCF58 94 21 FF F8 */ stwu r1, -8(r1)
/* 803BFFFC 003BCF5C 80 6D B0 20 */ lwz r3, lbl_805A9BE0@sda21(r13)
/* 803C0000 003BCF60 4B FF FF 0D */ bl SISetSamplingRate
/* 803C0004 003BCF64 80 01 00 0C */ lwz r0, 0xc(r1)
/* 803C0008 003BCF68 38 21 00 08 */ addi r1, r1, 8
/* 803C000C 003BCF6C 7C 08 03 A6 */ mtlr r0
/* 803C0010 003BCF70 4E 80 00 20 */ blr