Merge pull request #152 from Cuyler36/m_editor_ovl

Implement & link m_editor_ovl.c
This commit is contained in:
Cuyler36
2023-11-18 20:35:28 -05:00
committed by GitHub
22 changed files with 3267 additions and 7 deletions
+5
View File
@@ -562,6 +562,11 @@ m_bank_ovl.c:
.rodata: [0x8064AE58, 0x8064AE90]
.data: [0x806C7B90, 0x806C7BE0]
.bss: [0x8133E0A8, 0x8133E0C0]
m_editor_ovl.c:
.text: [0x805D8498, 0x805DC3CC]
.rodata: [0x8064B300, 0x8064B368]
.data: [0x806CC9D8, 0x806CD068]
.bss: [0x8133F5C8, 0x8133F600]
m_map_ovl.c:
.text: [0x805E5EFC, 0x805E7A54]
.rodata: [0x8064B628, 0x8064B6B0]
+1
View File
@@ -52651,6 +52651,7 @@ global:
0x8133EEE0: de_ovl_data
0x8133F5C0: ee_ovl_data
0x8133F5C8: edit_ovl_data
0x8133F600: gb_ovl_change_flg
0x8133F608: hand_ovl_data
0x8133F980: hp_ovl_data
0x8133FAA0: haniwa_ovl_data
+38
View File
@@ -0,0 +1,38 @@
#ifndef M_ADDRESS_OVL_H
#define M_ADDRESS_OVL_H
#include "types.h"
#include "m_address_ovl_h.h"
#include "m_submenu_ovl.h"
#include "m_mail.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mAD_PAGE_NUM 3
struct address_ovl_s {
u8 _00;
u8 _01;
u8 command;
u8 _03;
u8 _04;
u8 selected_entry;
u8 show_museum_address;
u8 _07;
u8 page_entry_count[mAD_PAGE_NUM];
f32 _0C;
f32 _10;
f32 _14[mAD_PAGE_NUM];
f32 _20[mAD_PAGE_NUM];
Mail_nm_c player_mail_name[PLAYER_NUM + 1]; // last entry is the museum name
Mail_nm_c animal_mail_name[ANIMAL_NUM_MAX];
Gfx* display_list; // set to the beginning of the address display list data for drawing over editor etc
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_ADDRESS_OVL_H_H
#define M_ADDRESS_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct address_ovl_s mAD_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+42
View File
@@ -0,0 +1,42 @@
#ifndef M_BOARD_OVL_H
#define M_BOARD_OVL_H
#include "types.h"
#include "m_board_ovl_h.h"
#include "m_submenu_ovl.h"
#include "m_mail.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mBD_BODY_LINE_NUM 6
enum {
mBD_FIELD_HEADER,
mBD_FIELD_BODY,
mBD_FIELD_FOOTER,
mBD_FIELD_NUM
};
struct board_ovl_s {
u8 field;
u8 _01;
u8 _02;
u8 _03;
u8 _04;
u8 lengths[mBD_FIELD_NUM];
Mail_c mail;
Mail_c* dst_p;
f32 ofs_x;
f32 ofs_y;
int _140;
int _144;
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_BOARD_OVL_H_H
#define M_BOARD_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct board_ovl_s mBD_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+29
View File
@@ -0,0 +1,29 @@
#ifndef M_DIARY_H
#define M_DIARY_H
#include "types.h"
#include "m_personal_id.h"
#include "lb_rtc.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mDI_ENTRY_SIZE 992
typedef struct diary_entry_s {
u8 text[mDI_ENTRY_SIZE];
} mDi_entry_c;
typedef struct diary_data_s {
u16 checksum;
mDi_entry_c entries[PLAYER_NUM][lbRTC_MONTHS_MAX];
} mDi_data_c;
extern int mDi_strlen(u8* str, int max_len, u8 end_char);
#ifdef __cplusplus
}
#endif
#endif
+52
View File
@@ -0,0 +1,52 @@
#ifndef M_DIARY_OVL_H
#define M_DIARY_OVL_H
#include "types.h"
#include "m_diary_ovl_h.h"
#include "m_diary.h"
#ifdef __cplusplus
extern "C" {
#endif
enum {
mDI_FIELD_BODY,
mDI_FIELD_NUM
};
struct diary_ovl_s {
mDi_data_c* data;
u8 field;
u8 _05;
s16 entry_len[mDI_FIELD_NUM];
mDi_entry_c* current_entry;
int _0C;
int _10;
int _14;
int _18;
s16 move_proc;
s16 _1E;
s16 _20;
s16 _22;
s16 _24;
f32 _28;
s16 _2C;
s16 _2E;
s16 _30;
s16 _32;
u32 trigger;
u32 button;
u32 last_button;
s16 _40;
s16 _42;
s16 cursor_idx;
s16 _46;
s16 _48;
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_DIARY_OVL_H_H
#define M_DIARY_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct diary_ovl_s mDI_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+144
View File
@@ -0,0 +1,144 @@
#ifndef M_EDITOR_OVL_H
#define M_EDITOR_OVL_H
#include "types.h"
#include "m_editor_ovl_h.h"
#include "m_submenu_ovl.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mED_COLUMNS 10
#define mED_ROWS 4
#define mED_NG_WORD_START 0x74A
#define mED_NG_WORD_NUM 14
enum {
mED_TYPE_BOARD,
mED_TYPE_HBOARD,
mED_TYPE_NOTICE,
mED_TYPE_LEDIT,
mED_TYPE_CP_TITLE,
mED_TYPE_DIARY,
mED_TYPE_PASSWORDMAKE,
mED_TYPE_PASSWORDCHK,
mED_TYPE_NUM
};
enum {
mED_STICK_AREA_LEFT,
mED_STICK_AREA_TOP_LEFT,
mED_STICK_AREA_TOP,
mED_STICK_AREA_TOP_RIGHT,
mED_STICK_AREA_RIGHT,
mED_STICK_AREA_BOTTOM_RIGHT,
mED_STICK_AREA_BOTTOM,
mED_STICK_AREA_BOTTOM_LEFT,
mED_STICK_AREA_CENTER,
mED_STICK_AREA_NUM
};
enum {
mED_COMMAND_NONE,
mED_COMMAND_CURSOL_RIGHT,
mED_COMMAND_CURSOL_LEFT,
mED_COMMAND_CURSOL_UPPER,
mED_COMMAND_CURSOL_LOWER,
mED_COMMAND_END_EDIT,
mED_COMMAND_BACKSPACE,
mED_COMMAND_EXCHANGE_CODE,
mED_COMMAND_OUTPUT_CODE,
mED_COMMAND_9,
mED_COMMAND_NUM
};
enum {
mED_SHIFT_LOWER,
mED_SHIFT_UPPER,
mED_SHIFT_NUM
};
enum {
mED_ARRANGE_QWERTY,
mED_ARRANGE_ALPHA,
mED_ARRANGE_NUM
};
enum {
mED_INPUT_MODE_LETTER,
mED_INPUT_MODE_SIGN,
mED_INPUT_MODE_MARK,
mED_INPUT_MODE_NUM
};
enum {
mED_LINETYPE_SINGLE,
mED_LINETYPE_MULTI,
mED_LINETYPE_PW,
mED_LINETYPE_NUM
};
enum {
mED_LINE_OK,
mED_LINE_NEWLINE,
mED_LINE_WIDTH_OVER,
mED_LINE_NUM_OVER,
mED_LINE_NUM
};
typedef void (*mED_ENDCODE_DRAW_PROC)(Submenu*, GAME*, f32, f32);
typedef void (*mED_CURSOL_DRAW_PROC)(Submenu*, GAME*, f32, f32);
struct editor_ovl_s {
u8 stick_area;
u8 stick_area_changed;
u8 select_col;
u8 select_row;
u8 stick_area_held_frames;
u8 input_mode;
u8 shift_mode;
u8 arrange;
int last_buttons;
s16 cursol_opacity_step;
u8 _0E;
u8 _0F;
u8 _10;
u8 command;
u8 _12;
u8 now_code;
u8 _14;
u8 command_processed;
s16 cursor_idx;
s16 input_length;
s16 max_line_no;
s16 line_width;
s16 now_str_len;
s16 exchange_code;
s16 _22;
s16 _24;
s16 _26;
u8* input_str;
mED_ENDCODE_DRAW_PROC end_code_draw;
mED_CURSOL_DRAW_PROC cursol_draw;
u8 _34;
};
extern void mED_editor_ovl_set_proc(Submenu* submenu);
extern void mED_editor_ovl_construct(Submenu* submenu);
extern void mED_editor_ovl_destruct(Submenu* submenu);
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_EDITOR_OVL_H_H
#define M_EDITOR_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct editor_ovl_s mED_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+1
View File
@@ -259,6 +259,7 @@ extern int mMsg_Get_msg_num(mMsg_Window_c* msg_win);
extern int mMsg_Check_main_index(mMsg_Window_c* msg_win, int index);
extern int mMsg_request_main_appear(mMsg_Window_c* msg_win, ACTOR* other_actor, int display_name, rgba_t* window_color_p, int msg_no, int request_priority);
extern int mMsg_Check_main_hide(mMsg_Window_c* msg_win);
extern int mMsg_sound_voice_get_for_editor(int code);
#ifdef __cplusplus
}
+27
View File
@@ -0,0 +1,27 @@
#ifndef M_PASSWORDCHK_OVL_H
#define M_PASSWORDCHK_OVL_H
#include "types.h"
#include "m_passwordChk_ovl_h.h"
#include "m_submenu_ovl.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mPC_STR_SIZE 14
#define mPC_LINE_COUNT 2
struct passwordChk_ovl_s {
int selected_line;
u8 _04;
u8 _05;
u8 line0[mPC_STR_SIZE];
u8 line1[mPC_STR_SIZE];
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_PASSWORD_CHECK_OVL_H_H
#define M_PASSWORD_CHECK_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct passwordChk_ovl_s mPC_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+31
View File
@@ -0,0 +1,31 @@
#ifndef M_PASSWORDMAKE_OVL_H
#define M_PASSWORDMAKE_OVL_H
#include "types.h"
#include "m_passwordMake_ovl_h.h"
#include "m_submenu_ovl.h"
#include "m_personal_id.h"
#ifdef __cplusplus
extern "C" {
#endif
enum {
mPM_ENTRY_TOWN,
mPM_ENTRY_PLAYER,
mPM_ENTRY_NUM
};
struct passwordMake_ovl_s {
int selected_idx;
u8 lengths[mPM_ENTRY_NUM];
u8 town_name[LAND_NAME_SIZE];
u8 player_name[PLAYER_NAME_LEN];
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_PASSWORDMAKE_OVL_H_H
#define M_PASSWORDMAKE_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct passwordMake_ovl_s mPM_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -24,6 +24,22 @@ enum {
mSM_PROCESS_NUM
};
enum {
mSM_MOVE_OUT_RIGHT,
mSM_MOVE_IN_RIGHT,
mSM_MOVE_OUT_LEFT,
mSM_MOVE_IN_LEFT,
mSM_MOVE_OUT_TOP,
mSM_MOVE_IN_TOP,
mSM_MOVE_OUT_BOTTOM,
mSM_MOVE_IN_BOTTOM,
mSM_MOVE_NUM
};
enum submenu_overlay {
mSM_OVL_NONE,
+25 -3
View File
@@ -12,6 +12,12 @@
#include "m_bank_ovl_h.h"
#include "m_music_ovl_h.h"
#include "m_warning_ovl_h.h"
#include "m_editor_ovl_h.h"
#include "m_passwordChk_ovl_h.h"
#include "m_passwordMake_ovl_h.h"
#include "m_board_ovl_h.h"
#include "m_diary_ovl_h.h"
#include "m_address_ovl_h.h"
#ifdef __cplusplus
extern "C" {
@@ -21,7 +27,7 @@ enum {
mSM_OVL_PROC_MOVE,
mSM_OVL_PROC_PLAY,
mSM_OVL_PROC_WAIT,
mSM_OVL_PROC_3,
mSM_OVL_PROC_OBEY,
mSM_OVL_PROC_END,
mSM_OVL_PROC_NUM
@@ -109,7 +115,11 @@ struct submenu_overlay_s {
/* 0x964 */ mSM_SETUP_VIEW_PROC setup_view_proc;
/* 0x968 */ void* unused_func_968;
/* 0x96C */ mSM_CHANGE_VIEW_PROC change_view_proc;
/* 0x970 */ u8 _970[0x9A8 - 0x970];
/* 0x970 */ u8 _970[0x98C - 0x970];
/* 0x98C */ mED_Ovl_c* editor_ovl;
/* 0x990 */ mBD_Ovl_c* board_ovl;
/* 0x994 */ mAD_Ovl_c* address_ovl;
/* 0x998 */ u8 _998[0x9A8 - 0x998];
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
/* 0x9AC */ void* _9AC;
/* 0x9B0 */ void* _9B0;
@@ -117,7 +127,19 @@ struct submenu_overlay_s {
/* 0x9B8 */ u8 _9B8[0x9D0 - 0x9B8];
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
/* 0x9D8 */ u8 _9D8[0xA00 - 0x9D8];
/* 0x9D8 */ void* _9D8;
/* 0x9DC */ void* _9DC;
/* 0x9E0 */ void* _9E0;
/* 0x9E4 */ void* _9E4;
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
/* 0x9EC */ void* _9EC;
/* 0x9F0 */ mPM_Ovl_c* passwordMake_ovl;
/* 0x9F4 */ mPC_Ovl_c* passwordChk_ovl;
/* 0x9F8 */ u8 hboard_exists;
/* 0x9F9 */ u8 le_exists;
/* 0x9FA */ u8 _9FA;
/* 0x9FB */ u8 _9FB;
/* 0x9FC */ int _9FC;
/* 0xA00 */ Mtx* projection_matrix;
};
+36
View File
@@ -22,11 +22,47 @@ struct warning_ovl_s {
f32 scale;
};
enum {
mWR_WARNING_MAILBOX,
mWR_WARNING_PR_LEAVE,
mWR_WARNING_MONEY,
mWR_WARNING_PR_FOOD,
mWR_WARNING_PR_QUEST,
mWR_WARNING_5,
mWR_WARNING_6,
mWR_WARNING_7,
mWR_WARNING_8,
mWR_WARNING_PUT_MAX_FURNITURE,
mWR_WARNING_PUT_FURNITURE,
mWR_WARNING_PUT_ITEM,
mWR_WARNING_PUT_PLANT,
mWR_WARNING_HUKUBUKURO_OPEN,
mWR_WARNING_PRESENT_MAIL,
mWR_WARNING_WRITE,
mWR_WARNING_MUSIC,
mWR_WARNING_MUSIC2,
mWR_WARNING_ORIGINAL,
mWR_WARNING_PUT_SIGN,
mWR_WARNING_PUT_SIGN_OTHER,
mWR_WARNING_PUT_SIGN_ISLAND,
mWR_WARNING_PR_CARD,
mWR_WARNING_LOCK_DIARY,
mWR_WARNING_PUT_FAMI,
mWR_WARNING_WORD_OVER,
mWR_WARNING_PW_CHK,
mWR_WARNING_PR_FORK,
mWR_WARNING_NUM
};
extern void mWR_warning_ovl_set_proc(Submenu* submenu);
extern void mWR_warning_ovl_init(Submenu* submenu);
extern void mWR_warning_ovl_construct(Submenu* submenu);
extern void mWR_warning_ovl_destruct(Submenu* submenu);
#define mWR_SHOW_WARNING(submenu, warning) \
mSM_open_submenu(submenu, mSM_OVL_WARNING, warning, 0)
#ifdef __cplusplus
}
#endif
+2 -2
View File
@@ -123,7 +123,7 @@ static void mBN_bank_ok(Submenu* submenu, mSM_MenuInfo_c* menu, mBN_Overlay_c* b
}
Common_Get(now_private)->inventory.wallet = bank_ovl->now_bell;
(*submenu->overlay->move_chg_base_proc)(menu, 4);
(*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP);
sAdo_SysTrgStart(SE_MENU_EXIT);
}
}
@@ -138,7 +138,7 @@ static void mBN_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu) {
mBN_Overlay_c* bank_ovl = overlay->bank_ovl;
if (trigger & BUTTON_B) {
(*overlay->move_chg_base_proc)(menu, 4);
(*overlay->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP);
sAdo_SysTrgStart(SE_MENU_EXIT);
}
else if (trigger & BUTTON_START) {
+2720
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -832,7 +832,7 @@ static void mMP_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu) {
int cursor_moved = FALSE;
if ((trigger & (BUTTON_A | BUTTON_B | BUTTON_START)) || (menu->data0 == 1 && (trigger & BUTTON_X))) {
(*ovl->move_chg_base_proc)(menu, 4);
(*ovl->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP);
sAdo_SysTrgStart(0x17D);
}
else if (trigger & BUTTON_CLEFT) {
@@ -1345,7 +1345,7 @@ static void mMP_map_ovl_init(Submenu* submenu) {
mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP];
overlay->menu_control.animation_flag = FALSE;
(*submenu->overlay->move_chg_base_proc)(menu, 5);
(*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_IN_TOP);
sAdo_SysTrgStart(0x17C);
mMP_set_init_data(submenu->overlay->map_ovl, menu);