prime/asm/MetroidPrime/CAutoSave.s

231 lines
12 KiB
ArmAsm
Raw Normal View History

2022-04-12 07:10:32 +00:00
.include "macros.inc"
.section .text, "ax"
.global GetIsContinueDraw__9CAutoSaveCFv
GetIsContinueDraw__9CAutoSaveCFv:
/* 8002515C 000220BC 38 60 00 00 */ li r3, 0
/* 80025160 000220C0 4E 80 00 20 */ blr
.global Draw__9CAutoSaveCFv
Draw__9CAutoSaveCFv:
/* 80025164 000220C4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80025168 000220C8 7C 08 02 A6 */ mflr r0
/* 8002516C 000220CC 90 01 00 14 */ stw r0, 0x14(r1)
/* 80025170 000220D0 80 63 00 14 */ lwz r3, 0x14(r3)
/* 80025174 000220D4 48 22 A5 AD */ bl Draw__15CSaveGameScreenFv
/* 80025178 000220D8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8002517C 000220DC 7C 08 03 A6 */ mtlr r0
/* 80025180 000220E0 38 21 00 10 */ addi r1, r1, 0x10
/* 80025184 000220E4 4E 80 00 20 */ blr
.global OnMessage__9CAutoSaveFRC20CArchitectureMessageR18CArchitectureQueue
OnMessage__9CAutoSaveFRC20CArchitectureMessageR18CArchitectureQueue:
/* 80025188 000220E8 94 21 FF 80 */ stwu r1, -0x80(r1)
/* 8002518C 000220EC 7C 08 02 A6 */ mflr r0
/* 80025190 000220F0 38 A0 00 00 */ li r5, 0
/* 80025194 000220F4 90 01 00 84 */ stw r0, 0x84(r1)
/* 80025198 000220F8 93 E1 00 7C */ stw r31, 0x7c(r1)
/* 8002519C 000220FC 7C 7F 1B 78 */ mr r31, r3
/* 800251A0 00022100 80 CD A0 80 */ lwz r6, gpGameState@sda21(r13)
/* 800251A4 00022104 80 06 02 10 */ lwz r0, 0x210(r6)
/* 800251A8 00022108 80 66 02 14 */ lwz r3, 0x214(r6)
/* 800251AC 0002210C 7C 00 2A 78 */ xor r0, r0, r5
/* 800251B0 00022110 7C 63 2A 78 */ xor r3, r3, r5
/* 800251B4 00022114 7C 60 03 79 */ or. r0, r3, r0
/* 800251B8 00022118 40 82 00 0C */ bne lbl_800251C4
/* 800251BC 0002211C 38 60 00 02 */ li r3, 2
/* 800251C0 00022120 48 00 01 9C */ b lbl_8002535C
lbl_800251C4:
/* 800251C4 00022124 80 04 00 04 */ lwz r0, 4(r4)
/* 800251C8 00022128 2C 00 00 05 */ cmpwi r0, 5
/* 800251CC 0002212C 41 82 00 3C */ beq lbl_80025208
/* 800251D0 00022130 40 80 01 88 */ bge lbl_80025358
/* 800251D4 00022134 2C 00 00 04 */ cmpwi r0, 4
/* 800251D8 00022138 40 80 00 08 */ bge lbl_800251E0
/* 800251DC 0002213C 48 00 01 7C */ b lbl_80025358
lbl_800251E0:
/* 800251E0 00022140 7C 83 23 78 */ mr r3, r4
/* 800251E4 00022144 48 02 C9 D9 */ bl GetParmTimerTick__7MakeMsgFRC20CArchitectureMessage
/* 800251E8 00022148 7C 64 1B 78 */ mr r4, r3
/* 800251EC 0002214C 80 7F 00 14 */ lwz r3, 0x14(r31)
/* 800251F0 00022150 C0 24 00 04 */ lfs f1, 4(r4)
/* 800251F4 00022154 48 22 A5 A9 */ bl Update__15CSaveGameScreenFf
/* 800251F8 00022158 2C 03 00 00 */ cmpwi r3, 0
/* 800251FC 0002215C 41 82 01 5C */ beq lbl_80025358
/* 80025200 00022160 38 60 00 02 */ li r3, 2
/* 80025204 00022164 48 00 01 58 */ b lbl_8002535C
lbl_80025208:
/* 80025208 00022168 7C 83 23 78 */ mr r3, r4
/* 8002520C 0002216C 48 02 C8 D9 */ bl GetParmUserInput__7MakeMsgFRC20CArchitectureMessage
/* 80025210 00022170 3C A0 80 3E */ lis r5, lbl_803D8E9C@ha
/* 80025214 00022174 3C 80 80 3E */ lis r4, lbl_803D9810@ha
/* 80025218 00022178 38 05 8E 9C */ addi r0, r5, lbl_803D8E9C@l
/* 8002521C 0002217C 90 01 00 38 */ stw r0, 0x38(r1)
/* 80025220 00022180 38 04 98 10 */ addi r0, r4, lbl_803D9810@l
/* 80025224 00022184 90 01 00 38 */ stw r0, 0x38(r1)
/* 80025228 00022188 C0 03 00 04 */ lfs f0, 4(r3)
/* 8002522C 0002218C D0 01 00 3C */ stfs f0, 0x3c(r1)
/* 80025230 00022190 80 03 00 08 */ lwz r0, 8(r3)
/* 80025234 00022194 90 01 00 40 */ stw r0, 0x40(r1)
/* 80025238 00022198 C0 03 00 0C */ lfs f0, 0xc(r3)
/* 8002523C 0002219C D0 01 00 44 */ stfs f0, 0x44(r1)
/* 80025240 000221A0 C0 03 00 10 */ lfs f0, 0x10(r3)
/* 80025244 000221A4 D0 01 00 48 */ stfs f0, 0x48(r1)
/* 80025248 000221A8 C0 03 00 14 */ lfs f0, 0x14(r3)
/* 8002524C 000221AC D0 01 00 4C */ stfs f0, 0x4c(r1)
/* 80025250 000221B0 C0 03 00 18 */ lfs f0, 0x18(r3)
/* 80025254 000221B4 D0 01 00 50 */ stfs f0, 0x50(r1)
/* 80025258 000221B8 C0 03 00 1C */ lfs f0, 0x1c(r3)
/* 8002525C 000221BC D0 01 00 54 */ stfs f0, 0x54(r1)
/* 80025260 000221C0 C0 03 00 20 */ lfs f0, 0x20(r3)
/* 80025264 000221C4 D0 01 00 58 */ stfs f0, 0x58(r1)
/* 80025268 000221C8 88 03 00 24 */ lbz r0, 0x24(r3)
/* 8002526C 000221CC 98 01 00 5C */ stb r0, 0x5c(r1)
/* 80025270 000221D0 88 03 00 25 */ lbz r0, 0x25(r3)
/* 80025274 000221D4 98 01 00 5D */ stb r0, 0x5d(r1)
/* 80025278 000221D8 88 03 00 26 */ lbz r0, 0x26(r3)
/* 8002527C 000221DC 98 01 00 5E */ stb r0, 0x5e(r1)
/* 80025280 000221E0 88 03 00 27 */ lbz r0, 0x27(r3)
/* 80025284 000221E4 98 01 00 5F */ stb r0, 0x5f(r1)
/* 80025288 000221E8 C0 03 00 28 */ lfs f0, 0x28(r3)
/* 8002528C 000221EC D0 01 00 60 */ stfs f0, 0x60(r1)
/* 80025290 000221F0 C0 03 00 2C */ lfs f0, 0x2c(r3)
/* 80025294 000221F4 D0 01 00 64 */ stfs f0, 0x64(r1)
/* 80025298 000221F8 88 03 00 30 */ lbz r0, 0x30(r3)
/* 8002529C 000221FC 98 01 00 68 */ stb r0, 0x68(r1)
/* 800252A0 00022200 88 03 00 31 */ lbz r0, 0x31(r3)
/* 800252A4 00022204 98 01 00 69 */ stb r0, 0x69(r1)
/* 800252A8 00022208 88 03 00 32 */ lbz r0, 0x32(r3)
/* 800252AC 0002220C 38 61 00 38 */ addi r3, r1, 0x38
/* 800252B0 00022210 98 01 00 6A */ stb r0, 0x6a(r1)
/* 800252B4 00022214 4B FF 67 31 */ bl GetUserInput__21CArchMsgParmUserInputCFv
/* 800252B8 00022218 C0 03 00 00 */ lfs f0, 0(r3)
/* 800252BC 0002221C 38 81 00 08 */ addi r4, r1, 8
/* 800252C0 00022220 D0 01 00 08 */ stfs f0, 8(r1)
/* 800252C4 00022224 80 03 00 04 */ lwz r0, 4(r3)
/* 800252C8 00022228 90 01 00 0C */ stw r0, 0xc(r1)
/* 800252CC 0002222C C0 03 00 08 */ lfs f0, 8(r3)
/* 800252D0 00022230 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 800252D4 00022234 C0 03 00 0C */ lfs f0, 0xc(r3)
/* 800252D8 00022238 D0 01 00 14 */ stfs f0, 0x14(r1)
/* 800252DC 0002223C C0 03 00 10 */ lfs f0, 0x10(r3)
/* 800252E0 00022240 D0 01 00 18 */ stfs f0, 0x18(r1)
/* 800252E4 00022244 C0 03 00 14 */ lfs f0, 0x14(r3)
/* 800252E8 00022248 D0 01 00 1C */ stfs f0, 0x1c(r1)
/* 800252EC 0002224C C0 03 00 18 */ lfs f0, 0x18(r3)
/* 800252F0 00022250 D0 01 00 20 */ stfs f0, 0x20(r1)
/* 800252F4 00022254 C0 03 00 1C */ lfs f0, 0x1c(r3)
/* 800252F8 00022258 D0 01 00 24 */ stfs f0, 0x24(r1)
/* 800252FC 0002225C 88 03 00 20 */ lbz r0, 0x20(r3)
/* 80025300 00022260 98 01 00 28 */ stb r0, 0x28(r1)
/* 80025304 00022264 88 03 00 21 */ lbz r0, 0x21(r3)
/* 80025308 00022268 98 01 00 29 */ stb r0, 0x29(r1)
/* 8002530C 0002226C 88 03 00 22 */ lbz r0, 0x22(r3)
/* 80025310 00022270 98 01 00 2A */ stb r0, 0x2a(r1)
/* 80025314 00022274 88 03 00 23 */ lbz r0, 0x23(r3)
/* 80025318 00022278 98 01 00 2B */ stb r0, 0x2b(r1)
/* 8002531C 0002227C C0 03 00 24 */ lfs f0, 0x24(r3)
/* 80025320 00022280 D0 01 00 2C */ stfs f0, 0x2c(r1)
/* 80025324 00022284 C0 03 00 28 */ lfs f0, 0x28(r3)
/* 80025328 00022288 D0 01 00 30 */ stfs f0, 0x30(r1)
/* 8002532C 0002228C 88 03 00 2C */ lbz r0, 0x2c(r3)
/* 80025330 00022290 98 01 00 34 */ stb r0, 0x34(r1)
/* 80025334 00022294 88 03 00 2D */ lbz r0, 0x2d(r3)
/* 80025338 00022298 98 01 00 35 */ stb r0, 0x35(r1)
/* 8002533C 0002229C 88 03 00 2E */ lbz r0, 0x2e(r3)
/* 80025340 000222A0 98 01 00 36 */ stb r0, 0x36(r1)
/* 80025344 000222A4 80 7F 00 14 */ lwz r3, 0x14(r31)
/* 80025348 000222A8 48 22 A4 29 */ bl ProcessUserInput__15CSaveGameScreenFRC11CFinalInput
/* 8002534C 000222AC 38 61 00 38 */ addi r3, r1, 0x38
/* 80025350 000222B0 38 80 FF FF */ li r4, -1
/* 80025354 000222B4 4B FF 66 99 */ bl __dt__21CArchMsgParmUserInputFv
lbl_80025358:
/* 80025358 000222B8 38 60 00 01 */ li r3, 1
lbl_8002535C:
/* 8002535C 000222BC 80 01 00 84 */ lwz r0, 0x84(r1)
/* 80025360 000222C0 83 E1 00 7C */ lwz r31, 0x7c(r1)
/* 80025364 000222C4 7C 08 03 A6 */ mtlr r0
/* 80025368 000222C8 38 21 00 80 */ addi r1, r1, 0x80
/* 8002536C 000222CC 4E 80 00 20 */ blr
.global __dt__9CAutoSaveFv
__dt__9CAutoSaveFv:
/* 80025370 000222D0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80025374 000222D4 7C 08 02 A6 */ mflr r0
/* 80025378 000222D8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8002537C 000222DC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80025380 000222E0 7C 9F 23 78 */ mr r31, r4
/* 80025384 000222E4 93 C1 00 08 */ stw r30, 8(r1)
/* 80025388 000222E8 7C 7E 1B 79 */ or. r30, r3, r3
/* 8002538C 000222EC 41 82 00 40 */ beq lbl_800253CC
/* 80025390 000222F0 3C 60 80 3E */ lis r3, lbl_803D99F0@ha
/* 80025394 000222F4 34 1E 00 14 */ addic. r0, r30, 0x14
/* 80025398 000222F8 38 03 99 F0 */ addi r0, r3, lbl_803D99F0@l
/* 8002539C 000222FC 90 1E 00 00 */ stw r0, 0(r30)
/* 800253A0 00022300 41 82 00 10 */ beq lbl_800253B0
/* 800253A4 00022304 80 7E 00 14 */ lwz r3, 0x14(r30)
/* 800253A8 00022308 38 80 00 01 */ li r4, 1
/* 800253AC 0002230C 48 22 AA 79 */ bl __dt__15CSaveGameScreenFv
lbl_800253B0:
/* 800253B0 00022310 7F C3 F3 78 */ mr r3, r30
/* 800253B4 00022314 38 80 00 00 */ li r4, 0
/* 800253B8 00022318 48 02 D7 ED */ bl __dt__6CIOWinFv
/* 800253BC 0002231C 7F E0 07 35 */ extsh. r0, r31
/* 800253C0 00022320 40 81 00 0C */ ble lbl_800253CC
/* 800253C4 00022324 7F C3 F3 78 */ mr r3, r30
/* 800253C8 00022328 48 2F 05 69 */ bl Free__7CMemoryFPCv
lbl_800253CC:
/* 800253CC 0002232C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800253D0 00022330 7F C3 F3 78 */ mr r3, r30
/* 800253D4 00022334 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800253D8 00022338 83 C1 00 08 */ lwz r30, 8(r1)
/* 800253DC 0002233C 7C 08 03 A6 */ mtlr r0
/* 800253E0 00022340 38 21 00 10 */ addi r1, r1, 0x10
/* 800253E4 00022344 4E 80 00 20 */ blr
.global __ct__9CAutoSaveFv
__ct__9CAutoSaveFv:
/* 800253E8 00022348 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800253EC 0002234C 7C 08 02 A6 */ mflr r0
/* 800253F0 00022350 3C 80 80 3D */ lis r4, lbl_803CCB50@ha
/* 800253F4 00022354 90 01 00 24 */ stw r0, 0x24(r1)
/* 800253F8 00022358 38 84 CB 50 */ addi r4, r4, lbl_803CCB50@l
/* 800253FC 0002235C 38 84 01 48 */ addi r4, r4, 0x148
/* 80025400 00022360 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80025404 00022364 7C 7F 1B 78 */ mr r31, r3
/* 80025408 00022368 38 61 00 08 */ addi r3, r1, 8
/* 8002540C 0002236C 4B FD F8 AD */ bl string_l__4rstlFPCc
/* 80025410 00022370 7F E3 FB 78 */ mr r3, r31
/* 80025414 00022374 38 81 00 08 */ addi r4, r1, 8
/* 80025418 00022378 48 02 D7 F5 */ bl "__ct__6CIOWinFRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 8002541C 0002237C 38 61 00 08 */ addi r3, r1, 8
/* 80025420 00022380 48 31 86 C1 */ bl "internal_dereference__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>Fv"
/* 80025424 00022384 3C 60 80 3E */ lis r3, lbl_803D99F0@ha
/* 80025428 00022388 3C 80 80 3D */ lis r4, lbl_803CCB50@ha
/* 8002542C 0002238C 38 03 99 F0 */ addi r0, r3, lbl_803D99F0@l
/* 80025430 00022390 38 60 00 98 */ li r3, 0x98
/* 80025434 00022394 38 84 CB 50 */ addi r4, r4, lbl_803CCB50@l
/* 80025438 00022398 90 1F 00 00 */ stw r0, 0(r31)
/* 8002543C 0002239C 38 84 01 51 */ addi r4, r4, 0x151
/* 80025440 000223A0 38 A0 00 00 */ li r5, 0
/* 80025444 000223A4 48 2F 04 29 */ bl __nw__FUlPCcPCc
/* 80025448 000223A8 7C 60 1B 79 */ or. r0, r3, r3
/* 8002544C 000223AC 41 82 00 1C */ beq lbl_80025468
/* 80025450 000223B0 80 CD A0 80 */ lwz r6, gpGameState@sda21(r13)
/* 80025454 000223B4 38 80 00 01 */ li r4, 1
/* 80025458 000223B8 80 A6 02 10 */ lwz r5, 0x210(r6)
/* 8002545C 000223BC 80 C6 02 14 */ lwz r6, 0x214(r6)
/* 80025460 000223C0 48 22 AB 1D */ bl __ct__15CSaveGameScreen
/* 80025464 000223C4 7C 60 1B 78 */ mr r0, r3
lbl_80025468:
/* 80025468 000223C8 90 1F 00 14 */ stw r0, 0x14(r31)
/* 8002546C 000223CC 80 6D A0 78 */ lwz r3, gpMain@sda21(r13)
/* 80025470 000223D0 4B FD F1 21 */ bl RefreshGameState__5CMainFv
/* 80025474 000223D4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80025478 000223D8 7F E3 FB 78 */ mr r3, r31
/* 8002547C 000223DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80025480 000223E0 7C 08 03 A6 */ mtlr r0
/* 80025484 000223E4 38 21 00 20 */ addi r1, r1, 0x20
/* 80025488 000223E8 4E 80 00 20 */ blr