From 28b6701cfd23dfa86fa9094de22afbf22ad06783 Mon Sep 17 00:00:00 2001 From: Bluenaxela Date: Thu, 13 Sep 2018 01:55:24 -0700 Subject: [PATCH] Cherry-pick SMBXInternal changes from experimental-reader-updated (as they are not part of the reader itself) in order to reduce differences with the experimental-reader-updated branch. --- LunaDll/SMBXInternal/BaseItemArray.h | 2 +- LunaDll/SMBXInternal/NPCs.h | 4 +- LunaDll/SMBXInternal/SMBXEvents.cpp | 8 +- LunaDll/SMBXInternal/SMBXEvents.h | 178 +++++---------------------- 4 files changed, 37 insertions(+), 155 deletions(-) diff --git a/LunaDll/SMBXInternal/BaseItemArray.h b/LunaDll/SMBXInternal/BaseItemArray.h index 225a40a2b..c5b929115 100644 --- a/LunaDll/SMBXInternal/BaseItemArray.h +++ b/LunaDll/SMBXInternal/BaseItemArray.h @@ -11,7 +11,7 @@ struct SMBX_StaticBaseItemArray { static inline T* Get(unsigned short index) { if (index >= MAX_SIZE_VAL) return NULL; - return &((T*)*ARRAY_VAL_PTR)[index]; + return &((T*)*ARRAY_VAL_PTR)[index + OFFSET_VAL]; } }; diff --git a/LunaDll/SMBXInternal/NPCs.h b/LunaDll/SMBXInternal/NPCs.h index bce969a5f..d1f48b61f 100644 --- a/LunaDll/SMBXInternal/NPCs.h +++ b/LunaDll/SMBXInternal/NPCs.h @@ -424,8 +424,8 @@ struct NPCMOB { Momentum spawnMomentum; //+0xA8 float spawnDirection; //+0xD8 short spawnID; //+0xDC - short unknown_DE; //+0xDE - short unknown_E0; //+0xE0 + short ai1_initial; //+0xDE + short ai2_initial; //+0xE0 short id; //+0xE2 short animationFrame; //+0xE4 short unknown_E6; //+0xE6 diff --git a/LunaDll/SMBXInternal/SMBXEvents.cpp b/LunaDll/SMBXInternal/SMBXEvents.cpp index 53e672e73..3fcc456d3 100644 --- a/LunaDll/SMBXInternal/SMBXEvents.cpp +++ b/LunaDll/SMBXInternal/SMBXEvents.cpp @@ -2,13 +2,7 @@ // GET SMBXEvent* SMBXEvents::Get(int index) { - if(GM_EVENTS_PTR == 0 || index < 0 || index > 100) { - return NULL; - } else { - - SMBXEvent* pEventBase = (SMBXEvent*)GM_EVENTS_PTR; - return &(pEventBase[index]); - } + return SMBXEvent::Get(index); } // GET BY NAME diff --git a/LunaDll/SMBXInternal/SMBXEvents.h b/LunaDll/SMBXInternal/SMBXEvents.h index 73a67abfb..a234f7e9c 100644 --- a/LunaDll/SMBXInternal/SMBXEvents.h +++ b/LunaDll/SMBXInternal/SMBXEvents.h @@ -3,6 +3,7 @@ #define SMBXEvents_hhhhhh #include "../Defines.h" +#include "BaseItemArray.h" // - SMBX Event Struct. size = 0x588 (1416 bytes) // @@ -107,152 +108,39 @@ //+0x588 w = Auto start -struct SMBXEvent { - - short NoSmoke; //(0xFFFF == no smoke, 0 == smoke) - short SoundID; - VB6StrPtr pName; - VB6StrPtr pTextMsg; - - VB6StrPtr pHideLayerTarg1; - VB6StrPtr pHideLayerTarg2; - VB6StrPtr pHideLayerTarg3; - VB6StrPtr pHideLayerTarg4; - VB6StrPtr pHideLayerTarg5; - VB6StrPtr pHideLayerTarg6; - VB6StrPtr pHideLayerTarg7; - VB6StrPtr pHideLayerTarg8; - VB6StrPtr pHideLayerTarg9; - VB6StrPtr pHideLayerTarg10; - VB6StrPtr pHideLayerTarg11; - VB6StrPtr pHideLayerTarg12; - VB6StrPtr pHideLayerTarg13; - VB6StrPtr pHideLayerTarg14; - VB6StrPtr pHideLayerTarg15; - VB6StrPtr pHideLayerTarg16; - VB6StrPtr pHideLayerTarg17; - VB6StrPtr pHideLayerTarg18; - VB6StrPtr pHideLayerTarg19; - VB6StrPtr pHideLayerTarg20; - VB6StrPtr pHideLayerTarg21; - - VB6StrPtr pShowLayerTarg1; - VB6StrPtr pShowLayerTarg2; - VB6StrPtr pShowLayerTarg3; - VB6StrPtr pShowLayerTarg4; - VB6StrPtr pShowLayerTarg5; - VB6StrPtr pShowLayerTarg6; - VB6StrPtr pShowLayerTarg7; - VB6StrPtr pShowLayerTarg8; - VB6StrPtr pShowLayerTarg9; - VB6StrPtr pShowLayerTarg10; - VB6StrPtr pShowLayerTarg11; - VB6StrPtr pShowLayerTarg12; - VB6StrPtr pShowLayerTarg13; - VB6StrPtr pShowLayerTarg14; - VB6StrPtr pShowLayerTarg15; - VB6StrPtr pShowLayerTarg16; - VB6StrPtr pShowLayerTarg17; - VB6StrPtr pShowLayerTarg18; - VB6StrPtr pShowLayerTarg19; - VB6StrPtr pShowLayerTarg20; - VB6StrPtr pShowLayerTarg21; - - VB6StrPtr pToggleLayerTarg1; - VB6StrPtr pToggleLayerTarg2; - VB6StrPtr pToggleLayerTarg3; - VB6StrPtr pToggleLayerTarg4; - VB6StrPtr pToggleLayerTarg5; - VB6StrPtr pToggleLayerTarg6; - VB6StrPtr pToggleLayerTarg7; - VB6StrPtr pToggleLayerTarg8; - VB6StrPtr pToggleLayerTarg9; - VB6StrPtr pToggleLayerTarg10; - VB6StrPtr pToggleLayerTarg11; - VB6StrPtr pToggleLayerTarg12; - VB6StrPtr pToggleLayerTarg13; - VB6StrPtr pToggleLayerTarg14; - VB6StrPtr pToggleLayerTarg15; - VB6StrPtr pToggleLayerTarg16; - VB6StrPtr pToggleLayerTarg17; - VB6StrPtr pToggleLayerTarg18; - VB6StrPtr pToggleLayerTarg19; - VB6StrPtr pToggleLayerTarg20; - VB6StrPtr pToggleLayerTarg21; - - short Section1MusicID; //(FFFF == don't change) - short Section2MusicID; //(FFFF == don't change) - short Section3MusicID; //(FFFF == don't change) - short Section4MusicID; //(FFFF == don't change) - short Section5MusicID; //(FFFF == don't change) - short Section6MusicID; //(FFFF == don't change) - short Section7MusicID; //(FFFF == don't change) - short Section8MusicID; //(FFFF == don't change) - short Section9MusicID; //(FFFF == don't change) - short Section10MusicID; //(FFFF == don't change) - short Section11MusicID; //(FFFF == don't change) - short Section12MusicID; //(FFFF == don't change) - short Section13MusicID; //(FFFF == don't change) - short Section14MusicID; //(FFFF == don't change) - short Section15MusicID; //(FFFF == don't change) - short Section16MusicID; //(FFFF == don't change) - short Section17MusicID; //(FFFF == don't change) - short Section18MusicID; //(FFFF == don't change) - short Section19MusicID; //(FFFF == don't change) - short Section20MusicID; //(FFFF == don't change) - short Section21MusicID; //(FFFF == don't change) - - short Section1BackgroundID; //(FFFF == don't change) - short Section2BackgroundID; //(FFFF == don't change) - short Section3BackgroundID; //(FFFF == don't change) - short Section4BackgroundID; //(FFFF == don't change) - short Section5BackgroundID; //(FFFF == don't change) - short Section6BackgroundID; //(FFFF == don't change) - short Section7BackgroundID; //(FFFF == don't change) - short Section8BackgroundID; //(FFFF == don't change) - short Section9BackgroundID; //(FFFF == don't change) - short Section10BackgroundID; //(FFFF == don't change) - short Section11BackgroundID; //(FFFF == don't change) - short Section12BackgroundID; //(FFFF == don't change) - short Section13BackgroundID; //(FFFF == don't change) - short Section14BackgroundID; //(FFFF == don't change) - short Section15BackgroundID; //(FFFF == don't change) - short Section16BackgroundID; //(FFFF == don't change) - short Section17BackgroundID; //(FFFF == don't change) - short Section18BackgroundID; //(FFFF == don't change) - short Section19BackgroundID; //(FFFF == don't change) - short Section20BackgroundID; //(FFFF == don't change) - short Section21BackgroundID; //(FFFF == don't change) - - int Unknown15C; - - float PositionSettings[251]; - - int EndGame; //(1 == bowser defeat, 0 = none) - VB6StrPtr EventToTrigger; - float Delay; - - short ForceUp; //(0xFFFF = checked) - short ForceDown; //(0xFFFF = checked) - short ForceLeft; //(0xFFFF = checked) - short ForceRight; //(0xFFFF = checked) - short ForceJump; //(0xFFFF = checked) - short ForceAltJump; //(0xFFFF = checked) - short ForceRun; //(0xFFFF = checked) - short ForceAltRun; //(0xFFFF = checked) - short ForceDrop; //(0xFFFF = checked) - short ForceStart; //(0xFFFF = checked) - - VB6StrPtr LayerToMoveName; - float LayerHSpeed; - float LayerVSpeed; - - float AutoscrollHSpeed; - float AutoscrollVSpeed; - short AutoscrollSectionNum; - - short AutoStart; //(0xFFFF = checked) +#pragma pack(push, 1) +struct SMBXEvent : SMBX_StaticBaseItemArray +{ + short NoSmoke; // 0x00 (0xFFFF == no smoke, 0 == smoke) + short SoundID; // 0x02 + VB6StrPtr pName; // 0x04 + VB6StrPtr pTextMsg; // 0x08 + + VB6StrPtr pHideLayerTarg[21]; // 0x0C + VB6StrPtr pShowLayerTarg[21]; // 0x60 + VB6StrPtr pToggleLayerTarg[21]; // 0xB4 + short SectionMusicID[21]; // 0x108 (FFFF == don't change) + short SectionBackgroundID[21]; // 0x132 (FFFF == don't change) + Bounds SectionBounds[21]; // 0x15C + + short EndGame; // 0x54C (1 == bowser defeat, 0 = none) + short unknown_54E; // 0x55E + VB6StrPtr EventToTrigger; // 0x550 + double Delay; // 0x554 + KeyMap ForceKeyboard; // 0x55C + VB6StrPtr LayerToMove; // 0x570 + float LayerHSpeed; // 0x574 + float LayerVSpeed; // 0x578 + float AutoscrollHSpeed; // 0x57C + float AutoscrollVSpeed; // 0x580 + short AutoscrollSecNum; // 0x584 + short AutoStart; // 0x586 }; +#pragma pack(pop) + +#ifndef __INTELLISENSE__ +static_assert(sizeof(SMBXEvent) == 0x588, "sizeof(SMBXEvent) must be 0x588"); +#endif namespace SMBXEvents {