Skip to content

Type Venom platform links#2950

Draft
MarkMcCaskey wants to merge 1 commit into
doldecomp:masterfrom
MarkMcCaskey:type-venom-platform-links
Draft

Type Venom platform links#2950
MarkMcCaskey wants to merge 1 commit into
doldecomp:masterfrom
MarkMcCaskey:type-venom-platform-links

Conversation

@MarkMcCaskey

Copy link
Copy Markdown
Collaborator

Splitting #2936 up into serial reviewable chunks. I'm going to leave this PR as a draft until I have time to provide more evidence beyond inferring from the static structure here. Hopefully by tonight / tomorrow night. I'll make some experiments and distill them as gecko codes to test it out in the game and confirm more about the naming here before this needs to be reviewed.

From Codex:

Model the platform target GObj, signed smash-taunt timer, and vertically ordered joints as a dedicated Ground variable payload.

Model the platform target GObj, signed smash-taunt timer, and vertically ordered joints as a dedicated Ground variable payload.

This removes pointer/integer round trips without changing unrelated Venom payload views. All five consumers remain exact matches.
@MarkMcCaskey MarkMcCaskey added ai-assisted Utilizes a LLM to do the heavy lifting naming labels Jul 23, 2026
@decomp-dev

decomp-dev Bot commented Jul 23, 2026

Copy link
Copy Markdown

Report for GALE01 (96ebecb - 079bee4)

No changes

Comment thread src/melee/gr/types.h
Comment on lines +503 to +508
struct grVenom_Platform_GroundVars {
/* +00 gp+C4 */ Ground_GObj* target_gobj;
/* +04 gp+C8 */ s32 smash_taunt_timer;
/* +08 gp+CC */ HSD_JObj* upper_jobj;
/* +0C gp+D0 */ HSD_JObj* lower_jobj;
};

@ribbanya ribbanya Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think based on previous PRs your Claude already understands this, but if you look at any given StageCallbacks[], it's basically setting up an array of runtime-typed objects:

StageCallbacks grVe_StageCallbacks[16] = {
    {
        grVenom_80203F98, // GObj 0, callback 0
        grVenom_80203FC4, // GObj 0, callback 1
        grVenom_80203FCC, // GObj 0, callback 2
        grVenom_80203FD0, // GObj 0, callback 3
        0,
    },
    {
        grVenom_80206B94, // GObj 1, callback 0
        grVenom_80206BBC, // GObj 1, callback 1
        grVenom_80206BC4, // GObj 1, callback 2
        grVenom_80206BEC, // GObj 1, callback 3
        (1 << 29),
    },

With this in mind, we know that for any given set of callbacks (StageCallbacks struct), the same union member is used for GroundVars. Two StageCallbacks elements sharing the same GroundVars union member is probably quite common as well. Like in this case, you might be able to pick out multiple GObjs which are semantically venom_platform.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-assisted Utilizes a LLM to do the heavy lifting naming

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants