Skip to content

Commit a823aa0

Browse files
committed
Fixed pause hook in Decades Later and other hacks with embedded star display
1 parent c0b107f commit a823aa0

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

src/main.c

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.h"
22

3+
#include "game/game.h"
4+
#include "game/ingame_menu.h"
35
#include "game/level_update.h"
46

57
#include "action.h"
@@ -28,6 +30,25 @@
2830
#define PLAY_MODE_NORMAL 0
2931
#define PLAY_MODE_PAUSED 2
3032

33+
void Hacktice_onPause()
34+
{
35+
SaveState_onPause();
36+
Config_onPause();
37+
}
38+
39+
#ifdef BINARY
40+
static bool sInitialized = 0;
41+
static void Hacktice_onPauseStarDisplay()
42+
{
43+
gSPDisplayList(gDisplayListHead++, 0x02011cc8);
44+
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
45+
46+
Hacktice_onPause();
47+
48+
gSPDisplayList(gDisplayListHead++, 0x02011d50);
49+
}
50+
#endif
51+
3152
void Hacktice_onFrame()
3253
{
3354
SoftReset_onFrame();
@@ -55,12 +76,29 @@ void Hacktice_onFrame()
5576

5677
Timer_onFrame();
5778
TextManager_onFrame();
58-
}
5979

60-
void Hacktice_onPause()
61-
{
62-
SaveState_onPause();
63-
Config_onPause();
80+
#ifdef BINARY
81+
if (!sInitialized)
82+
{
83+
sInitialized = true;
84+
u32 cmd = ((u32) &Hacktice_onPauseStarDisplay);
85+
cmd &= 0xffffff;
86+
cmd /= 4;
87+
cmd |= 0x0C000000;
88+
89+
// Star Revenge 8-like star display hook, redirect to my code
90+
if (0x0C102000U == *(u32*) 0x802DCC48)
91+
{
92+
*(u32*) 0x802DCC48 = cmd;
93+
}
94+
95+
// Decades Later-like star display hook, redirect to my code
96+
if (0x0060F809U == *(u32*) 0x802DCC4C)
97+
{
98+
*(u32*) 0x802DCC4C = cmd;
99+
}
100+
}
101+
#endif
64102
}
65103

66104
uintptr_t Hacktice_start[] = {

src/xversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
HACKTICE_VERSION(1, 6, 2)
1+
HACKTICE_VERSION(1, 6, 3)

0 commit comments

Comments
 (0)