diff --git a/config/sly1.yaml b/config/sly1.yaml index a0ad83ce..262e9bf9 100644 --- a/config/sly1.yaml +++ b/config/sly1.yaml @@ -177,7 +177,7 @@ segments: - [0x92e70, asm, P2/phasemem] - [0x92ec0, asm, P2/pipe] - [0x93068, asm, P2/pnt] - #- [0x, asm, P2/po] + - [0x931a8, c, P2/po] - [0x94210, c, P2/prog] - [0x94598, asm, P2/prompt] #- [0x, asm, P2/proxy] diff --git a/config/symbol_addrs.txt b/config/symbol_addrs.txt index 56d500c1..3a031e0c 100644 --- a/config/symbol_addrs.txt +++ b/config/symbol_addrs.txt @@ -274,7 +274,7 @@ PprocPop__3CGc = 0x11A7D8; // type:func UpdateRecyclable__3CGc = 0x11A800; // type:func MarkLiveObjects__3CGc = 0x11A850; // type:func Collect__3CGc = 0x11AB58; // type:func -__static_initialization_and_destruction_0 = 0x11ADF8; // type:func +gc__static_initialization_and_destruction_0 = 0x11ADF8; // type:func _GLOBAL_$I$g_gc = 0x11AE38; // type:func _GLOBAL_$D$g_gc = 0x11AE58; // type:func @@ -1014,7 +1014,33 @@ g_phase = 0x269ba4; // size:0x4 //////////////////////////////////////////////////////////////// // P2/po.c //////////////////////////////////////////////////////////////// -PpoCur__Fv = 0x1925f0; // type:func +InitPo__FP2PO = 0x1921A8; // type:func +ClonePo__FP2POT0 = 0x1921E8; // type:func +HandlePoMessage__FP2PO5MSGIDPv = 0x192230; // type:func +OnPoActive__FP2POiT0 = 0x1922E8; // type:func +GetPoCpdefi__FP2POfP6CPDEFI = 0x192380; // type:func +MakePoActive__FP2PO = 0x192418; // type:func +FUN_00192450 = 0x192450; // type:func +FUN_00192498 = 0x192498; // type:func +CollectPoPrize__FP2PO3PCKP3ALO = 0x1924C8; // type:func +PpoCur__Fv = 0x1925F0; // type:func +PpoStart__Fv = 0x192620; // type:func +_IppoFindPo__FP2PO = 0x192688; // type:func +AddPoToList__FP2PO = 0x1926D0; // type:func +RemovePoFromList__FP2PO = 0x192780; // type:func +OnPoAdd__FP2PO = 0x192820; // type:func +OnPoRemove__FP2PO = 0x192850; // type:func +SwitchToIppo__Fi = 0x192880; // type:func +SetPoPlayable__FP2POi = 0x192990; // type:func +SwitchToPo__FP2PO = 0x1929D0; // type:func +PpziCur__Fv = 0x1929F8; // type:func +PlayPoDialog__FP2POP6DIALOG = 0x192A38; // type:func +FUN_00192a70 = 0x192A70; // type:func +UpdatePo__FP2POf = 0x192B58; // type:func +UsePoCharm__FP2PO = 0x192C58; // type:func +FUN_00192dd0 = 0x192DD0; // type:func +po__static_initialization_and_destruction_04 = 0x1930B8; // type:func +_GLOBAL_$I$InitPo__FP2PO = 0x1931F0; // type:func //////////////////////////////////////////////////////////////// diff --git a/include/suv.h b/include/suv.h new file mode 100644 index 00000000..0dff8339 --- /dev/null +++ b/include/suv.h @@ -0,0 +1,13 @@ +/** + * @file suv.h + * + * @brief SUV vehicle (the van and other racecars). + */ +#ifndef SUV_H +#define SUV_H + +#include "common.h" + +// ... + +#endif // SUV_H diff --git a/src/P2/po.c b/src/P2/po.c new file mode 100644 index 00000000..297e19bb --- /dev/null +++ b/src/P2/po.c @@ -0,0 +1,62 @@ +#include + +INCLUDE_ASM(const s32, "P2/po", InitPo__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", ClonePo__FP2POT0); + +INCLUDE_ASM(const s32, "P2/po", HandlePoMessage__FP2PO5MSGIDPv); + +INCLUDE_ASM(const s32, "P2/po", OnPoActive__FP2POiT0); + +INCLUDE_ASM(const s32, "P2/po", GetPoCpdefi__FP2POfP6CPDEFI); +INCLUDE_ASM(const s32, "P2/po", func_00192410); + +INCLUDE_ASM(const s32, "P2/po", MakePoActive__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", FUN_00192450); +INCLUDE_ASM(const s32, "P2/po", func_00192488); +INCLUDE_ASM(const s32, "P2/po", func_00192490); + +INCLUDE_ASM(const s32, "P2/po", FUN_00192498); + +INCLUDE_ASM(const s32, "P2/po", CollectPoPrize__FP2PO3PCKP3ALO); +INCLUDE_ASM(const s32, "P2/po", func_001925C0); + +INCLUDE_ASM(const s32, "P2/po", PpoCur__Fv); + +INCLUDE_ASM(const s32, "P2/po", PpoStart__Fv); + +INCLUDE_ASM(const s32, "P2/po", _IppoFindPo__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", AddPoToList__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", RemovePoFromList__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", OnPoAdd__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", OnPoRemove__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", SwitchToIppo__Fi); +INCLUDE_ASM(const s32, "P2/po", func_00192988); + +INCLUDE_ASM(const s32, "P2/po", SetPoPlayable__FP2POi); + +INCLUDE_ASM(const s32, "P2/po", SwitchToPo__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", PpziCur__Fv); +INCLUDE_ASM(const s32, "P2/po", func_00192A28); + +INCLUDE_ASM(const s32, "P2/po", PlayPoDialog__FP2POP6DIALOG); + +INCLUDE_ASM(const s32, "P2/po", FUN_00192a70); + +INCLUDE_ASM(const s32, "P2/po", UpdatePo__FP2POf); + +INCLUDE_ASM(const s32, "P2/po", UsePoCharm__FP2PO); + +INCLUDE_ASM(const s32, "P2/po", FUN_00192dd0); +INCLUDE_ASM(const s32, "P2/po", func_001930B0); + +INCLUDE_ASM(const s32, "P2/po", po__static_initialization_and_destruction_04); + +INCLUDE_ASM(const s32, "P2/po", _GLOBAL_$I$InitPo__FP2PO); diff --git a/src/P2/splice/gc.cpp b/src/P2/splice/gc.cpp index 5c458513..9651fa8e 100644 --- a/src/P2/splice/gc.cpp +++ b/src/P2/splice/gc.cpp @@ -95,7 +95,7 @@ INCLUDE_ASM(const s32, "P2/splice/gc", Collect__3CGc); // The functions below are compiler generated and their INCLUDE_ASM can just be removed once g_gc is defined // Currently blocked until references to g_gc are resolved -INCLUDE_ASM(const s32, "P2/splice/gc", __static_initialization_and_destruction_0); +INCLUDE_ASM(const s32, "P2/splice/gc", gc__static_initialization_and_destruction_0); INCLUDE_ASM(const s32, "P2/splice/gc", _GLOBAL_$I$g_gc); diff --git a/src/P2/suv.c b/src/P2/suv.c index 132ee38a..b8161334 100644 --- a/src/P2/suv.c +++ b/src/P2/suv.c @@ -1,4 +1,4 @@ -#include "common.h" +#include INCLUDE_ASM(const s32, "P2/suv", InitSuv__FP3SUV);