Skip to content

zNPCMessenger work and Misc fixes#596

Merged
SquareMan merged 12 commits intobfbbdecomp:mainfrom
LivewireCB:dev9
Sep 22, 2025
Merged

zNPCMessenger work and Misc fixes#596
SquareMan merged 12 commits intobfbbdecomp:mainfrom
LivewireCB:dev9

Conversation

@LivewireCB
Copy link
Contributor

zNPCMessenger work and Misc fixes

LivewireCB and others added 9 commits July 13, 2025 23:23
* ported zNPCSupport code, zNPCTypeCommon

* build fix

* BossSB2 & BossPlankton
* ported zNPCSupport code, zNPCTypeCommon

* build fix

* BossSB2 & BossPlankton

* zTalkbox work and xScrFx

* Floating point error handler func
* Progress

* zAssetTypes done for now

* Mark zAssetTypes equivalent
@github-actions
Copy link

github-actions bot commented Sep 9, 2025

🆗 ✅

+1543 bytes
🆗 Bot Rating: A fantastic contribution! ✨🎉

No Regressions 🎉

Progress: 28

📈 main/SB/Game/zNPCTypeBossSandy - .text +339 bytes -> 30.38%
📈 main/SB/Game/zNPCTypeKingJelly - .text +39 bytes -> 40.03%
📈 main/SB/Game/zMain - .text +28 bytes -> 61.70%
📈 main/SB/Game/zMain - .rodata +4 bytes -> 87.36%
📈 main/SB/Game/zNPCMessenger - .text +821 bytes -> 24.85%
📈 main/SB/Game/zNPCTypeBossSandy - .rodata +36 bytes -> 41.38%
📈 main/SB/Game/zNPCTypeBossSandy - .data +49 bytes -> 75.30%
📈 main/SB/Game/zNPCTypeKingJelly - .data +4 bytes -> 54.50%
📈 main/SB/Game/zNPCTypeBossSandy - .sdata2 +1 bytes -> 41.34%
main/SB/Game/zNPCMessenger - .bss +208 bytes -> 100.00%
📈 main/SB/Game/zDiscoFloor - .sdata2 +5 bytes -> 59.32%
main/SB/Game/zNPCMessenger - .sbss +8 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeBossSandy - ZNPC_AnimTable_BossSandy() +24 bytes -> 99.79%
📈 main/SB/Game/zMain - zMainReadINI() +19 bytes -> 2.84%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Process(en_trantype*, float, void*, xScene*) +20 bytes -> 3.01%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::Reset() +4 bytes -> 0.62%
📈 main/SB/Game/zNPCMessenger - NPCPS_MsgPoolReset(NPCPSData*) +36 bytes -> 10.64%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Enter(float, void*) +296 bytes -> 91.36%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES) +168 bytes -> 77.78%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES*) +185 bytes -> 89.09%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +36 bytes -> 31.03%
main/SB/Game/zNPCMessenger - NPCPS_MsgPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
main/SB/Game/zNPCMessenger - NPCPS_CltPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, zNPCCommon*) +76 bytes -> 76.92%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, unsigned int) +84 bytes -> 84.00%
📈 main/SB/Game/zNPCMessenger - NPCPS_grabMsg() +28 bytes -> 44.44%
main/SB/Game/zNPCMessenger - NPCPS_queMessage(NPCMsg*) +28 bytes -> 100.00%
main/SB/Game/zMain - zLedgeAdjust(zLedgeGrabParams*) +8 bytes -> 100.00%

@github-actions
Copy link

🆗 ✅

+2744 bytes
🆗 Bot Rating: Amazing contribution, you are the decomp GOAT 🐐

No Regressions 🎉

Progress: 42

