From 870c39ad7772ec2d28686c7a883236be00179dc1 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Wed, 9 Aug 2023 14:53:55 -0600 Subject: [PATCH] Matched code_80091440.c and named gDemoMode variable (#358) * matched code_80091440.c * Named gDemoMode * Remove asm for matching func * Matched and namings for random_u16_credits func in code_80280650.c --- asm/non_matchings/camera/func_8001EE98.s | 16 +- .../code_80005FD0/func_80008424.s | 4 +- .../code_80005FD0/func_800088D8.s | 4 +- .../code_80005FD0/func_8000F124.s | 4 +- .../code_80005FD0/func_8000F628.s | 4 +- .../code_80005FD0/func_80014DE4.s | 4 +- .../code_8006E9C0/func_8006F824.s | 45 ----- .../code_8006E9C0/func_8006F8CC.s | 4 +- .../code_80091440/func_800914E0.s | 169 ------------------ .../code_80091750/func_80094C60.s | 4 +- .../code_80091750/func_8009CE64.s | 4 +- .../code_80280650/func_8028076C.s | 45 ----- .../code_80280650/func_8028101C.s | 4 +- .../code_80280650/func_8028118C.s | 2 +- data/data_credits_128480.s | 2 +- include/defines.h | 6 + include/variables.h | 2 +- src/actors_extended.c | 4 +- src/actors_extended.h | 2 +- src/camera.c | 8 +- src/code_800029B0.c | 4 +- src/code_80005FD0.c | 14 +- src/code_8001F980.c | 2 +- src/code_8001F980.h | 2 +- src/code_80057C60.c | 66 +++---- src/code_80057C60.h | 2 +- src/code_8006E9C0.c | 9 +- src/code_8008C1D0.c | 6 +- src/code_8008C1D0.h | 3 +- src/code_80091440.c | 109 +++++------ src/code_80091440.h | 1 - src/code_80091750.c | 4 +- src/code_80280650.c | 64 +++---- src/code_80280650.h | 4 +- src/code_802AAA70.c | 2 +- src/main.c | 2 +- src/main.h | 2 + src/menus.c | 4 +- src/race_logic.c | 8 +- src/spawn_players.c | 24 +-- 40 files changed, 190 insertions(+), 479 deletions(-) delete mode 100644 asm/non_matchings/code_8006E9C0/func_8006F824.s delete mode 100644 asm/non_matchings/code_80091440/func_800914E0.s delete mode 100644 asm/non_matchings/code_80280650/func_8028076C.s diff --git a/asm/non_matchings/camera/func_8001EE98.s b/asm/non_matchings/camera/func_8001EE98.s index ab433bda8..d16510584 100644 --- a/asm/non_matchings/camera/func_8001EE98.s +++ b/asm/non_matchings/camera/func_8001EE98.s @@ -43,17 +43,17 @@ glabel func_8001EE98 /* 01FB2C 8001EF2C 8FAC0038 */ lw $t4, 0x38($sp) # 0x38($sp) /* 01FB30 8001EF30 24010003 */ li $at, 3 /* 01FB34 8001EF34 1041002C */ beq $v0, $at, .L8001EFE8 -/* 01FB38 8001EF38 3C0C800E */ lui $t4, %hi(D_800DC51C) # 0x800e # Possible red herring. Not a pointer. +/* 01FB38 8001EF38 3C0C800E */ lui $t4, %hi(gDemoMode) # 0x800e # Possible red herring. Not a pointer. /* 01FB3C 8001EF3C 100000CB */ b .L8001F26C /* 01FB40 8001EF40 00000000 */ nop /* 01FB44 8001EF44 958D0000 */ lhu $t5, ($t4) .L8001EF48: /* 01FB48 8001EF48 24010800 */ li $at, 2048 -/* 01FB4C 8001EF4C 3C0F800E */ lui $t7, %hi(D_800DC51C) # $t7, 0x800e +/* 01FB4C 8001EF4C 3C0F800E */ lui $t7, %hi(gDemoMode) # $t7, 0x800e /* 01FB50 8001EF50 31AE0800 */ andi $t6, $t5, 0x800 /* 01FB54 8001EF54 11C10005 */ beq $t6, $at, .L8001EF6C /* 01FB58 8001EF58 24020003 */ li $v0, 3 -/* 01FB5C 8001EF5C 95EFC51C */ lhu $t7, %lo(D_800DC51C)($t7) +/* 01FB5C 8001EF5C 95EFC51C */ lhu $t7, %lo(gDemoMode)($t7) /* 01FB60 8001EF60 24030001 */ li $v1, 1 /* 01FB64 8001EF64 3C19800E */ lui $t9, %hi(gIsGamePaused) # $t9, 0x800e /* 01FB68 8001EF68 146F0006 */ bne $v1, $t7, .L8001EF84 @@ -92,7 +92,7 @@ glabel func_8001EE98 /* 01FBE0 8001EFE0 100000A2 */ b .L8001F26C /* 01FBE4 8001EFE4 00000000 */ nop .L8001EFE8: -/* 01FBE8 8001EFE8 958CC51C */ lhu $t4, %lo(D_800DC51C)($t4) +/* 01FBE8 8001EFE8 958CC51C */ lhu $t4, %lo(gDemoMode)($t4) /* 01FBEC 8001EFEC 3C0D8016 */ lui $t5, %hi(D_8015F894) # $t5, 0x8016 /* 01FBF0 8001EFF0 3C0F8016 */ lui $t7, %hi(D_80164A88) # $t7, 0x8016 /* 01FBF4 8001EFF4 106C0009 */ beq $v1, $t4, .L8001F01C @@ -162,13 +162,13 @@ glabel func_8001EE98 .L8001F0E0: /* 01FCE0 8001F0E0 8D8CC4DC */ lw $t4, %lo(gPlayerOne)($t4) /* 01FCE4 8001F0E4 24010800 */ li $at, 2048 -/* 01FCE8 8001F0E8 3C0F800E */ lui $t7, %hi(D_800DC51C) # $t7, 0x800e +/* 01FCE8 8001F0E8 3C0F800E */ lui $t7, %hi(gDemoMode) # $t7, 0x800e /* 01FCEC 8001F0EC 958D0000 */ lhu $t5, ($t4) /* 01FCF0 8001F0F0 24020003 */ li $v0, 3 /* 01FCF4 8001F0F4 31AE0800 */ andi $t6, $t5, 0x800 /* 01FCF8 8001F0F8 11C10004 */ beq $t6, $at, .L8001F10C /* 01FCFC 8001F0FC 00000000 */ nop -/* 01FD00 8001F100 95EFC51C */ lhu $t7, %lo(D_800DC51C)($t7) +/* 01FD00 8001F100 95EFC51C */ lhu $t7, %lo(gDemoMode)($t7) /* 01FD04 8001F104 3C18800E */ lui $t8, %hi(gIsGamePaused) # $t8, 0x800e /* 01FD08 8001F108 146F0009 */ bne $v1, $t7, .L8001F130 .L8001F10C: @@ -218,11 +218,11 @@ glabel func_8001EE98 .L8001F1AC: /* 01FDAC 8001F1AC 958D0000 */ lhu $t5, ($t4) /* 01FDB0 8001F1B0 24010800 */ li $at, 2048 -/* 01FDB4 8001F1B4 3C0F800E */ lui $t7, %hi(D_800DC51C) # $t7, 0x800e +/* 01FDB4 8001F1B4 3C0F800E */ lui $t7, %hi(gDemoMode) # $t7, 0x800e /* 01FDB8 8001F1B8 31AE0800 */ andi $t6, $t5, 0x800 /* 01FDBC 8001F1BC 11C10009 */ beq $t6, $at, .L8001F1E4 /* 01FDC0 8001F1C0 24020003 */ li $v0, 3 -/* 01FDC4 8001F1C4 95EFC51C */ lhu $t7, %lo(D_800DC51C)($t7) +/* 01FDC4 8001F1C4 95EFC51C */ lhu $t7, %lo(gDemoMode)($t7) /* 01FDC8 8001F1C8 3C188016 */ lui $t8, %hi(D_8015F894) # $t8, 0x8016 /* 01FDCC 8001F1CC 506F0006 */ beql $v1, $t7, .L8001F1E8 /* 01FDD0 8001F1D0 0010C840 */ sll $t9, $s0, 1 diff --git a/asm/non_matchings/code_80005FD0/func_80008424.s b/asm/non_matchings/code_80005FD0/func_80008424.s index d6f4cba47..c3f2c3fab 100644 --- a/asm/non_matchings/code_80005FD0/func_80008424.s +++ b/asm/non_matchings/code_80005FD0/func_80008424.s @@ -251,10 +251,10 @@ glabel func_80008424 /* 00939C 8000879C 50A8004B */ beql $a1, $t0, .L800088CC /* 0093A0 800087A0 8FBF0014 */ lw $ra, 0x14($sp) /* 0093A4 800087A4 460C103C */ c.lt.s $f2, $f12 -/* 0093A8 800087A8 3C0C800E */ lui $t4, %hi(D_800DC51C) +/* 0093A8 800087A8 3C0C800E */ lui $t4, %hi(gDemoMode) /* 0093AC 800087AC 45020035 */ bc1fl .L80008884 /* 0093B0 800087B0 8CEB00BC */ lw $t3, 0xbc($a3) -/* 0093B4 800087B4 958CC51C */ lhu $t4, %lo(D_800DC51C)($t4) +/* 0093B4 800087B4 958CC51C */ lhu $t4, %lo(gDemoMode)($t4) /* 0093B8 800087B8 3C0E8016 */ lui $t6, %hi(D_80163330) # 0x8016 /* 0093BC 800087BC 3C0D800E */ lui $t5, %hi(gCurrentCourseId) /* 0093C0 800087C0 150C0009 */ bne $t0, $t4, .L800087E8 diff --git a/asm/non_matchings/code_80005FD0/func_800088D8.s b/asm/non_matchings/code_80005FD0/func_800088D8.s index 7ab77aa7c..3ad143212 100644 --- a/asm/non_matchings/code_80005FD0/func_800088D8.s +++ b/asm/non_matchings/code_80005FD0/func_800088D8.s @@ -67,8 +67,8 @@ glabel func_800088D8 /* 0095C8 800089C8 000AC840 */ sll $t9, $t2, 1 /* 0095CC 800089CC 14C0008E */ bnez $a2, .L80008C08 /* 0095D0 800089D0 03193821 */ addu $a3, $t8, $t9 -/* 0095D4 800089D4 3C0E800E */ lui $t6, %hi(D_800DC51C) -/* 0095D8 800089D8 95CEC51C */ lhu $t6, %lo(D_800DC51C)($t6) +/* 0095D4 800089D4 3C0E800E */ lui $t6, %hi(gDemoMode) +/* 0095D8 800089D8 95CEC51C */ lhu $t6, %lo(gDemoMode)($t6) /* 0095DC 800089DC 3C048016 */ lui $a0, %hi(D_80164450) # $a0, 0x8016 /* 0095E0 800089E0 24844450 */ addiu $a0, %lo(D_80164450) # addiu $a0, $a0, 0x4450 /* 0095E4 800089E4 146E003A */ bne $v1, $t6, .L80008AD0 diff --git a/asm/non_matchings/code_80005FD0/func_8000F124.s b/asm/non_matchings/code_80005FD0/func_8000F124.s index 408b60493..888adf814 100644 --- a/asm/non_matchings/code_80005FD0/func_8000F124.s +++ b/asm/non_matchings/code_80005FD0/func_8000F124.s @@ -12,8 +12,8 @@ glabel func_8000F124 /* 00FD48 8000F148 24420002 */ addiu $v0, $v0, 2 /* 00FD4C 8000F14C 1443FFFE */ bne $v0, $v1, .L8000F148 /* 00FD50 8000F150 A440FFFE */ sh $zero, -2($v0) -/* 00FD54 8000F154 3C0E800E */ lui $t6, %hi(D_800DC51C) -/* 00FD58 8000F158 95CEC51C */ lhu $t6, %lo(D_800DC51C)($t6) +/* 00FD54 8000F154 3C0E800E */ lui $t6, %hi(gDemoMode) +/* 00FD58 8000F158 95CEC51C */ lhu $t6, %lo(gDemoMode)($t6) /* 00FD5C 8000F15C 24010001 */ li $at, 1 /* 00FD60 8000F160 3C0F800E */ lui $t7, %hi(gModeSelection) /* 00FD64 8000F164 51C10050 */ beql $t6, $at, .L8000F2A8 diff --git a/asm/non_matchings/code_80005FD0/func_8000F628.s b/asm/non_matchings/code_80005FD0/func_8000F628.s index a3f5da7f3..d1fbd9dcc 100644 --- a/asm/non_matchings/code_80005FD0/func_8000F628.s +++ b/asm/non_matchings/code_80005FD0/func_8000F628.s @@ -453,8 +453,8 @@ glabel func_8000F628 /* 0108FC 8000FCFC A4A0FFFE */ sh $zero, -2($a1) /* 010900 8000FD00 1420FECD */ bnez $at, .L8000F838 /* 010904 8000FD04 A4C2FFFE */ sh $v0, -2($a2) -/* 010908 8000FD08 3C15800E */ lui $s5, %hi(D_800DC51C) -/* 01090C 8000FD0C 26B5C51C */ addiu $s5, %lo(D_800DC51C) # addiu $s5, $s5, -0x3ae4 +/* 010908 8000FD08 3C15800E */ lui $s5, %hi(gDemoMode) +/* 01090C 8000FD0C 26B5C51C */ addiu $s5, %lo(gDemoMode) # addiu $s5, $s5, -0x3ae4 /* 010910 8000FD10 96B80000 */ lhu $t8, ($s5) /* 010914 8000FD14 3C028016 */ lui $v0, %hi(D_801637BC) # $v0, 0x8016 /* 010918 8000FD18 244237BC */ addiu $v0, %lo(D_801637BC) # addiu $v0, $v0, 0x37bc diff --git a/asm/non_matchings/code_80005FD0/func_80014DE4.s b/asm/non_matchings/code_80005FD0/func_80014DE4.s index 8cba8b000..cc7942713 100644 --- a/asm/non_matchings/code_80005FD0/func_80014DE4.s +++ b/asm/non_matchings/code_80005FD0/func_80014DE4.s @@ -17,10 +17,10 @@ glabel func_80014DE4 /* 015A20 80014E20 000448C0 */ sll $t1, $a0, 3 /* 015A24 80014E24 3C188019 */ lui $t8, %hi(gCupCourseSelection) # $t8, 0x8019 /* 015A28 80014E28 8318EE0B */ lb $t8, %lo(gCupCourseSelection)($t8) -/* 015A2C 80014E2C 3C19800E */ lui $t9, %hi(D_800DC51C) +/* 015A2C 80014E2C 3C19800E */ lui $t9, %hi(gDemoMode) /* 015A30 80014E30 13000004 */ beqz $t8, .L80014E44 /* 015A34 80014E34 00000000 */ nop -/* 015A38 80014E38 9739C51C */ lhu $t9, %lo(D_800DC51C)($t9) +/* 015A38 80014E38 9739C51C */ lhu $t9, %lo(gDemoMode)($t9) /* 015A3C 80014E3C 54F90004 */ bnel $a3, $t9, .L80014E50 /* 015A40 80014E40 84660000 */ lh $a2, ($v1) .L80014E44: diff --git a/asm/non_matchings/code_8006E9C0/func_8006F824.s b/asm/non_matchings/code_8006E9C0/func_8006F824.s deleted file mode 100644 index f8bc7cd9f..000000000 --- a/asm/non_matchings/code_8006E9C0/func_8006F824.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_8006F824 -/* 070424 8006F824 3C0E8016 */ lui $t6, %hi(D_801657E4) # $t6, 0x8016 -/* 070428 8006F828 81CE57E4 */ lb $t6, %lo(D_801657E4)($t6) -/* 07042C 8006F82C 3C0F8016 */ lui $t7, %hi(D_801657E6) # $t7, 0x8016 -/* 070430 8006F830 81EF57E6 */ lb $t7, %lo(D_801657E6)($t7) -/* 070434 8006F834 3C018016 */ lui $at, %hi(D_80165808) # $at, 0x8016 -/* 070438 8006F838 3C188016 */ lui $t8, %hi(D_801657F0) # $t8, 0x8016 -/* 07043C 8006F83C A02E5808 */ sb $t6, %lo(D_80165808)($at) -/* 070440 8006F840 831857F0 */ lb $t8, %lo(D_801657F0)($t8) -/* 070444 8006F844 3C018016 */ lui $at, %hi(D_80165810) # $at, 0x8016 -/* 070448 8006F848 3C198016 */ lui $t9, %hi(D_801657E8) # $t9, 0x8016 -/* 07044C 8006F84C A02F5810 */ sb $t7, %lo(D_80165810)($at) -/* 070450 8006F850 833957E8 */ lb $t9, %lo(D_801657E8)($t9) -/* 070454 8006F854 3C018016 */ lui $at, %hi(D_80165820) # $at, 0x8016 -/* 070458 8006F858 3C088016 */ lui $t0, %hi(D_801657F8) # $t0, 0x8016 -/* 07045C 8006F85C A0385820 */ sb $t8, %lo(D_80165820)($at) -/* 070460 8006F860 810857F8 */ lb $t0, %lo(D_801657F8)($t0) -/* 070464 8006F864 3C018016 */ lui $at, %hi(D_80165818) # $at, 0x8016 -/* 070468 8006F868 A0395818 */ sb $t9, %lo(D_80165818)($at) -/* 07046C 8006F86C 3C038016 */ lui $v1, %hi(D_80165800) # $v1, 0x8016 -/* 070470 8006F870 3C018016 */ lui $at, %hi(D_80165828) # $at, 0x8016 -/* 070474 8006F874 24635800 */ addiu $v1, %lo(D_80165800) # addiu $v1, $v1, 0x5800 -/* 070478 8006F878 A0285828 */ sb $t0, %lo(D_80165828)($at) -/* 07047C 8006F87C 80690000 */ lb $t1, ($v1) -/* 070480 8006F880 806A0001 */ lb $t2, 1($v1) -/* 070484 8006F884 3C028016 */ lui $v0, %hi(D_80165832) # $v0, 0x8016 -/* 070488 8006F888 24425832 */ addiu $v0, %lo(D_80165832) # addiu $v0, $v0, 0x5832 -/* 07048C 8006F88C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 070490 8006F890 AFBF0014 */ sw $ra, 0x14($sp) -/* 070494 8006F894 A0490000 */ sb $t1, ($v0) -/* 070498 8006F898 10800008 */ beqz $a0, .L8006F8BC -/* 07049C 8006F89C A04A0001 */ sb $t2, 1($v0) -/* 0704A0 8006F8A0 3C0B800E */ lui $t3, %hi(gIsGamePaused) # $t3, 0x800e -/* 0704A4 8006F8A4 956BC5FC */ lhu $t3, %lo(gIsGamePaused)($t3) -/* 0704A8 8006F8A8 3C044900 */ lui $a0, (0x4900801C >> 16) # lui $a0, 0x4900 -/* 0704AC 8006F8AC 55600004 */ bnel $t3, $zero, .L8006F8C0 -/* 0704B0 8006F8B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0704B4 8006F8B4 0C032384 */ jal play_sound2 -/* 0704B8 8006F8B8 3484801C */ ori $a0, (0x4900801C & 0xFFFF) # ori $a0, $a0, 0x801c -.L8006F8BC: -/* 0704BC 8006F8BC 8FBF0014 */ lw $ra, 0x14($sp) -.L8006F8C0: -/* 0704C0 8006F8C0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0704C4 8006F8C4 03E00008 */ jr $ra -/* 0704C8 8006F8C8 00000000 */ nop diff --git a/asm/non_matchings/code_8006E9C0/func_8006F8CC.s b/asm/non_matchings/code_8006E9C0/func_8006F8CC.s index 75c506f14..201da90dd 100644 --- a/asm/non_matchings/code_8006E9C0/func_8006F8CC.s +++ b/asm/non_matchings/code_8006E9C0/func_8006F8CC.s @@ -111,8 +111,8 @@ glabel func_8006F8CC /* 070668 8006FA68 A04A0000 */ sb $t2, ($v0) /* 07066C 8006FA6C A04B0001 */ sb $t3, 1($v0) .L8006FA70: -/* 070670 8006FA70 3C0C800E */ lui $t4, %hi(D_800DC51C) # $t4, 0x800e -/* 070674 8006FA74 958CC51C */ lhu $t4, %lo(D_800DC51C)($t4) +/* 070670 8006FA70 3C0C800E */ lui $t4, %hi(gDemoMode) # $t4, 0x800e +/* 070674 8006FA74 958CC51C */ lhu $t4, %lo(gDemoMode)($t4) /* 070678 8006FA78 51800003 */ beql $t4, $zero, .L8006FA88 /* 07067C 8006FA7C 8FBF0014 */ lw $ra, 0x14($sp) /* 070680 8006FA80 A0C00000 */ sb $zero, ($a2) diff --git a/asm/non_matchings/code_80091440/func_800914E0.s b/asm/non_matchings/code_80091440/func_800914E0.s deleted file mode 100644 index 091b66cfb..000000000 --- a/asm/non_matchings/code_80091440/func_800914E0.s +++ /dev/null @@ -1,169 +0,0 @@ -.section .data - -glabel D_800E7080 -.float 0.0, -20.0, 150.0 - -glabel D_800E708C -.float 0.0, -6.0, 4.0 - -.section .text - -glabel func_800914E0 -/* 0920E0 800914E0 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0920E4 800914E4 3C0F800E */ lui $t7, %hi(D_800E7080) # $t7, 0x800e -/* 0920E8 800914E8 AFBF001C */ sw $ra, 0x1c($sp) -/* 0920EC 800914EC 25EF7080 */ addiu $t7, %lo(D_800E7080) # addiu $t7, $t7, 0x7080 -/* 0920F0 800914F0 8DE10000 */ lw $at, ($t7) -/* 0920F4 800914F4 27AE0064 */ addiu $t6, $sp, 0x64 -/* 0920F8 800914F8 8DEA0004 */ lw $t2, 4($t7) -/* 0920FC 800914FC ADC10000 */ sw $at, ($t6) -/* 092100 80091500 8DE10008 */ lw $at, 8($t7) -/* 092104 80091504 3C0C800E */ lui $t4, %hi(D_800E708C) # $t4, 0x800e -/* 092108 80091508 258C708C */ addiu $t4, %lo(D_800E708C) # addiu $t4, $t4, 0x708c -/* 09210C 8009150C ADCA0004 */ sw $t2, 4($t6) -/* 092110 80091510 ADC10008 */ sw $at, 8($t6) -/* 092114 80091514 8D810000 */ lw $at, ($t4) -/* 092118 80091518 27AB0058 */ addiu $t3, $sp, 0x58 -/* 09211C 8009151C 8D980004 */ lw $t8, 4($t4) -/* 092120 80091520 AD610000 */ sw $at, ($t3) -/* 092124 80091524 8D810008 */ lw $at, 8($t4) -/* 092128 80091528 3C028016 */ lui $v0, %hi(D_8015F718) # $v0, 0x8016 -/* 09212C 8009152C AD780004 */ sw $t8, 4($t3) -/* 092130 80091530 AD610008 */ sw $at, 8($t3) -/* 092134 80091534 8C42F718 */ lw $v0, %lo(D_8015F718)($v0) -/* 092138 80091538 3C0F8015 */ lui $t7, %hi(gSegmentTable) -/* 09213C 8009153C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* 092140 80091540 00021E02 */ srl $v1, $v0, 0x18 -/* 092144 80091544 00037080 */ sll $t6, $v1, 2 -/* 092148 80091548 01EE7821 */ addu $t7, $t7, $t6 -/* 09214C 8009154C 8DEF0258 */ lw $t7, %lo(gSegmentTable)($t7) -/* 092150 80091550 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 092154 80091554 3C09800E */ lui $t1, %hi(gPlayerOneCopy) # $t1, 0x800e -/* 092158 80091558 00412024 */ and $a0, $v0, $at -/* 09215C 8009155C 2529C4FC */ addiu $t1, %lo(gPlayerOneCopy) # addiu $t1, $t1, -0x3b04 -/* 092160 80091560 8D2B0000 */ lw $t3, ($t1) -/* 092164 80091564 3C018000 */ lui $at, 0x8000 -/* 092168 80091568 01E45021 */ addu $t2, $t7, $a0 -/* 09216C 8009156C 0141C821 */ addu $t9, $t2, $at -/* 092170 80091570 AFB90048 */ sw $t9, 0x48($sp) -/* 092174 80091574 3C088015 */ lui $t0, %hi(D_80152308) # $t0, 0x8015 -/* 092178 80091578 44800000 */ mtc1 $zero, $f0 -/* 09217C 8009157C 95082308 */ lhu $t0, %lo(D_80152308)($t0) -/* 092180 80091580 85670006 */ lh $a3, 6($t3) -/* 092184 80091584 3C058016 */ lui $a1, %hi(cameras) # $a1, 0x8016 -/* 092188 80091588 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 09218C 8009158C 44812000 */ mtc1 $at, $f4 -/* 092190 80091590 24A546F0 */ addiu $a1, %lo(cameras) # addiu $a1, $a1, 0x46f0 -/* 092194 80091594 00E81023 */ subu $v0, $a3, $t0 -/* 092198 80091598 00021C00 */ sll $v1, $v0, 0x10 -/* 09219C 8009159C E4A00018 */ swc1 $f0, 0x18($a1) -/* 0921A0 800915A0 E4A00020 */ swc1 $f0, 0x20($a1) -/* 0921A4 800915A4 E4A4001C */ swc1 $f4, 0x1c($a1) -/* 0921A8 800915A8 24050007 */ li $a1, 7 -/* 0921AC 800915AC 0003C403 */ sra $t8, $v1, 0x10 -/* 0921B0 800915B0 14B80008 */ bne $a1, $t8, .L800915D4 -/* 0921B4 800915B4 03001825 */ move $v1, $t8 -/* 0921B8 800915B8 0C024528 */ jal func_800914A0 -/* 0921BC 800915BC 00000000 */ nop -/* 0921C0 800915C0 3C09800E */ lui $t1, %hi(gPlayerOneCopy) # $t1, 0x800e -/* 0921C4 800915C4 3C088015 */ lui $t0, %hi(D_80152308) # $t0, 0x8015 -/* 0921C8 800915C8 95082308 */ lhu $t0, %lo(D_80152308)($t0) -/* 0921CC 800915CC 10000010 */ b .L80091610 -/* 0921D0 800915D0 2529C4FC */ addiu $t1, %lo(gPlayerOneCopy) # addiu $t1, $t1, -0x3b04 -.L800915D4: -/* 0921D4 800915D4 2861000E */ slti $at, $v1, 0xe -/* 0921D8 800915D8 1020000D */ beqz $at, .L80091610 -/* 0921DC 800915DC 3C0E8016 */ lui $t6, %hi(D_8015F6F8) # $t6, 0x8016 -/* 0921E0 800915E0 85CEF6F8 */ lh $t6, %lo(D_8015F6F8)($t6) -/* 0921E4 800915E4 006E2021 */ addu $a0, $v1, $t6 -/* 0921E8 800915E8 00047C00 */ sll $t7, $a0, 0x10 -/* 0921EC 800915EC 000F5403 */ sra $t2, $t7, 0x10 -/* 0921F0 800915F0 55450008 */ bnel $t2, $a1, .L80091614 -/* 0921F4 800915F4 8FAD0048 */ lw $t5, 0x48($sp) -/* 0921F8 800915F8 0C024528 */ jal func_800914A0 -/* 0921FC 800915FC 00000000 */ nop -/* 092200 80091600 3C09800E */ lui $t1, %hi(gPlayerOneCopy) # $t1, 0x800e -/* 092204 80091604 3C088015 */ lui $t0, %hi(D_80152308) # $t0, 0x8015 -/* 092208 80091608 95082308 */ lhu $t0, %lo(D_80152308)($t0) -/* 09220C 8009160C 2529C4FC */ addiu $t1, %lo(gPlayerOneCopy) # addiu $t1, $t1, -0x3b04 -.L80091610: -/* 092210 80091610 8FAD0048 */ lw $t5, 0x48($sp) -.L80091614: -/* 092214 80091614 0008C8C0 */ sll $t9, $t0, 3 -/* 092218 80091618 3C018016 */ lui $at, %hi(cameras) # $at, 0x8016 -/* 09221C 8009161C 032D1021 */ addu $v0, $t9, $t5 -/* 092220 80091620 844B0000 */ lh $t3, ($v0) -/* 092224 80091624 3C048016 */ lui $a0, %hi(cameras+0x54) # $a0, 0x8016 -/* 092228 80091628 24844744 */ addiu $a0, %lo(cameras+0x54) # addiu $a0, $a0, 0x4744 -/* 09222C 8009162C 256C000A */ addiu $t4, $t3, 0xa -/* 092230 80091630 448C3000 */ mtc1 $t4, $f6 -/* 092234 80091634 3C0541A0 */ lui $a1, 0x41a0 -/* 092238 80091638 46803220 */ cvt.s.w $f8, $f6 -/* 09223C 8009163C E42846F0 */ swc1 $f8, %lo(cameras)($at) -/* 092240 80091640 84580002 */ lh $t8, 2($v0) -/* 092244 80091644 3C018016 */ lui $at, %hi(cameras+0x4) # $at, 0x8016 -/* 092248 80091648 44064000 */ mfc1 $a2, $f8 -/* 09224C 8009164C 270E0007 */ addiu $t6, $t8, 7 -/* 092250 80091650 448E5000 */ mtc1 $t6, $f10 -/* 092254 80091654 00000000 */ nop -/* 092258 80091658 46805420 */ cvt.s.w $f16, $f10 -/* 09225C 8009165C E43046F4 */ swc1 $f16, %lo(cameras+0x4)($at) -/* 092260 80091660 844F0004 */ lh $t7, 4($v0) -/* 092264 80091664 3C018016 */ lui $at, %hi(cameras+0x8) # $at, 0x8016 -/* 092268 80091668 44078000 */ mfc1 $a3, $f16 -/* 09226C 8009166C 25EAFFEC */ addiu $t2, $t7, -0x14 -/* 092270 80091670 448A9000 */ mtc1 $t2, $f18 -/* 092274 80091674 00000000 */ nop -/* 092278 80091678 46809120 */ cvt.s.w $f4, $f18 -/* 09227C 8009167C E42446F8 */ swc1 $f4, %lo(cameras+0x8)($at) -/* 092280 80091680 8D390000 */ lw $t9, ($t1) -/* 092284 80091684 3C018016 */ lui $at, %hi(cameras+0xC) # $at, 0x8016 -/* 092288 80091688 C7260014 */ lwc1 $f6, 0x14($t9) -/* 09228C 8009168C E42646FC */ swc1 $f6, %lo(cameras+0xC)($at) -/* 092290 80091690 8D2D0000 */ lw $t5, ($t1) -/* 092294 80091694 3C018016 */ lui $at, %hi(cameras+0x10) # $at, 0x8016 -/* 092298 80091698 C5AA0018 */ lwc1 $f10, 0x18($t5) -/* 09229C 8009169C E42A4700 */ swc1 $f10, %lo(cameras+0x10)($at) -/* 0922A0 800916A0 8D2B0000 */ lw $t3, ($t1) -/* 0922A4 800916A4 3C018016 */ lui $at, %hi(cameras+0x14) # $at, 0x8016 -/* 0922A8 800916A8 C572001C */ lwc1 $f18, 0x1c($t3) -/* 0922AC 800916AC E7A40010 */ swc1 $f4, 0x10($sp) -/* 0922B0 800916B0 0C0AB772 */ jal func_802ADDC8 -/* 0922B4 800916B4 E4324704 */ swc1 $f18, %lo(cameras+0x14)($at) -/* 0922B8 800916B8 3C018016 */ lui $at, %hi(cameras+0xC) # $at, 0x8016 -/* 0922BC 800916BC C42646FC */ lwc1 $f6, %lo(cameras+0xC)($at) -/* 0922C0 800916C0 3C018016 */ lui $at, %hi(cameras) # $at, 0x8016 -/* 0922C4 800916C4 C42A46F0 */ lwc1 $f10, %lo(cameras)($at) -/* 0922C8 800916C8 3C018016 */ lui $at, %hi(cameras+0x10) # $at, 0x8016 -/* 0922CC 800916CC C4324700 */ lwc1 $f18, %lo(cameras+0x10)($at) -/* 0922D0 800916D0 3C018016 */ lui $at, %hi(cameras+0x4) # $at, 0x8016 -/* 0922D4 800916D4 C42846F4 */ lwc1 $f8, %lo(cameras+0x4)($at) -/* 0922D8 800916D8 3C018016 */ lui $at, %hi(cameras+0x14) # $at, 0x8016 -/* 0922DC 800916DC C4244704 */ lwc1 $f4, %lo(cameras+0x14)($at) -/* 0922E0 800916E0 460A3301 */ sub.s $f12, $f6, $f10 -/* 0922E4 800916E4 3C018016 */ lui $at, %hi(cameras+0x8) # $at, 0x8016 -/* 0922E8 800916E8 C42646F8 */ lwc1 $f6, %lo(cameras+0x8)($at) -/* 0922EC 800916EC 46089401 */ sub.s $f16, $f18, $f8 -/* 0922F0 800916F0 E7AC0038 */ swc1 $f12, 0x38($sp) -/* 0922F4 800916F4 46062381 */ sub.s $f14, $f4, $f6 -/* 0922F8 800916F8 E7B00034 */ swc1 $f16, 0x34($sp) -/* 0922FC 800916FC 0C0ADE0C */ jal atan2s -/* 092300 80091700 E7AE0030 */ swc1 $f14, 0x30($sp) -/* 092304 80091704 C7A00038 */ lwc1 $f0, 0x38($sp) -/* 092308 80091708 C7AE0030 */ lwc1 $f14, 0x30($sp) -/* 09230C 8009170C 3C018016 */ lui $at, %hi(cameras+0x26) # $at, 0x8016 -/* 092310 80091710 46000282 */ mul.s $f10, $f0, $f0 -/* 092314 80091714 A4224716 */ sh $v0, %lo(cameras+0x26)($at) -/* 092318 80091718 460E7482 */ mul.s $f18, $f14, $f14 -/* 09231C 8009171C 0C033850 */ jal sqrtf -/* 092320 80091720 46125300 */ add.s $f12, $f10, $f18 -/* 092324 80091724 46000306 */ mov.s $f12, $f0 -/* 092328 80091728 0C0ADE0C */ jal atan2s -/* 09232C 8009172C C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 092330 80091730 8FBF001C */ lw $ra, 0x1c($sp) -/* 092334 80091734 3C018016 */ lui $at, %hi(cameras+0x24) # $at, 0x8016 -/* 092338 80091738 A4224714 */ sh $v0, %lo(cameras+0x24)($at) -/* 09233C 8009173C 3C018016 */ lui $at, %hi(cameras+0x28) # $at, 0x8016 -/* 092340 80091740 A4204718 */ sh $zero, %lo(cameras+0x28)($at) -/* 092344 80091744 03E00008 */ jr $ra -/* 092348 80091748 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/asm/non_matchings/code_80091750/func_80094C60.s b/asm/non_matchings/code_80091750/func_80094C60.s index 0d47e5bd7..18c226772 100644 --- a/asm/non_matchings/code_80091750/func_80094C60.s +++ b/asm/non_matchings/code_80091750/func_80094C60.s @@ -271,8 +271,8 @@ glabel L80094FF0 /* 095C74 80095074 00003025 */ move $a2, $zero /* 095C78 80095078 0C027994 */ jal add_8018D9E0_entry /* 095C7C 8009507C 24070006 */ li $a3, 6 -/* 095C80 80095080 3C01800E */ lui $at, %hi(D_800DC51C) # $at, 0x800e -/* 095C84 80095084 A420C51C */ sh $zero, %lo(D_800DC51C)($at) +/* 095C80 80095080 3C01800E */ lui $at, %hi(gDemoMode) # $at, 0x800e +/* 095C84 80095084 A420C51C */ sh $zero, %lo(gDemoMode)($at) /* 095C88 80095088 3C018019 */ lui $at, %hi(D_8018EE08) # $at, 0x8019 /* 095C8C 8009508C 10000128 */ b .L80095530 /* 095C90 80095090 A020EE08 */ sb $zero, %lo(D_8018EE08)($at) diff --git a/asm/non_matchings/code_80091750/func_8009CE64.s b/asm/non_matchings/code_80091750/func_8009CE64.s index c6f6e94c1..56f670d27 100644 --- a/asm/non_matchings/code_80091750/func_8009CE64.s +++ b/asm/non_matchings/code_80091750/func_8009CE64.s @@ -274,8 +274,8 @@ glabel L8009D214 /* 09DE28 8009D228 AC990000 */ sw $t9, ($a0) glabel L8009D22C /* 09DE2C 8009D22C 240E0001 */ li $t6, 1 -/* 09DE30 8009D230 3C01800E */ lui $at, %hi(D_800DC51C) # $at, 0x800e -/* 09DE34 8009D234 A42EC51C */ sh $t6, %lo(D_800DC51C)($at) +/* 09DE30 8009D230 3C01800E */ lui $at, %hi(gDemoMode) # $at, 0x800e +/* 09DE34 8009D234 A42EC51C */ sh $t6, %lo(gDemoMode)($at) /* 09DE38 8009D238 24050001 */ li $a1, 1 /* 09DE3C 8009D23C 3C018019 */ lui $at, %hi(D_8018EE08) # $at, 0x8019 /* 09DE40 8009D240 A025EE08 */ sb $a1, %lo(D_8018EE08)($at) diff --git a/asm/non_matchings/code_80280650/func_8028076C.s b/asm/non_matchings/code_80280650/func_8028076C.s deleted file mode 100644 index dbd4b2b51..000000000 --- a/asm/non_matchings/code_80280650/func_8028076C.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_8028076C -/* 123DAC 8028076C 3C068028 */ lui $a2, %hi(D_80284E60) # $a2, 0x8028 -/* 123DB0 80280770 24C64E60 */ addiu $a2, %lo(D_80284E60) # addiu $a2, $a2, 0x4e60 -/* 123DB4 80280774 94C20000 */ lhu $v0, ($a2) -/* 123DB8 80280778 2401560A */ li $at, 22026 -/* 123DBC 8028077C 54410004 */ bnel $v0, $at, .L80280790 -/* 123DC0 80280780 00027A00 */ sll $t7, $v0, 8 -/* 123DC4 80280784 A4C00000 */ sh $zero, ($a2) -/* 123DC8 80280788 3002FFFF */ andi $v0, $zero, 0xffff -/* 123DCC 8028078C 00027A00 */ sll $t7, $v0, 8 -.L80280790: -/* 123DD0 80280790 01E2C026 */ xor $t8, $t7, $v0 -/* 123DD4 80280794 330500FF */ andi $a1, $t8, 0xff -/* 123DD8 80280798 3308FF00 */ andi $t0, $t8, 0xff00 -/* 123DDC 8028079C 00084A03 */ sra $t1, $t0, 8 -/* 123DE0 802807A0 0005CA00 */ sll $t9, $a1, 8 -/* 123DE4 802807A4 03296021 */ addu $t4, $t9, $t1 -/* 123DE8 802807A8 00055840 */ sll $t3, $a1, 1 -/* 123DEC 802807AC 016C1826 */ xor $v1, $t3, $t4 -/* 123DF0 802807B0 306DFFFF */ andi $t5, $v1, 0xffff -/* 123DF4 802807B4 31AE0001 */ andi $t6, $t5, 1 -/* 123DF8 802807B8 A4CC0000 */ sh $t4, ($a2) -/* 123DFC 802807BC 15C0000C */ bnez $t6, .L802807F0 -/* 123E00 802807C0 01A02025 */ move $a0, $t5 -/* 123E04 802807C4 000D1043 */ sra $v0, $t5, 1 -/* 123E08 802807C8 384FFF80 */ xori $t7, $v0, 0xff80 -/* 123E0C 802807CC 31E2FFFF */ andi $v0, $t7, 0xffff -/* 123E10 802807D0 3401AA55 */ li $at, 43605 -/* 123E14 802807D4 14410003 */ bne $v0, $at, .L802807E4 -/* 123E18 802807D8 38481FF4 */ xori $t0, $v0, 0x1ff4 -/* 123E1C 802807DC 10000009 */ b .L80280804 -/* 123E20 802807E0 A4C00000 */ sh $zero, ($a2) -.L802807E4: -/* 123E24 802807E4 3C018028 */ lui $at, %hi(D_80284E60) # $at, 0x8028 -/* 123E28 802807E8 10000006 */ b .L80280804 -/* 123E2C 802807EC A4284E60 */ sh $t0, %lo(D_80284E60)($at) -.L802807F0: -/* 123E30 802807F0 0004C843 */ sra $t9, $a0, 1 -/* 123E34 802807F4 3B2AFF80 */ xori $t2, $t9, 0xff80 -/* 123E38 802807F8 394B8180 */ xori $t3, $t2, 0x8180 -/* 123E3C 802807FC 3C018028 */ lui $at, %hi(D_80284E60) # $at, 0x8028 -/* 123E40 80280800 A42B4E60 */ sh $t3, %lo(D_80284E60)($at) -.L80280804: -/* 123E44 80280804 03E00008 */ jr $ra -/* 123E48 80280808 94C20000 */ lhu $v0, ($a2) diff --git a/asm/non_matchings/code_80280650/func_8028101C.s b/asm/non_matchings/code_80280650/func_8028101C.s index e0fd9d23d..5d4c83cbc 100644 --- a/asm/non_matchings/code_80280650/func_8028101C.s +++ b/asm/non_matchings/code_80280650/func_8028101C.s @@ -61,12 +61,12 @@ glabel func_8028101C /* 124728 802810E8 E60A0014 */ swc1 $f10, 0x14($s0) /* 12472C 802810EC C7B0005C */ lwc1 $f16, 0x5c($sp) /* 124730 802810F0 46100480 */ add.s $f18, $f0, $f16 -/* 124734 802810F4 0C0A0203 */ jal func_8028080C +/* 124734 802810F4 0C0A0203 */ jal random_float_between_0_and_1 /* 124738 802810F8 E6120018 */ swc1 $f18, 0x18($s0) /* 12473C 802810FC 461A0102 */ mul.s $f4, $f0, $f26 /* 124740 80281100 4600218D */ trunc.w.s $f6, $f4 /* 124744 80281104 440F3000 */ mfc1 $t7, $f6 -/* 124748 80281108 0C0A01DB */ jal func_8028076C +/* 124748 80281108 0C0A01DB */ jal random_u16_credits /* 12474C 8028110C A60F002C */ sh $t7, 0x2c($s0) /* 124750 80281110 A6020030 */ sh $v0, 0x30($s0) /* 124754 80281114 0C0A0214 */ jal func_80280850 diff --git a/asm/non_matchings/code_80280650/func_8028118C.s b/asm/non_matchings/code_80280650/func_8028118C.s index 9f5397bba..84f9f0c02 100644 --- a/asm/non_matchings/code_80280650/func_8028118C.s +++ b/asm/non_matchings/code_80280650/func_8028118C.s @@ -11,7 +11,7 @@ glabel func_8028118C /* 1247D4 80281194 AFB00018 */ sw $s0, 0x18($sp) /* 1247D8 80281198 AFA40020 */ sw $a0, 0x20($sp) /* 1247DC 8028119C AFA50024 */ sw $a1, 0x24($sp) -/* 1247E0 802811A0 0C0A0203 */ jal func_8028080C +/* 1247E0 802811A0 0C0A0203 */ jal random_float_between_0_and_1 /* 1247E4 802811A4 AFA60028 */ sw $a2, 0x28($sp) /* 1247E8 802811A8 3C0E8028 */ lui $t6, %hi(D_802874BE) # $t6, 0x8028 /* 1247EC 802811AC 85CE74BE */ lh $t6, %lo(D_802874BE)($t6) diff --git a/data/data_credits_128480.s b/data/data_credits_128480.s index 57013e03b..471634a0a 100644 --- a/data/data_credits_128480.s +++ b/data/data_credits_128480.s @@ -18,7 +18,7 @@ glabel D_80284E50 .word 0x00207F20 .word 0x007F7F20 -glabel D_80284E60 +glabel sRandomSeed16 .word 0x00000000 glabel D_80284E64 diff --git a/include/defines.h b/include/defines.h index cc43f3ad3..30282f51c 100644 --- a/include/defines.h +++ b/include/defines.h @@ -62,6 +62,12 @@ #define DEBUG_GOTO_CREDITS_SEQUENCE_CC_50 2 #define DEBUG_GOTO_CREDITS_SEQUENCE_CC_EXTRA 3 +/** + * Jump to demo mode from the debug menu + * using L and A + */ +#define DEMO_MODE_ACTIVE 1 +#define DEMO_MODE_INACTIVE 0 /** * Racing terms: diff --git a/include/variables.h b/include/variables.h index b66425382..bb115086f 100644 --- a/include/variables.h +++ b/include/variables.h @@ -104,7 +104,7 @@ extern Vp D_802B8880[]; extern Gfx D_0D0077A0[]; extern s32 gGamestate; -extern u16 D_800DC51C; +extern u16 gDemoMode; extern s32 D_800DC540; extern u16 gIsGamePaused; diff --git a/src/actors_extended.c b/src/actors_extended.c index 2e022945d..bae59e9b5 100644 --- a/src/actors_extended.c +++ b/src/actors_extended.c @@ -706,7 +706,7 @@ void update_obj_banana(struct BananaActor *banana) { func_802ADDC8(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); func_802B4E30((struct Actor *) banana); if ((player->unk_000 & 0x4000) != 0) { - if (D_800DC51C != 0) { + if (gDemoMode) { controller = gControllerOne; } else { controller = &gControllers[banana->rot[0]]; @@ -1528,7 +1528,7 @@ void update_obj_red_blue_shell(struct ShellActor *shell) { } if ((player->unk_000 & 0x4000) != 0) { - if (D_800DC51C != 0) { + if (gDemoMode) { controller = gControllerOne; } else { controller = &gControllers[shell->playerId]; diff --git a/src/actors_extended.h b/src/actors_extended.h index 4128e88c3..8081c3b31 100644 --- a/src/actors_extended.h +++ b/src/actors_extended.h @@ -55,7 +55,7 @@ extern struct Controller *gControllerSix; extern struct Controller *gControllerSeven; extern struct Controller *gControllerEight; -extern u16 D_800DC51C; +extern u16 gDemoMode; extern s16 D_8015F6E8; extern s16 D_8015F6EA; extern s16 D_8015F6F0; diff --git a/src/camera.c b/src/camera.c index 6e405c97a..865b0a2f1 100644 --- a/src/camera.c +++ b/src/camera.c @@ -1097,7 +1097,7 @@ void func_8001EE98(Player *player, Camera *camera, s8 arg2) { } switch (gModeSelection) { /* irregular */ case 0: - if (((player->unk_000 & 0x800) == 0x800) || (D_800DC51C == 1)) { + if (((player->unk_000 & 0x800) == 0x800) || (gDemoMode)) { D_80152300[var_s0] = 3; } else if (gIsGamePaused == 1) { func_8001A0A4((s32) &D_80152300[var_s0], (s32) camera, (s32) player, (s32) arg2, var_s0); @@ -1106,7 +1106,7 @@ void func_8001EE98(Player *player, Camera *camera, s8 arg2) { } break; case 3: - if ((D_800DC51C == (u16) 1) || ((D_8015F894 == 2) && (D_80164A89 == 1))) { + if ((gDemoMode) || ((D_8015F894 == 2) && (D_80164A89 == 1))) { if (D_80164A88 == 0) { func_80019ED0(); } @@ -1130,7 +1130,7 @@ void func_8001EE98(Player *player, Camera *camera, s8 arg2) { } break; case 1: - if (((gPlayerOne->unk_000 & 0x800) == 0x800) || (D_800DC51C == (u16) 1)) { + if (((gPlayerOne->unk_000 & 0x800) == 0x800) || (gDemoMode)) { D_80152300->unk0 = 3; *(D_80152300 + 2) = 3; *(D_80152300 + 4) = 3; @@ -1149,7 +1149,7 @@ void func_8001EE98(Player *player, Camera *camera, s8 arg2) { } break; case 2: - if (((player->unk_000 & 0x800) == 0x800) || (D_800DC51C == (u16) 1) || (D_8015F894 == 2)) { + if (((player->unk_000 & 0x800) == 0x800) || (gDemoMode) || (D_8015F894 == 2)) { D_80152300[var_s0] = 3; } else { if (gIsGamePaused == (u16) 1) { diff --git a/src/code_800029B0.c b/src/code_800029B0.c index b6e52112a..61720662b 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -18,12 +18,12 @@ #include "spawn_players.h" #include "staff_ghosts.h" #include "render_courses.h" +#include "main.h" extern u16 D_800DC5A8; extern s32 D_800DC510; extern u16 gNumSpawnedShells; -extern u16 D_80152308; extern s32 D_802BA038; extern s16 D_802BA048; @@ -147,7 +147,7 @@ void setup_race(void) { D_8015F8D0[0] = D_80164490->wayPointX; } } - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800CA008(gPlayerCountSelection1 - 1, gCurrentCourseId + 4); func_800CB2C4(); } diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 6b8126632..b63bc192d 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -435,7 +435,7 @@ s32 func_800061DC(Vec3f arg0, f32 arg1, s32 arg2) { break; } var_v1 = arg2; - if (D_800DC51C == 0) { + if (!gDemoMode) { var_a0 = gPlayerOne; for(var_a1 = 0; var_a1 < D_8018EDF3; var_a1++, var_a0++) { if (((var_a0->unk_000 & 0x4000) != 0) && ((var_a0->unk_000 & 0x1000) == 0)) { @@ -1902,7 +1902,7 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { } if (var_a1 != 1) { if (temp_f2 < var_f12) { - if ((D_800DC51C == (u16) 1) && (gCurrentCourseId != 0x0014)) { + if ((gDemoMode) && (gCurrentCourseId != 0x0014)) { func_80030FC8(player); return; } @@ -2035,7 +2035,7 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { temp_t2 = var_a1 * 8; temp_a3 = D_800DCBB4[gCurrentCourseId] + (temp_t2 * 2); if (arg2 == 0) { - if (D_800DC51C == (u16) 1) { + if (gDemoMode) { temp_a2 = D_80164450[arg0].unk2 - D_80164450[D_80164386].unk2; var_a1_2 = temp_a2; if (temp_a2 < 0) { @@ -4894,7 +4894,7 @@ void func_8000F124(void) { temp_v0->unk-2 = 0; phi_v0 = temp_v0; } while (temp_v0 != &D_8016334C); - if (D_800DC51C != 1) { + if (!gDemoMode) { phi_s1 = &D_80163348; phi_s0 = 0; if (gModeSelection == GRAND_PRIX) { @@ -5494,7 +5494,7 @@ void func_8000F628(void) { } while (temp_s3 < 8); D_801637BC.unk0 = 0; D_801637BC.unk2 = 0; - if (D_800DC51C == 0) { + if (!gDemoMode) { var_v0 = &D_80163344; var_s0_2 = 0; if (gModeSelection == GRAND_PRIX) { @@ -5582,7 +5582,7 @@ void func_8000F628(void) { if (D_8018EE08 == (s8) 1U) { var_s2_3 = &D_80163330; var_s0_4 = 0; - if (D_800DC51C == 1) { + if (gDemoMode) { do { if (var_s2_3->unk0 == 1) { temp_s1 = &gPlayers[var_s0_4]; @@ -7888,7 +7888,7 @@ void func_80014DE4(s32 arg0) { temp_v1 = temp_v0 + &D_80164678; *temp_v1 = *(&D_80164670 + temp_v0); temp_a1 = gModeSelection; - if ((temp_a1 != TIME_TRIALS) && ((gCupCourseSelection == CUP_COURSE_ONE) || (D_800DC51C == 1))) { + if ((temp_a1 != TIME_TRIALS) && ((gCupCourseSelection == CUP_COURSE_ONE) || (gDemoMode))) { goto block_8; } temp_a2 = *temp_v1; diff --git a/src/code_8001F980.c b/src/code_8001F980.c index 6cd5d2e45..ad6aeb5b9 100644 --- a/src/code_8001F980.c +++ b/src/code_8001F980.c @@ -31,7 +31,7 @@ void *D_800DDB5C[3] = { }; void func_8001F980(s32 *arg0, s32 *arg1) { - if ((D_800DC51C == 1) || (D_80164A28 != 0) || (D_8015F894 != 0)) { + if ((gDemoMode == 1) || (D_80164A28 != 0) || (D_8015F894 != 0)) { *arg0 = 0xAA; } else { *arg0 = 0; diff --git a/src/code_8001F980.h b/src/code_8001F980.h index 46f8fa291..ce16d2e0b 100644 --- a/src/code_8001F980.h +++ b/src/code_8001F980.h @@ -82,7 +82,7 @@ extern s32 D_8018D930[]; extern Gfx D_0D008C78[]; extern Gfx D_0D008D58[]; -extern u16 D_800DC51C; +extern u16 gDemoMode; extern s32 D_800DDB58; extern void *D_800DDB5C[]; extern Vtx *D_800DDBB4[]; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index a05c56e10..2c2456ce2 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -240,7 +240,7 @@ void func_800581C8(void) { func_80054BE8(0); return; } - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800532A4(0); } func_800588F4(0); @@ -252,7 +252,7 @@ void func_800582CC(void) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(1); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800532A4(1); } func_800588F4(1); @@ -263,7 +263,7 @@ void func_80058394(void) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[3]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(2); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800532A4(2); } func_800588F4(2); @@ -275,7 +275,7 @@ void func_8005845C(void) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[4]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(3); - if ((D_800DC51C == 0) && (gPlayerCountSelection1 == 4)) { + if ((!gDemoMode) && (gPlayerCountSelection1 == 4)) { func_800532A4(3); } func_800588F4(3); @@ -484,56 +484,56 @@ void func_80058C20(u32 arg0) { func_80058F48(); break; case 1: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059358(); break; } break; case 2: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800593F0(); break; } break; case 3: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800594F0(); break; } break; case 4: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059528(); break; } break; case 8: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800596A8(); break; } break; case 9: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059710(); break; } break; case 10: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059750(); break; } break; case 11: - if ((D_800DC51C == 0) && (gPlayerCountSelection1 == 4)) { + if ((!gDemoMode) && (gPlayerCountSelection1 == 4)) { func_800597B8(); } break; @@ -551,56 +551,56 @@ void func_80058DB4(u32 arg0) { func_80058F78(); break; case 1: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059360(); break; } break; case 2: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800593F8(); break; } break; case 3: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800594F8(); break; } break; case 4: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059530(); break; } break; case 8: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_800596D8(); break; } break; case 9: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059718(); break; } break; case 10: - if (D_800DC51C == 0) { + if (!gDemoMode) { func_80059780(); break; } break; case 11: - if ((D_800DC51C == 0) && (gPlayerCountSelection1 == 4)) { + if ((!gDemoMode) && (gPlayerCountSelection1 == 4)) { func_800597E8(); } break; @@ -617,7 +617,7 @@ void func_80058F48(void) { void func_80058F78(void) { if (D_801657B0 == 0) { func_80041EF4(); - if ((D_800DC51C == 0) && (D_8018D188 != 0) && (D_801657D8 == 0)) { + if ((!gDemoMode) && (D_8018D188 != 0) && (D_801657D8 == 0)) { func_8004E638(0); if (D_801657E4 != 2) { func_8004FA78(0); @@ -699,7 +699,7 @@ void func_800591B4(void) { if (D_801657F0 != 0) { func_800514BC(); } - if ((D_800DC51C == 0) && (D_801657E8 != 0)) { + if ((!gDemoMode) && (D_801657E8 != 0)) { if (D_80165800[0] != 0) { func_8004EE54(0); if (gModeSelection != BATTLE) { @@ -906,7 +906,7 @@ void func_8005995C(void) { void func_80059A88(s32 arg0) { func_80059820(arg0); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007A948(arg0); func_8007BB9C(arg0); } @@ -984,7 +984,7 @@ void func_80059D00(void) { if (D_8018D214 == 0) { func_80059820(0); func_8005B914(); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(0); } func_80078C70(0); @@ -1005,14 +1005,14 @@ void func_80059D00(void) { func_800598D4(1); func_80059820(0); func_8005D0FC(0); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(0); } func_80078C70(1); func_8005D1F4(0); func_80059820(1); func_8005D0FC(1); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(1); } func_80078C70(2); @@ -1024,14 +1024,14 @@ void func_80059D00(void) { func_800598D4(1); func_80059820(0); func_8005D0FC(0); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(0); } func_80078C70(3); func_8005D1F4(0); func_80059820(1); func_8005D0FC(1); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(1); } func_80078C70(4); @@ -1045,26 +1045,26 @@ void func_80059D00(void) { func_800598D4(3); func_80059820(0); func_8005D0FC(0); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(0); } func_8005D1F4(0); func_80059820(1); func_8005D0FC(1); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(1); } func_8005D1F4(1); func_80059820(2); func_8005D0FC(2); - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8007AA44(2); } func_8005D1F4(2); if (gPlayerCountSelection1 == 4) { func_80059820(3); func_8005D0FC(3); - if ((D_800DC51C == 0) && (gPlayerCountSelection1 == 4)) { + if ((!gDemoMode) && (gPlayerCountSelection1 == 4)) { func_8007AA44(3); } func_8005D1F4(3); @@ -1206,7 +1206,7 @@ void func_8005A3C0(void) { } else { D_801657F0 = 1; } - if (D_800DC51C != 0) { + if (gDemoMode) { D_801657F0 = 0; } } diff --git a/src/code_80057C60.h b/src/code_80057C60.h index 36139edd2..821271b1d 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -228,7 +228,7 @@ extern s8 D_801657B2; extern s8 D_801657C8; extern s32 D_8018D22C; extern s32 gGamestate; -extern u16 D_800DC51C; +extern u16 gDemoMode; extern s8 D_8018EDF3; extern s8 D_80165898; extern u16 D_8015F894; diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 26b2b3af9..4922e6048 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -34,7 +34,6 @@ void func_8006E9C0(void) { } void func_8006EA5C(void) { - s32 thing; func_8006EB10(); func_8006ED60(); bzero(D_8018CA70, D_8018CA70_SIZE * sizeof(struct_8018CA70_entry)); @@ -599,9 +598,6 @@ block_26: GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006F008.s") #endif -//#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -//void play_sound2(?); // extern extern u16 gIsGamePaused; extern s8 D_801657E4; extern s8 D_801657E6; @@ -634,9 +630,6 @@ void func_8006F824(s32 arg0) { play_sound2(SOUND_ACTION_PING); } } -//#else -//GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006F824.s") -//#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -702,7 +695,7 @@ void func_8006F8CC(void) { D_80165800.unk0 = D_80165832.unk0; D_80165800.unk1 = D_80165832.unk1; } - if (D_800DC51C != 0) { + if (gDemoMode) { D_801657F0 = 0; } } diff --git a/src/code_8008C1D0.c b/src/code_8008C1D0.c index 2fc4de216..e9153b511 100644 --- a/src/code_8008C1D0.c +++ b/src/code_8008C1D0.c @@ -334,7 +334,7 @@ void func_8008C8C4(Player* player, s8 arg1) { if ((D_80165460[arg1] == 1) && ((player->unk_000 & 0x4000) == 0x4000)) { player->unk_09C = (f32) (player->unk_09C + 100.0f); } - if ((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) == 0x1000) && (D_800DC51C == 0) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[arg1] != 0)) { + if ((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) == 0x1000) && (!gDemoMode) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[arg1] != 0)) { player->statusEffects = (s32) (player->statusEffects | 0x400000); } } @@ -1027,7 +1027,7 @@ void func_8008E6C0(Player *player, s8 arg1) player->unk_0E0 = 0; if (((player->unk_000 & 0x4000) == 0x4000) && ((player->unk_000 & 0x100) != 0x100)) { - if (((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) != 0)) && (D_800DC51C == 0)) { + if (((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) != 0)) && (!gDemoMode)) { func_800CA24C(arg1); } @@ -1035,7 +1035,7 @@ void func_8008E6C0(Player *player, s8 arg1) } func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005); - if (((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) != 0)) && (D_800DC51C == 0)) { + if (((gModeSelection == VERSUS) && ((player->unk_000 & 0x1000) != 0)) && (!gDemoMode)) { func_800CA24C(arg1); } func_800C9060(arg1, SOUND_ACTION_EXPLOSION); diff --git a/src/code_8008C1D0.h b/src/code_8008C1D0.h index 49f941d8d..52244d7fc 100644 --- a/src/code_8008C1D0.h +++ b/src/code_8008C1D0.h @@ -127,7 +127,7 @@ void func_800CB064(u8); /* This is where I'd put my static data, if I had any */ -extern u16 D_800DC51C; +extern u16 gDemoMode; extern f32 D_800E3710[]; extern f32 D_800E3730[]; extern f32 D_800E3750[]; @@ -136,7 +136,6 @@ extern f32 D_800E37B0[]; extern f32 D_800E3790[]; extern f32 D_800E37D0[]; extern f32 D_800E37F0[]; -extern u16 D_80152308; extern u16 D_8015F6F8; extern s16 D_80165190[4][8]; extern f32 D_80165280[]; diff --git a/src/code_80091440.c b/src/code_80091440.c index ed6c9e66a..61a42b180 100644 --- a/src/code_80091440.c +++ b/src/code_80091440.c @@ -1,5 +1,10 @@ #include "variables.h" #include "code_80091440.h" +#include "camera.h" +#include "math_util.h" +#include "main.h" +#include +#include "code_802AAA70.h" void func_80091440(s8 arg0) { if ((gPlayers[arg0].unk_044 & 0x800) == 0) { @@ -15,77 +20,51 @@ void func_800914A0(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-15-2022 -extern u32 D_8015F718; -static ? D_800E7080; /* unable to generate initializer */ -static ? D_800E708C; /* unable to generate initializer */ +extern u32 D_8015F718[3]; void func_800914E0(void) { - ? sp64; - ? sp58; - s32 sp48; + UNUSED Vec3f sp64 = {0.0f, -20.0f, 150.0f}; + UNUSED Vec3f sp58 = {0.0f, -6.0f, 4.0f}; + uintptr_t segment = SEGMENT_NUMBER2(D_8015F718[0]); + uintptr_t offset = SEGMENT_OFFSET(D_8015F718[0]); + Camera *camera = &cameras[0]; + struct ActorSpawnData *sp48 = (struct ActorSpawnData *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); + struct ActorSpawnData *tempData; + + s16 temp3 = (s16) D_80152308; + s16 temp2 = (s16) gPlayerOneCopy->unk_006; + s16 temp; f32 sp38; f32 sp34; f32 sp30; - Player **var_t1; - f32 temp_f12; - f32 temp_f14; - f32 temp_f16; - f32 temp_f4; - f32 temp_f8; - s16 temp_a0; - s16 temp_a0_2; - s16 temp_v0; - u16 temp_t0; - void *temp_v0_2; + camera->up[0] = 0; + camera->up[1] = 1; + camera->up[2] = 0; + + if(1) {} // waa? - sp64.unk0 = (s32) D_800E7080.unk0; - sp64.unk4 = (s32) D_800E7080.unk4; - sp64.unk8 = (s32) D_800E7080.unk8; - sp58.unk0 = (s32) D_800E708C.unk0; - sp58.unk4 = (s32) D_800E708C.unk4; - sp58.unk8 = (s32) D_800E708C.unk8; - temp_a0 = D_8015F718 & 0xFFFFFF; - var_t1 = &gPlayerOneCopy; - sp48 = gSegmentTable[(u32) D_8015F718 >> 0x18] + temp_a0 + 0x80000000; - temp_t0 = D_80152308; - temp_v0 = (s16) gPlayerOneCopy->unk_006 - temp_t0; - cameras->up[0] = 0.0f; - cameras->up[2] = 0.0f; - cameras->up[1] = 1.0f; - if (temp_v0 == 7) { - func_800914A0(temp_a0, 7); - goto block_5; - } - if (temp_v0 < 0xE) { - temp_a0_2 = temp_v0 + (s16) D_8015F6F8; - if (temp_a0_2 == 7) { - func_800914A0(temp_a0_2, 7); -block_5: - var_t1 = &gPlayerOneCopy; + temp = temp2 - temp3; + if (temp == 7) { + func_800914A0(); + } else if (temp < 14) { + temp += (s16) D_8015F6F8; + if (temp == 7) { + func_800914A0(); } } - temp_v0_2 = (temp_t0 * 8) + sp48; - temp_f8 = (f32) (temp_v0_2->unk0 + 0xA); - cameras->pos[0] = temp_f8; - temp_f16 = (f32) (temp_v0_2->unk2 + 7); - cameras->pos[1] = temp_f16; - temp_f4 = (f32) (temp_v0_2->unk4 - 0x14); - cameras->pos[2] = temp_f4; - cameras->lookAt[0] = (*var_t1)->pos[0]; - cameras->lookAt[1] = (*var_t1)->pos[1]; - cameras->lookAt[2] = (*var_t1)->pos[2]; - func_802ADDC8(&cameras->unk_54, 20.0f, temp_f8, temp_f16, temp_f4); - temp_f12 = cameras->lookAt[0] - cameras->pos[0]; - sp38 = temp_f12; - temp_f14 = cameras->lookAt[2] - cameras->pos[2]; - sp34 = cameras->lookAt[1] - cameras->pos[1]; - sp30 = temp_f14; - cameras->rot[1] = atan2s(temp_f12, temp_f14); - cameras->rot[0] = atan2s(sqrtf((sp38 * sp38) + (temp_f14 * temp_f14)), sp34); - cameras->rot[2] = 0; + tempData = sp48 + D_80152308; + + camera->pos[0] = (f32) (tempData->pos[0] + 10); + camera->pos[1] = (f32) (tempData->pos[1] + 7); + camera->pos[2] = (f32) (tempData->pos[2] - 20); + camera->lookAt[0] = gPlayerOneCopy->pos[0]; + camera->lookAt[1] = gPlayerOneCopy->pos[1]; + camera->lookAt[2] = gPlayerOneCopy->pos[2]; + func_802ADDC8(&camera->unk_54, 20.0f, camera->pos[0], camera->pos[1], camera->pos[2]); + sp38 = camera->lookAt[0] - camera->pos[0]; + sp34 = camera->lookAt[1] - camera->pos[1]; + sp30 = camera->lookAt[2] - camera->pos[2]; + camera->rot[1] = atan2s(sp38, sp30); + camera->rot[0] = atan2s(sqrtf((sp38 * sp38) + (sp30 * sp30)), sp34); + camera->rot[2] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091440/func_800914E0.s") -#endif diff --git a/src/code_80091440.h b/src/code_80091440.h index 557014f30..a0b6f42bc 100644 --- a/src/code_80091440.h +++ b/src/code_80091440.h @@ -4,5 +4,4 @@ void func_80091440(s8); void func_800914A0(); void func_800914E0(); -extern u16 D_80152308; extern u16 D_8015F6F8; diff --git a/src/code_80091750.c b/src/code_80091750.c index d7851340d..1467e1301 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -1428,7 +1428,7 @@ void func_80094C60(void) { add_8018D9E0_entry(4, 0, 0, 2); } add_8018D9E0_entry(5, 0, 0, 6); - D_800DC51C = 0; + gDemoMode = DEMO_MODE_INACTIVE; D_8018EE08 = 0; break; case MAIN_MENU: @@ -5504,7 +5504,7 @@ block_74: gMenuSelection -= 1; break; case 2: /* switch 3 */ - D_800DC51C = 1; + gDemoMode = DEMO_MODE_ACTIVE; D_8018EE08 = 1; gGamestateNext = 4; gCCSelection = (s32) 1; diff --git a/src/code_80280650.c b/src/code_80280650.c index a760c8861..894f44cb7 100644 --- a/src/code_80280650.c +++ b/src/code_80280650.c @@ -59,50 +59,42 @@ struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658 *arg0) { return temp_v0; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -static u16 D_80284E60 = 0; +extern u16 sRandomSeed16; // = 0; todo: import -u16 func_8028076C(void) { - s32 temp_a1; - s32 temp_t5; - s32 temp_t8; - s32 temp_v0; - u16 temp_t4; - u16 var_v0; +u16 random_u16_credits(void) { + u16 temp1, temp2; - var_v0 = D_80284E60; - if (var_v0 == 0x560A) { - D_80284E60 = 0; - var_v0 = 0 & 0xFFFF; + if (sRandomSeed16 == 22026) { + sRandomSeed16 = 0; } - temp_t8 = (var_v0 << 8) ^ var_v0; - temp_a1 = temp_t8 & 0xFF; - temp_t4 = (temp_a1 << 8) + ((s32) (temp_t8 & 0xFF00) >> 8); - temp_t5 = ((temp_a1 * 2) ^ temp_t4) & 0xFFFF; - D_80284E60 = temp_t4; - if (!(temp_t5 & 1)) { - temp_v0 = ((temp_t5 >> 1) ^ 0xFF80) & 0xFFFF; - if (temp_v0 == 0xAA55) { - D_80284E60 = 0; + + temp1 = (sRandomSeed16 & 0x00FF) << 8; + temp1 = temp1 ^ sRandomSeed16; + + sRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); + + temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16; + temp2 = (temp1 >> 1) ^ 0xFF80; + + if ((temp1 & 1) == 0) { + if (temp2 == 43605) { + sRandomSeed16 = 0; } else { - D_80284E60 = temp_v0 ^ 0x1FF4; + sRandomSeed16 = temp2 ^ 0x1FF4; } } else { - D_80284E60 = (temp_t5 >> 1) ^ 0xFF80 ^ 0x8180; + sRandomSeed16 = temp2 ^ 0x8180; } - return D_80284E60; -} -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028076C.s") -#endif -f32 func_8028080C(void) { - return func_8028076C() / 65536.0f; + return sRandomSeed16; +} + +f32 random_float_between_0_and_1(void) { + return random_u16_credits() / 65536.0f; } f32 func_80280850(f32 arg0) { - return (func_8028080C() * arg0) - (arg0 * 0.5f); + return (random_float_between_0_and_1() * arg0) - (arg0 * 0.5f); } void func_80280884(void) { @@ -309,8 +301,8 @@ void func_8028101C(s32 arg0, s32 arg1, s32 arg2) { temp_s0->unk10 = func_80280850(200.0f) + sp64; temp_s0->unk14 = func_80280850(380.0f) + sp60; temp_s0->unk18 = func_80280850(600.0f) + sp5C; - temp_s0->unk2C = (s16) (s32) (func_8028080C() * 7.0f); - temp_s0->unk30 = func_8028076C(); + temp_s0->unk2C = (s16) (s32) (random_float_between_0_and_1() * 7.0f); + temp_s0->unk30 = random_u16_credits(); temp_s0->unk32 = (s16) (s32) (func_80280850(400.0f) + 900.0f); var_s1 += 1; temp_s0->unk34 = (s16) (s32) (func_80280850(2000.0f) + D_80286B80); @@ -337,7 +329,7 @@ void func_8028118C(s32 arg0, s32 arg1, s32 arg2) { s32 temp_v1; struct UnkStruct_80280658 *temp_s0; - if (((f32) (D_802874BE + 0xD) * func_8028080C()) < 1.0f) { + if (((f32) (D_802874BE + 0xD) * random_float_between_0_and_1()) < 1.0f) { temp_s0 = func_80280734(&D_80284E70); temp_s0->unk10 = func_80280850(0.0f) + (f32) arg0; temp_s0->unk14 = func_80280850((f32) (D_802874C6 + 0x64)) + (f32) arg1; diff --git a/src/code_80280650.h b/src/code_80280650.h index 1a68c478c..7798a718d 100644 --- a/src/code_80280650.h +++ b/src/code_80280650.h @@ -71,8 +71,8 @@ void func_80280650(); void func_80280658(struct UnkStruct_80280658*); struct UnkStruct_80280658 *func_802806C8(); struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658*); -u16 func_8028076C(); -f32 func_8028080C(); +u16 random_u16_credits(); +f32 random_float_between_0_and_1(); f32 func_80280850(f32); void func_80280884(); void func_8028093C(struct UnkStruct_80280658*); diff --git a/src/code_802AAA70.c b/src/code_802AAA70.c index 8446e4c68..130e78584 100644 --- a/src/code_802AAA70.c +++ b/src/code_802AAA70.c @@ -1627,7 +1627,7 @@ s32 func_802AB6C4(void *, void *, f32, f32, f32, s32); // extern extern u8 D_8014F110; extern s32 D_8015F584; -s32 func_802ADDC8(void *arg0, void *arg1, f32 arg2, f32 arg3, f32 arg4) { +s32 func_802ADDC8(UnkActorInner *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { s16 temp_v0_4; s16 temp_v1; s32 temp_f4; diff --git a/src/main.c b/src/main.c index 292480c85..16a7aac6c 100644 --- a/src/main.c +++ b/src/main.c @@ -167,7 +167,7 @@ s32 gGamestate = 0xFFFF; u16 D_800DC510 = 0; u16 D_800DC514 = 0; u16 D_800DC518 = 0; -u16 D_800DC51C = 0; +u16 gDemoMode = DEMO_MODE_INACTIVE; u16 gEnableDebugMode = DEBUG_MODE; s32 gGamestateNext = 7; // = COURSE_DATA_MENU?; UNUSED s32 D_800DC528 = 1; diff --git a/src/main.h b/src/main.h index df1c0fb42..67e9c6dd4 100644 --- a/src/main.h +++ b/src/main.h @@ -71,6 +71,8 @@ extern struct Controller *gControllerOne; extern s32 D_800DC568; extern s32 D_800DC56C[]; +extern u16 D_80152308; + extern u32 gPhysicalFramebuffers[]; extern OSIoMesg gDmaIoMesg; extern OSMesg gMainReceivedMesg; diff --git a/src/menus.c b/src/menus.c index 3fa7bc395..ba13d65d1 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1201,9 +1201,9 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { gDebugMenuSelection = DEBUG_MENU_EXITED; if (controller->button & CONT_L) { - D_800DC51C = 1; + gDemoMode = DEMO_MODE_ACTIVE; } else { - D_800DC51C = 0; + gDemoMode = DEMO_MODE_INACTIVE; } if (controller->button & Z_TRIG) { diff --git a/src/race_logic.c b/src/race_logic.c index c76d2f602..bac610f32 100644 --- a/src/race_logic.c +++ b/src/race_logic.c @@ -67,7 +67,7 @@ extern u16 D_800DC5B8; extern s32 gMenuSelection; extern s8 D_8018EE08; -extern u16 D_800DC51C; +extern u16 gDemoMode; extern f32 D_80150118; extern u16 D_800DC518; extern u16 D_8015011E; @@ -539,7 +539,7 @@ void start_race(void) { s32 i; D_8015011E = -1; - if (D_800DC51C == 0) { + if (!gDemoMode) { func_8028EC98(gCurrentCourseId); } @@ -976,7 +976,7 @@ void func_8028FCBC(void) { } switch (D_800DC510) { case 0: - if (D_800DC51C == 0) { + if (!gDemoMode) { if (gModeSelection == GRAND_PRIX) { func_800C8EF8(11); play_sound2(SOUND_ACTION_REV_ENGINE); @@ -1040,7 +1040,7 @@ void func_8028FCBC(void) { func_8028F4E8(); break; case 2: - if (D_800DC51C) { + if (gDemoMode) { start_race(); } if ((gEnableDebugMode) && (gControllerFive->buttonPressed & Z_TRIG)) { diff --git a/src/spawn_players.c b/src/spawn_players.c index da4137fe8..85146900f 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -411,7 +411,7 @@ void func_80039DA4(void) { }; if (((gCupCourseSelection == CUP_COURSE_ONE) && (D_8016556E == 0)) || - (D_800DC51C == 1) || + (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_EXITED)) { for (i = 0; i < 8; i++) { D_80165270[i] = sp2C[i]; @@ -430,7 +430,7 @@ UNUSED s16 D_800E43A8 = 0; void func_80039F44(f32 *arg0, f32 *arg1, f32 arg2) { func_80039DA4(); if (((gCupCourseSelection == CUP_COURSE_ONE) && (D_8016556E == 0)) || - (D_800DC51C == 1) || + (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_EXITED)) { s16 rand; s16 i; @@ -455,7 +455,7 @@ void func_80039F44(f32 *arg0, f32 *arg1, f32 arg2) { } D_8016556E = 0; - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOneCopy, 0, arg0[D_80165270[0]], arg1[D_80165270[0]], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerTwo, 1, arg0[D_80165270[1]], arg1[D_80165270[1]], arg2, 32768.0f, D_80165560[0], PLAYER_EXISTS | PLAYER_CPU | PLAYER_START_SEQUENCE); spawn_player(gPlayerThree, 2, arg0[D_80165270[2]], arg1[D_80165270[2]], arg2, 32768.0f, D_80165560[1], PLAYER_EXISTS | PLAYER_CPU | PLAYER_START_SEQUENCE); @@ -485,7 +485,7 @@ void func_8003A59C(f32 *arg0, f32 *arg1, f32 arg2) { spawn_player(gPlayerSix, 5, arg0[4], arg1[4], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); spawn_player(gPlayerSeven, 6, arg0[5], arg1[5], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); spawn_player(gPlayerEight, 7, arg0[6], arg1[6], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOneCopy, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerTwo, 1, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); spawn_player(gPlayerThree, 2, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); @@ -520,7 +520,7 @@ void func_8003A59C(f32 *arg0, f32 *arg1, f32 arg2) { void func_8003A9F0(f32* arg0, f32* arg1, f32 arg2) { func_80039DA4(); - if ((gCupCourseSelection == CUP_COURSE_ONE) || (D_800DC51C == 1) || (gDebugMenuSelection == DEBUG_MENU_EXITED)) { + if ((gCupCourseSelection == CUP_COURSE_ONE) || (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_EXITED)) { s16 rand; s16 i; @@ -550,12 +550,12 @@ getRand: spawn_player(gPlayerSeven, 6, arg0[D_80165270[6]], arg1[D_80165270[6]], arg2, 32768.0f, D_80165560[4], PLAYER_EXISTS | PLAYER_CPU | PLAYER_START_SEQUENCE); spawn_player(gPlayerEight, 7, arg0[D_80165270[7]], arg1[D_80165270[7]], arg2, 32768.0f, D_80165560[5], PLAYER_EXISTS | PLAYER_CPU | PLAYER_START_SEQUENCE); - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOneCopy, 0, arg0[D_80165270[0]], arg1[D_80165270[0]], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); } else { spawn_player(gPlayerOneCopy, 0, arg0[D_80165270[0]], arg1[D_80165270[0]], arg2, 32768.0f, gCharacterSelections[0], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); } - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerTwo, 1, arg0[D_80165270[1]], arg1[D_80165270[1]], arg2, 32768.0f, gCharacterSelections[1], PLAYER_EXISTS | PLAYER_CPU | PLAYER_START_SEQUENCE); } else { spawn_player(gPlayerTwo, 1, arg0[D_80165270[1]], arg1[D_80165270[1]], arg2, 32768.0f, gCharacterSelections[1], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); @@ -572,12 +572,12 @@ void func_8003AE24(f32 *arg0, f32 *arg1, f32 arg2) { spawn_player(gPlayerSix, 5, arg0[4], arg1[4], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); spawn_player(gPlayerSeven, 6, arg0[5], arg1[5], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); spawn_player(gPlayerEight, 7, arg0[6], arg1[6], arg2, 32768.0f, gCharacterSelections[0], PLAYER_START_SEQUENCE | PLAYER_CPU); - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOneCopy, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); } else { spawn_player(gPlayerOneCopy, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); } - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_HUMAN_AND_CPU); } else { spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); @@ -608,7 +608,7 @@ void func_8003B318(f32 *arg0, f32 *arg1, f32 arg2) { spawn_player(gPlayerOne, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); spawn_player(gPlayerThree, 2, arg0[2], arg1[2], arg2, 32768.0f, gCharacterSelections[2], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOne, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerThree, 2, arg0[2], arg1[2], arg2, 32768.0f, gCharacterSelections[2], PLAYER_HUMAN_AND_CPU); @@ -647,7 +647,7 @@ void func_8003B870(f32 *arg0, f32 *arg1, f32 arg2) { spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); spawn_player(gPlayerThree, 2, arg0[2], arg1[2], arg2, 32768.0f, gCharacterSelections[2], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); spawn_player(gPlayerFour, 3, arg0[3], arg1[3], arg2, 32768.0f, gCharacterSelections[3], PLAYER_EXISTS | PLAYER_START_SEQUENCE | PLAYER_HUMAN); - if (D_800DC51C == 1) { + if (gDemoMode == 1) { spawn_player(gPlayerOne, 0, arg0[0], arg1[0], arg2, 32768.0f, gCharacterSelections[0], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerTwo, 1, arg0[1], arg1[1], arg2, 32768.0f, gCharacterSelections[1], PLAYER_HUMAN_AND_CPU); spawn_player(gPlayerThree, 2, arg0[2], arg1[2], arg2, 32768.0f, gCharacterSelections[2], PLAYER_HUMAN_AND_CPU); @@ -1048,7 +1048,7 @@ void func_8003D080(void) { } else { func_8003C0F0(); } - if (D_800DC51C == 0) { + if (!gDemoMode) { switch (gActiveScreenMode) { case SCREEN_MODE_1P: switch (gModeSelection) {