summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPrakxo <87568477+Prakxo@users.noreply.github.com>2024-10-13 17:36:51 +0200
committerGitHub <noreply@github.com>2024-10-13 08:36:51 -0700
commit78d0c294c50f9ade86f9e60cb2bea6479b56357a (patch)
tree0c55c9b75fa942d7c05fcf4d2acd5e0bc62447dd /include
parent60cc4c9e2368f4ae47c24931b6530dabdc5e35dd (diff)
m_bgm OK (#222)
* m_demo OK * camera fix * m_bgm OK
Diffstat (limited to 'include')
-rw-r--r--include/67E840.h188
-rw-r--r--include/6E3240.h3
-rw-r--r--include/m_bgm.h406
-rw-r--r--include/m_common_data.h3
-rw-r--r--include/m_event.h2
-rw-r--r--include/m_field_info.h4
-rw-r--r--include/m_melody.h2
7 files changed, 414 insertions, 194 deletions
diff --git a/include/67E840.h b/include/67E840.h
deleted file mode 100644
index 7c38846..0000000
--- a/include/67E840.h
+++ /dev/null
@@ -1,188 +0,0 @@
-#ifndef C_67E840_H
-#define C_67E840_H
-
-#include "ultra64.h"
-
-struct Game_Play;
-struct Game;
-
-// void func_8005ABA0_jp();
-// void func_8005ABE0_jp();
-// void func_8005ACA8_jp();
-// void func_8005ACC0_jp();
-// void func_8005ACEC_jp();
-// void func_8005AD08_jp();
-// void func_8005AD5C_jp();
-// void func_8005ADA8_jp();
-// void func_8005AE1C_jp();
-// void func_8005AE40_jp();
-// void func_8005AE78_jp();
-// void func_8005AF38_jp();
-// void func_8005AF7C_jp();
-// void func_8005AFD0_jp();
-// void func_8005AFE4_jp();
-// void func_8005AFF8_jp();
-// void func_8005B028_jp();
-// void func_8005B128_jp();
-// void func_8005B204_jp();
-// void func_8005B2F4_jp();
-// void func_8005B338_jp();
-// void func_8005B464_jp();
-// void func_8005B4D4_jp();
-// void func_8005B4E8_jp();
-// void func_8005B4FC_jp();
-// void func_8005B52C_jp();
-// void func_8005B5BC_jp();
-// void func_8005B5FC_jp();
-// void func_8005B610_jp();
-// void func_8005B620_jp();
-// void func_8005B668_jp();
-// void func_8005B6D4_jp();
-// void func_8005B6F8_jp();
-// void func_8005B730_jp();
-// void func_8005B758_jp();
-// void func_8005B810_jp();
-// void func_8005B8D4_jp();
-// void func_8005B90C_jp();
-// void func_8005B92C_jp();
-// void func_8005BA0C_jp();
-// void func_8005BB38_jp();
-// void func_8005BB90_jp();
-// void func_8005BC08_jp();
-// void func_8005BD24_jp();
-// void func_8005BDAC_jp();
-// void func_8005BE34_jp();
-// void func_8005BEBC_jp();
-// void func_8005BF40_jp();
-// void func_8005C07C_jp();
-// void func_8005C1B8_jp();
-// void func_8005C228_jp();
-// void func_8005C298_jp();
-// void func_8005C2E4_jp();
-// void func_8005C3E4_jp();
-// void func_8005C444_jp();
-// void func_8005C4F0_jp();
-// void func_8005C550_jp();
-// void func_8005C6E4_jp();
-// void func_8005C778_jp();
-// void func_8005C7B8_jp();
-// void func_8005C828_jp();
-// void func_8005C83C_jp();
-// void func_8005C888_jp();
-// void func_8005C8D4_jp();
-// void func_8005C918_jp();
-// void func_8005C9BC_jp();
-// void func_8005C9D0_jp();
-// void func_8005C9E4_jp();
-// void func_8005CA14_jp();
-// void func_8005CA44_jp();
-// void func_8005CC0C_jp();
-// void func_8005CC90_jp();
-// void func_8005CD70_jp();
-// void func_8005CE34_jp();
-// void func_8005CEC0_jp();
-// void func_8005CF04_jp();
-// void func_8005CF4C_jp();
-// void func_8005D000_jp();
-// void func_8005D084_jp();
-// void func_8005D13C_jp();
-// void func_8005D19C_jp();
-// void func_8005D1B8_jp();
-// void func_8005D1F4_jp();
-// void func_8005D2A4_jp();
-// void func_8005D338_jp();
-// void func_8005D3C0_jp();
-// void func_8005D4B0_jp();
-// void func_8005D758_jp();
-// void func_8005D7A0_jp();
-// void func_8005D810_jp();
-// void func_8005D84C_jp();
-// void func_8005D8E0_jp();
-// void func_8005D91C_jp();
-// void func_8005D958_jp();
-// void func_8005D9AC_jp();
-// void func_8005DA00_jp();
-// void func_8005DAF0_jp();
-// void func_8005DBA4_jp();
-// void func_8005DC40_jp();
-// void func_8005DC9C_jp();
-// void func_8005DCCC_jp();
-void mBGMPsComp_make_ps_lost_fanfare(s32 arg0, s32 arg1);
-// void func_8005DD5C_jp();
-void mBGMPsComp_make_ps_wipe(s32 arg0);
-// void func_8005DE0C_jp();
-// void func_8005DE60_jp();
-// void func_8005DE88_jp();
-// void func_8005DEE0_jp();
-// void func_8005DF14_jp();
-// void func_8005DF70_jp();
-// void func_8005DFA0_jp();
-// void func_8005DFFC_jp();
-// void func_8005E02C_jp();
-// void func_8005E080_jp();
-// void func_8005E0DC_jp();
-// void func_8005E10C_jp();
-// void func_8005E15C_jp();
-// void func_8005E1B0_jp();
-// void func_8005E1D8_jp();
-// void func_8005E22C_jp();
-// void func_8005E254_jp();
-// void func_8005E2B4_jp();
-// void func_8005E2EC_jp();
-// void func_8005E390_jp();
-// void func_8005E3EC_jp();
-// void func_8005E458_jp();
-// void func_8005E494_jp();
-// void func_8005E4C4_jp();
-// void func_8005E4F8_jp();
-// void func_8005E530_jp();
-// void func_8005E550_jp();
-// void func_8005E58C_jp();
-// void func_8005E5BC_jp();
-// void func_8005E5F8_jp();
-// void func_8005E628_jp();
-// void func_8005E660_jp();
-// void func_8005E69C_jp();
-// void func_8005E6CC_jp();
-// void func_8005E700_jp();
-// void func_8005E738_jp();
-// void func_8005E758_jp();
-// void func_8005E794_jp();
-// void func_8005E7C4_jp();
-// void func_8005E800_jp();
-// void func_8005E83C_jp();
-// void func_8005E8F4_jp();
-// void func_8005E9B4_jp();
-// void func_8005E9C8_jp();
-void mBGMPsComp_volume_talk_start(void);
-void mBGMPsComp_volume_talk_end(void);
-// void func_8005EA14_jp();
-// void func_8005EA24_jp();
-// void func_8005EA38_jp();
-// void func_8005EA4C_jp();
-void mBGMPsComp_scene_mode(s32 arg0);
-// void func_8005EAC8_jp();
-// void func_8005EAE4_jp();
-// void func_8005EAFC_jp();
-// void func_8005EB74_jp();
-// void func_8005EBD8_jp();
-// void func_8005EBE8_jp();
-// void func_8005ECC4_jp();
-// void func_8005ECF8_jp();
-// void func_8005ED24_jp();
-// void func_8005ED44_jp();
-// void func_8005ED78_jp();
-// void func_8005ED98_jp();
-// void func_8005EDC4_jp();
-void mBGMForce_inform_end(void);
-// void func_8005EDEC_jp();
-void mBGMForce_room_nonstop_start(void);
-// void func_8005EE20_jp();
-// void func_8005EEA0_jp();
-void mBGM_main(struct Game* game);
-void mBGM_ct(void);
-void func_8005F020_jp(void);
-void mBGM_cleanup(void);
-// void func_8005F250_jp();
-
-#endif
diff --git a/include/6E3240.h b/include/6E3240.h
index 663ee20..0c52ff4 100644
--- a/include/6E3240.h
+++ b/include/6E3240.h
@@ -2,6 +2,7 @@
#define C_6E3240_H
#include "ultra64.h"
+#include "lb_rtc.h"
struct Game;
struct Game_Play;
@@ -61,7 +62,7 @@ void mSP_ExchangeLineUp_InGame(struct Game* game);
// void func_800C2070_jp();
// void func_800C22F8_jp();
// void func_800C2354_jp();
-// void func_800C2380_jp();
+lbRTC_hour_t mSP_GetShopCloseTime_Bgm(void);
// void func_800C23EC_jp();
// void func_800C2480_jp();
// void func_800C2578_jp();
diff --git a/include/m_bgm.h b/include/m_bgm.h
new file mode 100644
index 0000000..0610d23
--- /dev/null
+++ b/include/m_bgm.h
@@ -0,0 +1,406 @@
+#ifndef C_67E840_H
+#define C_67E840_H
+
+#include "ultra64.h"
+#include "m_lib.h"
+
+struct Game_Play;
+struct Game;
+
+#define BGM_CHECK_BGM_DATA(num) \
+ (num == 40 || num == 73 || num == 68 || num == 74 || num == 76 || num == 75 || num == 49 || num == 50 || \
+ num == 71 || num == 64 || num == 66 || num == 78)
+
+#define BGM_MONTH_TIME_TO_BGM_MONTH_TIME(month) (((month) << 22) & 0x03C00000)
+#define BGM_DAY_TIME_TO_BGM_DAY_TIME(day) (((day) << 17) & 0x3E0000)
+#define BGM_HOUR_TIME_TO_BGM_HOUR_TIME(hour) (((hour) << 12) & 0x1F000)
+#define BGM_MIN_TIME_TO_BGM_MIN_TIME(min) (((min) << 6) & 0xFC0)
+#define BGM_SEC_TIME_TO_BGM_SEC_TIME(sec) (((sec) << 0) & 0x3F)
+
+#define BGM_RTC_TIME_TO_BGM_TIME(month, day, hour, min, sec) \
+ (BGM_MONTH_TIME_TO_BGM_MONTH_TIME(month) | BGM_DAY_TIME_TO_BGM_DAY_TIME(day) | \
+ BGM_HOUR_TIME_TO_BGM_HOUR_TIME(hour) | BGM_MIN_TIME_TO_BGM_MIN_TIME(min) | \
+ BGM_SEC_TIME_TO_BGM_SEC_TIME(sec))
+
+#define BGM_TIME_TO_SHOP_CLOSE_TIME(hour, min, sec) \
+ (BGM_HOUR_TIME_TO_BGM_HOUR_TIME(hour) | BGM_MIN_TIME_TO_BGM_MIN_TIME(min) | \
+ BGM_SEC_TIME_TO_BGM_SEC_TIME(sec))
+
+#define BGM_CLOCK_CHECK_SEC (((1 << 6) - 1) << 0)
+#define BGM_CLOCK_CHECK_MIN (((1 << 6) - 1) << 6)
+#define BGM_CLOCK_CHECK_HOUR (((1 << 5) - 1) << 12)
+#define BGM_CLOCK_CHECK_DAY (((1 << 5) - 1) << 17)
+#define BGM_CLOCK_CHECK_MONTH (((1 << 4) - 1) << 22)
+
+#define BGM_CLOCK_CHECK_ALL (BGM_CLOCK_CHECK_MONTH | BGM_CLOCK_CHECK_DAY | BGM_CLOCK_CHECK_HOUR | BGM_CLOCK_CHECK_MIN | BGM_CLOCK_CHECK_SEC)
+
+#define BGM_PS_MAX 12
+
+typedef struct BgmElement {
+ /* 0x00 */ u8 num;
+ /* 0x01 */ u8 unk1;
+ /* 0x02 */ u16 unk2;
+ /* 0x04 */ u16 stopType0;
+ /* 0x06 */ u16 stopType1;
+} BgmElement; // size = 0x8
+
+typedef struct BgmClock {
+ /* 0x00 */ u32 now;
+ /* 0x04 */ u32 prior;
+} BgmClock; // size = 0x8
+
+typedef struct BgmDemo {
+ /* 0x00 */ BgmElement element;
+ /* 0x08 */ u8 makeFlag;
+ /* 0x09 */ u8 deleteFlag;
+ /* 0x0A */ UNK_TYPE1 unkA[2];
+} BgmDemo; // size = 0xC
+
+typedef struct BgmRoom {
+ /* 0x00 */ BgmElement element;
+ /* 0x08 */ u8 makeFlag;
+ /* 0x09 */ u8 deleteFlag;
+ /* 0x0A */ u8 shopFadeoutFlag;
+ /* 0x0B */ UNK_TYPE1 unkB;
+ /* 0x0C */ u32 shopCloseTime0;
+ /* 0x10 */ u32 shopCloseTime1;
+} BgmRoom; // size 0x14
+
+typedef struct BgmTime BgmTime;
+
+typedef void (*BgmTimeMoveFunc)(BgmTime*, struct Game_Play*);
+
+struct BgmTime {
+ /* 0x4 */ BgmTimeMoveFunc moveFunc;
+ /* 0x5 */ u8 newYearEventFlag;
+ /* 0x6 */ UNK_TYPE1 unk6;
+}; // size = 0x8
+
+typedef struct BgmFieldSudden {
+ /* 0x0 */ u32 flag;
+ /* 0x4 */ u32 priorFlag;
+} BgmFieldSuddenEvent; // size = 0x8
+
+typedef enum BgmBlAttribute {
+ /* 0 */ BGM_BL_ATTRIBUTE_INACTIVE,
+ /* 1 */ BGM_BL_ATTRIBUTE_NEARBY,
+ /* 2 */ BGM_BL_ATTRIBUTE_ACTIVE,
+ /* 3 */ BGM_BL_ATTRIBUTE_MAX
+} BgmBlAttribute;
+
+typedef enum BgmEventArea {
+ /* 0 */ BGM_EVENT_AREA_EVERYWHERE,
+ /* 1 */ BGM_EVENT_AREA_BLOCK,
+ /* 2 */ BGM_EVENT_AREA_MAX,
+} BgmEventArea;
+
+typedef struct BgmFieldScheduleInfo {
+ /* 0x0 */ u32 flag;
+ /* 0x4 */ s32 attribute;
+ /* 0x8 */ s32 priorAttribute;
+} BgmFieldScheduleInfo; // size = 0xC
+
+typedef struct BgmFieldScheduleEvent {
+ /* 0x00 */ BgmFieldScheduleInfo info[21];
+} BgmFieldScheduleEvent; // size = 0xFC
+
+typedef struct BgmNorm {
+ /* 0x00 */ BgmElement element;
+ /* 0x08 */ u8 makeFlag;
+ /* 0x09 */ u8 deleteFlag;
+ /* 0x0A */ UNK_TYPE1 unkA[2];
+} BgmFieldNorm; // size = 0xC
+
+typedef struct BgmPS {
+ /* 0x00 */ BgmElement element;
+ /* 0x04 */ s32 category;
+ /* 0x08 */ s16 counter;
+ /* 0x0A */ u16 cfFlags;
+ /* 0x0C */ u8 priority;
+ /* 0x0D */ UNK_TYPE1 unkD;
+} BgmPS; // size = 0x10
+
+typedef struct BgmPSStop {
+ /* 0x0 */ u8 requestFlag;
+ /* 0x2 */ u16 type;
+ /* 0x4 */ UNK_TYPE1 unk4;
+} BgmPSStop; // size = 0x6
+
+typedef struct BgmPSStart {
+ /* 0x0 */ u8 requestFlag;
+ /* 0x1 */ u8 num;
+ /* 0x2 */ u8 flags;
+ /* 0x3 */ u8 unk;
+} BgmPSStart; // size = 0x4
+
+typedef struct BgmPSVolume {
+ /* 0x00 */ f32 mainVolume;
+ /* 0x04 */ u16 mainVolumeMoveCounter;
+ /* 0x06 */ u8 mainRequestFlag;
+ /* 0x08 */ f32 psVolume;
+ /* 0x0C */ u16 psVolumeMoveCounter;
+ /* 0x0E */ u8 psRequestFlag;
+ /* 0x10 */ f32 fishingInsectVolume;
+ /* 0x14 */ u16 fishingInsectVolumeMoveCounter;
+ /* 0x16 */ u8 fishingInsectRequestFlag;
+ /* 0x18 */ f32 talkVolume;
+ /* 0x1C */ u8 talkRequestFlag;
+ /* 0x20 */ f32 pauseVolume;
+ /* 0x24 */ u16 pauseVolumeMoveCounter;
+ /* 0x26 */ u8 pauseRequestFlag;
+} BgmPSVolume; // size = 0x28
+
+typedef struct BgmPSPause {
+ /* 0x0 */ u8 requestFlag;
+ /* 0x1 */ u8 mode;
+ /* 0x2 */ UNK_TYPE1 unk2[2];
+} BgmPSPause; // size = 0x4
+
+typedef struct BgmPSMd {
+ /* 0x00 */ u8 requestFlag;
+ /* 0x01 */ u8 makeFlag;
+ /* 0x02 */ u8 deleteFlag;
+ /* 0x03 */ u8 moveFlag;
+ /* 0x04 */ xyz_t pos;
+ /* 0x10 */ u16 angle;
+ /* 0x12 */ u16 mdType;
+ /* 0x14 */ u32 ongenNum;
+} BgmPSMd; // size = 0x18
+
+typedef struct BgmPSArm {
+ /* 0x0 */ u8 requestFlag;
+ /* 0x1 */ u8 armState;
+ /* 0x2 */ UNK_TYPE1 unk2[2];
+} BgmPSArm; // size = 0x4
+
+typedef struct BgmPSComp {
+ /* 0x000 */ BgmPS ps[BGM_PS_MAX];
+ /* 0x0F0 */ s32 psNum;
+ /* 0x0F4 */ s32 fishInsectState;
+ /* 0x0F8 */ s32 talkState;
+ /* 0x0FC */ s32 pauseState;
+ /* 0x100 */ BgmPSStop stop;
+ /* 0x106 */ BgmPSStart start;
+ /* 0x10C */ BgmPSVolume volume;
+ /* 0x134 */ BgmPSPause pause;
+ /* 0x138 */ BgmPSMd md;
+ /* 0x150 */ BgmPSArm arm;
+} BgmPSComp; // size = 0x154
+
+typedef struct BgmForce {
+ /* 0x0 */ s32 inform;
+ /* 0x4 */ u8 flag;
+ /* 0x8 */ s32 roomNonstop;
+} BgmForce; // size = 0xC
+
+typedef struct Bgm {
+ /* 0x000 */ BgmClock clock;
+ /* 0x008 */ BgmDemo demo;
+ /* 0x014 */ BgmRoom room;
+ /* 0x028 */ BgmTime time;
+ /* 0x030 */ BgmFieldSuddenEvent fieldSuddenEvent;
+ /* 0x038 */ BgmFieldScheduleEvent fieldScheduleEvent;
+ /* 0x134 */ BgmFieldNorm fieldNorm;
+ /* 0x140 */ BgmPSComp psComp;
+ /* 0x294 */ BgmForce force;
+} Bgm; // size = 0x2A0
+
+typedef struct BgmEventData {
+ /* 0x0 */ s16 eventType;
+ /* 0x2 */ u8 num;
+ /* 0x3 */ u8 eventArea;
+ /* 0x4 */ u32 blockType;
+} BgmEventData; // size = 0x8
+
+int mBGM_check_MD(u8 num);
+int mBGM_check_ignore_talk_volume(u8 num);
+int func_8005ACA8_jp(u8 num);
+void mBGMElem_default_set(BgmElement* element);
+int mBGMClock_after_time_check(BgmClock* clock, u32 checktTime, u32 checkMask);
+int mBGMClock_over_time_check(BgmClock* clock, u32 checktTime, u32 checkMask);
+int mBGMClock_range_time_check(BgmClock* clock, u32 checktTime0, u32 checktTime1, u32 checkMask);
+void mBGMClock_now_set(BgmClock* clock);
+void mBGMClock_move(BgmClock* clock, struct Game_Play* play);
+void mBGMClock_ct(BgmClock* clock);
+void mBGMDemo_make_scene_bgm(BgmDemo* demo);
+void mBGMDemo_delete_scene_bgm(BgmDemo* demo);
+void mBGMDemo_move(BgmDemo* demo, struct Game_Play* play);
+void mBGMDemo_scene_bgm_make_req(void);
+void mBGMDemo_scene_bgm_delete_req(void);
+void mBGMDemo_ct(BgmDemo* demo);
+void mBGMRoom_shop_close_time_set(BgmRoom* room);
+u8 mBGMRoom_make_scene_bgm_shop_get(BgmRoom* room, u16 fieldId);
+void mBGMRoom_make_scene_bgm(BgmRoom* room);
+void mBGMRoom_delete_scene_bgm(BgmRoom* room);
+s32 mBGMRoom_shop_close_check(BgmRoom* room);
+void mBGMRoom_move(BgmRoom* room, struct Game_Play* play);
+void mBGMRoom_scene_bgm_make_req(void);
+void mBGMRoom_scene_bgm_delete_req(void);
+void mBGMRoom_ct(BgmRoom* room);
+void mBGMTime_signal_melody(BgmTime* time);
+int mBGMTime_silent_check(BgmTime* time);
+void mBGMTime_new_year_ev_flag_set(void);
+void mBGMTime_new_year_ev_flag_clr(void);
+void mBGMTime_move_wait(BgmTime* time, struct Game_Play* play);
+void mBGMTime_move_change(BgmTime* time, struct Game_Play* play);
+void mBGMTime_move(BgmTime* time, struct Game_Play* play);
+void mBGMTime_ct(BgmTime* time);
+s32 mBGMFieldSuddenEv_flag_check_arbeit(BgmFieldSuddenEvent* fieldSuddenEvent, struct Game_Play* play);
+void mBGMFieldSuddenEv_flag_set(BgmFieldSuddenEvent* fieldSudden, struct Game_Play* play);
+void mBGMFieldSuddenEv_ps_compose(BgmFieldSuddenEvent* fieldSudden, struct Game_Play* play);
+void mBGMFieldSuddenEv_move(BgmFieldSuddenEvent* fieldSudden, struct Game_Play* play);
+void mBGMFieldSuddenEv_ct(BgmFieldSuddenEvent* fieldSudden);
+s32 mBGMFieldSchedEv_bl_attr_get(s32 blockX, s32 blockZ, s32 eventArea, u32 blockType);
+s32 mBGMFieldSchedEv_bl_attr_evdata_get(BgmEventData* data, struct Game_Play* play);
+void mBGMFieldSchedEv_Info_old_copy(BgmFieldScheduleInfo* info);
+void mBGMFieldSchedEv_Info_ev_now_set_standard(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_Silence_0(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_1(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_2(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_3(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_4(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_5(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_CountDown_6(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_NewYear01(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_ev_now_set_NewYear02(BgmFieldScheduleInfo* info, BgmEventData* data, struct Game_Play* play,
+ s32 eventStartFlag);
+void mBGMFieldSchedEv_Info_attr_now_set(BgmFieldScheduleInfo* info, struct Game_Play* play, BgmEventData* data);
+void mBGMFieldSchedEv_info_set(BgmFieldScheduleEvent* schedule, struct Game_Play* play);
+void mBGMFieldSchedEv_Info_ps_delete(BgmFieldScheduleInfo* info, BgmEventData* data, s32 flag);
+void mBGMFieldSchedEv_Info_ps_make(BgmFieldScheduleInfo* info, BgmEventData* data, s32 priority);
+void mBGMFieldSchedEv_Info_ps_volume_change(BgmFieldScheduleInfo* info, BgmEventData* data);
+void mBGMFieldSchedEv_ps_compose(BgmFieldScheduleEvent* schedule, struct Game_Play* play);
+void mBGMFieldSchedEv_sp_flag(BgmFieldScheduleEvent* schedule);
+void mBGMFieldSchedEv_move(BgmFieldScheduleEvent* schedule, struct Game_Play* play);
+void mBGMFieldSchedEv_ct(BgmFieldScheduleEvent* schedule);
+u8 mBGMFieldNorm_bgm_num_get(s32 hour);
+void mBGMFieldNorm_elem_set(BgmFieldNorm* norm);
+void mBGMFieldNorm_make_bgm(BgmFieldNorm* norm, struct Game_Play* play);
+void mBGMFieldNorm_delete_bgm(BgmFieldNorm* norm);
+void mBGMFieldNorm_move(BgmFieldNorm* norm, struct Game_Play* play);
+void mBGMFieldNorm_make_req(void);
+void mBGMFieldNorm_delete_req(void);
+void mBGMFieldNorm_ct(BgmFieldNorm* norm);
+void mBGMPs_counter_dec(BgmPS* ps);
+void mBGMPsComp_ps_remove(BgmPSComp* psComp, s32 removePos);
+s32 mBGMPsComp_search_insert_pos_kategorie(BgmPSComp* psComp, s32 category, u8 priority);
+s32 mBGMPsComp_search_pos_kategorie_bgm_num(BgmPSComp* psComp, s32 category, u8 num, s32 counterFlag, s32 delPass);
+void mBGMPsComp_shift_behind(BgmPSComp* psComp, s32 shiftIdx);
+void mBGMPsComp_all_ps_bitclr(BgmPSComp* psComp, u8 bits);
+s32 mBGMPsComp_execute_ps_pos_get(BgmPSComp* psComp);
+BgmPS* mBGMPsComp_high_ps_not_delete(BgmPSComp* psComp, s32 maxPos);
+void mBGMPsComp_main_req_stop(BgmPSComp* psComp);
+void mBGMPsComp_main_remove(BgmPSComp* psComp);
+void mBGMPsComp_main_req_start(BgmPSComp* psComp);
+void mBGMPsComp_main_req_pause(BgmPSComp* psComp);
+void mBGMPsComp_main_req_md(BgmPSComp* psComp);
+void mBGMPsComp_main_md_move(BgmPSComp* psComp);
+void mBGMPsComp_main_req_volume_ps(BgmPSComp* psComp);
+void func_8005D2A4_jp(BgmPSComp* psComp);
+void mBGMPsComp_main_req_volume_talk(BgmPSComp* psComp);
+void mBGMPsComp_main_req_volume_pause(BgmPSComp* psComp);
+void mBGMPsComp_main_req_volume(BgmPSComp* psComp);
+void mBGMPsComp_MDPlayerPos_main_inform_sound(BgmPSMd* md);
+void mBGMPsComp_Arm_main_inform_sound(BgmPSArm* arm);
+void mBGMPsComp_Stop_main_inform_sound(BgmPSStop* stop);
+void mBGMPsComp_Start_main_inform_sound(BgmPSStart* start);
+void mBGMPsComp_Volume_main_inform_sound(BgmPSVolume* volume);
+void mBGMPsComp_Pause_main_inform_sound(BgmPSPause* pause);
+void mBGMPsComp_main_inform_sound(BgmPSComp* psComp);
+void mBGMPsComp_main_counter_dec(BgmPSComp* psComp);
+void mBGMPsComp_main_fo_check(BgmPSComp* psComp);
+void mBGMPsComp_main_lost(BgmPSComp* psComp);
+s32 mBGMPsComp_make_ps(BgmPSComp* psComp, BgmElement* element, s32 category, s16 counter, u16 cfFlags, u8 priority);
+void _mBGMPsComp_make_ps_fanfare(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_fanfare(u8 num, u16 stopType);
+void _mBGMPsComp_make_ps_lost_fanfare(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_lost_fanfare(u8 num, u16 stopType);
+void _mBGMPsComp_make_ps_wipe(u16 stopType);
+void mBGMPsComp_make_ps_wipe(u16 stopType);
+void _mBGMPsComp_make_ps_quiet(u16 stopType);
+void mBGMPsComp_make_ps_quiet(u16 stopType);
+void _mBGMPsComp_make_ps_co_quiet(u16 stopType, s16 counter);
+void mBGMPsComp_make_ps_co_quiet(u16 stopType, s16 counter);
+void _mBGMPsComp_make_ps_demo(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_demo(u8 num, u16 stopType);
+void _mBGMPsComp_make_ps_happening(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_happening(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_quietRoom(u16 stopType);
+void _mBGMPsComp_make_ps_room(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_room(u8 num, u16 stopType);
+void mBGMPsComp_make_ps_time(void);
+void _mBGMPsComp_make_ps_quietField(u16 stopType);
+void mBGMPsComp_make_ps_quietField(u16 stopType);
+void _mBGMPsComp_make_ps_fc_quietField(u16 stopType);
+void mBGMPsComp_make_ps_fc_quietField(u16 stopType);
+void _mBGMPsComp_make_ps_fieldSuddenEv(u8 num, u16 stopType, u8 priority);
+void mBGMPsComp_make_ps_fieldSuddenEv(u8 num, u16 stopType, u8 priority);
+void mBGMPsComp_make_ps_fieldSchedEv(u8 num, s32 updateVolumeMoveCounter, s32 updateVolumeFlag, s32 cfFlag,
+ u16 stopType, u8 priority);
+void mBGMPsComp_make_ps_fieldNorm(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps(BgmPSComp* psComp, s32 category, u8 num, u16 stopType, s32 counterFlag);
+void _mBGMPsComp_delete_ps_fanfare(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_fanfare(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_wipe(void);
+void _mBGMPsComp_delete_ps_quiet(void);
+void mBGMPsComp_delete_ps_quiet(void);
+void _mBGMPsComp_delete_ps_demo(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_demo(u8 num, u16 stopType);
+void _mBGMPsComp_delete_ps_happening(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_happening(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_quietRoom(void);
+void _mBGMPsComp_delete_ps_room(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_room(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_time(void);
+void _mBGMPsComp_delete_ps_quietField(void);
+void mBGMPsComp_delete_ps_quietField(void);
+void _mBGMPsComp_delete_ps_fieldSuddenEv(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_fieldSuddenEv(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_fieldSchedEv(u8 num, u16 stopType);
+void mBGMPsComp_delete_ps_fieldNorm(u8 num, u16 stopType);
+void mBGMPsComp_volume_change_fieldSchedEv(u8 num, s32 updateVolumeCounter, s32 updateVolumeLevel);
+void mBGMPsComp_search_cf_set_field(u8 num, s32 category);
+void func_8005E9B4_jp(void);
+void func_8005E9C8_jp(void);
+void mBGMPsComp_volume_talk_start(void);
+void mBGMPsComp_volume_talk_end(void);
+void mBGMPsComp_pause(s32 state);
+void mBGMPsComp_MDPlayerPos_make(void);
+void mBGMPsComp_MDPlayerPos_delete(void);
+void mBGMPsComp_MDPlayerPos_param_set(xyz_t* pos, u16 angle, u16 mdType, u32 ongenNum);
+void mBGMPsComp_scene_mode(u8 mode);
+void mBGMPsComp_arm_make(s32 state);
+void mBGMPsComp_arm_delete(void);
+s32 mBGMPsComp_execute_bgm_num_get(void);
+void mBGMPsComp_ct(BgmPSComp* psComp);
+s32 mBGMForce_wipe_ps_make_permit(BgmForce* force);
+void mBGMForce_move_inform(BgmForce* force);
+void mBGMForce_move_room_nonstop(BgmForce* force);
+void mBGMForce_move(BgmForce* force);
+void mBGMForce_ct(BgmForce* force);
+void mBGMForce_inform_cleanup(BgmForce* force);
+void mBGMForce_room_nonstop_cleanup(BgmForce* force);
+void mBGMForce_cleanup(BgmForce* force);
+void mBGMForce_inform_start(void);
+void mBGMForce_inform_end(void);
+void _mBGMForce_room_nonstop_start(void);
+void mBGMForce_room_nonstop_start(void);
+void mBGM_main_control(Bgm* bgm);
+void mBGM_weather_set(void);
+void mBGM_main(struct Game* game);
+void mBGM_ct(void);
+void mBGM_init(void);
+void mBGM_cleanup(void);
+void mBGM_reset(void);
+
+
+#endif
diff --git a/include/m_common_data.h b/include/m_common_data.h
index 3201dc2..0c399d4 100644
--- a/include/m_common_data.h
+++ b/include/m_common_data.h
@@ -180,7 +180,8 @@ typedef struct CommonData {
/* 0x10A3B */ UNK_TYPE1 unk_10A3B[0x1];
/* 0x10A3C */ UNK_TYPE1 unk_10A3C[0x2C];
/* 0x10A68 */ u8 unk_10A68;
- /* 0x10A69 */ UNK_TYPE1 unk_10A69[0x3];
+ /* 0x10A69 */ UNK_TYPE1 unk_10A69[0x2];
+ /* 0x10A6B */ u8 unk10A6B;
/* 0x10A6C */ xyz_t unk_10A6C;
/* 0x10A78 */ u8 unk_10A78;
/* 0x10A79 */ UNK_TYPE1 unk_10A79[0x7];
diff --git a/include/m_event.h b/include/m_event.h
index e8d3aad..8a6a973 100644
--- a/include/m_event.h
+++ b/include/m_event.h
@@ -110,7 +110,7 @@ s32 mEv_set_status(s32,s32);
void mEv_clear_status(s32, s16);
// void func_8007FEBC_jp();
s32 mEv_check_status(s32, s16);
-// void func_8007FF8C_jp();
+s32 mEv_check_status_edge(s32);
// void func_8007FFC4_jp();
// void func_80080000_jp();
// void func_80080040_jp();
diff --git a/include/m_field_info.h b/include/m_field_info.h
index 09e9801..744dbae 100644
--- a/include/m_field_info.h
+++ b/include/m_field_info.h
@@ -48,7 +48,7 @@ typedef enum FieldRoom {
(fieldId) == FI_FIELD_PLAYER2_ROOM || (fieldId) == FI_FIELD_PLAYER3_ROOM)
void mFI_ClearFieldData(void);
-// void func_80087C40_jp();
+s32 mFI_CheckFieldData(void);
struct FieldMakeBlockInfo* mFI_GetBlockTopP(void);
u16 mFI_GetFieldId(void);
// void func_80087C9C_jp();
@@ -175,7 +175,7 @@ s32 func_8008BE00_jp(struct FieldMakeMoveActor*, s32);
void mFI_SetPlayerWade(struct Game*);
s32 mFI_CheckPlayerWade(s32);
s32 mFI_GetPlayerWade(void);
-// void func_8008C130_jp();
+s32 mFI_GetNextBlockNum(s32*, s32*);
u16* mFI_GetDepositP(s32,s32);
// void func_8008C344_jp();
// void func_8008C390_jp();
diff --git a/include/m_melody.h b/include/m_melody.h
index dfb0e5b..f512b21 100644
--- a/include/m_melody.h
+++ b/include/m_melody.h
@@ -6,7 +6,7 @@
void mMld_SetDefaultMelody(void);
void mMld_TransformMelodyData_u64_2_u8(u8* dst, u64 src);
// void func_8009D03C_jp();
-// void func_8009D0CC_jp();
+void mMld_GetMelody(u8*);
// void func_8009D100_jp();
// void func_8009D128_jp();
// void func_8009D160_jp();