Files
dusklight/src/f_pc/f_pc_debug_sv.cpp
T
LagoLunatic aed8fe8cd3 Start linking some TUs on debug and PAL (#2612)
* Fix clang union handling (affects all TUs including d_camera.h)

Union members with non-trivial ctors/dtors is undefined behavior and clangd normally throws a fit and refuses to parse the whole union, but it seems to be possible to ifdef the problematic ctors out for non-mwerks compilers and explicitly tell modern compilers to use the defaults instead. Thanks to encounter for this fix.

* Link all TUs that already match on debug

In order to link TUs for debug, most functions seem to need to have their alignment set to 16 in symbols.txt. There are a few hundred functions that seem to be the exception and break when their alignment is set to 16, but I don't know the reason for this.

* Remove some fakematches (nosyminline/sym off) for weak func order in retail

* Fix clang not knowing that MSL_C++ is C++

* Link more debug TUs

* Fix missing PAL split

* Fix wrong slashes being used in includes

* RZDE01_00: Fix incorrect capitalization in config.yml

* Add RZDE01_00 to configure task

* Revert configure.py to use MatchingFor

* Fix PAL splits and symbols, link matching PAL TUs
2025-08-27 17:37:31 -07:00

858 lines
18 KiB
C++

#ifdef DEBUG
#include "f_pc/f_pc_base.h"
#include "f_pc/f_pc_debug_sv.h"
int fpcBs_pc_c__print(base_process_class* i_process) {
return 0;
}
void fpcBs_pc_c__fpcDbSv_callbackXX(void* i_process, char* arg1) {
arg1;
fpcBs_pc_c__print((base_process_class*)i_process);
}
void fpcBs_pc_c__fpcDbSv_callback00(void* i_process) {
// "Waiting for creation"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "生成待ち");
}
void fpcBs_pc_c__fpcDbSv_callback02(void* i_process) {
// "Creation error"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "生成エラー");
}
void fpcBs_pc_c__fpcDbSv_callback10(void* i_process) {
// "Deletion Retry"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "削除のリトライ");
}
void fpcBs_pc_c__fpcDbSv_callback11(void* i_process) {
// "Deletion Denied"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "削除の拒否");
}
void fpcBs_pc_c__fpcDbSv_callback20(void* i_process) {
// "Waiting for old Scene deletion"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "旧シーン削除待");
}
void fpcBs_pc_c__fpcDbSv_callback21(void* i_process) {
// "Waiting for Scene creation"
fpcBs_pc_c__fpcDbSv_callbackXX((base_process_class*)i_process, "シーン生成待ち");
}
const fpcDbSv_callback g_fpcDbSv_service[50] = {
fpcBs_pc_c__fpcDbSv_callback00,
NULL,
fpcBs_pc_c__fpcDbSv_callback02,
NULL,
fpcBs_pc_c__fpcDbSv_callback10,
fpcBs_pc_c__fpcDbSv_callback11,
NULL,
fpcBs_pc_c__fpcDbSv_callback20,
fpcBs_pc_c__fpcDbSv_callback21,
};
char* fpcDbSv_getNameString(s16 i_name) {
static char* namelist[] = {
"OVERLAP0",
"OVERLAP1",
"OVERLAP3",
"OVERLAP6",
"OVERLAP7",
"OVERLAP8",
"OVERLAP9",
"OVERLAP10",
"OVERLAP11",
"LOGO_SCENE",
"MENU_SCENE",
"PLAY_SCENE",
"OPENING_SCENE",
"NAME_SCENE",
"NAMEEX_SCENE",
"WARNING_SCENE",
"WARNING2_SCENE",
"OVERLAP2",
"ROOM_SCENE",
"KANKYO",
"ALLDIE",
"ENVSE",
"Obj_Swpush",
"Obj_Swpush2",
"Obj_Swpush5",
"Tag_Gstart",
"NO_CHG_ROOM",
"Obj_Lv6ElevtA",
"OBJ_SO",
"Obj_Movebox",
"Obj_SwTurn",
"Obj_Lv6SwTurn",
"OBJ_SEKIZOA",
"OBJ_GRA",
"TAG_GRA",
"TAG_YAMI",
"Obj_Ladder",
"OBJ_BEF",
"OBJ_FMOBJ",
"OBJ_LBOX",
"OBJ_WEB0",
"OBJ_WEB1",
"OBJ_CB",
"OBJ_MAKI",
"OBJ_BRG",
"OBJ_GB",
"OBJ_GM",
"OBJ_TOBY",
"OBJ_TP",
"TREESH",
"Obj_ZDoor",
"Obj_Pillar",
"Obj_Cdoor",
"GRDWATER",
"Obj_RotBridge",
"Obj_MagLift",
"Obj_MagLiftRot",
"Obj_Lv1Cdl00",
"Obj_Lv1Cdl01",
"Obj_TvCdlst",
"Obj_HsTarget",
"Obj_HeavySw",
"Obj_GoGate",
"Obj_TaFence",
"Obj_Saidan",
"Obj_SpinLift",
"Obj_BmWindow",
"Obj_RfHole",
"Obj_WaterPillar",
"Obj_SyRock",
"Obj_BsGate",
"Obj_AmiShutter",
"Obj_WtGate",
"Obj_Lv2Candle",
"Obj_TogeTrap",
"Obj_RotTrap",
"Obj_SwallShutter",
"Obj_IceWall",
"Obj_Lv5SwIce",
"Obj_Lv5FBoard",
"Obj_Turara",
"Obj_TwGate",
"Obj_Digholl",
"Obj_Digpl",
"Obj_TestCube",
"Obj_Kshutter",
"NPC_COACH",
"NPC_THEB",
"COACH_FIRE",
"COACH2D",
"BALLOON2D",
"SKIP2D",
"Obj_MvStair",
"Obj_Cowdoor",
"Obj_Swpropeller",
"Obj_BoomShutter",
"NPC_KS",
"Obj_Hfuta",
"Obj_BkDoor",
"Obj_Cboard",
"Obj_MGate",
"Obj_Ikada",
"Obj_Ice_l",
"Obj_Ice_s",
"Obj_E_CREATE",
"Obj_Bhbridge",
"Obj_Kaisou",
"Obj_HHASHI",
"Obj_BHASHI",
"OCTHASHI",
"Obj_THASHI",
"Obj_CRVGATE",
"Obj_CRVFENCE",
"Obj_CRVHAHEN",
"Obj_CRVSTEEL",
"Obj_CRVLH_UP",
"Obj_CRVLH_DW",
"Obj_RIVERROCK",
"Obj_DUST",
"Obj_ITA",
"Obj_Window",
"Obj_MetalBox",
"Obj_BBox",
"OBJ_MSIMA",
"OBJ_MYOGAN",
"B_ZANTS",
"Obj_ChainBlock",
"Obj_ChainWall",
"Obj_KkrGate",
"Obj_RiderGate",
"Obj_Onsen",
"Obj_Chest",
"Obj_Bemos",
"Obj_RopeBridge",
"Obj_WellCover",
"Obj_GraveStone",
"Obj_ZraRock",
"Obj_GraRock",
"Obj_GrzRock",
"GRA_WALL",
"OBJ_ONSEN_FIRE",
"Obj_Lv6bemos",
"Obj_Lv6bemos2",
"Obj_BarDesk",
"Obj_DigSnow",
"Obj_Ytaihou",
"Obj_Elevator",
"Obj_Lv6TogeRoll",
"Obj_Lv6TogeTrap",
"Obj_Lv6Tenbin",
"Obj_Lv6SwGate",
"Obj_Lv6Lblock",
"Obj_Lv6ChgGate",
"Obj_Lv6FuriTrap",
"Obj_Lv6SzGate",
"Obj_Lv4EdShutter",
"Obj_Lv4Gate",
"Obj_Lv4PoGate",
"Obj_Lv4SlideWall",
"Obj_Lv4HsTarget",
"Obj_Lv7PropY",
"Obj_Lv7BsGate",
"Obj_Lv8OptiLift",
"Obj_Lv8KekkaiTrap",
"Obj_Lv8Lift",
"Obj_Lv8UdFloor",
"Obj_Lv9SwShutter",
"Obj_TobyHouse",
"Obj_poCandle",
"Obj_Lv4DigSand",
"Obj_FallObj",
"Obj_SmgDoor",
"Obj_SwLight",
"Obj_Avalanche",
"Obj_MirrorScrew",
"Obj_MirrorSand",
"Obj_MirrorTable",
"Obj_MirrorChain",
"Obj_Mirror6Pole",
"Obj_SwSpinner",
"Obj_TDoor",
"Obj_Lv7Bridge",
"Obj_zrTurara",
"Obj_TakaraDai",
"Obj_Table",
"Obj_CatDoor",
"Obj_Gake",
"CSTAF",
"Obj_Lv4RailWall",
"Obj_Lv4Sand",
"Obj_PushDoor",
"PushDoor",
"Obj_GanonWall2",
"Obj_Lv4Bridge",
"Obj_Lv4Floor",
"Tag_Spinner",
"Obj_SwHang",
"Obj_RotStair",
"Obj_MagneArm",
"Obj_KWheel00",
"Obj_KWheel01",
"Obj_Ychndlr",
"Obj_PRElvtr",
"Obj_MHasu",
"Obj_YIblltray",
"Obj_Lv6EGate",
"Obj_PDtile",
"Obj_PDwall",
"Obj_Lv4PRwall",
"Obj_KLift00",
"B_OH",
"Obj_Lv4Chan",
"Obj_Lv3R10Saka",
"Obj_Lv3Water",
"Obj_Lv3Water2",
"OBJ_LV3WATERB",
"Obj_HBombkoya",
"Obj_SZbridge",
"Obj_KakarikoBrg",
"Obj_OrdinBrg",
"Obj_BurnBox",
"Obj_KJgjs",
"OBJ_IHASI",
"Obj_IceBlock",
"Obj_VolcanicBall",
"Obj_VolcanicBomb",
"Obj_VolcGnd",
"Obj_KKanban",
"E_PH",
"NPC_ZRA",
"Obj_Chandelier",
"Obj_Stopper2",
"DOOR20",
"Tag_Hinit",
"Tag_Hjump",
"Tag_AJnot",
"Tag_Hstop",
"CANOE",
"HORSE",
"E_WB",
"OBJ_ITO",
"OBJ_SW",
"SPINNER",
"B_OB",
"KAGO",
"E_YC",
"B_DS",
"B_DR",
"B_ZANTZ",
"B_ZANT",
"B_ZANTM",
"TBOX",
"TBOX2",
"ALINK",
"BOOMERANG",
"MIDNA",
"NPC_TK",
"NPC_WORM",
"PPolamp",
"BkyRock",
"HITOBJ",
"EP",
"COW",
"PERU",
"NI",
"NPC_TKJ2",
"SQ",
"NPC_SQ",
"DO",
"NPC_NE",
"NPC_TR",
"NPC_LF",
"OBJ_FOOD",
"OBJ_KI",
"OBJ_KITA",
"OBJ_KEY",
"OBJ_KEYHOLE",
"Obj_Lv5Key",
"OBJ_LP",
"OBJ_TATIGI",
"OBJ_ROCK",
"OBJ_WFLAG",
"OBJ_KAGE",
"OBJ_KANBAN2",
"OBJ_BALLOON",
"OBJ_SUISYA",
"OBJ_OILTUBO",
"OBJ_ROTEN",
"OBJ_SSDRINK",
"OBJ_SSITEM",
"TAG_SSDRINK",
"TAG_BTLITM",
"TAG_LV5SOUP",
"TAG_MNLIGHT",
"TAG_SHOPCAM",
"TAG_SHOPITM",
"OBJ_NDOOR",
"OBJ_UDOOR",
"OBJ_USAKU",
"Obj_SM_DOOR",
"OBJ_BED",
"OBJ_BOUMATO",
"OBJ_ITAMATO",
"OBJ_NOUGU",
"OBJ_STICK",
"OBJ_MIE",
"OBJ_SEKIDOOR",
"OBJ_SEKIZO",
"OBJ_SMTILE",
"NPC_FISH",
"MG_FISH",
"FSHOP",
"NPC_DU",
"DISAPPEAR",
"Obj_Mato",
"Obj_Flag",
"Obj_Flag2",
"Obj_Flag3",
"Obj_GOMIKABE",
"Obj_Yousei",
"Obj_Kabuto",
"Obj_Cho",
"Obj_Kuw",
"Obj_Nan",
"Obj_Dan",
"Obj_Kam",
"Obj_Ten",
"Obj_Ari",
"Obj_Kag",
"Obj_Batta",
"Obj_Tombo",
"Obj_Kat",
"Obj_H_Saku",
"Obj_Yobikusa",
"Obj_KazeNeko",
"Obj_KznkArm",
"Obj_NamePlate",
"Obj_OnCloth",
"Obj_LndRope",
"Obj_ItaRope",
"Obj_Sakuita",
"Obj_Laundry",
"WarpBug",
"Izumi_Gate",
"Obj_Fchain",
"Obj_Wchain",
"Tag_Attp",
"Obj_Tornado",
"Obj_Tornado2",
"Obj_FirePillar",
"Obj_FirePillar2",
"Obj_InoBone",
"Obj_Stopper",
"Obj_MHole",
"Tag_Magne",
"Obj_BossWarp",
"Obj_WoodPendulum",
"Obj_WdStick",
"Obj_StairBlock",
"Obj_Geyser",
"Tag_KtOnFire",
"Obj_FireWood",
"Obj_FireWood2",
"Obj_GpTaru",
"Obj_OnsenTaru",
"Obj_KiPot",
"TBOX_SW",
"Obj_SwChain",
"Obj_WoodenSword",
"Obj_StoneMark",
"Obj_Lv3Candle",
"Tag_Lv4Candle",
"Tag_Lv4CandleDm",
"Obj_DamCps",
"Obj_Smoke",
"Obj_WaterFall",
"Obj_ZoraCloth",
"Obj_poFire",
"Tag_poFire",
"Obj_glowSphere",
"Tag_LightBall",
"SwLBall",
"SwBall",
"Obj_WaterEff",
"Tag_RiverBack",
"Tag_KagoFall",
"Tag_Lv2PrChk",
"Obj_Lv4Gear",
"Obj_MasterSword",
"Obj_WoodStatue",
"Obj_Fan",
"Obj_IceLeaf",
"Obj_zrTuraraRc",
"Tag_RetRoom",
"Obj_WindStone",
"Tag_WaraHowl",
"Obj_SCannon",
"Obj_SmWStone",
"Obj_SCannonCrs",
"Tag_SnowEff",
"Tag_CstaSw",
"Tag_Lv6CstaSw",
"Obj_awaPlar",
"Obj_poTbox",
"Obj_TimeFire",
"Obj_TMoon",
"Obj_GanonWall",
"Obj_Prop",
"CSTATUE",
"Obj_SwBallA",
"Obj_SwBallB",
"Obj_SnowSoup",
"Obj_Nagaisu",
"Obj_RCircle",
"Obj_Picture",
"Tag_SetBall",
"Tag_SmkEmt",
"SwTime",
"Obj_HFtr",
"Obj_HBarrel",
"Obj_Crystal",
"Obj_SCannonTen",
"Obj_SwBallC",
"SCENE_EXIT2",
"Obj_Hata",
"Obj_ToaruMaki",
"Tag_AttackItem",
"Tag_RmbitSw",
"Obj_Sword",
"Tag_Spring",
"Tag_Statue",
"E_AI",
"E_GS",
"E_GOB",
"E_DD",
"E_DN",
"E_S1",
"E_MF",
"E_SG",
"E_BS",
"E_SF",
"E_SH",
"E_DF",
"E_GM",
"E_MD",
"E_SM",
"E_SM2",
"E_ST",
"E_ST_LINE",
"E_SB",
"E_TH",
"E_CR",
"E_CR_EGG",
"E_DB",
"E_DB_LEAF",
"E_GA",
"E_GB",
"E_HB",
"E_HB_LEAF",
"E_HZELDA",
"E_YD",
"E_YH",
"E_YD_LEAF",
"E_HM",
"E_TK",
"E_TK2",
"E_TK_BALL",
"E_RB",
"E_RD",
"E_RDB",
"E_RDY",
"E_FM",
"E_FS",
"E_PM",
"E_PO",
"E_MB",
"E_MK",
"E_MM",
"E_FZ",
"E_ZS",
"E_KK",
"E_HP",
"E_ZH",
"E_ZM",
"E_PZ",
"E_FB",
"E_FK",
"E_MS",
"E_NEST",
"E_NZ",
"E_BA",
"E_BU",
"E_BUG",
"E_BEE",
"E_IS",
"E_KG",
"E_KR",
"E_SW",
"E_GE",
"Tag_WatchGe",
"E_YM",
"E_YM_TAG",
"E_YMB",
"Tag_FWall",
"Tag_WaterFall",
"E_YK",
"E_YR",
"E_YG",
"E_HZ",
"E_WS",
"E_OC",
"E_OT",
"E_DT",
"E_BG",
"E_OctBg",
"DR",
"L7lowDr",
"L7ODR",
"E_TT",
"E_DK",
"E_VT",
"E_WW",
"E_GI",
"B_BH",
"B_BQ",
"B_GM",
"B_GND",
"B_GO",
"B_OH2",
"B_YO",
"B_YOI",
"B_TN",
"B_GG",
"B_DRE",
"B_MGN",
"E_WAP",
"ITEM",
"Obj_SmallKey",
"Obj_Kantera",
"Obj_LifeContainer",
"Obj_Shield",
"Demo_Item",
"ShopItem",
"Obj_Drop",
"OBJ_RW",
"NBOMB",
"TAG_CSW",
"TAG_QS",
"HOZELDA",
"SWC00",
"KNOB20",
"DBDOOR",
"BOSS_DOOR",
"L1BOSS_DOOR",
"L1MBOSS_DOOR",
"L5BOSS_DOOR",
"DSHUTTER",
"SPIRAL_DOOR",
"Tag_ChgRestart",
"Tag_Restart",
"ANDSW",
"ANDSW2",
"MYNA",
"NPC_GND",
"NPC_GRA",
"NPC_GRC",
"NPC_GRD",
"NPC_GRM",
"NPC_GRMC",
"NPC_GRO",
"NPC_GRR",
"NPC_GRS",
"NPC_GRZ",
"NPC_YAMID",
"NPC_YAMIT",
"NPC_YAMIS",
"NPC_BLUENS",
"NPC_KAKASHI",
"NPC_KDK",
"NPC_ARU",
"NPC_BANS",
"NPC_BESU",
"NPC_BOU",
"NPC_BOU_S",
"NPC_CLERKA",
"NPC_CLERKB",
"NPC_CLERKT",
"NPC_WRESTLER",
"Tag_Arena",
"Tag_Instruction",
"NPC_DOC",
"NPC_GWOLF",
"NPC_LEN",
"NPC_LUD",
"NPC_FAIRY_SEIREI",
"NPC_FAIRY",
"NPC_HANJO",
"NPC_HENNA",
"NPC_HENNA0",
"NPC_HOZ",
"NPC_JAGAR",
"NPC_KKRI",
"NPC_KN",
"KN_BULLET",
"NPC_KNJ",
"NPC_KOLIN",
"NPC_KOLINB",
"NPC_KYURY",
"NPC_MARO",
"NPC_MIDP",
"NPC_MOI",
"NPC_RACA",
"NPC_SARU",
"NPC_SEIB",
"NPC_SEIC",
"NPC_SEID",
"NPC_SEIRA",
"NPC_SERA2",
"NPC_SEIREI",
"NPC_SHAMAN",
"NPC_SMARO",
"NPC_SOLA",
"NPC_TARO",
"NPC_PACHI_BESU",
"NPC_PACHI_TARO",
"NPC_PACHI_MARO",
"TAG_PATI",
"NPC_THE",
"NPC_TKJ",
"NPC_TKS",
"NPC_TKC",
"OBJ_TKS",
"NPC_TOBY",
"NPC_URI",
"NPC_YELIA",
"NPC_YKM",
"NPC_YKW",
"NPC_ZANB",
"NPC_ZANT",
"NPC_ZELDA",
"NPC_ZELR",
"NPC_ZELRO",
"OBJ_ZRAFREEZE",
"NPC_ZRC",
"NPC_ZRZ",
"ZRA_MARK",
"MYNA2",
"TAG_MYNA2",
"NPC_CD3",
"Tag_Schedule",
"Tag_Escape",
"NPC_CHAT",
"NPC_SOLDIERa",
"NPC_SOLDIERb",
"PASSER_MNG",
"NPC_PASSER",
"NPC_PASSER2",
"NPC_POST",
"NPC_POUYA",
"FORMATION_MNG",
"NPC_FGUARD",
"GUARD_MNG",
"TAG_GUARD",
"NPC_GUARD",
"NPC_ASH",
"NPC_ASHB",
"NPC_SHAD",
"NPC_RAFREL",
"NPC_MOIR",
"NPC_IMPAL",
"NPC_SHOE",
"NPC_DOORBOY",
"NPC_PRAYER",
"NPC_KASIHANA",
"NPC_KASIKYU",
"NPC_KASIMICH",
"NPC_DRSOL",
"NPC_CHIN",
"NPC_INS",
"NPC_SHOP0",
"NPC_MK",
"NPC_P2",
"KYTAG00",
"KYTAG01",
"KYTAG02",
"KYTAG03",
"KYTAG04",
"KYTAG05",
"KYTAG06",
"KYTAG07",
"KYTAG08",
"KYTAG09",
"KYTAG10",
"KYTAG11",
"KYTAG12",
"KYTAG13",
"KYTAG14",
"KYTAG15",
"KYTAG16",
"KYTAG17",
"Ykgr",
"TALK",
"Obj_Crope",
"Obj_Bombf",
"Obj_BkLeaf",
"Tag_Mhint",
"Tag_Mmsg",
"Tag_Mwait",
"Tag_Mstop",
"Tag_Stream",
"Tag_Sppath",
"Tag_Wljump",
"Tag_TWGate",
"Tag_Lv6Gate",
"Tag_Lv7Gate",
"Tag_Lv8Gate",
"Tag_TheBHint",
"Tag_Assist",
"DEMO00",
"TAG_CAMERA",
"TAG_CHKPOINT",
"TAG_EVENT",
"TAG_EVT",
"TAG_TELOP",
"TAG_HOWL",
"TAG_MSG",
"TAG_LANTERN",
"Tag_Mist",
"DMIDNA",
"KY_THUNDER",
"VRBOX",
"VRBOX2",
"BG",
"SET_BG_OBJ",
"BG_OBJ",
"MIRROR",
"MOVIE_PLAYER",
"TITLE",
"FR",
"ECONT",
"MG_ROD",
"E_ARROW",
"BULLET",
"SWHIT0",
"E_TH_BALL",
"TAG_EVTAREA",
"TAG_EVTMSG",
"TAG_KMSG",
"TAG_PUSH",
"E_MK_BO",
"E_MM_MT",
"OBJ_KBOX",
"OBJ_FW",
"B_GOS",
"OBJ_YSTONE",
"MANT",
"CROD",
"OBJ_PLEAF",
"OBJ_KBACKET",
"OBJ_YBAG",
"OBJ_PUMPKIN",
"OBJ_AUTOMATA",
"OBJ_GADGET",
"OBJ_KAGO",
"Obj_Carry",
"Obj_Stone",
"OBJ_HB",
"NPC_INKO",
"BD",
"Obj_Eff",
"WPILLAR",
"WMARK",
"E_BI",
"E_BI_LEAF",
"START_AND_GOAL",
"NPC_DF",
"ARROW",
"PATH_LINE",
"TAG_ALLMATO",
"Obj_Timer",
"SCENE_EXIT",
"CAMERA",
"CAMERA2",
"SUSPEND",
"GRASS",
"KYEFF",
"KYEFF2",
"MSG_OBJECT",
"MENUWINDOW",
"TIMER",
"METER2",
"GAMEOVER",
"DUMMY",
};
return namelist[i_name];
}
#endif