Skip to content

Commit 27cbfa3

Browse files
committed
Added a cheat for generating a lag spike
1 parent e041480 commit 27cbfa3

File tree

13 files changed

+213
-9
lines changed

13 files changed

+213
-9
lines changed

ttyd-tools/rel/include/codes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ void reloadRoomMain();
1616
void reloadRoom();
1717
void levitate();
1818
uint32_t autoMashText(uint32_t controllerPort);
19+
void generateLagSpike();
1920
void lockMarioHPToMax();
2021
void bobberyEarly();
2122
void spawnItem();

ttyd-tools/rel/include/draw.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ void drawCheatsChangeSequence();
9595
void drawCheatsBool(int32_t posY);
9696
void drawButtonCombo(uint32_t buttonCombo, int32_t posY, const char *description);
9797
void drawChangeButtonCombo(uint16_t *currentButtonCombo);
98+
void drawCheatsGenerateLagSpike(uint16_t currentButtonCombo);
9899
void drawCheatsForcedDropItem();
99100
void drawCheatsResolveFades();
100101
void drawCheatsLockFlags();

ttyd-tools/rel/include/gc/OSTime.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace gc::OSTime {
77
extern "C" {
88

99
int64_t OSGetTime();
10-
// OSGetTick
10+
uint32_t OSGetTick();
1111
// __OSGetSystemTime
1212
// GetDates
1313
// OSTicksToCalendarTime

ttyd-tools/rel/include/global.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ enum MENU_NAMES
2222
CHEATS_CHANGE_SEQUENCE,
2323
CHEATS_STANDARD,
2424
CHEATS_NO_BUTTON_COMBO,
25+
CHEATS_GENERATE_LAG_SPIKE,
2526
CHEATS_NPC_FORCE_DROP,
2627
CHEATS_RESOLVE_FADES,
2728
CHEATS_LOCK_FLAGS,
@@ -83,6 +84,7 @@ enum CHEATS_OPTIONS
8384
RELOAD_ROOM,
8485
LEVITATE,
8586
AUTO_MASH_TEXT,
87+
GENERATE_LAG_SPIKE,
8688
LOCK_MARIO_HP_TO_MAX,
8789
RUN_FROM_BATTLES,
8890
DISABLE_MENU_SOUNDS,
@@ -116,6 +118,13 @@ enum CHEATS_FORCE_ITEM_DROP_SELECTION
116118
#define FADE_DONT_RESOLVE -1
117119
#define FADE_RESOLVE_SUCCESS 1
118120

121+
enum CHEATS_GENERATE_LAG_SPIKE_SELECTION
122+
{
123+
CHEATS_GENERATE_LAG_SPIKE_TURN_ON_OR_OFF = 1,
124+
CHEATS_GENERATE_LAG_SPIKE_CHANGE_BUTTON_COMBO,
125+
CHEATS_GENERATE_LAG_SPIKE_SET_DURATION,
126+
};
127+
119128
enum CHEATS_LOCK_FLAGS_SELECTION
120129
{
121130
LOCK_GSW_FLAGS = 1,
@@ -519,6 +528,7 @@ struct MenuVars
519528
uint32_t MemoryWatchSecondaryValue;
520529
bool DrawChangingMemoryWatchPosition;
521530
uint8_t FrameCounter;
531+
uint16_t LagSpikeDuration; // Milliseconds
522532

523533
// Variables used by other stuff
524534
bool ResetMarioProperties;
@@ -529,6 +539,7 @@ struct MenuVars
529539
MenuVars()
530540
{
531541
ForcedNPCItemDrop = ttyd::item_data::Item::SleepySheep;
542+
LagSpikeDuration = 468;
532543
}
533544
};
534545

@@ -900,8 +911,8 @@ struct NpcNameToPtrErrorStruct
900911
};
901912

902913
extern MenuVars MenuVar;
903-
extern Menus Menu[32];
904-
extern Cheats Cheat[25];
914+
extern Menus Menu[33];
915+
extern Cheats Cheat[26];
905916
extern bool Displays[17];
906917
extern char DisplayBuffer[256];
907918
extern MemoryWatchStruct MemoryWatch[60];

ttyd-tools/rel/include/ttyd.eu.lst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2179,7 +2179,7 @@
21792179

21802180
// OSTime.c
21812181
802A1904:OSGetTime
2182-
// 802A191C:OSGetTick
2182+
802A191C:OSGetTick
21832183
// 802A1924:__OSGetSystemTime
21842184
// 802A1988:GetDates
21852185
// 802A1B24:OSTicksToCalendarTime

ttyd-tools/rel/include/ttyd.jp.lst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2174,7 +2174,7 @@
21742174

21752175
// OSTime.c
21762176
80297A48:OSGetTime
2177-
// 80297A60:OSGetTick
2177+
80297A60:OSGetTick
21782178
// 80297A68:__OSGetSystemTime
21792179
// 80297ACC:GetDates
21802180
// 80297C68:OSTicksToCalendarTime

ttyd-tools/rel/include/ttyd.us.lst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2175,7 +2175,7 @@
21752175

21762176
// OSTime.c
21772177
8029D84C:OSGetTime
2178-
// 8029D864:OSGetTick
2178+
8029D864:OSGetTick
21792179
// 8029D86C:__OSGetSystemTime
21802180
// 8029D8D0:GetDates
21812181
// 8029DA6C:OSTicksToCalendarTime

ttyd-tools/rel/source/codes.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "patch.h"
88
#include "assembly.h"
99

10+
#include <gc/OSTime.h>
1011
#include <ttyd/npcdrv.h>
1112
#include <ttyd/item_data.h>
1213
#include <ttyd/mariost.h>
@@ -652,6 +653,40 @@ uint32_t autoMashText(uint32_t controllerPort)
652653
return PAD_B;
653654
}
654655

