Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified res/gz/checkbox.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/gz/gz_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ struct menu *gz_file_menu(void)

/* create memfile controls */
menu_add_static(&menu, 0, 3, "memory file", 0xC0C0C0);
menu_add_watch(&menu, 19, 3, (uint32_t)&gz.memfile_slot, WATCH_TYPE_U8);
menu_add_watch(&menu, 19, 3, (uint32_t)&gz.memfile_slot, WATCH_TYPE_U8, 0, 0);
menu_add_button(&menu, 17, 3, "-", memfile_dec_proc, NULL);
menu_add_button(&menu, 21, 3, "+", memfile_inc_proc, NULL);

Expand Down
2 changes: 1 addition & 1 deletion src/gz/gz_macro.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ struct menu *gz_macro_menu(void)
item = menu_add_intinput(&menu, 12, 4, 10, 6, movie_pos_proc, NULL);
item->tooltip = "macro frame";
menu_add_watch(&menu, 19, 4, (uint32_t)&gz.movie_input.size,
WATCH_TYPE_U32);
WATCH_TYPE_U32, 0, 0);
item = menu_add_button_icon(&menu, 0, 6, t_save, 0, 0xFFFFFF,
import_macro_proc, NULL);
item->tooltip = "import macro";
Expand Down
10 changes: 6 additions & 4 deletions src/gz/gz_scene.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,18 +389,20 @@ struct menu *gz_scene_menu(void)
/* teleport controls */
menu_add_static(&menu, 0, 10, "teleport slot", 0xC0C0C0);
menu_add_watch(&menu, 18, 10,
(uint32_t)&settings->teleport_slot, WATCH_TYPE_U8);
(uint32_t)&settings->teleport_slot, WATCH_TYPE_U8, 0, 0);
menu_add_button(&menu, 16, 10, "-", teleport_dec_proc, NULL);
menu_add_button(&menu, 20, 10, "+", teleport_inc_proc, NULL);
/* scene info watches */
menu_add_static(&menu, 0, 11, "current scene", 0xC0C0C0);
menu_add_watch(&menu, 16, 11,
(uint32_t)&z64_game.scene_index, WATCH_TYPE_U16);
(uint32_t)&z64_game.scene_index, WATCH_TYPE_U16, 0, 0);
menu_add_static(&menu, 0, 12, "current room", 0xC0C0C0);
menu_add_watch(&menu, 16, 12,
(uint32_t)&z64_game.room_ctxt.rooms[0].index, WATCH_TYPE_U8);
(uint32_t)&z64_game.room_ctxt.rooms[0].index, WATCH_TYPE_U8,
0, 0);
menu_add_static(&menu, 0, 13, "no. rooms", 0xC0C0C0);
menu_add_watch(&menu, 16, 13, (uint32_t)&z64_game.n_rooms, WATCH_TYPE_U8);
menu_add_watch(&menu, 16, 13, (uint32_t)&z64_game.n_rooms, WATCH_TYPE_U8,
0, 0);

/* populate collision menu */
collision.selector = menu_add_submenu(&collision, 0, 0, NULL, "return");
Expand Down
37 changes: 28 additions & 9 deletions src/gz/gz_settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,23 @@ static int pause_display_proc(struct menu_item *item,
return 0;
}

static int pointer_watches_proc(struct menu_item *item,
enum menu_callback_reason reason,
void *data)
{
if (reason == MENU_CALLBACK_SWITCH_ON) {
settings->bits.pointer_watches = 1;
watchlist_refresh(gz.menu_watchlist);
}
else if (reason == MENU_CALLBACK_SWITCH_OFF) {
settings->bits.pointer_watches = 0;
watchlist_refresh(gz.menu_watchlist);
}
else if (reason == MENU_CALLBACK_THINK)
menu_checkbox_set(item, settings->bits.pointer_watches);
return 0;
}

