diff --git a/src/game/training.c b/src/game/training.c index 215f87866..26f824b38 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -46,7 +46,7 @@ #include "lib/lib_4a360.h" #include "types.h" -u32 var80088800 = 0; +u16 *var80088800 = NULL; u8 var80088804 = 0; u8 var80088808 = 0; u8 var8008880c = 0; @@ -495,15 +495,15 @@ void func0f19d4ec(void) { s32 i; - var80088800 = 0; + var80088800 = NULL; var80088808 = 0; var80088804 = 0; g_FrRomData = NULL; g_FiringRangeData.unk466 = 0; - g_FiringRangeData.unk467 = 0; - g_FiringRangeData.unk468 = 0; - g_FiringRangeData.unk46c = 0; + g_FiringRangeData.scriptoffset = 0; + g_FiringRangeData.scriptenabled = false; + g_FiringRangeData.scriptsleep = 0; g_FiringRangeData.unk464 = 0; g_FiringRangeData.unk000 = 0; @@ -735,9 +735,9 @@ glabel func0f19d5f4 // g_FiringRangeData.numhitstype2 = 0; // g_FiringRangeData.numhitstype1 = 0; // g_FiringRangeData.unk466 = 0; -// g_FiringRangeData.unk467 = 0; -// g_FiringRangeData.unk468 = 0; -// g_FiringRangeData.unk46c = 0; +// g_FiringRangeData.scriptoffset = 0; +// g_FiringRangeData.scriptenabled = false; +// g_FiringRangeData.scriptsleep = 0; // g_FiringRangeData.unk474 = 0; // g_FiringRangeData.unk465_04 = false; //} @@ -1339,6 +1339,46 @@ glabel func0f19df58 /* f19e08c: 00000000 */ nop ); +//void func0f19df58(void) +//{ +// if (!g_FiringRangeData.scriptenabled || g_Vars.lvupdate240 == 0) { +// return; +// } +// +// if (g_FiringRangeData.scriptsleep == 0) { +// s32 offset = g_FiringRangeData.unk466 + 0x71; +// u8 *cmd = g_FrRomData + var80088800[offset] + g_FiringRangeData.scriptoffset; +// +// switch (cmd[0]) { +// case FRCMD_13: +// case FRCMD_FB: +// case FRCMD_FC: +// case FRCMD_FD: +// g_FiringRangeData.scriptenabled = false; +// break; +// case FRCMD_HUDMSG: +// hudmsgCreateViaPreset(frGetInstructionalText(cmd[1]), HUDMSGTYPE_TRAINING); +// g_FiringRangeData.scriptoffset += 2; +// break; +// case FRCMD_WAITSECONDS: +// g_FiringRangeData.scriptsleep = cmd[1] * 60; +// g_FiringRangeData.scriptoffset += 2; +// break; +// case FRCMD_WAITUNTILSHOOT: +// if (g_FiringRangeData.numshots) { +// g_FiringRangeData.scriptoffset++; +// } +// break; +// } +// } else { +// g_FiringRangeData.scriptsleep -= g_Vars.lvupdate240_60; +// +// if (g_FiringRangeData.scriptsleep <= 0) { +// g_FiringRangeData.scriptsleep = 0; +// } +// } +//} + GLOBAL_ASM( glabel func0f19e090 .late_rodata diff --git a/src/include/constants.h b/src/include/constants.h index c53b58986..0620e046d 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -581,6 +581,14 @@ #define FLOORTYPE_DIRT 7 #define FLOORTYPE_SNOW 8 +#define FRCMD_HUDMSG 0x10 +#define FRCMD_WAITUNTILSHOOT 0x11 +#define FRCMD_WAITSECONDS 0x12 +#define FRCMD_13 0x13 +#define FRCMD_FB 0xfb +#define FRCMD_FC 0xfc +#define FRCMD_FD 0xfd + #define FRDIFFBIT_BRONZE 1 #define FRDIFFBIT_SILVER 2 #define FRDIFFBIT_GOLD 4 @@ -709,6 +717,7 @@ #define HUDMSGTYPE_3 3 #define HUDMSGTYPE_4 4 #define HUDMSGTYPE_SUBTITLE 6 +#define HUDMSGTYPE_TRAINING 10 // chr->ivebeenhit values #define IBH_LFOOT 1 diff --git a/src/include/game/training.h b/src/include/game/training.h index f5e416dee..2afdf5fdc 100644 --- a/src/include/game/training.h +++ b/src/include/game/training.h @@ -36,7 +36,7 @@ u32 func0f19d90c(void); void func0f19de24(void); bool func0f19def4(s32 index); char *frGetInstructionalText(u32 index); -u32 func0f19df58(void); +void func0f19df58(void); u32 func0f19e090(void); void frHideAllTargets(void); void func0f19e44c(void); diff --git a/src/include/types.h b/src/include/types.h index dbe4b89db..f32961df8 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5347,9 +5347,9 @@ struct frdata { /*0x465*/ u8 unk465_05 : 1; /*0x465*/ u8 unk465_06 : 2; /*0x466*/ u8 unk466; - /*0x467*/ u8 unk467; - /*0x468*/ u8 unk468; - /*0x46c*/ u32 unk46c; + /*0x467*/ u8 scriptoffset; + /*0x468*/ u8 scriptenabled; + /*0x46c*/ s32 scriptsleep; /*0x470*/ u8 unk470; /*0x471*/ u8 feedbackzone; /*0x472*/ s8 feedbackttl;