656+
void generateLagSpike()
657+
{
658+
if (!Cheat[GENERATE_LAG_SPIKE].Active)
659+
{
660+
return;
661+
}
662+
663+
if (!checkButtonCombo(Cheat[GENERATE_LAG_SPIKE].ButtonCombo))
664+
{
665+
return;
666+
}
667+
668+
// Make sure the desired duration does not exceed 10 seconds
669+
uint32_t Duration = MenuVar.LagSpikeDuration;
670+
if (Duration > 10000)
671+
{
672+
// Reset the duration
673+
Duration = 468;
674+
MenuVar.LagSpikeDuration = static_cast<uint16_t>(Duration);
675+
}
676+
677+
uint32_t DurationTick = Duration * 40500;
678+
uint32_t StartTick = gc::OSTime::OSGetTick();
679+
680+
while (1)
681+
{
682+
uint32_t CurrentTick = gc::OSTime::OSGetTick();
683+
if ((CurrentTick - StartTick) >= DurationTick)
684+
{
685+
break;
686+
}
687+
}
688+
}
689+
655690
void lockMarioHPToMax()
656691
{
657692
if (!Cheat[LOCK_MARIO_HP_TO_MAX].Active)

ttyd-tools/rel/source/draw.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,6 +3052,32 @@ void drawChangeButtonCombo(uint16_t *currentButtonCombo)
30523052
clearMemory(CheatsDisplayButtons.CheatsCurrentButtonsHeld, (14 * sizeof(uint8_t)));
30533053
}
30543054

