.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global gdev_cc_initinterrupts gdev_cc_initinterrupts: /* 801D99F0 001D5650 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801D99F4 001D5654 7C 08 02 A6 */ mflr r0 /* 801D99F8 001D5658 90 01 00 14 */ stw r0, 0x14(r1) /* 801D99FC 001D565C 48 00 06 19 */ bl DBInitInterrupts /* 801D9A00 001D5660 80 01 00 14 */ lwz r0, 0x14(r1) /* 801D9A04 001D5664 38 60 00 00 */ li r3, 0 /* 801D9A08 001D5668 7C 08 03 A6 */ mtlr r0 /* 801D9A0C 001D566C 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9A10 001D5670 4E 80 00 20 */ blr .global gdev_cc_peek gdev_cc_peek: /* 801D9A14 001D5674 94 21 FA F0 */ stwu r1, -0x510(r1) /* 801D9A18 001D5678 7C 08 02 A6 */ mflr r0 /* 801D9A1C 001D567C 90 01 05 14 */ stw r0, 0x514(r1) /* 801D9A20 001D5680 93 E1 05 0C */ stw r31, 0x50c(r1) /* 801D9A24 001D5684 48 00 06 45 */ bl DBQueryData /* 801D9A28 001D5688 7C 7F 1B 79 */ or. r31, r3, r3 /* 801D9A2C 001D568C 41 81 00 0C */ bgt lbl_801D9A38 /* 801D9A30 001D5690 38 60 00 00 */ li r3, 0 /* 801D9A34 001D5694 48 00 00 3C */ b lbl_801D9A70 lbl_801D9A38: /* 801D9A38 001D5698 7F E4 FB 78 */ mr r4, r31 /* 801D9A3C 001D569C 38 61 00 08 */ addi r3, r1, 8 /* 801D9A40 001D56A0 48 00 06 CD */ bl DBRead /* 801D9A44 001D56A4 2C 03 00 00 */ cmpwi r3, 0 /* 801D9A48 001D56A8 40 82 00 1C */ bne lbl_801D9A64 /* 801D9A4C 001D56AC 3C 60 80 49 */ lis r3, lbl_80491290@ha /* 801D9A50 001D56B0 7F E5 FB 78 */ mr r5, r31 /* 801D9A54 001D56B4 38 63 12 90 */ addi r3, r3, lbl_80491290@l /* 801D9A58 001D56B8 38 81 00 08 */ addi r4, r1, 8 /* 801D9A5C 001D56BC 48 00 03 5D */ bl CircleBufferWriteBytes /* 801D9A60 001D56C0 48 00 00 0C */ b lbl_801D9A6C lbl_801D9A64: /* 801D9A64 001D56C4 38 60 D8 E7 */ li r3, -10009 /* 801D9A68 001D56C8 48 00 00 08 */ b lbl_801D9A70 lbl_801D9A6C: /* 801D9A6C 001D56CC 7F E3 FB 78 */ mr r3, r31 lbl_801D9A70: /* 801D9A70 001D56D0 80 01 05 14 */ lwz r0, 0x514(r1) /* 801D9A74 001D56D4 83 E1 05 0C */ lwz r31, 0x50c(r1) /* 801D9A78 001D56D8 7C 08 03 A6 */ mtlr r0 /* 801D9A7C 001D56DC 38 21 05 10 */ addi r1, r1, 0x510 /* 801D9A80 001D56E0 4E 80 00 20 */ blr .global gdev_cc_post_stop gdev_cc_post_stop: /* 801D9A84 001D56E4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801D9A88 001D56E8 7C 08 02 A6 */ mflr r0 /* 801D9A8C 001D56EC 90 01 00 14 */ stw r0, 0x14(r1) /* 801D9A90 001D56F0 48 00 08 0D */ bl DBOpen /* 801D9A94 001D56F4 80 01 00 14 */ lwz r0, 0x14(r1) /* 801D9A98 001D56F8 38 60 00 00 */ li r3, 0 /* 801D9A9C 001D56FC 7C 08 03 A6 */ mtlr r0 /* 801D9AA0 001D5700 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9AA4 001D5704 4E 80 00 20 */ blr .global gdev_cc_pre_continue gdev_cc_pre_continue: /* 801D9AA8 001D5708 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801D9AAC 001D570C 7C 08 02 A6 */ mflr r0 /* 801D9AB0 001D5710 90 01 00 14 */ stw r0, 0x14(r1) /* 801D9AB4 001D5714 48 00 07 ED */ bl DBClose /* 801D9AB8 001D5718 80 01 00 14 */ lwz r0, 0x14(r1) /* 801D9ABC 001D571C 38 60 00 00 */ li r3, 0 /* 801D9AC0 001D5720 7C 08 03 A6 */ mtlr r0 /* 801D9AC4 001D5724 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9AC8 001D5728 4E 80 00 20 */ blr .global gdev_cc_write gdev_cc_write: /* 801D9ACC 001D572C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801D9AD0 001D5730 7C 08 02 A6 */ mflr r0 /* 801D9AD4 001D5734 90 01 00 14 */ stw r0, 0x14(r1) /* 801D9AD8 001D5738 93 E1 00 0C */ stw r31, 0xc(r1) /* 801D9ADC 001D573C 7C 9F 23 78 */ mr r31, r4 /* 801D9AE0 001D5740 93 C1 00 08 */ stw r30, 8(r1) /* 801D9AE4 001D5744 7C 7E 1B 78 */ mr r30, r3 /* 801D9AE8 001D5748 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13) /* 801D9AEC 001D574C 2C 00 00 00 */ cmpwi r0, 0 /* 801D9AF0 001D5750 40 82 00 2C */ bne lbl_801D9B1C /* 801D9AF4 001D5754 38 60 D8 EF */ li r3, -10001 /* 801D9AF8 001D5758 48 00 00 30 */ b lbl_801D9B28 /* 801D9AFC 001D575C 48 00 00 20 */ b lbl_801D9B1C lbl_801D9B00: /* 801D9B00 001D5760 7F C3 F3 78 */ mr r3, r30 /* 801D9B04 001D5764 7F E4 FB 78 */ mr r4, r31 /* 801D9B08 001D5768 48 00 06 85 */ bl DBWrite /* 801D9B0C 001D576C 2C 03 00 00 */ cmpwi r3, 0 /* 801D9B10 001D5770 41 82 00 14 */ beq lbl_801D9B24 /* 801D9B14 001D5774 7F DE 1A 14 */ add r30, r30, r3 /* 801D9B18 001D5778 7F E3 F8 50 */ subf r31, r3, r31 lbl_801D9B1C: /* 801D9B1C 001D577C 2C 1F 00 00 */ cmpwi r31, 0 /* 801D9B20 001D5780 41 81 FF E0 */ bgt lbl_801D9B00 lbl_801D9B24: /* 801D9B24 001D5784 38 60 00 00 */ li r3, 0 lbl_801D9B28: /* 801D9B28 001D5788 80 01 00 14 */ lwz r0, 0x14(r1) /* 801D9B2C 001D578C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801D9B30 001D5790 83 C1 00 08 */ lwz r30, 8(r1) /* 801D9B34 001D5794 7C 08 03 A6 */ mtlr r0 /* 801D9B38 001D5798 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9B3C 001D579C 4E 80 00 20 */ blr .global gdev_cc_read gdev_cc_read: /* 801D9B40 001D57A0 94 21 FA E0 */ stwu r1, -0x520(r1) /* 801D9B44 001D57A4 7C 08 02 A6 */ mflr r0 /* 801D9B48 001D57A8 90 01 05 24 */ stw r0, 0x524(r1) /* 801D9B4C 001D57AC BF 61 05 0C */ stmw r27, 0x50c(r1) /* 801D9B50 001D57B0 7C 7B 1B 78 */ mr r27, r3 /* 801D9B54 001D57B4 3B A0 00 00 */ li r29, 0 /* 801D9B58 001D57B8 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13) /* 801D9B5C 001D57BC 2C 00 00 00 */ cmpwi r0, 0 /* 801D9B60 001D57C0 40 82 00 0C */ bne lbl_801D9B6C /* 801D9B64 001D57C4 38 60 D8 EF */ li r3, -10001 /* 801D9B68 001D57C8 48 00 00 78 */ b lbl_801D9BE0 lbl_801D9B6C: /* 801D9B6C 001D57CC 3C 60 80 49 */ lis r3, lbl_80491290@ha /* 801D9B70 001D57D0 7C 9E 23 78 */ mr r30, r4 /* 801D9B74 001D57D4 3B E3 12 90 */ addi r31, r3, lbl_80491290@l /* 801D9B78 001D57D8 48 00 00 38 */ b lbl_801D9BB0 lbl_801D9B7C: /* 801D9B7C 001D57DC 3B A0 00 00 */ li r29, 0 /* 801D9B80 001D57E0 48 00 04 E9 */ bl DBQueryData /* 801D9B84 001D57E4 7C 7C 1B 79 */ or. r28, r3, r3 /* 801D9B88 001D57E8 41 82 00 28 */ beq lbl_801D9BB0 /* 801D9B8C 001D57EC 7F C4 F3 78 */ mr r4, r30 /* 801D9B90 001D57F0 38 61 00 08 */ addi r3, r1, 8 /* 801D9B94 001D57F4 48 00 05 79 */ bl DBRead /* 801D9B98 001D57F8 7C 7D 1B 79 */ or. r29, r3, r3 /* 801D9B9C 001D57FC 40 82 00 14 */ bne lbl_801D9BB0 /* 801D9BA0 001D5800 7F E3 FB 78 */ mr r3, r31 /* 801D9BA4 001D5804 7F 85 E3 78 */ mr r5, r28 /* 801D9BA8 001D5808 38 81 00 08 */ addi r4, r1, 8 /* 801D9BAC 001D580C 48 00 02 0D */ bl CircleBufferWriteBytes lbl_801D9BB0: /* 801D9BB0 001D5810 7F E3 FB 78 */ mr r3, r31 /* 801D9BB4 001D5814 48 00 03 5D */ bl CBGetBytesAvailableForRead /* 801D9BB8 001D5818 7C 03 F0 40 */ cmplw r3, r30 /* 801D9BBC 001D581C 41 80 FF C0 */ blt lbl_801D9B7C /* 801D9BC0 001D5820 28 1D 00 00 */ cmplwi r29, 0 /* 801D9BC4 001D5824 40 82 00 18 */ bne lbl_801D9BDC /* 801D9BC8 001D5828 3C 60 80 49 */ lis r3, lbl_80491290@ha /* 801D9BCC 001D582C 7F 64 DB 78 */ mr r4, r27 /* 801D9BD0 001D5830 38 63 12 90 */ addi r3, r3, lbl_80491290@l /* 801D9BD4 001D5834 7F C5 F3 78 */ mr r5, r30 /* 801D9BD8 001D5838 48 00 00 D9 */ bl CircleBufferReadBytes lbl_801D9BDC: /* 801D9BDC 001D583C 7F A3 EB 78 */ mr r3, r29 lbl_801D9BE0: /* 801D9BE0 001D5840 BB 61 05 0C */ lmw r27, 0x50c(r1) /* 801D9BE4 001D5844 80 01 05 24 */ lwz r0, 0x524(r1) /* 801D9BE8 001D5848 7C 08 03 A6 */ mtlr r0 /* 801D9BEC 001D584C 38 21 05 20 */ addi r1, r1, 0x520 /* 801D9BF0 001D5850 4E 80 00 20 */ blr .global gdev_cc_close gdev_cc_close: /* 801D9BF4 001D5854 38 60 00 00 */ li r3, 0 /* 801D9BF8 001D5858 4E 80 00 20 */ blr .global gdev_cc_open gdev_cc_open: /* 801D9BFC 001D585C 80 0D 9F E8 */ lwz r0, lbl_8063F2A8-_SDA_BASE_(r13) /* 801D9C00 001D5860 2C 00 00 00 */ cmpwi r0, 0 /* 801D9C04 001D5864 41 82 00 0C */ beq lbl_801D9C10 /* 801D9C08 001D5868 38 60 D8 EB */ li r3, -10005 /* 801D9C0C 001D586C 4E 80 00 20 */ blr lbl_801D9C10: /* 801D9C10 001D5870 38 00 00 01 */ li r0, 1 /* 801D9C14 001D5874 38 60 00 00 */ li r3, 0 /* 801D9C18 001D5878 90 0D 9F E8 */ stw r0, lbl_8063F2A8-_SDA_BASE_(r13) /* 801D9C1C 001D587C 4E 80 00 20 */ blr .global gdev_cc_shutdown gdev_cc_shutdown: /* 801D9C20 001D5880 38 60 00 00 */ li r3, 0 /* 801D9C24 001D5884 4E 80 00 20 */ blr .global gdev_cc_initialize gdev_cc_initialize: /* 801D9C28 001D5888 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801D9C2C 001D588C 7C 08 02 A6 */ mflr r0 /* 801D9C30 001D5890 90 01 00 14 */ stw r0, 0x14(r1) /* 801D9C34 001D5894 48 00 03 85 */ bl DBInitComm /* 801D9C38 001D5898 3C 60 80 49 */ lis r3, lbl_80491290@ha /* 801D9C3C 001D589C 3C 80 80 49 */ lis r4, lbl_80490D90@ha /* 801D9C40 001D58A0 38 63 12 90 */ addi r3, r3, lbl_80491290@l /* 801D9C44 001D58A4 38 A0 05 00 */ li r5, 0x500 /* 801D9C48 001D58A8 38 84 0D 90 */ addi r4, r4, lbl_80490D90@l /* 801D9C4C 001D58AC 48 00 02 75 */ bl CircleBufferInitialize /* 801D9C50 001D58B0 80 01 00 14 */ lwz r0, 0x14(r1) /* 801D9C54 001D58B4 38 60 00 00 */ li r3, 0 /* 801D9C58 001D58B8 7C 08 03 A6 */ mtlr r0 /* 801D9C5C 001D58BC 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9C60 001D58C0 4E 80 00 20 */ blr .global OutputData OutputData: /* 801D9C64 001D58C4 2C 04 00 00 */ cmpwi r4, 0 /* 801D9C68 001D58C8 38 A0 00 00 */ li r5, 0 /* 801D9C6C 001D58CC 4C 81 00 20 */ blelr /* 801D9C70 001D58D0 2C 04 00 08 */ cmpwi r4, 8 /* 801D9C74 001D58D4 38 64 FF F8 */ addi r3, r4, -8 /* 801D9C78 001D58D8 40 81 00 20 */ ble lbl_801D9C98 /* 801D9C7C 001D58DC 38 03 00 07 */ addi r0, r3, 7 /* 801D9C80 001D58E0 54 00 E8 FE */ srwi r0, r0, 3 /* 801D9C84 001D58E4 7C 09 03 A6 */ mtctr r0 /* 801D9C88 001D58E8 2C 03 00 00 */ cmpwi r3, 0 /* 801D9C8C 001D58EC 40 81 00 0C */ ble lbl_801D9C98 lbl_801D9C90: /* 801D9C90 001D58F0 38 A5 00 08 */ addi r5, r5, 8 /* 801D9C94 001D58F4 42 00 FF FC */ bdnz lbl_801D9C90 lbl_801D9C98: /* 801D9C98 001D58F8 7C 05 20 50 */ subf r0, r5, r4 /* 801D9C9C 001D58FC 7C 09 03 A6 */ mtctr r0 /* 801D9CA0 001D5900 7C 05 20 00 */ cmpw r5, r4 /* 801D9CA4 001D5904 4C 80 00 20 */ bgelr lbl_801D9CA8: /* 801D9CA8 001D5908 42 00 00 00 */ bdnz lbl_801D9CA8 /* 801D9CAC 001D590C 4E 80 00 20 */ blr