📈 main/SB/Game/zEntPlayer - .text +3 bytes -> 31.75%
📈 main/SB/Game/zNPCTypeBossSandy - .text +339 bytes -> 30.38%
📈 main/SB/Game/zNPCTypeKingJelly - .text +39 bytes -> 40.03%
📈 main/SB/Core/x/xFX - .text +1159 bytes -> 22.94%
📈 main/SB/Game/zMain - .text +28 bytes -> 61.70%
📈 main/SB/Game/zMain - .rodata +4 bytes -> 87.36%
📈 main/SB/Game/zNPCMessenger - .text +821 bytes -> 24.85%
📈 main/SB/Game/zNPCTypeBossSandy - .rodata +36 bytes -> 41.38%
📈 main/SB/Game/zNPCTypeBossSandy - .data +49 bytes -> 75.30%
📈 main/SB/Game/zNPCTypeKingJelly - .data +4 bytes -> 54.50%
📈 main/SB/Core/x/xFX - .rodata +38 bytes -> 39.40%
📈 main/SB/Game/zNPCTypeBossSandy - .sdata2 +1 bytes -> 41.34%
main/SB/Game/zNPCMessenger - .bss +208 bytes -> 100.00%
📈 main/SB/Game/zDiscoFloor - .sdata2 +5 bytes -> 59.32%
main/SB/Game/zNPCMessenger - .sbss +8 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeBossSandy - ZNPC_AnimTable_BossSandy() +24 bytes -> 99.79%
📈 main/SB/Core/x/xFX - RenderRotatedBillboard(xVec3*, _xFXAuraAngle*, unsigned int, float, float, iColor_tag, unsigned int) +4 bytes -> 0.28%
📈 main/SB/Game/zEntPlayer - zEntPlayer_StreakFX(xEnt*, float) +4 bytes -> 0.30%
📈 main/SB/Game/zMain - zMainReadINI() +19 bytes -> 2.84%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Process(en_trantype*, float, void*, xScene*) +20 bytes -> 3.01%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::Reset() +4 bytes -> 0.62%
📈 main/SB/Core/x/xFX - xFXAuraRender() +348 bytes -> 83.02%
📈 main/SB/Game/zNPCMessenger - NPCPS_MsgPoolReset(NPCPSData*) +36 bytes -> 10.64%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Enter(float, void*) +296 bytes -> 91.36%
📈 main/SB/Core/x/xFX - xFXBubbleRender(RpAtomic*) +248 bytes -> 78.75%
📈 main/SB/Core/x/xFX - xFXShinyRender(RpAtomic*) +212 bytes -> 67.50%
📈 main/SB/Core/x/xFX - xFXRibbonRender() +44 bytes -> 21.82%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES) +168 bytes -> 77.78%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES*) +185 bytes -> 89.09%
📈 main/SB/Core/x/xFX - MaterialSetBumpMap(RpMaterial*, void*) +115 bytes -> 83.33%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +36 bytes -> 31.03%
main/SB/Game/zNPCMessenger - NPCPS_MsgPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
main/SB/Game/zNPCMessenger - NPCPS_CltPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
📈 main/SB/Core/x/xFX - xFXStreakInit() +24 bytes -> 25.93%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, zNPCCommon*) +76 bytes -> 76.92%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, unsigned int) +84 bytes -> 84.00%
main/SB/Core/x/xFX - AtomicSetEnvMap(RpAtomic*, void*) +84 bytes -> 100.00%
main/SB/Core/x/xFX - xFXRibbon::start_render() +76 bytes -> 100.00%
📈 main/SB/Game/zNPCMessenger - NPCPS_grabMsg() +28 bytes -> 44.44%
main/SB/Game/zNPCMessenger - NPCPS_queMessage(NPCMsg*) +28 bytes -> 100.00%
main/SB/Game/zMain - zLedgeAdjust(zLedgeGrabParams*) +8 bytes -> 100.00%
main/SB/Core/x/xFX - xFXShineStart(const xVec3*, float, float, float, float, unsigned int, const iColor_tag*, const iColor_tag*, float, int) +4 bytes -> 100.00%

@github-actions
Copy link

⚠️ 🔥

+7636 bytes
🆗 Bot Rating: You are a decomp GOD, can I have your autograph?

Regressions: 2

⚠️ main/SB/Game/zNPCTypeDutchman - .rodata -2006 bytes -> 15.67%
⚠️ main/SB/Core/gc/iModel - iModelFileNew(void*, unsigned int) -7 bytes -> 57.14%

Progress: 73

