.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global GXBeginDisplayList GXBeginDisplayList: /* 8028663C 0028229C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80286640 002822A0 7C 08 02 A6 */ mflr r0 /* 80286644 002822A4 90 01 00 24 */ stw r0, 0x24(r1) /* 80286648 002822A8 39 61 00 20 */ addi r11, r1, 0x20 /* 8028664C 002822AC 4B F4 0A DD */ bl _savegpr_27 /* 80286650 002822B0 83 C2 A0 D0 */ lwz r30, lbl_806426D0-_SDA2_BASE_(r2) /* 80286654 002822B4 3F E0 80 51 */ lis r31, lbl_80516280@ha /* 80286658 002822B8 3B FF 62 80 */ addi r31, r31, lbl_80516280@l /* 8028665C 002822BC 7C 7B 1B 78 */ mr r27, r3 /* 80286660 002822C0 80 1E 05 FC */ lwz r0, 0x5fc(r30) /* 80286664 002822C4 7C 9C 23 78 */ mr r28, r4 /* 80286668 002822C8 3B BF 00 00 */ addi r29, r31, 0 /* 8028666C 002822CC 2C 00 00 00 */ cmpwi r0, 0 /* 80286670 002822D0 41 82 00 08 */ beq lbl_80286678 /* 80286674 002822D4 4B FF A8 5D */ bl __GXSetDirtyState lbl_80286678: /* 80286678 002822D8 88 1E 05 F9 */ lbz r0, 0x5f9(r30) /* 8028667C 002822DC 2C 00 00 00 */ cmpwi r0, 0 /* 80286680 002822E0 41 82 00 14 */ beq lbl_80286694 /* 80286684 002822E4 7F C4 F3 78 */ mr r4, r30 /* 80286688 002822E8 38 7F 00 80 */ addi r3, r31, 0x80 /* 8028668C 002822EC 38 A0 06 00 */ li r5, 0x600 /* 80286690 002822F0 4B D7 D9 71 */ bl memcpy lbl_80286694: /* 80286694 002822F4 7C 7B E2 14 */ add r3, r27, r28 /* 80286698 002822F8 38 80 00 00 */ li r4, 0 /* 8028669C 002822FC 38 A3 FF FC */ addi r5, r3, -4 /* 802866A0 00282300 93 7D 00 00 */ stw r27, 0(r29) /* 802866A4 00282304 38 00 00 01 */ li r0, 1 /* 802866A8 00282308 38 7F 06 80 */ addi r3, r31, 0x680 /* 802866AC 0028230C 90 BD 00 04 */ stw r5, 4(r29) /* 802866B0 00282310 93 9D 00 08 */ stw r28, 8(r29) /* 802866B4 00282314 90 9D 00 1C */ stw r4, 0x1c(r29) /* 802866B8 00282318 93 7D 00 14 */ stw r27, 0x14(r29) /* 802866BC 0028231C 93 7D 00 18 */ stw r27, 0x18(r29) /* 802866C0 00282320 98 1E 05 F8 */ stb r0, 0x5f8(r30) /* 802866C4 00282324 4B FF 89 D1 */ bl GXGetCPUFifo /* 802866C8 00282328 38 7F 00 00 */ addi r3, r31, 0 /* 802866CC 0028232C 4B FF 84 05 */ bl GXSetCPUFifo /* 802866D0 00282330 4B FF A0 31 */ bl GXResetWriteGatherPipe /* 802866D4 00282334 39 61 00 20 */ addi r11, r1, 0x20 /* 802866D8 00282338 4B F4 0A 9D */ bl _restgpr_27 /* 802866DC 0028233C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802866E0 00282340 7C 08 03 A6 */ mtlr r0 /* 802866E4 00282344 38 21 00 20 */ addi r1, r1, 0x20 /* 802866E8 00282348 4E 80 00 20 */ blr .global GXEndDisplayList GXEndDisplayList: /* 802866EC 0028234C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802866F0 00282350 7C 08 02 A6 */ mflr r0 /* 802866F4 00282354 90 01 00 24 */ stw r0, 0x24(r1) /* 802866F8 00282358 39 61 00 20 */ addi r11, r1, 0x20 /* 802866FC 0028235C 4B F4 0A 29 */ bl _savegpr_26 /* 80286700 00282360 3F C0 80 51 */ lis r30, lbl_80516280@ha /* 80286704 00282364 3B DE 62 80 */ addi r30, r30, lbl_80516280@l /* 80286708 00282368 38 7E 00 00 */ addi r3, r30, 0 /* 8028670C 0028236C 4B FF 89 89 */ bl GXGetCPUFifo /* 80286710 00282370 38 7E 00 00 */ addi r3, r30, 0 /* 80286714 00282374 4B FF 8A 31 */ bl GXGetFifoWrap /* 80286718 00282378 7C 7F 1B 78 */ mr r31, r3 /* 8028671C 0028237C 38 7E 06 80 */ addi r3, r30, 0x680 /* 80286720 00282380 4B FF 83 B1 */ bl GXSetCPUFifo /* 80286724 00282384 83 A2 A0 D0 */ lwz r29, lbl_806426D0-_SDA2_BASE_(r2) /* 80286728 00282388 88 1D 05 F9 */ lbz r0, 0x5f9(r29) /* 8028672C 0028238C 2C 00 00 00 */ cmpwi r0, 0 /* 80286730 00282390 41 82 00 30 */ beq lbl_80286760 /* 80286734 00282394 4B FE 80 29 */ bl OSDisableInterrupts /* 80286738 00282398 83 82 A0 D0 */ lwz r28, lbl_806426D0-_SDA2_BASE_(r2) /* 8028673C 0028239C 7C 7B 1B 78 */ mr r27, r3 /* 80286740 002823A0 38 9E 00 80 */ addi r4, r30, 0x80 /* 80286744 002823A4 38 A0 06 00 */ li r5, 0x600 /* 80286748 002823A8 83 5C 00 08 */ lwz r26, 8(r28) /* 8028674C 002823AC 7F 83 E3 78 */ mr r3, r28 /* 80286750 002823B0 4B D7 D8 B1 */ bl memcpy /* 80286754 002823B4 93 5C 00 08 */ stw r26, 8(r28) /* 80286758 002823B8 7F 63 DB 78 */ mr r3, r27 /* 8028675C 002823BC 4B FE 80 29 */ bl OSRestoreInterrupts lbl_80286760: /* 80286760 002823C0 57 E0 06 3F */ clrlwi. r0, r31, 0x18 /* 80286764 002823C4 38 00 00 00 */ li r0, 0 /* 80286768 002823C8 98 1D 05 F8 */ stb r0, 0x5f8(r29) /* 8028676C 002823CC 40 82 00 10 */ bne lbl_8028677C /* 80286770 002823D0 38 7E 00 00 */ addi r3, r30, 0 /* 80286774 002823D4 4B FF 89 C9 */ bl GXGetFifoCount /* 80286778 002823D8 48 00 00 08 */ b lbl_80286780 lbl_8028677C: /* 8028677C 002823DC 38 60 00 00 */ li r3, 0 lbl_80286780: /* 80286780 002823E0 39 61 00 20 */ addi r11, r1, 0x20 /* 80286784 002823E4 4B F4 09 ED */ bl _restgpr_26 /* 80286788 002823E8 80 01 00 24 */ lwz r0, 0x24(r1) /* 8028678C 002823EC 7C 08 03 A6 */ mtlr r0 /* 80286790 002823F0 38 21 00 20 */ addi r1, r1, 0x20 /* 80286794 002823F4 4E 80 00 20 */ blr .global GXCallDisplayList GXCallDisplayList: /* 80286798 002823F8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8028679C 002823FC 7C 08 02 A6 */ mflr r0 /* 802867A0 00282400 90 01 00 24 */ stw r0, 0x24(r1) /* 802867A4 00282404 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802867A8 00282408 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2) /* 802867AC 0028240C 93 C1 00 18 */ stw r30, 0x18(r1) /* 802867B0 00282410 7C 9E 23 78 */ mr r30, r4 /* 802867B4 00282414 93 A1 00 14 */ stw r29, 0x14(r1) /* 802867B8 00282418 7C 7D 1B 78 */ mr r29, r3 /* 802867BC 0028241C 80 1F 05 FC */ lwz r0, 0x5fc(r31) /* 802867C0 00282420 2C 00 00 00 */ cmpwi r0, 0 /* 802867C4 00282424 41 82 00 08 */ beq lbl_802867CC /* 802867C8 00282428 4B FF A7 09 */ bl __GXSetDirtyState lbl_802867CC: /* 802867CC 0028242C 80 1F 00 00 */ lwz r0, 0(r31) /* 802867D0 00282430 2C 00 00 00 */ cmpwi r0, 0 /* 802867D4 00282434 40 82 00 08 */ bne lbl_802867DC /* 802867D8 00282438 4B FF AA BD */ bl __GXSendFlushPrim lbl_802867DC: /* 802867DC 0028243C 3C 60 CC 01 */ lis r3, 0xCC008000@ha /* 802867E0 00282440 38 00 00 40 */ li r0, 0x40 /* 802867E4 00282444 98 03 80 00 */ stb r0, 0xCC008000@l(r3) /* 802867E8 00282448 93 A3 80 00 */ stw r29, -0x8000(r3) /* 802867EC 0028244C 93 C3 80 00 */ stw r30, -0x8000(r3) /* 802867F0 00282450 80 01 00 24 */ lwz r0, 0x24(r1) /* 802867F4 00282454 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802867F8 00282458 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802867FC 0028245C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80286800 00282460 7C 08 03 A6 */ mtlr r0 /* 80286804 00282464 38 21 00 20 */ addi r1, r1, 0x20 /* 80286808 00282468 4E 80 00 20 */ blr