Skip to content

Commit aeabcb6

Browse files
committed
Allow toggling rumble from ApeSphere menu
1 parent f4c6b34 commit aeabcb6

File tree

3 files changed

+54
-16
lines changed

3 files changed

+54
-16
lines changed

rel/include/mkb2.us.lst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14934,4 +14934,5 @@ E0000094:locked_cache_mtx_stack_ptr
1493414934
E000019C:e
1493514935
E00001A0:0.5
1493614936
8032bfb0:sprite_loadin_stage_name_tick
14937-
8032ccb4:sprite_bonus_stage_tick
14937+
8032ccb4:sprite_bonus_stage_tick
14938+
804a7560:rumble_enabled_bitflag

rel/menu_defn.cpp

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@
99

1010
#define ARRAY_LEN(a) (sizeof((a)) / sizeof((a)[0]))
1111

12+
namespace mkb
13+
{
14+
15+
extern "C"
16+
{
17+
extern u8 rumble_enabled_bitflag;
18+
}
19+
20+
}
21+
1222
namespace menu
1323
{
1424

@@ -33,14 +43,40 @@ static void set_practice_tools_enabled(bool enable)
3343
}
3444
}
3545

36-
static void set_jump_mod_enabled(bool enable) { if (enable) jump::init(); else jump::dest(); }
37-
38-
static bool get_rumble_enabled()
39-
{
40-
return true;
41-
}
42-
43-
static void set_rumble_enabled(bool enable) {}
46+
static Widget rumble_widgets[] = {
47+
{
48+
.type = WidgetType::Checkbox,
49+
.checkbox = {
50+
.label = "Controller 1 Rumble",
51+
.get = []() { return static_cast<bool>(mkb::rumble_enabled_bitflag & (1 << 0)); },
52+
.set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 0); },
53+
}
54+
},
55+
{
56+
.type = WidgetType::Checkbox,
57+
.checkbox = {
58+
.label = "Controller 2 Rumble",
59+
.get = []() { return static_cast<bool>(mkb::rumble_enabled_bitflag & (1 << 1)); },
60+
.set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 1); },
61+
}
62+
},
63+
{
64+
.type = WidgetType::Checkbox,
65+
.checkbox = {
66+
.label = "Controller 3 Rumble",
67+
.get = []() { return static_cast<bool>(mkb::rumble_enabled_bitflag & (1 << 2)); },
68+
.set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 2); },
69+
}
70+
},
71+
{
72+
.type = WidgetType::Checkbox,
73+
.checkbox = {
74+
.label = "Controller 4 Rumble",
75+
.get = []() { return static_cast<bool>(mkb::rumble_enabled_bitflag & (1 << 3)); },
76+
.set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 3); },
77+
}
78+
}
79+
};
4480

4581
static Widget help_widgets[] = {
4682
{.type = WidgetType::Header, .header = {"Practice Tools Bindings"}},
@@ -70,12 +106,13 @@ static Widget root_widgets[] = {
70106
},
71107
{
72108
.type = WidgetType::Checkbox,
73-
.checkbox = {"Jump Mod", jump::is_enabled, set_jump_mod_enabled},
74-
},
75-
{
76-
.type = WidgetType::Checkbox,
77-
.checkbox = {"Rumble", get_rumble_enabled, set_rumble_enabled},
109+
.checkbox = {
110+
.label = "Jump Mod",
111+
.get = jump::is_enabled,
112+
.set = [](bool enable) { if (enable) jump::init(); else jump::dest(); },
113+
},
78114
},
115+
{.type = WidgetType::Menu, .menu = {"Rumble", rumble_widgets, ARRAY_LEN(rumble_widgets)}},
79116
{.type = WidgetType::Menu, .menu = {"Help", help_widgets, ARRAY_LEN(help_widgets)}},
80117
};
81118

rel/menu_impl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ void draw_menu_widget(MenuWidget *menu, u32 cursor_pos)
173173
MARGIN + PAD,
174174
y,
175175
cursor_pos == selectable_idx ? lerped_color : unfocused,
176-
" %s",
177-
widget.checkbox.get() ? "Enabled" : "Disabled");
176+
" %s",
177+
widget.checkbox.get() ? "On" : "Off");
178178

179179
if (cursor_pos == selectable_idx) cursor_y = y;
180180
y += LINE_HEIGHT;

0 commit comments

Comments
 (0)