From 7336a45509f65e34484f3c07b591b8cdf5b53d2f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 4 Aug 2020 17:43:50 +1000 Subject: [PATCH] Attempt to decompile func0f19e7a8 --- ld/pd.ld | 3 ++- src/game/training.c | 54 ++++++++++++++++++++++++++++++++++--- src/include/game/training.h | 2 +- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/ld/pd.ld b/ld/pd.ld index 252af9e97..60121673f 100644 --- a/ld/pd.ld +++ b/ld/pd.ld @@ -78,7 +78,8 @@ SECTIONS _checksum7f15c9ac = 0x2c7b42f8; #endif - _addr007e9d20 = 0x007e9d20; + _frdataSegmentRomStart = 0x007e9d20; + _frdataSegmentRomEnd = 0x007eb270; _antipiracyUncloakWriteAddress = 0x7002a324; diff --git a/src/game/training.c b/src/game/training.c index 119f5f40c..feb0ef607 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -46,6 +46,9 @@ #include "lib/lib_4a360.h" #include "types.h" +extern u8 *_frdataSegmentRomStart; +extern u8 *_frdataSegmentRomEnd; + u16 *var80088800 = NULL; u8 g_FrIsValidWeapon = false; u8 var80088808 = 0; @@ -432,12 +435,10 @@ void func0f19d4ec(void) void *frLoadRomData(u32 len) { - extern u32 _addr007e9d20; - g_FrRomData = malloc(ALIGN16(len), 4); if (g_FrRomData) { - return func0000d488(g_FrRomData, &_addr007e9d20, len); + return func0000d488(g_FrRomData, &_frdataSegmentRomStart, len); } return NULL; @@ -1820,6 +1821,53 @@ glabel func0f19e7a8 /* f19e8fc: 00000000 */ nop ); +//void func0f19e7a8(void) +//{ +// // 7bc +// if (var80088808 == false) { +// u32 len = (u32)&_frdataSegmentRomEnd - (u32)&_frdataSegmentRomStart; +// u32 index = 0; +// s32 i; +// s32 count = 1; +// s32 j; +// u32 len2 = (u32)&_frdataSegmentRomEnd - (u32)&_frdataSegmentRomStart; +// +// var80088808 = true; +// +// // 7ec +// frLoadRomData(len2); +// +// if (len > 0x12) { +// for (i = 0x12; i != len2; i++) { +// if (g_FrRomData[i] == 0xfe) { +// count++; +// } +// } +// } +// +// // 83c +// var80088800 = malloc(ALIGN16(count * 2), 4); +// +// // 860 +// if (var80088800) { +// if (len > 0x12) { +// for (j = 0x12; j != len; j++) { +// if (g_FrRomData[j] == 0xfe) { +// var80088800[index++] = j + 1; +// } +// } +// } +// } +// +// // 8cc +// func0f19de24(); +// +// g_FiringRangeData.slot = 0; +// g_FiringRangeData.difficulty = FRDIFFICULTY_BRONZE; +// g_FiringRangeData.donelighting = false; +// } +//} + u32 frInitAmmo(s32 weaponnum) { u32 weaponindex; diff --git a/src/include/game/training.h b/src/include/game/training.h index a8105d47c..9d5f00edf 100644 --- a/src/include/game/training.h +++ b/src/include/game/training.h @@ -42,7 +42,7 @@ void frHideAllTargets(void); void func0f19e44c(void); void frCloseAndLockDoor(void); void frUnlockDoor(void); -u32 func0f19e7a8(void); +void func0f19e7a8(void); u32 frInitAmmo(s32 weapon); void frBeginSession(s32 weapon); char *frGetWeaponDescription(void);