📈 main/SB/Game/zEntPlayer - .text +3 bytes -> 31.75%
📈 main/SB/Game/zNPCTypeBossSandy - .text +339 bytes -> 30.38%
📈 main/SB/Game/zNPCTypeDutchman - .text +1377 bytes -> 36.79%
📈 main/SB/Game/zNPCTypeKingJelly - .text +39 bytes -> 40.03%
📈 main/SB/Core/x/xFX - .text +1159 bytes -> 22.94%
📈 main/SB/Game/zMain - .text +28 bytes -> 61.70%
📈 main/SB/Core/gc/iModel - .text +52 bytes -> 3.45%
📈 main/SB/Core/x/xBehaveMgr - .text +194 bytes -> 23.87%
📈 main/SB/Game/zMain - .rodata +4 bytes -> 87.36%
📈 main/SB/Game/zNPCMessenger - .text +821 bytes -> 24.85%
main/SB/Game/zNPCTypeDutchman - .bss +2888 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - .text +243 bytes -> 8.34%
📈 main/SB/Game/zNPCTypeBossSandy - .rodata +36 bytes -> 41.38%
📈 main/SB/Game/zNPCTypeBossSandy - .data +49 bytes -> 75.30%
📈 main/SB/Game/zNPCTypeDutchman - .data +10 bytes -> 75.33%
📈 main/SB/Game/zNPCTypeKingJelly - .data +4 bytes -> 54.50%
📈 main/SB/Core/x/xFX - .rodata +38 bytes -> 39.40%
📈 main/SB/Game/zNPCTypeBossSandy - .sdata2 +1 bytes -> 41.34%
main/SB/Game/zNPCMessenger - .bss +208 bytes -> 100.00%
📈 main/SB/Game/zDiscoFloor - .sdata2 +5 bytes -> 59.32%
📈 main/SB/Game/zNPCTypeDutchman - .sbss +48 bytes -> 87.50%
main/SB/Core/x/xParSys - .rodata +27 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - .sdata2 +17 bytes -> 54.55%
main/SB/Core/x/xParSys - .bss +24 bytes -> 100.00%
main/SB/Game/zNPCMessenger - .sbss +8 bytes -> 100.00%
main/SB/Core/x/xBehaveMgr - .sbss +8 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeBossSandy - ZNPC_AnimTable_BossSandy() +24 bytes -> 99.79%
📈 main/SB/Core/x/xFX - RenderRotatedBillboard(xVec3*, _xFXAuraAngle*, unsigned int, float, float, iColor_tag, unsigned int) +4 bytes -> 0.28%
📈 main/SB/Game/zEntPlayer - zEntPlayer_StreakFX(xEnt*, float) +4 bytes -> 0.30%
📈 main/SB/Game/zMain - zMainReadINI() +19 bytes -> 2.84%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Reset() +493 bytes -> 60.19%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Process(en_trantype*, float, void*, xScene*) +20 bytes -> 3.01%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::Reset() +4 bytes -> 0.62%
📈 main/SB/Core/x/xParSys - xParSysInit(xBase*, xParSysAsset*) +3 bytes -> 0.82%
📈 main/SB/Core/x/xFX - xFXAuraRender() +348 bytes -> 83.02%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Process(xScene*, float) +196 bytes -> 48.04%
📈 main/SB/Game/zNPCMessenger - NPCPS_MsgPoolReset(NPCPSData*) +36 bytes -> 10.64%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::RenderExtra() +168 bytes -> 46.15%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Init(xEntAsset*) +96 bytes -> 27.91%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Enter(float, void*) +296 bytes -> 91.36%
📈 main/SB/Core/x/xFX - xFXBubbleRender(RpAtomic*) +248 bytes -> 78.75%
📈 main/SB/Core/x/xFX - xFXShinyRender(RpAtomic*) +212 bytes -> 67.50%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::dissolve(float) +231 bytes -> 89.23%
📈 main/SB/Core/x/xFX - xFXRibbonRender() +44 bytes -> 21.82%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES) +168 bytes -> 77.78%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES*) +185 bytes -> 89.09%
📈 main/SB/Game/zNPCTypeDutchman - @unnamed@zNPCTypeDutchman_cpp@::play_sound(int, const xVec3*, float) +4 bytes -> 2.08%
📈 main/SB/Core/x/xBehaveMgr - xBehaveMgr::Startup(int, int) +168 bytes -> 97.67%
📈 main/SB/Core/x/xFX - MaterialSetBumpMap(RpMaterial*, void*) +115 bytes -> 83.33%
📈 main/SB/Game/zNPCTypeDutchman - @unnamed@zNPCTypeDutchman_cpp@::init_sound() +48 bytes -> 38.71%
📈 main/SB/Core/x/xParSys - xParCmdTexInit(xParCmdTex*) +63 bytes -> 52.94%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +36 bytes -> 31.03%
📈 main/SB/Core/gc/iModel - iModelUnload(RpAtomic*) +39 bytes -> 67.86%
main/SB/Game/zNPCMessenger - NPCPS_MsgPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
main/SB/Game/zNPCMessenger - NPCPS_CltPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::decompose() +100 bytes -> 89.29%
📈 main/SB/Core/x/xFX - xFXStreakInit() +24 bytes -> 25.93%
📈 main/SB/Core/x/xParSys - par_sprite_begin() +4 bytes -> 3.70%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, zNPCCommon*) +76 bytes -> 76.92%
📈 main/SB/Core/x/xBehaveMgr - xPsyche::IndexInStack(int) const +26 bytes -> 25.93%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +40 bytes -> 38.46%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, unsigned int) +84 bytes -> 84.00%
📈 main/SB/Core/x/xParSys - xParSysSetup(xParSys*) +64 bytes -> 66.67%
main/SB/Core/x/xFX - AtomicSetEnvMap(RpAtomic*, void*) +84 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - render_par_sprite(void*, xParGroup*) +76 bytes -> 95.00%
main/SB/Core/x/xFX - xFXRibbon::start_render() +76 bytes -> 100.00%
📈 main/SB/Game/zNPCMessenger - NPCPS_grabMsg() +28 bytes -> 44.44%
main/SB/Game/zNPCMessenger - NPCPS_queMessage(NPCMsg*) +28 bytes -> 100.00%
main/SB/Core/gc/iModel - GetHierarchy(RpAtomic*) +3 bytes -> 100.00%
📈 main/SB/Core/gc/iModel - NextAtomicCallback(RpAtomic*, void*) +16 bytes -> 40.00%
main/SB/Core/x/xParSys - xParSysInit(void*, void*) +32 bytes -> 100.00%
main/SB/Game/zMain - zLedgeAdjust(zLedgeGrabParams*) +8 bytes -> 100.00%
main/SB/Core/x/xFX - xFXShineStart(const xVec3*, float, float, float, float, unsigned int, const iColor_tag*, const iColor_tag*, float, int) +4 bytes -> 100.00%