3055+
void drawCheatsGenerateLagSpike(uint16_t currentButtonCombo)
3056+
{
3057+
uint32_t Color = 0xFFFFFFFF;
3058+
uint8_t Alpha = 0xFF;
3059+
int32_t PosX = -232;
3060+
int32_t PosY = 100;
3061+
float Scale = 0.6;
3062+
3063+
// Draw the bool
3064+
drawCheatsBool(PosY);
3065+
3066+
// Draw the button combo
3067+
PosY -= 60;
3068+
const char *Description = "Button Combo (Can be pressed in any order)";
3069+
drawButtonCombo(currentButtonCombo, PosY, Description);
3070+
3071+
// Draw the duration
3072+
char *tempDisplayBuffer = DisplayBuffer;
3073+
sprintf(tempDisplayBuffer,
3074+
"Duration (in milliseconds)\n%" PRIu16,
3075+
MenuVar.LagSpikeDuration);
3076+
3077+
PosY -= 60;
3078+
drawText(tempDisplayBuffer, PosX, PosY, Alpha, Color, Scale);
3079+
}
3080+
30553081
void drawCheatsForcedDropItem()
30563082
{
30573083
uint8_t Alpha = 0xFF;

ttyd-tools/rel/source/global.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace mod {
55

6-
const char *VersionNumber = "v3.0.47d";
6+
const char *VersionNumber = "v3.0.47";
77

88
const char *RootLines[] =
99
{
@@ -53,6 +53,7 @@ const char *CheatsLines[] =
5353
"Reload Room",
5454
"Levitate",
5555
"Auto Mash Through Text",
56+
"Generate Lag Spike",
5657
"Lock Mario's HP To Its Max",
5758
"Allow Running From Any Battle",
5859
"Disable Pause Menu/Z Menu Sounds",
@@ -1016,6 +1017,13 @@ const char *CheatsManageGlobalWordsOptions[]
10161017
"Set New Value",
10171018
};
10181019

1020+
const char *CheatsGenerateLagSpikeOptions[]
1021+
{
1022+
"Turn On/Off",
1023+
"Change Button Combo",
1024+
"Set Duration",
1025+
};
1026+
10191027
const char *CheatsLockFlagsOptions[]
10201028
{
10211029
"Lock GSWs",
@@ -1834,6 +1842,7 @@ uint8_t CheatsOrder[] =
18341842
FALL_THROUGH_FLOORS,
18351843
LOCK_FLAGS,
18361844
AUTO_MASH_TEXT,
1845+
GENERATE_LAG_SPIKE,
18371846
};
18381847

18391848
uint8_t DisplaysOrder[] =
@@ -1858,8 +1867,8 @@ uint8_t DisplaysOrder[] =
18581867
};
18591868

18601869
struct MenuVars MenuVar;
1861-
struct Menus Menu[32];
1862-
struct Cheats Cheat[25];
1870+
struct Menus Menu[33];
1871+
struct Cheats Cheat[26];
18631872
bool Displays[17];
18641873
char DisplayBuffer[256];
18651874
struct MemoryWatchStruct MemoryWatch[60];
@@ -1925,6 +1934,10 @@ void initMenuVars()
19251934
Menu[CHEATS_NPC_FORCE_DROP].ColumnSplitAmount = Menu[CHEATS_NPC_FORCE_DROP].TotalMenuOptions;
19261935
Menu[CHEATS_NPC_FORCE_DROP].Line = CheatsForceItemDropOptionsLines;
19271936

1937+
Menu[CHEATS_GENERATE_LAG_SPIKE].TotalMenuOptions = sizeof(CheatsGenerateLagSpikeOptions) / sizeof(CheatsGenerateLagSpikeOptions[0]);
1938+
Menu[CHEATS_GENERATE_LAG_SPIKE].ColumnSplitAmount = Menu[CHEATS_GENERATE_LAG_SPIKE].TotalMenuOptions;
1939+
Menu[CHEATS_GENERATE_LAG_SPIKE].Line = CheatsGenerateLagSpikeOptions;
1940+
19281941
Menu[CHEATS_LOCK_FLAGS].TotalMenuOptions = sizeof(CheatsLockFlagsOptions) / sizeof(CheatsLockFlagsOptions[0]);
19291942
Menu[CHEATS_LOCK_FLAGS].ColumnSplitAmount = Menu[CHEATS_LOCK_FLAGS].TotalMenuOptions;
19301943
Menu[CHEATS_LOCK_FLAGS].Line = CheatsLockFlagsOptions;
@@ -2031,6 +2044,7 @@ void setInitialSettings()
20312044
// Cheat[DISABLE_MENU_SOUNDS].Active = false;
20322045
// Cheat[BOBBERY_EARLY].Active = false;
20332046
Cheat[FORCE_ITEM_DROP].Active = false;
2047+
Cheat[GENERATE_LAG_SPIKE].Active = false;
20342048

20352049
// Set the Cheats button combos
20362050
Cheat[WALK_THROUGH_WALLS].ButtonCombo = PAD_Z;
@@ -2048,6 +2062,7 @@ void setInitialSettings()
20482062
Cheat[RELOAD_ROOM].ButtonCombo = PAD_L | PAD_B;
20492063
Cheat[LEVITATE].ButtonCombo = PAD_L | PAD_A;
20502064
Cheat[AUTO_MASH_TEXT].ButtonCombo = PAD_Y;
2065+
Cheat[GENERATE_LAG_SPIKE].ButtonCombo = PAD_Y | PAD_Z;
20512066

20522067
// Set the Displays bools
20532068
// Displays[ONSCREEN_TIMER] = true;

0 commit comments

Comments
 (0)