Skip to content

Commit bb5fec7

Browse files
committed
SpeedrunHelper: basic derandomizer
1 parent 2399c5c commit bb5fec7

2 files changed

Lines changed: 45 additions & 12 deletions

File tree

SDK/BYSpeedrunHelper/Source/ABYSpeedrunHelper.cpp

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,46 @@ MEMBER_HOOK( 0x006be7b0, T2Locale, T2Locale_GetString, const TWCHAR*, TINT a_iNu
7575
return CallOriginal( a_iNumString );
7676
}
7777

78+
// TBOOL g_bSpoofRandom = TFALSE;
79+
//
80+
// MEMBER_HOOK( 0x006b5850, Toshi::TRandom, TRandom_Isaac, void )
81+
// {
82+
// if ( g_bSpoofRandom )
83+
// {
84+
// m_uiRndCnt = RANDSIZ - 1;
85+
//
86+
// for (TINT i = 0; i < RANDSIZ; i++)
87+
// {
88+
// m_pRandrsl[ i ] = 0;
89+
// }
90+
// }
91+
// else CallOriginal();
92+
// }
93+
//
94+
// MEMBER_HOOK( 0x00429b00, AGameStateController, AGameStateController_InsertGameState, void, AGameState* a_pGameState )
95+
// {
96+
// CallOriginal( a_pGameState );
97+
//
98+
// if ( g_bIsFunCategory )
99+
// {
100+
// auto pARandom = *(TCHAR**)( 0x0077de10 );
101+
// auto pTRandom = (TRandom_Isaac::_hook_obj*)( pARandom + 4 );
102+
//
103+
// g_bSpoofRandom = a_pGameState->GetClass()->IsA( (TClass*)0x007833b8 ); // Spoof if ACookingMiniGame
104+
//
105+
// pTRandom->_hook_func(); // Call TRandom_Isaac hook
106+
// }
107+
// }
108+
109+
HOOK( 0x004010d0, UNK_GetRandomFloat, TFLOAT, Toshi::TRandom*, TFLOAT a_flUpper )
110+
{
111+
// Always drop items instead of coins when kicking destructible objects
112+
return 0.0f;
113+
}
114+
78115
void NewGameStarted()
79116
{
80117
AUIManager::GetSingleton()->GetTimer().Start();
81-
82-
if ( g_bIsFunCategory )
83-
{
84-
auto pARandom = *(TCHAR**)( 0x0077de10 );
85-
auto pTRandom = (TRandom*)(pARandom + 4);
86-
87-
// Reset random seed
88-
pTRandom->SetSeed( 999999 );
89-
}
90118
}
91119

92120
void AGUI2_MainPostRenderCallback()
@@ -273,6 +301,11 @@ class ABYSpeedrunHelper : public AModInstance
273301
ABikeRaceMicroGame::ms_aVariants[ i ].iNumLaps = 1;
274302
}
275303

304+
// Derandomizer
305+
//InstallHook<TRandom_Isaac>();
306+
//InstallHook<AGameStateController_InsertGameState>();
307+
InstallHook<UNK_GetRandomFloat>();
308+
276309
// Don't waste stamina in main game
277310
InstallHook<APlayerSimProfile_Update>();
278311

Toshi/Source/Math/TRandom.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ class TRandom
3636
void SetSeed( TUINT a_uiSeed );
3737
TUINT32 GetSeed() const { return m_uiSeed; }
3838

39-
private:
39+
protected:
4040
void Isaac();
4141
void RandInit();
4242

43-
private:
43+
protected:
4444
TUINT32 m_uiSeed; // 0x0
4545
TUINT32 m_uiRndCnt; // 0x4
46-
TUINT32 m_pRandrsl[ RANDSIZ ]; //0x8
46+
TUINT32 m_pRandrsl[ RANDSIZ ]; // 0x8
4747

4848
TUINT32 m_pRandmem[ RANDSIZ ]; // 0x48
4949

0 commit comments

Comments
 (0)