diff --git a/src/game/data/data_01a3a0.c b/src/game/data/data_01a3a0.c index bb32da16d..337787cac 100644 --- a/src/game/data/data_01a3a0.c +++ b/src/game/data/data_01a3a0.c @@ -955,18 +955,12 @@ u32 var80075bf0 = 0x00000000; u32 var80075bf4 = 0x00000000; u32 var80075bf8 = 0x00000000; u32 var80075bfc = 0x00000000; -u32 var80075c00 = 0x002b0000; -u32 var80075c04 = 0x41180000; -u32 var80075c08 = 0x41d80000; -u32 var80075c0c = 0x00000000; -u32 var80075c10 = 0x00000000; -u32 var80075c14 = 0x3fc00000; -u32 var80075c18 = 0x00290000; -u32 var80075c1c = 0x40f00000; -u32 var80075c20 = 0x41880000; -u32 var80075c24 = 0x00000000; -u32 var80075c28 = 0x3fc00000; -u32 var80075c2c = 0x42c80000; + +struct var80075c00 var80075c00[] = { + { 43, 9.5, 27, 0, 0, 1.5 }, + { 41, 7.5, 17, 0, 1.5, 100 }, +}; + u32 var80075c30 = 0x00000000; u32 var80075c34 = 0x00000000; u32 var80075c38 = 0x00000000; diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index 2740ad537..0d23790a4 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -3,6 +3,7 @@ #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_0160b0.h" +#include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/game_0b3350.h" #include "game/game_0d4690.h" diff --git a/src/game/game_10c9c0.c b/src/game/game_10c9c0.c index 70ddefc34..5517123cd 100644 --- a/src/game/game_10c9c0.c +++ b/src/game/game_10c9c0.c @@ -3,6 +3,7 @@ #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_0160b0.h" +#include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/game_0f09f0.h" #include "game/game_10c9c0.h" @@ -10,6 +11,7 @@ #include "game/game_19aa80.h" #include "gvars/gvars.h" #include "types.h" + s32 menuhandler4MbDropOut(u32 operation, struct menu_item *item, s32 *value) { if (operation == MENUOP_SET) { @@ -139,4 +141,4 @@ bool menudialog4MbMainMenu(u32 operation, struct menu_dialog *dialog, struct men } return false; -} \ No newline at end of file +} diff --git a/src/game/game_113220.c b/src/game/game_113220.c index 7443f16a7..a1ce76f62 100644 --- a/src/game/game_113220.c +++ b/src/game/game_113220.c @@ -3,6 +3,7 @@ #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_0160b0.h" +#include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/game_096b20.h" #include "game/game_0c79f0.h" @@ -723,69 +724,24 @@ void func0f11412c(f32 speed) func0001deb0(&g_Vars.currentplayer->animdata, speed * 0.5f, 0); } -GLOBAL_ASM( -glabel func0f11416c -.late_rodata -glabel var7f1b3a78 -.word 0x3c4cccce -glabel var7f1b3a7c -.word 0x3b888889 -.text -/* f11416c: 3c02800a */ lui $v0,0x800a -/* f114170: 8c42a244 */ lw $v0,-0x5dbc($v0) -/* f114174: 27bdffe0 */ addiu $sp,$sp,-32 -/* f114178: afbf0014 */ sw $ra,0x14($sp) -/* f11417c: 8c4e03ac */ lw $t6,0x3ac($v0) -/* f114180: 3c017f1b */ lui $at,%hi(var7f1b3a78) -/* f114184: 05c20027 */ bltzl $t6,.L0f114224 -/* f114188: 44800000 */ mtc1 $zero,$f0 -/* f11418c: c4440198 */ lwc1 $f4,0x198($v0) -/* f114190: c4263a78 */ lwc1 $f6,%lo(var7f1b3a78)($at) -/* f114194: 3c017f1b */ lui $at,%hi(var7f1b3a7c) -/* f114198: c42a3a7c */ lwc1 $f10,%lo(var7f1b3a7c)($at) -/* f11419c: 46062202 */ mul.s $f8,$f4,$f6 -/* f1141a0: 2444045c */ addiu $a0,$v0,0x45c -/* f1141a4: 460a4080 */ add.s $f2,$f8,$f10 -/* f1141a8: 0c0074a2 */ jal func0001d288 -/* f1141ac: e7a2001c */ swc1 $f2,0x1c($sp) -/* f1141b0: 44808000 */ mtc1 $zero,$f16 -/* f1141b4: c7a2001c */ lwc1 $f2,0x1c($sp) -/* f1141b8: 3c0f800a */ lui $t7,0x800a -/* f1141bc: 4600803c */ c.lt.s $f16,$f0 -/* f1141c0: 00000000 */ sll $zero,$zero,0x0 -/* f1141c4: 45000014 */ bc1f .L0f114218 -/* f1141c8: 00000000 */ sll $zero,$zero,0x0 -/* f1141cc: 8defa244 */ lw $t7,-0x5dbc($t7) -/* f1141d0: 3c088007 */ lui $t0,%hi(var80075c00) -/* f1141d4: 25085c00 */ addiu $t0,$t0,%lo(var80075c00) -/* f1141d8: 8df803ac */ lw $t8,0x3ac($t7) -/* f1141dc: 0018c880 */ sll $t9,$t8,0x2 -/* f1141e0: 0338c823 */ subu $t9,$t9,$t8 -/* f1141e4: 0019c8c0 */ sll $t9,$t9,0x3 -/* f1141e8: 03281021 */ addu $v0,$t9,$t0 -/* f1141ec: c4520008 */ lwc1 $f18,0x8($v0) -/* f1141f0: c4440004 */ lwc1 $f4,0x4($v0) -/* f1141f4: 46049181 */ sub.s $f6,$f18,$f4 -/* f1141f8: 46060303 */ div.s $f12,$f0,$f6 -/* f1141fc: 4602603c */ c.lt.s $f12,$f2 -/* f114200: 00000000 */ sll $zero,$zero,0x0 -/* f114204: 45000002 */ bc1f .L0f114210 -/* f114208: 00000000 */ sll $zero,$zero,0x0 -/* f11420c: 46001306 */ mov.s $f12,$f2 -.L0f114210: -/* f114210: 10000005 */ beqz $zero,.L0f114228 -/* f114214: 46006006 */ mov.s $f0,$f12 -.L0f114218: -/* f114218: 10000003 */ beqz $zero,.L0f114228 -/* f11421c: 46001006 */ mov.s $f0,$f2 -/* f114220: 44800000 */ mtc1 $zero,$f0 -.L0f114224: -/* f114224: 00000000 */ sll $zero,$zero,0x0 -.L0f114228: -/* f114228: 8fbf0014 */ lw $ra,0x14($sp) -/* f11422c: 27bd0020 */ addiu $sp,$sp,0x20 -/* f114230: 03e00008 */ jr $ra -/* f114234: 00000000 */ sll $zero,$zero,0x0 -/* f114238: 00000000 */ sll $zero,$zero,0x0 -/* f11423c: 00000000 */ sll $zero,$zero,0x0 -); +f32 func0f11416c(void) +{ + if (g_Vars.currentplayer->unk03ac >= 0) { + f32 a = g_Vars.currentplayer->unk0198 * 0.012500001f + 0.004166667f; + f32 b = func0001d288(&g_Vars.currentplayer->animdata); + + if (b > 0) { + f32 c = b / (var80075c00[g_Vars.currentplayer->unk03ac].unk08 - var80075c00[g_Vars.currentplayer->unk03ac].unk04); + + if (c < a) { + c = a; + } + + return c; + } + + return a; + } + + return 0; +} diff --git a/src/game/game_179060.c b/src/game/game_179060.c index 69f1182ea..282bfc748 100644 --- a/src/game/game_179060.c +++ b/src/game/game_179060.c @@ -4,6 +4,7 @@ #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_0160b0.h" +#include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/game_000920.h" #include "game/game_005fd0.h" @@ -13985,4 +13986,4 @@ glabel func0f1876e4 /* f187764: 00000000 */ sll $zero,$zero,0x0 /* f187768: 00000000 */ sll $zero,$zero,0x0 /* f18776c: 00000000 */ sll $zero,$zero,0x0 -); \ No newline at end of file +); diff --git a/src/include/game/data/data_0160b0.h b/src/include/game/data/data_0160b0.h index ef44ae15f..c4b612970 100644 --- a/src/include/game/data/data_0160b0.h +++ b/src/include/game/data/data_0160b0.h @@ -217,72 +217,5 @@ extern struct menu_dialog g_MainMenu4MbMenuDialog; extern struct cheat g_Cheats[NUM_CHEATS]; extern struct menu_item g_CheatsBuddiesMenuItems[]; extern struct menu_dialog g_CheatsBuddiesMenuDialog; -extern u16 iomessages[]; -extern struct menu_dialog menudialog_1a410; -extern u16 savelocations2[]; -extern u16 iomessages2[]; -extern u16 filetypenames[]; -extern struct menu_dialog menudialog_filesaved; -extern struct menu_dialog menudialog_saveerror; -extern struct menu_dialog menudialog_savelost; -extern struct menu_dialog g_SaveElsewhereMenuDialog; -extern struct menu_dialog menudialog_1a654; -extern u32 var8007464c; -extern struct menu_dialog menudialog_changefilename; -extern struct menu_dialog menudialog_duplicatefilename; -extern u16 savelocations3[]; -extern struct menu_dialog menudialog_selectlocation; -extern struct menu_dialog menudialog_confirmdelete; -extern struct menu_dialog menudialog_1a984; -extern struct menu_dialog menudialog_deletefile; -extern struct menu_dialog menudialog_copyfile; -extern u32 var80074a4c; -extern struct menu_dialog menudialog_deletegamenote; -extern struct menu_dialog menudialog_gamenotes; -extern struct menu_dialog menudialog_controllerpakmenu; -extern struct menu_dialog menudialog_enteragentname; -extern struct menu_dialog menudialog_fileselect; -extern struct menu_dialog menudialog_fileselect2; -extern struct menu_dialog menudialog_mpquickgo2; -extern struct menu_dialog menudialog_1b1bc; -extern struct menu_dialog g_4MbMainMenu; -extern struct menu_dialog menudialog_mpdropout; -extern struct menu_dialog g_MpEditSimulant4MbMenuDialog; -extern struct menu_dialog g_4MbAdvancedSetupMenuDialog; -extern struct menu_dialog menudialog_1b5c0; -extern struct menu_dialog menudialog_promptnextmission; -extern struct menu_dialog menudialog_1b7a4; -extern u32 var80075968; -extern struct menu_dialog menudialog_1bb44; -extern struct menu_dialog menudialog_1bb5c; -extern struct menu_dialog menudialog_1bb74; -extern struct menu_dialog menudialog_1bb8c; -extern struct menu_dialog menudialog_1bba4; -extern struct menu_dialog menudialog_1bbbc; -extern struct savelocation *g_SaveLocations[]; -extern u32 var80075bd0; -extern u32 var80075be0; -extern u32 var80075c00; -extern u32 var80075c30; -extern u32 var80075c3c; -extern u32 var80075c48; -extern u32 var80075c54; -extern u32 var80075c94; -extern u32 var80075ca0; -extern char var80075cb4[]; -extern char var80075cc0[]; -extern u32 var80075ce0; -extern u32 var80075ce4; -extern u32 var80075ce8; -extern u32 var80075cec; -extern u32 var80075cf0; -extern u32 var80075cf4; -extern u32 var80075cf8; -extern u32 var80075d08; -extern u32 var80075d10; -extern u32 var80075d18; -extern u32 var80075d2c; -extern u32 var80075d40; -extern u32 var80075d54; #endif diff --git a/src/include/game/data/data_01a3a0.h b/src/include/game/data/data_01a3a0.h index 13c14f0da..2cca3cfe2 100644 --- a/src/include/game/data/data_01a3a0.h +++ b/src/include/game/data/data_01a3a0.h @@ -47,7 +47,7 @@ extern struct menu_dialog menudialog_1bbbc; extern struct savelocation *g_SaveLocations[]; extern u32 var80075bd0; extern u32 var80075be0; -extern u32 var80075c00; +extern struct var80075c00 var80075c00[]; extern u32 var80075c30; extern u32 var80075c3c; extern u32 var80075c48; diff --git a/src/include/game/game_113220.h b/src/include/game/game_113220.h index 1310c0300..d3a2bfd4a 100644 --- a/src/include/game/game_113220.h +++ b/src/include/game/game_113220.h @@ -12,6 +12,6 @@ u32 func0f1138a4(void); u32 func0f113f10(void); u32 func0f1140bc(void); void func0f11412c(f32 speed); -u32 func0f11416c(void); +f32 func0f11416c(void); #endif diff --git a/src/include/types.h b/src/include/types.h index c8c605542..6a6630569 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -1120,7 +1120,7 @@ struct player { /*0x018c*/ f32 unk018c; /*0x0190*/ f32 unk0190; /*0x0194*/ f32 unk0194; - /*0x0198*/ u32 unk0198; + /*0x0198*/ f32 unk0198; /*0x019c*/ u32 unk019c; /*0x01a0*/ u32 unk01a0; /*0x01a4*/ u32 unk01a4; @@ -1247,7 +1247,7 @@ struct player { /*0x03a0*/ bool resetheadpos; /*0x03a4*/ bool resetheadrot; /*0x03a8*/ u32 unk03a8; - /*0x03ac*/ u32 unk03ac; + /*0x03ac*/ s32 unk03ac; /*0x03b0*/ f32 headamp; /*0x03b4*/ u32 unk03b4; /*0x03b8*/ u32 unk03b8; @@ -5174,4 +5174,13 @@ struct somedruggedracething { u32 unk10; }; +struct var80075c00 { + u16 unk00; + f32 unk04; + f32 unk08; + f32 unk0c; + f32 unk10; + f32 unk14; +}; + #endif