static int macro_input_proc(struct menu_item *item,
enum menu_callback_reason reason,
void *data)
Expand Down Expand Up @@ -276,7 +293,7 @@ struct menu *gz_settings_menu(void)
menu.selector = menu_add_submenu(&menu, 0, 0, NULL, "return");
/* profile select */
menu_add_static(&menu, 0, 1, "profile", 0xC0C0C0);
menu_add_watch(&menu, 18, 1, (uint32_t)&gz.profile, WATCH_TYPE_U8);
menu_add_watch(&menu, 18, 1, (uint32_t)&gz.profile, WATCH_TYPE_U8, 0, 0);
menu_add_button(&menu, 16, 1, "-", profile_dec_proc, NULL);
menu_add_button(&menu, 20, 1, "+", profile_inc_proc, NULL);
/* appearance controls */
Expand Down Expand Up @@ -308,17 +325,19 @@ struct menu *gz_settings_menu(void)
generic_position_proc, &settings->timer_x);
menu_add_static(&menu, 0, 9, "pause display", 0xC0C0C0);
menu_add_checkbox(&menu, 16, 9, pause_display_proc, NULL);
menu_add_static(&menu, 0, 10, "pointer watches", 0xC0C0C0);
menu_add_checkbox(&menu, 16, 10, pointer_watches_proc, NULL);
/* behavior controls */
menu_add_static(&menu, 0, 10, "macro input", 0xC0C0C0);
menu_add_checkbox(&menu, 16, 10, macro_input_proc, NULL);
menu_add_static(&menu, 0, 11, "break type", 0xC0C0C0);
menu_add_option(&menu, 16, 11, "normal\0""aggressive\0",
menu_add_static(&menu, 0, 11, "macro input", 0xC0C0C0);
menu_add_checkbox(&menu, 16, 11, macro_input_proc, NULL);
menu_add_static(&menu, 0, 12, "break type", 0xC0C0C0);
menu_add_option(&menu, 16, 12, "normal\0""aggressive\0",
break_type_proc, NULL);
menu_add_submenu(&menu, 0, 12, &commands, "commands");
menu_add_submenu(&menu, 0, 13, &commands, "commands");
/* settings commands */
menu_add_button(&menu, 0, 13, "save settings", save_settings_proc, NULL);
menu_add_button(&menu, 0, 14, "load settings", load_settings_proc, NULL);
menu_add_button(&menu, 0, 15, "restore defaults",
menu_add_button(&menu, 0, 14, "save settings", save_settings_proc, NULL);
menu_add_button(&menu, 0, 15, "load settings", load_settings_proc, NULL);
menu_add_button(&menu, 0, 16, "restore defaults",
restore_settings_proc, NULL);

/* populate commands menu */
Expand Down
21 changes: 19 additions & 2 deletions src/gz/menu.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ enum menu_switch_reason
MENU_SWITCH_HIDE,
};

enum menu_checkbox_type
{
MENU_CHECKBOX_CHECK,
MENU_CHECKBOX_POINTER
};

struct menu_draw_params
{
int x;
Expand Down Expand Up @@ -227,18 +233,27 @@ void menu_prompt(struct menu *menu, const char *prompt,
menu_prompt_callback callback_proc,
void *callback_data);
struct menu_item *menu_add_watch(struct menu *menu, int x, int y,
uint32_t address, enum watch_type type);
uint32_t address, enum watch_type type,
_Bool pointer, int offset);
uint32_t menu_watch_get_address(struct menu_item *item);
void menu_watch_set_address(struct menu_item *item,
uint32_t address);
int menu_watch_get_offset(struct menu_item *item);
void menu_watch_set_offset(struct menu_item *item,
int offset);
_Bool menu_watch_get_pointer(struct menu_item *item);
void menu_watch_set_pointer(struct menu_item *item,
_Bool pointer);
enum watch_type menu_watch_get_type(struct menu_item *item);
void menu_watch_set_type(struct menu_item *item,
enum watch_type type);
struct menu_item *menu_add_userwatch(struct menu *menu, int x, int y,
uint32_t address, enum watch_type type);
uint32_t address, enum watch_type type,
_Bool pointer, int offset);
struct menu_item *menu_userwatch_address(struct menu_item *item);
struct menu_item *menu_userwatch_type(struct menu_item *item);
struct menu_item *menu_userwatch_watch(struct menu_item *item);
struct menu_item *menu_userwatch_pointer(struct menu_item *item);
struct menu_item *menu_add_submenu(struct menu *menu, int x, int y,
struct menu *submenu, const char *name);
struct menu_item *menu_add_switch(struct menu *menu, int x, int y,
Expand Down Expand Up @@ -270,6 +285,8 @@ struct menu_item *menu_add_positioning(struct menu *menu, int x, int y,
struct menu_item *menu_add_checkbox(struct menu *menu, int x, int y,
menu_generic_callback callback_proc,
void *callback_data);
void menu_checkbox_set_type(struct menu_item *item,
enum menu_checkbox_type type);
_Bool menu_checkbox_get(struct menu_item *item);
void menu_checkbox_set(struct menu_item *item, _Bool state);

Expand Down
24 changes: 19 additions & 5 deletions src/gz/menu_checkbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@

struct item_data
{
menu_generic_callback callback_proc;
void *callback_data;
_Bool state;
int anim_state;
menu_generic_callback callback_proc;
void *callback_data;
_Bool state;
int anim_state;
enum menu_checkbox_type type;
};

static int enter_proc(struct menu_item *item, enum menu_switch_reason reason)
Expand Down Expand Up @@ -50,7 +51,12 @@ static int draw_proc(struct menu_item *item,
if ((data->anim_state > 0) != data->state) {
gfx_mode_set(GFX_MODE_COLOR, GPACK_RGBA8888(0xFF, 0xFF, 0xFF,
draw_params->alpha));
sprite.texture_tile = 2;
switch(data->type)
{
case MENU_CHECKBOX_POINTER: sprite.texture_tile = 3; break;
case MENU_CHECKBOX_CHECK:
default: sprite.texture_tile = 2; break;
}
gfx_sprite_draw(&sprite);
}
if (data->anim_state > 0)
Expand Down Expand Up @@ -81,6 +87,7 @@ struct menu_item *menu_add_checkbox(struct menu *menu, int x, int y,
data->callback_proc = callback_proc;
data->callback_data = callback_data;
data->anim_state = 0;
data->type = MENU_CHECKBOX_CHECK;
struct menu_item *item = menu_item_add(menu, x, y, NULL, 0xFFFFFF);
item->data = data;
item->enter_proc = enter_proc;
Expand All @@ -90,6 +97,13 @@ struct menu_item *menu_add_checkbox(struct menu *menu, int x, int y,
return item;
}

void menu_checkbox_set_type(struct menu_item *item,
enum menu_checkbox_type type)
{
struct item_data *data = item->data;
data->type = type;
}

_Bool menu_checkbox_get(struct menu_item *item)
{
struct item_data *data = item->data;
Expand Down
90 changes: 77 additions & 13 deletions src/gz/menu_userwatch.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,30 @@
#include <stdint.h>
#include <inttypes.h>
#include "menu.h"
#include "input.h"
#include "settings.h"

struct item_data
{
struct menu_item *address;
struct menu_item *type;
struct menu_item *watch;
struct menu_item *pointer;
_Bool edit_offset;
};

static int address_proc(struct menu_item *item,
enum menu_callback_reason reason,
void *data)
{
struct item_data *item_data = data;
if (reason == MENU_CALLBACK_CHANGED)
menu_watch_set_address(item_data->watch, menu_intinput_get(item));
if (reason == MENU_CALLBACK_CHANGED) {
if (!item_data->edit_offset) {
menu_watch_set_address(item_data->watch, menu_intinput_get(item));
} else {
menu_watch_set_offset(item_data->watch, menu_intinput_get(item));
}
}
return 0;
}

Expand All @@ -31,22 +40,71 @@ static int type_proc(struct menu_item *item,
return 0;
}

static int pointer_proc(struct menu_item *item,
enum menu_callback_reason reason,
void *data)
{
struct item_data *item_data = data;
if (reason == MENU_CALLBACK_SWITCH_OFF) {
if (input_pad() & BUTTON_Z) {
if (!item_data->edit_offset) {
menu_intinput_set(item_data->address,
menu_watch_get_offset(item_data->watch));
item_data->edit_offset = 1;
} else {
menu_intinput_set(item_data->address,
menu_watch_get_address(item_data->watch));
item_data->edit_offset = 0;
}
return 1;
} else {
menu_watch_set_pointer(item_data->watch, 0);
menu_intinput_set(item_data->address,
menu_watch_get_address(item_data->watch));
item_data->edit_offset = 0;
}
}
else if (reason == MENU_CALLBACK_SWITCH_ON) {
menu_watch_set_pointer(item_data->watch, 1);
}
return 0;
}

struct menu_item *menu_add_userwatch(struct menu *menu, int x, int y,
uint32_t address, enum watch_type type)
uint32_t address, enum watch_type type,
_Bool pointer, int offset)
{
struct menu *imenu;
struct menu_item *item = menu_add_imenu(menu, x, y, &imenu);
struct item_data *data = malloc(sizeof(*data));
data->address = menu_add_intinput(imenu, 0, 0, 16, 8, address_proc, data);
menu_intinput_set(data->address, address);
data->type = menu_add_option(imenu, 9, 0,
"u8\0""s8\0""x8\0"
"u16\0""s16\0""x16\0"
"u32\0""s32\0""x32\0"
"f32\0",
type_proc, data);
menu_option_set(data->type, type);
data->watch = menu_add_watch(imenu, 13, 0, address, type);
if (settings->bits.pointer_watches) {
data->pointer = menu_add_checkbox(imenu, 0, 0, pointer_proc, data);
data->edit_offset = 0;
menu_checkbox_set(data->pointer, pointer);
menu_checkbox_set_type(data->pointer, MENU_CHECKBOX_POINTER);
data->address = menu_add_intinput(imenu, 2, 0, 16, 8, address_proc, data);
menu_intinput_set(data->address, address);
data->type = menu_add_option(imenu, 11, 0,
"u8\0""s8\0""x8\0"
"u16\0""s16\0""x16\0"
"u32\0""s32\0""x32\0"
"f32\0",
type_proc, data);
menu_option_set(data->type, type);
data->watch = menu_add_watch(imenu, 15, 0, address, type, pointer, offset);
} else {
data->edit_offset = 0;
data->address = menu_add_intinput(imenu, 0, 0, 16, 8, address_proc, data);
menu_intinput_set(data->address, address);
data->type = menu_add_option(imenu, 9, 0,
"u8\0""s8\0""x8\0"
"u16\0""s16\0""x16\0"
"u32\0""s32\0""x32\0"
"f32\0",
type_proc, data);
menu_option_set(data->type, type);
data->watch = menu_add_watch(imenu, 13, 0, address, type, pointer, offset);
}
item->data = data;
return item;
}
Expand All @@ -68,3 +126,9 @@ struct menu_item *menu_userwatch_watch(struct menu_item *item)
struct item_data *data = item->data;
return data->watch;
}

struct menu_item *menu_userwatch_pointer(struct menu_item *item)
{
struct item_data *data = item->data;
return data->pointer;
}
Loading