Copy link
Member

@SquareMan SquareMan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty good, some cleanup required. A note about all the "register comments": if any of these comments were derived from the actual assembly rather than just being copied from dwarf I'll leave it to your discretion on if they should be left in. Especially if the function they're in aren't matching yet.

Comment on lines +40 to +42
RpClump* clump; // r17
RwFrame* frame; // r16
RwFrame* root; // r2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove these register comments. I'm assuming these are taken from the dwarf as they don't seem match the metrowerks pattern and the unused variables shouldn't be given a register in the first place.

Comment on lines +375 to +377
if ((atomic->geometry) != 0)
{
RpGeometryForAllMaterials((atomic->geometry), MaterialSetEnvMap2, data);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove the redundant parentheses around (atomic->geometry)

Comment on lines +688 to +689
S32 fogstate; // r29+0x3C
_xFXAura* ap; // r17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove these register comments as well.

Comment on lines +1079 to +1081
xFXRibbon* prev; // r19
U32 i; // r18
xFXRibbon* ribbon; // r17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

more register comments


static void init_sound()
{
U32 total; // r11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

register comment.

Comment on lines +1047 to +1051
char* scorch_name[2]; // r29+0x58
S32 i; // r18
RwTexture* laser_texture; // r2
S32 model_index; // r3
xModelInstance* m = model; // r4
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Register comments

Comment on lines +1218 to +1224
S32 oldzwrite; // r29+0x6C
S32 oldztest; // r29+0x68
U32 oldsrcblend; // r29+0x64
U32 olddestblend; // r29+0x60
U8 oldcmp; // r17
xModelInstance* m; // r16
U8 haloing; // r17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Register comments

S32 zNPCKingJelly::SysEvent(xBase* from, xBase* to, U32 toEvent, const F32* toParam,
xBase* toParamWidget, S32* handled)
{
U32 uVar1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A better name can be inferred.
Example:

Suggested change
U32 uVar1;
U32 ret;

if (toEvent == 0x1b5)
{
start_fight();
goto LAB_8014808c;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pretty sure these goto's are just return 1;. If this function doesn't match yet or this suggestion otherwise doesn't work for some reason we can leave it as is.

@github-actions
Copy link

⚠️ 🔥

+8119 bytes
🆗 Bot Rating: You are a decomp GOD, can I have your autograph?

Regressions: 6

⚠️ main/SB/Game/zNPCSndLists - .data -1768 bytes -> 0.00%
⚠️ main/SB/Game/zNPCSndLists - .rodata -1032 bytes -> 0.00%
⚠️ main/SB/Game/zTalkBox - .text -36 bytes -> 11.67%
⚠️ main/SB/Game/zNPCTypeDutchman - .rodata -2006 bytes -> 15.67%
⚠️ main/SB/Core/gc/iModel - iModelFileNew(void*, unsigned int) -7 bytes -> 57.14%
⚠️ main/SB/Game/zTalkBox - ztalkbox::stop_wait(unsigned int) -36 bytes -> 10.00%

Progress: 74

📈 main/SB/Game/zEntPlayer - .text +3 bytes -> 31.75%
📈 main/SB/Game/zNPCTypeBossSandy - .text +339 bytes -> 30.38%
📈 main/SB/Game/zNPCTypeDutchman - .text +1377 bytes -> 36.79%
📈 main/SB/Game/zNPCTypeKingJelly - .text +35 bytes -> 40.01%
📈 main/SB/Core/x/xFX - .text +1159 bytes -> 22.94%
📈 main/SB/Game/zMain - .text +28 bytes -> 61.70%
📈 main/SB/Core/gc/iModel - .text +52 bytes -> 3.45%
📈 main/SB/Game/zEntPlayer - .data +430 bytes -> 90.09%
📈 main/SB/Core/x/xBehaveMgr - .text +194 bytes -> 23.87%
📈 main/SB/Game/zMain - .rodata +4 bytes -> 87.36%
📈 main/SB/Game/zNPCMessenger - .text +821 bytes -> 24.85%
main/SB/Game/zNPCTypeDutchman - .bss +2888 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - .text +300 bytes -> 10.27%
📈 main/SB/Game/zNPCTypeBossSandy - .rodata +36 bytes -> 41.38%
📈 main/SB/Game/zNPCTypeBossSandy - .data +49 bytes -> 75.30%
📈 main/SB/Game/zNPCTypeDutchman - .data +10 bytes -> 75.33%
📈 main/SB/Game/zNPCTypeKingJelly - .data +4 bytes -> 54.50%
📈 main/SB/Core/x/xFX - .rodata +38 bytes -> 39.40%
📈 main/SB/Game/zNPCTypeBossSandy - .sdata2 +1 bytes -> 41.34%
main/SB/Game/zNPCMessenger - .bss +208 bytes -> 100.00%
📈 main/SB/Game/zDiscoFloor - .sdata2 +5 bytes -> 59.32%
📈 main/SB/Game/zNPCTypeDutchman - .sbss +48 bytes -> 87.50%
main/SB/Core/x/xParSys - .rodata +27 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - .sdata2 +17 bytes -> 54.55%
main/SB/Core/x/xParSys - .bss +24 bytes -> 100.00%
main/SB/Game/zNPCMessenger - .sbss +8 bytes -> 100.00%
main/SB/Core/x/xBehaveMgr - .sbss +8 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeBossSandy - ZNPC_AnimTable_BossSandy() +24 bytes -> 99.79%
📈 main/SB/Core/x/xFX - RenderRotatedBillboard(xVec3*, _xFXAuraAngle*, unsigned int, float, float, iColor_tag, unsigned int) +4 bytes -> 0.28%
📈 main/SB/Game/zEntPlayer - zEntPlayer_StreakFX(xEnt*, float) +4 bytes -> 0.30%
📈 main/SB/Game/zMain - zMainReadINI() +19 bytes -> 2.84%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Reset() +493 bytes -> 60.19%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Process(en_trantype*, float, void*, xScene*) +20 bytes -> 3.01%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::Reset() +4 bytes -> 0.62%
📈 main/SB/Core/x/xParSys - xParSysInit(xBase*, xParSysAsset*) +3 bytes -> 0.82%
📈 main/SB/Core/x/xFX - xFXAuraRender() +348 bytes -> 83.02%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Process(xScene*, float) +196 bytes -> 48.04%
📈 main/SB/Game/zNPCMessenger - NPCPS_MsgPoolReset(NPCPSData*) +36 bytes -> 10.64%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::RenderExtra() +168 bytes -> 46.15%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::Init(xEntAsset*) +96 bytes -> 27.91%
📈 main/SB/Game/zNPCTypeBossSandy - zNPCGoalBossSandyElbowDrop::Enter(float, void*) +296 bytes -> 91.36%
📈 main/SB/Core/x/xFX - xFXBubbleRender(RpAtomic*) +248 bytes -> 78.75%
📈 main/SB/Core/x/xFX - xFXShinyRender(RpAtomic*) +212 bytes -> 67.50%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::dissolve(float) +231 bytes -> 89.23%
📈 main/SB/Core/x/xFX - xFXRibbonRender() +44 bytes -> 21.82%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES) +168 bytes -> 77.78%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_AreaNotify(zNPCCommon*, en_NPC_MSG_ID, float, int, en_NPCTYPES*) +185 bytes -> 89.09%
📈 main/SB/Game/zNPCTypeDutchman - @unnamed@zNPCTypeDutchman_cpp@::play_sound(int, const xVec3*, float) +4 bytes -> 2.08%
📈 main/SB/Core/x/xBehaveMgr - xBehaveMgr::Startup(int, int) +168 bytes -> 97.67%
📈 main/SB/Core/x/xFX - MaterialSetBumpMap(RpMaterial*, void*) +115 bytes -> 83.33%
📈 main/SB/Game/zNPCTypeDutchman - @unnamed@zNPCTypeDutchman_cpp@::init_sound() +48 bytes -> 38.71%
main/SB/Core/x/xParSys - xParCmdTexInit(xParCmdTex*) +120 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeKingJelly - zNPCKingJelly::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +32 bytes -> 27.59%
📈 main/SB/Core/gc/iModel - iModelUnload(RpAtomic*) +39 bytes -> 67.86%
main/SB/Game/zNPCMessenger - NPCPS_MsgPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
main/SB/Game/zNPCMessenger - NPCPS_CltPoolInit(NPCPSData*, int) +108 bytes -> 100.00%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::decompose() +100 bytes -> 89.29%
📈 main/SB/Core/x/xFX - xFXStreakInit() +24 bytes -> 25.93%
📈 main/SB/Core/x/xParSys - par_sprite_begin() +4 bytes -> 3.70%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, zNPCCommon*) +76 bytes -> 76.92%
📈 main/SB/Core/x/xBehaveMgr - xPsyche::IndexInStack(int) const +26 bytes -> 25.93%
📈 main/SB/Game/zNPCTypeDutchman - zNPCDutchman::SysEvent(xBase*, xBase*, unsigned int, const float*, xBase*, int*) +40 bytes -> 38.46%
📈 main/SB/Game/zNPCMessenger - zNPCMsg_SendMsg(en_NPC_MSG_ID, unsigned int) +84 bytes -> 84.00%
📈 main/SB/Core/x/xParSys - xParSysSetup(xParSys*) +64 bytes -> 66.67%
main/SB/Core/x/xFX - AtomicSetEnvMap(RpAtomic*, void*) +84 bytes -> 100.00%
📈 main/SB/Core/x/xParSys - render_par_sprite(void*, xParGroup*) +76 bytes -> 95.00%
main/SB/Core/x/xFX - xFXRibbon::start_render() +76 bytes -> 100.00%
📈 main/SB/Game/zNPCMessenger - NPCPS_grabMsg() +28 bytes -> 44.44%
main/SB/Game/zNPCMessenger - NPCPS_queMessage(NPCMsg*) +28 bytes -> 100.00%
main/SB/Core/gc/iModel - GetHierarchy(RpAtomic*) +3 bytes -> 100.00%
📈 main/SB/Core/gc/iModel - NextAtomicCallback(RpAtomic*, void*) +16 bytes -> 40.00%
main/SB/Core/x/xParSys - xParSysInit(void*, void*) +32 bytes -> 100.00%
main/SB/Game/zMain - zLedgeAdjust(zLedgeGrabParams*) +8 bytes -> 100.00%
main/SB/Core/x/xFX - xFXShineStart(const xVec3*, float, float, float, float, unsigned int, const iColor_tag*, const iColor_tag*, float, int) +4 bytes -> 100.00%

Copy link
Member

@SquareMan SquareMan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good now.

@SquareMan SquareMan merged commit 1bce52d into bfbbdecomp:main Sep 22, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants