prime/asm/MetroidPrime/ScriptObjects/CScriptRelay.s

248 lines
12 KiB
ArmAsm
Raw Normal View History

2022-04-12 09:57:02 +00:00
.include "macros.inc"
2022-04-18 04:19:18 +00:00
.section .data
.balign 8
2022-04-18 04:19:18 +00:00
2022-10-16 13:59:20 +00:00
.global __vt__12CScriptRelay
__vt__12CScriptRelay:
2022-04-18 04:19:18 +00:00
# ROM: 0x3DC830
.4byte 0
.4byte 0
.4byte __dt__12CScriptRelayFv
.4byte Accept__12CScriptRelayFR8IVisitor
.4byte PreThink__7CEntityFfR13CStateManager
.4byte Think__12CScriptRelayFfR13CStateManager
.4byte AcceptScriptMsg__12CScriptRelayF20EScriptObjectMessage9TUniqueIdR13CStateManager
.4byte SetActive__7CEntityFb
2022-04-18 04:19:18 +00:00
2022-04-12 09:57:02 +00:00
.section .text, "ax"
.global __dt__12CScriptRelayFv
__dt__12CScriptRelayFv:
/* 800E2068 000DEFC8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E206C 000DEFCC 7C 08 02 A6 */ mflr r0
/* 800E2070 000DEFD0 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E2074 000DEFD4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E2078 000DEFD8 7C 9F 23 78 */ mr r31, r4
/* 800E207C 000DEFDC 93 C1 00 08 */ stw r30, 8(r1)
/* 800E2080 000DEFE0 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E2084 000DEFE4 41 82 00 28 */ beq lbl_800E20AC
2022-10-16 13:59:20 +00:00
/* 800E2088 000DEFE8 3C A0 80 3E */ lis r5, __vt__12CScriptRelay@ha
2022-04-12 09:57:02 +00:00
/* 800E208C 000DEFEC 38 80 00 00 */ li r4, 0
2022-10-16 13:59:20 +00:00
/* 800E2090 000DEFF0 38 05 F8 30 */ addi r0, r5, __vt__12CScriptRelay@l
2022-04-12 09:57:02 +00:00
/* 800E2094 000DEFF4 90 1E 00 00 */ stw r0, 0(r30)
/* 800E2098 000DEFF8 4B F6 F1 DD */ bl __dt__7CEntityFv
/* 800E209C 000DEFFC 7F E0 07 35 */ extsh. r0, r31
/* 800E20A0 000DF000 40 81 00 0C */ ble lbl_800E20AC
/* 800E20A4 000DF004 7F C3 F3 78 */ mr r3, r30
/* 800E20A8 000DF008 48 23 38 89 */ bl Free__7CMemoryFPCv
lbl_800E20AC:
/* 800E20AC 000DF00C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E20B0 000DF010 7F C3 F3 78 */ mr r3, r30
/* 800E20B4 000DF014 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E20B8 000DF018 83 C1 00 08 */ lwz r30, 8(r1)
/* 800E20BC 000DF01C 7C 08 03 A6 */ mtlr r0
/* 800E20C0 000DF020 38 21 00 10 */ addi r1, r1, 0x10
2022-07-14 05:48:03 +00:00
/* 800E20C4 000DF024 4E 80 00 20 */ blr
2022-04-12 09:57:02 +00:00
.global Accept__12CScriptRelayFR8IVisitor
Accept__12CScriptRelayFR8IVisitor:
/* 800E20C8 000DF028 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E20CC 000DF02C 7C 08 02 A6 */ mflr r0
/* 800E20D0 000DF030 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E20D4 000DF034 7C 60 1B 78 */ mr r0, r3
/* 800E20D8 000DF038 7C 83 23 78 */ mr r3, r4
/* 800E20DC 000DF03C 81 84 00 00 */ lwz r12, 0(r4)
/* 800E20E0 000DF040 7C 04 03 78 */ mr r4, r0
/* 800E20E4 000DF044 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 800E20E8 000DF048 7D 89 03 A6 */ mtctr r12
2022-07-14 05:48:03 +00:00
/* 800E20EC 000DF04C 4E 80 04 21 */ bctrl
2022-04-12 09:57:02 +00:00
/* 800E20F0 000DF050 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E20F4 000DF054 7C 08 03 A6 */ mtlr r0
/* 800E20F8 000DF058 38 21 00 10 */ addi r1, r1, 0x10
2022-07-14 05:48:03 +00:00
/* 800E20FC 000DF05C 4E 80 00 20 */ blr
2022-04-12 09:57:02 +00:00
.global Think__12CScriptRelayFfR13CStateManager
Think__12CScriptRelayFfR13CStateManager:
/* 800E2100 000DF060 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E2104 000DF064 7C 08 02 A6 */ mflr r0
/* 800E2108 000DF068 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E210C 000DF06C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E2110 000DF070 7C 9F 23 78 */ mr r31, r4
/* 800E2114 000DF074 93 C1 00 08 */ stw r30, 8(r1)
/* 800E2118 000DF078 7C 7E 1B 78 */ mr r30, r3
/* 800E211C 000DF07C 80 03 00 38 */ lwz r0, 0x38(r3)
/* 800E2120 000DF080 2C 00 00 00 */ cmpwi r0, 0
/* 800E2124 000DF084 41 82 00 40 */ beq lbl_800E2164
/* 800E2128 000DF088 48 00 00 24 */ b lbl_800E214C
lbl_800E212C:
/* 800E212C 000DF08C 80 DE 00 38 */ lwz r6, 0x38(r30)
/* 800E2130 000DF090 7F C3 F3 78 */ mr r3, r30
/* 800E2134 000DF094 7F E5 FB 78 */ mr r5, r31
/* 800E2138 000DF098 38 80 00 09 */ li r4, 9
/* 800E213C 000DF09C 38 06 FF FF */ addi r0, r6, -1
/* 800E2140 000DF0A0 38 C0 FF FF */ li r6, -1
/* 800E2144 000DF0A4 90 1E 00 38 */ stw r0, 0x38(r30)
/* 800E2148 000DF0A8 4B F6 EF 79 */ bl SendScriptMsgs__7CEntityF18EScriptObjectStateR13CStateManager20EScriptObjectMessage
lbl_800E214C:
/* 800E214C 000DF0AC 80 1E 00 38 */ lwz r0, 0x38(r30)
/* 800E2150 000DF0B0 2C 00 00 00 */ cmpwi r0, 0
/* 800E2154 000DF0B4 40 82 FF D8 */ bne lbl_800E212C
/* 800E2158 000DF0B8 7F C3 F3 78 */ mr r3, r30
/* 800E215C 000DF0BC 7F E4 FB 78 */ mr r4, r31
/* 800E2160 000DF0C0 48 00 01 25 */ bl UpdateObjectRef__12CScriptRelayFR13CStateManager
lbl_800E2164:
/* 800E2164 000DF0C4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E2168 000DF0C8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E216C 000DF0CC 83 C1 00 08 */ lwz r30, 8(r1)
/* 800E2170 000DF0D0 7C 08 03 A6 */ mtlr r0
/* 800E2174 000DF0D4 38 21 00 10 */ addi r1, r1, 0x10
2022-07-14 05:48:03 +00:00
/* 800E2178 000DF0D8 4E 80 00 20 */ blr
2022-04-12 09:57:02 +00:00
.global AcceptScriptMsg__12CScriptRelayF20EScriptObjectMessage9TUniqueIdR13CStateManager
AcceptScriptMsg__12CScriptRelayF20EScriptObjectMessage9TUniqueIdR13CStateManager:
/* 800E217C 000DF0DC 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 800E2180 000DF0E0 7C 08 02 A6 */ mflr r0
/* 800E2184 000DF0E4 90 01 00 34 */ stw r0, 0x34(r1)
/* 800E2188 000DF0E8 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 800E218C 000DF0EC 7C DF 33 78 */ mr r31, r6
/* 800E2190 000DF0F0 93 C1 00 28 */ stw r30, 0x28(r1)
/* 800E2194 000DF0F4 7C 7E 1B 78 */ mr r30, r3
/* 800E2198 000DF0F8 93 A1 00 24 */ stw r29, 0x24(r1)
/* 800E219C 000DF0FC 7C 9D 23 78 */ mr r29, r4
/* 800E21A0 000DF100 A0 05 00 00 */ lhz r0, 0(r5)
/* 800E21A4 000DF104 38 A1 00 0C */ addi r5, r1, 0xc
/* 800E21A8 000DF108 B0 01 00 0C */ sth r0, 0xc(r1)
/* 800E21AC 000DF10C 4B F6 EF B1 */ bl AcceptScriptMsg__7CEntityF20EScriptObjectMessage9TUniqueIdR13CStateManager
/* 800E21B0 000DF110 2C 1D 00 22 */ cmpwi r29, 0x22
/* 800E21B4 000DF114 41 82 00 A8 */ beq lbl_800E225C
/* 800E21B8 000DF118 40 80 00 B0 */ bge lbl_800E2268
/* 800E21BC 000DF11C 2C 1D 00 0D */ cmpwi r29, 0xd
/* 800E21C0 000DF120 41 82 00 08 */ beq lbl_800E21C8
/* 800E21C4 000DF124 48 00 00 A4 */ b lbl_800E2268
lbl_800E21C8:
/* 800E21C8 000DF128 88 1E 00 30 */ lbz r0, 0x30(r30)
/* 800E21CC 000DF12C 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E21D0 000DF130 41 82 00 98 */ beq lbl_800E2268
/* 800E21D4 000DF134 80 7E 00 38 */ lwz r3, 0x38(r30)
/* 800E21D8 000DF138 38 03 00 01 */ addi r0, r3, 1
/* 800E21DC 000DF13C 90 1E 00 38 */ stw r0, 0x38(r30)
/* 800E21E0 000DF140 A0 1F 0F 76 */ lhz r0, 0xf76(r31)
/* 800E21E4 000DF144 B0 01 00 10 */ sth r0, 0x10(r1)
/* 800E21E8 000DF148 48 00 00 34 */ b lbl_800E221C
lbl_800E21EC:
/* 800E21EC 000DF14C A0 01 00 10 */ lhz r0, 0x10(r1)
/* 800E21F0 000DF150 7F E3 FB 78 */ mr r3, r31
/* 800E21F4 000DF154 38 81 00 08 */ addi r4, r1, 8
/* 800E21F8 000DF158 B0 01 00 08 */ sth r0, 8(r1)
/* 800E21FC 000DF15C 4B F6 A3 79 */ bl ObjectById__13CStateManagerF9TUniqueId
/* 800E2200 000DF160 28 03 00 00 */ cmplwi r3, 0
/* 800E2204 000DF164 40 82 00 10 */ bne lbl_800E2214
2022-04-24 01:54:45 +00:00
/* 800E2208 000DF168 A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
2022-04-12 09:57:02 +00:00
/* 800E220C 000DF16C B0 01 00 10 */ sth r0, 0x10(r1)
/* 800E2210 000DF170 48 00 00 28 */ b lbl_800E2238
lbl_800E2214:
/* 800E2214 000DF174 A0 03 00 34 */ lhz r0, 0x34(r3)
/* 800E2218 000DF178 B0 01 00 10 */ sth r0, 0x10(r1)
lbl_800E221C:
/* 800E221C 000DF17C A0 61 00 10 */ lhz r3, 0x10(r1)
/* 800E2220 000DF180 A0 1E 00 08 */ lhz r0, 8(r30)
/* 800E2224 000DF184 7C 03 00 40 */ cmplw r3, r0
/* 800E2228 000DF188 41 82 00 10 */ beq lbl_800E2238
2022-04-24 01:54:45 +00:00
/* 800E222C 000DF18C A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
2022-04-12 09:57:02 +00:00
/* 800E2230 000DF190 7C 03 00 40 */ cmplw r3, r0
/* 800E2234 000DF194 40 82 FF B8 */ bne lbl_800E21EC
lbl_800E2238:
/* 800E2238 000DF198 A0 61 00 10 */ lhz r3, 0x10(r1)
2022-04-24 01:54:45 +00:00
/* 800E223C 000DF19C A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
2022-04-12 09:57:02 +00:00
/* 800E2240 000DF1A0 7C 03 00 40 */ cmplw r3, r0
/* 800E2244 000DF1A4 40 82 00 24 */ bne lbl_800E2268
/* 800E2248 000DF1A8 A0 1F 0F 76 */ lhz r0, 0xf76(r31)
/* 800E224C 000DF1AC B0 1E 00 34 */ sth r0, 0x34(r30)
/* 800E2250 000DF1B0 A0 1E 00 08 */ lhz r0, 8(r30)
/* 800E2254 000DF1B4 B0 1F 0F 76 */ sth r0, 0xf76(r31)
/* 800E2258 000DF1B8 48 00 00 10 */ b lbl_800E2268
lbl_800E225C:
/* 800E225C 000DF1BC 7F C3 F3 78 */ mr r3, r30
/* 800E2260 000DF1C0 7F E4 FB 78 */ mr r4, r31
/* 800E2264 000DF1C4 48 00 00 21 */ bl UpdateObjectRef__12CScriptRelayFR13CStateManager
lbl_800E2268:
/* 800E2268 000DF1C8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 800E226C 000DF1CC 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 800E2270 000DF1D0 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 800E2274 000DF1D4 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 800E2278 000DF1D8 7C 08 03 A6 */ mtlr r0
/* 800E227C 000DF1DC 38 21 00 30 */ addi r1, r1, 0x30
2022-07-14 05:48:03 +00:00
/* 800E2280 000DF1E0 4E 80 00 20 */ blr
2022-04-12 09:57:02 +00:00
.global UpdateObjectRef__12CScriptRelayFR13CStateManager
UpdateObjectRef__12CScriptRelayFR13CStateManager:
/* 800E2284 000DF1E4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800E2288 000DF1E8 7C 08 02 A6 */ mflr r0
/* 800E228C 000DF1EC 90 01 00 24 */ stw r0, 0x24(r1)
/* 800E2290 000DF1F0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800E2294 000DF1F4 7C 9F 23 78 */ mr r31, r4
/* 800E2298 000DF1F8 38 9F 0F 76 */ addi r4, r31, 0xf76
/* 800E229C 000DF1FC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800E22A0 000DF200 7C 7E 1B 78 */ mr r30, r3
/* 800E22A4 000DF204 48 00 00 3C */ b lbl_800E22E0
lbl_800E22A8:
/* 800E22A8 000DF208 A0 1E 00 08 */ lhz r0, 8(r30)
/* 800E22AC 000DF20C 7C 03 00 40 */ cmplw r3, r0
/* 800E22B0 000DF210 40 82 00 10 */ bne lbl_800E22C0
/* 800E22B4 000DF214 A0 1E 00 34 */ lhz r0, 0x34(r30)
/* 800E22B8 000DF218 B0 04 00 00 */ sth r0, 0(r4)
/* 800E22BC 000DF21C 48 00 00 3C */ b lbl_800E22F8
lbl_800E22C0:
/* 800E22C0 000DF220 A0 04 00 00 */ lhz r0, 0(r4)
/* 800E22C4 000DF224 7F E3 FB 78 */ mr r3, r31
/* 800E22C8 000DF228 38 81 00 08 */ addi r4, r1, 8
/* 800E22CC 000DF22C B0 01 00 08 */ sth r0, 8(r1)
/* 800E22D0 000DF230 4B F6 A2 A5 */ bl ObjectById__13CStateManagerF9TUniqueId
/* 800E22D4 000DF234 28 03 00 00 */ cmplwi r3, 0
/* 800E22D8 000DF238 41 82 00 20 */ beq lbl_800E22F8
/* 800E22DC 000DF23C 38 83 00 34 */ addi r4, r3, 0x34
lbl_800E22E0:
/* 800E22E0 000DF240 28 04 00 00 */ cmplwi r4, 0
/* 800E22E4 000DF244 41 82 00 14 */ beq lbl_800E22F8
/* 800E22E8 000DF248 A0 64 00 00 */ lhz r3, 0(r4)
2022-04-24 01:54:45 +00:00
/* 800E22EC 000DF24C A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
2022-04-12 09:57:02 +00:00
/* 800E22F0 000DF250 7C 03 00 40 */ cmplw r3, r0
/* 800E22F4 000DF254 40 82 FF B4 */ bne lbl_800E22A8
lbl_800E22F8:
/* 800E22F8 000DF258 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800E22FC 000DF25C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800E2300 000DF260 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800E2304 000DF264 7C 08 03 A6 */ mtlr r0
/* 800E2308 000DF268 38 21 00 20 */ addi r1, r1, 0x20
2022-07-14 05:48:03 +00:00
/* 800E230C 000DF26C 4E 80 00 20 */ blr
2022-04-12 09:57:02 +00:00
2022-10-16 13:59:20 +00:00
.global "__ct__12CScriptRelayF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfob"
"__ct__12CScriptRelayF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfob":
2022-04-12 09:57:02 +00:00
/* 800E2310 000DF270 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800E2314 000DF274 7C 08 02 A6 */ mflr r0
/* 800E2318 000DF278 90 01 00 24 */ stw r0, 0x24(r1)
/* 800E231C 000DF27C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800E2320 000DF280 7C 7F 1B 78 */ mr r31, r3
/* 800E2324 000DF284 A0 04 00 00 */ lhz r0, 0(r4)
/* 800E2328 000DF288 7C A4 2B 78 */ mr r4, r5
/* 800E232C 000DF28C 7C C5 33 78 */ mr r5, r6
/* 800E2330 000DF290 7C E6 3B 78 */ mr r6, r7
/* 800E2334 000DF294 B0 01 00 08 */ sth r0, 8(r1)
/* 800E2338 000DF298 7C 87 23 78 */ mr r7, r4
/* 800E233C 000DF29C 38 81 00 08 */ addi r4, r1, 8
/* 800E2340 000DF2A0 4B F6 EF E5 */ bl "__ct__7CEntityF9TUniqueIdRC11CEntityInfobRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
2022-10-16 13:59:20 +00:00
/* 800E2344 000DF2A4 3C 60 80 3E */ lis r3, __vt__12CScriptRelay@ha
2022-04-12 09:57:02 +00:00
/* 800E2348 000DF2A8 38 00 00 00 */ li r0, 0
2022-10-16 13:59:20 +00:00
/* 800E234C 000DF2AC 38 83 F8 30 */ addi r4, r3, __vt__12CScriptRelay@l
2022-04-12 09:57:02 +00:00
/* 800E2350 000DF2B0 7F E3 FB 78 */ mr r3, r31
/* 800E2354 000DF2B4 90 9F 00 00 */ stw r4, 0(r31)
2022-04-24 01:54:45 +00:00
/* 800E2358 000DF2B8 A0 8D A3 8C */ lhz r4, kInvalidUniqueId@sda21(r13)
2022-04-12 09:57:02 +00:00
/* 800E235C 000DF2BC B0 9F 00 34 */ sth r4, 0x34(r31)
/* 800E2360 000DF2C0 90 1F 00 38 */ stw r0, 0x38(r31)
/* 800E2364 000DF2C4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800E2368 000DF2C8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800E236C 000DF2CC 7C 08 03 A6 */ mtlr r0
/* 800E2370 000DF2D0 38 21 00 20 */ addi r1, r1, 0x20
/* 800E2374 000DF2D4 4E 80 00 20 */ blr