diff --git a/asm/assets/assets.s b/asm/assets/assets.s index 3f779c5f..e6ef54d6 100755 --- a/asm/assets/assets.s +++ b/asm/assets/assets.s @@ -5,8 +5,8 @@ /********** Asset Sections Table **********/ .word 50 # Number of entries in the table -.word ASSET_UNKNOWN_0 - ASSETS_START -.word ASSET_UNKNOWN_0_TABLE - ASSETS_START +.word ASSET_AI_BEHAVIOUR - ASSETS_START +.word ASSET_AI_BEHAVIOUR_TABLE - ASSETS_START .word ASSET_TEXTURES_3D - ASSETS_START .word ASSET_TEXTURES_3D_TABLE - ASSETS_START .word ASSET_TEXTURES_2D - ASSETS_START @@ -62,47 +62,47 @@ .balign 16 glabel ASSETS_START -/********** ASSET_UNKNOWN_0 **********/ +/********** ASSET_AI_BEHAVIOUR **********/ .balign 16 -glabel ASSET_UNKNOWN_0 -glabel ASSET_UNKNOWN_0_0 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_0.bin" -glabel ASSET_UNKNOWN_0_1 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_1.bin" -glabel ASSET_UNKNOWN_0_2 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_2.bin" -glabel ASSET_UNKNOWN_0_3 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_3.bin" -glabel ASSET_UNKNOWN_0_4 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_4.bin" -glabel ASSET_UNKNOWN_0_5 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_5.bin" -glabel ASSET_UNKNOWN_0_6 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_6.bin" -glabel ASSET_UNKNOWN_0_7 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_7.bin" -glabel ASSET_UNKNOWN_0_8 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_8.bin" -glabel ASSET_UNKNOWN_0_9 -.incbin "./build/us_1.0/assets/unknown_0/unknown_0_9.bin" -glabel ASSET_UNKNOWN_0_END +glabel ASSET_AI_BEHAVIOUR +glabel ASSET_AI_BEHAVIOUR_0 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_0.bin" +glabel ASSET_AI_BEHAVIOUR_1 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_1.bin" +glabel ASSET_AI_BEHAVIOUR_2 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_2.bin" +glabel ASSET_AI_BEHAVIOUR_3 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_3.bin" +glabel ASSET_AI_BEHAVIOUR_4 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_4.bin" +glabel ASSET_AI_BEHAVIOUR_5 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_5.bin" +glabel ASSET_AI_BEHAVIOUR_6 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_6.bin" +glabel ASSET_AI_BEHAVIOUR_7 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_7.bin" +glabel ASSET_AI_BEHAVIOUR_8 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_8.bin" +glabel ASSET_AI_BEHAVIOUR_9 +.incbin "./build/us_1.0/assets/ai-racers/unknown_0_9.bin" +glabel ASSET_AI_BEHAVIOUR_END -/********** ASSET_UNKNOWN_0_TABLE **********/ +/********** ASSET_AI_BEHAVIOUR_TABLE **********/ .balign 16 -glabel ASSET_UNKNOWN_0_TABLE -.word ASSET_UNKNOWN_0_0 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_1 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_2 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_3 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_4 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_5 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_6 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_7 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_8 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_9 - ASSET_UNKNOWN_0 -.word ASSET_UNKNOWN_0_END - ASSET_UNKNOWN_0 +glabel ASSET_AI_BEHAVIOUR_TABLE +.word ASSET_AI_BEHAVIOUR_0 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_1 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_2 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_3 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_4 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_5 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_6 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_7 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_8 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_9 - ASSET_AI_BEHAVIOUR +.word ASSET_AI_BEHAVIOUR_END - ASSET_AI_BEHAVIOUR .word 0xFFFFFFFF /********** ASSET_TEXTURES_3D **********/ diff --git a/asm/non_matchings/fade_transition/func_800C1EE8.s b/asm/non_matchings/fade_transition/func_800C1EE8.s index a19ba47d..1a91d327 100644 --- a/asm/non_matchings/fade_transition/func_800C1EE8.s +++ b/asm/non_matchings/fade_transition/func_800C1EE8.s @@ -208,8 +208,8 @@ glabel func_800C1EE8 /* 0C2E00 800C2200 1000000D */ b .L800C2238 /* 0C2E04 800C2204 8FBF004C */ lw $ra, 0x4c($sp) .L800C2208: -/* 0C2E08 800C2208 3C03800E */ lui $v1, %hi(sTransitionFlags) # $v1, 0x800e -/* 0C2E0C 800C220C 246331B4 */ addiu $v1, %lo(sTransitionFlags) # addiu $v1, $v1, 0x31b4 +/* 0C2E08 800C2208 3C03800E */ lui $v1, %hi(gTransitionEndTimer) # $v1, 0x800e +/* 0C2E0C 800C220C 246331B4 */ addiu $v1, %lo(gTransitionEndTimer) # addiu $v1, $v1, 0x31b4 /* 0C2E10 800C2210 94620000 */ lhu $v0, ($v1) /* 0C2E14 800C2214 3401FFFF */ li $at, 65535 /* 0C2E18 800C2218 10410006 */ beq $v0, $at, .L800C2234 diff --git a/asm/non_matchings/menu/func_80093D40.s b/asm/non_matchings/menu/func_80093D40.s index 41c9c49f..864abc1f 100644 --- a/asm/non_matchings/menu/func_80093D40.s +++ b/asm/non_matchings/menu/func_80093D40.s @@ -45,7 +45,7 @@ glabel func_80093D40 /* 0949DC 80093DDC 24120078 */ li $s2, 120 .L80093DE0: /* 0949E0 80093DE0 24040007 */ li $a0, 7 -/* 0949E4 80093DE4 0C0315B4 */ jal func_800C56D0 +/* 0949E4 80093DE4 0C0315B4 */ jal clear_dialogue_box_open_flag /* 0949E8 80093DE8 AFA80038 */ sw $t0, 0x38($sp) /* 0949EC 80093DEC 0C031525 */ jal assign_dialogue_box_id /* 0949F0 80093DF0 24040007 */ li $a0, 7 diff --git a/asm/non_matchings/menu/func_80094D28.s b/asm/non_matchings/menu/func_80094D28.s index 644e3331..69c0c13c 100644 --- a/asm/non_matchings/menu/func_80094D28.s +++ b/asm/non_matchings/menu/func_80094D28.s @@ -332,7 +332,7 @@ glabel L80095110 /* 095DC4 800951C4 100000F0 */ b .L80095588 /* 095DC8 800951C8 A047006E */ sb $a3, 0x6e($v0) glabel L800951CC -/* 095DCC 800951CC 0C0315B4 */ jal func_800C56D0 +/* 095DCC 800951CC 0C0315B4 */ jal clear_dialogue_box_open_flag /* 095DD0 800951D0 24040007 */ li $a0, 7 /* 095DD4 800951D4 0C031525 */ jal assign_dialogue_box_id /* 095DD8 800951D8 24040007 */ li $a0, 7 diff --git a/asm/non_matchings/menu/func_80096978.s b/asm/non_matchings/menu/func_80096978.s index 1a1cc576..600663b9 100644 --- a/asm/non_matchings/menu/func_80096978.s +++ b/asm/non_matchings/menu/func_80096978.s @@ -1,620 +1,620 @@ -glabel func_80096978 -/* 097578 80096978 27BDFF50 */ addiu $sp, $sp, -0xb0 -/* 09757C 8009697C E7B4002C */ swc1 $f20, 0x2c($sp) -/* 097580 80096980 4485A000 */ mtc1 $a1, $f20 -/* 097584 80096984 AFBF005C */ sw $ra, 0x5c($sp) -/* 097588 80096988 AFBE0058 */ sw $fp, 0x58($sp) -/* 09758C 8009698C AFB70054 */ sw $s7, 0x54($sp) -/* 097590 80096990 AFB60050 */ sw $s6, 0x50($sp) -/* 097594 80096994 AFB5004C */ sw $s5, 0x4c($sp) -/* 097598 80096998 AFB40048 */ sw $s4, 0x48($sp) -/* 09759C 8009699C AFB30044 */ sw $s3, 0x44($sp) -/* 0975A0 800969A0 AFB20040 */ sw $s2, 0x40($sp) -/* 0975A4 800969A4 AFB1003C */ sw $s1, 0x3c($sp) -/* 0975A8 800969A8 AFB00038 */ sw $s0, 0x38($sp) -/* 0975AC 800969AC E7B70030 */ swc1 $f23, 0x30($sp) -/* 0975B0 800969B0 E7B60034 */ swc1 $f22, 0x34($sp) -/* 0975B4 800969B4 E7B50028 */ swc1 $f21, 0x28($sp) -/* 0975B8 800969B8 0C01BAA4 */ jal get_settings -/* 0975BC 800969BC AFA400B0 */ sw $a0, 0xb0($sp) -/* 0975C0 800969C0 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 -/* 0975C4 800969C4 8DCE0300 */ lw $t6, %lo(osTvType)($t6) -/* 0975C8 800969C8 AFA20084 */ sw $v0, 0x84($sp) -/* 0975CC 800969CC 15C00002 */ bnez $t6, .L800969D8 -/* 0975D0 800969D0 00001825 */ move $v1, $zero -/* 0975D4 800969D4 2403000C */ li $v1, 12 -.L800969D8: -/* 0975D8 800969D8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 0975DC 800969DC 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 -/* 0975E0 800969E0 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 -/* 0975E4 800969E4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 0975E8 800969E8 0C019FCB */ jal set_ortho_matrix_view -/* 0975EC 800969EC AFA30098 */ sw $v1, 0x98($sp) -/* 0975F0 800969F0 44800000 */ mtc1 $zero, $f0 -/* 0975F4 800969F4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0975F8 800969F8 4600A03C */ c.lt.s $f20, $f0 -/* 0975FC 800969FC 00000000 */ nop -/* 097600 80096A00 45000002 */ bc1f .L80096A0C -/* 097604 80096A04 00000000 */ nop -/* 097608 80096A08 46000506 */ mov.s $f20, $f0 -.L80096A0C: -/* 09760C 80096A0C 44810000 */ mtc1 $at, $f0 -/* 097610 80096A10 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 097614 80096A14 4614003C */ c.lt.s $f0, $f20 -/* 097618 80096A18 44812000 */ mtc1 $at, $f4 -/* 09761C 80096A1C 45000002 */ bc1f .L80096A28 -/* 097620 80096A20 3C01437F */ li $at, 0x437F0000 # 255.000000 -/* 097624 80096A24 46000506 */ mov.s $f20, $f0 -.L80096A28: -/* 097628 80096A28 46142181 */ sub.s $f6, $f4, $f20 -/* 09762C 80096A2C 44814000 */ mtc1 $at, $f8 -/* 097630 80096A30 3C10800E */ lui $s0, %hi(sMenuGuiOpacity) # $s0, 0x800e -/* 097634 80096A34 46083282 */ mul.s $f10, $f6, $f8 -/* 097638 80096A38 2610F764 */ addiu $s0, %lo(sMenuGuiOpacity) # addiu $s0, $s0, -0x89c -/* 09763C 80096A3C 24040002 */ li $a0, 2 -/* 097640 80096A40 444FF800 */ cfc1 $t7, $31 -/* 097644 80096A44 00000000 */ nop -/* 097648 80096A48 35E10003 */ ori $at, $t7, 3 -/* 09764C 80096A4C 38210002 */ xori $at, $at, 2 -/* 097650 80096A50 44C1F800 */ ctc1 $at, $31 -/* 097654 80096A54 00000000 */ nop -/* 097658 80096A58 46005424 */ cvt.w.s $f16, $f10 -/* 09765C 80096A5C 44188000 */ mfc1 $t8, $f16 -/* 097660 80096A60 44CFF800 */ ctc1 $t7, $31 -/* 097664 80096A64 0C0310BB */ jal set_text_font -/* 097668 80096A68 AE180000 */ sw $t8, ($s0) -/* 09766C 80096A6C 00002025 */ move $a0, $zero -/* 097670 80096A70 00002825 */ move $a1, $zero -/* 097674 80096A74 00003025 */ move $a2, $zero -/* 097678 80096A78 0C0310F3 */ jal set_text_background_colour -/* 09767C 80096A7C 00003825 */ move $a3, $zero -/* 097680 80096A80 8E190000 */ lw $t9, ($s0) -/* 097684 80096A84 240400FF */ li $a0, 255 -/* 097688 80096A88 240500FF */ li $a1, 255 -/* 09768C 80096A8C 240600FF */ li $a2, 255 -/* 097690 80096A90 00003825 */ move $a3, $zero -/* 097694 80096A94 0C0310E1 */ jal set_text_colour -/* 097698 80096A98 AFB90010 */ sw $t9, 0x10($sp) -/* 09769C 80096A9C 3C08800E */ lui $t0, %hi(gMenuText) # $t0, 0x800e -/* 0976A0 80096AA0 8D08F4A0 */ lw $t0, %lo(gMenuText)($t0) -/* 0976A4 80096AA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 0976A8 80096AA8 2409000C */ li $t1, 12 -/* 0976AC 80096AAC 8D070084 */ lw $a3, 0x84($t0) -/* 0976B0 80096AB0 AFA90010 */ sw $t1, 0x10($sp) -/* 0976B4 80096AB4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 0976B8 80096AB8 24058000 */ li $a1, -32768 -/* 0976BC 80096ABC 0C031110 */ jal draw_text -/* 0976C0 80096AC0 24060022 */ li $a2, 34 -/* 0976C4 80096AC4 240A00FF */ li $t2, 255 -/* 0976C8 80096AC8 AE0A0000 */ sw $t2, ($s0) -/* 0976CC 80096ACC 3C02800E */ lui $v0, %hi(gNumberOfActivePlayers) # $v0, 0x800e -/* 0976D0 80096AD0 8C42F4BC */ lw $v0, %lo(gNumberOfActivePlayers)($v0) -/* 0976D4 80096AD4 240D00A0 */ li $t5, 160 -/* 0976D8 80096AD8 244BFFFF */ addiu $t3, $v0, -1 -/* 0976DC 80096ADC 000B6140 */ sll $t4, $t3, 5 -/* 0976E0 80096AE0 01ACA823 */ subu $s5, $t5, $t4 -/* 0976E4 80096AE4 AFB500A4 */ sw $s5, 0xa4($sp) -/* 0976E8 80096AE8 1840003A */ blez $v0, .L80096BD4 -/* 0976EC 80096AEC 0000B025 */ move $s6, $zero -/* 0976F0 80096AF0 3C014370 */ li $at, 0x43700000 # 240.000000 -/* 0976F4 80096AF4 44819000 */ mtc1 $at, $f18 -/* 0976F8 80096AF8 24190036 */ li $t9, 54 -/* 0976FC 80096AFC 46149102 */ mul.s $f4, $f18, $f20 -/* 097700 80096B00 3C12800E */ lui $s2, %hi(gRacerPortraits) # $s2, 0x800e -/* 097704 80096B04 8FB00084 */ lw $s0, 0x84($sp) -/* 097708 80096B08 26520AF0 */ addiu $s2, %lo(gRacerPortraits) # addiu $s2, $s2, 0xaf0 -/* 09770C 80096B0C 444FF800 */ cfc1 $t7, $31 -/* 097710 80096B10 2413017F */ li $s3, 383 -/* 097714 80096B14 35E10003 */ ori $at, $t7, 3 -/* 097718 80096B18 38210002 */ xori $at, $at, 2 -/* 09771C 80096B1C 44C1F800 */ ctc1 $at, $31 -/* 097720 80096B20 00000000 */ nop -/* 097724 80096B24 460021A4 */ cvt.w.s $f6, $f4 -/* 097728 80096B28 44183000 */ mfc1 $t8, $f6 -/* 09772C 80096B2C 44CFF800 */ ctc1 $t7, $31 -/* 097730 80096B30 03388823 */ subu $s1, $t9, $t8 -/* 097734 80096B34 00000000 */ nop -.L80096B38: -/* 097738 80096B38 8208005A */ lb $t0, 0x5a($s0) -/* 09773C 80096B3C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 097740 80096B40 1500000E */ bnez $t0, .L80096B7C -/* 097744 80096B44 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 097748 80096B48 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 -/* 09774C 80096B4C 8C4263BC */ lw $v0, %lo(gOptionBlinkTimer)($v0) -/* 097750 80096B50 00000000 */ nop -/* 097754 80096B54 28410020 */ slti $at, $v0, 0x20 -/* 097758 80096B58 10200005 */ beqz $at, .L80096B70 -/* 09775C 80096B5C 00025880 */ sll $t3, $v0, 2 -/* 097760 80096B60 00024880 */ sll $t1, $v0, 2 -/* 097764 80096B64 252A0080 */ addiu $t2, $t1, 0x80 -/* 097768 80096B68 10000006 */ b .L80096B84 -/* 09776C 80096B6C AFAA00A0 */ sw $t2, 0xa0($sp) -.L80096B70: -/* 097770 80096B70 026B6823 */ subu $t5, $s3, $t3 -/* 097774 80096B74 10000003 */ b .L80096B84 -/* 097778 80096B78 AFAD00A0 */ sw $t5, 0xa0($sp) -.L80096B7C: -/* 09777C 80096B7C 240C00FF */ li $t4, 255 -/* 097780 80096B80 AFAC00A0 */ sw $t4, 0xa0($sp) -.L80096B84: -/* 097784 80096B84 820E0059 */ lb $t6, 0x59($s0) -/* 097788 80096B88 93A200A3 */ lbu $v0, 0xa3($sp) -/* 09778C 80096B8C 000E7880 */ sll $t7, $t6, 2 -/* 097790 80096B90 024FC821 */ addu $t9, $s2, $t7 -/* 097794 80096B94 8F250000 */ lw $a1, ($t9) -/* 097798 80096B98 241800FF */ li $t8, 255 -/* 09779C 80096B9C AFB8001C */ sw $t8, 0x1c($sp) -/* 0977A0 80096BA0 26A6FFEC */ addiu $a2, $s5, -0x14 -/* 0977A4 80096BA4 02203825 */ move $a3, $s1 -/* 0977A8 80096BA8 AFA20018 */ sw $v0, 0x18($sp) -/* 0977AC 80096BAC AFA20014 */ sw $v0, 0x14($sp) -/* 0977B0 80096BB0 0C01E2AE */ jal render_textured_rectangle -/* 0977B4 80096BB4 AFA20010 */ sw $v0, 0x10($sp) -/* 0977B8 80096BB8 3C08800E */ lui $t0, %hi(gNumberOfActivePlayers) # $t0, 0x800e -/* 0977BC 80096BBC 8D08F4BC */ lw $t0, %lo(gNumberOfActivePlayers)($t0) -/* 0977C0 80096BC0 26D60001 */ addiu $s6, $s6, 1 -/* 0977C4 80096BC4 02C8082A */ slt $at, $s6, $t0 -/* 0977C8 80096BC8 26100018 */ addiu $s0, $s0, 0x18 -/* 0977CC 80096BCC 1420FFDA */ bnez $at, .L80096B38 -/* 0977D0 80096BD0 26B50040 */ addiu $s5, $s5, 0x40 -.L80096BD4: -/* 0977D4 80096BD4 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 0977D8 80096BD8 44814000 */ mtc1 $at, $f8 -/* 0977DC 80096BDC 8FAB00A4 */ lw $t3, 0xa4($sp) -/* 0977E0 80096BE0 46144282 */ mul.s $f10, $f8, $f20 -/* 0977E4 80096BE4 00002025 */ move $a0, $zero -/* 0977E8 80096BE8 4449F800 */ cfc1 $t1, $31 -/* 0977EC 80096BEC 00000000 */ nop -/* 0977F0 80096BF0 35210003 */ ori $at, $t1, 3 -/* 0977F4 80096BF4 38210002 */ xori $at, $at, 2 -/* 0977F8 80096BF8 44C1F800 */ ctc1 $at, $31 -/* 0977FC 80096BFC 00000000 */ nop -/* 097800 80096C00 46005424 */ cvt.w.s $f16, $f10 -/* 097804 80096C04 440A8000 */ mfc1 $t2, $f16 -/* 097808 80096C08 44C9F800 */ ctc1 $t1, $31 -/* 09780C 80096C0C 014B6821 */ addu $t5, $t2, $t3 -/* 097810 80096C10 0C0310BB */ jal set_text_font -/* 097814 80096C14 AFAD00A4 */ sw $t5, 0xa4($sp) -/* 097818 80096C18 8FA30098 */ lw $v1, 0x98($sp) -/* 09781C 80096C1C 8FA200A4 */ lw $v0, 0xa4($sp) -/* 097820 80096C20 24630068 */ addiu $v1, $v1, 0x68 -/* 097824 80096C24 3C0F800E */ lui $t7, %hi(gRacePlacementsArray) # $t7, 0x800e -/* 097828 80096C28 3C014140 */ li $at, 0x41400000 # 12.000000 -/* 09782C 80096C2C 240C0068 */ li $t4, 104 -/* 097830 80096C30 25EF0BCC */ addiu $t7, %lo(gRacePlacementsArray) # addiu $t7, $t7, 0xbcc -/* 097834 80096C34 246E0004 */ addiu $t6, $v1, 4 -/* 097838 80096C38 24790002 */ addiu $t9, $v1, 2 -/* 09783C 80096C3C 241800FF */ li $t8, 255 -/* 097840 80096C40 3C13800E */ lui $s3, %hi(gMenuImageStack) # $s3, 0x800e -/* 097844 80096C44 2448FFDE */ addiu $t0, $v0, -0x22 -/* 097848 80096C48 2449FFE0 */ addiu $t1, $v0, -0x20 -/* 09784C 80096C4C 4481A000 */ mtc1 $at, $f20 -/* 097850 80096C50 AFAC00A8 */ sw $t4, 0xa8($sp) -/* 097854 80096C54 AFA90064 */ sw $t1, 0x64($sp) -/* 097858 80096C58 AFA80068 */ sw $t0, 0x68($sp) -/* 09785C 80096C5C 2673F75C */ addiu $s3, %lo(gMenuImageStack) # addiu $s3, $s3, -0x8a4 -/* 097860 80096C60 AFB80070 */ sw $t8, 0x70($sp) -/* 097864 80096C64 AFB90074 */ sw $t9, 0x74($sp) -/* 097868 80096C68 AFAE007C */ sw $t6, 0x7c($sp) -/* 09786C 80096C6C AFAF0078 */ sw $t7, 0x78($sp) -/* 097870 80096C70 AFA000A0 */ sw $zero, 0xa0($sp) -/* 097874 80096C74 241E000A */ li $fp, 10 -/* 097878 80096C78 24170064 */ li $s7, 100 -.L80096C7C: -/* 09787C 80096C7C 8FB500A4 */ lw $s5, 0xa4($sp) -/* 097880 80096C80 240A00FF */ li $t2, 255 -/* 097884 80096C84 AFAA0010 */ sw $t2, 0x10($sp) -/* 097888 80096C88 00002025 */ move $a0, $zero -/* 09788C 80096C8C 00002825 */ move $a1, $zero -/* 097890 80096C90 00003025 */ move $a2, $zero -/* 097894 80096C94 240700FF */ li $a3, 255 -/* 097898 80096C98 0C0310E1 */ jal set_text_colour -/* 09789C 80096C9C 0000B025 */ move $s6, $zero -/* 0978A0 80096CA0 8FAB0078 */ lw $t3, 0x78($sp) -/* 0978A4 80096CA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 0978A8 80096CA8 8FA50064 */ lw $a1, 0x64($sp) -/* 0978AC 80096CAC 8FA6007C */ lw $a2, 0x7c($sp) -/* 0978B0 80096CB0 240D000C */ li $t5, 12 -/* 0978B4 80096CB4 8D670000 */ lw $a3, ($t3) -/* 0978B8 80096CB8 AFAD0010 */ sw $t5, 0x10($sp) -/* 0978BC 80096CBC 0C031110 */ jal draw_text -/* 0978C0 80096CC0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 0978C4 80096CC4 240C00FF */ li $t4, 255 -/* 0978C8 80096CC8 AFAC0010 */ sw $t4, 0x10($sp) -/* 0978CC 80096CCC 240400FF */ li $a0, 255 -/* 0978D0 80096CD0 240500FF */ li $a1, 255 -/* 0978D4 80096CD4 240600C0 */ li $a2, 192 -/* 0978D8 80096CD8 0C0310E1 */ jal set_text_colour -/* 0978DC 80096CDC 24070060 */ li $a3, 96 -/* 0978E0 80096CE0 8FAE0078 */ lw $t6, 0x78($sp) -/* 0978E4 80096CE4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 0978E8 80096CE8 8FA50068 */ lw $a1, 0x68($sp) -/* 0978EC 80096CEC 8FA60074 */ lw $a2, 0x74($sp) -/* 0978F0 80096CF0 240F000C */ li $t7, 12 -/* 0978F4 80096CF4 8DC70000 */ lw $a3, ($t6) -/* 0978F8 80096CF8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0978FC 80096CFC 0C031110 */ jal draw_text -/* 097900 80096D00 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 097904 80096D04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 -/* 097908 80096D08 0C01ECF4 */ jal reset_render_settings -/* 09790C 80096D0C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 -/* 097910 80096D10 0C01A142 */ jal func_80068508 -/* 097914 80096D14 24040001 */ li $a0, 1 -/* 097918 80096D18 0C01EFC7 */ jal func_8007BF1C -/* 09791C 80096D1C 00002025 */ move $a0, $zero -/* 097920 80096D20 240200FF */ li $v0, 255 -/* 097924 80096D24 3C01800E */ lui $at, %hi(sMenuGuiColourR) # $at, 0x800e -/* 097928 80096D28 8FB90070 */ lw $t9, 0x70($sp) -/* 09792C 80096D2C A022F4A4 */ sb $v0, %lo(sMenuGuiColourR)($at) -/* 097930 80096D30 3C01800E */ lui $at, %hi(sMenuGuiColourG) # $at, 0x800e -/* 097934 80096D34 A039F4A8 */ sb $t9, %lo(sMenuGuiColourG)($at) -/* 097938 80096D38 3C01800E */ lui $at, %hi(sMenuGuiColourB) # $at, 0x800e -/* 09793C 80096D3C 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e -/* 097940 80096D40 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8) -/* 097944 80096D44 A022F4AC */ sb $v0, %lo(sMenuGuiColourB)($at) -/* 097948 80096D48 3C01800E */ lui $at, %hi(D_800DF4B0) # $at, 0x800e -/* 09794C 80096D4C 1B00006E */ blez $t8, .L80096F08 -/* 097950 80096D50 A022F4B0 */ sb $v0, %lo(D_800DF4B0)($at) -/* 097954 80096D54 8FAB00A8 */ lw $t3, 0xa8($sp) -/* 097958 80096D58 240D0078 */ li $t5, 120 -/* 09795C 80096D5C 8FA900A0 */ lw $t1, 0xa0($sp) -/* 097960 80096D60 01AB6023 */ subu $t4, $t5, $t3 -/* 097964 80096D64 448C9000 */ mtc1 $t4, $f18 -/* 097968 80096D68 8FA80084 */ lw $t0, 0x84($sp) -/* 09796C 80096D6C 00095040 */ sll $t2, $t1, 1 -/* 097970 80096D70 468095A0 */ cvt.s.w $f22, $f18 -/* 097974 80096D74 010AA021 */ addu $s4, $t0, $t2 -.L80096D78: -/* 097978 80096D78 9691005C */ lhu $s1, 0x5c($s4) -/* 09797C 80096D7C 240200FF */ li $v0, 255 -/* 097980 80096D80 2A2103E8 */ slti $at, $s1, 0x3e8 -/* 097984 80096D84 14200002 */ bnez $at, .L80096D90 -/* 097988 80096D88 26B8FF54 */ addiu $t8, $s5, -0xac -/* 09798C 80096D8C 241103E7 */ li $s1, 999 -.L80096D90: -/* 097990 80096D90 0237001A */ div $zero, $s1, $s7 -/* 097994 80096D94 8E790000 */ lw $t9, ($s3) -/* 097998 80096D98 16E00002 */ bnez $s7, .L80096DA4 -/* 09799C 80096D9C 00000000 */ nop -/* 0979A0 80096DA0 0007000D */ break 7 -.L80096DA4: -/* 0979A4 80096DA4 2401FFFF */ li $at, -1 -/* 0979A8 80096DA8 16E10004 */ bne $s7, $at, .L80096DBC -/* 0979AC 80096DAC 3C018000 */ lui $at, 0x8000 -/* 0979B0 80096DB0 16210002 */ bne $s1, $at, .L80096DBC -/* 0979B4 80096DB4 00000000 */ nop -/* 0979B8 80096DB8 0006000D */ break 6 -.L80096DBC: -/* 0979BC 80096DBC E7360010 */ swc1 $f22, 0x10($t9) -/* 0979C0 80096DC0 00001012 */ mflo $v0 -/* 0979C4 80096DC4 00402825 */ move $a1, $v0 -/* 0979C8 80096DC8 00000000 */ nop -/* 0979CC 80096DCC 00570019 */ multu $v0, $s7 -/* 0979D0 80096DD0 00007012 */ mflo $t6 -/* 0979D4 80096DD4 022E8823 */ subu $s1, $s1, $t6 -/* 0979D8 80096DD8 00000000 */ nop -/* 0979DC 80096DDC 023E001A */ div $zero, $s1, $fp -/* 0979E0 80096DE0 17C00002 */ bnez $fp, .L80096DEC -/* 0979E4 80096DE4 00000000 */ nop -/* 0979E8 80096DE8 0007000D */ break 7 -.L80096DEC: -/* 0979EC 80096DEC 2401FFFF */ li $at, -1 -/* 0979F0 80096DF0 17C10004 */ bne $fp, $at, .L80096E04 -/* 0979F4 80096DF4 3C018000 */ lui $at, 0x8000 -/* 0979F8 80096DF8 16210002 */ bne $s1, $at, .L80096E04 -/* 0979FC 80096DFC 00000000 */ nop -/* 097A00 80096E00 0006000D */ break 6 -.L80096E04: -/* 097A04 80096E04 00001812 */ mflo $v1 -/* 097A08 80096E08 00609025 */ move $s2, $v1 -/* 097A0C 80096E0C 00000000 */ nop -/* 097A10 80096E10 007E0019 */ multu $v1, $fp -/* 097A14 80096E14 00007812 */ mflo $t7 -/* 097A18 80096E18 022F8823 */ subu $s1, $s1, $t7 -/* 097A1C 80096E1C 18A00019 */ blez $a1, .L80096E84 -/* 097A20 80096E20 00000000 */ nop -/* 097A24 80096E24 44982000 */ mtc1 $t8, $f4 -/* 097A28 80096E28 8E690000 */ lw $t1, ($s3) -/* 097A2C 80096E2C 468021A0 */ cvt.s.w $f6, $f4 -/* 097A30 80096E30 00002025 */ move $a0, $zero -/* 097A34 80096E34 E526000C */ swc1 $f6, 0xc($t1) -/* 097A38 80096E38 8E680000 */ lw $t0, ($s3) -/* 097A3C 80096E3C 0C027298 */ jal func_8009CA60 -/* 097A40 80096E40 A5050018 */ sh $a1, 0x18($t0) -/* 097A44 80096E44 8E700000 */ lw $s0, ($s3) -/* 097A48 80096E48 00002025 */ move $a0, $zero -/* 097A4C 80096E4C C608000C */ lwc1 $f8, 0xc($s0) -/* 097A50 80096E50 00000000 */ nop -/* 097A54 80096E54 46144280 */ add.s $f10, $f8, $f20 -/* 097A58 80096E58 E60A000C */ swc1 $f10, 0xc($s0) -/* 097A5C 80096E5C 8E6A0000 */ lw $t2, ($s3) -/* 097A60 80096E60 0C027298 */ jal func_8009CA60 -/* 097A64 80096E64 A5520018 */ sh $s2, 0x18($t2) -/* 097A68 80096E68 8E700000 */ lw $s0, ($s3) -/* 097A6C 80096E6C 00000000 */ nop -/* 097A70 80096E70 C610000C */ lwc1 $f16, 0xc($s0) -/* 097A74 80096E74 00000000 */ nop -/* 097A78 80096E78 46148480 */ add.s $f18, $f16, $f20 -/* 097A7C 80096E7C 10000017 */ b .L80096EDC -/* 097A80 80096E80 E612000C */ swc1 $f18, 0xc($s0) -.L80096E84: -/* 097A84 80096E84 1A400011 */ blez $s2, .L80096ECC -/* 097A88 80096E88 26AEFF60 */ addiu $t6, $s5, -0xa0 -/* 097A8C 80096E8C 26ADFF5A */ addiu $t5, $s5, -0xa6 -/* 097A90 80096E90 448D2000 */ mtc1 $t5, $f4 -/* 097A94 80096E94 8E6B0000 */ lw $t3, ($s3) -/* 097A98 80096E98 468021A0 */ cvt.s.w $f6, $f4 -/* 097A9C 80096E9C 00002025 */ move $a0, $zero -/* 097AA0 80096EA0 E566000C */ swc1 $f6, 0xc($t3) -/* 097AA4 80096EA4 8E6C0000 */ lw $t4, ($s3) -/* 097AA8 80096EA8 0C027298 */ jal func_8009CA60 -/* 097AAC 80096EAC A5920018 */ sh $s2, 0x18($t4) -/* 097AB0 80096EB0 8E700000 */ lw $s0, ($s3) -/* 097AB4 80096EB4 00000000 */ nop -/* 097AB8 80096EB8 C608000C */ lwc1 $f8, 0xc($s0) -/* 097ABC 80096EBC 00000000 */ nop -/* 097AC0 80096EC0 46144280 */ add.s $f10, $f8, $f20 -/* 097AC4 80096EC4 10000005 */ b .L80096EDC -/* 097AC8 80096EC8 E60A000C */ swc1 $f10, 0xc($s0) -.L80096ECC: -/* 097ACC 80096ECC 448E8000 */ mtc1 $t6, $f16 -/* 097AD0 80096ED0 8E6F0000 */ lw $t7, ($s3) -/* 097AD4 80096ED4 468084A0 */ cvt.s.w $f18, $f16 -/* 097AD8 80096ED8 E5F2000C */ swc1 $f18, 0xc($t7) -.L80096EDC: -/* 097ADC 80096EDC 8E790000 */ lw $t9, ($s3) -/* 097AE0 80096EE0 00002025 */ move $a0, $zero -/* 097AE4 80096EE4 0C027298 */ jal func_8009CA60 -/* 097AE8 80096EE8 A7310018 */ sh $s1, 0x18($t9) -/* 097AEC 80096EEC 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e -/* 097AF0 80096EF0 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8) -/* 097AF4 80096EF4 26D60001 */ addiu $s6, $s6, 1 -/* 097AF8 80096EF8 02D8082A */ slt $at, $s6, $t8 -/* 097AFC 80096EFC 26940018 */ addiu $s4, $s4, 0x18 -/* 097B00 80096F00 1420FF9D */ bnez $at, .L80096D78 -/* 097B04 80096F04 26B50040 */ addiu $s5, $s5, 0x40 -.L80096F08: -/* 097B08 80096F08 8FA900A8 */ lw $t1, 0xa8($sp) -/* 097B0C 80096F0C 8FAA007C */ lw $t2, 0x7c($sp) -/* 097B10 80096F10 8FAB0074 */ lw $t3, 0x74($sp) -/* 097B14 80096F14 25280011 */ addiu $t0, $t1, 0x11 -/* 097B18 80096F18 254D0011 */ addiu $t5, $t2, 0x11 -/* 097B1C 80096F1C 256C0011 */ addiu $t4, $t3, 0x11 -/* 097B20 80096F20 AFAC0074 */ sw $t4, 0x74($sp) -/* 097B24 80096F24 AFAD007C */ sw $t5, 0x7c($sp) -/* 097B28 80096F28 AFA800A8 */ sw $t0, 0xa8($sp) -/* 097B2C 80096F2C 0C01A142 */ jal func_80068508 -/* 097B30 80096F30 00002025 */ move $a0, $zero -/* 097B34 80096F34 0C01EFC7 */ jal func_8007BF1C -/* 097B38 80096F38 24040001 */ li $a0, 1 -/* 097B3C 80096F3C 240E00FF */ li $t6, 255 -/* 097B40 80096F40 3C01800E */ lui $at, %hi(sMenuGuiColourG) # $at, 0x800e -/* 097B44 80096F44 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 097B48 80096F48 A02EF4A8 */ sb $t6, %lo(sMenuGuiColourG)($at) -/* 097B4C 80096F4C 8FB80078 */ lw $t8, 0x78($sp) -/* 097B50 80096F50 8FA80070 */ lw $t0, 0x70($sp) -/* 097B54 80096F54 3C01800E */ lui $at, %hi(D_800DF4B0) # $at, 0x800e -/* 097B58 80096F58 A020F4B0 */ sb $zero, %lo(D_800DF4B0)($at) -/* 097B5C 80096F5C 25F90001 */ addiu $t9, $t7, 1 -/* 097B60 80096F60 2B210004 */ slti $at, $t9, 4 -/* 097B64 80096F64 27090004 */ addiu $t1, $t8, 4 -/* 097B68 80096F68 250AFFC0 */ addiu $t2, $t0, -0x40 -/* 097B6C 80096F6C AFAA0070 */ sw $t2, 0x70($sp) -/* 097B70 80096F70 AFA90078 */ sw $t1, 0x78($sp) -/* 097B74 80096F74 1420FF41 */ bnez $at, .L80096C7C -/* 097B78 80096F78 AFB900A0 */ sw $t9, 0xa0($sp) -/* 097B7C 80096F7C 3C0D8012 */ lui $t5, %hi(gMenuOptionCount) # $t5, 0x8012 -/* 097B80 80096F80 8DAD63E0 */ lw $t5, %lo(gMenuOptionCount)($t5) -/* 097B84 80096F84 3C118012 */ lui $s1, %hi(gResultOptionCount) # $s1, 0x8012 -/* 097B88 80096F88 19A000B7 */ blez $t5, .L80097268 -/* 097B8C 80096F8C 26316C14 */ addiu $s1, %lo(gResultOptionCount) # addiu $s1, $s1, 0x6c14 -/* 097B90 80096F90 8E2B0000 */ lw $t3, ($s1) -/* 097B94 80096F94 24040007 */ li $a0, 7 -/* 097B98 80096F98 000B60C0 */ sll $t4, $t3, 3 -/* 097B9C 80096F9C 0C0315B4 */ jal func_800C56D0 -/* 097BA0 80096FA0 AFAC00A8 */ sw $t4, 0xa8($sp) -/* 097BA4 80096FA4 0C031525 */ jal assign_dialogue_box_id -/* 097BA8 80096FA8 24040007 */ li $a0, 7 -/* 097BAC 80096FAC 8FA20098 */ lw $v0, 0x98($sp) -/* 097BB0 80096FB0 8FAE00A8 */ lw $t6, 0xa8($sp) -/* 097BB4 80096FB4 24040007 */ li $a0, 7 -/* 097BB8 80096FB8 01C27821 */ addu $t7, $t6, $v0 -/* 097BBC 80096FBC 25F800CC */ addiu $t8, $t7, 0xcc -/* 097BC0 80096FC0 004E3023 */ subu $a2, $v0, $t6 -/* 097BC4 80096FC4 24C600C4 */ addiu $a2, $a2, 0xc4 -/* 097BC8 80096FC8 AFB80010 */ sw $t8, 0x10($sp) -/* 097BCC 80096FCC 24050050 */ li $a1, 80 -/* 097BD0 80096FD0 0C0313B7 */ jal set_current_dialogue_box_coords -/* 097BD4 80096FD4 240700F0 */ li $a3, 240 -/* 097BD8 80096FD8 24040007 */ li $a0, 7 -/* 097BDC 80096FDC 24050040 */ li $a1, 64 -/* 097BE0 80096FE0 24060040 */ li $a2, 64 -/* 097BE4 80096FE4 240700FF */ li $a3, 255 -/* 097BE8 80096FE8 0C0313EF */ jal set_current_dialogue_background_colour -/* 097BEC 80096FEC AFA00010 */ sw $zero, 0x10($sp) -/* 097BF0 80096FF0 24040007 */ li $a0, 7 -/* 097BF4 80096FF4 0C0313DF */ jal set_dialogue_font -/* 097BF8 80096FF8 00002825 */ move $a1, $zero -/* 097BFC 80096FFC 24040007 */ li $a0, 7 -/* 097C00 80097000 00002825 */ move $a1, $zero -/* 097C04 80097004 00003025 */ move $a2, $zero -/* 097C08 80097008 00003825 */ move $a3, $zero -/* 097C0C 8009700C 0C031414 */ jal set_current_text_background_colour -/* 097C10 80097010 AFA00010 */ sw $zero, 0x10($sp) -/* 097C14 80097014 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 -/* 097C18 80097018 8C4263BC */ lw $v0, %lo(gOptionBlinkTimer)($v0) -/* 097C1C 8009701C 3C10800E */ lui $s0, %hi(gMenuSubOption) # $s0, 0x800e -/* 097C20 80097020 000248C0 */ sll $t1, $v0, 3 -/* 097C24 80097024 29210100 */ slti $at, $t1, 0x100 -/* 097C28 80097028 14200003 */ bnez $at, .L80097038 -/* 097C2C 8009702C 01201025 */ move $v0, $t1 -/* 097C30 80097030 240801FF */ li $t0, 511 -/* 097C34 80097034 01091023 */ subu $v0, $t0, $t1 -.L80097038: -/* 097C38 80097038 26100988 */ addiu $s0, %lo(gMenuSubOption) # addiu $s0, $s0, 0x988 -/* 097C3C 8009703C 8E0A0000 */ lw $t2, ($s0) -/* 097C40 80097040 8FB900A8 */ lw $t9, 0xa8($sp) -/* 097C44 80097044 11400055 */ beqz $t2, .L8009719C -/* 097C48 80097048 0000B025 */ move $s6, $zero -/* 097C4C 8009704C 3C0B800E */ lui $t3, %hi(gMenuText) # $t3, 0x800e -/* 097C50 80097050 8D6BF4A0 */ lw $t3, %lo(gMenuText)($t3) -/* 097C54 80097054 272DFFE8 */ addiu $t5, $t9, -0x18 -/* 097C58 80097058 AFAD00A8 */ sw $t5, 0xa8($sp) -/* 097C5C 8009705C 8D670210 */ lw $a3, 0x210($t3) -/* 097C60 80097060 240C0001 */ li $t4, 1 -/* 097C64 80097064 240E000C */ li $t6, 12 -/* 097C68 80097068 AFAE0014 */ sw $t6, 0x14($sp) -/* 097C6C 8009706C AFAC0010 */ sw $t4, 0x10($sp) -/* 097C70 80097070 AFA200A0 */ sw $v0, 0xa0($sp) -/* 097C74 80097074 25A60008 */ addiu $a2, $t5, 8 -/* 097C78 80097078 24040007 */ li $a0, 7 -/* 097C7C 8009707C 0C03145A */ jal render_dialogue_text -/* 097C80 80097080 24058000 */ li $a1, -32768 -/* 097C84 80097084 8E0F0000 */ lw $t7, ($s0) -/* 097C88 80097088 24010001 */ li $at, 1 -/* 097C8C 8009708C 15E1000C */ bne $t7, $at, .L800970C0 -/* 097C90 80097090 24040007 */ li $a0, 7 -/* 097C94 80097094 8FB800A0 */ lw $t8, 0xa0($sp) -/* 097C98 80097098 240900FF */ li $t1, 255 -/* 097C9C 8009709C AFA90014 */ sw $t1, 0x14($sp) -/* 097CA0 800970A0 24040007 */ li $a0, 7 -/* 097CA4 800970A4 240500FF */ li $a1, 255 -/* 097CA8 800970A8 240600FF */ li $a2, 255 -/* 097CAC 800970AC 240700FF */ li $a3, 255 -/* 097CB0 800970B0 0C031400 */ jal set_current_text_colour -/* 097CB4 800970B4 AFB80010 */ sw $t8, 0x10($sp) -/* 097CB8 800970B8 10000008 */ b .L800970DC -/* 097CBC 800970BC 00000000 */ nop -.L800970C0: -/* 097CC0 800970C0 240800FF */ li $t0, 255 -/* 097CC4 800970C4 AFA80014 */ sw $t0, 0x14($sp) -/* 097CC8 800970C8 240500FF */ li $a1, 255 -/* 097CCC 800970CC 240600FF */ li $a2, 255 -/* 097CD0 800970D0 240700FF */ li $a3, 255 -/* 097CD4 800970D4 0C031400 */ jal set_current_text_colour -/* 097CD8 800970D8 AFA00010 */ sw $zero, 0x10($sp) -.L800970DC: -/* 097CDC 800970DC 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e -/* 097CE0 800970E0 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2) -/* 097CE4 800970E4 8FA600A8 */ lw $a2, 0xa8($sp) -/* 097CE8 800970E8 8D470218 */ lw $a3, 0x218($t2) -/* 097CEC 800970EC 24190001 */ li $t9, 1 -/* 097CF0 800970F0 240D000C */ li $t5, 12 -/* 097CF4 800970F4 AFAD0014 */ sw $t5, 0x14($sp) -/* 097CF8 800970F8 AFB90010 */ sw $t9, 0x10($sp) -/* 097CFC 800970FC 24040007 */ li $a0, 7 -/* 097D00 80097100 24058000 */ li $a1, -32768 -/* 097D04 80097104 0C03145A */ jal render_dialogue_text -/* 097D08 80097108 24C6001A */ addiu $a2, $a2, 0x1a -/* 097D0C 8009710C 8E0B0000 */ lw $t3, ($s0) -/* 097D10 80097110 24010002 */ li $at, 2 -/* 097D14 80097114 1561000C */ bne $t3, $at, .L80097148 -/* 097D18 80097118 24040007 */ li $a0, 7 -/* 097D1C 8009711C 8FAC00A0 */ lw $t4, 0xa0($sp) -/* 097D20 80097120 240E00FF */ li $t6, 255 -/* 097D24 80097124 AFAE0014 */ sw $t6, 0x14($sp) -/* 097D28 80097128 24040007 */ li $a0, 7 -/* 097D2C 8009712C 240500FF */ li $a1, 255 -/* 097D30 80097130 240600FF */ li $a2, 255 -/* 097D34 80097134 240700FF */ li $a3, 255 -/* 097D38 80097138 0C031400 */ jal set_current_text_colour -/* 097D3C 8009713C AFAC0010 */ sw $t4, 0x10($sp) -/* 097D40 80097140 10000008 */ b .L80097164 -/* 097D44 80097144 00000000 */ nop -.L80097148: -/* 097D48 80097148 240F00FF */ li $t7, 255 -/* 097D4C 8009714C AFAF0014 */ sw $t7, 0x14($sp) -/* 097D50 80097150 240500FF */ li $a1, 255 -/* 097D54 80097154 240600FF */ li $a2, 255 -/* 097D58 80097158 240700FF */ li $a3, 255 -/* 097D5C 8009715C 0C031400 */ jal set_current_text_colour -/* 097D60 80097160 AFA00010 */ sw $zero, 0x10($sp) -.L80097164: -/* 097D64 80097164 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 097D68 80097168 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 097D6C 8009716C 8FA600A8 */ lw $a2, 0xa8($sp) -/* 097D70 80097170 8F070154 */ lw $a3, 0x154($t8) -/* 097D74 80097174 24090001 */ li $t1, 1 -/* 097D78 80097178 2408000C */ li $t0, 12 -/* 097D7C 8009717C AFA80014 */ sw $t0, 0x14($sp) -/* 097D80 80097180 AFA90010 */ sw $t1, 0x10($sp) -/* 097D84 80097184 24040007 */ li $a0, 7 -/* 097D88 80097188 24058000 */ li $a1, -32768 -/* 097D8C 8009718C 0C03145A */ jal render_dialogue_text -/* 097D90 80097190 24C6002A */ addiu $a2, $a2, 0x2a -/* 097D94 80097194 10000032 */ b .L80097260 -/* 097D98 80097198 00000000 */ nop -.L8009719C: -/* 097D9C 8009719C 8E390000 */ lw $t9, ($s1) -/* 097DA0 800971A0 240A000C */ li $t2, 12 -/* 097DA4 800971A4 1B20002E */ blez $t9, .L80097260 -/* 097DA8 800971A8 AFAA00A8 */ sw $t2, 0xa8($sp) -/* 097DAC 800971AC 3C108012 */ lui $s0, %hi(gResultOptionText) # $s0, 0x8012 -/* 097DB0 800971B0 3C128012 */ lui $s2, %hi(gMenuOption) # $s2, 0x8012 -/* 097DB4 800971B4 26526A68 */ addiu $s2, %lo(gMenuOption) # addiu $s2, $s2, 0x6a68 -/* 097DB8 800971B8 26106BF0 */ addiu $s0, %lo(gResultOptionText) # addiu $s0, $s0, 0x6bf0 -/* 097DBC 800971BC AFA200A0 */ sw $v0, 0xa0($sp) -.L800971C0: -/* 097DC0 800971C0 8E4D0000 */ lw $t5, ($s2) -/* 097DC4 800971C4 8FA200A0 */ lw $v0, 0xa0($sp) -/* 097DC8 800971C8 16CD000C */ bne $s6, $t5, .L800971FC -/* 097DCC 800971CC 24040007 */ li $a0, 7 -/* 097DD0 800971D0 240B00FF */ li $t3, 255 -/* 097DD4 800971D4 AFAB0014 */ sw $t3, 0x14($sp) -/* 097DD8 800971D8 24040007 */ li $a0, 7 -/* 097DDC 800971DC 240500FF */ li $a1, 255 -/* 097DE0 800971E0 240600FF */ li $a2, 255 -/* 097DE4 800971E4 240700FF */ li $a3, 255 -/* 097DE8 800971E8 AFA20010 */ sw $v0, 0x10($sp) -/* 097DEC 800971EC 0C031400 */ jal set_current_text_colour -/* 097DF0 800971F0 AFA200A0 */ sw $v0, 0xa0($sp) -/* 097DF4 800971F4 1000000A */ b .L80097220 -/* 097DF8 800971F8 8FA600A8 */ lw $a2, 0xa8($sp) -.L800971FC: -/* 097DFC 800971FC 240C00FF */ li $t4, 255 -/* 097E00 80097200 AFAC0014 */ sw $t4, 0x14($sp) -/* 097E04 80097204 240500FF */ li $a1, 255 -/* 097E08 80097208 240600FF */ li $a2, 255 -/* 097E0C 8009720C 240700FF */ li $a3, 255 -/* 097E10 80097210 AFA00010 */ sw $zero, 0x10($sp) -/* 097E14 80097214 0C031400 */ jal set_current_text_colour -/* 097E18 80097218 AFA200A0 */ sw $v0, 0xa0($sp) -/* 097E1C 8009721C 8FA600A8 */ lw $a2, 0xa8($sp) -.L80097220: -/* 097E20 80097220 8E070000 */ lw $a3, ($s0) -/* 097E24 80097224 240E0001 */ li $t6, 1 -/* 097E28 80097228 240F000C */ li $t7, 12 -/* 097E2C 8009722C AFAF0014 */ sw $t7, 0x14($sp) -/* 097E30 80097230 AFAE0010 */ sw $t6, 0x10($sp) -/* 097E34 80097234 24040007 */ li $a0, 7 -/* 097E38 80097238 0C03145A */ jal render_dialogue_text -/* 097E3C 8009723C 24050050 */ li $a1, 80 -/* 097E40 80097240 8E280000 */ lw $t0, ($s1) -/* 097E44 80097244 8FB800A8 */ lw $t8, 0xa8($sp) -/* 097E48 80097248 26D60001 */ addiu $s6, $s6, 1 -/* 097E4C 8009724C 02C8082A */ slt $at, $s6, $t0 -/* 097E50 80097250 27090010 */ addiu $t1, $t8, 0x10 -/* 097E54 80097254 26100004 */ addiu $s0, $s0, 4 -/* 097E58 80097258 1420FFD9 */ bnez $at, .L800971C0 -/* 097E5C 8009725C AFA900A8 */ sw $t1, 0xa8($sp) -.L80097260: -/* 097E60 80097260 0C03157D */ jal open_dialogue_box -/* 097E64 80097264 24040007 */ li $a0, 7 -.L80097268: -/* 097E68 80097268 8FBF005C */ lw $ra, 0x5c($sp) -/* 097E6C 8009726C C7B50028 */ lwc1 $f21, 0x28($sp) -/* 097E70 80097270 C7B4002C */ lwc1 $f20, 0x2c($sp) -/* 097E74 80097274 C7B70030 */ lwc1 $f23, 0x30($sp) -/* 097E78 80097278 C7B60034 */ lwc1 $f22, 0x34($sp) -/* 097E7C 8009727C 8FB00038 */ lw $s0, 0x38($sp) -/* 097E80 80097280 8FB1003C */ lw $s1, 0x3c($sp) -/* 097E84 80097284 8FB20040 */ lw $s2, 0x40($sp) -/* 097E88 80097288 8FB30044 */ lw $s3, 0x44($sp) -/* 097E8C 8009728C 8FB40048 */ lw $s4, 0x48($sp) -/* 097E90 80097290 8FB5004C */ lw $s5, 0x4c($sp) -/* 097E94 80097294 8FB60050 */ lw $s6, 0x50($sp) -/* 097E98 80097298 8FB70054 */ lw $s7, 0x54($sp) -/* 097E9C 8009729C 8FBE0058 */ lw $fp, 0x58($sp) -/* 097EA0 800972A0 03E00008 */ jr $ra -/* 097EA4 800972A4 27BD00B0 */ addiu $sp, $sp, 0xb0 - +glabel func_80096978 +/* 097578 80096978 27BDFF50 */ addiu $sp, $sp, -0xb0 +/* 09757C 8009697C E7B4002C */ swc1 $f20, 0x2c($sp) +/* 097580 80096980 4485A000 */ mtc1 $a1, $f20 +/* 097584 80096984 AFBF005C */ sw $ra, 0x5c($sp) +/* 097588 80096988 AFBE0058 */ sw $fp, 0x58($sp) +/* 09758C 8009698C AFB70054 */ sw $s7, 0x54($sp) +/* 097590 80096990 AFB60050 */ sw $s6, 0x50($sp) +/* 097594 80096994 AFB5004C */ sw $s5, 0x4c($sp) +/* 097598 80096998 AFB40048 */ sw $s4, 0x48($sp) +/* 09759C 8009699C AFB30044 */ sw $s3, 0x44($sp) +/* 0975A0 800969A0 AFB20040 */ sw $s2, 0x40($sp) +/* 0975A4 800969A4 AFB1003C */ sw $s1, 0x3c($sp) +/* 0975A8 800969A8 AFB00038 */ sw $s0, 0x38($sp) +/* 0975AC 800969AC E7B70030 */ swc1 $f23, 0x30($sp) +/* 0975B0 800969B0 E7B60034 */ swc1 $f22, 0x34($sp) +/* 0975B4 800969B4 E7B50028 */ swc1 $f21, 0x28($sp) +/* 0975B8 800969B8 0C01BAA4 */ jal get_settings +/* 0975BC 800969BC AFA400B0 */ sw $a0, 0xb0($sp) +/* 0975C0 800969C0 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 +/* 0975C4 800969C4 8DCE0300 */ lw $t6, %lo(osTvType)($t6) +/* 0975C8 800969C8 AFA20084 */ sw $v0, 0x84($sp) +/* 0975CC 800969CC 15C00002 */ bnez $t6, .L800969D8 +/* 0975D0 800969D0 00001825 */ move $v1, $zero +/* 0975D4 800969D4 2403000C */ li $v1, 12 +.L800969D8: +/* 0975D8 800969D8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0975DC 800969DC 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 0975E0 800969E0 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 +/* 0975E4 800969E4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 0975E8 800969E8 0C019FCB */ jal set_ortho_matrix_view +/* 0975EC 800969EC AFA30098 */ sw $v1, 0x98($sp) +/* 0975F0 800969F0 44800000 */ mtc1 $zero, $f0 +/* 0975F4 800969F4 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 0975F8 800969F8 4600A03C */ c.lt.s $f20, $f0 +/* 0975FC 800969FC 00000000 */ nop +/* 097600 80096A00 45000002 */ bc1f .L80096A0C +/* 097604 80096A04 00000000 */ nop +/* 097608 80096A08 46000506 */ mov.s $f20, $f0 +.L80096A0C: +/* 09760C 80096A0C 44810000 */ mtc1 $at, $f0 +/* 097610 80096A10 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 097614 80096A14 4614003C */ c.lt.s $f0, $f20 +/* 097618 80096A18 44812000 */ mtc1 $at, $f4 +/* 09761C 80096A1C 45000002 */ bc1f .L80096A28 +/* 097620 80096A20 3C01437F */ li $at, 0x437F0000 # 255.000000 +/* 097624 80096A24 46000506 */ mov.s $f20, $f0 +.L80096A28: +/* 097628 80096A28 46142181 */ sub.s $f6, $f4, $f20 +/* 09762C 80096A2C 44814000 */ mtc1 $at, $f8 +/* 097630 80096A30 3C10800E */ lui $s0, %hi(sMenuGuiOpacity) # $s0, 0x800e +/* 097634 80096A34 46083282 */ mul.s $f10, $f6, $f8 +/* 097638 80096A38 2610F764 */ addiu $s0, %lo(sMenuGuiOpacity) # addiu $s0, $s0, -0x89c +/* 09763C 80096A3C 24040002 */ li $a0, 2 +/* 097640 80096A40 444FF800 */ cfc1 $t7, $31 +/* 097644 80096A44 00000000 */ nop +/* 097648 80096A48 35E10003 */ ori $at, $t7, 3 +/* 09764C 80096A4C 38210002 */ xori $at, $at, 2 +/* 097650 80096A50 44C1F800 */ ctc1 $at, $31 +/* 097654 80096A54 00000000 */ nop +/* 097658 80096A58 46005424 */ cvt.w.s $f16, $f10 +/* 09765C 80096A5C 44188000 */ mfc1 $t8, $f16 +/* 097660 80096A60 44CFF800 */ ctc1 $t7, $31 +/* 097664 80096A64 0C0310BB */ jal set_text_font +/* 097668 80096A68 AE180000 */ sw $t8, ($s0) +/* 09766C 80096A6C 00002025 */ move $a0, $zero +/* 097670 80096A70 00002825 */ move $a1, $zero +/* 097674 80096A74 00003025 */ move $a2, $zero +/* 097678 80096A78 0C0310F3 */ jal set_text_background_colour +/* 09767C 80096A7C 00003825 */ move $a3, $zero +/* 097680 80096A80 8E190000 */ lw $t9, ($s0) +/* 097684 80096A84 240400FF */ li $a0, 255 +/* 097688 80096A88 240500FF */ li $a1, 255 +/* 09768C 80096A8C 240600FF */ li $a2, 255 +/* 097690 80096A90 00003825 */ move $a3, $zero +/* 097694 80096A94 0C0310E1 */ jal set_text_colour +/* 097698 80096A98 AFB90010 */ sw $t9, 0x10($sp) +/* 09769C 80096A9C 3C08800E */ lui $t0, %hi(gMenuText) # $t0, 0x800e +/* 0976A0 80096AA0 8D08F4A0 */ lw $t0, %lo(gMenuText)($t0) +/* 0976A4 80096AA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0976A8 80096AA8 2409000C */ li $t1, 12 +/* 0976AC 80096AAC 8D070084 */ lw $a3, 0x84($t0) +/* 0976B0 80096AB0 AFA90010 */ sw $t1, 0x10($sp) +/* 0976B4 80096AB4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 0976B8 80096AB8 24058000 */ li $a1, -32768 +/* 0976BC 80096ABC 0C031110 */ jal draw_text +/* 0976C0 80096AC0 24060022 */ li $a2, 34 +/* 0976C4 80096AC4 240A00FF */ li $t2, 255 +/* 0976C8 80096AC8 AE0A0000 */ sw $t2, ($s0) +/* 0976CC 80096ACC 3C02800E */ lui $v0, %hi(gNumberOfActivePlayers) # $v0, 0x800e +/* 0976D0 80096AD0 8C42F4BC */ lw $v0, %lo(gNumberOfActivePlayers)($v0) +/* 0976D4 80096AD4 240D00A0 */ li $t5, 160 +/* 0976D8 80096AD8 244BFFFF */ addiu $t3, $v0, -1 +/* 0976DC 80096ADC 000B6140 */ sll $t4, $t3, 5 +/* 0976E0 80096AE0 01ACA823 */ subu $s5, $t5, $t4 +/* 0976E4 80096AE4 AFB500A4 */ sw $s5, 0xa4($sp) +/* 0976E8 80096AE8 1840003A */ blez $v0, .L80096BD4 +/* 0976EC 80096AEC 0000B025 */ move $s6, $zero +/* 0976F0 80096AF0 3C014370 */ li $at, 0x43700000 # 240.000000 +/* 0976F4 80096AF4 44819000 */ mtc1 $at, $f18 +/* 0976F8 80096AF8 24190036 */ li $t9, 54 +/* 0976FC 80096AFC 46149102 */ mul.s $f4, $f18, $f20 +/* 097700 80096B00 3C12800E */ lui $s2, %hi(gRacerPortraits) # $s2, 0x800e +/* 097704 80096B04 8FB00084 */ lw $s0, 0x84($sp) +/* 097708 80096B08 26520AF0 */ addiu $s2, %lo(gRacerPortraits) # addiu $s2, $s2, 0xaf0 +/* 09770C 80096B0C 444FF800 */ cfc1 $t7, $31 +/* 097710 80096B10 2413017F */ li $s3, 383 +/* 097714 80096B14 35E10003 */ ori $at, $t7, 3 +/* 097718 80096B18 38210002 */ xori $at, $at, 2 +/* 09771C 80096B1C 44C1F800 */ ctc1 $at, $31 +/* 097720 80096B20 00000000 */ nop +/* 097724 80096B24 460021A4 */ cvt.w.s $f6, $f4 +/* 097728 80096B28 44183000 */ mfc1 $t8, $f6 +/* 09772C 80096B2C 44CFF800 */ ctc1 $t7, $31 +/* 097730 80096B30 03388823 */ subu $s1, $t9, $t8 +/* 097734 80096B34 00000000 */ nop +.L80096B38: +/* 097738 80096B38 8208005A */ lb $t0, 0x5a($s0) +/* 09773C 80096B3C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 097740 80096B40 1500000E */ bnez $t0, .L80096B7C +/* 097744 80096B44 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 097748 80096B48 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 +/* 09774C 80096B4C 8C4263BC */ lw $v0, %lo(gOptionBlinkTimer)($v0) +/* 097750 80096B50 00000000 */ nop +/* 097754 80096B54 28410020 */ slti $at, $v0, 0x20 +/* 097758 80096B58 10200005 */ beqz $at, .L80096B70 +/* 09775C 80096B5C 00025880 */ sll $t3, $v0, 2 +/* 097760 80096B60 00024880 */ sll $t1, $v0, 2 +/* 097764 80096B64 252A0080 */ addiu $t2, $t1, 0x80 +/* 097768 80096B68 10000006 */ b .L80096B84 +/* 09776C 80096B6C AFAA00A0 */ sw $t2, 0xa0($sp) +.L80096B70: +/* 097770 80096B70 026B6823 */ subu $t5, $s3, $t3 +/* 097774 80096B74 10000003 */ b .L80096B84 +/* 097778 80096B78 AFAD00A0 */ sw $t5, 0xa0($sp) +.L80096B7C: +/* 09777C 80096B7C 240C00FF */ li $t4, 255 +/* 097780 80096B80 AFAC00A0 */ sw $t4, 0xa0($sp) +.L80096B84: +/* 097784 80096B84 820E0059 */ lb $t6, 0x59($s0) +/* 097788 80096B88 93A200A3 */ lbu $v0, 0xa3($sp) +/* 09778C 80096B8C 000E7880 */ sll $t7, $t6, 2 +/* 097790 80096B90 024FC821 */ addu $t9, $s2, $t7 +/* 097794 80096B94 8F250000 */ lw $a1, ($t9) +/* 097798 80096B98 241800FF */ li $t8, 255 +/* 09779C 80096B9C AFB8001C */ sw $t8, 0x1c($sp) +/* 0977A0 80096BA0 26A6FFEC */ addiu $a2, $s5, -0x14 +/* 0977A4 80096BA4 02203825 */ move $a3, $s1 +/* 0977A8 80096BA8 AFA20018 */ sw $v0, 0x18($sp) +/* 0977AC 80096BAC AFA20014 */ sw $v0, 0x14($sp) +/* 0977B0 80096BB0 0C01E2AE */ jal render_textured_rectangle +/* 0977B4 80096BB4 AFA20010 */ sw $v0, 0x10($sp) +/* 0977B8 80096BB8 3C08800E */ lui $t0, %hi(gNumberOfActivePlayers) # $t0, 0x800e +/* 0977BC 80096BBC 8D08F4BC */ lw $t0, %lo(gNumberOfActivePlayers)($t0) +/* 0977C0 80096BC0 26D60001 */ addiu $s6, $s6, 1 +/* 0977C4 80096BC4 02C8082A */ slt $at, $s6, $t0 +/* 0977C8 80096BC8 26100018 */ addiu $s0, $s0, 0x18 +/* 0977CC 80096BCC 1420FFDA */ bnez $at, .L80096B38 +/* 0977D0 80096BD0 26B50040 */ addiu $s5, $s5, 0x40 +.L80096BD4: +/* 0977D4 80096BD4 3C0143A0 */ li $at, 0x43A00000 # 320.000000 +/* 0977D8 80096BD8 44814000 */ mtc1 $at, $f8 +/* 0977DC 80096BDC 8FAB00A4 */ lw $t3, 0xa4($sp) +/* 0977E0 80096BE0 46144282 */ mul.s $f10, $f8, $f20 +/* 0977E4 80096BE4 00002025 */ move $a0, $zero +/* 0977E8 80096BE8 4449F800 */ cfc1 $t1, $31 +/* 0977EC 80096BEC 00000000 */ nop +/* 0977F0 80096BF0 35210003 */ ori $at, $t1, 3 +/* 0977F4 80096BF4 38210002 */ xori $at, $at, 2 +/* 0977F8 80096BF8 44C1F800 */ ctc1 $at, $31 +/* 0977FC 80096BFC 00000000 */ nop +/* 097800 80096C00 46005424 */ cvt.w.s $f16, $f10 +/* 097804 80096C04 440A8000 */ mfc1 $t2, $f16 +/* 097808 80096C08 44C9F800 */ ctc1 $t1, $31 +/* 09780C 80096C0C 014B6821 */ addu $t5, $t2, $t3 +/* 097810 80096C10 0C0310BB */ jal set_text_font +/* 097814 80096C14 AFAD00A4 */ sw $t5, 0xa4($sp) +/* 097818 80096C18 8FA30098 */ lw $v1, 0x98($sp) +/* 09781C 80096C1C 8FA200A4 */ lw $v0, 0xa4($sp) +/* 097820 80096C20 24630068 */ addiu $v1, $v1, 0x68 +/* 097824 80096C24 3C0F800E */ lui $t7, %hi(gRacePlacementsArray) # $t7, 0x800e +/* 097828 80096C28 3C014140 */ li $at, 0x41400000 # 12.000000 +/* 09782C 80096C2C 240C0068 */ li $t4, 104 +/* 097830 80096C30 25EF0BCC */ addiu $t7, %lo(gRacePlacementsArray) # addiu $t7, $t7, 0xbcc +/* 097834 80096C34 246E0004 */ addiu $t6, $v1, 4 +/* 097838 80096C38 24790002 */ addiu $t9, $v1, 2 +/* 09783C 80096C3C 241800FF */ li $t8, 255 +/* 097840 80096C40 3C13800E */ lui $s3, %hi(gMenuImageStack) # $s3, 0x800e +/* 097844 80096C44 2448FFDE */ addiu $t0, $v0, -0x22 +/* 097848 80096C48 2449FFE0 */ addiu $t1, $v0, -0x20 +/* 09784C 80096C4C 4481A000 */ mtc1 $at, $f20 +/* 097850 80096C50 AFAC00A8 */ sw $t4, 0xa8($sp) +/* 097854 80096C54 AFA90064 */ sw $t1, 0x64($sp) +/* 097858 80096C58 AFA80068 */ sw $t0, 0x68($sp) +/* 09785C 80096C5C 2673F75C */ addiu $s3, %lo(gMenuImageStack) # addiu $s3, $s3, -0x8a4 +/* 097860 80096C60 AFB80070 */ sw $t8, 0x70($sp) +/* 097864 80096C64 AFB90074 */ sw $t9, 0x74($sp) +/* 097868 80096C68 AFAE007C */ sw $t6, 0x7c($sp) +/* 09786C 80096C6C AFAF0078 */ sw $t7, 0x78($sp) +/* 097870 80096C70 AFA000A0 */ sw $zero, 0xa0($sp) +/* 097874 80096C74 241E000A */ li $fp, 10 +/* 097878 80096C78 24170064 */ li $s7, 100 +.L80096C7C: +/* 09787C 80096C7C 8FB500A4 */ lw $s5, 0xa4($sp) +/* 097880 80096C80 240A00FF */ li $t2, 255 +/* 097884 80096C84 AFAA0010 */ sw $t2, 0x10($sp) +/* 097888 80096C88 00002025 */ move $a0, $zero +/* 09788C 80096C8C 00002825 */ move $a1, $zero +/* 097890 80096C90 00003025 */ move $a2, $zero +/* 097894 80096C94 240700FF */ li $a3, 255 +/* 097898 80096C98 0C0310E1 */ jal set_text_colour +/* 09789C 80096C9C 0000B025 */ move $s6, $zero +/* 0978A0 80096CA0 8FAB0078 */ lw $t3, 0x78($sp) +/* 0978A4 80096CA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0978A8 80096CA8 8FA50064 */ lw $a1, 0x64($sp) +/* 0978AC 80096CAC 8FA6007C */ lw $a2, 0x7c($sp) +/* 0978B0 80096CB0 240D000C */ li $t5, 12 +/* 0978B4 80096CB4 8D670000 */ lw $a3, ($t3) +/* 0978B8 80096CB8 AFAD0010 */ sw $t5, 0x10($sp) +/* 0978BC 80096CBC 0C031110 */ jal draw_text +/* 0978C0 80096CC0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 0978C4 80096CC4 240C00FF */ li $t4, 255 +/* 0978C8 80096CC8 AFAC0010 */ sw $t4, 0x10($sp) +/* 0978CC 80096CCC 240400FF */ li $a0, 255 +/* 0978D0 80096CD0 240500FF */ li $a1, 255 +/* 0978D4 80096CD4 240600C0 */ li $a2, 192 +/* 0978D8 80096CD8 0C0310E1 */ jal set_text_colour +/* 0978DC 80096CDC 24070060 */ li $a3, 96 +/* 0978E0 80096CE0 8FAE0078 */ lw $t6, 0x78($sp) +/* 0978E4 80096CE4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0978E8 80096CE8 8FA50068 */ lw $a1, 0x68($sp) +/* 0978EC 80096CEC 8FA60074 */ lw $a2, 0x74($sp) +/* 0978F0 80096CF0 240F000C */ li $t7, 12 +/* 0978F4 80096CF4 8DC70000 */ lw $a3, ($t6) +/* 0978F8 80096CF8 AFAF0010 */ sw $t7, 0x10($sp) +/* 0978FC 80096CFC 0C031110 */ jal draw_text +/* 097900 80096D00 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 097904 80096D04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 097908 80096D08 0C01ECF4 */ jal reset_render_settings +/* 09790C 80096D0C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 097910 80096D10 0C01A142 */ jal func_80068508 +/* 097914 80096D14 24040001 */ li $a0, 1 +/* 097918 80096D18 0C01EFC7 */ jal func_8007BF1C +/* 09791C 80096D1C 00002025 */ move $a0, $zero +/* 097920 80096D20 240200FF */ li $v0, 255 +/* 097924 80096D24 3C01800E */ lui $at, %hi(sMenuGuiColourR) # $at, 0x800e +/* 097928 80096D28 8FB90070 */ lw $t9, 0x70($sp) +/* 09792C 80096D2C A022F4A4 */ sb $v0, %lo(sMenuGuiColourR)($at) +/* 097930 80096D30 3C01800E */ lui $at, %hi(sMenuGuiColourG) # $at, 0x800e +/* 097934 80096D34 A039F4A8 */ sb $t9, %lo(sMenuGuiColourG)($at) +/* 097938 80096D38 3C01800E */ lui $at, %hi(sMenuGuiColourB) # $at, 0x800e +/* 09793C 80096D3C 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e +/* 097940 80096D40 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8) +/* 097944 80096D44 A022F4AC */ sb $v0, %lo(sMenuGuiColourB)($at) +/* 097948 80096D48 3C01800E */ lui $at, %hi(D_800DF4B0) # $at, 0x800e +/* 09794C 80096D4C 1B00006E */ blez $t8, .L80096F08 +/* 097950 80096D50 A022F4B0 */ sb $v0, %lo(D_800DF4B0)($at) +/* 097954 80096D54 8FAB00A8 */ lw $t3, 0xa8($sp) +/* 097958 80096D58 240D0078 */ li $t5, 120 +/* 09795C 80096D5C 8FA900A0 */ lw $t1, 0xa0($sp) +/* 097960 80096D60 01AB6023 */ subu $t4, $t5, $t3 +/* 097964 80096D64 448C9000 */ mtc1 $t4, $f18 +/* 097968 80096D68 8FA80084 */ lw $t0, 0x84($sp) +/* 09796C 80096D6C 00095040 */ sll $t2, $t1, 1 +/* 097970 80096D70 468095A0 */ cvt.s.w $f22, $f18 +/* 097974 80096D74 010AA021 */ addu $s4, $t0, $t2 +.L80096D78: +/* 097978 80096D78 9691005C */ lhu $s1, 0x5c($s4) +/* 09797C 80096D7C 240200FF */ li $v0, 255 +/* 097980 80096D80 2A2103E8 */ slti $at, $s1, 0x3e8 +/* 097984 80096D84 14200002 */ bnez $at, .L80096D90 +/* 097988 80096D88 26B8FF54 */ addiu $t8, $s5, -0xac +/* 09798C 80096D8C 241103E7 */ li $s1, 999 +.L80096D90: +/* 097990 80096D90 0237001A */ div $zero, $s1, $s7 +/* 097994 80096D94 8E790000 */ lw $t9, ($s3) +/* 097998 80096D98 16E00002 */ bnez $s7, .L80096DA4 +/* 09799C 80096D9C 00000000 */ nop +/* 0979A0 80096DA0 0007000D */ break 7 +.L80096DA4: +/* 0979A4 80096DA4 2401FFFF */ li $at, -1 +/* 0979A8 80096DA8 16E10004 */ bne $s7, $at, .L80096DBC +/* 0979AC 80096DAC 3C018000 */ lui $at, 0x8000 +/* 0979B0 80096DB0 16210002 */ bne $s1, $at, .L80096DBC +/* 0979B4 80096DB4 00000000 */ nop +/* 0979B8 80096DB8 0006000D */ break 6 +.L80096DBC: +/* 0979BC 80096DBC E7360010 */ swc1 $f22, 0x10($t9) +/* 0979C0 80096DC0 00001012 */ mflo $v0 +/* 0979C4 80096DC4 00402825 */ move $a1, $v0 +/* 0979C8 80096DC8 00000000 */ nop +/* 0979CC 80096DCC 00570019 */ multu $v0, $s7 +/* 0979D0 80096DD0 00007012 */ mflo $t6 +/* 0979D4 80096DD4 022E8823 */ subu $s1, $s1, $t6 +/* 0979D8 80096DD8 00000000 */ nop +/* 0979DC 80096DDC 023E001A */ div $zero, $s1, $fp +/* 0979E0 80096DE0 17C00002 */ bnez $fp, .L80096DEC +/* 0979E4 80096DE4 00000000 */ nop +/* 0979E8 80096DE8 0007000D */ break 7 +.L80096DEC: +/* 0979EC 80096DEC 2401FFFF */ li $at, -1 +/* 0979F0 80096DF0 17C10004 */ bne $fp, $at, .L80096E04 +/* 0979F4 80096DF4 3C018000 */ lui $at, 0x8000 +/* 0979F8 80096DF8 16210002 */ bne $s1, $at, .L80096E04 +/* 0979FC 80096DFC 00000000 */ nop +/* 097A00 80096E00 0006000D */ break 6 +.L80096E04: +/* 097A04 80096E04 00001812 */ mflo $v1 +/* 097A08 80096E08 00609025 */ move $s2, $v1 +/* 097A0C 80096E0C 00000000 */ nop +/* 097A10 80096E10 007E0019 */ multu $v1, $fp +/* 097A14 80096E14 00007812 */ mflo $t7 +/* 097A18 80096E18 022F8823 */ subu $s1, $s1, $t7 +/* 097A1C 80096E1C 18A00019 */ blez $a1, .L80096E84 +/* 097A20 80096E20 00000000 */ nop +/* 097A24 80096E24 44982000 */ mtc1 $t8, $f4 +/* 097A28 80096E28 8E690000 */ lw $t1, ($s3) +/* 097A2C 80096E2C 468021A0 */ cvt.s.w $f6, $f4 +/* 097A30 80096E30 00002025 */ move $a0, $zero +/* 097A34 80096E34 E526000C */ swc1 $f6, 0xc($t1) +/* 097A38 80096E38 8E680000 */ lw $t0, ($s3) +/* 097A3C 80096E3C 0C027298 */ jal func_8009CA60 +/* 097A40 80096E40 A5050018 */ sh $a1, 0x18($t0) +/* 097A44 80096E44 8E700000 */ lw $s0, ($s3) +/* 097A48 80096E48 00002025 */ move $a0, $zero +/* 097A4C 80096E4C C608000C */ lwc1 $f8, 0xc($s0) +/* 097A50 80096E50 00000000 */ nop +/* 097A54 80096E54 46144280 */ add.s $f10, $f8, $f20 +/* 097A58 80096E58 E60A000C */ swc1 $f10, 0xc($s0) +/* 097A5C 80096E5C 8E6A0000 */ lw $t2, ($s3) +/* 097A60 80096E60 0C027298 */ jal func_8009CA60 +/* 097A64 80096E64 A5520018 */ sh $s2, 0x18($t2) +/* 097A68 80096E68 8E700000 */ lw $s0, ($s3) +/* 097A6C 80096E6C 00000000 */ nop +/* 097A70 80096E70 C610000C */ lwc1 $f16, 0xc($s0) +/* 097A74 80096E74 00000000 */ nop +/* 097A78 80096E78 46148480 */ add.s $f18, $f16, $f20 +/* 097A7C 80096E7C 10000017 */ b .L80096EDC +/* 097A80 80096E80 E612000C */ swc1 $f18, 0xc($s0) +.L80096E84: +/* 097A84 80096E84 1A400011 */ blez $s2, .L80096ECC +/* 097A88 80096E88 26AEFF60 */ addiu $t6, $s5, -0xa0 +/* 097A8C 80096E8C 26ADFF5A */ addiu $t5, $s5, -0xa6 +/* 097A90 80096E90 448D2000 */ mtc1 $t5, $f4 +/* 097A94 80096E94 8E6B0000 */ lw $t3, ($s3) +/* 097A98 80096E98 468021A0 */ cvt.s.w $f6, $f4 +/* 097A9C 80096E9C 00002025 */ move $a0, $zero +/* 097AA0 80096EA0 E566000C */ swc1 $f6, 0xc($t3) +/* 097AA4 80096EA4 8E6C0000 */ lw $t4, ($s3) +/* 097AA8 80096EA8 0C027298 */ jal func_8009CA60 +/* 097AAC 80096EAC A5920018 */ sh $s2, 0x18($t4) +/* 097AB0 80096EB0 8E700000 */ lw $s0, ($s3) +/* 097AB4 80096EB4 00000000 */ nop +/* 097AB8 80096EB8 C608000C */ lwc1 $f8, 0xc($s0) +/* 097ABC 80096EBC 00000000 */ nop +/* 097AC0 80096EC0 46144280 */ add.s $f10, $f8, $f20 +/* 097AC4 80096EC4 10000005 */ b .L80096EDC +/* 097AC8 80096EC8 E60A000C */ swc1 $f10, 0xc($s0) +.L80096ECC: +/* 097ACC 80096ECC 448E8000 */ mtc1 $t6, $f16 +/* 097AD0 80096ED0 8E6F0000 */ lw $t7, ($s3) +/* 097AD4 80096ED4 468084A0 */ cvt.s.w $f18, $f16 +/* 097AD8 80096ED8 E5F2000C */ swc1 $f18, 0xc($t7) +.L80096EDC: +/* 097ADC 80096EDC 8E790000 */ lw $t9, ($s3) +/* 097AE0 80096EE0 00002025 */ move $a0, $zero +/* 097AE4 80096EE4 0C027298 */ jal func_8009CA60 +/* 097AE8 80096EE8 A7310018 */ sh $s1, 0x18($t9) +/* 097AEC 80096EEC 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e +/* 097AF0 80096EF0 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8) +/* 097AF4 80096EF4 26D60001 */ addiu $s6, $s6, 1 +/* 097AF8 80096EF8 02D8082A */ slt $at, $s6, $t8 +/* 097AFC 80096EFC 26940018 */ addiu $s4, $s4, 0x18 +/* 097B00 80096F00 1420FF9D */ bnez $at, .L80096D78 +/* 097B04 80096F04 26B50040 */ addiu $s5, $s5, 0x40 +.L80096F08: +/* 097B08 80096F08 8FA900A8 */ lw $t1, 0xa8($sp) +/* 097B0C 80096F0C 8FAA007C */ lw $t2, 0x7c($sp) +/* 097B10 80096F10 8FAB0074 */ lw $t3, 0x74($sp) +/* 097B14 80096F14 25280011 */ addiu $t0, $t1, 0x11 +/* 097B18 80096F18 254D0011 */ addiu $t5, $t2, 0x11 +/* 097B1C 80096F1C 256C0011 */ addiu $t4, $t3, 0x11 +/* 097B20 80096F20 AFAC0074 */ sw $t4, 0x74($sp) +/* 097B24 80096F24 AFAD007C */ sw $t5, 0x7c($sp) +/* 097B28 80096F28 AFA800A8 */ sw $t0, 0xa8($sp) +/* 097B2C 80096F2C 0C01A142 */ jal func_80068508 +/* 097B30 80096F30 00002025 */ move $a0, $zero +/* 097B34 80096F34 0C01EFC7 */ jal func_8007BF1C +/* 097B38 80096F38 24040001 */ li $a0, 1 +/* 097B3C 80096F3C 240E00FF */ li $t6, 255 +/* 097B40 80096F40 3C01800E */ lui $at, %hi(sMenuGuiColourG) # $at, 0x800e +/* 097B44 80096F44 8FAF00A0 */ lw $t7, 0xa0($sp) +/* 097B48 80096F48 A02EF4A8 */ sb $t6, %lo(sMenuGuiColourG)($at) +/* 097B4C 80096F4C 8FB80078 */ lw $t8, 0x78($sp) +/* 097B50 80096F50 8FA80070 */ lw $t0, 0x70($sp) +/* 097B54 80096F54 3C01800E */ lui $at, %hi(D_800DF4B0) # $at, 0x800e +/* 097B58 80096F58 A020F4B0 */ sb $zero, %lo(D_800DF4B0)($at) +/* 097B5C 80096F5C 25F90001 */ addiu $t9, $t7, 1 +/* 097B60 80096F60 2B210004 */ slti $at, $t9, 4 +/* 097B64 80096F64 27090004 */ addiu $t1, $t8, 4 +/* 097B68 80096F68 250AFFC0 */ addiu $t2, $t0, -0x40 +/* 097B6C 80096F6C AFAA0070 */ sw $t2, 0x70($sp) +/* 097B70 80096F70 AFA90078 */ sw $t1, 0x78($sp) +/* 097B74 80096F74 1420FF41 */ bnez $at, .L80096C7C +/* 097B78 80096F78 AFB900A0 */ sw $t9, 0xa0($sp) +/* 097B7C 80096F7C 3C0D8012 */ lui $t5, %hi(gMenuOptionCount) # $t5, 0x8012 +/* 097B80 80096F80 8DAD63E0 */ lw $t5, %lo(gMenuOptionCount)($t5) +/* 097B84 80096F84 3C118012 */ lui $s1, %hi(gResultOptionCount) # $s1, 0x8012 +/* 097B88 80096F88 19A000B7 */ blez $t5, .L80097268 +/* 097B8C 80096F8C 26316C14 */ addiu $s1, %lo(gResultOptionCount) # addiu $s1, $s1, 0x6c14 +/* 097B90 80096F90 8E2B0000 */ lw $t3, ($s1) +/* 097B94 80096F94 24040007 */ li $a0, 7 +/* 097B98 80096F98 000B60C0 */ sll $t4, $t3, 3 +/* 097B9C 80096F9C 0C0315B4 */ jal clear_dialogue_box_open_flag +/* 097BA0 80096FA0 AFAC00A8 */ sw $t4, 0xa8($sp) +/* 097BA4 80096FA4 0C031525 */ jal assign_dialogue_box_id +/* 097BA8 80096FA8 24040007 */ li $a0, 7 +/* 097BAC 80096FAC 8FA20098 */ lw $v0, 0x98($sp) +/* 097BB0 80096FB0 8FAE00A8 */ lw $t6, 0xa8($sp) +/* 097BB4 80096FB4 24040007 */ li $a0, 7 +/* 097BB8 80096FB8 01C27821 */ addu $t7, $t6, $v0 +/* 097BBC 80096FBC 25F800CC */ addiu $t8, $t7, 0xcc +/* 097BC0 80096FC0 004E3023 */ subu $a2, $v0, $t6 +/* 097BC4 80096FC4 24C600C4 */ addiu $a2, $a2, 0xc4 +/* 097BC8 80096FC8 AFB80010 */ sw $t8, 0x10($sp) +/* 097BCC 80096FCC 24050050 */ li $a1, 80 +/* 097BD0 80096FD0 0C0313B7 */ jal set_current_dialogue_box_coords +/* 097BD4 80096FD4 240700F0 */ li $a3, 240 +/* 097BD8 80096FD8 24040007 */ li $a0, 7 +/* 097BDC 80096FDC 24050040 */ li $a1, 64 +/* 097BE0 80096FE0 24060040 */ li $a2, 64 +/* 097BE4 80096FE4 240700FF */ li $a3, 255 +/* 097BE8 80096FE8 0C0313EF */ jal set_current_dialogue_background_colour +/* 097BEC 80096FEC AFA00010 */ sw $zero, 0x10($sp) +/* 097BF0 80096FF0 24040007 */ li $a0, 7 +/* 097BF4 80096FF4 0C0313DF */ jal set_dialogue_font +/* 097BF8 80096FF8 00002825 */ move $a1, $zero +/* 097BFC 80096FFC 24040007 */ li $a0, 7 +/* 097C00 80097000 00002825 */ move $a1, $zero +/* 097C04 80097004 00003025 */ move $a2, $zero +/* 097C08 80097008 00003825 */ move $a3, $zero +/* 097C0C 8009700C 0C031414 */ jal set_current_text_background_colour +/* 097C10 80097010 AFA00010 */ sw $zero, 0x10($sp) +/* 097C14 80097014 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 +/* 097C18 80097018 8C4263BC */ lw $v0, %lo(gOptionBlinkTimer)($v0) +/* 097C1C 8009701C 3C10800E */ lui $s0, %hi(gMenuSubOption) # $s0, 0x800e +/* 097C20 80097020 000248C0 */ sll $t1, $v0, 3 +/* 097C24 80097024 29210100 */ slti $at, $t1, 0x100 +/* 097C28 80097028 14200003 */ bnez $at, .L80097038 +/* 097C2C 8009702C 01201025 */ move $v0, $t1 +/* 097C30 80097030 240801FF */ li $t0, 511 +/* 097C34 80097034 01091023 */ subu $v0, $t0, $t1 +.L80097038: +/* 097C38 80097038 26100988 */ addiu $s0, %lo(gMenuSubOption) # addiu $s0, $s0, 0x988 +/* 097C3C 8009703C 8E0A0000 */ lw $t2, ($s0) +/* 097C40 80097040 8FB900A8 */ lw $t9, 0xa8($sp) +/* 097C44 80097044 11400055 */ beqz $t2, .L8009719C +/* 097C48 80097048 0000B025 */ move $s6, $zero +/* 097C4C 8009704C 3C0B800E */ lui $t3, %hi(gMenuText) # $t3, 0x800e +/* 097C50 80097050 8D6BF4A0 */ lw $t3, %lo(gMenuText)($t3) +/* 097C54 80097054 272DFFE8 */ addiu $t5, $t9, -0x18 +/* 097C58 80097058 AFAD00A8 */ sw $t5, 0xa8($sp) +/* 097C5C 8009705C 8D670210 */ lw $a3, 0x210($t3) +/* 097C60 80097060 240C0001 */ li $t4, 1 +/* 097C64 80097064 240E000C */ li $t6, 12 +/* 097C68 80097068 AFAE0014 */ sw $t6, 0x14($sp) +/* 097C6C 8009706C AFAC0010 */ sw $t4, 0x10($sp) +/* 097C70 80097070 AFA200A0 */ sw $v0, 0xa0($sp) +/* 097C74 80097074 25A60008 */ addiu $a2, $t5, 8 +/* 097C78 80097078 24040007 */ li $a0, 7 +/* 097C7C 8009707C 0C03145A */ jal render_dialogue_text +/* 097C80 80097080 24058000 */ li $a1, -32768 +/* 097C84 80097084 8E0F0000 */ lw $t7, ($s0) +/* 097C88 80097088 24010001 */ li $at, 1 +/* 097C8C 8009708C 15E1000C */ bne $t7, $at, .L800970C0 +/* 097C90 80097090 24040007 */ li $a0, 7 +/* 097C94 80097094 8FB800A0 */ lw $t8, 0xa0($sp) +/* 097C98 80097098 240900FF */ li $t1, 255 +/* 097C9C 8009709C AFA90014 */ sw $t1, 0x14($sp) +/* 097CA0 800970A0 24040007 */ li $a0, 7 +/* 097CA4 800970A4 240500FF */ li $a1, 255 +/* 097CA8 800970A8 240600FF */ li $a2, 255 +/* 097CAC 800970AC 240700FF */ li $a3, 255 +/* 097CB0 800970B0 0C031400 */ jal set_current_text_colour +/* 097CB4 800970B4 AFB80010 */ sw $t8, 0x10($sp) +/* 097CB8 800970B8 10000008 */ b .L800970DC +/* 097CBC 800970BC 00000000 */ nop +.L800970C0: +/* 097CC0 800970C0 240800FF */ li $t0, 255 +/* 097CC4 800970C4 AFA80014 */ sw $t0, 0x14($sp) +/* 097CC8 800970C8 240500FF */ li $a1, 255 +/* 097CCC 800970CC 240600FF */ li $a2, 255 +/* 097CD0 800970D0 240700FF */ li $a3, 255 +/* 097CD4 800970D4 0C031400 */ jal set_current_text_colour +/* 097CD8 800970D8 AFA00010 */ sw $zero, 0x10($sp) +.L800970DC: +/* 097CDC 800970DC 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e +/* 097CE0 800970E0 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2) +/* 097CE4 800970E4 8FA600A8 */ lw $a2, 0xa8($sp) +/* 097CE8 800970E8 8D470218 */ lw $a3, 0x218($t2) +/* 097CEC 800970EC 24190001 */ li $t9, 1 +/* 097CF0 800970F0 240D000C */ li $t5, 12 +/* 097CF4 800970F4 AFAD0014 */ sw $t5, 0x14($sp) +/* 097CF8 800970F8 AFB90010 */ sw $t9, 0x10($sp) +/* 097CFC 800970FC 24040007 */ li $a0, 7 +/* 097D00 80097100 24058000 */ li $a1, -32768 +/* 097D04 80097104 0C03145A */ jal render_dialogue_text +/* 097D08 80097108 24C6001A */ addiu $a2, $a2, 0x1a +/* 097D0C 8009710C 8E0B0000 */ lw $t3, ($s0) +/* 097D10 80097110 24010002 */ li $at, 2 +/* 097D14 80097114 1561000C */ bne $t3, $at, .L80097148 +/* 097D18 80097118 24040007 */ li $a0, 7 +/* 097D1C 8009711C 8FAC00A0 */ lw $t4, 0xa0($sp) +/* 097D20 80097120 240E00FF */ li $t6, 255 +/* 097D24 80097124 AFAE0014 */ sw $t6, 0x14($sp) +/* 097D28 80097128 24040007 */ li $a0, 7 +/* 097D2C 8009712C 240500FF */ li $a1, 255 +/* 097D30 80097130 240600FF */ li $a2, 255 +/* 097D34 80097134 240700FF */ li $a3, 255 +/* 097D38 80097138 0C031400 */ jal set_current_text_colour +/* 097D3C 8009713C AFAC0010 */ sw $t4, 0x10($sp) +/* 097D40 80097140 10000008 */ b .L80097164 +/* 097D44 80097144 00000000 */ nop +.L80097148: +/* 097D48 80097148 240F00FF */ li $t7, 255 +/* 097D4C 8009714C AFAF0014 */ sw $t7, 0x14($sp) +/* 097D50 80097150 240500FF */ li $a1, 255 +/* 097D54 80097154 240600FF */ li $a2, 255 +/* 097D58 80097158 240700FF */ li $a3, 255 +/* 097D5C 8009715C 0C031400 */ jal set_current_text_colour +/* 097D60 80097160 AFA00010 */ sw $zero, 0x10($sp) +.L80097164: +/* 097D64 80097164 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e +/* 097D68 80097168 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) +/* 097D6C 8009716C 8FA600A8 */ lw $a2, 0xa8($sp) +/* 097D70 80097170 8F070154 */ lw $a3, 0x154($t8) +/* 097D74 80097174 24090001 */ li $t1, 1 +/* 097D78 80097178 2408000C */ li $t0, 12 +/* 097D7C 8009717C AFA80014 */ sw $t0, 0x14($sp) +/* 097D80 80097180 AFA90010 */ sw $t1, 0x10($sp) +/* 097D84 80097184 24040007 */ li $a0, 7 +/* 097D88 80097188 24058000 */ li $a1, -32768 +/* 097D8C 8009718C 0C03145A */ jal render_dialogue_text +/* 097D90 80097190 24C6002A */ addiu $a2, $a2, 0x2a +/* 097D94 80097194 10000032 */ b .L80097260 +/* 097D98 80097198 00000000 */ nop +.L8009719C: +/* 097D9C 8009719C 8E390000 */ lw $t9, ($s1) +/* 097DA0 800971A0 240A000C */ li $t2, 12 +/* 097DA4 800971A4 1B20002E */ blez $t9, .L80097260 +/* 097DA8 800971A8 AFAA00A8 */ sw $t2, 0xa8($sp) +/* 097DAC 800971AC 3C108012 */ lui $s0, %hi(gResultOptionText) # $s0, 0x8012 +/* 097DB0 800971B0 3C128012 */ lui $s2, %hi(gMenuOption) # $s2, 0x8012 +/* 097DB4 800971B4 26526A68 */ addiu $s2, %lo(gMenuOption) # addiu $s2, $s2, 0x6a68 +/* 097DB8 800971B8 26106BF0 */ addiu $s0, %lo(gResultOptionText) # addiu $s0, $s0, 0x6bf0 +/* 097DBC 800971BC AFA200A0 */ sw $v0, 0xa0($sp) +.L800971C0: +/* 097DC0 800971C0 8E4D0000 */ lw $t5, ($s2) +/* 097DC4 800971C4 8FA200A0 */ lw $v0, 0xa0($sp) +/* 097DC8 800971C8 16CD000C */ bne $s6, $t5, .L800971FC +/* 097DCC 800971CC 24040007 */ li $a0, 7 +/* 097DD0 800971D0 240B00FF */ li $t3, 255 +/* 097DD4 800971D4 AFAB0014 */ sw $t3, 0x14($sp) +/* 097DD8 800971D8 24040007 */ li $a0, 7 +/* 097DDC 800971DC 240500FF */ li $a1, 255 +/* 097DE0 800971E0 240600FF */ li $a2, 255 +/* 097DE4 800971E4 240700FF */ li $a3, 255 +/* 097DE8 800971E8 AFA20010 */ sw $v0, 0x10($sp) +/* 097DEC 800971EC 0C031400 */ jal set_current_text_colour +/* 097DF0 800971F0 AFA200A0 */ sw $v0, 0xa0($sp) +/* 097DF4 800971F4 1000000A */ b .L80097220 +/* 097DF8 800971F8 8FA600A8 */ lw $a2, 0xa8($sp) +.L800971FC: +/* 097DFC 800971FC 240C00FF */ li $t4, 255 +/* 097E00 80097200 AFAC0014 */ sw $t4, 0x14($sp) +/* 097E04 80097204 240500FF */ li $a1, 255 +/* 097E08 80097208 240600FF */ li $a2, 255 +/* 097E0C 8009720C 240700FF */ li $a3, 255 +/* 097E10 80097210 AFA00010 */ sw $zero, 0x10($sp) +/* 097E14 80097214 0C031400 */ jal set_current_text_colour +/* 097E18 80097218 AFA200A0 */ sw $v0, 0xa0($sp) +/* 097E1C 8009721C 8FA600A8 */ lw $a2, 0xa8($sp) +.L80097220: +/* 097E20 80097220 8E070000 */ lw $a3, ($s0) +/* 097E24 80097224 240E0001 */ li $t6, 1 +/* 097E28 80097228 240F000C */ li $t7, 12 +/* 097E2C 8009722C AFAF0014 */ sw $t7, 0x14($sp) +/* 097E30 80097230 AFAE0010 */ sw $t6, 0x10($sp) +/* 097E34 80097234 24040007 */ li $a0, 7 +/* 097E38 80097238 0C03145A */ jal render_dialogue_text +/* 097E3C 8009723C 24050050 */ li $a1, 80 +/* 097E40 80097240 8E280000 */ lw $t0, ($s1) +/* 097E44 80097244 8FB800A8 */ lw $t8, 0xa8($sp) +/* 097E48 80097248 26D60001 */ addiu $s6, $s6, 1 +/* 097E4C 8009724C 02C8082A */ slt $at, $s6, $t0 +/* 097E50 80097250 27090010 */ addiu $t1, $t8, 0x10 +/* 097E54 80097254 26100004 */ addiu $s0, $s0, 4 +/* 097E58 80097258 1420FFD9 */ bnez $at, .L800971C0 +/* 097E5C 8009725C AFA900A8 */ sw $t1, 0xa8($sp) +.L80097260: +/* 097E60 80097260 0C03157D */ jal open_dialogue_box +/* 097E64 80097264 24040007 */ li $a0, 7 +.L80097268: +/* 097E68 80097268 8FBF005C */ lw $ra, 0x5c($sp) +/* 097E6C 8009726C C7B50028 */ lwc1 $f21, 0x28($sp) +/* 097E70 80097270 C7B4002C */ lwc1 $f20, 0x2c($sp) +/* 097E74 80097274 C7B70030 */ lwc1 $f23, 0x30($sp) +/* 097E78 80097278 C7B60034 */ lwc1 $f22, 0x34($sp) +/* 097E7C 8009727C 8FB00038 */ lw $s0, 0x38($sp) +/* 097E80 80097280 8FB1003C */ lw $s1, 0x3c($sp) +/* 097E84 80097284 8FB20040 */ lw $s2, 0x40($sp) +/* 097E88 80097288 8FB30044 */ lw $s3, 0x44($sp) +/* 097E8C 8009728C 8FB40048 */ lw $s4, 0x48($sp) +/* 097E90 80097290 8FB5004C */ lw $s5, 0x4c($sp) +/* 097E94 80097294 8FB60050 */ lw $s6, 0x50($sp) +/* 097E98 80097298 8FB70054 */ lw $s7, 0x54($sp) +/* 097E9C 8009729C 8FBE0058 */ lw $fp, 0x58($sp) +/* 097EA0 800972A0 03E00008 */ jr $ra +/* 097EA4 800972A4 27BD00B0 */ addiu $sp, $sp, 0xb0 + diff --git a/asm/non_matchings/menu/func_80099E8C.s b/asm/non_matchings/menu/func_80099E8C.s index bdf596f1..8d8193e5 100644 --- a/asm/non_matchings/menu/func_80099E8C.s +++ b/asm/non_matchings/menu/func_80099E8C.s @@ -437,7 +437,7 @@ glabel func_80099E8C /* 09B104 8009A504 332900FF */ andi $t1, $t9, 0xff /* 09B108 8009A508 19400063 */ blez $t2, .L8009A698 /* 09B10C 8009A50C AFA900D8 */ sw $t1, 0xd8($sp) -/* 09B110 8009A510 0C0315B4 */ jal func_800C56D0 +/* 09B110 8009A510 0C0315B4 */ jal clear_dialogue_box_open_flag /* 09B114 8009A514 24040007 */ li $a0, 7 /* 09B118 8009A518 0C031525 */ jal assign_dialogue_box_id /* 09B11C 8009A51C 24040007 */ li $a0, 7 diff --git a/asm/non_matchings/objects/func_8000CC7C.s b/asm/non_matchings/objects/func_8000CC7C.s index f25794da..ec3da172 100644 --- a/asm/non_matchings/objects/func_8000CC7C.s +++ b/asm/non_matchings/objects/func_8000CC7C.s @@ -221,7 +221,7 @@ glabel func_8000CC7C /* 00DB90 8000CF90 AC2DAEF0 */ sw $t5, %lo(gNumRacers)($at) /* 00DB94 8000CF94 AFA20144 */ sw $v0, 0x144($sp) /* 00DB98 8000CF98 A2000000 */ sb $zero, ($s0) -/* 00DB9C 8000CF9C 0C01B067 */ jal func_8006C19C +/* 00DB9C 8000CF9C 0C01B067 */ jal is_two_player_adventure_race /* 00DBA0 8000CFA0 AFA20058 */ sw $v0, 0x58($sp) /* 00DBA4 8000CFA4 10400006 */ beqz $v0, .L8000CFC0 /* 00DBA8 8000CFA8 24190002 */ li $t9, 2 @@ -658,7 +658,7 @@ glabel func_8000CC7C /* 00E184 8000D584 24010004 */ li $at, 4 /* 00E188 8000D588 11C10006 */ beq $t6, $at, .L8000D5A4 /* 00E18C 8000D58C 00002025 */ move $a0, $zero -/* 00E190 8000D590 0C01B067 */ jal func_8006C19C +/* 00E190 8000D590 0C01B067 */ jal is_two_player_adventure_race /* 00E194 8000D594 AFA60054 */ sw $a2, 0x54($sp) /* 00E198 8000D598 8FA60054 */ lw $a2, 0x54($sp) /* 00E19C 8000D59C 10400006 */ beqz $v0, .L8000D5B8 @@ -1299,7 +1299,7 @@ glabel L8000D98C /* 00EAA8 8000DEA8 00000000 */ nop /* 00EAAC 8000DEAC 14400014 */ bnez $v0, .L8000DF00 /* 00EAB0 8000DEB0 00000000 */ nop -/* 00EAB4 8000DEB4 0C01B067 */ jal func_8006C19C +/* 00EAB4 8000DEB4 0C01B067 */ jal is_two_player_adventure_race /* 00EAB8 8000DEB8 00000000 */ nop /* 00EABC 8000DEBC 14400010 */ bnez $v0, .L8000DF00 /* 00EAC0 8000DEC0 00009025 */ move $s2, $zero diff --git a/asm/non_matchings/objects/func_80010994.s b/asm/non_matchings/objects/func_80010994.s index 03f9d33c..552fbed7 100644 --- a/asm/non_matchings/objects/func_80010994.s +++ b/asm/non_matchings/objects/func_80010994.s @@ -280,7 +280,7 @@ glabel func_80010994 /* 011994 80010D94 00000000 */ nop /* 011998 80010D98 12480008 */ beq $s2, $t0, .L80010DBC /* 01199C 80010D9C 26310001 */ addiu $s1, $s1, 1 -/* 0119A0 80010DA0 0C010FB3 */ jal func_80043ECC +/* 0119A0 80010DA0 0C010FB3 */ jal increment_ai_behaviour_chances /* 0119A4 80010DA4 02803025 */ move $a2, $s4 /* 0119A8 80010DA8 3C078012 */ lui $a3, %hi(gNumRacers) # $a3, 0x8012 /* 0119AC 80010DAC 8CE7AEF0 */ lw $a3, %lo(gNumRacers)($a3) diff --git a/asm/non_matchings/objects/func_8001A8F4.s b/asm/non_matchings/objects/func_8001A8F4.s index f8de8a96..2375f837 100644 --- a/asm/non_matchings/objects/func_8001A8F4.s +++ b/asm/non_matchings/objects/func_8001A8F4.s @@ -339,7 +339,7 @@ glabel func_8001A8F4 /* 01B9E0 8001ADE0 00000000 */ nop /* 01B9E4 8001ADE4 12000013 */ beqz $s0, .L8001AE34 /* 01B9E8 8001ADE8 8FBF001C */ lw $ra, 0x1c($sp) -/* 01B9EC 8001ADEC 0C030063 */ jal fxFadeOn +/* 01B9EC 8001ADEC 0C030063 */ jal check_fadeout_transition /* 01B9F0 8001ADF0 00000000 */ nop /* 01B9F4 8001ADF4 1440000F */ bnez $v0, .L8001AE34 /* 01B9F8 8001ADF8 8FBF001C */ lw $ra, 0x1c($sp) diff --git a/asm/non_matchings/objects/func_8001F460.s b/asm/non_matchings/objects/func_8001F460.s index c0615441..9a149984 100644 --- a/asm/non_matchings/objects/func_8001F460.s +++ b/asm/non_matchings/objects/func_8001F460.s @@ -357,7 +357,7 @@ glabel func_8001F460 /* 020548 8001F948 00580019 */ multu $v0, $t8 /* 02054C 8001F94C 0000C812 */ mflo $t9 /* 020550 8001F950 A7B900A8 */ sh $t9, 0xa8($sp) -/* 020554 8001F954 0C030063 */ jal fxFadeOn +/* 020554 8001F954 0C030063 */ jal check_fadeout_transition /* 020558 8001F958 00000000 */ nop /* 02055C 8001F95C 10400006 */ beqz $v0, .L8001F978 /* 020560 8001F960 00000000 */ nop diff --git a/asm/non_matchings/racer/func_80042D20.s b/asm/non_matchings/racer/func_80042D20.s index 2f877d85..5e7f60e1 100644 --- a/asm/non_matchings/racer/func_80042D20.s +++ b/asm/non_matchings/racer/func_80042D20.s @@ -48,7 +48,7 @@ glabel func_80042D20 /* 04395C 80042D5C AFA20050 */ sw $v0, 0x50($sp) /* 043960 80042D60 0C006EAB */ jal get_racer_objects_by_position /* 043964 80042D64 27A40068 */ addiu $a0, $sp, 0x68 -/* 043968 80042D68 0C01B063 */ jal func_8006C18C +/* 043968 80042D68 0C01B063 */ jal get_ai_behaviour_table /* 04396C 80042D6C AFA20060 */ sw $v0, 0x60($sp) /* 043970 80042D70 AFA20054 */ sw $v0, 0x54($sp) /* 043974 80042D74 860301C6 */ lh $v1, 0x1c6($s0) diff --git a/asm/non_matchings/tracks/func_8002B0F4.s b/asm/non_matchings/tracks/func_8002B0F4.s index d34bd818..849a1629 100644 --- a/asm/non_matchings/tracks/func_8002B0F4.s +++ b/asm/non_matchings/tracks/func_8002B0F4.s @@ -396,10 +396,10 @@ glabel func_8002B0F4 /* 02C2CC 8002B6CC A06E0010 */ sb $t6, 0x10($v1) /* 02C2D0 8002B6D0 030FF821 */ addu $ra, $t8, $t7 /* 02C2D4 8002B6D4 83F9002B */ lb $t9, 0x2b($ra) -/* 02C2D8 8002B6D8 3C188012 */ lui $t8, %hi(D_8011D384) # $t8, 0x8012 +/* 02C2D8 8002B6D8 3C188012 */ lui $t8, %hi(gWaveBlockCount) # $t8, 0x8012 /* 02C2DC 8002B6DC 1320000D */ beqz $t9, .L8002B714 /* 02C2E0 8002B6E0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 02C2E4 8002B6E4 8F18D384 */ lw $t8, %lo(D_8011D384)($t8) +/* 02C2E4 8002B6E4 8F18D384 */ lw $t8, %lo(gWaveBlockCount)($t8) /* 02C2E8 8002B6E8 02002025 */ move $a0, $s0 /* 02C2EC 8002B6EC 13000009 */ beqz $t8, .L8002B714 /* 02C2F0 8002B6F0 00483821 */ addu $a3, $v0, $t0 diff --git a/asm/non_matchings/tracks/func_8002E234.s b/asm/non_matchings/tracks/func_8002E234.s index 2b02c61f..26154553 100644 --- a/asm/non_matchings/tracks/func_8002E234.s +++ b/asm/non_matchings/tracks/func_8002E234.s @@ -82,9 +82,9 @@ glabel func_8002E234 /* 02EF44 8002E344 01906821 */ addu $t5, $t4, $s0 /* 02EF48 8002E348 A68D0000 */ sh $t5, ($s4) /* 02EF4C 8002E34C 8EAE0040 */ lw $t6, 0x40($s5) -/* 02EF50 8002E350 3C198012 */ lui $t9, %hi(D_8011D384) # $t9, 0x8012 +/* 02EF50 8002E350 3C198012 */ lui $t9, %hi(gWaveBlockCount) # $t9, 0x8012 /* 02EF54 8002E354 85CF0046 */ lh $t7, 0x46($t6) -/* 02EF58 8002E358 8F39D384 */ lw $t9, %lo(D_8011D384)($t9) +/* 02EF58 8002E358 8F39D384 */ lw $t9, %lo(gWaveBlockCount)($t9) /* 02EF5C 8002E35C C7B2006C */ lwc1 $f18, 0x6c($sp) /* 02EF60 8002E360 3C018012 */ lui $at, %hi(D_8011D0CC) # $at, 0x8012 /* 02EF64 8002E364 01F0C021 */ addu $t8, $t7, $s0 @@ -338,7 +338,7 @@ glabel func_8002E234 /* 02F318 8002E718 3C018012 */ lui $at, %hi(D_8011D0DC) # $at, 0x8012 /* 02F31C 8002E71C 02140019 */ multu $s0, $s4 /* 02F320 8002E720 8E6F0000 */ lw $t7, ($s3) -/* 02F324 8002E724 3C0A8012 */ lui $t2, %hi(D_8011D384) # $t2, 0x8012 +/* 02F324 8002E724 3C0A8012 */ lui $t2, %hi(gWaveBlockCount) # $t2, 0x8012 /* 02F328 8002E728 8DF80004 */ lw $t8, 4($t7) /* 02F32C 8002E72C 0000C812 */ mflo $t9 /* 02F330 8002E730 03194021 */ addu $t0, $t8, $t9 @@ -346,7 +346,7 @@ glabel func_8002E234 /* 02F338 8002E738 00000000 */ nop /* 02F33C 8002E73C 11200009 */ beqz $t1, .L8002E764 /* 02F340 8002E740 00000000 */ nop -/* 02F344 8002E744 8D4AD384 */ lw $t2, %lo(D_8011D384)($t2) +/* 02F344 8002E744 8D4AD384 */ lw $t2, %lo(gWaveBlockCount)($t2) /* 02F348 8002E748 00000000 */ nop /* 02F34C 8002E74C 11400005 */ beqz $t2, .L8002E764 /* 02F350 8002E750 00000000 */ nop diff --git a/asm/non_matchings/waves/func_800B7EB4.s b/asm/non_matchings/waves/func_800B7EB4.s index 1fe5dce1..cac0425f 100644 --- a/asm/non_matchings/waves/func_800B7EB4.s +++ b/asm/non_matchings/waves/func_800B7EB4.s @@ -3,7 +3,7 @@ glabel func_800B7EB4 /* 0B8AB8 800B7EB8 AFBF0024 */ sw $ra, 0x24($sp) /* 0B8ABC 800B7EBC AFB20020 */ sw $s2, 0x20($sp) /* 0B8AC0 800B7EC0 AFB1001C */ sw $s1, 0x1c($sp) -/* 0B8AC4 800B7EC4 0C02DF48 */ jal func_800B7D20 +/* 0B8AC4 800B7EC4 0C02DF48 */ jal free_waves /* 0B8AC8 800B7EC8 AFB00018 */ sw $s0, 0x18($sp) /* 0B8ACC 800B7ECC 3C128013 */ lui $s2, %hi(D_80129FC8) # $s2, 0x8013 /* 0B8AD0 800B7ED0 26529FC8 */ addiu $s2, %lo(D_80129FC8) # addiu $s2, $s2, -0x6038 diff --git a/asm/non_matchings/waves/func_800B82B4.s b/asm/non_matchings/waves/func_800B82B4.s index 09611194..33110f7a 100644 --- a/asm/non_matchings/waves/func_800B82B4.s +++ b/asm/non_matchings/waves/func_800B82B4.s @@ -31,16 +31,16 @@ glabel func_800B82B4 /* 0B8F0C 800B830C 8FA40070 */ lw $a0, 0x70($sp) /* 0B8F10 800B8310 0C02EF77 */ jal func_800BBDDC /* 0B8F14 800B8314 02002825 */ move $a1, $s0 -/* 0B8F18 800B8318 3C0E8013 */ lui $t6, %hi(D_8012A0A8) # $t6, 0x8013 -/* 0B8F1C 800B831C 8DCEA0A8 */ lw $t6, %lo(D_8012A0A8)($t6) +/* 0B8F18 800B8318 3C0E8013 */ lui $t6, %hi(gWaveBoundingBoxDiffX) # $t6, 0x8013 +/* 0B8F1C 800B831C 8DCEA0A8 */ lw $t6, %lo(gWaveBoundingBoxDiffX)($t6) /* 0B8F20 800B8320 3C058013 */ lui $a1, %hi(D_8012A0A0) # $a1, 0x8013 /* 0B8F24 800B8324 448E2000 */ mtc1 $t6, $f4 /* 0B8F28 800B8328 24A5A0A0 */ addiu $a1, %lo(D_8012A0A0) # addiu $a1, $a1, -0x5f60 /* 0B8F2C 800B832C 468021A0 */ cvt.s.w $f6, $f4 -/* 0B8F30 800B8330 3C0F8013 */ lui $t7, %hi(D_8012A0AC) # $t7, 0x8013 +/* 0B8F30 800B8330 3C0F8013 */ lui $t7, %hi(gWaveBoundingBoxDiffZ) # $t7, 0x8013 /* 0B8F34 800B8334 3C148013 */ lui $s4, %hi(D_80129FC8) # $s4, 0x8013 /* 0B8F38 800B8338 E4A60000 */ swc1 $f6, ($a1) -/* 0B8F3C 800B833C 8DEFA0AC */ lw $t7, %lo(D_8012A0AC)($t7) +/* 0B8F3C 800B833C 8DEFA0AC */ lw $t7, %lo(gWaveBoundingBoxDiffZ)($t7) /* 0B8F40 800B8340 26949FC8 */ addiu $s4, %lo(D_80129FC8) # addiu $s4, $s4, -0x6038 /* 0B8F44 800B8344 8E820000 */ lw $v0, ($s4) /* 0B8F48 800B8348 448F4000 */ mtc1 $t7, $f8 @@ -58,14 +58,14 @@ glabel func_800B82B4 /* 0B8F78 800B8378 2652A0BC */ addiu $s2, %lo(D_8012A0BC) # addiu $s2, $s2, -0x5f44 /* 0B8F7C 800B837C 2631A0B8 */ addiu $s1, %lo(D_8012A0B8) # addiu $s1, $s1, -0x5f48 /* 0B8F80 800B8380 3C018013 */ lui $at, %hi(D_8012A084) # $at, 0x8013 -/* 0B8F84 800B8384 3C038013 */ lui $v1, %hi(D_8012A080) # $v1, 0x8013 +/* 0B8F84 800B8384 3C038013 */ lui $v1, %hi(gWaveTexture) # $v1, 0x8013 /* 0B8F88 800B8388 0000B825 */ move $s7, $zero /* 0B8F8C 800B838C 46003203 */ div.s $f8, $f6, $f0 /* 0B8F90 800B8390 E6240000 */ swc1 $f4, ($s1) /* 0B8F94 800B8394 E6480000 */ swc1 $f8, ($s2) /* 0B8F98 800B8398 AC20A084 */ sw $zero, %lo(D_8012A084)($at) /* 0B8F9C 800B839C 3C018013 */ lui $at, %hi(D_8012A088) # $at, 0x8013 -/* 0B8FA0 800B83A0 8C63A080 */ lw $v1, %lo(D_8012A080)($v1) +/* 0B8FA0 800B83A0 8C63A080 */ lw $v1, %lo(gWaveTexture)($v1) /* 0B8FA4 800B83A4 AC20A088 */ sw $zero, %lo(D_8012A088)($at) /* 0B8FA8 800B83A8 8E990030 */ lw $t9, 0x30($s4) /* 0B8FAC 800B83AC 90780000 */ lbu $t8, ($v1) @@ -591,9 +591,9 @@ glabel func_800B82B4 /* 0B9738 800B8B38 AC203188 */ sw $zero, %lo(D_800E3188)($at) /* 0B973C 800B8B3C 3C018013 */ lui $at, %hi(D_8012A728) # $at, 0x8013 /* 0B9740 800B8B40 AC20A728 */ sw $zero, %lo(D_8012A728)($at) -/* 0B9744 800B8B44 3C01800E */ lui $at, %hi(D_800E3198) # $at, 0x800e +/* 0B9744 800B8B44 3C01800E */ lui $at, %hi(gWaveGeneratorObj) # $at, 0x800e /* 0B9748 800B8B48 8FBF0044 */ lw $ra, 0x44($sp) -/* 0B974C 800B8B4C AC203198 */ sw $zero, %lo(D_800E3198)($at) +/* 0B974C 800B8B4C AC203198 */ sw $zero, %lo(gWaveGeneratorObj)($at) /* 0B9750 800B8B50 3C018013 */ lui $at, %hi(D_8012A018) # $at, 0x8013 /* 0B9754 800B8B54 C7B50018 */ lwc1 $f21, 0x18($sp) /* 0B9758 800B8B58 C7B4001C */ lwc1 $f20, 0x1c($sp) diff --git a/asm/non_matchings/waves/func_800B8C04.s b/asm/non_matchings/waves/func_800B8C04.s index 84c1ece8..591ff33f 100644 --- a/asm/non_matchings/waves/func_800B8C04.s +++ b/asm/non_matchings/waves/func_800B8C04.s @@ -1,16 +1,16 @@ glabel func_800B8C04 /* 0B9804 800B8C04 3C0A8013 */ lui $t2, %hi(D_8012A0D0) # $t2, 0x8013 /* 0B9808 800B8C08 8D4AA0D0 */ lw $t2, %lo(D_8012A0D0)($t2) -/* 0B980C 800B8C0C 3C088013 */ lui $t0, %hi(D_8012A0A8) # $t0, 0x8013 -/* 0B9810 800B8C10 8D08A0A8 */ lw $t0, %lo(D_8012A0A8)($t0) +/* 0B980C 800B8C0C 3C088013 */ lui $t0, %hi(gWaveBoundingBoxDiffX) # $t0, 0x8013 +/* 0B9810 800B8C10 8D08A0A8 */ lw $t0, %lo(gWaveBoundingBoxDiffX)($t0) /* 0B9814 800B8C14 008A7023 */ subu $t6, $a0, $t2 /* 0B9818 800B8C18 01C8001A */ div $zero, $t6, $t0 /* 0B981C 800B8C1C 27BDFFB0 */ addiu $sp, $sp, -0x50 /* 0B9820 800B8C20 AFA50054 */ sw $a1, 0x54($sp) /* 0B9824 800B8C24 3C0C8013 */ lui $t4, %hi(D_8012A0D4) # $t4, 0x8013 /* 0B9828 800B8C28 8D8CA0D4 */ lw $t4, %lo(D_8012A0D4)($t4) -/* 0B982C 800B8C2C 3C098013 */ lui $t1, %hi(D_8012A0AC) # $t1, 0x8013 -/* 0B9830 800B8C30 8D29A0AC */ lw $t1, %lo(D_8012A0AC)($t1) +/* 0B982C 800B8C2C 3C098013 */ lui $t1, %hi(gWaveBoundingBoxDiffZ) # $t1, 0x8013 +/* 0B9830 800B8C30 8D29A0AC */ lw $t1, %lo(gWaveBoundingBoxDiffZ)($t1) /* 0B9834 800B8C34 00CC7823 */ subu $t7, $a2, $t4 /* 0B9838 800B8C38 AFB70034 */ sw $s7, 0x34($sp) /* 0B983C 800B8C3C AFB00018 */ sw $s0, 0x18($sp) diff --git a/asm/non_matchings/waves/func_800BA8E4.s b/asm/non_matchings/waves/func_800BA8E4.s index f47cf8e1..68432da7 100644 --- a/asm/non_matchings/waves/func_800BA8E4.s +++ b/asm/non_matchings/waves/func_800BA8E4.s @@ -58,7 +58,7 @@ glabel func_800BA8E4 /* 0BB5B8 800BA9B8 8FF8004C */ lw $t8, 0x4c($ra) /* 0BB5BC 800BA9BC 3C190001 */ lui $t9, 1 /* 0BB5C0 800BA9C0 1300006F */ beqz $t8, .L800BAB80 -/* 0BB5C4 800BA9C4 3C0F8013 */ lui $t7, %hi(D_8012A07C) # $t7, 0x8013 +/* 0BB5C4 800BA9C4 3C0F8013 */ lui $t7, %hi(gWaveBatch) # $t7, 0x8013 /* 0BB5C8 800BA9C8 8E270000 */ lw $a3, ($s1) /* 0BB5CC 800BA9CC 3C0EB600 */ lui $t6, 0xb600 /* 0BB5D0 800BA9D0 24F90008 */ addiu $t9, $a3, 8 @@ -73,11 +73,11 @@ glabel func_800BA8E4 /* 0BB5F4 800BA9F4 0005C200 */ sll $t8, $a1, 8 /* 0BB5F8 800BA9F8 0C01ED1B */ jal func_8007B46C /* 0BB5FC 800BA9FC 03002825 */ move $a1, $t8 -/* 0BB600 800BAA00 3C198013 */ lui $t9, %hi(D_8012A07C) # $t9, 0x8013 -/* 0BB604 800BAA04 8F39A07C */ lw $t9, %lo(D_8012A07C)($t9) -/* 0BB608 800BAA08 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 +/* 0BB600 800BAA00 3C198013 */ lui $t9, %hi(gWaveBatch) # $t9, 0x8013 +/* 0BB604 800BAA04 8F39A07C */ lw $t9, %lo(gWaveBatch)($t9) +/* 0BB608 800BAA08 3C048013 */ lui $a0, %hi(gWaveTexture) # $a0, 0x8013 /* 0BB60C 800BAA0C 93250007 */ lbu $a1, 7($t9) -/* 0BB610 800BAA10 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) +/* 0BB610 800BAA10 8C84A080 */ lw $a0, %lo(gWaveTexture)($a0) /* 0BB614 800BAA14 00057380 */ sll $t6, $a1, 0xe /* 0BB618 800BAA18 00408025 */ move $s0, $v0 /* 0BB61C 800BAA1C 0C01ED1B */ jal func_8007B46C @@ -179,10 +179,10 @@ glabel func_800BA8E4 /* 0BB78C 800BAB8C AE2E0000 */ sw $t6, ($s1) /* 0BB790 800BAB90 ACF90004 */ sw $t9, 4($a3) /* 0BB794 800BAB94 ACF80000 */ sw $t8, ($a3) -/* 0BB798 800BAB98 8DEFA07C */ lw $t7, %lo(D_8012A07C)($t7) -/* 0BB79C 800BAB9C 3C048013 */ lui $a0, %hi(D_8012A080) # $a0, 0x8013 +/* 0BB798 800BAB98 8DEFA07C */ lw $t7, %lo(gWaveBatch)($t7) +/* 0BB79C 800BAB9C 3C048013 */ lui $a0, %hi(gWaveTexture) # $a0, 0x8013 /* 0BB7A0 800BABA0 91E50007 */ lbu $a1, 7($t7) -/* 0BB7A4 800BABA4 8C84A080 */ lw $a0, %lo(D_8012A080)($a0) +/* 0BB7A4 800BABA4 8C84A080 */ lw $a0, %lo(gWaveTexture)($a0) /* 0BB7A8 800BABA8 00057380 */ sll $t6, $a1, 0xe /* 0BB7AC 800BABAC 0C01ED1B */ jal func_8007B46C /* 0BB7B0 800BABB0 01C02825 */ move $a1, $t6 diff --git a/asm/non_matchings/waves/func_800BBF78.s b/asm/non_matchings/waves/func_800BBF78.s index de81a206..2768ae0b 100644 --- a/asm/non_matchings/waves/func_800BBF78.s +++ b/asm/non_matchings/waves/func_800BBF78.s @@ -83,8 +83,8 @@ glabel func_800BBF78 /* 0BCCA4 800BC0A4 1420FFE1 */ bnez $at, .L800BC02C /* 0BCCA8 800BC0A8 2610000C */ addiu $s0, $s0, 0xc .L800BC0AC: -/* 0BCCAC 800BC0AC 3C198013 */ lui $t9, %hi(D_8012A0B0) # $t9, 0x8013 -/* 0BCCB0 800BC0B0 8F24A0B0 */ lw $a0, %lo(D_8012A0B0)($t9) +/* 0BCCAC 800BC0AC 3C198013 */ lui $t9, %hi(gWaveBoundingBoxX1) # $t9, 0x8013 +/* 0BCCB0 800BC0B0 8F24A0B0 */ lw $a0, %lo(gWaveBoundingBoxX1)($t9) /* 0BCCB4 800BC0B4 26D6A0D0 */ addiu $s6, %lo(D_8012A0D0) # addiu $s6, $s6, -0x5f30 /* 0BCCB8 800BC0B8 AEC40000 */ sw $a0, ($s6) /* 0BCCBC 800BC0BC 8C620000 */ lw $v0, ($v1) @@ -97,8 +97,8 @@ glabel func_800BBF78 /* 0BCCD8 800BC0D8 0044082A */ slt $at, $v0, $a0 /* 0BCCDC 800BC0DC 10200009 */ beqz $at, .L800BC104 /* 0BCCE0 800BC0E0 3C158013 */ lui $s5, %hi(D_8012A0D4) # $s5, 0x8013 -/* 0BCCE4 800BC0E4 3C068013 */ lui $a2, %hi(D_8012A0A8) # $a2, 0x8013 -/* 0BCCE8 800BC0E8 8CC6A0A8 */ lw $a2, %lo(D_8012A0A8)($a2) +/* 0BCCE4 800BC0E4 3C068013 */ lui $a2, %hi(gWaveBoundingBoxDiffX) # $a2, 0x8013 +/* 0BCCE8 800BC0E8 8CC6A0A8 */ lw $a2, %lo(gWaveBoundingBoxDiffX)($a2) /* 0BCCEC 800BC0EC 00000000 */ nop .L800BC0F0: /* 0BCCF0 800BC0F0 00867023 */ subu $t6, $a0, $a2 @@ -107,17 +107,17 @@ glabel func_800BBF78 /* 0BCCFC 800BC0FC 1420FFFC */ bnez $at, .L800BC0F0 /* 0BCD00 800BC100 01C02025 */ move $a0, $t6 .L800BC104: -/* 0BCD04 800BC104 3C188013 */ lui $t8, %hi(D_8012A0B4) # $t8, 0x8013 -/* 0BCD08 800BC108 8F18A0B4 */ lw $t8, %lo(D_8012A0B4)($t8) +/* 0BCD04 800BC104 3C188013 */ lui $t8, %hi(gWaveBoundingBoxZ1) # $t8, 0x8013 +/* 0BCD08 800BC108 8F18A0B4 */ lw $t8, %lo(gWaveBoundingBoxZ1)($t8) /* 0BCD0C 800BC10C 26B5A0D4 */ addiu $s5, %lo(D_8012A0D4) # addiu $s5, $s5, -0x5f2c -/* 0BCD10 800BC110 3C068013 */ lui $a2, %hi(D_8012A0A8) # $a2, 0x8013 +/* 0BCD10 800BC110 3C068013 */ lui $a2, %hi(gWaveBoundingBoxDiffX) # $a2, 0x8013 /* 0BCD14 800BC114 AEB80000 */ sw $t8, ($s5) -/* 0BCD18 800BC118 8CC6A0A8 */ lw $a2, %lo(D_8012A0A8)($a2) +/* 0BCD18 800BC118 8CC6A0A8 */ lw $a2, %lo(gWaveBoundingBoxDiffX)($a2) /* 0BCD1C 800BC11C 00B8082A */ slt $at, $a1, $t8 /* 0BCD20 800BC120 10200009 */ beqz $at, .L800BC148 /* 0BCD24 800BC124 03001025 */ move $v0, $t8 -/* 0BCD28 800BC128 3C038013 */ lui $v1, %hi(D_8012A0AC) # $v1, 0x8013 -/* 0BCD2C 800BC12C 8C63A0AC */ lw $v1, %lo(D_8012A0AC)($v1) +/* 0BCD28 800BC128 3C038013 */ lui $v1, %hi(gWaveBoundingBoxDiffZ) # $v1, 0x8013 +/* 0BCD2C 800BC12C 8C63A0AC */ lw $v1, %lo(gWaveBoundingBoxDiffZ)($v1) /* 0BCD30 800BC130 00000000 */ nop .L800BC134: /* 0BCD34 800BC134 00437823 */ subu $t7, $v0, $v1 @@ -128,8 +128,8 @@ glabel func_800BBF78 .L800BC148: /* 0BCD48 800BC148 00E4C823 */ subu $t9, $a3, $a0 /* 0BCD4C 800BC14C 0326001A */ div $zero, $t9, $a2 -/* 0BCD50 800BC150 3C1E8013 */ lui $fp, %hi(D_8012A0AC) # $fp, 0x8013 -/* 0BCD54 800BC154 27DEA0AC */ addiu $fp, %lo(D_8012A0AC) # addiu $fp, $fp, -0x5f54 +/* 0BCD50 800BC150 3C1E8013 */ lui $fp, %hi(gWaveBoundingBoxDiffZ) # $fp, 0x8013 +/* 0BCD54 800BC154 27DEA0AC */ addiu $fp, %lo(gWaveBoundingBoxDiffZ) # addiu $fp, $fp, -0x5f54 /* 0BCD58 800BC158 01027823 */ subu $t7, $t0, $v0 /* 0BCD5C 800BC15C 3C178013 */ lui $s7, %hi(D_8012A0D8) # $s7, 0x8013 /* 0BCD60 800BC160 26F7A0D8 */ addiu $s7, %lo(D_8012A0D8) # addiu $s7, $s7, -0x5f28 @@ -263,11 +263,11 @@ glabel func_800BBF78 /* 0BCF3C 800BC33C 02808025 */ move $s0, $s4 /* 0BCF40 800BC340 03190019 */ multu $t8, $t9 /* 0BCF44 800BC344 3C038013 */ lui $v1, %hi(D_8012A1E8) # $v1, 0x8013 -/* 0BCF48 800BC348 3C148013 */ lui $s4, %hi(D_8012A0A8) # $s4, 0x8013 +/* 0BCF48 800BC348 3C148013 */ lui $s4, %hi(gWaveBoundingBoxDiffX) # $s4, 0x8013 /* 0BCF4C 800BC34C 0000F825 */ move $ra, $zero /* 0BCF50 800BC350 00001025 */ move $v0, $zero /* 0BCF54 800BC354 2463A1E8 */ addiu $v1, %lo(D_8012A1E8) # addiu $v1, $v1, -0x5e18 -/* 0BCF58 800BC358 2694A0A8 */ addiu $s4, %lo(D_8012A0A8) # addiu $s4, $s4, -0x5f58 +/* 0BCF58 800BC358 2694A0A8 */ addiu $s4, %lo(gWaveBoundingBoxDiffX) # addiu $s4, $s4, -0x5f58 /* 0BCF5C 800BC35C 240C000A */ li $t4, 10 /* 0BCF60 800BC360 3C0B0040 */ lui $t3, 0x40 /* 0BCF64 800BC364 24050080 */ li $a1, 128 diff --git a/extract-ver/eu_1.0.config.json b/extract-ver/eu_1.0.config.json index f55becb9..23eeddfe 100644 --- a/extract-ver/eu_1.0.config.json +++ b/extract-ver/eu_1.0.config.json @@ -1,416 +1,416 @@ -{ - "config-name" : "Diddy Kong Racing (Europe v1.0)", - "checksum-md5" : "0f0b7b78b345fbf2581d834cb4a81245", - "subfolder" : "eu_1.0", - "code" : { - "sections" : [ - { - "type": "NoExtract", - "folder" : "", - "files" : [ - { "filename": "work-in-progress", "length" : "0xECBF0" } - ] - } - ] - }, - "assets" : { - "sections": [ - { - "type": "Binary", - "folder": "unknown_0", - "table": 1 - }, - { "type": "Table" }, - { - "type": "Textures", - "folder": "textures/3d", - "table": 3, - "flip-textures": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] - }, - { "type": "Table" }, - { - "type": "Textures", - "folder": "textures/2d", - "table": 5, - "flip-textures" : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - }, - { "type": "Table" }, - { - "type": "GameText", - "folder": "text/game", - "table": 7 - }, - { "type": "Table" }, - { - "type": "MenuText", - "folder": "text/menu", - "table": 9, - "filenames": [ - "english_menu_text", - "german_menu_text", - "french_menu_text", - "japanese_menu_text" - ] - }, - { "type": "Table" }, - { "type": "Empty", "table": 11}, - { "type": "Table" }, - { - "type": "Sprites", - "folder": "sprites", - "table": 13 - }, - { "type": "Table" }, - { "type": "Empty" }, - { - "type": "Miscellaneous", - "folder": "misc", - "table": 16, - "filenames": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "tracks_menu_ids", - "hub_area_ids", - "main_tracks_ids", - "battle_tracks_ids", - "boss_tracks_ids", - "", - "", - "RacerStats_Unknown0", - "RacerStats_Diddy", - "RacerStats_TT", - "RacerStats_Unknown1", - "RacerStats_Krunch", - "RacerStats_Bumper", - "RacerStats_Tiptup", - "RacerStats_Conker", - "RacerStats_Timber", - "RacerStats_Banjo", - "RacerStats_Drumstick", - "RacerStats_Pipsy", - "RacerStats_Unknown2", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "magic_codes", - "title_screen_demo_ids", - "", - "", - "", - "" - ] - }, - { "type": "Table" }, - { - "type": "Binary", - "folder": "ids", - "filenames": [ "hud_element_ids" ] - }, - { - "type": "Binary", - "folder": "ids", - "filenames": [ "menu_element_ids" ] - }, - { - "type": "Binary", - "folder": "bin", - "filenames": [ "unknown_table" ] - }, - { "type": "Table" }, - { - "type": "LevelObjectMap", - "folder": "levels/objectMaps", - "table": 20 - }, - { "type": "Table" }, - { - "type": "LevelHeaders", - "folder": "levels/headers", - "table": 22, - "filenames": [ - "CentralAreaHub", - "Bluey1", - "DragonForestHub", - "FossilCanyon", - "PirateLagoon", - "AncientLake", - "WalrusCove", - "HotTopVolcano", - "WhaleBay", - "SnowballValley", - "CrescentIsland", - "FireMountain", - "DinoDomainHub", - "EverfrostPeak", - "SherbetIslandHub", - "SpaceportAlpha", - "HorseshoeGulch", - "SpacedustAlley", - "GreenwoodVillage", - "BoulderCanyon", - "WindmillPlains", - "FrontEnd", - "CharacterSelect", - "TitleScreenSequence", - "SnowflakeMountainHub", - "SmokeyCastle", - "DarkwaterBeach", - "IciclePyramid", - "FrostyVillage", - "JungleFalls", - "TreasureCaves", - "HauntedWoods", - "DarkmoonCaverns", - "StarCity", - "TrophyRace", - "FutureFunLandHub", - "OpeningSequence", - "Wizpig1", - "Trickytops1", - "OptionsBackground", - "Bubbler1", - "Smokey1", - "WizpigMouthSequence", - "WizpigAmuletSequence", - "TTAmuletSequence", - "RocketSequence", - "Trickytops2", - "DinoDomainTrophyAnim", - "SnowflakeMountainTrophyAnim", - "SherbetIslandTrophyAnim", - "DragonForestTrophyAnim", - "FutureFunLandTrophyAnim", - "Bluey2", - "Bubbler2", - "Smokey2", - "Wizpig2", - "PartySequence", - "TricktopsAnim", - "SmokeyAnim", - "BlueyAnim", - "Wizpig1Anim", - "BubblerAnim", - "Wizpig2Anim", - "LastBit", - "LastBitB" - ] - }, - { "type": "Table" }, - { - "type": "LevelNames", - "folder": "levels/names", - "table": 24, - "filenames": [ - "CentralAreaHub", - "Bluey1", - "DragonForestHub", - "FossilCanyon", - "PirateLagoon", - "AncientLake", - "WalrusCove", - "HotTopVolcano", - "WhaleBay", - "SnowballValley", - "CrescentIsland", - "FireMountain", - "DinoDomainHub", - "EverfrostPeak", - "SherbetIslandHub", - "SpaceportAlpha", - "HorseshoeGulch", - "SpacedustAlley", - "GreenwoodVillage", - "BoulderCanyon", - "WindmillPlains", - "FrontEnd", - "CharacterSelect", - "TitleScreenSequence", - "SnowflakeMountainHub", - "SmokeyCastle", - "DarkwaterBeach", - "IciclePyramid", - "FrostyVillage", - "JungleFalls", - "TreasureCaves", - "HauntedWoods", - "DarkmoonCaverns", - "StarCity", - "TrophyRace", - "FutureFunLandHub", - "OpeningSequence", - "Wizpig1", - "Trickytops1", - "OptionsBackground", - "Bubbler1", - "Smokey1", - "WizpigMouthSequence", - "WizpigAmuletSequence", - "TTAmuletSequence", - "RocketSequence", - "Trickytops2", - "DinoDomainTrophyAnim", - "SnowflakeMountainTrophyAnim", - "SherbetIslandTrophyAnim", - "DragonForestTrophyAnim", - "FutureFunLandTrophyAnim", - "Bluey2", - "Bubbler2", - "Smokey2", - "Wizpig2", - "PartySequence", - "TricktopsAnim", - "SmokeyAnim", - "BlueyAnim", - "Wizpig1Anim", - "BubblerAnim", - "Wizpig2Anim", - "LastBit", - "LastBitB" - ] - }, - { "type": "Table" }, - { - "type": "LevelModels", - "folder": "levels/models", - "table": 26 - }, - { "type": "Table" }, - { - "type": "ObjectModels", - "folder": "objects/models", - "table": 28 - }, - { - "type": "Binary", - "folder": "objects", - "filenames": [ "animation_ids" ] - }, - { "type": "Table" }, - { - "type": "ObjectAnimations", - "folder": "objects/animations", - "table": 31 - }, - { "type": "Table" }, - { - "type": "ObjectHeaders", - "folder": "objects/headers", - "table": 33 - }, - { - "type": "Binary", - "folder": "objects", - "filenames": [ "level_object_translation_table" ] - }, - { "type": "Table" }, - { "type": "Empty", "table": 36 }, - { "type": "Table" }, - { - "type": "Audio", - "folder": "audio", - "table": 38 - }, - { "type": "Table" }, - { - "type": "Particles", - "folder": "particles/particles", - "table": 40 - }, - { "type": "Table" }, - { - "type": "ParticleBehaviors", - "folder": "particles/behaviors", - "table": 42 - }, - { - "type": "Binary", - "folder": "fonts" - }, - { - "type": "Binary", - "folder": "fonts" - }, - { - "type": "Binary", - "folder": "fonts" - }, - { - "type": "Binary", - "folder": "ids" - }, - { "type": "Table" }, - { - "type": "TTGhosts", - "folder": "tt_ghosts", - "table": 48, - "filenames": [ - "FossilCanyon", - "PirateLagoon", - "AncientLake", - "WalrusCove", - "HotTopVolcano", - "WhaleBay", - "SnowballValley", - "CrescentIsland", - "EverfrostPeak", - "SpaceportAlpha", - "SpacedustAlley", - "GreenwoodVillage", - "BoulderCanyon", - "WindmillPlains", - "FrostyVillage", - "JungleFalls", - "TreasureCaves", - "HauntedWoods", - "DarkmoonCaverns", - "StarCity" - ] - } - ] - } -} - - - - - +{ + "config-name" : "Diddy Kong Racing (Europe v1.0)", + "checksum-md5" : "0f0b7b78b345fbf2581d834cb4a81245", + "subfolder" : "eu_1.0", + "code" : { + "sections" : [ + { + "type": "NoExtract", + "folder" : "", + "files" : [ + { "filename": "work-in-progress", "length" : "0xECBF0" } + ] + } + ] + }, + "assets" : { + "sections": [ + { + "type": "Binary", + "folder": "ai-racers", + "table": 1 + }, + { "type": "Table" }, + { + "type": "Textures", + "folder": "textures/3d", + "table": 3, + "flip-textures": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] + }, + { "type": "Table" }, + { + "type": "Textures", + "folder": "textures/2d", + "table": 5, + "flip-textures" : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + { "type": "Table" }, + { + "type": "GameText", + "folder": "text/game", + "table": 7 + }, + { "type": "Table" }, + { + "type": "MenuText", + "folder": "text/menu", + "table": 9, + "filenames": [ + "english_menu_text", + "german_menu_text", + "french_menu_text", + "japanese_menu_text" + ] + }, + { "type": "Table" }, + { "type": "Empty", "table": 11}, + { "type": "Table" }, + { + "type": "Sprites", + "folder": "sprites", + "table": 13 + }, + { "type": "Table" }, + { "type": "Empty" }, + { + "type": "Miscellaneous", + "folder": "misc", + "table": 16, + "filenames": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "tracks_menu_ids", + "hub_area_ids", + "main_tracks_ids", + "battle_tracks_ids", + "boss_tracks_ids", + "", + "", + "RacerStats_Unknown0", + "RacerStats_Diddy", + "RacerStats_TT", + "RacerStats_Unknown1", + "RacerStats_Krunch", + "RacerStats_Bumper", + "RacerStats_Tiptup", + "RacerStats_Conker", + "RacerStats_Timber", + "RacerStats_Banjo", + "RacerStats_Drumstick", + "RacerStats_Pipsy", + "RacerStats_Unknown2", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "magic_codes", + "title_screen_demo_ids", + "", + "", + "", + "" + ] + }, + { "type": "Table" }, + { + "type": "Binary", + "folder": "ids", + "filenames": [ "hud_element_ids" ] + }, + { + "type": "Binary", + "folder": "ids", + "filenames": [ "menu_element_ids" ] + }, + { + "type": "Binary", + "folder": "bin", + "filenames": [ "unknown_table" ] + }, + { "type": "Table" }, + { + "type": "LevelObjectMap", + "folder": "levels/objectMaps", + "table": 20 + }, + { "type": "Table" }, + { + "type": "LevelHeaders", + "folder": "levels/headers", + "table": 22, + "filenames": [ + "CentralAreaHub", + "Bluey1", + "DragonForestHub", + "FossilCanyon", + "PirateLagoon", + "AncientLake", + "WalrusCove", + "HotTopVolcano", + "WhaleBay", + "SnowballValley", + "CrescentIsland", + "FireMountain", + "DinoDomainHub", + "EverfrostPeak", + "SherbetIslandHub", + "SpaceportAlpha", + "HorseshoeGulch", + "SpacedustAlley", + "GreenwoodVillage", + "BoulderCanyon", + "WindmillPlains", + "FrontEnd", + "CharacterSelect", + "TitleScreenSequence", + "SnowflakeMountainHub", + "SmokeyCastle", + "DarkwaterBeach", + "IciclePyramid", + "FrostyVillage", + "JungleFalls", + "TreasureCaves", + "HauntedWoods", + "DarkmoonCaverns", + "StarCity", + "TrophyRace", + "FutureFunLandHub", + "OpeningSequence", + "Wizpig1", + "Trickytops1", + "OptionsBackground", + "Bubbler1", + "Smokey1", + "WizpigMouthSequence", + "WizpigAmuletSequence", + "TTAmuletSequence", + "RocketSequence", + "Trickytops2", + "DinoDomainTrophyAnim", + "SnowflakeMountainTrophyAnim", + "SherbetIslandTrophyAnim", + "DragonForestTrophyAnim", + "FutureFunLandTrophyAnim", + "Bluey2", + "Bubbler2", + "Smokey2", + "Wizpig2", + "PartySequence", + "TricktopsAnim", + "SmokeyAnim", + "BlueyAnim", + "Wizpig1Anim", + "BubblerAnim", + "Wizpig2Anim", + "LastBit", + "LastBitB" + ] + }, + { "type": "Table" }, + { + "type": "LevelNames", + "folder": "levels/names", + "table": 24, + "filenames": [ + "CentralAreaHub", + "Bluey1", + "DragonForestHub", + "FossilCanyon", + "PirateLagoon", + "AncientLake", + "WalrusCove", + "HotTopVolcano", + "WhaleBay", + "SnowballValley", + "CrescentIsland", + "FireMountain", + "DinoDomainHub", + "EverfrostPeak", + "SherbetIslandHub", + "SpaceportAlpha", + "HorseshoeGulch", + "SpacedustAlley", + "GreenwoodVillage", + "BoulderCanyon", + "WindmillPlains", + "FrontEnd", + "CharacterSelect", + "TitleScreenSequence", + "SnowflakeMountainHub", + "SmokeyCastle", + "DarkwaterBeach", + "IciclePyramid", + "FrostyVillage", + "JungleFalls", + "TreasureCaves", + "HauntedWoods", + "DarkmoonCaverns", + "StarCity", + "TrophyRace", + "FutureFunLandHub", + "OpeningSequence", + "Wizpig1", + "Trickytops1", + "OptionsBackground", + "Bubbler1", + "Smokey1", + "WizpigMouthSequence", + "WizpigAmuletSequence", + "TTAmuletSequence", + "RocketSequence", + "Trickytops2", + "DinoDomainTrophyAnim", + "SnowflakeMountainTrophyAnim", + "SherbetIslandTrophyAnim", + "DragonForestTrophyAnim", + "FutureFunLandTrophyAnim", + "Bluey2", + "Bubbler2", + "Smokey2", + "Wizpig2", + "PartySequence", + "TricktopsAnim", + "SmokeyAnim", + "BlueyAnim", + "Wizpig1Anim", + "BubblerAnim", + "Wizpig2Anim", + "LastBit", + "LastBitB" + ] + }, + { "type": "Table" }, + { + "type": "LevelModels", + "folder": "levels/models", + "table": 26 + }, + { "type": "Table" }, + { + "type": "ObjectModels", + "folder": "objects/models", + "table": 28 + }, + { + "type": "Binary", + "folder": "objects", + "filenames": [ "animation_ids" ] + }, + { "type": "Table" }, + { + "type": "ObjectAnimations", + "folder": "objects/animations", + "table": 31 + }, + { "type": "Table" }, + { + "type": "ObjectHeaders", + "folder": "objects/headers", + "table": 33 + }, + { + "type": "Binary", + "folder": "objects", + "filenames": [ "level_object_translation_table" ] + }, + { "type": "Table" }, + { "type": "Empty", "table": 36 }, + { "type": "Table" }, + { + "type": "Audio", + "folder": "audio", + "table": 38 + }, + { "type": "Table" }, + { + "type": "Particles", + "folder": "particles/particles", + "table": 40 + }, + { "type": "Table" }, + { + "type": "ParticleBehaviors", + "folder": "particles/behaviors", + "table": 42 + }, + { + "type": "Binary", + "folder": "fonts" + }, + { + "type": "Binary", + "folder": "fonts" + }, + { + "type": "Binary", + "folder": "fonts" + }, + { + "type": "Binary", + "folder": "ids" + }, + { "type": "Table" }, + { + "type": "TTGhosts", + "folder": "tt_ghosts", + "table": 48, + "filenames": [ + "FossilCanyon", + "PirateLagoon", + "AncientLake", + "WalrusCove", + "HotTopVolcano", + "WhaleBay", + "SnowballValley", + "CrescentIsland", + "EverfrostPeak", + "SpaceportAlpha", + "SpacedustAlley", + "GreenwoodVillage", + "BoulderCanyon", + "WindmillPlains", + "FrostyVillage", + "JungleFalls", + "TreasureCaves", + "HauntedWoods", + "DarkmoonCaverns", + "StarCity" + ] + } + ] + } +} + + + + + diff --git a/extract-ver/eu_1.1.config.json b/extract-ver/eu_1.1.config.json index d6f6f8e4..b81a0470 100644 --- a/extract-ver/eu_1.1.config.json +++ b/extract-ver/eu_1.1.config.json @@ -17,7 +17,7 @@ "sections": [ { "type": "Binary", - "folder": "unknown_0", + "folder": "ai-racers", "table": 1 }, { "type": "Table" }, diff --git a/extract-ver/jp.config.json b/extract-ver/jp.config.json index 974ace1f..ebcbc871 100644 --- a/extract-ver/jp.config.json +++ b/extract-ver/jp.config.json @@ -17,7 +17,7 @@ "sections": [ { "type": "Binary", - "folder": "unknown_0", + "folder": "ai-racers", "table": 1 }, { "type": "Table" }, diff --git a/extract-ver/us_1.0.config.json b/extract-ver/us_1.0.config.json index cc228d38..4ec20efa 100755 --- a/extract-ver/us_1.0.config.json +++ b/extract-ver/us_1.0.config.json @@ -106,15 +106,15 @@ "assets": { "sections": [ { - "build-id": "ASSET_UNKNOWN_0", + "build-id": "ASSET_AI_BEHAVIOUR", "type": "Binary", - "folder": "unknown_0", + "folder": "ai-racers", "table": 1 }, { - "build-id": "ASSET_UNKNOWN_0_TABLE", + "build-id": "ASSET_AI_BEHAVIOUR_TABLE", "type": "Table", - "for": "ASSET_UNKNOWN_0" + "for": "ASSET_AI_BEHAVIOUR" }, { "build-id": "ASSET_TEXTURES_3D", diff --git a/extract-ver/us_1.1.config.json b/extract-ver/us_1.1.config.json index 19010d55..65f3dfff 100644 --- a/extract-ver/us_1.1.config.json +++ b/extract-ver/us_1.1.config.json @@ -17,7 +17,7 @@ "sections": [ { "type": "Binary", - "folder": "unknown_0", + "folder": "ai-racers", "table": 1 }, { "type": "Table" }, diff --git a/include/asset_enums.h b/include/asset_enums.h index 80f0d0a9..eea34000 100644 --- a/include/asset_enums.h +++ b/include/asset_enums.h @@ -6,8 +6,8 @@ /********** Asset Sections **********/ typedef enum { - ASSET_UNKNOWN_0, - ASSET_UNKNOWN_0_TABLE, + ASSET_AI_BEHAVIOUR, + ASSET_AI_BEHAVIOUR_TABLE, ASSET_TEXTURES_3D, ASSET_TEXTURES_3D_TABLE, ASSET_TEXTURES_2D, @@ -58,20 +58,20 @@ typedef enum { ASSET_TTGHOSTS } AssetSectionsEnum; -/********** ASSET_UNKNOWN_0 **********/ +/********** ASSET_AI_BEHAVIOUR **********/ typedef enum { - ASSET_UNKNOWN_0_0, - ASSET_UNKNOWN_0_1, - ASSET_UNKNOWN_0_2, - ASSET_UNKNOWN_0_3, - ASSET_UNKNOWN_0_4, - ASSET_UNKNOWN_0_5, - ASSET_UNKNOWN_0_6, - ASSET_UNKNOWN_0_7, - ASSET_UNKNOWN_0_8, - ASSET_UNKNOWN_0_9 -} AssetUnknown0Enum; + ASSET_AI_BEHAVIOUR_0, + ASSET_AI_BEHAVIOUR_1, + ASSET_AI_BEHAVIOUR_2, + ASSET_AI_BEHAVIOUR_3, + ASSET_AI_BEHAVIOUR_4, + ASSET_AI_BEHAVIOUR_5, + ASSET_AI_BEHAVIOUR_6, + ASSET_AI_BEHAVIOUR_7, + ASSET_AI_BEHAVIOUR_8, + ASSET_AI_BEHAVIOUR_9 +} AssetAiBehaviourEnum; /********** ASSET_TEXTURES_3D **********/ diff --git a/include/structs.h b/include/structs.h index a42ccfd8..1e38f3a0 100644 --- a/include/structs.h +++ b/include/structs.h @@ -614,7 +614,7 @@ typedef struct LevelModelSegment { u8 pad22[0x06]; /* 0x28 */ s16 unk28; /* 0x2A */ s8 unk2A; -/* 0x2B */ s8 unk2B; +/* 0x2B */ s8 hasWaves; /* 0x2C */ Vertex *unk2C; /* 0x30 */ s16 unk30; /* 0x32 */ s16 unk32; diff --git a/src/fade_transition.c b/src/fade_transition.c index 2976fad5..2685203c 100644 --- a/src/fade_transition.c +++ b/src/fade_transition.c @@ -16,12 +16,12 @@ s32 gTransitionsDisabled = FALSE; s32 sLevelTransitionDelayTimer = 0; // Set when a level is loaded after a transition, to hold it for a few extra frames. -s32 D_800E31A8 = 0; +s32 gTransitionInvert = 0; s32 sTransitionStatus = TRANSITION_NONE; u16 sTransitionFadeTimer = 0; -u16 sTransitionFlags = 0; -u16 D_800E31B8 = 0; -s8 D_800E31BC = 0; +u16 gTransitionEndTimer = 0; +u16 sTransitionFadeDuration = 0; +s8 gTransitionFadeIn = 0; Vertex *sTransitionVtx[2] = { NULL, NULL }; Triangle *sTransitionTris[2] = { NULL, NULL }; s32 sTransitionTaskNum = 0; @@ -40,63 +40,63 @@ Gfx dTransitionFadeSettings[] = { gsSPEndDisplayList(), }; -VertexList D_800E3230[28] = { +s16 gTransitionBarnHorizontalData[28] = { 0xFE20, 0x0078, 0xFEC0, 0x0078, 0xFF60, 0x0078, 0x0000, 0x0078, 0x00A0, 0x0078, 0x0140, 0x0078, 0x01E0, 0x0078, 0xFE20, 0xFF88, 0xFEC0, 0xFF88, 0xFF60, 0xFF88, 0x0000, 0xFF88, 0x00A0, 0xFF88, 0x0140, 0xFF88, 0x01E0, 0xFF88, }; -VertexList D_800E3268[28] = { +s16 gTransitionBarnVerticalData[28] = { 0xFF60, 0x0168, 0xFF60, 0x00F0, 0xFF60, 0x0078, 0xFF60, 0x0000, 0xFF60, 0xFF88, 0xFF60, 0xFF10, 0xFF60, 0xFF10, 0x00A0, 0x0168, 0x00A0, 0x00F0, 0x00A0, 0x0078, 0x00A0, 0x0000, 0x00A0, 0xFF88, 0x00A0, 0xFF10, 0x00A0, 0xFF10, }; -TriangleList D_800E32A0[12] = { +u8 D_800E32A0[12] = { 0x00, 0x02, 0x04, 0x0E, 0x10, 0x12, 0x08, 0x0A, 0x0C, 0x16, 0x18, 0x1A, }; -TriangleList D_800E32AC[12] = { +u8 D_800E32AC[12] = { 0x04, 0x06, 0x08, 0x12, 0x14, 0x16, 0x04, 0x06, 0x08, 0x12, 0x14, 0x16, }; -u8 D_800E32B8[24] = { +TriangleList gTransitionBarnDoorTris[24] = { 0, 3, 1, 1, 3, 4, 1, 4, 2, 2, 4, 5, 6, 9, 7, 7, 9, 10, 7, 10, 8, 8, 10, 11, }; -u8 D_800E32D0[12] = { - -1, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1, +u8 gTransitionBarnDoorAlpha[12] = { + 255, 255, 0, 255, 255, 0, 0, 255, 255, 0, 255, 255, }; -VertexList D_800E32DC[24] = { +s16 gTransitionBarnDiagData[24] = { 0xFCE0, 0x0078, 0xFE20, 0x0078, 0xFF60, 0x0078, 0x00A0, 0x0078, 0x01E0, 0x0078, 0x0320, 0x0078, 0xFCE0, 0xFF88, 0xFE20, 0xFF88, 0xFF60, 0xFF88, 0x00A0, 0xFF88, 0x01E0, 0xFF88, 0x0320, 0xFF88, }; -TriangleList D_800E330C[12] = { +u8 D_800E330C[12] = { 0, 2, 4, 12, 14, 8, 10, 18, 20, 22, 0, 0, }; -TriangleList D_800E3318[12] = { +u8 D_800E3318[12] = { 4, 6, 8, 16, 18, 4, 6, 14, 16, 18, 0, 0, }; -u8 D_800E3324[20] = { +TriangleList gTransitionBarnDoorDiagTris[20] = { 0, 1, 3, 1, 3, 4, 1, 4, 2, 5, 7, 8, 5, 8, 6, 6, 8, 9, 0, 0, }; -u8 D_800E3338[12] = { - -1, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, 0, +u8 gTransitionBarnDoorDiagAlpha[12] = { + 255, 255, 0, 255, 0, 0, 255, 0, 255, 255, 0, 0, }; -VertexList D_800E3344[126] = { +s16 gTransitionWaveData[126] = { 0xFF60, 0x00A0, 0xFF70, 0x00A0, 0xFF80, 0x00A0, 0xFF90, 0x00A0, 0xFFA0, 0x00A0, 0xFFB0, 0x00A0, 0xFFC0, 0x00A0, 0xFFD0, 0x00A0, 0xFFE0, 0x00A0, 0xFFF0, 0x00A0, 0x0000, 0x00A0, 0x0010, 0x00A0, @@ -115,7 +115,7 @@ VertexList D_800E3344[126] = { 0x0080, 0xFEE8, 0x0090, 0xFEE8, 0x00A0, 0xFEE8, }; -TriangleList D_800E3440[92] = { +u8 D_800E3440[92] = { 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x0E, @@ -130,7 +130,7 @@ TriangleList D_800E3440[92] = { 0x76, 0x78, 0x7A, 0x7C, }; -TriangleList D_800E349C[92] = { +u8 D_800E349C[92] = { 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x54, 0x56, 0x58, 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x38, 0x3A, 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x62, @@ -145,16 +145,16 @@ TriangleList D_800E349C[92] = { 0x76, 0x78, 0x7A, 0x7C, }; -u8 D_800E34F8[92] = { - 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +u8 gTransitionWaveAlpha[92] = { + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, }; -TriangleList D_800E3554[244] = { +TriangleList gTransitionWaveTris[244] = { 0, 8, 9, 0, 9, 1, 1, 9, 10, 1, 10, 2, 2, 10, 11, 2, 11, 3, 3, 11, 12, 3, 12, 4, 4, 12, 13, 4, 13, 5, 5, 13, 14, 5, 14, 6, 6, 14, 15, 6, 15, 7, 0, 7, 8, 0, 8, 1, @@ -193,9 +193,9 @@ u8 gCurFadeAlpha; s32 gLastFadeRed; s32 gLastFadeGreen; s32 gLastFadeBlue; -s32 D_8012A744; -s32 D_8012A748; -s32 D_8012A74C; +s32 gLastFadeRedStep; +s32 gLastFadeGreenStep; +s32 gLastFadeBlueStep; f32 sTransitionOpacity; f32 gTransitionOpacityVel; s32 D_8012A758; @@ -204,10 +204,10 @@ s32 D_8012A760; s32 D_8012A764; s32 D_8012A768; s32 D_8012A76C; -f32 *D_8012A770; -f32 *D_8012A774; -f32 *D_8012A778; -s32 D_8012A77C; +f32 *gTransitionNextVtx; +f32 *gTransitionVtxStep; +f32 *gTransitionVertexTarget; +s32 gTransitionVertexCount; /*****************************/ @@ -225,15 +225,18 @@ void disable_new_screen_transitions(void) { gTransitionsDisabled = FALSE; } -//@bug: This doesn't seem to guarantee a return. -u32 fxFadeOn(void) { +/** + * Checks if there is currently a fadeout transition playing. +*/ +u32 check_fadeout_transition(void) { u32 isActive = sTransitionFadeTimer != 0; if (isActive == FALSE) { - isActive = sTransitionFlags != 0; + isActive = gTransitionEndTimer != 0; if (isActive) { - return (D_800E31BC != 0); + return (gTransitionFadeIn != 0); } } +//!@bug: This doesn't seem to guarantee a return. } /** @@ -248,13 +251,13 @@ s32 transition_begin(FadeTransition *transition) { return 0; } sTransitionFadeTimer = transition->duration; - D_800E31B8 = transition->duration; - sTransitionFlags = transition->unk6; - D_800E31BC = !(transition->type & FADE_FLAG_UNK2); + sTransitionFadeDuration = transition->duration; + gTransitionEndTimer = transition->endTimer; + gTransitionFadeIn = !(transition->type & FADE_FLAG_OUT); gCurFadeTransition = transition->type & 0x3F; - D_800E31A8 = transition->type & FADE_FLAG_UNK1; + gTransitionInvert = transition->type & FADE_FLAG_INVERT; sLevelTransitionDelayTimer = 0; - if (!D_800E31BC && !sLevelTransitionDelayTimer) { + if (!gTransitionFadeIn && !sLevelTransitionDelayTimer) { sLevelTransitionDelayTimer = 2; } if (sTransitionFadeTimer > 0) { @@ -269,22 +272,22 @@ s32 transition_begin(FadeTransition *transition) { transition_fullscreen_start(transition); break; case FADE_BARNDOOR_HORIZONTAL: - func_800C0B00(transition, 12, 8, D_800E3230, D_800E32A0, D_800E32AC, D_800E32D0, D_800E32D0, D_800E32B8); + init_transition_shape(transition, 12, 8, gTransitionBarnHorizontalData, D_800E32A0, D_800E32AC, gTransitionBarnDoorAlpha, gTransitionBarnDoorAlpha, gTransitionBarnDoorTris); break; case FADE_BARNDOOR_VERTICAL: - func_800C0B00(transition, 12, 8, D_800E3268, D_800E32A0, D_800E32AC, D_800E32D0, D_800E32D0, D_800E32B8); + init_transition_shape(transition, 12, 8, gTransitionBarnVerticalData, D_800E32A0, D_800E32AC, gTransitionBarnDoorAlpha, gTransitionBarnDoorAlpha, gTransitionBarnDoorTris); break; case FADE_CIRCLE: func_800C15D4(transition); break; case FADE_WAVES: - func_800C0B00(transition, 92, 80, D_800E3344, D_800E349C, D_800E3440, D_800E34F8, D_800E34F8, D_800E3554); + init_transition_shape(transition, 92, 80, gTransitionWaveData, D_800E349C, D_800E3440, gTransitionWaveAlpha, gTransitionWaveAlpha, gTransitionWaveTris); break; case FADE_BARNDOOR_DIAGONAL: - func_800C0B00(transition, 10, 6, D_800E32DC, D_800E330C, D_800E3318, D_800E3338, D_800E3338, D_800E3324); + init_transition_shape(transition, 10, 6, gTransitionBarnDiagData, D_800E330C, D_800E3318, gTransitionBarnDoorDiagAlpha, gTransitionBarnDoorDiagAlpha, gTransitionBarnDoorDiagTris); break; case FADE_DISABLED: - func_800C2640(transition); + init_transition_blank(transition); break; } } @@ -308,7 +311,7 @@ s32 handle_transitions(s32 updateRate) { if (sTransitionFadeTimer == 0) { sTransitionStatus = TRANSITION_LEVELSWAP; } - if ((sTransitionFadeTimer == 0) && (sTransitionFlags == 0)) { + if (sTransitionFadeTimer == 0 && gTransitionEndTimer == 0) { transition_end(); } else { if (sTransitionFadeTimer > 0) { @@ -316,19 +319,19 @@ s32 handle_transitions(s32 updateRate) { } switch (gCurFadeTransition) { case FADE_FULLSCREEN: - func_800C0834(updateRate); + process_transition_fullscreen(updateRate); break; case FADE_BARNDOOR_HORIZONTAL: case FADE_BARNDOOR_VERTICAL: case FADE_WAVES: case FADE_BARNDOOR_DIAGONAL: - func_800C1130(updateRate); + process_transition_shape(updateRate); break; case FADE_CIRCLE: func_800C1EE8(updateRate); break; case FADE_DISABLED: - func_800C27A0(updateRate); + process_transition_disabled(updateRate); break; } } @@ -397,7 +400,7 @@ void transition_end(void) { * Sets the transition timer and opacity to positive or negative depending on whether to fade in or out. */ void transition_fullscreen_start(FadeTransition *transition) { - if (transition->type & 0x80) { + if (transition->type & FADE_FLAG_OUT) { sTransitionOpacity = 255.0f; gTransitionOpacityVel = -255.0f / (f32) sTransitionFadeTimer; } else { @@ -407,7 +410,10 @@ void transition_fullscreen_start(FadeTransition *transition) { sTransitionStatus = TRANSITION_ACTIVE; } -void func_800C0834(s32 updateRate) { +/** + * Slowly dade in or out by increasing or decreasing opacity. +*/ +void process_transition_fullscreen(s32 updateRate) { s32 var_v0; do { var_v0 = TRUE; @@ -431,21 +437,21 @@ void func_800C0834(s32 updateRate) { sTransitionOpacity = 255.0f; } gCurFadeAlpha = sTransitionOpacity; - } else if (sTransitionFlags != 0xFFFF) { - if (updateRate < sTransitionFlags) { - sTransitionFlags -= updateRate; + } else if (gTransitionEndTimer != 0xFFFF) { + if (updateRate < gTransitionEndTimer) { + gTransitionEndTimer -= updateRate; } else { - updateRate -= sTransitionFlags; - sTransitionFlags = 0; - if (D_800E31A8 != 0) { - D_800E31A8 = 0; - sTransitionFadeTimer = D_800E31B8; + updateRate -= gTransitionEndTimer; + gTransitionEndTimer = 0; + if (gTransitionInvert != 0) { + gTransitionInvert = 0; + sTransitionFadeTimer = sTransitionFadeDuration; gTransitionOpacityVel = -gTransitionOpacityVel; var_v0 = FALSE; } } } - } while (var_v0 == FALSE && (updateRate > 0)); + } while (var_v0 == FALSE && updateRate > 0); } /** @@ -460,107 +466,113 @@ void render_fade_fullscreen(Gfx **dList, UNUSED MatrixS **mats, UNUSED Vertex ** reset_render_settings(dList); } -void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, VertexList *arg3, TriangleList *arg4, TriangleList *arg5, u8 *arg6, u8 *arg7, u8 *arg8) { - UNUSED s32 pad; - u8 *swap; - s32 sizeVerts; - s32 sizeTris; - s32 i; - s32 j; - - j = numVerts; - sizeVerts = j * 10; - sizeTris = numTris * 16; - i = (j * 12); - - sTransitionVtx[0] = allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2) + (i * 3), COLOUR_TAG_YELLOW); - sTransitionVtx[1] = sTransitionVtx[0] + j; - sTransitionTris[0] = (Triangle *) (sTransitionVtx[1] + j); - sTransitionTris[1] = (Triangle *) (((u8 *) sTransitionTris[0]) + sizeTris); - D_8012A770 = (f32 *) (((u8 *) sTransitionTris[1]) + sizeTris); - D_8012A774 = (f32 *) (((u8 *) D_8012A770) + i); - D_8012A778 = (f32 *) (((u8 *) D_8012A774) + i); - if (transition->type & 0x80) { - swap = arg4; - arg4 = arg5; - arg5 = swap; - swap = arg6; - arg6 = arg7; - arg7 = swap; - } - - for (i = 0; i < numVerts; i++) { - D_8012A770[(i * 3) + 0] = arg3[arg4[i]]; - D_8012A770[(i * 3) + 1] = arg3[arg4[i] + 1]; - D_8012A770[(i * 3) + 2] = arg6[i]; - D_8012A778[(i * 3) + 0] = arg3[arg5[i]]; - D_8012A778[(i * 3) + 1] = arg3[arg5[i] + 1]; - D_8012A778[(i * 3) + 2] = arg7[i]; - D_8012A774[(i * 3) + 0] = (D_8012A778[(i * 3) + 0] - D_8012A770[(i * 3) + 0]) / sTransitionFadeTimer; - D_8012A774[(i * 3) + 1] = (D_8012A778[(i * 3) + 1] - D_8012A770[(i * 3) + 1]) / sTransitionFadeTimer; - D_8012A774[(i * 3) + 2] = (D_8012A778[(i * 3) + 2] - D_8012A770[(i * 3) + 2]) / sTransitionFadeTimer; - } - - for (i = 0; i < 2; i++) { - for (j = 0; j < numVerts; j++) { - sTransitionVtx[i][j].z = -16; - sTransitionVtx[i][j].r = gCurFadeRed; - sTransitionVtx[i][j].g = gCurFadeGreen; - sTransitionVtx[i][j].b = gCurFadeBlue; +/** + * Allocate space for the new transitions vertices and triangles, then build the geometry based on the vertex and triangle shapes given. +*/ +void init_transition_shape(FadeTransition *transition, s32 numVerts, s32 numTris, s16 *coords, u8 *nextPos, u8 *targetPos, u8 *nextAlpha, u8 *targetAlpha, u8 *vertIndices) { + UNUSED s32 pad; + u8 *swap; + s32 sizeVerts; + s32 sizeTris; + s32 i; + s32 j; + + j = numVerts; + sizeVerts = j * 10; + sizeTris = numTris * 16; + i = j * 12; + + sTransitionVtx[0] = allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2) + (i * 3), COLOUR_TAG_YELLOW); + sTransitionVtx[1] = sTransitionVtx[0] + j; + sTransitionTris[0] = (Triangle*) (sTransitionVtx[1] + j); + sTransitionTris[1] = (Triangle*) (((u8 *) sTransitionTris[0]) + sizeTris); + gTransitionNextVtx = (f32 *) (((u8 *) sTransitionTris[1]) + sizeTris); + gTransitionVtxStep = (f32 *) (((u8 *) gTransitionNextVtx) + i); + gTransitionVertexTarget = (f32 *) (((u8 *) gTransitionVtxStep) + i); + if (transition->type & FADE_FLAG_OUT) { + swap = nextPos; + nextPos = targetPos; + targetPos = swap; + swap = nextAlpha; + nextAlpha = targetAlpha; + targetAlpha = swap; } - } - - for (i = 0; i < 2; i++) { - for (j = 0; j < numTris; j++) { - sTransitionTris[i][j].flags = 0x40; // 0x40 = Draw backface. - sTransitionTris[i][j].vi0 = arg8[(j * 3) + 0]; - sTransitionTris[i][j].uv0.u = 0; - sTransitionTris[i][j].uv0.v = 0; - sTransitionTris[i][j].vi1 = arg8[(j * 3) + 1]; - sTransitionTris[i][j].uv1.u = 0; - sTransitionTris[i][j].uv1.v = 0; - sTransitionTris[i][j].vi2 = arg8[(j * 3) + 2]; - sTransitionTris[i][j].uv2.u = 0; - sTransitionTris[i][j].uv2.v = 0; + + for (i = 0; i < numVerts; i++) { + gTransitionNextVtx[(i * 3) + 0] = coords[nextPos[i]]; + gTransitionNextVtx[(i * 3) + 1] = coords[nextPos[i] + 1]; + gTransitionNextVtx[(i * 3) + 2] = nextAlpha[i]; + gTransitionVertexTarget[(i * 3) + 0] = coords[targetPos[i]]; + gTransitionVertexTarget[(i * 3) + 1] = coords[targetPos[i] + 1]; + gTransitionVertexTarget[(i * 3) + 2] = targetAlpha[i]; + gTransitionVtxStep[(i * 3) + 0] = (gTransitionVertexTarget[(i * 3) + 0] - gTransitionNextVtx[(i * 3) + 0]) / sTransitionFadeTimer; + gTransitionVtxStep[(i * 3) + 1] = (gTransitionVertexTarget[(i * 3) + 1] - gTransitionNextVtx[(i * 3) + 1]) / sTransitionFadeTimer; + gTransitionVtxStep[(i * 3) + 2] = (gTransitionVertexTarget[(i * 3) + 2] - gTransitionNextVtx[(i * 3) + 2]) / sTransitionFadeTimer; } - } - - sTransitionStatus = 1; - D_8012A77C = numVerts; + + for (i = 0; i < 2; i++) { + for (j = 0; j < numVerts; j++) { + sTransitionVtx[i][j].z = -16; + sTransitionVtx[i][j].r = gCurFadeRed; + sTransitionVtx[i][j].g = gCurFadeGreen; + sTransitionVtx[i][j].b = gCurFadeBlue; + } + } + + for (i = 0; i < 2; i++) { + for (j = 0; j < numTris; j++) { + sTransitionTris[i][j].flags = 0x40; + sTransitionTris[i][j].vi0 = vertIndices[(j * 3) + 0]; + sTransitionTris[i][j].uv0.u = 0; + sTransitionTris[i][j].uv0.v = 0; + sTransitionTris[i][j].vi1 = vertIndices[(j * 3) + 1]; + sTransitionTris[i][j].uv1.u = 0; + sTransitionTris[i][j].uv1.v = 0; + sTransitionTris[i][j].vi2 = vertIndices[(j * 3) + 2]; + sTransitionTris[i][j].uv2.u = 0; + sTransitionTris[i][j].uv2.v = 0; + } + } + + sTransitionStatus = 1; + gTransitionVertexCount = numVerts; } -void func_800C1130(s32 updateRate) { +/** + * Slowly update the vertices of the transition based on what the next frames target is. + * That target is set based on a velocity. +*/ +void process_transition_shape(s32 updateRate) { s32 i; f32 updateRateF; - updateRateF = (f32) updateRate; + updateRateF = updateRate; if (sTransitionFadeTimer > 0) { if (updateRate < sTransitionFadeTimer) { - for (i = 0; i < D_8012A77C; i++) { - D_8012A770[i*3] += updateRateF * D_8012A774[i*3]; - D_8012A770[i*3 + 1] += updateRateF * D_8012A774[i*3 + 1]; - D_8012A770[i*3 + 2] += updateRateF * D_8012A774[i*3 + 2]; + for (i = 0; i < gTransitionVertexCount; i++) { + gTransitionNextVtx[i*3] += updateRateF * gTransitionVtxStep[i*3]; + gTransitionNextVtx[i*3 + 1] += updateRateF * gTransitionVtxStep[i*3 + 1]; + gTransitionNextVtx[i*3 + 2] += updateRateF * gTransitionVtxStep[i*3 + 2]; } sTransitionFadeTimer -= updateRate; } else { - for (i = 0; i < D_8012A77C; i++) { - D_8012A770[i*3] = D_8012A778[i*3]; - D_8012A770[i*3 + 1] = D_8012A778[i*3 + 1]; - D_8012A770[i*3 + 2] = D_8012A778[i*3 + 2]; + for (i = 0; i < gTransitionVertexCount; i++) { + gTransitionNextVtx[i*3] = gTransitionVertexTarget[i*3]; + gTransitionNextVtx[i*3 + 1] = gTransitionVertexTarget[i*3 + 1]; + gTransitionNextVtx[i*3 + 2] = gTransitionVertexTarget[i*3 + 2]; } sTransitionFadeTimer = 0; } - for (i = 0; i < D_8012A77C; i++) { - sTransitionVtx[sTransitionTaskNum][i].x = (s32)D_8012A770[i*3]; - sTransitionVtx[sTransitionTaskNum][i].y = (s32)D_8012A770[i*3+1]; - sTransitionVtx[sTransitionTaskNum][i].a = (s32)D_8012A770[i*3+2]; + for (i = 0; i < gTransitionVertexCount; i++) { + sTransitionVtx[sTransitionTaskNum][i].x = gTransitionNextVtx[i*3]; + sTransitionVtx[sTransitionTaskNum][i].y = gTransitionNextVtx[i*3+1]; + sTransitionVtx[sTransitionTaskNum][i].a = (s32) gTransitionNextVtx[i*3+2]; } - } else if (sTransitionFlags != 0xFFFF) { - if (updateRate < sTransitionFlags) { - sTransitionFlags -= updateRate; - } - else { - sTransitionFlags = 0; + } else if (gTransitionEndTimer != 0xFFFF) { + if (updateRate < gTransitionEndTimer) { + gTransitionEndTimer -= updateRate; + } else { + gTransitionEndTimer = 0; } } } @@ -593,6 +605,9 @@ GLOBAL_ASM("asm/non_matchings/fade_transition/func_800C1EE8.s") #define NUM_OF_VERTS 18 #define NUM_OF_TRIS 16 +/** + * Render a circle shape transition onscreen using previously allocated geometry. +*/ void render_fade_circle(Gfx **dList, UNUSED MatrixS **mats, UNUSED Vertex **verts) { Vertex *vertsToRender; Triangle *trisToRender; @@ -617,6 +632,9 @@ void render_fade_circle(Gfx **dList, UNUSED MatrixS **mats, UNUSED Vertex **vert reset_render_settings(dList); } +/** + * Render the wavy transition onscreen using the vertex data allocated earlier. +*/ void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts) { Gfx *gfx; s32 i; @@ -624,8 +642,8 @@ void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts Triangle *t; reset_render_settings(dlist); gfx = *dlist; - v = (Vertex *)sTransitionVtx[sTransitionTaskNum]; - t = (Triangle *)sTransitionTris[sTransitionTaskNum]; + v = (Vertex *) sTransitionVtx[sTransitionTaskNum]; + t = (Triangle *) sTransitionTris[sTransitionTaskNum]; gSPDisplayList(gfx++, dTransitionShapeSettings); /* i == 0 -> Left third wave? @@ -663,27 +681,33 @@ void render_fade_barndoor_diagonal(Gfx **dList, UNUSED MatrixS **mats, UNUSED Ve reset_render_settings(dList); } -void func_800C2640(UNUSED FadeTransition *transition) { +/** + * Set the transition colour target, then set the velocity for the colour to fade to. +*/ +void init_transition_blank(UNUSED FadeTransition *transition) { gLastFadeRed <<= 0x10; gLastFadeGreen <<= 0x10; gLastFadeBlue <<= 0x10; - gCurFadeAlpha = 0xFF; + gCurFadeAlpha = 255; sTransitionOpacity = 255.0f; gTransitionOpacityVel = 0.0f; - D_8012A744 = (s32) ((gCurFadeRed << 0x10) - gLastFadeRed) / (s32) sTransitionFadeTimer; - D_8012A748 = (s32) ((gCurFadeGreen << 0x10) - gLastFadeGreen) / (s32) sTransitionFadeTimer; - D_8012A74C = (s32) ((gCurFadeBlue << 0x10) - gLastFadeBlue) / (s32) sTransitionFadeTimer; + gLastFadeRedStep = ((gCurFadeRed << 0x10) - gLastFadeRed) / sTransitionFadeTimer; + gLastFadeGreenStep = ((gCurFadeGreen << 0x10) - gLastFadeGreen) / sTransitionFadeTimer; + gLastFadeBlueStep = ((gCurFadeBlue << 0x10) - gLastFadeBlue) / sTransitionFadeTimer; sTransitionStatus = 1; } -void func_800C27A0(s32 updateRate) { +/** + * Shifts the colours of the transition over time while the timer ticks down. +*/ +void process_transition_disabled(s32 updateRate) { s32 var_v0; do { var_v0 = TRUE; if (sTransitionFadeTimer > 0) { - gLastFadeRed += D_8012A744 * updateRate; - gLastFadeGreen += D_8012A748 * updateRate; - gLastFadeBlue += D_8012A74C * updateRate; + gLastFadeRed += gLastFadeRedStep * updateRate; + gLastFadeGreen += gLastFadeGreenStep * updateRate; + gLastFadeBlue += gLastFadeBlueStep * updateRate; if (updateRate >= sTransitionFadeTimer) { gLastFadeRed = gCurFadeRed << 0x10; gLastFadeGreen = gCurFadeGreen << 0x10; @@ -694,16 +718,19 @@ void func_800C27A0(s32 updateRate) { sTransitionFadeTimer -= updateRate; } } else { - if (sTransitionFlags != 0xFFFF) { - sTransitionFlags -= updateRate; - if (sTransitionFlags <= 0) { - sTransitionFlags = 0; + if (gTransitionEndTimer != 0xFFFF) { + gTransitionEndTimer -= updateRate; + if (gTransitionEndTimer <= 0) { + gTransitionEndTimer = 0; } } } } while (var_v0 == FALSE); } +/** + * Fill the whole screen with a solid colour. +*/ void render_fade_disabled(Gfx **dList, UNUSED MatrixS **mats, UNUSED Vertex **verts) { s32 screenSize = get_video_width_and_height_as_s32(); gSPDisplayList((*dList)++, dTransitionFadeSettings); diff --git a/src/fade_transition.h b/src/fade_transition.h index daee108b..1887689e 100644 --- a/src/fade_transition.h +++ b/src/fade_transition.h @@ -14,15 +14,22 @@ //Fade transiton flags live at the top two bits of the fade type. #define FADE_FLAG_NONE 0 -#define FADE_FLAG_UNK1 (1 << 6) -#define FADE_FLAG_UNK2 (1 << 7) +#define FADE_FLAG_INVERT (1 << 6) // Invert the transition timer and opacity when finished. +#define FADE_FLAG_OUT (1 << 7) // Transition fading out #define FADE_FLAG_BOTH (2 << 6) #define FADE_COLOR(red, green, blue) red, green, blue #define FADE_COLOR_BLACK FADE_COLOR(0, 0, 0) #define FADE_COLOR_WHITE FADE_COLOR(255, 255, 255) -#define FADE_TRANSITION(type, flags, color, duration, unk6) { (type & 0x3F) | (flags & 0xC0), color, duration, unk6 } +/** + * type: Transition type + * flags: Transition flags + * color: Transition colour + * duration: Transition length + * endDelay: Length after transition finishing before it frees. +*/ +#define FADE_TRANSITION(type, flags, color, duration, endDelay) { (type & 0x3F) | (flags & 0xC0), color, duration, endDelay } enum TransitionStatus { TRANSITION_LEVELSWAP = -1, @@ -37,14 +44,14 @@ typedef struct FadeTransition { /* 0x02 */ u8 green; /* 0x03 */ u8 blue; /* 0x04 */ u16 duration; - /* 0x06 */ u16 unk6; + /* 0x06 */ u16 endTimer; } FadeTransition; extern u32 osTvType; void enable_new_screen_transitions(void); void disable_new_screen_transitions(void); -u32 fxFadeOn(void); +u32 check_fadeout_transition(void); void transition_end(void); s32 handle_transitions(s32 updateRate); void render_fade_transition(Gfx **dList, MatrixS **mats, Vertex **verts); @@ -54,13 +61,13 @@ void render_fade_barndoor_vertical(Gfx **dList, MatrixS **mats, Vertex **verts); void render_fade_barndoor_diagonal(Gfx **dList, MatrixS **mats, Vertex **verts); void render_fade_disabled(Gfx **dList, MatrixS **mats, Vertex **verts); void transition_fullscreen_start(FadeTransition *transition); -void func_800C2640(FadeTransition *transition); -void func_800C0834(s32 updateRate); -void func_800C27A0(s32 updateRate); +void init_transition_blank(FadeTransition *transition); +void process_transition_fullscreen(s32 updateRate); +void process_transition_disabled(s32 updateRate); s32 transition_begin(FadeTransition *transition); void render_fade_circle(Gfx **dList, MatrixS **mats, Vertex **verts); -void func_800C1130(s32 updateRate); -void func_800C0B00(FadeTransition *transition, s32 numVerts, s32 numTris, VertexList *arg3, TriangleList *arg4, TriangleList *arg5, u8 *arg6, u8 *arg7, u8 *arg8); +void process_transition_shape(s32 updateRate); +void init_transition_shape(FadeTransition *transition, s32 numVerts, s32 numTris, s16 *arg3, u8 *arg4, u8 *arg5, u8 *arg6, u8 *arg7, u8 *arg8); void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts); //Non Matching void func_800C1EE8(s32); //Non Matching diff --git a/src/font.c b/src/font.c index 05e899bc..6cbd95a4 100644 --- a/src/font.c +++ b/src/font.c @@ -793,10 +793,10 @@ UNUSED void set_dialogue_box_unused_flag(s32 dialogueBoxID) { } /** - * Clear every flag from the selected dialogue box. + * Clear DIALOGUE_BOX_UNUSED_01 from the dialogue box. */ -UNUSED void dialogue_box_clear_flags(s32 dialogueBoxID) { - gDialogueBoxBackground[dialogueBoxID].flags &= DIALOGUE_BOX_UNUSED_02; +UNUSED void dialogue_box_clear_unused_flag(s32 dialogueBoxID) { + gDialogueBoxBackground[dialogueBoxID].flags &= (0xFFFF & ~DIALOGUE_BOX_UNUSED_01); } /** @@ -806,8 +806,11 @@ UNUSED void enable_dialogue_box_vertices(s32 dialogueBoxID) { gDialogueBoxBackground[dialogueBoxID].flags |= DIALOGUE_BOX_VERTS; } -void func_800C56D0(s32 dialogueBoxID) { - gDialogueBoxBackground[dialogueBoxID].flags &= DIALOGUE_BOX_UNK_02; +/** + * Clears the open flag from the dialogue box. +*/ +void clear_dialogue_box_open_flag(s32 dialogueBoxID) { + gDialogueBoxBackground[dialogueBoxID].flags &= (DIALOGUE_BOX_VERTS + DIALOGUE_BOX_CLOSED); } /** diff --git a/src/font.h b/src/font.h index e6943099..59356b07 100644 --- a/src/font.h +++ b/src/font.h @@ -29,9 +29,7 @@ enum DialogueFlags { DIALOGUE_BOX_UNUSED_01 = 0x0001, DIALOGUE_BOX_VERTS = 0x4000, DIALOGUE_BOX_CLOSED = 0x7FFF, - DIALOGUE_BOX_OPEN = 0x8000, - DIALOGUE_BOX_UNK_02 = 0xBFFF, - DIALOGUE_BOX_UNUSED_02 = 0xFFFE + DIALOGUE_BOX_OPEN = 0x8000 }; typedef struct unk800C54E8 { @@ -171,7 +169,7 @@ void move_dialogue_box_to_front(s32 dialogueBoxID, DialogueBox *box); void assign_dialogue_box_id(s32 dialogueBoxID); void open_dialogue_box(s32 dialogueBoxID); void close_dialogue_box(s32 dialogueBoxID); -void func_800C56D0(s32 dialogueBoxID); +void clear_dialogue_box_open_flag(s32 dialogueBoxID); void render_dialogue_boxes(Gfx **dlist, MatrixS **mat, Vertex **verts); void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry); void render_dialogue_box(Gfx **dlist, MatrixS **mat, Vertex **verts, s32 dialogueBoxID); diff --git a/src/game.c b/src/game.c index 1307999e..dbf8c2ec 100644 --- a/src/game.c +++ b/src/game.c @@ -49,16 +49,14 @@ char *gTempLevelNames = NULL; s8 gCurrentDefaultVehicle = -1; -u8 D_800DD318 = FALSE; +u8 gTwoPlayerAdvRace = FALSE; s32 gIsInRace = 0; // Updated automatically from calc_func_checksums.py s32 gFunc80068158Checksum = 0x585E; s32 gFunc80068158Length = 0x154; - s16 gLevelPropertyStackPos = 0; s16 D_800DD32C = 0; - s8 D_800DD330 = 0; /*******************************/ @@ -71,13 +69,10 @@ LevelHeader *gCurrentLevelHeader; char **gLevelNames; s32 gNumberOfLevelHeaders; s32 gNumberOfWorlds; - s8 *D_80121178; LevelGlobalData *gGlobalLevelTable; - -s32 D_80121180[16]; - -TempStruct5 *D_801211C0; +s32 gRaceTypeCountTable[16]; +AIBehaviourTable *gAIBehaviourTable; s16 gLevelPropertyStack[5 * 4]; // Stores level info for cutscenes. 5 sets of four properties. /******************************/ @@ -98,7 +93,7 @@ void init_level_globals(void) { gTempAssetTable = (s32 *) load_asset_section_from_rom(ASSET_LEVEL_HEADERS_TABLE); i = 0; while (i < 16) { - D_80121180[i++] = 0; + gRaceTypeCountTable[i++] = 0; } gNumberOfLevelHeaders = 0; while (gTempAssetTable[gNumberOfLevelHeaders] != -1) { @@ -114,7 +109,7 @@ void init_level_globals(void) { gNumberOfWorlds = gCurrentLevelHeader->world; } if ((gCurrentLevelHeader->race_type >= 0) && (gCurrentLevelHeader->race_type < 16)) { - D_80121180[gCurrentLevelHeader->race_type]++; + gRaceTypeCountTable[gCurrentLevelHeader->race_type]++; } gGlobalLevelTable[i].world = gCurrentLevelHeader->world; gGlobalLevelTable[i].raceType = gCurrentLevelHeader->race_type; @@ -261,9 +256,12 @@ UNUSED s32 search_level_properties_backwards(s32 levelID, s8 raceType, s8 worldI return -1; } -UNUSED s32 func_8006B018(s8 arg0) { - if ((arg0 >= 0) && (arg0 < 16)) { - return D_80121180[arg0]; +/** + * Return the number of tracks that fall under a certain race type. +*/ +UNUSED s32 get_race_type_count(s8 raceType) { + if (raceType >= 0 && raceType < 16) { + return gRaceTypeCountTable[raceType]; } return 0; } @@ -555,10 +553,10 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl cutsceneId = CUTSCENE_ID_UNK_64; } if ((gCurrentLevelHeader->race_type == RACETYPE_DEFAULT || gCurrentLevelHeader->race_type & RACETYPE_CHALLENGE) && is_in_two_player_adventure()) { - D_800DD318 = TRUE; + gTwoPlayerAdvRace = TRUE; cutsceneId = CUTSCENE_ID_UNK_64; } else { - D_800DD318 = FALSE; + gTwoPlayerAdvRace = FALSE; } if (gCurrentLevelHeader->race_type == RACETYPE_DEFAULT && numPlayers == 0 && is_time_trial_enabled()) { @@ -680,7 +678,7 @@ char *get_level_name(s32 levelId) { * Call multiple functions to stop and free audio, then free track, weather and wave data. */ void clear_audio_and_track(void) { - frontCleanupMultiSelect(); + free_ai_behaviour_table(); set_background_prim_colour(0, 0, 0); free_from_memory_pool(gCurrentLevelHeader); func_800049D8(); @@ -737,7 +735,7 @@ void set_ai_level(s8 *arg0) { if (get_game_mode() == GAMEMODE_MENU) { aiLevel = 5; } - gTempAssetTable = (s32 *) load_asset_section_from_rom(ASSET_UNKNOWN_0_TABLE); + gTempAssetTable = (s32 *) load_asset_section_from_rom(ASSET_AI_BEHAVIOUR_TABLE); phi_v1 = 0; while (-1 != (s32) gTempAssetTable[phi_v1]) { phi_v1++; @@ -748,21 +746,30 @@ void set_ai_level(s8 *arg0) { } temp2 = gTempAssetTable[aiLevel]; temp = gTempAssetTable[aiLevel + 1] - temp2; - D_801211C0 = allocate_from_main_pool_safe(temp, COLOUR_TAG_YELLOW); - load_asset_to_address(ASSET_UNKNOWN_0, (u32) D_801211C0, temp2, temp); + gAIBehaviourTable = allocate_from_main_pool_safe(temp, COLOUR_TAG_YELLOW); + load_asset_to_address(ASSET_AI_BEHAVIOUR, (u32) gAIBehaviourTable, temp2, temp); free_from_memory_pool(gTempAssetTable); } -void frontCleanupMultiSelect(void) { - free_from_memory_pool(D_801211C0); +/** + * Frees the AI behaviour table from memory. +*/ +void free_ai_behaviour_table(void) { + free_from_memory_pool(gAIBehaviourTable); } -TempStruct5 *func_8006C18C(void) { - return D_801211C0; +/** + * Return the behaviour value table for AI racers. +*/ +AIBehaviourTable *get_ai_behaviour_table(void) { + return gAIBehaviourTable; } -s8 func_8006C19C(void) { - return D_800DD318; +/** + * Return whether it is a standard race with two players in adventure mode. +*/ +s8 is_two_player_adventure_race(void) { + return gTwoPlayerAdvRace; } /** diff --git a/src/game.h b/src/game.h index a7ed1eec..388b6e9e 100644 --- a/src/game.h +++ b/src/game.h @@ -48,9 +48,9 @@ u8 get_total_level_header_count(void); char *get_level_name(s32 levelId); void clear_audio_and_track(void); void set_ai_level(s8 *arg0); -void frontCleanupMultiSelect(void); -TempStruct5 *func_8006C18C(void); -s8 func_8006C19C(void); +void free_ai_behaviour_table(void); +AIBehaviourTable *get_ai_behaviour_table(void); +s8 is_two_player_adventure_race(void); void push_level_property_stack(s32 levelId, s32 entranceId, Vehicle vehicleId, s32 cutsceneId); void pop_level_property_stack(s32 *levelId, s32 *entranceId, s32 *vehicleId, s32 *cutsceneId); void clear_level_property_stack(void); diff --git a/src/game_text.c b/src/game_text.c index b43e2215..de099512 100644 --- a/src/game_text.c +++ b/src/game_text.c @@ -73,7 +73,7 @@ void init_dialogue_text(void) { gDialogueYPos1 = SCREEN_HEIGHT - 38; gDialogueYPos2 = SCREEN_HEIGHT - 18; } - func_800C56D0(6); + clear_dialogue_box_open_flag(6); } /** diff --git a/src/game_ui.c b/src/game_ui.c index 56d0f823..a22d8014 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -551,7 +551,7 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *arg3, s if (racer->racer.raceFinished == 1) { func_80068508(1); if (is_in_time_trial()) { - func_800A6E30(racer, updateRate); + func_800A6E30((Object_Racer *) racer, updateRate); } else if (get_viewport_count() == VIEWPORTS_COUNT_1_PLAYER && racer->racer.unk1AC == 1) { if (is_in_two_player_adventure()) { if (get_current_level_race_type() == RACETYPE_BOSS) { @@ -894,9 +894,9 @@ void func_800A14F0(Object *racerObj, s32 updateRate) { } -void func_800A19A4(Object_Racer *racer, s32 updateRate) { +void func_800A19A4(Object_Racer *racer, UNUSED s32 updateRate) { s32 i; - s32 var_s1; + UNUSED s32 pad; s32 sp44; s32 sp40; s32 i2; @@ -2070,19 +2070,19 @@ void func_800A6E30(Object_Racer *racer, s32 updateRate) { switch (gCurrentHud->unk1DA) { case 0: - D_800E2770->unk2 = 0x7F; + D_800E2770->unk2 = 127; D_800E2770->unk3 = 0; D_800E2770->unkC = (s8) racer->playerIndex; - play_sound_global(0x16U, NULL); + play_sound_global(SOUND_WHOOSH1, NULL); if ((gHUDNumPlayers == 0) || (gHUDNumPlayers == 1)) { gCurrentHud->unk1CC = -200.0f; gCurrentHud->unk1DD = 0; } else { if ((racer->playerIndex == 0) || (racer->playerIndex == 2)) { - gCurrentHud->unk1DD = -0x50U; + gCurrentHud->unk1DD = -80; gCurrentHud->unk1CC = -200.0f; } else { - gCurrentHud->unk1DD = 0x50; + gCurrentHud->unk1DD = 80; gCurrentHud->unk1CC = -40.0f; } } @@ -2090,32 +2090,32 @@ void func_800A6E30(Object_Racer *racer, s32 updateRate) { return; case 1: temp = (updateRate * 13); - if (gCurrentHud->unk1CC < (gCurrentHud->unk1DD - temp)) { + if (gCurrentHud->unk1CC < gCurrentHud->unk1DD - temp) { gCurrentHud->unk1CC += temp; } else { gCurrentHud->unk1CC = gCurrentHud->unk1DD; gCurrentHud->unk1DA = 2; - gCurrentHud->unk1DB = -0x78U; - if ((gHUDVoiceSoundMask == 0) && (D_80126D71 == 0)) { + gCurrentHud->unk1DB = -120; + if (gHUDVoiceSoundMask == NULL && D_80126D71 == 0) { play_time_trial_end_message(&racer->playerIndex); } } func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk1C0); return; case 2: - gCurrentHud->unk1DB = (s8) gCurrentHud->unk1DB + updateRate; - if ((s8) gCurrentHud->unk1DB >= 0x78) { + gCurrentHud->unk1DB += updateRate; + if (gCurrentHud->unk1DB >= 120) { gCurrentHud->unk1DA = 3; if ((gHUDNumPlayers == 0) || (gHUDNumPlayers == 1)) { - gCurrentHud->unk1DD = 0x38; + gCurrentHud->unk1DD = 56; } else { if ((racer->playerIndex == 0) || (racer->playerIndex == 2)) { - gCurrentHud->unk1DD = 0x38; + gCurrentHud->unk1DD = 56; } else { - gCurrentHud->unk1DD = -0x28U; + gCurrentHud->unk1DD = -40; } } - play_sound_global(0x16U, NULL); + play_sound_global(SOUND_WHOOSH1, NULL); } func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk1C0); return; @@ -2130,40 +2130,36 @@ void func_800A6E30(Object_Racer *racer, s32 updateRate) { D_800E2770->unk3 = -1; gCurrentHud->unk1DA = 5; gCurrentHud->unk1DB = 0; - /* fallthrough */ + return; default: return; } } -void func_800A718C(Object_64 *arg0) { +void func_800A718C(UNUSED Object_64 *arg0) { s32 sp2C; s32 div; - s32 pad; + UNUSED s32 pad; u32 sp20; Settings *settings; settings = get_settings(); - if (osTvType == 0) { - sp20 = 0x286; + if (osTvType == TV_TYPE_PAL) { + sp20 = 646; } else { - sp20 = 0x348; + sp20 = 840; } if (settings->cutsceneFlags & 4) { - gCurrentHud->unk266 = 0x45; + gCurrentHud->unk266 = 69; } - if ((func_8001E440() == 10) && (func_8001AE54() < sp20)) { + if (func_8001E440() == 10 && func_8001AE54() < sp20) { sp2C = *settings->balloonsPtr - 1; } else { sp2C = *settings->balloonsPtr; - sp2C = (s32) sp2C; - sp2C = sp2C; - if (func_8001E440() == 0xA) { - sp2C = (s32) sp2C; - if ((func_8001AE54() < (u32) (sp20 + 8)) && (D_80126D44 == 0)) { - sp2C = (s32) sp2C; - play_sound_global(0xFEU, &D_80126D44); + if (func_8001E440() == 10) { + if (func_8001AE54() < sp20 + 8 && D_80126D44 == 0) { + play_sound_global(SOUND_HUD_LAP_TICK, &D_80126D44); } } } @@ -2172,20 +2168,20 @@ void func_800A718C(Object_64 *arg0) { } div = sp2C / 10; if (div != 0) { - gCurrentHud->unk2B8 = (s16) div; - gCurrentHud->unk2D8 = (s16) (sp2C % 10); + gCurrentHud->unk2B8 = div; + gCurrentHud->unk2D8 = sp2C % 10; func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk2C0); } else { - gCurrentHud->unk2B8 = (s16) (sp2C % 10); + gCurrentHud->unk2B8 = sp2C % 10; } func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk2A0); - set_viewport_tv_type(1); - if (osTvType == 0) { + set_viewport_tv_type(TV_TYPE_NTSC); + if (osTvType == TV_TYPE_PAL) { func_8007BF1C(1); } func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk260); func_8007BF1C(0); - set_viewport_tv_type(0); + set_viewport_tv_type(TV_TYPE_PAL); func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk280); } @@ -2396,7 +2392,7 @@ void render_race_time(Object_Racer *racer, s32 updateRate) { } void func_800A7FBC(s32 arg0, s32 arg1, s32 minutes, s32 seconds, s32 hundredths, s32 someBool) { - s32 pad; + UNUSED s32 pad; unk80126CDC_entry entry2; s32 unk14; s32 unk10; diff --git a/src/menu.c b/src/menu.c index 35770bd6..09cdb015 100644 --- a/src/menu.c +++ b/src/menu.c @@ -369,9 +369,9 @@ s32 D_800DF768 = 1; FadeTransition sMenuTransitionFadeInFast = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_BLACK, 10, -1); FadeTransition sMenuTransitionFadeIn = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_BLACK, 18, -1); -FadeTransition sMenuTransitionFadeOut = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK2, FADE_COLOR_BLACK, 18, 0); +FadeTransition sMenuTransitionFadeOut = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 18, 0); UNUSED FadeTransition sMenuTransitionFadeInWhite = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_WHITE, 18, -1); -UNUSED FadeTransition sMenuTransitionFadeOutWhite = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK2, FADE_COLOR_WHITE, 18, 0); +UNUSED FadeTransition sMenuTransitionFadeOutWhite = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_WHITE, 18, 0); s32 D_800DF794 = 4; MenuElement *D_800DF798 = NULL; @@ -3893,7 +3893,7 @@ s32 menu_boot_loop(s32 updateRate) { } break; case 2: - if (gMenuDelay && fxFadeOn() == 0) { + if (gMenuDelay && check_fadeout_transition() == 0) { transition_begin(&sMenuTransitionFadeInFast); } temp = 300; @@ -7511,7 +7511,7 @@ void func_80093D40(UNUSED s32 updateRate) { yOffset = ((gMenuOptionCap * 16) + 28); - func_800C56D0(7); + clear_dialogue_box_open_flag(7); assign_dialogue_box_id(7); yOffset >>= 1; diff --git a/src/object_functions.c b/src/object_functions.c index 6a7a9566..6bb6cbb1 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -35,8 +35,8 @@ /************ .data ************/ // Unsure about the signed/unsigned with these arrays. -FadeTransition D_800DC970 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK1, FADE_COLOR_WHITE, 7, 3); -FadeTransition D_800DC978 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_BLACK, 30, 0xFFFF); +FadeTransition gTajTransformTransitionEnd = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_INVERT, FADE_COLOR_WHITE, 7, 3); +FadeTransition gTajTransition = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_BLACK, 30, 0xFFFF); Vertex gCharacterFlagVertices[4] = { { -256, 256, 0, 255, 255, 255, 255 }, @@ -303,7 +303,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 updateRate) { if (obj->properties.fireball.timer < 0) { if (obj->unk4A == 298) { free_object(obj); - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_EXPLOSION, 1.0f, 1); } obj->segment.trans.scale *= 0.9; //!@Delta if (obj->segment.trans.scale < 0.5) { @@ -433,11 +433,6 @@ void obj_init_laserbolt(Object *obj, UNUSED LevelObjectEntry_Laserbolt *entry) { obj->interactObj->unk11 = 0; } -typedef struct Object_7C_80034860 { - u8 pad0[0xC]; - s16 unkC; -} Object_7C_80034860; - /** * Laser Bolt init behaviour. * Move in a set direction, until it either times out, hits a racer, or hits a wall. @@ -447,7 +442,7 @@ void obj_loop_laserbolt(Object *obj, s32 updateRate) { Object *racerObj; - Object_7C_80034860 *obj7C; + Object_LaserGun *laserGun; Object_Laser *laser; s8 delete; // Boolean @@ -497,12 +492,12 @@ void obj_loop_laserbolt(Object *obj, s32 updateRate) { if (laser->unk0 != -1) { laser->unk187 = 1; } - obj7C = (Object_7C_80034860 *) obj->properties.lasergun.obj; - if (obj7C) { - obj7C->unkC = 180; + laserGun = obj->properties.lasergun.obj; + if (laserGun) { + laserGun->fireTimer = 180; } delete = TRUE; - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 36.0f, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 0.5, 0); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 36.0f, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_EXPLOSION, 0.5, 0); } } if (delete) { @@ -532,10 +527,19 @@ void obj_loop_torch_mist(Object *obj, s32 updateRate) { obj->segment.animFrame += obj->properties.speed.speed * updateRate; } +/** + * Effect box init behaviour. + * Does nothing. +*/ void obj_init_effectbox(UNUSED Object *obj, UNUSED LevelObjectEntry_EffectBox *entry) { } -void obj_loop_effectbox(Object *effectBoxObj, UNUSED s32 updateRate) { +/** + * Effect box loop behaviour. + * Searches for any racers that are inside the region. + * Applies an effect to their weight and velocity. +*/ +void obj_loop_effectbox(Object *obj, UNUSED s32 updateRate) { Object **racers; LevelObjectEntry_EffectBox *effectBoxEntry; s32 numRacers; @@ -552,28 +556,28 @@ void obj_loop_effectbox(Object *effectBoxObj, UNUSED s32 updateRate) { f32 yDiff; s32 i; - effectBoxEntry = (LevelObjectEntry_EffectBox *)effectBoxObj->segment.level_entry; + effectBoxEntry = (LevelObjectEntry_EffectBox *) obj->segment.level_entry; racers = get_racer_objects(&numRacers); cosAngle = coss_f(-(effectBoxEntry->unkB * 256)); sinAngle = sins_f(-(effectBoxEntry->unkB * 256)); - xExtents = (f32) (effectBoxEntry->unk8 * 3); - yExtents = (f32) (effectBoxEntry->unk9 * 3); - zExtents = (f32) (effectBoxEntry->unkA * 3); + xExtents = effectBoxEntry->unk8 * 3; + yExtents = effectBoxEntry->unk9 * 3; + zExtents = effectBoxEntry->unkA * 3; for(i = 0; i < numRacers; i++) { curRacerObj = racers[i]; - xDiff = curRacerObj->segment.trans.x_position - effectBoxObj->segment.trans.x_position; - yDiff = curRacerObj->segment.trans.y_position - effectBoxObj->segment.trans.y_position; - zDiff = curRacerObj->segment.trans.z_position - effectBoxObj->segment.trans.z_position; - if ((-yExtents < yDiff) && (yDiff < yExtents)) { + xDiff = curRacerObj->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = curRacerObj->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = curRacerObj->segment.trans.z_position - obj->segment.trans.z_position; + if (-yExtents < yDiff && yDiff < yExtents) { yExtentsHalf = (xDiff * cosAngle) + (zDiff * sinAngle); - if ((-xExtents < yExtentsHalf) && (yExtentsHalf < xExtents)) { + if (-xExtents < yExtentsHalf && yExtentsHalf < xExtents) { zDiff = (-xDiff * sinAngle) + (zDiff * cosAngle); - if ((-zExtents < zDiff) && (zDiff < zExtents)) { + if (-zExtents < zDiff && zDiff < zExtents) { yExtentsHalf = yExtents / 2; curRacer = &curRacerObj->unk64->racer; curRacer->unk1FE = effectBoxEntry->unkC; curRacer->unk1FF = effectBoxEntry->unkD; - if ((yExtentsHalf < yDiff) && (curRacer->unk1FE == 1)) { + if (yExtentsHalf < yDiff && curRacer->unk1FE == 1) { xDiff = (yDiff - yExtentsHalf) / yExtentsHalf; yDiff = (1.0 - xDiff); curRacer->unk1FF *= yDiff; @@ -1976,7 +1980,7 @@ void obj_loop_bombexplosion(Object *obj, s32 updateRate) { temp_t8 = (obj->properties.bombExplosion.unk4 >> 8) & 0xFF; if (obj->properties.bombExplosion.timer > 10 && temp_t8 != 0) { obj->properties.bombExplosion.unk4 ^= (temp_t8 << 8); - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_NONE, 1.0f, temp_t8 - 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_NONE, 1.0f, temp_t8 - 1); } if (obj->properties.bombExplosion.timer < 20) { obj->segment.trans.scale = ((obj->properties.bombExplosion.timer / 20.0f) * 10.0f) + 0.5f; @@ -2452,7 +2456,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { play_taj_voice_clip((racer64->racer.vehicleID + SOUND_VOICE_TAJ_ABRAKADABRA), TRUE); } else { obj->properties.npc.action = TAJ_MODE_SET_CHALLENGE; - transition_begin(&D_800DC978); + transition_begin(&gTajTransition); sp6B = 1; play_taj_voice_clip(SOUND_WHOOSH4, TRUE); taj->animFrameF = 0.0f; @@ -2478,7 +2482,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { func_8000E1EC(racerObj, D_8011D4E0 & 0xF); obj->properties.npc.action = TAJ_MODE_TRANSFORM_END; play_sound_global(SOUND_CYMBAL, NULL); - transition_begin(&D_800DC970); + transition_begin(&gTajTransformTransitionEnd); } } break; @@ -2499,7 +2503,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { racer64->racer.transparency = 255; if (taj->animFrameF == 0.0) { if (D_8011D4E0 & 0x80) { - transition_begin(&D_800DC978); + transition_begin(&gTajTransition); sp6B = 1; obj->properties.npc.action = TAJ_MODE_SET_CHALLENGE; play_sound_global(SOUND_WHOOSH4, NULL); @@ -2782,7 +2786,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { gNPCPosY = obj->segment.trans.y_position; } if (sp6B != 0) { - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 0xC, SOUND_NONE, 1.0f, 0); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, BHV_DINO_WHALE, SOUND_NONE, 1.0f, 0); } obj->segment.animFrame = taj->animFrameF * 1.0; func_80061C0C(obj); @@ -3679,7 +3683,7 @@ void obj_loop_bananacreator(Object *obj, s32 updateRate) { newBananaObj->segment.level_entry = NULL; newBananaObj64 = &newBananaObj->unk64->banana; newBananaObj64->spawner = obj; - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 14.0f, obj->segment.trans.z_position, 44, SOUND_SELECT, 0.25f, 0); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 14.0f, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_SELECT, 0.25f, 0); obj->properties.bananaSpawner.spawn = FALSE; } obj->properties.bananaSpawner.timer = TIME_SECONDS(20); // Set delay to respawn banana to 20 seconds. @@ -3891,10 +3895,10 @@ void obj_loop_silvercoin(Object *obj, s32 updateRate) { ObjectInteraction *interactObj; Object_Racer* racer; Object *racerObj; - s32 temp; + s32 twoPlayerAdv; - temp = func_8006C19C(); - if ((temp && obj->properties.npc.action != SILVER_COIN_INACTIVE) || (!temp && obj->properties.npc.action == SILVER_COIN_ACTIVE)) { + twoPlayerAdv = is_two_player_adventure_race(); + if ((twoPlayerAdv && obj->properties.npc.action != SILVER_COIN_INACTIVE) || (!twoPlayerAdv && obj->properties.npc.action == SILVER_COIN_ACTIVE)) { interactObj = obj->interactObj; if (interactObj->distance < 80) { racerObj = interactObj->obj; @@ -4309,7 +4313,7 @@ block_25: func_80072348(racer->playerIndex, 9); } } - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_EXPLOSION, 1.0f, 1); free_object(obj); return; } @@ -4328,7 +4332,7 @@ block_37: } obj->properties.projectile.timer -= updateRate; if (obj->properties.projectile.timer < 0) { - func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, BHV_LENS_FLARE_SWITCH, SOUND_EXPLOSION, 1.0f, 1); free_object(obj); return; } @@ -5174,7 +5178,7 @@ void obj_init_levelname(Object *obj, LevelObjectEntry_LevelName *entry) { if (is_in_tracks_mode()) { free_object(obj); } - func_800C56D0(4); + clear_dialogue_box_open_flag(4); } /** diff --git a/src/objects.c b/src/objects.c index 94e7b82a..b03772b8 100644 --- a/src/objects.c +++ b/src/objects.c @@ -196,7 +196,7 @@ s32 D_8011ADBC; s32 D_8011ADC0; s8 D_8011ADC4; s8 D_8011ADC5; -s32 D_8011ADC8; +u32 D_8011ADC8; s8 (*D_8011ADCC)[8]; f32 D_8011ADD0; s8 D_8011ADD4; @@ -1571,7 +1571,7 @@ void func_80010994(s32 updateRate) { for (i = 0; i < gNumRacers; i++) { racer = &gRacersByPosition[i]->unk64->racer; if (racer->playerIndex != -1) { - func_80043ECC(gRacersByPosition[i], racer, updateRate); + increment_ai_behaviour_chances(gRacersByPosition[i], racer, updateRate); i = gNumRacers; //Why not just break? } } @@ -3184,7 +3184,7 @@ s16 func_8001AE44(void) { return D_8011AD4E; } -s32 func_8001AE54(void) { +u32 func_8001AE54(void) { return D_8011ADC8; } @@ -4109,7 +4109,7 @@ void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry) { camera = &newObj->unk64->anim_camera; camera->unk44 = D_8011AD3E; viewportCount = get_viewport_count(); - if (func_8006C19C()) { + if (is_two_player_adventure_race()) { viewportCount = VIEWPORTS_COUNT_2_PLAYERS; } for (i = 0; i < viewportCount;) { @@ -5140,7 +5140,7 @@ void run_object_loop_func(Object *obj, s32 updateRate) { obj_loop_parkwarden(obj, updateRate); break; case BHV_WORLD_KEY: - obj_loop_worldkey(obj, updateRate); //arg1=speed + obj_loop_worldkey(obj, updateRate); break; case BHV_BANANA_SPAWNER: obj_loop_bananacreator(obj, updateRate); diff --git a/src/objects.h b/src/objects.h index 01655f12..44f6faf6 100644 --- a/src/objects.h +++ b/src/objects.h @@ -372,7 +372,7 @@ s16 get_taj_challenge_type(void); Object *find_taj_object(void); void func_8001A8D4(s32 arg0); s16 func_8001AE44(void); -s32 func_8001AE54(void); +u32 func_8001AE54(void); s32 func_8001B288(void); Object *func_8001B2E0(void); s32 func_8001B3AC(s32 arg0); diff --git a/src/racer.c b/src/racer.c index 1eea0ef2..b2649e16 100644 --- a/src/racer.c +++ b/src/racer.c @@ -239,7 +239,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { s16 sp3C; s16 sp38; Object_64 *sp58; - TempStruct5 *sp54; + AIBehaviourTable *sp54; s16 sp3A; f32 temp_f0; s16 sp6E; @@ -256,7 +256,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { miscAsset2 = (s8 *) get_misc_asset(MISC_ASSET_UNK02); header = get_current_level_header(); racerGroup = get_racer_objects_by_position(&numRacers); - sp54 = func_8006C18C(); + sp54 = get_ai_behaviour_table(); if (racer->unk1C6 > 0) { racer->unk1C6 -= updateRate; } else { @@ -353,10 +353,10 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { } else { balloonType = racer->balloon_type; } - sp38 = (((sp54->unk8[1][1] - sp54->unk8[1][0]) * (7 - var_t5)) / 7) + sp54->unk8[1][0]; - sp36 = (((sp54->unk8[2][1] - sp54->unk8[2][0]) * (7 - var_t5)) / 7) + sp54->unk8[2][0]; - sp3A = (((sp54->unk8[0][1] - sp54->unk8[0][0]) * (7 - var_t5)) / 7) + sp54->unk8[0][0]; - sp3C = (((sp54->unk8[3][1] - sp54->unk8[3][0]) * (7 - var_t5)) / 7) + sp54->unk8[3][0]; + sp38 = (((sp54->percentages[1][1] - sp54->percentages[1][0]) * (7 - var_t5)) / 7) + sp54->percentages[1][0]; + sp36 = (((sp54->percentages[2][1] - sp54->percentages[2][0]) * (7 - var_t5)) / 7) + sp54->percentages[2][0]; + sp3A = (((sp54->percentages[0][1] - sp54->percentages[0][0]) * (7 - var_t5)) / 7) + sp54->percentages[0][0]; + sp3C = (((sp54->percentages[3][1] - sp54->percentages[3][0]) * (7 - var_t5)) / 7) + sp54->percentages[3][0]; if (racer->unk209 & 1) { if (racer->unk201 == 0) { if (racer->balloon_level == 0) { @@ -546,43 +546,47 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { GLOBAL_ASM("asm/non_matchings/racer/func_80042D20.s") #endif -void func_80043ECC(Object *obj, Object_Racer *racer, s32 updateRate) { - TempStruct5 *temp_v0; +/** + * During specific or nonspecific actions, increase the steps in the AI behaviour table. + * Increment percent chances of them performing specific actions, with a maximum of 100%. +*/ +void increment_ai_behaviour_chances(Object *obj, Object_Racer *racer, s32 updateRate) { + AIBehaviourTable *aiTable; s8 *test; s8 balloonType; s32 i; - static s8 D_8011D5BA; - static s8 D_8011D5BB; + static s8 sAIFramesSinceA; + static s8 sAIStartedBoosting; static s8 sBalloonLevelAI; if (!obj) { - D_8011D5BA = 0; - D_8011D5BB = 0; + sAIFramesSinceA = 0; + sAIStartedBoosting = 0; sBalloonLevelAI = 0; return; } - temp_v0 = func_8006C18C(); + aiTable = get_ai_behaviour_table(); if (racer->boostTimer) { - if (!D_8011D5BB) { - temp_v0->unk8[3][0] += temp_v0->unk8[3][2]; - temp_v0->unk8[3][1] += temp_v0->unk8[3][3]; - D_8011D5BB = 1; + if (sAIStartedBoosting == FALSE) { + aiTable->percentages[AI_BLUE_BALLOON][AI_MIN] += aiTable->percentages[AI_BLUE_BALLOON][AI_MIN_STEP]; + aiTable->percentages[AI_BLUE_BALLOON][AI_MAX] += aiTable->percentages[AI_BLUE_BALLOON][AI_MAX_STEP]; + sAIStartedBoosting = TRUE; } if (!(gCurrentRacerInput & A_BUTTON)) { - D_8011D5BA += updateRate; + sAIFramesSinceA += updateRate; } } else { - D_8011D5BB = 0; - if (D_8011D5BA > 20) { - temp_v0->unk8[0][0] += temp_v0->unk8[0][2]; - temp_v0->unk8[0][1] += temp_v0->unk8[0][3]; + sAIStartedBoosting = FALSE; + if (sAIFramesSinceA > 20) { + aiTable->percentages[AI_EMPOWERED_BOOST][AI_MIN] += aiTable->percentages[AI_EMPOWERED_BOOST][AI_MIN_STEP]; + aiTable->percentages[AI_EMPOWERED_BOOST][AI_MAX] += aiTable->percentages[AI_EMPOWERED_BOOST][AI_MAX_STEP]; } - D_8011D5BA = 0; + sAIFramesSinceA = 0; } if (racer->balloon_quantity) { if (sBalloonLevelAI < racer->balloon_level) { - temp_v0->unk8[1][0] += temp_v0->unk8[1][2]; - temp_v0->unk8[1][1] += temp_v0->unk8[1][3]; + aiTable->percentages[AI_GETS_BALLOON][AI_MIN] += aiTable->percentages[1][AI_MIN_STEP]; + aiTable->percentages[AI_GETS_BALLOON][AI_MAX] += aiTable->percentages[1][AI_MAX_STEP]; } sBalloonLevelAI = racer->balloon_level; } else { @@ -596,22 +600,22 @@ void func_80043ECC(Object *obj, Object_Racer *racer, s32 updateRate) { balloonType = racer->balloon_type; } if (gRacerAIBalloonActionTable[balloonType] == 1) { - temp_v0->unk8[2][0] += temp_v0->unk8[2][2]; - temp_v0->unk8[2][1] += temp_v0->unk8[2][3]; + aiTable->percentages[AI_UNK_2][AI_MIN] += aiTable->percentages[AI_UNK_2][AI_MIN_STEP]; + aiTable->percentages[AI_UNK_2][AI_MAX] += aiTable->percentages[AI_UNK_2][AI_MAX_STEP]; } } for (i = 0; i < 2; i++) { - if (temp_v0->unk8[1][i] > 100 || temp_v0->unk8[1][i] < 0) { - temp_v0->unk8[1][i] = 100; + if (aiTable->percentages[AI_GETS_BALLOON][i] > 100 || aiTable->percentages[AI_GETS_BALLOON][i] < 0) { + aiTable->percentages[AI_GETS_BALLOON][i] = 100; } - if (temp_v0->unk8[0][i] > 100 || temp_v0->unk8[0][i] < 0) { - temp_v0->unk8[0][i] = 100; + if (aiTable->percentages[AI_EMPOWERED_BOOST][i] > 100 || aiTable->percentages[AI_EMPOWERED_BOOST][i] < 0) { + aiTable->percentages[AI_EMPOWERED_BOOST][i] = 100; } - if (temp_v0->unk8[3][i] > 100 || temp_v0->unk8[3][i] < 0) { - temp_v0->unk8[3][i] = 100; + if (aiTable->percentages[AI_BLUE_BALLOON][i] > 100 || aiTable->percentages[AI_BLUE_BALLOON][i] < 0) { + aiTable->percentages[AI_BLUE_BALLOON][i] = 100; } - if (temp_v0->unk8[2][i] > 100 || temp_v0->unk8[2][i] < 0) { - temp_v0->unk8[2][i] = 100; + if (aiTable->percentages[AI_UNK_2][i] > 100 || aiTable->percentages[AI_UNK_2][i] < 0) { + aiTable->percentages[AI_UNK_2][i] = 100; } } } @@ -2181,7 +2185,7 @@ void obj_init_racer(Object *obj, LevelObjectEntry_Racer *racer) { D_8011D58C[i] = 0; } if (1) {} if (1) {} // Fakematch - func_80043ECC(NULL, NULL, 0); + increment_ai_behaviour_chances(NULL, NULL, 0); gRacerDialogueCamera = i; gStartBoostTime = 0; tempRacer->lightFlags = 0; diff --git a/src/racer.h b/src/racer.h index 2431df94..6afb672f 100644 --- a/src/racer.h +++ b/src/racer.h @@ -104,6 +104,18 @@ typedef enum LightFlags { RACER_LIGHT_BRAKE = (1 << 7) } LightFlags; +typedef enum RacerAIBehaviours { + AI_EMPOWERED_BOOST, + AI_GETS_BALLOON, + AI_UNK_2, + AI_BLUE_BALLOON +} RacerAIBehaviours; + +#define AI_MIN 0 +#define AI_MAX 1 +#define AI_MIN_STEP 2 +#define AI_MAX_STEP 3 + typedef struct ObjectCamera { /* 0x0014 */ ObjectTransform trans; /* 0x0018 */ f32 unk18; @@ -124,11 +136,11 @@ typedef struct ObjectCamera { /* 0x003F */ u8 unk3F; } ObjectCamera; -typedef struct TempStruct5 { +typedef struct AIBehaviourTable { f32 unk0; f32 unk4; - s8 unk8[4][4]; -} TempStruct5; + s8 percentages[4][4]; +} AIBehaviourTable; typedef struct Asset20 { f32 unk0; @@ -195,7 +207,7 @@ void handle_racer_head_turning(Object *obj, Object_Racer *racer, s32 updateRate) void racer_approach_object(Object *obj, Object_Racer *racer, f32 divisor); void obj_init_racer(Object *obj, LevelObjectEntry_Racer *racer); void racer_AI_pathing_inputs(Object *obj, Object_Racer *racer, s32 updateRate); -void func_80043ECC(Object *obj, Object_Racer *racer, s32 updateRate); +void increment_ai_behaviour_chances(Object *obj, Object_Racer *racer, s32 updateRate); void onscreen_ai_racer_physics(Object *obj, Object_Racer *racer, s32 updateRate); void update_player_camera(Object *obj, Object_Racer *racer, f32 updateRate); void racer_spinout_car(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF); diff --git a/src/stacks.c b/src/stacks.c index 3393e657..2bb126f5 100644 --- a/src/stacks.c +++ b/src/stacks.c @@ -14,6 +14,5 @@ UNUSED u8 D_8012A9B0[0x100]; u16 D_80129BB0[512]; // epcStack? s32 gObjectStackTrace[3]; -s32 D_80129FBC; /******************************/ diff --git a/src/stacks.h b/src/stacks.h index 51e1bcff..b24d7964 100644 --- a/src/stacks.h +++ b/src/stacks.h @@ -8,6 +8,5 @@ extern u8 D_8012A9B0[0x100]; extern u16 D_80129BB0[512]; extern s32 gObjectStackTrace[3]; -extern s32 D_80129FBC; #endif diff --git a/src/thread3_main.c b/src/thread3_main.c index a810210c..a45713d4 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -81,7 +81,7 @@ s32 gNumHudVertsPerPlayer[4] = { 300, 600, 850, 900 }; s32 gNumHudMatPerPlayer[4] = { 300, 400, 550, 600 }; s32 gNumHudTrisPerPlayer[4] = { 20, 30, 40, 50 }; s8 gDrawFrameTimer = 0; -FadeTransition D_800DD3F4 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK2, FADE_COLOR_BLACK, 20, 0); +FadeTransition D_800DD3F4 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 20, 0); UNUSED FadeTransition D_800DD3FC = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_WHITE, 20, -1); s32 sLogicUpdateRate = LOGIC_5FPS; FadeTransition gDrumstickSceneTransition = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_WHITE, 30, -1); diff --git a/src/tracks.c b/src/tracks.c index c0e5265c..5af6ba8a 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -32,8 +32,8 @@ s32 D_800DC870 = 0; // Currently unknown, might be a different type. //!@bug These two transition effects are marked to not clear when done, meaning they stay active the whole time. -FadeTransition gFullFadeToBlack = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK2, FADE_COLOR_BLACK, 40, -1); -FadeTransition gCircleFadeToBlack = FADE_TRANSITION(FADE_CIRCLE, FADE_FLAG_UNK2, FADE_COLOR_BLACK, 70, -1); +FadeTransition gFullFadeToBlack = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 40, -1); +FadeTransition gCircleFadeToBlack = FADE_TRANSITION(FADE_CIRCLE, FADE_FLAG_OUT, FADE_COLOR_BLACK, 70, -1); f32 D_800DC884[10] = { 0.0f, 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.75f, 0.875f @@ -151,7 +151,7 @@ s32 *D_8011D374; s32 D_8011D378; s32 gScenePlayerViewports; UNUSED f32 gCurrBBoxDistanceToCamera; // Used in a comparison check, but functionally unused. -u32 D_8011D384; +u32 gWaveBlockCount; FogData gFogData[4]; Vec3i gScenePerspectivePos; unk8011D474 *D_8011D474; // 0x10 bytes struct? @@ -207,13 +207,13 @@ void init_track(u32 geometry, u32 skybox, s32 numberOfPlayers, Vehicle vehicle, func_8002C0C4(geometry); - D_8011D384 = 0; + gWaveBlockCount = 0; if (numberOfPlayers < 2) { for (i = 0; i < gCurrentLevelModel->numberOfSegments; i++) { - if (gCurrentLevelModel->segments[i].unk2B != 0) { - D_8011D384++; - gCurrentLevelModel->segments[i].unk2B = 1; + if (gCurrentLevelModel->segments[i].hasWaves != 0) { + gWaveBlockCount++; + gCurrentLevelModel->segments[i].hasWaves = 1; } } } @@ -224,7 +224,7 @@ void init_track(u32 geometry, u32 skybox, s32 numberOfPlayers, Vehicle vehicle, i = numberOfPlayers + 1; } - if (D_8011D384) { + if (gWaveBlockCount) { func_800B82B4(gCurrentLevelModel, gCurrentLevelHeader2, i); } @@ -296,7 +296,7 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, TriangleList **tris, } else { tempUpdateRate = updateRate; } - if (D_8011D384) { + if (gWaveBlockCount) { func_800B9C18(tempUpdateRate); } update_shadows(SHADOW_ACTORS, SHADOW_ACTORS, updateRate); @@ -831,7 +831,7 @@ void initialise_player_viewport_vars(s32 updateRate) { gSceneActiveCamera = get_active_camera_segment(); viewportID = get_current_viewport(); compute_scene_camera_transform_matrix(); - update_envmap_position((f32) gScenePerspectivePos.x / 65536.0f, (f32) gScenePerspectivePos.y / 65536.0f, (f32) gScenePerspectivePos.z / 65536.0f); + update_envmap_position(gScenePerspectivePos.x / 65536.0f, gScenePerspectivePos.y / 65536.0f, gScenePerspectivePos.z / 65536.0f); segmentIndex = gSceneActiveCamera->object.cameraSegmentID; if (segmentIndex > -1 && (segmentIndex < gCurrentLevelModel->numberOfSegments)) { gSceneStartSegment = gCurrentLevelModel->segments[segmentIndex].unk28; @@ -841,7 +841,7 @@ void initialise_player_viewport_vars(s32 updateRate) { gPrevCameraX = gSceneActiveCamera->trans.x_position; gPrevCameraY = gSceneActiveCamera->trans.y_position; gPrevCameraZ = gSceneActiveCamera->trans.z_position; - if (D_8011D384 != 0) { + if (gWaveBlockCount != 0) { func_800B8B8C(); racers = get_racer_objects(&numRacers); if (gSceneActiveCamera->object.unk36 != 7 && numRacers > 0 && !check_if_showing_cutscene_camera()) { @@ -852,7 +852,7 @@ void initialise_player_viewport_vars(s32 updateRate) { } while(i < numRacers - 1 && viewportID != racer->playerIndex); func_800B8C04(racers[i]->segment.trans.x_position, racers[i]->segment.trans.y_position, racers[i]->segment.trans.z_position, get_current_viewport(), updateRate); } else { - func_800B8C04((s32) gSceneActiveCamera->trans.x_position, (s32) gSceneActiveCamera->trans.y_position, (s32) gSceneActiveCamera->trans.z_position, get_current_viewport(), updateRate); + func_800B8C04(gSceneActiveCamera->trans.x_position, gSceneActiveCamera->trans.y_position, gSceneActiveCamera->trans.z_position, get_current_viewport(), updateRate); } } get_current_level_header()->unk3 = 1; @@ -975,7 +975,7 @@ void render_level_geometry_and_objects(void) { } } - if (D_8011D384 != 0) { + if (gWaveBlockCount != 0) { func_800BA8E4(&gSceneCurrDisplayList, &gSceneCurrMatrix, get_current_viewport()); } @@ -1052,7 +1052,7 @@ void render_level_segment(s32 segmentId, s32 nonOpaque) { s32 textureFlags; numberVertices = (batchInfo + 1)->verticesOffset - batchInfo->verticesOffset; segment = &gCurrentLevelModel->segments[segmentId]; - sp78 = (nonOpaque && D_8011D384) ? (func_800B9228(segment)) : (0); + sp78 = (nonOpaque && gWaveBlockCount) ? (func_800B9228(segment)) : (0); if (nonOpaque) { startPos = segment->numberofOpaqueBatches; endPos = segment->numberOfBatches; @@ -1637,7 +1637,7 @@ s32 func_8002B9BC(Object *obj, f32 *arg1, f32 *arg2, s32 arg3) { return FALSE; } seg = &gCurrentLevelModel->segments[obj->segment.object.segmentID]; - if ((seg->unk2B != 0) && (D_8011D384 != 0) && (arg3 == 1)) { + if ((seg->hasWaves != 0) && (gWaveBlockCount != 0) && (arg3 == 1)) { *arg1 = func_800BB2F4(obj->segment.object.segmentID, obj->segment.trans.x_position, obj->segment.trans.z_position, arg2); return TRUE; } else { @@ -1782,8 +1782,8 @@ void free_track(void) { s32 i; func_8000B290(); - if (D_8011D384 != 0) { - func_800B7D20(); + if (gWaveBlockCount != 0) { + free_waves(); } for (i = 0; i < gCurrentLevelModel->numberOfTextures; i++) { free_texture(gCurrentLevelModel->textures[i].texture); @@ -2231,7 +2231,7 @@ void func_8002E234(Object *obj, s32 bool) { D_8011D0C0 = func_8007B46C(obj->waterEffect->texture, obj->waterEffect->textureFrame << 8); D_8011D0CE = obj->segment.header->unk48 + yPos; D_8011D0CC = obj->segment.header->unk46 + yPos; - if ((D_8011D384 == 0) || ((get_viewport_count() <= 0))) { + if ((gWaveBlockCount == 0) || ((get_viewport_count() <= 0))) { D_8011D0C8 = 0; } D_8011D0D8 = (obj->waterEffect->scale * character_scale); @@ -2283,7 +2283,7 @@ void func_8002E234(Object *obj, s32 bool) { D_8011D0EC = -1; for (i = 0; i < segs; i++) { if (new_var[i] >= 0) { - if (bool && (gCurrentLevelModel->segments[inSegs[i]].unk2B != 0) && (D_8011D384 != 0)) { + if (bool && (gCurrentLevelModel->segments[inSegs[i]].hasWaves != 0) && (gWaveBlockCount != 0)) { func_8002EEEC(); } else { test = func_800314DC( diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index e8527b93..15be8c61 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -201,7 +201,7 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r gTrickyRacerPeakHeight = firstRacerObj->segment.trans.y_position; } if (firstRacerObj->segment.trans.y_position + 400.0 < gTrickyRacerPeakHeight) { - if (fxFadeOn() == 0 && is_in_two_player_adventure()) { + if (check_fadeout_transition() == 0 && is_in_two_player_adventure()) { func_8006F398(); } func_8006F140(1); diff --git a/src/waves.c b/src/waves.c index 7b95a1c6..b3b51ec5 100644 --- a/src/waves.c +++ b/src/waves.c @@ -8,6 +8,7 @@ #include "memory.h" #include "textures_sprites.h" #include "objects.h" +#include "tracks.h" /************ .data ************/ @@ -64,13 +65,13 @@ s16 D_800E3144[26] = { s32 *D_800E3178 = NULL; s32 D_800E317C = 0; -s32 D_800E3180 = 0; +LevelHeader_70 *D_800E3180 = NULL; unk800E3184 *D_800E3184 = NULL; s32 D_800E3188 = NULL; s32 D_800E318C = 0; unk800E3190 *D_800E3190 = NULL; Object **D_800E3194 = NULL; -Object *D_800E3198 = 0; +Object *gWaveGeneratorObj = NULL; s32 D_800E319C = 0; /*******************************/ @@ -95,8 +96,8 @@ s32 D_8012A01C; s32 D_8012A020[2]; s32 D_8012A028[20]; s32 D_8012A078; -TriangleBatchInfo *D_8012A07C; -TextureHeader *D_8012A080; +TriangleBatchInfo *gWaveBatch; +TextureHeader *gWaveTexture; s32 D_8012A084; s32 D_8012A088; s32 D_8012A08C; @@ -106,10 +107,10 @@ s32 D_8012A098; s32 D_8012A09C; s32 D_8012A0A0; s32 D_8012A0A4; -s32 D_8012A0A8; -s32 D_8012A0AC; -s32 D_8012A0B0; -s32 D_8012A0B4; +s32 gWaveBoundingBoxDiffX; +s32 gWaveBoundingBoxDiffZ; +s32 gWaveBoundingBoxX1; +s32 gWaveBoundingBoxZ1; f32 D_8012A0B8; f32 D_8012A0BC; s32 D_8012A0C0; @@ -135,7 +136,7 @@ s32 D_8012A72C; /*****************************/ -void func_800B7D20(void) { +void free_waves(void) { if (D_800E3040 != NULL) { free_from_memory_pool(D_800E3040); D_800E3040 = NULL; @@ -317,10 +318,10 @@ void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1) { numSegments = level->numberOfSegments; curBatch = 0; - for (i = 0; (curBatch == 0) && (i < numSegments); i++) { + for (i = 0; curBatch == 0 && i < numSegments; i++) { segment = &level->segments[i]; - for (j = 0; (curBatch == 0) && (j < segment->numberOfBatches); j++) { - if ((segment->batches[j].flags & 0x01002100) == 0x01002000) { + for (j = 0; curBatch == 0 && j < segment->numberOfBatches; j++) { + if ((segment->batches[j].flags & (BATCH_FLAGS_UNK01000000 | BATCH_FLAGS_WATER | BATCH_FLAGS_HIDDEN)) == (BATCH_FLAGS_UNK01000000 | BATCH_FLAGS_WATER)) { curBatch = &segment->batches[j]; } } @@ -332,15 +333,15 @@ void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1) { i--; } bb = &level->segmentsBoundingBoxes[i]; - D_8012A0A8 = bb->x2 - bb->x1; - D_8012A0AC = bb->z2 - bb->z1; - D_8012A0B0 = bb->x1; - D_8012A0B4 = bb->z1; - D_8012A07C = curBatch; - D_8012A080 = level->textures[curBatch->textureIndex].texture; - temp_t6 = (curBatch->flags & 0x70000000) >> 0x1C; + gWaveBoundingBoxDiffX = bb->x2 - bb->x1; + gWaveBoundingBoxDiffZ = bb->z2 - bb->z1; + gWaveBoundingBoxX1 = bb->x1; + gWaveBoundingBoxZ1 = bb->z1; + gWaveBatch = curBatch; + gWaveTexture = level->textures[curBatch->textureIndex].texture; + temp_t6 = (curBatch->flags & (BATCH_FLAGS_UNK40000000 | BATCH_FLAGS_UNK20000000 | BATCH_FLAGS_UNK10000000)) >> 0x1C; if (temp_t6 > 0) { - D_800E3180 = arg1->unk70[temp_t6]; + D_800E3180 = (LevelHeader_70 *) arg1->unk70[temp_t6]; } else { D_800E3180 = 0; } @@ -699,13 +700,13 @@ void obj_loop_wavepower(Object *obj) { f32 diffX; f32 distance; - if (obj != D_800E3198) { + if (obj != gWaveGeneratorObj) { racers = get_racer_objects(&numRacers); if (numRacers > 0) { racerObj = NULL; for (i = 0; i < numRacers && racerObj == NULL; i++) { racer = (Object_Racer *) racers[i]->unk64; - if (racer->playerIndex == 0) { + if (racer->playerIndex == PLAYER_ONE) { racerObj = racers[i]; } } @@ -716,11 +717,11 @@ void obj_loop_wavepower(Object *obj) { diffX = racerObj->segment.trans.x_position - obj->segment.trans.x_position; diffY = racerObj->segment.trans.y_position - obj->segment.trans.y_position; diffZ = racerObj->segment.trans.z_position - obj->segment.trans.z_position; - if (((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ)) < distance) { - D_8012A720 = ((f32) entry->unkA * (1.0f / 256.0f)); - D_8012A724 = ((D_8012A720 - D_80129FC8->unk40) / (f32) entry->unkC); - D_8012A728 = (s32) entry->unkC; - D_800E3198 = obj; + if ((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ) < distance) { + D_8012A720 = entry->unkA * (1.0f / 256.0f); + D_8012A724 = (D_8012A720 - D_80129FC8->unk40) / (f32) entry->unkC; + D_8012A728 = entry->unkC; + gWaveGeneratorObj = obj; } } } diff --git a/src/waves.h b/src/waves.h index b7e5ca24..b4141922 100644 --- a/src/waves.h +++ b/src/waves.h @@ -116,7 +116,7 @@ typedef struct unk800BF9F8 { u16 unk18; } unk800BF9F8; -void func_800B7D20(void); +void free_waves(void); void func_800B8B8C(void); s32 func_800B9228(LevelModelSegment *arg0); void func_800BBDDC(LevelModel *level, LevelHeader *header); diff --git a/src/weather.c b/src/weather.c index 989ec735..ccaed4a4 100644 --- a/src/weather.c +++ b/src/weather.c @@ -145,7 +145,7 @@ s32 D_800E2C90 = 0; SoundMask *gWeatherSoundMask = NULL; -FadeTransition D_800E2C98 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK1, FADE_COLOR_WHITE, 5, 2); +FadeTransition gThunderTransition = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_INVERT, FADE_COLOR_WHITE, 5, 2); /*******************************/ @@ -633,8 +633,8 @@ void handle_rain_lightning(s32 updateRate) { if (gThunderTimer > 0) { gThunderTimer -= updateRate; if (gThunderTimer <= 0) { - if (D_800E2C6C >= 32769 && fxFadeOn() == 0) { - transition_begin(&D_800E2C98); + if (D_800E2C6C >= 32769 && check_fadeout_transition() == 0) { + transition_begin(&gThunderTransition); } play_sound_global(SOUND_LIGHTNING, NULL); gThunderTimer = 0;