Implement & link m_select.c

This commit is contained in:
Cuyler36
2023-06-20 15:35:59 -04:00
parent 7438a4c15f
commit c243e9cdda
12 changed files with 1499 additions and 27 deletions
+4
View File
@@ -160,6 +160,10 @@ m_random_field/mRF_MakePerfectBit.c:
.text: [0x8050B1AC, 0x8050B1D4]
m_random_field/mRF_GetRandomStepMode.c:
.text: [0x8050B284, 0x8050B2C0]
m_select.c:
.text: [0x80627F88, 0x80629CA8]
.rodata: [0x8064D1B0, 0x8064D1B8]
.data: [0x806D3D08, 0x806D46D0]
first_game.c:
.text: [0x80629CA8, 0x80629D4C]
sys_romcheck.c:
+8
View File
@@ -25,6 +25,14 @@ extern "C"{
#define GFXPRINT_KANA_MODE_KATAKANA 0
#define GFXPRINT_KANA_MODE_HIRAGANA 1
#define GFXPRINT_CLEAR_GRADIENT_CHAR "\x8A"
#define GFXPRINT_ENABLE_GRADIENT_CHAR "\x8B"
#define GFXPRINT_KATAKANA_MODE_CHAR "\x8C"
#define GFXPRINT_HIRAGANA_MODE_CHAR "\x8D"
#define GFXPRINT_UNUSED_CHAR "\x8E"
/* NOTE: this should be a void return type but we're going to use a void* for readibility */
typedef void* (*PrintCallback)(void*, const char*, int);
typedef struct gfxprint_obj {
+14 -3
View File
@@ -150,7 +150,8 @@ typedef struct common_data_s {
/* 0x026110 */ Time_c time;
/* 0x02613C */ Private_c* now_private;
/* 0x026140 */ mHm_hs_c* now_home;
/* 0x026144 */ u8 tmp0[0x2614D - 0x26144];
/* 0x026144 */ u8 map_flag;
/* 0x026145 */ u8 tmp0[0x2614D - 0x26145];
/* 0x02614D */ u8 transFadeDuration;
/* 0x02614E */ u8 transWipeSpeed;
/* 0x02614F */ u8 wipeType; /* maybe unused? */
@@ -175,7 +176,15 @@ typedef struct common_data_s {
/* 0x02852E */ s16 goods_power;
/* 0x028530 */ Door_data_c door_data; /* misc door data */
/* 0x028544 */ Door_data_c structure_exit_door_data; /* door data for when exiting a building */
/* 0x028558 */ u8 tmp1[0x02883E - 0x28558];
/* 0x028558 */ u8 tmp1[0x0285C0 - 0x028558];
/* 0x0285C0 */ s8 player_decoy_flag;
/* 0x0285C1 */ u8 _285C1[0x028838 - 0x0285C1];
/* 0x028838 */ s8 player_bee_swell_flag;
/* 0x028839 */ s8 player_bee_chase_flag;
/* 0x02883A */ u8 goki_shocked_flag;
/* 0x02883B */ u8 time_changed_flag;
/* 0x02883C */ u8 unable_to_wade_flag;
/* 0x02883D */ u8 _02883D;
/* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */
/* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */
/* 0x028840 */ u8 train_control_state; /* current train state */
@@ -209,7 +218,9 @@ typedef struct common_data_s {
/* 0x0288A0 */ u8 pad_connected; /* is gamepad 0 connected? */
/* 0x0288A1 */ u8 _288a1[0x02DB40 - 0x0288A1];
/* 0x02DB40 */ u8 auto_nwrite_set; /* when true, saved nwrite time will be utilized. Seems to be used to keep same date for fishing tourney stuff. */
/* 0x02DB41 */ u8 tmp3[0x2DBB0 - 0x2DB41];
/* 0x02DB42 */ u16 select_last_select_no;
/* 0x02DB44 */ u16 select_last_top_no;
/* 0x02DB46 */ u8 tmp3[0x2DBB0 - 0x2DB46];
/* 0x02DBB0 */ s16 can_look_goki_count;
/* 0x02DBB4 */ f32 rainbow_opacity; /* current opacity of rainbow (0.0f - 1.0f) */
/* 0x02DBB8 */ u32 event_flags[7]; /* TODO: make array size a definition/enum */
+9
View File
@@ -17,6 +17,15 @@ enum weather {
mEnv_WEATHER_NUM
};
enum weather_intensity {
mEnv_WEATHER_INTENSITY_NONE,
mEnv_WEATHER_INTENSITY_LIGHT,
mEnv_WEATHER_INTENSITY_NORMAL,
mEnv_WEATHER_INTENSITY_HEAVY,
mEnv_WEATHER_INTENSITY_NUM,
};
extern int mEnv_NowWeather();
#ifdef __cplusplus
+2
View File
@@ -420,6 +420,8 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define ITM_TOOL_END (ITM_LEAF_FAN + 1)
#define ITM_CLOTH_START 0x2400
#define ITM_CLOTH000 ITM_CLOTH_START
#define ITM_CLOTH001 (ITM_CLOTH_START + 1)
#define ITM_CLOTH_END 0x24FF
#define ITM_DUST0_EMPTY_CAN 0x250E
+2
View File
@@ -191,6 +191,8 @@ extern void mNpc_FirstClearGoodbyMail();
extern void mNpc_ClearIslandNpcRoomData();
extern void mNpc_CopyAnimalPersonalID(AnmPersonalID_c* dst, AnmPersonalID_c* src);
extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalID(AnmPersonalID_c* ids, int num_ids);
extern void mNpc_ClearEventNpc();
extern void mNpc_ClearMaskNpc();
extern void mNpc_PrintRemoveInfo(gfxprint_t* gfxprint);
extern void mNpc_PrintFriendship_fdebug(gfxprint_t* gfxprint);
+37 -2
View File
@@ -36,6 +36,26 @@ enum {
mPr_ITEM_COND_NUM
};
enum {
mPr_SEX_MALE,
mPr_SEX_FEMALE,
mPr_SEX_NUM
};
enum {
mPr_FACE_TYPE0,
mPr_FACE_TYPE1,
mPr_FACE_TYPE2,
mPr_FACE_TYPE3,
mPr_FACE_TYPE4,
mPr_FACE_TYPE5,
mPr_FACE_TYPE6,
mPr_FACE_TYPE7,
mPr_FACE_TYPE_NUM
};
#define mPr_ECARD_NUM 367
#define mPr_ECARD_LETTER_NUM ((mPr_ECARD_NUM + 7) / 8) // 46
@@ -47,8 +67,23 @@ enum {
#define mPr_FOREIGN_MAP_COUNT 8
#define mPr_ORIGINAL_DESIGN_COUNT 8
#define mPr_SUNBURN_MIN_RANK 0
#define mPr_SUNBURN_MAX_RANK 8
enum {
mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK0 = mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK1,
mPr_SUNBURN_RANK2,
mPr_SUNBURN_RANK3,
mPr_SUNBURN_RANK4,
mPr_SUNBURN_RANK5,
mPr_SUNBURN_RANK6,
mPr_SUNBURN_RANK7,
mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK_MAX = mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK_NUM
};
enum {
mPr_DESTINY_NORMAL, /* standard fortune state */
+1
View File
@@ -15,6 +15,7 @@ extern Gfx* gfx_gDPFillRectangleF(Gfx* gfx, u32 ulx, u32 uly, u32 lrx, u32 lry);
extern Gfx* gfx_tex_scroll2(Gfx** gfxpp, u32 x, u32 y, int width, int height);
extern void DisplayList_initialize(GRAPH* graph, u32 clear_r, u32 clear_g, u32 clear_b, GAME* game);
extern void fade_black_draw(Gfx** gfxpp, u32 alpha);
extern void rect_moji(GRAPH* graph);
#ifdef __cplusplus
}
+47 -19
View File
@@ -21,6 +21,8 @@ enum field_draw_type {
there may be a better place for this
*/
#define SCENE_INVALID -1
enum scene_table {
SCENE_TEST1,
SCENE_TEST2,
@@ -31,25 +33,51 @@ enum scene_table {
SCENE_NPC_HOUSE, /* npc house interior */
SCENE_FG, /* outdoors/FG */
SCENE_RANDOM_NPC_TEST,
SCENE_SHOP0 = 0x09, /* nook's cranny */
SCENE_BROKER_SHOP = 0x0C, /* crazy redd's tent */
SCENE_POST_OFFICE = 0x0E, /* post office */
SCENE_START_DEMO = 0x0F, /* after player select */
SCENE_START_DEMO2 = 0x10, /* */
SCENE_BUGGY = 0x12,
SCENE_PLAYERSELECT = 0x13,
SCENE_CONVENI = 0x17, /* nook 'n' go */
SCENE_SUPER = 0x18, /* nookway */
SCENE_DEPART = 0x19, /* nookington's 1st floor */
SCENE_DEPART_2 = 0x1D, /* nookington's 2nd floor */
SCENE_TITLE_DEMO = 0x21, /* title screen demo */
SCENE_PLAYERSELECT_SAVE = 0x22,
SCENE_MUSEUM_ENTRANCE = 0x23,
SCENE_MUSEUM_ROOM = 0x24,
SCENE_NEEDLEWORK = 0x2E, /* able sister's */
SCENE_COTTAGE_MY = 0x2F,
SCENE_COTTAGE_NPC = 0x30,
/* TODO: finish */
SCENE_SHOP0, /* nook's cranny */
SCENE_BG_TEST_NO_RIVER,
SCENE_BG_TEST_RIVER,
SCENE_BROKER_SHOP, /* crazy redd's tent */
SCENE_FIELD_TOOL_INSIDE,
SCENE_POST_OFFICE, /* post office */
SCENE_START_DEMO, /* after player select */
SCENE_START_DEMO2, /* */
SCENE_POLICE_BOX,
SCENE_BUGGY,
SCENE_PLAYERSELECT,
SCENE_MY_ROOM_S,
SCENE_MY_ROOM_M,
SCENE_MY_ROOM_L,
SCENE_CONVENI, /* nook 'n' go */
SCENE_SUPER, /* nookway */
SCENE_DEPART, /* nookington's 1st floor */
SCENE_TEST5,
SCENE_PLAYERSELECT_2,
SCENE_PLAYERSELECT_3,
SCENE_DEPART_2, /* nookington's 2nd floor */
SCENE_EVENT_ANNOUNCEMENT,
SCENE_KAMAKURA,
SCENE_FIELD_TOOL,
SCENE_TITLE_DEMO, /* title screen demo */
SCENE_PLAYERSELECT_SAVE,
SCENE_MUSEUM_ENTRANCE,
SCENE_MUSEUM_ROOM_PAINTING,
SCENE_MUSEUM_ROOM_FOSSIL,
SCENE_MUSEUM_ROOM_INSECT,
SCENE_MUSEUM_ROOM_FISH,
SCENE_MY_ROOM_LL1,
SCENE_MY_ROOM_LL2,
SCENE_MY_ROOM_BASEMENT_S,
SCENE_MY_ROOM_BASEMENT_M,
SCENE_MY_ROOM_BASEMENT_L,
SCENE_MY_ROOM_BASEMENT_LL1,
SCENE_NEEDLEWORK, /* able sister's */
SCENE_COTTAGE_MY,
SCENE_COTTAGE_NPC,
SCENE_START_DEMO3,
SCENE_LIGHTHOUSE,
SCENE_TENT,
SCENE_NUM
};
#ifdef __cplusplus
+33 -3
View File
@@ -4,11 +4,41 @@
#include "types.h"
#include "game.h"
#include "m_view.h"
#include "m_private.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SELECT_COURSE_NUM_VISIBLE 14
typedef void (*GAME_PROC)(GAME*, int);
enum {
SELECT_CHECK_A_BUTTON_RTC,
SELECT_CHECK_A_BUTTON_TIME,
SELECT_CHECK_A_BUTTON_STEP,
SELECT_CHECK_A_BUTTON_WEATHER,
SELECT_CHECK_A_BUTTON_SEX,
SELECT_CHECK_A_BUTTON_FACE_TYPE,
SELECT_CHECK_A_BUTTON_SWELL,
SELECT_CHECK_A_BUTTON_DECOY,
SELECT_CHECK_A_BUTTON_CLOTH,
SELECT_CHECK_A_BUTTON_SUNBURN,
SELECT_CHECK_A_BUTTON_EVENT,
SELECT_CHECK_A_BUTTON_NUM
};
enum {
SELECT_STATUS_MAIN,
SELECT_STATUS_SETUP,
SELECT_STATUS_TIME_SET,
SELECT_STATUS_CLOTH_SEL,
SELECT_STATUS_NUM
};
/* sizeof(struct game_select_s) == 0x0238 */
typedef struct game_select_s {
/* 0x0000 */ GAME game;
@@ -22,12 +52,12 @@ typedef struct game_select_s {
/* 0x0218 */ int top_course; /* course at top of screen it seems */
/* 0x021C */ u32 unk_21C;
/* 0x0220 */ int button_step;
/* 0x0224 */ u8 name[8];
/* 0x0224 */ u8 name[PLAYER_NAME_LEN];
/* 0x0228 */ int unk_228[3];
} GAME_SELECT;
extern void select_init(GAME_SELECT* select);
extern void select_cleanup(GAME_SELECT* select);
extern void select_init(GAME* game);
extern void select_cleanup(GAME* game);
#ifdef __cplusplus
}
+2
View File
@@ -71,6 +71,8 @@ typedef struct time_calendar_term_s {
s16 bgitem_bank;
} mTM_calendar_term_t;
extern void mTM_set_renew_time(lbRTC_ymd_t* renew_time, lbRTC_time_c* rtc_time);
extern const lbRTC_time_c mTM_rtcTime_clear_code;
extern const lbRTC_ymd_t mTM_rtcTime_ymd_clear_code;
extern const lbRTC_time_c mTM_rtcTime_default_code;
+1340
View File
File diff suppressed because it is too large Load Diff