summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPheenoh <pheenoh@gmail.com>2021-02-17 13:01:00 -0500
committerPheenoh <pheenoh@gmail.com>2021-02-17 13:01:00 -0500
commit327dff36bedfbf052b8bb450976d90bade9884b4 (patch)
tree87b09d61be43a04d24ea7a75cd59e6b53c5cf9f6
parente262f2c2243eae5a962a95b981f627bb12418d60 (diff)
fopOvlpReq_Request OK
-rw-r--r--asm/data.s4
-rw-r--r--include/f/f_op/f_op_overlap_req.h12
-rw-r--r--include/f/f_op/f_op_overlap_req/asm/func_8001E954.s4
-rw-r--r--src/f/f_op/f_op_overlap_req.cpp27
4 files changed, 28 insertions, 19 deletions
diff --git a/asm/data.s b/asm/data.s
index 7f57eeb0c9..08eddef243 100644
--- a/asm/data.s
+++ b/asm/data.s
@@ -140,8 +140,8 @@ lbl_803A37FC:
.global lbl_803A382C
lbl_803A382C:
.incbin "baserom.dol", 0x3A082C, 0x64
-.global lbl_803A3890
-lbl_803A3890:
+.global phaseMethod
+phaseMethod:
.incbin "baserom.dol", 0x3A0890, 0x38
.global lbl_803A38C8
lbl_803A38C8:
diff --git a/include/f/f_op/f_op_overlap_req.h b/include/f/f_op/f_op_overlap_req.h
index fbc097a316..9a7c6c5586 100644
--- a/include/f/f_op/f_op_overlap_req.h
+++ b/include/f/f_op/f_op_overlap_req.h
@@ -1,9 +1,10 @@
#ifndef F_F_OP_OVERLAP_REQ_H_
#define F_F_OP_OVERLAP_REQ_H_
+#include "SComponent/c_phase.h"
#include "SComponent/c_request.h"
-#include "f/f_pc/f_pc_layer.h"
#include "dolphin/types.h"
+#include "f/f_pc/f_pc_layer.h"
class overlap_request_class {
public:
@@ -18,14 +19,7 @@ public:
u8 field_0x12;
u8 field_0x13;
int field_0x14;
- u8 field_0x18;
- u8 field_0x19;
- u8 field_0x1a;
- u8 field_0x1b;
- u8 field_0x1c;
- u8 field_0x1d;
- u8 field_0x1e;
- u8 field_0x1f;
+ request_of_phase_process_class field_0x18;
u8* field_0x20;
layer_class* pCurrentLayer;
};
diff --git a/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s b/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s
index 35247ac809..97fb20c692 100644
--- a/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s
+++ b/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s
@@ -16,8 +16,8 @@ lbl_8001E988:
/* 8001E98C 0001B8CC 48 24 7E A5 */ bl cReq_Command__FP18request_base_classUc
/* 8001E990 0001B8D0 B3 DD 00 10 */ sth r30, 0x10(r29)
/* 8001E994 0001B8D4 38 7D 00 18 */ addi r3, r29, 0x18
-/* 8001E998 0001B8D8 3C 80 80 3A */ lis r4, lbl_803A3890@ha
-/* 8001E99C 0001B8DC 38 84 38 90 */ addi r4, r4, lbl_803A3890@l
+/* 8001E998 0001B8D8 3C 80 80 3A */ lis r4, phaseMethod@ha
+/* 8001E99C 0001B8DC 38 84 38 90 */ addi r4, r4, phaseMethod@l
/* 8001E9A0 0001B8E0 48 24 7C 91 */ bl cPhs_Set
/* 8001E9A4 0001B8E4 7F A3 EB 78 */ mr r3, r29
/* 8001E9A8 0001B8E8 7F E4 FB 78 */ mr r4, r31
diff --git a/src/f/f_op/f_op_overlap_req.cpp b/src/f/f_op/f_op_overlap_req.cpp
index 766a0e2b25..d191be96ec 100644
--- a/src/f/f_op/f_op_overlap_req.cpp
+++ b/src/f/f_op/f_op_overlap_req.cpp
@@ -23,7 +23,6 @@ void fopOvlpReq_Handler__FP21overlap_request_class(void);
void fopOvlpReq_phase_Done__FP21overlap_request_class(void);
void fopOvlpReq_SetPeektime__FP21overlap_request_classUs(void);
void fopOvlpReq_Is_PeektimeLimit__FP21overlap_request_class(void);
-void fopOvlpReq_SetPeektime(void);
void fopOvlpReq_phase_Done(void);
void func_8001E748(void);
void func_8001E794(void);
@@ -33,9 +32,11 @@ void func_8001E8A4(void);
void func_8001E904(void);
}
+void fopOvlpReq_SetPeektime(overlap_request_class*, u16);
+
// additional symbols needed for f_op_overlap_req.cpp
// autogenerated by split.py v0.4 at 2021-02-15 20:24:53.163658
-extern u8 lbl_803A3890;
+extern cPhs__Handler* phaseMethod[8];
int fopOvlpReq_phase_Done(overlap_request_class* pOvlpReq) {
if (fpcM_Delete(pOvlpReq->field_0x20) == 1) {
@@ -107,13 +108,27 @@ int fopOvlpReq_phase_IsCreated(overlap_request_class* pOvlpReq) {
int fopOvlpReq_phase_Create(overlap_request_class* pOvlpReq) {
fpcLy_SetCurrentLayer(pOvlpReq->pCurrentLayer);
- pOvlpReq->field_0x14 = fpcSCtRq_Request(fpcLy_CurrentLayer(),pOvlpReq->field_0x10, 0,0,0);
+ pOvlpReq->field_0x14 = fpcSCtRq_Request(fpcLy_CurrentLayer(), pOvlpReq->field_0x10, 0, 0, 0);
return 2;
}
-asm request_base_class* fopOvlpReq_Request(overlap_request_class*, s16, u16) {
- nofralloc
-#include "f/f_op/f_op_overlap_req/asm/func_8001E954.s"
+request_base_class* fopOvlpReq_Request(overlap_request_class* pOvlpReq, s16 param_2, u16 param_3) {
+ if (pOvlpReq->field_0x4 == 1) {
+ pOvlpReq = 0;
+ return (request_base_class*)pOvlpReq;
+ }
+
+ cReq_Command((request_base_class*)pOvlpReq, 1);
+ pOvlpReq->field_0x10 = param_2;
+ cPhs_Set(&pOvlpReq->field_0x18, (cPhs__Handler*)phaseMethod);
+ fopOvlpReq_SetPeektime(pOvlpReq, param_3);
+ pOvlpReq->field_0x4 = 1;
+ pOvlpReq->field_0x2 = 1;
+ pOvlpReq->field_0x20 = 0;
+ pOvlpReq->field_0x8 = 0;
+ pOvlpReq->field_0xc = 0;
+ pOvlpReq->pCurrentLayer = fpcLy_RootLayer();
+ return (request_base_class*)pOvlpReq;
}
asm int fopOvlpReq_Handler(overlap_request_class*) {