Skip to content

Commit

Permalink
Fix default objects size registration
Browse files Browse the repository at this point in the history
Pre-Plus uses the Entity struct for DefaultObject, Plus and v5U use
EntityBase.
Fixes some rare bugs where the game code expects a deleted entity to
be zero-ed, as the memset size depends on DefaultObject.
  • Loading branch information
Mefiresu committed Aug 30, 2024
1 parent 7c954fc commit a80e2ba
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions RSDKv5/RSDK/Core/RetroEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1204,22 +1204,25 @@ void RSDK::InitGameLink()
#endif

#if RETRO_REV0U
RegisterObject((Object **)&DefaultObject, ":DefaultObject:", sizeof(EntityDefaultObject), sizeof(ObjectDefaultObject), DefaultObject_Update,
RegisterObject((Object **)&DefaultObject, ":DefaultObject:", sizeof(EntityBase), sizeof(ObjectDefaultObject), DefaultObject_Update,
DefaultObject_LateUpdate, DefaultObject_StaticUpdate, DefaultObject_Draw, DefaultObject_Create, DefaultObject_StageLoad,
DefaultObject_EditorLoad, DefaultObject_EditorDraw, DefaultObject_Serialize, (void (*)(Object *))DefaultObject_StaticLoad);

RegisterObject((Object **)&DevOutput, ":DevOutput:", sizeof(EntityDevOutput), sizeof(ObjectDevOutput), DevOutput_Update, DevOutput_LateUpdate,
DevOutput_StaticUpdate, DevOutput_Draw, DevOutput_Create, DevOutput_StageLoad, DevOutput_EditorLoad, DevOutput_EditorDraw,
DevOutput_Serialize, (void (*)(Object *))DevOutput_StaticLoad);
#else
RegisterObject((Object **)&DefaultObject, ":DefaultObject:", sizeof(EntityDefaultObject), sizeof(ObjectDefaultObject), DefaultObject_Update,
#elif RETRO_REV02
RegisterObject((Object **)&DefaultObject, ":DefaultObject:", sizeof(EntityBase), sizeof(ObjectDefaultObject), DefaultObject_Update,
DefaultObject_LateUpdate, DefaultObject_StaticUpdate, DefaultObject_Draw, DefaultObject_Create, DefaultObject_StageLoad,
DefaultObject_EditorLoad, DefaultObject_EditorDraw, DefaultObject_Serialize);
#if RETRO_REV02

RegisterObject((Object **)&DevOutput, ":DevOutput:", sizeof(EntityDevOutput), sizeof(ObjectDevOutput), DevOutput_Update, DevOutput_LateUpdate,
DevOutput_StaticUpdate, DevOutput_Draw, DevOutput_Create, DevOutput_StageLoad, DevOutput_EditorLoad, DevOutput_EditorDraw,
DevOutput_Serialize);
#endif
#else // RETRO_REV01
RegisterObject((Object **)&DefaultObject, ":DefaultObject:", sizeof(EntityDefaultObject), sizeof(ObjectDefaultObject), DefaultObject_Update,
DefaultObject_LateUpdate, DefaultObject_StaticUpdate, DefaultObject_Draw, DefaultObject_Create, DefaultObject_StageLoad,
DefaultObject_EditorLoad, DefaultObject_EditorDraw, DefaultObject_Serialize);
#endif

globalObjectIDs[0] = TYPE_DEFAULTOBJECT;
Expand Down

0 comments on commit a80e2ba

Please sign in to comment.