Document render/update objects (#565)

* Document objects related code.
  * Including render/update objects code
* Various renamings
This commit is contained in:
coco875 2024-03-04 17:02:45 +01:00 committed by GitHub
parent 1aa6824d33
commit f99e242d97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
72 changed files with 3063 additions and 3014 deletions

View File

@ -652,7 +652,7 @@ glabel func_80009B60
.L8000A488:
/* 00B088 8000A488 00E02825 */ move $a1, $a3
/* 00B08C 8000A48C AFA8003C */ sw $t0, 0x3c($sp)
/* 00B090 8000A490 0C0AD489 */ jal get_angle_between_points
/* 00B090 8000A490 0C0AD489 */ jal get_angle_between_two_vectors
/* 00B094 8000A494 24C40014 */ addiu $a0, $a2, 0x14
/* 00B098 8000A498 8FA60040 */ lw $a2, 0x40($sp)
/* 00B09C 8000A49C 8FA8003C */ lw $t0, 0x3c($sp)
@ -718,7 +718,7 @@ glabel func_80009B60
/* 00B16C 8000A56C 1040008A */ beqz $v0, .L8000A798
/* 00B170 8000A570 8FAE0040 */ lw $t6, 0x40($sp)
/* 00B174 8000A574 25C40020 */ addiu $a0, $t6, 0x20
/* 00B178 8000A578 0C0AD489 */ jal get_angle_between_points
/* 00B178 8000A578 0C0AD489 */ jal get_angle_between_two_vectors
/* 00B17C 8000A57C 25C50014 */ addiu $a1, $t6, 0x14
/* 00B180 8000A580 8FAC0034 */ lw $t4, 0x34($sp)
/* 00B184 8000A584 3C188016 */ lui $t8, %hi(D_80163300) # $t8, 0x8016
@ -1172,7 +1172,7 @@ glabel func_80009B60
/* 00B7F8 8000ABF8 C4A80008 */ lwc1 $f8, 8($a1)
/* 00B7FC 8000ABFC AFA80020 */ sw $t0, 0x20($sp)
/* 00B800 8000AC00 8FA4001C */ lw $a0, 0x1c($sp)
/* 00B804 8000AC04 0C0AD489 */ jal get_angle_between_points
/* 00B804 8000AC04 0C0AD489 */ jal get_angle_between_two_vectors
/* 00B808 8000AC08 E4680000 */ swc1 $f8, ($v1)
/* 00B80C 8000AC0C 3C013FC0 */ li $at, 0x3FC00000 # 1.500000
/* 00B810 8000AC10 44810000 */ mtc1 $at, $f0

View File

@ -324,10 +324,10 @@ glabel func_8006FA94
/* 070B5C 8006FF5C 3C198019 */ lui $t9, %hi(D_8018D214) # $t9, 0x8019
/* 070B60 8006FF60 AC38D214 */ sw $t8, %lo(D_8018D214)($at)
/* 070B64 8006FF64 8F39D214 */ lw $t9, %lo(D_8018D214)($t9)
/* 070B68 8006FF68 3C018016 */ lui $at, %hi(D_801657B0) # $at, 0x8016
/* 070B6C 8006FF6C 3C0E8016 */ lui $t6, %hi(D_801657B0) # $t6, 0x8016
/* 070B70 8006FF70 A03957B0 */ sb $t9, %lo(D_801657B0)($at)
/* 070B74 8006FF74 81CE57B0 */ lb $t6, %lo(D_801657B0)($t6)
/* 070B68 8006FF68 3C018016 */ lui $at, %hi(gHUDDisable) # $at, 0x8016
/* 070B6C 8006FF6C 3C0E8016 */ lui $t6, %hi(gHUDDisable) # $t6, 0x8016
/* 070B70 8006FF70 A03957B0 */ sb $t9, %lo(gHUDDisable)($at)
/* 070B74 8006FF74 81CE57B0 */ lb $t6, %lo(gHUDDisable)($t6)
/* 070B78 8006FF78 3C018016 */ lui $at, %hi(D_801657AE) # $at, 0x8016
/* 070B7C 8006FF7C 3C0F8019 */ lui $t7, %hi(D_8018D2F8) # $t7, 0x8019
/* 070B80 8006FF80 A02E57AE */ sb $t6, %lo(D_801657AE)($at)

View File

@ -1331,7 +1331,7 @@ glabel L800A073C
/* 0A1344 800A0744 10000060 */ b .L800A08C8
/* 0A1348 800A0748 8FBF0034 */ lw $ra, 0x34($sp)
glabel L800A074C
/* 0A134C 800A074C 0C0292CE */ jal func_800A4B38
/* 0A134C 800A074C 0C0292CE */ jal render_pause_menu
/* 0A1350 800A0750 02202025 */ move $a0, $s1
/* 0A1354 800A0754 1000005C */ b .L800A08C8
/* 0A1358 800A0758 8FBF0034 */ lw $ra, 0x34($sp)

View File

@ -103,7 +103,7 @@ glabel L800A2054
/* 0A2C78 800A2078 24130004 */ li $s3, 4
.L800A207C:
/* 0A2C7C 800A207C 02402825 */ move $a1, $s2
/* 0A2C80 800A2080 0C024889 */ jal func_80092224
/* 0A2C80 800A2080 0C024889 */ jal set_text_color_rainbow_if_selected
/* 0A2C84 800A2084 24060003 */ li $a2, 3
/* 0A2C88 800A2088 24040032 */ li $a0, 50
/* 0A2C8C 800A208C 02002825 */ move $a1, $s0
@ -173,7 +173,7 @@ glabel L800A2118
/* 0A2D80 800A2180 2484FFE2 */ addiu $a0, $a0, -0x1e
.L800A2184:
/* 0A2D84 800A2184 02402825 */ move $a1, $s2
/* 0A2D88 800A2188 0C024889 */ jal func_80092224
/* 0A2D88 800A2188 0C024889 */ jal set_text_color_rainbow_if_selected
/* 0A2D8C 800A218C 24060001 */ li $a2, 1
/* 0A2D90 800A2190 24040084 */ li $a0, 132
/* 0A2D94 800A2194 02002825 */ move $a1, $s0
@ -408,7 +408,7 @@ glabel L800A23DC
/* 0A30E4 800A24E4 8339EDEC */ lb $t9, %lo(D_8018EDEC)($t9)
/* 0A30E8 800A24E8 02002825 */ move $a1, $s0
/* 0A30EC 800A24EC 24060001 */ li $a2, 1
/* 0A30F0 800A24F0 0C024870 */ jal func_800921C0
/* 0A30F0 800A24F0 0C024870 */ jal text_rainbow_effect
/* 0A30F4 800A24F4 03352023 */ subu $a0, $t9, $s5
/* 0A30F8 800A24F8 3C088019 */ lui $t0, %hi(D_8018EDEC) # $t0, 0x8019
/* 0A30FC 800A24FC 8108EDEC */ lb $t0, %lo(D_8018EDEC)($t0)
@ -735,7 +735,7 @@ glabel L800A26A8
/* 0A3584 800A2984 A7B100E0 */ sh $s1, 0xe0($sp)
/* 0A3588 800A2988 A7AF00E2 */ sh $t7, 0xe2($sp)
.L800A298C:
/* 0A358C 800A298C 0C024870 */ jal func_800921C0
/* 0A358C 800A298C 0C024870 */ jal text_rainbow_effect
/* 0A3590 800A2990 24060003 */ li $a2, 3
/* 0A3594 800A2994 02202025 */ move $a0, $s1
/* 0A3598 800A2998 240500D2 */ li $a1, 210

View File

@ -85,8 +85,8 @@ glabel func_800A5738
/* 0A6374 800A5774 54200228 */ bnel $at, $zero, .L800A6018
/* 0A6378 800A5778 8FBF0044 */ lw $ra, 0x44($sp)
/* 0A637C 800A577C 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7)
/* 0A6380 800A5780 3C11800E */ lui $s1, %hi(D_800E775C) # $s1, 0x800e
/* 0A6384 800A5784 2631775C */ addiu $s1, %lo(D_800E775C) # addiu $s1, $s1, 0x775c
/* 0A6380 800A5780 3C11800E */ lui $s1, %hi(gTextPauseButton) # $s1, 0x800e
/* 0A6384 800A5784 2631775C */ addiu $s1, %lo(gTextPauseButton) # addiu $s1, $s1, 0x775c
/* 0A6388 800A5788 05E10003 */ bgez $t7, .L800A5798
/* 0A638C 800A578C 000FC103 */ sra $t8, $t7, 4
/* 0A6390 800A5790 25E1000F */ addiu $at, $t7, 0xf
@ -327,9 +327,9 @@ glabel L800A5940
/* 0A6724 800A5B24 0C024E7F */ jal text_draw
/* 0A6728 800A5B28 E7B40014 */ swc1 $f20, 0x14($sp)
/* 0A672C 800A5B2C 3C013F40 */ li $at, 0x3F400000 # 0.750000
/* 0A6730 800A5B30 3C02800E */ lui $v0, %hi(D_800E775C) # $v0, 0x800e
/* 0A6730 800A5B30 3C02800E */ lui $v0, %hi(gTextPauseButton) # $v0, 0x800e
/* 0A6734 800A5B34 4481A000 */ mtc1 $at, $f20
/* 0A6738 800A5B38 2442775C */ addiu $v0, %lo(D_800E775C) # addiu $v0, $v0, 0x775c
/* 0A6738 800A5B38 2442775C */ addiu $v0, %lo(gTextPauseButton) # addiu $v0, $v0, 0x775c
/* 0A673C 800A5B3C 00008825 */ move $s1, $zero
/* 0A6740 800A5B40 00008025 */ move $s0, $zero
/* 0A6744 800A5B44 24120006 */ li $s2, 6
@ -338,7 +338,7 @@ glabel L800A5940
/* 0A674C 800A5B4C AFA20050 */ sw $v0, 0x50($sp)
/* 0A6750 800A5B50 02202825 */ move $a1, $s1
/* 0A6754 800A5B54 24060001 */ li $a2, 1
/* 0A6758 800A5B58 0C024870 */ jal func_800921C0
/* 0A6758 800A5B58 0C024870 */ jal text_rainbow_effect
/* 0A675C 800A5B5C 2484FFF5 */ addiu $a0, $a0, -0xb
/* 0A6760 800A5B60 3C0E800F */ lui $t6, %hi(D_800E8538 + 2) # $t6, 0x800f
/* 0A6764 800A5B64 8FA20050 */ lw $v0, 0x50($sp)
@ -425,7 +425,7 @@ glabel L800A5C18
/* 0A6894 800A5C94 8E640004 */ lw $a0, 4($s3)
/* 0A6898 800A5C98 02202825 */ move $a1, $s1
/* 0A689C 800A5C9C 24060001 */ li $a2, 1
/* 0A68A0 800A5CA0 0C024870 */ jal func_800921C0
/* 0A68A0 800A5CA0 0C024870 */ jal text_rainbow_effect
/* 0A68A4 800A5CA4 2484FFE2 */ addiu $a0, $a0, -0x1e
/* 0A68A8 800A5CA8 26240001 */ addiu $a0, $s1, 1
/* 0A68AC 800A5CAC AFA40054 */ sw $a0, 0x54($sp)
@ -556,7 +556,7 @@ glabel L800A5E00
/* 0A6A7C 800A5E7C AFA20050 */ sw $v0, 0x50($sp)
/* 0A6A80 800A5E80 02202825 */ move $a1, $s1
/* 0A6A84 800A5E84 24060001 */ li $a2, 1
/* 0A6A88 800A5E88 0C024870 */ jal func_800921C0
/* 0A6A88 800A5E88 0C024870 */ jal text_rainbow_effect
/* 0A6A8C 800A5E8C 2484FFDD */ addiu $a0, $a0, -0x23
/* 0A6A90 800A5E90 8FA20050 */ lw $v0, 0x50($sp)
/* 0A6A94 800A5E94 8E6F000C */ lw $t7, 0xc($s3)

View File

@ -74,7 +74,7 @@ glabel func_8004C6FC
/* 04D410 8004C810 02003025 */ move $a2, $s0
/* 04D414 8004C814 00008812 */ mflo $s1
/* 04D418 8004C818 00116880 */ sll $t5, $s1, 2
/* 04D41C 8004C81C 0C010F0A */ jal func_80043C28
/* 04D41C 8004C81C 0C010F0A */ jal load_texture_tile_rgba32_nomirror
/* 04D420 8004C820 01A08825 */ move $s1, $t5
/* 04D424 8004C824 240E0001 */ li $t6, 1
/* 04D428 8004C828 AFAE0010 */ sw $t6, 0x10($sp)

View File

@ -157,7 +157,7 @@ glabel func_8004F168
/* 04FFC4 8004F3C4 8FBF002C */ lw $ra, 0x2c($sp)
.L8004F3C8:
/* 04FFC8 8004F3C8 25CED0D8 */ addiu $t6, %lo(common_texture_minimap_progress_dot) # addiu $t6, $t6, -0x2f28
/* 04FFCC 8004F3CC 0C0130D9 */ jal func_8004C364
/* 04FFCC 8004F3CC 0C0130D9 */ jal draw_hud_2d_texture
/* 04FFD0 8004F3D0 AFAE0010 */ sw $t6, 0x10($sp)
.L8004F3D4:
/* 04FFD4 8004F3D4 8FBF002C */ lw $ra, 0x2c($sp)

View File

@ -30,7 +30,7 @@ glabel func_8007C360
/* 07CFCC 8007C3CC 01403825 */ move $a3, $t2
/* 07CFD0 8007C3D0 24050080 */ li $a1, 128
/* 07CFD4 8007C3D4 AFA60020 */ sw $a2, 0x20($sp)
/* 07CFD8 8007C3D8 0C01C87A */ jal set_object_flag_unk_054_false
/* 07CFD8 8007C3D8 0C01C87A */ jal set_object_flag_status_false
/* 07CFDC 8007C3DC AFAA001C */ sw $t2, 0x1c($sp)
/* 07CFE0 8007C3E0 8FA60020 */ lw $a2, 0x20($sp)
/* 07CFE4 8007C3E4 8FA7001C */ lw $a3, 0x1c($sp)
@ -38,7 +38,7 @@ glabel func_8007C360
/* 07CFEC 8007C3EC A0C700D2 */ sb $a3, 0xd2($a2)
.L8007C3F0:
/* 07CFF0 8007C3F0 AFA60020 */ sw $a2, 0x20($sp)
/* 07CFF4 8007C3F4 0C01C870 */ jal set_object_flag_unk_054_true
/* 07CFF4 8007C3F4 0C01C870 */ jal set_object_flag_status_true
/* 07CFF8 8007C3F8 AFA7001C */ sw $a3, 0x1c($sp)
/* 07CFFC 8007C3FC 8FA7001C */ lw $a3, 0x1c($sp)
/* 07D000 8007C400 8FA60020 */ lw $a2, 0x20($sp)

View File

@ -24,7 +24,7 @@ glabel func_8007C4A4
/* 07D0F8 8007C4F8 01003025 */ move $a2, $t0
/* 07D0FC 8007C4FC 24050080 */ li $a1, 128
/* 07D100 8007C500 AFA30020 */ sw $v1, 0x20($sp)
/* 07D104 8007C504 0C01C87A */ jal set_object_flag_unk_054_false
/* 07D104 8007C504 0C01C87A */ jal set_object_flag_status_false
/* 07D108 8007C508 AFA8001C */ sw $t0, 0x1c($sp)
/* 07D10C 8007C50C 8FA30020 */ lw $v1, 0x20($sp)
/* 07D110 8007C510 8FA6001C */ lw $a2, 0x1c($sp)
@ -33,7 +33,7 @@ glabel func_8007C4A4
.L8007C51C:
/* 07D11C 8007C51C 24050080 */ li $a1, 128
/* 07D120 8007C520 AFA30020 */ sw $v1, 0x20($sp)
/* 07D124 8007C524 0C01C870 */ jal set_object_flag_unk_054_true
/* 07D124 8007C524 0C01C870 */ jal set_object_flag_status_true
/* 07D128 8007C528 AFA6001C */ sw $a2, 0x1c($sp)
/* 07D12C 8007C52C 8FA6001C */ lw $a2, 0x1c($sp)
/* 07D130 8007C530 8FA30020 */ lw $v1, 0x20($sp)

View File

@ -56,7 +56,7 @@ glabel func_80082F1C
/* 083BD8 80082FD8 44050000 */ mfc1 $a1, $f0
/* 083BDC 80082FDC 44060000 */ mfc1 $a2, $f0
/* 083BE0 80082FE0 44070000 */ mfc1 $a3, $f0
/* 083BE4 80082FE4 0C022E03 */ jal func_8008B80C
/* 083BE4 80082FE4 0C022E03 */ jal set_obj_origin_offset
/* 083BE8 80082FE8 00000000 */ nop
/* 083BEC 80082FEC 8FA20024 */ lw $v0, 0x24($sp)
/* 083BF0 80082FF0 02002025 */ move $a0, $s0

View File

@ -70,7 +70,7 @@
#include "src/code_8003DC40.h"
#include "src/code_80057C60.h"
#include "src/code_8006E9C0.h"
#include "src/code_80071F00.h"
#include "src/update_objects.h"
#include "src/code_80086E70.h"
#include "src/code_80091440.h"
#include "src/code_80091750.h"
@ -89,7 +89,7 @@
#include "src/ending/code_80281C40.h"
#include "src/ending/credits.h"
#include "src/ending/podium_ceremony_actors.h"
#include "src/hud_renderer.h"
#include "src/render_objects.h"
#include "src/kart_dma.h"
#include "src/main.h"
#include "src/math_util_2.h"

View File

@ -30,7 +30,7 @@ void actor_name(Camera, Mat4, actor) {
```
Check actor_types.h for a full list of options. You can create a new actor struct for your actor and customize it or use a predefined one. All actor structs must retain the same size. Generally, the types in the struct may be modified so long as `type` and `flags` stay the same as those are used elsewhere.
See `update_obj_railroad_crossing` for an example of how a timer may be setup and used.
See `update_actor_railroad_crossing` for an example of how a timer may be setup and used.
Audio may be activated using the following method:
@ref func_800C98B8

View File

@ -89,7 +89,7 @@ Object related code resides in
|file|desc|
|---|---|
|[code_80057C60](@ref code_80057C60.c)|Objects|
|[code_80071F00](@ref code_80071F00.c)|Objects|
|[update_objects](@ref update_objects.c)|Objects|
|[code_80086E70](@ref code_80086E70.c)|Objects|
Documentation of the specifics still in-progress. See [actors](actorsmenu.html) for more information.
@ -114,7 +114,7 @@ Course related code resides in
## UI & Other 2D Screen data
|file|desc|
|---|---|
|[hud_renderer](@ref hud_renderer.c)|ItemWindows|
|[render_objects](@ref render_objects.c)|ItemWindows|
## Engine
|file|desc|

View File

@ -9,70 +9,71 @@
//#pragma GCC diagnostic ignored "-Wmicrosoft-extension"
//#pragma GCC diagnostic ignored "-Wmissing-member-name-in-structure-/-union"
/*
gActorList should be understood to be populated by generic Actor structs.
However, for human readability, many functions interacting with actor list elements expect one of the many
specialized types found in this file.
Note that specialized types must be the same size as a plain Actor. Don't be mislead into thinking that
because its a separate type that it can modified separately from plain Actor. If you modify/add an actor type
and its size is different from plain Actor's, you WILL run into buggy (potentially crash inducing) behaviour.
Specialized structs are customizable so long as the following member specifications are met:
In general:
0x00 -> s16 type
0x02 -> s16 flags
0x30 -> Collision unk30
If player can collide with the actor:
0x0C -> f32 boundingBoxSize
If the actor makes sound (necessary for doppler/volume stuff):
0x18 -> Vec3f pos
0x24 -> Vec3f velocity
Other members are more flexible, and even the non-general specifications can be ignored IF AND ONLY IF you know
exactly what you're doing.
*/
#define ACTOR_TREE_MARIO_RACEWAY 0x02
#define ACTOR_TREE_YOSHI_VALLEY 0x03
#define ACTOR_TREE_ROYAL_RACEWAY 0x04
#define ACTOR_FALLING_ROCK 0x05
#define ACTOR_BANANA 0x06
#define ACTOR_GREEN_SHELL 0x07
#define ACTOR_RED_SHELL 0x08
#define ACTOR_YOSHI_VALLEY_EGG 0x09
#define ACTOR_PIRANHA_PLANT 0x0A
#define ACTOR_ITEM_BOX 0x0C
#define ACTOR_FAKE_ITEM_BOX 0x0D
#define ACTOR_BANANA_BUNCH 0x0E
#define ACTOR_TRAIN_ENGINE 0x0F
#define ACTOR_TRAIN_TENDER 0x10
#define ACTOR_TRAIN_PASSENGER_CAR 0x11
#define ACTOR_COW 0x12
#define ACTOR_TREE_MOO_MOO_FARM 0x13
#define ACTOR_TRIPLE_GREEN_SHELL 0x15
#define ACTOR_TRIPLE_RED_SHELL 0x16
#define ACTOR_MARIO_RACEWAY_SIGN 0x17
#define ACTOR_PALM_TREE 0x19
#define ACTOR_TREE_BOWSERS_CASTLE 0x1C
#define ACTOR_TREE_FRAPPE_SNOWLAND 0x1D
#define ACTOR_CACTUS1_KALAMARI_DESERT 0x1E
#define ACTOR_CACTUS2_KALAMARI_DESERT 0x1F
#define ACTOR_CACTUS3_KALAMARI_DESERT 0x20
#define ACTOR_BUSH_BOWSERS_CASTLE 0x21
#define ACTOR_WARIO_STADIUM_SIGN 0x23
#define ACTOR_BOX_TRUCK 0x25
#define ACTOR_PADDLE_WHEEL_BOAT 0x26
#define ACTOR_RAILROAD_CROSSING 0x27
#define ACTOR_SCHOOL_BUS 0x28
#define ACTOR_TANKER_TRUCK 0x29
#define ACTOR_BLUE_SPINY_SHELL 0x2A
#define ACTOR_HOT_AIR_BALLOON_ITEM_BOX 0x2B
#define ACTOR_CAR 0x2C
#define ACTOR_KIWANO_FRUIT 0x2D
/**
* gActorList should be understood to be populated by generic Actor structs.
* However, for human readability, many functions interacting with actor list elements expect one of the many
* specialized types found in this file.
*
* Note that specialized types must be the same size as a plain Actor. Don't be mislead into thinking that
* because its a separate type that it can modified separately from plain Actor. If you modify/add an actor type
* and its size is different from plain Actor's, you WILL run into buggy (potentially crash inducing) behaviour.
*
* Specialized structs are customizable so long as the following member specifications are met:
*
* In general:
* 0x00 -> s16 type
* 0x02 -> s16 flags
* 0x30 -> Collision unk30
*
* If player can collide with the actor:
* 0x0C -> f32 boundingBoxSize
*
* If the actor makes sound (necessary for doppler/volume stuff):
* 0x18 -> Vec3f pos
* 0x24 -> Vec3f velocity
*
* Other members are more flexible, and even the non-general specifications can be ignored IF AND ONLY IF you know
* exactly what you're doing.
*/
enum ActorType {
ACTOR_TREE_MARIO_RACEWAY = 0x02,
ACTOR_TREE_YOSHI_VALLEY,
ACTOR_TREE_ROYAL_RACEWAY,
ACTOR_FALLING_ROCK,
ACTOR_BANANA,
ACTOR_GREEN_SHELL,
ACTOR_RED_SHELL,
ACTOR_YOSHI_VALLEY_EGG,
ACTOR_PIRANHA_PLANT,
ACTOR_ITEM_BOX = 0x0C,
ACTOR_FAKE_ITEM_BOX,
ACTOR_BANANA_BUNCH,
ACTOR_TRAIN_ENGINE,
ACTOR_TRAIN_TENDER,
ACTOR_TRAIN_PASSENGER_CAR,
ACTOR_COW,
ACTOR_TREE_MOO_MOO_FARM,
ACTOR_TRIPLE_GREEN_SHELL = 0x15,
ACTOR_TRIPLE_RED_SHELL,
ACTOR_MARIO_SIGN,
ACTOR_PALM_TREE = 0x19,
ACTOR_TREE_BOWSERS_CASTLE = 0x1C,
ACTOR_TREE_FRAPPE_SNOWLAND,
ACTOR_CACTUS1_KALAMARI_DESERT,
ACTOR_CACTUS2_KALAMARI_DESERT,
ACTOR_CACTUS3_KALAMARI_DESERT,
ACTOR_BUSH_BOWSERS_CASTLE,
ACTOR_WARIO_SIGN = 0x23,
ACTOR_BOX_TRUCK = 0x25,
ACTOR_PADDLE_BOAT,
ACTOR_RAILROAD_CROSSING,
ACTOR_SCHOOL_BUS,
ACTOR_TANKER_TRUCK,
ACTOR_BLUE_SPINY_SHELL,
ACTOR_HOT_AIR_BALLOON_ITEM_BOX,
ACTOR_CAR,
ACTOR_KIWANO_FRUIT,
};
#define ACTOR_LIST_SIZE 100
@ -80,23 +81,29 @@ exactly what you're doing.
#define ACTOR_IS_NOT_EXPIRED 0xF // The actor possesses some kind of collision and can be removed
// Actor shell->state (green, red and blue)
#define HELD_SHELL 0 // Single shell that has not been dropped. (probably holding Z).
#define RELEASED_SHELL 1 // This is the short window where single shells aren't being held or launched.
#define MOVING_SHELL 2 // Moving towards its target after being shot.
#define RED_SHELL_LOCK_ON 3 // Red shell is targeting.
#define TRIPLE_GREEN_SHELL 4 // Loses triple shell state when shot.
#define GREEN_SHELL_HIT_A_RACER 5 // A racer has been hit by a green shell.
#define TRIPLE_RED_SHELL 6 // Loses triple shell state when shot.
#define DESTROYED_SHELL 7 // Collision with the shell.
#define BLUE_SHELL_LOCK_ON 8 // A blue shell has found a target and is hastily approaching it.
#define BLUE_SHELL_TARGET_ELIMINATED 9 // Mission completed, well done boss.
enum ShellState {
HELD_SHELL, // Single shell that has not been dropped. (probably holding Z).
RELEASED_SHELL, // This is the short window where single shells aren't being held or launched.
MOVING_SHELL, // Moving towards its target after being shot.
RED_SHELL_LOCK_ON, // Red shell is targeting.
TRIPLE_GREEN_SHELL, // Loses triple shell state when shot.
GREEN_SHELL_HIT_A_RACER, // A racer has been hit by a green shell.
TRIPLE_RED_SHELL, // Loses triple shell state when shot.
DESTROYED_SHELL, // Collision with the shell.
BLUE_SHELL_LOCK_ON, // A blue shell has found a target and is hastily approaching it.
BLUE_SHELL_TARGET_ELIMINATED, // Mission completed, well done boss.
};
// Actor banana->state
#define HELD_BANANA 0 // Single banana that has not been dropped.
#define DROPPED_BANANA 1 // A banana in the state of being dropped on the ground (it only last for a few frames).
#define FIRST_BANANA_BUNCH_BANANA 2 // The first banana of the banana bunch
#define BANANA_BUNCH_BANANA 3 // Every banana of the banana bunch except the first one.
#define BANANA_ON_GROUND 4 // A banana sitting on the ground.
#define DESTROYED_BANANA 5 // Collision with the banana.
enum BananaState {
HELD_BANANA, // Single banana that has not been dropped.
DROPPED_BANANA, // A banana in the state of being dropped on the ground (it only last for a few frames).
FIRST_BANANA_BUNCH_BANANA, // The first banana of the banana bunch
BANANA_BUNCH_BANANA, // Every banana of the banana bunch except the first one.
BANANA_ON_GROUND, // A banana sitting on the ground.
DESTROYED_BANANA, // Collision with the banana.
};
// Actor fakeItemBox->state
#define HELD_FAKE_ITEM_BOX 0 // Item box is being held be Z.
#define FAKE_ITEM_BOX_ON_GROUND 1 // Item box is on the ground.

View File

@ -52,7 +52,7 @@ typedef struct {
} BombKart; // size = 0x54
//! Indexes for the objects associated with the Bomb Karts
extern s32 D_80183DD8[NUM_BOMB_KARTS_MAX];
extern s32 gIndexObjectBombKart[NUM_BOMB_KARTS_MAX];
extern BombKart gBombKarts[NUM_BOMB_KARTS_MAX];
extern Collision D_80164038[NUM_BOMB_KARTS_MAX];

View File

@ -13,14 +13,14 @@ typedef struct
/* 0x04 */ Vec3f pos;
/* 0x10 */ Vec3f origin_pos;
/* 0x1C */ Vec3f unk_01C;
/* 0x28 */ Vec3f unk_028;
/* 0x28 */ Vec3f offset;
/* 0x34 */ f32 unk_034;
/* 0x38 */ Vec3f velocity;
/* 0x38 */ Vec3f velocity; // acceleration
/* 0x44 */ f32 unk_044;
/* 0x48 */ s32 unk_048;
/* 0x4C */ s32 unk_04C;
/* 0x50 */ s32 unk_050;
/* 0x54 */ s32 unk_054;
/* 0x54 */ s32 status;
/* 0x58 */ s32 unk_058;
/* 0x5C */ s32 unk_05C;
/* 0x60 */ u8 *activeTLUT;
@ -42,7 +42,7 @@ typedef struct
/* 0x9A */ u16 unk_09A;
/* 0x9C */ s16 unk_09C;
/* 0x9E */ s16 unk_09E;
/* 0xA0 */ s16 unk_0A0;
/* 0xA0 */ s16 primAlpha;
/* 0xA2 */ s16 unk_0A2;
/* 0xA4 */ s16 type;
/* 0xA6 */ s16 state;
@ -89,14 +89,14 @@ typedef struct
/* 0x04 */ Vec3f pos;
/* 0x10 */ Vec3f origin_pos;
/* 0x1C */ Vec3f unk_01C;
/* 0x28 */ Vec3f unk_028;
/* 0x28 */ Vec3f offset;
/* 0x34 */ f32 unk_034;
/* 0x38 */ Vec3f velocity;
/* 0x44 */ f32 unk_044;
/* 0x48 */ s32 unk_048;
/* 0x4C */ s32 unk_04C;
/* 0x50 */ s32 unk_050;
/* 0x54 */ s32 unk_054;
/* 0x54 */ s32 status;
/* 0x58 */ s32 unk_058;
/* 0x5C */ s32 unk_05C;
/* 0x60 */ u8 *activeTLUT;
@ -118,7 +118,7 @@ typedef struct
/* 0x9A */ u16 unk_09A;
/* 0x9C */ s16 unk_09C;
/* 0x9E */ s16 unk_09E;
/* 0xA0 */ s16 unk_0A0;
/* 0xA0 */ s16 primAlpha;
/* 0xA2 */ s16 unk_0A2;
/* 0xA4 */ s16 currentItem;
/* 0xA6 */ s16 itemDisplayState; // Usually a state tracker
@ -159,6 +159,11 @@ typedef struct
// This are other lists of indices in gObjectList.
/**
* @brief Status flags for objects
*/
#define VISIBLE 0x00040000
/**
* Use unknown. An object is reserved and its index is saved to
* this variable, but it appears to go unreferenced

View File

@ -11,8 +11,8 @@
#define LOCOMOTIVE_ONLY 0
// It seems like there's room for 2 Ferries, but only 1 is ever active
#define NUM_ACTIVE_PADDLE_WHEEL_BOATS 1
#define NUM_PADDLE_WHEEL_BOATS 2
#define NUM_ACTIVE_PADDLE_BOATS 1
#define NUM_PADDLE_BOATS 2
#define NUM_RACE_BOX_TRUCKS 7
#define NUM_RACE_SCHOOL_BUSES 7
@ -59,7 +59,7 @@ typedef struct {
* Probably audio related
**/
/* 0x28 */ s32 someFlags;
} PaddleWheelBoatStuff; // size = 0x2C
} PaddleBoatStuff; // size = 0x2C
typedef struct {
/* 0x00 */ s16 unused; // Gets set to 0, but doesn't seem to have any purpose
@ -85,7 +85,7 @@ typedef struct {
extern TrainStuff gTrainList[];
// This is an array, maybe they intended to have multiple boats at some point in development?
extern PaddleWheelBoatStuff gFerries[];
extern PaddleBoatStuff gPaddleBoats[];
// Lists for different vehicles in Toad's Turnpike
extern VehicleStuff gBoxTruckList[];

10
mk64.ld
View File

@ -57,10 +57,10 @@ SECTIONS
BUILD_DIR/asm/tkmk00_decode.o(.text);
BUILD_DIR/src/gbiMacro.o(.text);
BUILD_DIR/src/math_util_2.o(.text);
BUILD_DIR/src/hud_renderer.o(.text);
BUILD_DIR/src/render_objects.o(.text);
BUILD_DIR/src/code_80057C60.o(.text);
BUILD_DIR/src/code_8006E9C0.o(.text);
BUILD_DIR/src/code_80071F00.o(.text);
BUILD_DIR/src/update_objects.o(.text);
BUILD_DIR/src/code_80086E70.o(.text);
BUILD_DIR/src/effects.o(.text);
BUILD_DIR/src/code_80091440.o(.text);
@ -216,7 +216,7 @@ SECTIONS
BUILD_DIR/src/data/kart_attributes.inc.o(.data);
BUILD_DIR/src/player_controller.o(.data);
BUILD_DIR/src/spawn_players.o(.data);
BUILD_DIR/src/code_80071F00.o(.data);
BUILD_DIR/src/update_objects.o(.data);
BUILD_DIR/src/data/data_800E45C0.o(.data);
BUILD_DIR/src/code_80057C60.o(.data);
BUILD_DIR/src/data/some_data.o(.data);
@ -264,10 +264,10 @@ SECTIONS
BUILD_DIR/src/player_controller.o(.rodata);
BUILD_DIR/src/spawn_players.o(.rodata);
BUILD_DIR/src/code_8003DC40.o(.rodata);
BUILD_DIR/src/hud_renderer.o(.rodata);
BUILD_DIR/src/render_objects.o(.rodata);
BUILD_DIR/src/code_80057C60.o(.rodata);
BUILD_DIR/src/code_8006E9C0.o(.rodata);
BUILD_DIR/src/code_80071F00.o(.rodata);
BUILD_DIR/src/update_objects.o(.rodata);
BUILD_DIR/src/code_80086E70.o(.rodata);
BUILD_DIR/src/effects.o(.rodata);
BUILD_DIR/src/code_80091750.jp.o(.rodata);

View File

@ -1,3 +0,0 @@
void update_actor_paddle_wheel(struct PaddleWheelBoat *boat) {
boat->wheelRot += 0x38E;
}

View File

@ -0,0 +1,45 @@
#include <ultra64.h>
#include <macros.h>
#include <actor_types.h>
#include "camera.h"
#include "main.h"
#include "actors.h"
#include "courses/all_course_data.h"
#include <PR/gbi.h>
// This likely attaches the paddle wheel to the boat
void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED Mat4 arg2, u16 pathCounter) {
UNUSED s32 pad[3];
Vec3f sp120;
Mat4 spE0;
Mat4 spA0;
Mat4 sp60;
f32 temp;
if ((pathCounter > 20) && (pathCounter < 25)) { return; }
temp = is_within_render_distance(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
if (temp < 0.0f) { return; }
gSPSetLights1(gDisplayListHead++, D_800DC610[1]);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
mtxf_pos_rotation_xyz(spE0, boat->pos, boat->boatRot);
if (render_set_position(spE0, 1) != 0) {
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E730);
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E058);
mtxf_rotate_x(spE0, boat->wheelRot);
vec3f_set(sp120, 0, 16.0f, -255.0f);
mtxf_translate(spA0, sp120);
mtxf_multiplication(sp60, spE0, spA0);
if (render_set_position(sp60, 3) != 0) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_FC28);
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
}
}

View File

@ -0,0 +1,11 @@
#include <ultra64.h>
#include <actor_types.h>
/**
* @brief Rotates paddle boat's wheel.
*
* @param boat
*/
void update_actor_paddle_boat(struct PaddleWheelBoat *boat) {
boat->wheelRot += 0x38E;
}

View File

@ -200,7 +200,7 @@ void setup_race(void) {
func_802969F8();
func_80005310();
func_8003D080();
init_object_list();
init_hud();
D_800DC510 = 0;
gNumSpawnedShells = 0;
D_800DC5B8 = 0;
@ -353,11 +353,11 @@ void func_80003040(void) {
break;
case COURSE_WARIO_STADIUM:
vec3f_set(position, -131.0f, 83.0f, 286.0f);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
vec3f_set(position, -2353.0f, 72.0f, -1608.0f);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
vec3f_set(position, -2622.0f, 79.0f, 739.0f);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
// d_course_wario_stadium_packed_dl_C50
find_vtx_and_set_colours(0x07000C50, 0x64, 0xFF, 0xFF, 0xFF);
// d_course_wario_stadium_packed_dl_BD8

View File

@ -103,7 +103,7 @@ void func_80004A1C(animation_type_1 *arg0, s16 *arg1, animation_type_3_triplet a
}
}
void func_80004C30(animation_type_1 *arg0, animation_type_2 *arg1, s16 arg2) {
void func_80004C30(animation_type_1 *arg0, animation_type_2 *arg1, s16 timeCycle) {
UNUSED u32 *temp;
s16 *sp40;
s32 some_offset;
@ -116,8 +116,8 @@ void func_80004C30(animation_type_1 *arg0, animation_type_2 *arg1, s16 arg2) {
D_80162D7A = 0;
D_80162D76 = 0;
for (someIndex = 0; someIndex < 3; someIndex++) {
if (arg2 < (*temp_v0)[someIndex].some_limiter) {
some_offset = arg2;
if (timeCycle < (*temp_v0)[someIndex].some_limiter) {
some_offset = timeCycle;
} else {
some_offset = 0;
}
@ -142,7 +142,7 @@ void func_80004C30(animation_type_1 *arg0, animation_type_2 *arg1, s16 arg2) {
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
D_80162D7A -= 1;
}
func_80004A1C(arg0, sp40, *temp_v0, (s32) arg2);
func_80004A1C(arg0, sp40, *temp_v0, (s32) timeCycle);
D_80162D78 = 0;
temp_v0++;
break;
@ -151,7 +151,7 @@ void func_80004C30(animation_type_1 *arg0, animation_type_2 *arg1, s16 arg2) {
} while (new_var != 3);
}
s16 func_80004DFC(animation_type_1 *arg0, animation_type_2 **arg1, s16 arg2, s16 arg3) {
s16 func_80004DFC(animation_type_1 *arg0, animation_type_2 **arg1, s16 arg2, s16 timeCycle) {
animation_type_1 *sp24;
animation_type_2 *temp_v0;
animation_type_2 **sp20;
@ -159,15 +159,15 @@ s16 func_80004DFC(animation_type_1 *arg0, animation_type_2 **arg1, s16 arg2, s16
sp24 = segmented_to_virtual(arg0);
sp20 = segmented_to_virtual(arg1); // Convert the array's address
temp_v0 = segmented_to_virtual(sp20[arg2]); // Convert an array element's address
if (arg3 >= temp_v0->animation_length) {
arg3 = 0;
if (timeCycle >= temp_v0->animation_length) {
timeCycle = 0;
}
func_80004C30(sp24, temp_v0, arg3);
arg3++;
if (arg3 >= temp_v0->animation_length) {
arg3 = 0;
func_80004C30(sp24, temp_v0, timeCycle);
timeCycle++;
if (timeCycle >= temp_v0->animation_length) {
timeCycle = 0;
}
return arg3;
return timeCycle;
}
s16 func_80004EAC(void *addr, s16 offset) {

View File

@ -12,11 +12,11 @@
#include "actors_extended.h"
#include "render_player.h"
#include "player_controller.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "collision.h"
#include <actor_types.h>
#include "vehicles.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "code_80057C60.h"
#include "bomb_kart.h"
#include "courses/all_course_data.h"
@ -139,7 +139,7 @@ s32 D_8016359C;
TrainStuff gTrainList[NUM_TRAINS];
u16 isCrossingTriggeredByIndex[2];
u16 D_801637BC[2];
PaddleWheelBoatStuff gFerries[NUM_PADDLE_WHEEL_BOATS];
PaddleBoatStuff gPaddleBoats[NUM_PADDLE_BOATS];
VehicleStuff gBoxTruckList[NUM_RACE_BOX_TRUCKS];
VehicleStuff gSchoolBusList[NUM_RACE_SCHOOL_BUSES];
VehicleStuff gTankerTruckList[NUM_RACE_TANKER_TRUCKS];
@ -551,7 +551,7 @@ s16 func_80005FD0(Vec3f arg0, Vec3f arg1) {
s16 temp_ret;
s16 phi_v1;
temp_ret = get_angle_between_points(arg0, arg1);
temp_ret = get_angle_between_two_vectors(arg0, arg1);
phi_v1 = temp_ret;
if (gIsMirrorMode != 0) {
phi_v1 = -temp_ret;
@ -1608,9 +1608,9 @@ block_25:
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000929C.s")
#endif
void func_800097E0(void) {
void update_vehicles(void) {
s32 i;
func_8000EF20();
generate_player_smoke();
D_8016337C++;
if (gCurrentCourseId == COURSE_AWARD_CEREMONY) {
@ -1629,10 +1629,10 @@ void func_800097E0(void) {
switch(gCurrentCourseId) {
case COURSE_KALAMARI_DESERT:
func_80012AC0();
update_vehicle_trains();
break;
case COURSE_DK_JUNGLE:
func_800133C4();
update_vehicle_paddle_boats();
break;
case COURSE_TOADS_TURNPIKE:
func_8001487C();
@ -1876,7 +1876,7 @@ void func_80009B60(s32 playerId) {
func_8000BBD8(stackPadding1A, D_80163090[playerId], D_80163448);
}
}
player->rotation[1] = -get_angle_between_points(player->pos, D_80162FA0);
player->rotation[1] = -get_angle_between_two_vectors(player->pos, D_80162FA0);
} else {
player->rotation[1] = D_80164590[D_80163448][(D_801630E0 + 4) % D_80164430];
}
@ -1889,7 +1889,7 @@ void func_80009B60(s32 playerId) {
player->effects |= 0x10;
}
if (D_801630E8[playerId] != 0) {
D_80163300[playerId] = -get_angle_between_points(&player->copy_rotation_x, player->pos);
D_80163300[playerId] = -get_angle_between_two_vectors(&player->copy_rotation_x, player->pos);
var_a0_2 = (D_801631DC[(D_80162FCE + 2) % D_80164430] * 0x168) / 65535;
var_a1 = (D_80163300[playerId] * 0x168) / 65535;
if (var_a0_2 < -0xB4) {
@ -1995,8 +1995,8 @@ void func_80009B60(s32 playerId) {
// MISMATCH2
// This fixes part of the register allocation problems, makes fixing others
// harder though. Needs more investigation
// var_a2 = (-get_angle_between_points(player->pos, D_80162FA0)) - (var_a1 = player->rotation[1]);
stackPadding19 = -get_angle_between_points(player->pos, D_80162FA0) - player->rotation[1];
// var_a2 = (-get_angle_between_two_vectors(player->pos, D_80162FA0)) - (var_a1 = player->rotation[1]);
stackPadding19 = -get_angle_between_two_vectors(player->pos, D_80162FA0) - player->rotation[1];
var_a1 = stackPadding19;
var_a2 = var_a1;
if ((s16) temp_f2 < var_a1) {
@ -3174,7 +3174,7 @@ void func_8000DF8C(s32 bombKartId) {
D_80162FC0[0] = temp_v0_2->posX + sp118;
D_80162FC0[1] = temp_v0_2->posY;
D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3;
spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
spC2 = (get_angle_between_two_vectors(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
break;
case 2:
var_s1 = (var_s1 + 4) % 360;
@ -3194,7 +3194,7 @@ void func_8000DF8C(s32 bombKartId) {
D_80162FC0[0] = temp_v0_2->posX + sp118;
D_80162FC0[1] = temp_v0_2->posY;
D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3;
spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
spC2 = (get_angle_between_two_vectors(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
break;
case 3:
var_f20 = bombKart->yPos + 3.5f;
@ -3218,7 +3218,7 @@ void func_8000DF8C(s32 bombKartId) {
D_80162FC0[0] = temp_v0_4->posX;
D_80162FC0[1] = temp_v0_4->posY;
D_80162FC0[2] = temp_v0_4->posZ;
spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
spC2 = (get_angle_between_two_vectors(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
} else {
D_80162FB0[0] = var_f22;
D_80162FB0[1] = var_f20;
@ -3226,7 +3226,7 @@ void func_8000DF8C(s32 bombKartId) {
D_80162FC0[0] = -2409.197f;
D_80162FC0[1] = 0.0f;
D_80162FC0[2] = -355.254f;
spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
spC2 = (get_angle_between_two_vectors(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
}
temp_f14 = ((D_80162FB0[0] + D_80162FC0[0]) * 0.5f) - var_f22;
temp_f16 = ((D_80162FB0[2] + D_80162FC0[2]) * 0.5f) - var_f24;
@ -3256,7 +3256,7 @@ void func_8000DF8C(s32 bombKartId) {
D_80162FC0[1] = temp_v0_4->posY;
D_80162FC0[2] = temp_v0_4->posZ;
var_f20 += 3.0f - (var_s1 * 0.3f);
spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
spC2 = (get_angle_between_two_vectors(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520;
break;
default:
break;
@ -3383,7 +3383,7 @@ void func_8000EEDC(void) {
}
}
void func_8000EF20(void) {
void generate_player_smoke(void) {
s32 someIndex;
f32 var_f20;
struct Actor *temp_s1;
@ -3395,33 +3395,33 @@ void func_8000EF20(void) {
temp_s1 = &gActorList[var_s0->actorIndex];
var_s0->unk14++;
switch (var_s0->unk10) {
case 0:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.3f;
} else {
var_f20 = 0.9f;
}
break;
case 1:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.15f;
} else {
var_f20 = 0.45f;
}
break;
case 2:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.15f;
} else {
var_f20 = 0.45f;
}
break;
default:
var_f20 = 1.0f;
break;
case 0:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.3f;
} else {
var_f20 = 0.9f;
}
break;
case 1:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.15f;
} else {
var_f20 = 0.45f;
}
break;
case 2:
if (var_s0->unk14 < 0xA) {
var_f20 = 0.15f;
} else {
var_f20 = 0.45f;
}
break;
default:
var_f20 = 1.0f;
break;
}
if (!(var_s0->unk14 & 1)) {
func_80076D70(temp_s1->pos, ((random_int(30) + 20) * var_f20) / 50.0f, var_s0->unk10);
init_smoke_particle(temp_s1->pos, ((random_int(30) + 20) * var_f20) / 50.0f, var_s0->unk10);
}
}
}
@ -3930,7 +3930,7 @@ s16 func_80010CB0(s32 pathIndex, s32 waypointIndex) {
sp24[0] = temp_v0->posX;
sp24[1] = temp_v0->posY;
sp24[2] = temp_v0->posZ;
ret = get_angle_between_points(sp30, sp24);
ret = get_angle_between_two_vectors(sp30, sp24);
return -ret;
}
@ -4452,7 +4452,7 @@ void init_course_vehicles(void) {
VehicleStuff *tempSchoolBus;
VehicleStuff *tempTankerTruck;
VehicleStuff *tempCar;
PaddleWheelBoatStuff *tempPaddleWheelBoat;
PaddleBoatStuff *tempPaddleWheelBoat;
Vec3s paddleWheelBoatRot;
s32 loopIndex;
s32 loopIndex2;
@ -4497,8 +4497,8 @@ void init_course_vehicles(void) {
}
break;
case COURSE_DK_JUNGLE:
for(loopIndex = 0; loopIndex < NUM_ACTIVE_PADDLE_WHEEL_BOATS; loopIndex++) {
tempPaddleWheelBoat = &gFerries[loopIndex];
for(loopIndex = 0; loopIndex < NUM_ACTIVE_PADDLE_BOATS; loopIndex++) {
tempPaddleWheelBoat = &gPaddleBoats[loopIndex];
if(tempPaddleWheelBoat->isActive == 1) {
origXPos = tempPaddleWheelBoat->position[0];
origZPos = tempPaddleWheelBoat->position[2];
@ -4506,7 +4506,7 @@ void init_course_vehicles(void) {
tempPaddleWheelBoat->velocity[0] = tempPaddleWheelBoat->position[0] - origXPos;
tempPaddleWheelBoat->velocity[2] = tempPaddleWheelBoat->position[2] - origZPos;
vec3s_set(paddleWheelBoatRot, 0, tempPaddleWheelBoat->rotY, 0);
tempPaddleWheelBoat->actorIndex = addActorToEmptySlot(tempPaddleWheelBoat->position, paddleWheelBoatRot, tempPaddleWheelBoat->velocity, ACTOR_PADDLE_WHEEL_BOAT);
tempPaddleWheelBoat->actorIndex = addActorToEmptySlot(tempPaddleWheelBoat->position, paddleWheelBoatRot, tempPaddleWheelBoat->velocity, ACTOR_PADDLE_BOAT);
}
}
break;
@ -4632,7 +4632,7 @@ void func_80012A48(TrainCarStuff *trainCar, s16 arg1) {
trainCarActor->velocity[2] = trainCar->velocity[2];
}
void func_80012AC0(void) {
void update_vehicle_trains(void) {
UNUSED s32 pad[3];
f32 temp_f20;
TrainCarStuff *car;
@ -4812,13 +4812,13 @@ void func_800131DC(s32 playerId) {
}
void func_800132F4(void) {
PaddleWheelBoatStuff *var_a1;
PaddleBoatStuff *var_a1;
s32 i;
PathNoY *temp_a2;
u16 temp;
for (i = 0; i < NUM_ACTIVE_PADDLE_WHEEL_BOATS; i++) {
for (i = 0; i < NUM_ACTIVE_PADDLE_BOATS; i++) {
temp = i * 0xB4;
var_a1 = &gFerries[i];
var_a1 = &gPaddleBoats[i];
temp_a2 = &D_80163598[temp];
var_a1->position[0] = temp_a2->x;
var_a1->position[1] = D_80162EB2;
@ -4840,11 +4840,11 @@ void func_800132F4(void) {
D_801630FC = 0;
}
void func_800133C4(void) {
PaddleWheelBoatStuff *ferry;
void update_vehicle_paddle_boats(void) {
PaddleBoatStuff *paddleBoat;
PathNoY *waypoint;
s32 i;
struct Actor *ferryActor;
struct Actor *paddleBoatActor;
f32 temp_f26;
f32 temp_f28;
f32 temp_f30;
@ -4857,92 +4857,92 @@ void func_800133C4(void) {
Vec3f sp78;
s32 pad2;
D_801630FC += 1;
for (i = 0; i < NUM_ACTIVE_PADDLE_WHEEL_BOATS; i++) {
ferry = &gFerries[i];
if (ferry->isActive == 1) {
temp_f26 = ferry->position[0];
temp_f28 = ferry->position[1];
temp_f30 = ferry->position[2];
func_8000DBAC(ferry->position, &ferry->waypointIndex, ferry->someMultiplier);
ferry->someFlags = func_800061DC(ferry->position, 2000.0f, ferry->someFlags);
if ((((s16) D_801630FC % 10) == 0) && (ferry->someFlags != 0)) {
sp78[0] = (f32) ((f64) ferry->position[0] - 30.0);
sp78[1] = (f32) ((f64) ferry->position[1] + 180.0);
sp78[2] = (f32) ((f64) ferry->position[2] + 45.0);
func_80006114(sp78, ferry->position, ferry->rotY);
for (i = 0; i < NUM_ACTIVE_PADDLE_BOATS; i++) {
paddleBoat = &gPaddleBoats[i];
if (paddleBoat->isActive == 1) {
temp_f26 = paddleBoat->position[0];
temp_f28 = paddleBoat->position[1];
temp_f30 = paddleBoat->position[2];
func_8000DBAC(paddleBoat->position, &paddleBoat->waypointIndex, paddleBoat->someMultiplier);
paddleBoat->someFlags = func_800061DC(paddleBoat->position, 2000.0f, paddleBoat->someFlags);
if ((((s16) D_801630FC % 10) == 0) && (paddleBoat->someFlags != 0)) {
sp78[0] = (f32) ((f64) paddleBoat->position[0] - 30.0);
sp78[1] = (f32) ((f64) paddleBoat->position[1] + 180.0);
sp78[2] = (f32) ((f64) paddleBoat->position[2] + 45.0);
func_80006114(sp78, paddleBoat->position, paddleBoat->rotY);
func_80075A6C(i, sp78, 1.1f);
sp78[0] = (f32) ((f64) ferry->position[0] + 30.0);
sp78[1] = (f32) ((f64) ferry->position[1] + 180.0);
sp78[2] = (f32) ((f64) ferry->position[2] + 45.0);
func_80006114(sp78, ferry->position, ferry->rotY);
sp78[0] = (f32) ((f64) paddleBoat->position[0] + 30.0);
sp78[1] = (f32) ((f64) paddleBoat->position[1] + 180.0);
sp78[2] = (f32) ((f64) paddleBoat->position[2] + 45.0);
func_80006114(sp78, paddleBoat->position, paddleBoat->rotY);
func_80075A6C(i, sp78, 1.1f);
}
if (random_int(100) == 0) {
if (random_int(2) == 0) {
func_800C98B8(ferry->position, ferry->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x47));
func_800C98B8(paddleBoat->position, paddleBoat->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x47));
} else {
func_800C98B8(ferry->position, ferry->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x48));
func_800C98B8(paddleBoat->position, paddleBoat->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x48));
}
}
sp94[0] = temp_f26;
sp94[1] = temp_f28;
sp94[2] = temp_f30;
waypoint = &D_80163598[(ferry->waypointIndex + 5) % D_8016359C];
waypoint = &D_80163598[(paddleBoat->waypointIndex + 5) % D_8016359C];
sp88[0] = (f32) waypoint->x;
sp88[1] = (f32) D_80162EB0;
sp88[2] = (f32) waypoint->z;
temp_a1 = func_80005FD0(sp94, sp88);
temp = temp_a1 - ferry->rotY;
temp = temp_a1 - paddleBoat->rotY;
var_v1 = temp;
if (var_v1 < 0) {
var_v1 = -var_v1;
}
if (var_v1 >= 0x1771) {
if (ferry->someMultiplier > 0.2) {
ferry->someMultiplier -= 0.04;
if (paddleBoat->someMultiplier > 0.2) {
paddleBoat->someMultiplier -= 0.04;
}
if (var_v1 >= 0x3D) {
var_v1 = 0x003C;
}
} else {
if (ferry->someMultiplier < 2.0) {
ferry->someMultiplier += 0.02;
if (paddleBoat->someMultiplier < 2.0) {
paddleBoat->someMultiplier += 0.02;
}
if (var_v1 >= 0x1F) {
var_v1 = 0x001E;
}
}
if (temp >= 0x8000) {
ferry->rotY -= var_v1;
paddleBoat->rotY -= var_v1;
} else if (temp > 0) {
ferry->rotY += var_v1;
paddleBoat->rotY += var_v1;
} else if (temp < -0x7FFF) {
ferry->rotY += var_v1;
paddleBoat->rotY += var_v1;
} else if (temp < 0) {
ferry->rotY -= var_v1;
paddleBoat->rotY -= var_v1;
}
ferry->velocity[0] = ferry->position[0] - temp_f26;
ferry->velocity[1] = ferry->position[1] - temp_f28;
ferry->velocity[2] = ferry->position[2] - temp_f30;
ferryActor = &gActorList[ferry->actorIndex];
ferryActor->pos[0] = ferry->position[0];
ferryActor->pos[1] = ferry->position[1];
ferryActor->pos[2] = ferry->position[2];
paddleBoat->velocity[0] = paddleBoat->position[0] - temp_f26;
paddleBoat->velocity[1] = paddleBoat->position[1] - temp_f28;
paddleBoat->velocity[2] = paddleBoat->position[2] - temp_f30;
paddleBoatActor = &gActorList[paddleBoat->actorIndex];
paddleBoatActor->pos[0] = paddleBoat->position[0];
paddleBoatActor->pos[1] = paddleBoat->position[1];
paddleBoatActor->pos[2] = paddleBoat->position[2];
if (gIsMirrorMode != 0) {
ferryActor->rot[1] = -ferry->rotY;
paddleBoatActor->rot[1] = -paddleBoat->rotY;
} else {
ferryActor->rot[1] = ferry->rotY;
paddleBoatActor->rot[1] = paddleBoat->rotY;
}
ferryActor->velocity[0] = ferry->velocity[0];
ferryActor->velocity[1] = ferry->velocity[1];
ferryActor->velocity[2] = ferry->velocity[2];
paddleBoatActor->velocity[0] = paddleBoat->velocity[0];
paddleBoatActor->velocity[1] = paddleBoat->velocity[1];
paddleBoatActor->velocity[2] = paddleBoat->velocity[2];
}
}
}
void func_80013854(Player *player) {
s32 someIndex;
PaddleWheelBoatStuff *tempPaddleWheelBoat;
PaddleBoatStuff *tempPaddleWheelBoat;
f32 x_diff;
f32 y_diff;
f32 z_diff;
@ -4954,8 +4954,8 @@ void func_80013854(Player *player) {
playerX = player->pos[0];
playerY = player->pos[1];
playerZ = player->pos[2];
for (someIndex = 0; someIndex < NUM_ACTIVE_PADDLE_WHEEL_BOATS; someIndex++) {
tempPaddleWheelBoat = &gFerries[someIndex];
for (someIndex = 0; someIndex < NUM_ACTIVE_PADDLE_BOATS; someIndex++) {
tempPaddleWheelBoat = &gPaddleBoats[someIndex];
if (tempPaddleWheelBoat->isActive == 1) {
x_diff = playerX - tempPaddleWheelBoat->position[0];
y_diff = playerY - tempPaddleWheelBoat->position[1];
@ -5091,7 +5091,7 @@ void func_80013D20(VehicleStuff *vehicle) {
sp34[0] = vehicle->position[1];
sp34[1] = 0.0f;
sp34[2] = sqrtf((temp_f0_3 * temp_f0_3) + (temp_f2_2 * temp_f2_2));
thing = get_angle_between_points(sp40, sp34);
thing = get_angle_between_two_vectors(sp40, sp34);
adjust_angle(&vehicle->rotation[0], -thing, 100);
vehicle->velocity[0] = vehicle->position[0] - sp5C;
vehicle->velocity[1] = vehicle->position[1] - sp58;
@ -8176,7 +8176,7 @@ void func_8001C14C(void) {
void func_8001C3C4(s32 cameraId) {
if (gCurrentCourseId == COURSE_AWARD_CEREMONY) {
if (gBombKarts[0].waypointIndex >= 16) {
func_80057114(3);
func_80057114(PLAYER_FOUR);
}
} else {
if (gModeSelection == VERSUS) {

View File

@ -83,7 +83,7 @@ void func_80009000(s32);
void func_800090F0(s32, Player*);
f32 func_80009258(s32, f32, f32);
void func_8000929C(s32, Player*);
void func_800097E0(void);
void update_vehicles(void);
void func_800098FC(s32, Player*);
void func_800099EC(s32, Player*);
void func_80009B60(s32);
@ -123,7 +123,7 @@ s32 func_8000EDC8(s32);
s32 func_8000EE10(s32);
void func_8000EE58(s32);
void func_8000EEDC(void);
void func_8000EF20(void);
void generate_player_smoke(void);
void func_8000F0E0(void);
void func_8000F124(void);
@ -159,13 +159,13 @@ void init_course_vehicles(void);
void func_80012780(TrainCarStuff*, s16*, u16);
void func_800127E0(void);
void func_80012A48(TrainCarStuff*, s16);
void func_80012AC0(void);
void update_vehicle_trains(void);
void func_80012DC0(s32, Player*);
void func_80013054(void);
void func_800131DC(s32);
void func_800132F4(void);
void func_800133C4(void);
void update_vehicle_paddle_boats(void);
void func_80013854(Player*);
void func_800139E4(f32, f32, s32, s32, VehicleStuff*, TrackWaypoint*);
f32 func_80013C74(s16, s16);

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,16 @@
// code_80057C60
#define RENDER_SCREEN_MODE_1P_PLAYER_ONE PLAYER_ONE+SCREEN_MODE_1P
#define RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE PLAYER_ONE+SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL
#define RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO PLAYER_TWO+SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL
#define RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE PLAYER_ONE+SCREEN_MODE_2P_SPLITSCREEN_VERTICAL+1
#define RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO PLAYER_TWO+SCREEN_MODE_2P_SPLITSCREEN_VERTICAL+1
#define RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE PLAYER_ONE+SCREEN_MODE_3P_4P_SPLITSCREEN+5
#define RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO PLAYER_TWO+SCREEN_MODE_3P_4P_SPLITSCREEN+5
#define RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE PLAYER_THREE+SCREEN_MODE_3P_4P_SPLITSCREEN+5
#define RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR PLAYER_FOUR+SCREEN_MODE_3P_4P_SPLITSCREEN+5
typedef struct {
char unk_00[0x4];
Vec3f unk_04;
@ -23,21 +33,21 @@ void func_80057CE4(void);
void func_80057DD0(void);
void func_80057FC4(u32);
void func_80058090(u32);
void func_800581C8(void);
void func_800582CC(void);
void func_80058394(void);
void func_8005845C(void);
void func_80058538(u32);
void func_80058640(void);
void func_800586FC(void);
void func_800587A4(void);
void func_8005884C(void);
void func_800588F4(s32);
void func_80058B58(s32);
void render_object(u32);
void render_object_p1(void);
void render_object_p2(void);
void render_object_p3(void);
void render_object_p4(void);
void render_player_snow_effect(u32);
void render_player_snow_effect_one(void);
void render_player_snow_effect_two(void);
void render_player_snow_effect_three(void);
void render_player_snow_effect_four(void);
void render_object_for_player(s32);
void render_snowing_effect(s32);
void func_80058BF4(void);
void func_80058C20(u32);
void func_80058DB4(u32);
void render_hud(u32);
void func_80058F48(void);
void func_80058F78(void);
void func_80059AC8(void);
@ -47,23 +57,23 @@ void func_8005902C(void);
void func_800590D4(void);
void func_800591B4(void);
void func_80059358(void);
void func_80059360(void);
void render_hud_2p_horizontal_player_two_horizontal_player_one(void);
void func_800593F0(void);
void func_800593F8(void);
void func_80059488(s32);
void render_hud_2p_horizontal_player_two(void);
void draw_simplified_hud(s32);
void func_800594F0(void);
void func_800594F8(void);
void render_hud_2p_vertical_player_one(void);
void func_80059528(void);
void func_80059530(void);
void func_80059560(s32);
void render_hud_2p_vertical_player_two(void);
void render_hud_lap_3p_4p(s32);
void func_800596A8(void);
void func_800596D8(void);
void render_hud_1p_multi(void);
void func_80059710(void);
void func_80059718(void);
void render_hud_2p_multi(void);
void func_80059750(void);
void func_80059780(void);
void render_hud_3p_multi(void);
void func_800597B8(void);
void func_800597E8(void);
void render_hud_4p_multi(void);
void func_80059820(s32);
void randomize_seed_from_controller(s32);
void func_8005994C(void);
@ -77,7 +87,7 @@ void func_8005A14C(s32);
void func_8005A380(void);
void func_8005A3C0(void);
void func_8005A71C(void);
void update_obj(void);
void update_object(void);
void func_8005A99C(void);
void func_8005AA34(void);
void func_8005AA4C(void);
@ -311,7 +321,7 @@ extern s8 D_8016579C;
extern u16 D_8016579E;
extern u16 D_801657A2;
extern s8 D_801657AE;
extern s8 D_801657B0;
extern s8 gHUDDisable;
extern s8 D_801657B2;
extern s8 D_801657B4;
extern s8 D_801657B8[];
@ -380,7 +390,7 @@ extern f32 D_80183DA8[];
// extern s32 gIndexLakituList[]; -> objects.h
extern f32 D_80183DC8[];
// extern s32 D_80183DD8[]; -> bomb_kart.h
// extern s32 gIndexObjectBombKart[]; -> bomb_kart.h
// extern s32 gNextFreeObjectParticle1; -> objects.h
extern Vec3f D_80183E40;

View File

@ -8,7 +8,7 @@
#include "code_80057C60.h"
#include "code_8006E9C0.h"
#include "code_80086E70.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "objects.h"
#include "bomb_kart.h"
#include "save.h"
@ -20,10 +20,10 @@
#include "main.h"
#include "menus.h"
#include "data/other_textures.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "code_80091750.h"
void init_object_list(void) {
void init_hud(void) {
reset_object_variable();
func_8006FA94();
@ -543,8 +543,8 @@ void func_8006FA94(void) {
D_801657B2 = 0;
D_801657D8 = D_801657B2;
D_8018D214 = D_801657D8;
D_801657B0 = D_8018D214;
D_801657AE = D_801657B0;
gHUDDisable = D_8018D214;
D_801657AE = gHUDDisable;
D_8018D20C = 0;
D_8018D2F8 = 0;
D_8018D2F0 = D_8018D2F8;
@ -600,7 +600,7 @@ void init_object_list_index(void) {
}
for(loopIndex = 0; loopIndex < NUM_BOMB_KARTS_VERSUS; loopIndex++) {
find_unused_obj_index(&D_80183DD8[loopIndex]);
find_unused_obj_index(&gIndexObjectBombKart[loopIndex]);
}
}
@ -616,7 +616,7 @@ void func_80070250(s32 objectIndex, s32 arg1, StarSpawn *arg2) {
temp_v0->sizeScaling = (f32) arg2->pos[2] / 100.0;
temp_v0->activeTexture = &D_8018D220[arg2->id];
func_80073404(objectIndex, 0x40U, 0x20U, &D_0D005FB0);
temp_v0->unk_0A0 = 0x00FF;
temp_v0->primAlpha = 0x00FF;
}
void func_80070328(StarSpawn *arg0) {
@ -780,7 +780,7 @@ void init_course_object(void) {
gObjectList[objectId].origin_pos[0] = gThowmpSpawnList[i].startX * xOrientation;
gObjectList[objectId].origin_pos[2] = gThowmpSpawnList[i].startZ;
gObjectList[objectId].unk_0D5 = gThowmpSpawnList[i].unk_4;
gObjectList[objectId].unk_0A0 = gThowmpSpawnList[i].unk_6;
gObjectList[objectId].primAlpha = gThowmpSpawnList[i].unk_6;
}
// Handle the big statue's fire breath
objectId = indexObjectList2[0];
@ -805,7 +805,7 @@ void init_course_object(void) {
}
break;
case COURSE_BANSHEE_BOARDWALK:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
objectId = indexObjectList1[0];
init_texture_object(objectId, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040);
gObjectList[objectId].orientation[0] = 0;
@ -816,10 +816,10 @@ void init_course_object(void) {
}
break;
case COURSE_YOSHI_VALLEY:
for (i = 0; i < 4; i++) {
for (i = 0; i < NUM_YV_FLAG_POLES; i++) {
init_object(indexObjectList1[i], 0);
}
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
for (i = 0; i < NUM_HEDGEHOGS; i++) {
objectId = indexObjectList2[i];
init_object(objectId, 0);
@ -836,7 +836,7 @@ void init_course_object(void) {
for (i = 0; i < NUM_SNOWFLAKES; i++) {
find_unused_obj_index(&gObjectParticle1[i]);
}
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
for (i = 0; i < NUM_SNOWMEN; i++) {
objectId = indexObjectList2[i];
init_object(objectId, 0);
@ -853,7 +853,7 @@ void init_course_object(void) {
}
break;
case COURSE_KOOPA_BEACH:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
for (i = 0; i < NUM_CRABS; i++) {
objectId = indexObjectList1[i];
init_object(objectId, 0);
@ -875,7 +875,7 @@ void init_course_object(void) {
}
break;
case COURSE_ROYAL_RACEWAY:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
if (gModeSelection == GRAND_PRIX) {
func_80070714();
}
@ -886,7 +886,7 @@ void init_course_object(void) {
}
break;
case COURSE_LUIGI_RACEWAY:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
if (gModeSelection == GRAND_PRIX) {
func_80070714();
}
@ -899,7 +899,7 @@ void init_course_object(void) {
}
break;
case COURSE_MOO_MOO_FARM:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
if ((gPlayerCount == 1) || ((gPlayerCount == 2) && (gModeSelection == VERSUS))) {
switch (gCCSelection) { /* switch 2; irregular */
case CC_50: /* switch 2 */
@ -955,7 +955,7 @@ void init_course_object(void) {
}
break;
case COURSE_KALAMARI_DESERT:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
find_unused_obj_index(&D_8018CF10);
init_object(D_8018CF10, 0);
for (i = 0; i < 50; i++) {
@ -975,7 +975,7 @@ void init_course_object(void) {
}
break;
case COURSE_RAINBOW_ROAD:
if (gGamestate != 9) {
if (gGamestate != CREDITS_SEQUENCE) {
for (i = 0; i < NUM_NEON_SIGNS; i++) {
init_object(indexObjectList1[i], 0);
}
@ -986,7 +986,7 @@ void init_course_object(void) {
break;
case COURSE_DK_JUNGLE:
for (i = 0; i < NUM_TORCHES; i++) {
func_800770F0(i);
init_smoke_particles(i);
// wtf?
if (D_8018CF10){}
}

View File

@ -2,9 +2,9 @@
#define CODE_8006E9C0_H
#include "common_structs.h"
#include "code_80071F00.h"
#include "update_objects.h"
void init_object_list(void);
void init_hud(void);
void reset_object_variable(void);
void func_8006EB10(void);
void clear_object_list(void);
@ -35,7 +35,7 @@ extern s16 D_800E5520[];
extern s16 D_800E5548[];
extern u8 *gCourseOutlineTextures[0x14]; // 800e54d0
// These are found in data_code_80071F00
// These are found in data_update_objects
extern StarSpawn D_800E6A38[]; /* unable to generate initializer */
extern StarSpawn D_800E6AA8[]; /* unable to generate initializer */
extern StarSpawn D_800E6B00[]; /* unable to generate initializer */

View File

@ -9,7 +9,7 @@
#include "math_util.h"
#include "math_util_2.h"
#include "racing/memory.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "collision.h"
#include "audio/external.h"
#include "main.h"
@ -18,13 +18,13 @@
void func_80086E70(s32 objectIndex) {
gObjectList[objectIndex].unk_0AE = 1;// * 0xE0)) = 1;
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
}
void func_80086EAC(s32 objectIndex, s32 arg1, s16 arg2) {
gObjectList[objectIndex].unk_0DD = arg1;
gObjectList[objectIndex].unk_0AE = arg2;
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
}
void func_80086EF0(s32 objectIndex) {
@ -41,7 +41,7 @@ void func_80086F60(s32 objectIndex) {
gObjectList[objectIndex].unk_0AE = 0;
gObjectList[objectIndex].unk_0DD = 0;
gObjectList[objectIndex].unk_0DE = 0;
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
}
bool func_80086FA4(s32 objectIndex) {
@ -53,12 +53,12 @@ bool func_80086FA4(s32 objectIndex) {
}
void func_80086FD4(s32 objectIndex) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
gObjectList[objectIndex].unk_0AE += 1;
}
void func_8008701C(s32 objectIndex, s32 arg1) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
gObjectList[objectIndex].unk_0AE = arg1;
}
@ -66,13 +66,13 @@ s32 func_80087060(s32 objectIndex, s32 arg1) {
s32 sp1C;
sp1C = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].unk_0B0 = arg1;
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
sp1C = 1;
}
return sp1C;
@ -82,13 +82,13 @@ s32 func_80087104(s32 objectIndex, u16 arg1) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].unk_0B0 = random_int(arg1);
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
sp24 = 1;
}
return sp24;
@ -98,13 +98,13 @@ s32 func_800871AC(s32 objectIndex, s32 arg1) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].unk_0B0 = (s16) arg1;
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
func_80086FD4(objectIndex);
sp24 = 1;
}
@ -112,12 +112,12 @@ s32 func_800871AC(s32 objectIndex, s32 arg1) {
}
UNUSED void func_80087258(s32 objectIndex, UNUSED s32 arg1, f32 arg2) {
gObjectList[objectIndex].unk_028[1] += arg2;
gObjectList[objectIndex].unk_028[2] -= arg2;
gObjectList[objectIndex].offset[1] += arg2;
gObjectList[objectIndex].offset[2] -= arg2;
}
UNUSED s32 func_80087294(s32 objectIndex, Player *player) {
return func_80041770(player->pos[0], gObjectList[objectIndex].pos[0], player->pos[2], gObjectList[objectIndex].pos[2]);
UNUSED s32 get_angle_between_player_object(s32 objectIndex, Player *player) {
return get_angle_between_xy(player->pos[0], gObjectList[objectIndex].pos[0], player->pos[2], gObjectList[objectIndex].pos[2]);
}
s32 angle_between_object_camera(s32 objectIndex, Camera *camera) {
@ -173,41 +173,41 @@ void func_80087620(s32 objectIndex) {
}
void func_800876A0(s32 objectIndex) {
gObjectList[objectIndex].unk_028[0] += gObjectList[objectIndex].unk_034 * sins(gObjectList[objectIndex].direction_angle[1]);
gObjectList[objectIndex].unk_028[2] += gObjectList[objectIndex].unk_034 * coss(gObjectList[objectIndex].direction_angle[1]);
gObjectList[objectIndex].offset[0] += gObjectList[objectIndex].unk_034 * sins(gObjectList[objectIndex].direction_angle[1]);
gObjectList[objectIndex].offset[2] += gObjectList[objectIndex].unk_034 * coss(gObjectList[objectIndex].direction_angle[1]);
}
void func_80087710(s32 objectIndex) {
gObjectList[objectIndex].unk_028[0] += gObjectList[objectIndex].velocity[0];
gObjectList[objectIndex].unk_028[1] += gObjectList[objectIndex].velocity[1];
gObjectList[objectIndex].unk_028[2] += gObjectList[objectIndex].velocity[2];
void object_add_velocity_offset_xyz(s32 objectIndex) {
gObjectList[objectIndex].offset[0] += gObjectList[objectIndex].velocity[0];
gObjectList[objectIndex].offset[1] += gObjectList[objectIndex].velocity[1];
gObjectList[objectIndex].offset[2] += gObjectList[objectIndex].velocity[2];
}
void func_8008775C(s32 objectIndex) {
gObjectList[objectIndex].unk_028[0] += gObjectList[objectIndex].velocity[0];
gObjectList[objectIndex].unk_028[2] += gObjectList[objectIndex].velocity[2];
void object_add_velocity_offset_xz(s32 objectIndex) {
gObjectList[objectIndex].offset[0] += gObjectList[objectIndex].velocity[0];
gObjectList[objectIndex].offset[2] += gObjectList[objectIndex].velocity[2];
}
UNUSED void func_80087798(s32 objectIndex) {
gObjectList[objectIndex].unk_028[0] += gObjectList[objectIndex].velocity[0];
UNUSED void object_add_velocity_offset_x(s32 objectIndex) {
gObjectList[objectIndex].offset[0] += gObjectList[objectIndex].velocity[0];
}
void func_800877C4(s32 objectIndex) {
gObjectList[objectIndex].unk_028[1] += gObjectList[objectIndex].velocity[1];
void object_add_velocity_offset_y(s32 objectIndex) {
gObjectList[objectIndex].offset[1] += gObjectList[objectIndex].velocity[1];
}
UNUSED void func_800877F0(s32 objectIndex) {
gObjectList[objectIndex].unk_028[2] += gObjectList[objectIndex].velocity[2];
UNUSED void object_add_velocity_offset_z(s32 objectIndex) {
gObjectList[objectIndex].offset[2] += gObjectList[objectIndex].velocity[2];
}
void func_8008781C(s32 arg0) {
func_8008751C(arg0);
func_8008775C(arg0);
object_add_velocity_offset_xz(arg0);
}
void func_80087844(s32 arg0) {
func_8008757C(arg0);
func_80087710(arg0);
object_add_velocity_offset_xyz(arg0);
}
f32 func_8008786C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
@ -218,17 +218,17 @@ s32 func_8008789C(s32 objectIndex, s32 arg1) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
func_8008751C(objectIndex);
gObjectList[objectIndex].unk_0B0 = arg1;
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
sp24 = 1;
} else {
func_8008775C(objectIndex);
object_add_velocity_offset_xz(objectIndex);
}
return sp24;
}
@ -237,17 +237,17 @@ s32 func_80087954(s32 objectIndex, s32 arg1) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
func_80087620(objectIndex);
gObjectList[objectIndex].unk_0B0 = arg1;
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
sp24 = 1;
} else {
func_8008775C(objectIndex);
object_add_velocity_offset_xz(objectIndex);
}
return sp24;
}
@ -259,8 +259,8 @@ bool func_80087A0C(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
bool sp2C;
sp2C = FALSE;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
temp_v0 = arg2 - arg1;
temp_a0 = arg4 - arg3;
dist = sqrtf((temp_v0 * temp_v0) + (temp_a0 * temp_a0));
@ -271,10 +271,10 @@ bool func_80087A0C(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
sp2C = TRUE;
} else {
func_8008775C(objectIndex);
object_add_velocity_offset_xz(objectIndex);
}
return sp2C;
}
@ -283,13 +283,13 @@ s32 func_80087B84(s32 objectIndex, f32 arg1, f32 arg2) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].velocity[1] = -arg1;
}
func_800877C4(objectIndex);
object_add_velocity_offset_y(objectIndex);
if (gObjectList[objectIndex].pos[1] <= arg2) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
func_80086FD4(objectIndex);
sp24 = 1;
}
@ -300,19 +300,19 @@ s32 func_80087C48(s32 objectIndex, f32 arg1, f32 arg2, s32 arg3) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != FALSE) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].velocity[1] = arg1;
gObjectList[objectIndex].unk_0B0 = (s16) arg3;
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
func_80086FD4(objectIndex);
sp24 = 1;
} else {
gObjectList[objectIndex].velocity[1] -= arg2;
func_800877C4(objectIndex);
object_add_velocity_offset_y(objectIndex);
}
return sp24;
}
@ -321,15 +321,15 @@ s32 func_80087D24(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3) {
s32 sp24;
sp24 = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != 0) {
set_object_flag_unk_054_true(objectIndex, 8);
if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].velocity[1] = arg1;
}
gObjectList[objectIndex].velocity[1] -= arg2;
func_800877C4(objectIndex);
if (gObjectList[objectIndex].unk_028[1] <= arg3) {
set_object_flag_unk_054_false(objectIndex, 8);
gObjectList[objectIndex].unk_028[1] = arg3;
object_add_velocity_offset_y(objectIndex);
if (gObjectList[objectIndex].offset[1] <= arg3) {
set_object_flag_status_false(objectIndex, 8);
gObjectList[objectIndex].offset[1] = arg3;
func_80086FD4(objectIndex);
sp24 = 1;
}
@ -341,11 +341,11 @@ bool func_80087E08(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s32
UNUSED s32 pad;
sp2C = FALSE;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != 0) {
set_object_flag_unk_054_true(objectIndex, 8);
gObjectList[objectIndex].unk_028[2] = 0.0f;
gObjectList[objectIndex].unk_028[1] = 0.0f;
gObjectList[objectIndex].unk_028[0] = 0.0f;
if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].offset[2] = 0.0f;
gObjectList[objectIndex].offset[1] = 0.0f;
gObjectList[objectIndex].offset[0] = 0.0f;
gObjectList[objectIndex].unk_034 = arg3;
gObjectList[objectIndex].velocity[1] = arg1;
gObjectList[objectIndex].direction_angle[1] = arg4;
@ -354,12 +354,12 @@ bool func_80087E08(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s32
}
gObjectList[objectIndex].unk_0B0--;
if (gObjectList[objectIndex].unk_0B0 < 0) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
func_80086FD4(objectIndex);
sp2C = TRUE;
} else {
gObjectList[objectIndex].velocity[1] -= arg2;
func_80087710(objectIndex);
object_add_velocity_offset_xyz(objectIndex);
}
return sp2C;
}
@ -369,24 +369,24 @@ UNUSED s32 func_80087F14(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3, s16 arg4
UNUSED s32 stackPadding;
sp2C = 0;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != 0) {
set_object_flag_unk_054_true(objectIndex, 8);
gObjectList[objectIndex].unk_028[2] = 0.0f;
gObjectList[objectIndex].unk_028[1] = 0.0f;
gObjectList[objectIndex].unk_028[0] = 0.0f;
if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) {
set_object_flag_status_true(objectIndex, 8);
gObjectList[objectIndex].offset[2] = 0.0f;
gObjectList[objectIndex].offset[1] = 0.0f;
gObjectList[objectIndex].offset[0] = 0.0f;
gObjectList[objectIndex].unk_034 = arg3;
gObjectList[objectIndex].velocity[1] = arg1;
gObjectList[objectIndex].direction_angle[1] = arg4;
func_8008751C(objectIndex);
gObjectList[objectIndex].unk_0B0 = gVBlankTimer;
}
if (gObjectList[objectIndex].unk_028[1] <= arg5) {
set_object_flag_unk_054_false(objectIndex, 8);
if (gObjectList[objectIndex].offset[1] <= arg5) {
set_object_flag_status_false(objectIndex, 8);
func_80086FD4(objectIndex);
sp2C = 1;
} else {
gObjectList[objectIndex].velocity[1] -= arg2;
func_80087710(objectIndex);
object_add_velocity_offset_xyz(objectIndex);
}
return sp2C;
}
@ -395,13 +395,13 @@ void func_80088038(s32 objectIndex, f32 arg1, u16 arg2) {
f32 temp_f4;
f32 sp20;
temp_f4 = gObjectList[objectIndex].unk_028[0];
sp20 = gObjectList[objectIndex].unk_028[2];
temp_f4 = gObjectList[objectIndex].offset[0];
sp20 = gObjectList[objectIndex].offset[2];
gObjectList[objectIndex].unk_0C4 += arg2;
gObjectList[objectIndex].unk_028[0] = sins(gObjectList[objectIndex].unk_0C4) * arg1;
gObjectList[objectIndex].unk_028[2] = coss(gObjectList[objectIndex].unk_0C4) * arg1;
gObjectList[objectIndex].velocity[0] = gObjectList[objectIndex].unk_028[0] - temp_f4;
gObjectList[objectIndex].velocity[2] = gObjectList[objectIndex].unk_028[2] - sp20;
gObjectList[objectIndex].offset[0] = sins(gObjectList[objectIndex].unk_0C4) * arg1;
gObjectList[objectIndex].offset[2] = coss(gObjectList[objectIndex].unk_0C4) * arg1;
gObjectList[objectIndex].velocity[0] = gObjectList[objectIndex].offset[0] - temp_f4;
gObjectList[objectIndex].velocity[2] = gObjectList[objectIndex].offset[2] - sp20;
}
UNUSED void func_800880DC(void) {
@ -449,9 +449,9 @@ void func_80088228(s32 objectIndex) {
but for some unholy reason that doesn't match
*/
temp_v0->unk_084[8] = *((s16*)temp_v0->controlPoints - 1);
temp_v0->unk_028[0] = temp_v0->controlPoints[0].pos[0];
temp_v0->unk_028[1] = temp_v0->controlPoints[0].pos[1];
temp_v0->unk_028[2] = temp_v0->controlPoints[0].pos[2];
temp_v0->offset[0] = temp_v0->controlPoints[0].pos[0];
temp_v0->offset[1] = temp_v0->controlPoints[0].pos[1];
temp_v0->offset[2] = temp_v0->controlPoints[0].pos[2];
func_80086FD4(objectIndex);
}
@ -463,9 +463,9 @@ s32 func_800882B0(s32 objectIndex, s32 arg1) {
s32 var_v1;
var_v1 = 0;
temp_f0 = (s32)((D_80165760[1] - gObjectList[objectIndex].unk_028[0]) * (D_80165760[1] - gObjectList[objectIndex].unk_028[0]));
temp_f12 = (s32)((D_80165770[1] - gObjectList[objectIndex].unk_028[1]) * (D_80165770[1] - gObjectList[objectIndex].unk_028[1]));
temp_f2 = (s32)((D_80165780[1] - gObjectList[objectIndex].unk_028[2]) * (D_80165780[1] - gObjectList[objectIndex].unk_028[2]));
temp_f0 = (s32)((D_80165760[1] - gObjectList[objectIndex].offset[0]) * (D_80165760[1] - gObjectList[objectIndex].offset[0]));
temp_f12 = (s32)((D_80165770[1] - gObjectList[objectIndex].offset[1]) * (D_80165770[1] - gObjectList[objectIndex].offset[1]));
temp_f2 = (s32)((D_80165780[1] - gObjectList[objectIndex].offset[2]) * (D_80165780[1] - gObjectList[objectIndex].offset[2]));
if ((temp_f0 + temp_f12 + temp_f2 - (arg1 * arg1)) <= 0) {
var_v1 = 1;
}
@ -509,12 +509,12 @@ s32 func_8008847C(s32 objectIndex) {
s32 sp2C;
sp2C = 0;
set_object_flag_unk_054_false(objectIndex, 0x00800000);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000400) != 0) {
set_object_flag_status_false(objectIndex, 0x00800000);
if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) {
func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]);
if (D_8018C3B0.unk34 == 1) {
sp2C = 1;
set_object_flag_unk_054_true(objectIndex, 0x00800000);
set_object_flag_status_true(objectIndex, 0x00800000);
}
gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A);
}
@ -525,12 +525,12 @@ s32 func_80088538(s32 objectIndex) {
s32 sp2C;
sp2C = 0;
set_object_flag_unk_054_false(objectIndex, 0x00800000);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000400) != 0) {
set_object_flag_status_false(objectIndex, 0x00800000);
if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) {
func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]);
if (D_8018C3B0.unk34 == 1) {
sp2C = 1;
set_object_flag_unk_054_true(objectIndex, 0x00800000);
set_object_flag_status_true(objectIndex, 0x00800000);
}
gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A);
gObjectList[objectIndex].unk_0B8[0] = atan2s(D_8018C3B0.orientationVector[2], D_8018C3B0.orientationVector[1]) + 0x4000;
@ -543,12 +543,12 @@ s32 func_8008861C(s32 objectIndex) {
s32 sp2C;
sp2C = 0;
set_object_flag_unk_054_false(objectIndex, 0x00800000);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000400) != 0) {
set_object_flag_status_false(objectIndex, 0x00800000);
if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) {
func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]);
if (D_8018C3B0.unk34 == 1) {
sp2C = 1;
set_object_flag_unk_054_true(objectIndex, 0x00800000);
set_object_flag_status_true(objectIndex, 0x00800000);
}
gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A);
gObjectList[objectIndex].unk_01C[0] = D_8018C3B0.orientationVector[0];
@ -561,26 +561,26 @@ s32 func_8008861C(s32 objectIndex) {
void func_800886F4(s32 objectIndex) {
func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]);
if (D_8018C3B0.unk34 == 1) {
set_object_flag_unk_054_true(objectIndex, 0x00800000);
set_object_flag_status_true(objectIndex, 0x00800000);
gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A);
gObjectList[objectIndex].unk_0B8[0] = atan2s(D_8018C3B0.orientationVector[2], D_8018C3B0.orientationVector[1]) + 0x4000;
gObjectList[objectIndex].unk_0B8[2] = atan2s(D_8018C3B0.orientationVector[0], D_8018C3B0.orientationVector[1]);
return;
}
set_object_flag_unk_054_false(objectIndex, 0x00800000);
set_object_flag_status_false(objectIndex, 0x00800000);
}
void func_800887C0(s32 objectIndex) {
func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]);
if (D_8018C3B0.unk34 == 1) {
set_object_flag_unk_054_true(objectIndex, 0x00800000);
set_object_flag_status_true(objectIndex, 0x00800000);
gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A);
gObjectList[objectIndex].velocity[0] = D_8018C3B0.orientationVector[0];
gObjectList[objectIndex].velocity[1] = D_8018C3B0.orientationVector[1];
gObjectList[objectIndex].velocity[2] = D_8018C3B0.orientationVector[2];
return;
}
set_object_flag_unk_054_false(objectIndex, 0x00800000);
set_object_flag_status_false(objectIndex, 0x00800000);
}
/**
@ -1038,7 +1038,7 @@ void func_80089474(s32 objectIndex, s32 playerId, f32 arg2, f32 arg3, u32 soundB
Player *player;
player = &gPlayerOne[playerId];
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
if ((func_8008933C(player, objectIndex, arg2, arg3) >= 4.0) && ((player->type & PLAYER_CPU) != PLAYER_CPU)) {
@ -1063,10 +1063,10 @@ s32 func_800895E4(s32 objectIndex) {
var_s6 = 0;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
var_s6 = 1;
@ -1081,11 +1081,11 @@ void func_800896D4(s32 objectIndex, f32 arg1, f32 arg2) {
s32 var_s1;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & (STAR_EFFECT | BOO_EFFECT)) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
func_8008933C(player, objectIndex, arg1, arg2 * 1.1);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
}
@ -1098,15 +1098,15 @@ void func_80089820(s32 objectIndex, f32 arg1, f32 arg2, u32 arg3) {
s32 var_s1;
player = gPlayerOne;
set_object_flag_unk_054_false(objectIndex, 0x02000000);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
set_object_flag_status_false(objectIndex, 0x02000000);
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & BOO_EFFECT)) {
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
if (player->effects & STAR_EFFECT) {
set_object_flag_unk_054_true(objectIndex, 0x02000000);
set_object_flag_status_true(objectIndex, 0x02000000);
} else {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
if ((func_8008933C(player, objectIndex, arg1, arg2 * 1.1) >= 4.0) && ((player->type & PLAYER_CPU) != PLAYER_CPU)) {
@ -1124,11 +1124,11 @@ void func_80089A04(s32 objectIndex, f32 arg1, f32 arg2) {
s32 var_s1;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | STAR_EFFECT)) && (has_collided_with_player(objectIndex, player) != 0)) {
func_8008933C(player, objectIndex, arg1, arg2 * 1.1);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
}
@ -1145,12 +1145,12 @@ s32 func_80089B50(s32 objectIndex) {
test = 0;
sp40 = 0;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++, test++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x81000000) && (player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
if (!(player->effects & STAR_EFFECT)) {
player->soundEffects |= REVERSE_SOUND_EFFECT;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
} else {
@ -1170,13 +1170,13 @@ s32 func_80089CBC(s32 objectIndex, f32 arg1) {
var_s7 = 0;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x81000000)) {
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_with_player_and_within_height(objectIndex, player, arg1) != 0)) {
if (!(player->effects & STAR_EFFECT)) {
player->soundEffects |= REVERSE_SOUND_EFFECT;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
}
@ -1195,7 +1195,7 @@ s32 func_80089E18(s32 objectIndex) {
var_s6 = 0;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x800000C0) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
if (player->effects & STAR_EFFECT) {
@ -1216,12 +1216,12 @@ s32 func_80089F24(s32 objectIndex) {
var_s7 = 0;
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x800002C0)) {
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
var_s7 = 1;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
player->soundEffects |= 0x200000;
@ -1262,14 +1262,14 @@ s32 func_8008A0B4(s32 objectIndex, Player *player, Camera *camera, u16 arg3) {
return var_t0;
}
s32 func_8008A140(s32 objectIndex, Camera *camera, u16 arg2) {
bool is_object_visible_on_camera(s32 objectIndex, Camera *camera, u16 angle) {
u16 temp_t2;
s32 var_t0;
var_t0 = 0;
temp_t2 = (func_80041770(camera->pos[0], gObjectList[objectIndex].pos[0], camera->pos[2], gObjectList[objectIndex].pos[2]) + ((s32) arg2 / 2)) - camera->rot[1];
if ((temp_t2 >= 0) && (arg2 >= temp_t2)) {
var_t0 = 1;
var_t0 = FALSE;
temp_t2 = (get_angle_between_xy(camera->pos[0], gObjectList[objectIndex].pos[0], camera->pos[2], gObjectList[objectIndex].pos[2]) + ((s32) angle / 2)) - camera->rot[1];
if ((temp_t2 >= 0) && (angle >= temp_t2)) {
var_t0 = TRUE;
}
return var_t0;
}
@ -1280,7 +1280,7 @@ void func_8008A1D0(s32 objectIndex, s32 cameraId, s32 arg2, s32 arg3) {
Camera *camera;
camera = &camera1[cameraId];
set_object_flag_unk_054_false(objectIndex, 0x00140000);
set_object_flag_status_false(objectIndex, 0x00100000 | VISIBLE);
temp_v0 = get_horizontal_distance_to_camera(objectIndex, camera);
if (temp_v0 < 0x2711U) {
var_a2 = 0x5555;
@ -1289,10 +1289,10 @@ void func_8008A1D0(s32 objectIndex, s32 cameraId, s32 arg2, s32 arg3) {
} else {
var_a2 = 0x2AAB;
}
if ((func_8008A140(objectIndex, camera, var_a2) != 0) && ((u32) (arg3 * arg3) >= temp_v0)) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if ((is_object_visible_on_camera(objectIndex, camera, var_a2) != 0) && ((u32) (arg3 * arg3) >= temp_v0)) {
set_object_flag_status_true(objectIndex, VISIBLE);
if (temp_v0 >= (u32) (arg2 * arg2)) {
set_object_flag_unk_054_true(objectIndex, 0x00100000);
set_object_flag_status_true(objectIndex, 0x00100000);
}
}
}
@ -1304,7 +1304,7 @@ UNUSED void func_8008A2CC(s32 objectIndex, s32 cameraId, u16 arg2) {
u16 var_a2;
camera = &camera1[cameraId];
set_object_flag_unk_054_false(objectIndex, 0x00040000);
set_object_flag_status_false(objectIndex, VISIBLE);
if (no_init < 0x2711U) {
var_a2 = 0x5555;
} else if (no_init < 0x9C41U) {
@ -1312,40 +1312,40 @@ UNUSED void func_8008A2CC(s32 objectIndex, s32 cameraId, u16 arg2) {
} else {
var_a2 = arg2;
}
if (func_8008A140(objectIndex, camera, var_a2) != 0) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if (is_object_visible_on_camera(objectIndex, camera, var_a2) != 0) {
set_object_flag_status_true(objectIndex, VISIBLE);
}
}
s32 func_8008A364(s32 objectIndex, s32 cameraId, u16 arg2, s32 arg3) {
Camera *camera;
u32 var_v1;
u32 dist;
u16 var_a2;
camera = &camera1[cameraId];
set_object_flag_unk_054_false(objectIndex, 0x00060000);
var_v1 = get_horizontal_distance_to_camera(objectIndex, camera);
if (var_v1 < (arg3 * arg3)) {
set_object_flag_unk_054_true(objectIndex, 0x00020000);
if (var_v1 < 0x2711U) {
set_object_flag_status_false(objectIndex, 0x00020000 | VISIBLE);
dist = get_horizontal_distance_to_camera(objectIndex, camera);
if (dist < (arg3 * arg3)) {
set_object_flag_status_true(objectIndex, 0x00020000);
if (dist < 0x2711U) {
var_a2 = 0x5555;
} else if (var_v1 < 0x9C41U) {
} else if (dist < 0x9C41U) {
var_a2 = 0x4000;
} else {
var_a2 = arg2;
}
if (func_8008A140(objectIndex, camera, var_a2) != 0) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if (is_object_visible_on_camera(objectIndex, camera, var_a2) != 0) {
set_object_flag_status_true(objectIndex, VISIBLE);
}
}
return var_v1;
return dist;
}
void func_8008A454(s32 objectIndex, s32 cameraId, s32 arg2) {
if (get_horizontal_distance_to_camera(objectIndex, &camera1[cameraId]) < (u32) (arg2 * arg2)) {
set_object_flag_unk_054_true(objectIndex, 0x00000020);
set_object_flag_status_true(objectIndex, 0x00000020);
} else {
set_object_flag_unk_054_false(objectIndex, 0x00000020);
set_object_flag_status_false(objectIndex, 0x00000020);
}
}
@ -1353,16 +1353,16 @@ void func_8008A4CC(s32 objectIndex) {
s32 loopIndex;
Camera *camera;
set_object_flag_unk_054_false(objectIndex, 0x00070000);
set_object_flag_status_false(objectIndex, 0x00070000);
for (loopIndex = 0, camera = camera1; loopIndex < gPlayerCountSelection1; loopIndex++, camera++) {
if (gObjectList[objectIndex].state != 0) {
if ((D_8018CF68[loopIndex] >= (gObjectList[objectIndex].unk_0DF - 1)) && ((gObjectList[objectIndex].unk_0DF + 1) >= D_8018CF68[loopIndex])) {
set_object_flag_unk_054_true(objectIndex, 0x00010000);
set_object_flag_status_true(objectIndex, 0x00010000);
if (D_8018CF68[loopIndex] == gObjectList[objectIndex].unk_0DF) {
set_object_flag_unk_054_true(objectIndex, 0x00020000);
set_object_flag_status_true(objectIndex, 0x00020000);
}
if (func_8008A140(objectIndex, camera, 0x2AABU) != 0) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if (is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0) {
set_object_flag_status_true(objectIndex, VISIBLE);
}
}
}
@ -1373,10 +1373,10 @@ UNUSED void func_8008A610(s32 objectIndex) {
s32 loopIndex;
Camera *camera;
set_object_flag_unk_054_false(objectIndex, 0x00040000);
set_object_flag_status_false(objectIndex, VISIBLE);
for (camera = camera1, loopIndex = 0; loopIndex < gPlayerCountSelection1; loopIndex++, camera++) {
if ((gObjectList[objectIndex].state != 0) && (func_8008A140(objectIndex, camera, 0x2AABU) != 0)) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if ((gObjectList[objectIndex].state != 0) && (is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) {
set_object_flag_status_true(objectIndex, VISIBLE);
}
}
}
@ -1386,17 +1386,17 @@ void func_8008A6DC(s32 objectIndex, f32 arg1) {
s32 loopIndex;
Camera *camera;
set_object_flag_unk_054_false(objectIndex, 0x00060000);
set_object_flag_status_false(objectIndex, 0x00060000);
for (camera = camera1, loopIndex = 0; loopIndex < gPlayerCountSelection1; loopIndex++, camera++) {
if ((gObjectList[objectIndex].state != 0) && (is_within_horizontal_distance_to_camera(objectIndex, camera, arg1) != 0)) {
set_object_flag_unk_054_true(objectIndex, 0x00020000);
set_object_flag_status_true(objectIndex, 0x00020000);
if (arg1 <= 500.0) {
var_a2 = 0x4000;
} else {
var_a2 = 0x2AAB;
}
if (func_8008A140(objectIndex, camera, var_a2) != 0) {
set_object_flag_unk_054_true(objectIndex, 0x00040000);
if (is_object_visible_on_camera(objectIndex, camera, var_a2) != 0) {
set_object_flag_status_true(objectIndex, VISIBLE);
}
}
}
@ -1468,9 +1468,9 @@ void func_8008AA3C(s32 objectIndex) {
but for some unholy reason that doesn't match
*/
temp_v0->unk_084[8] = *((s16*)temp_v0->controlPoints - 1);
temp_v0->unk_028[0] = temp_v0->controlPoints[0].pos[0];
temp_v0->unk_028[1] = temp_v0->controlPoints[0].pos[1];
temp_v0->unk_028[2] = temp_v0->controlPoints[0].pos[2];
temp_v0->offset[0] = temp_v0->controlPoints[0].pos[0];
temp_v0->offset[1] = temp_v0->controlPoints[0].pos[1];
temp_v0->offset[2] = temp_v0->controlPoints[0].pos[2];
temp_v0->unk_09A = (s16) (10000 / temp_v0->controlPoints[0].velocity);
func_8008A920(objectIndex);
func_80086FD4(objectIndex);
@ -1481,9 +1481,9 @@ void func_8008AB10(s32 objectIndex) {
Objects *temp_v0;
temp_v0 = &gObjectList[objectIndex];
temp_v0->unk_028[0] += temp_v0->velocity[0];
temp_v0->unk_028[1] += temp_v0->velocity[1];
temp_v0->unk_028[2] += temp_v0->velocity[2];
temp_v0->offset[0] += temp_v0->velocity[0];
temp_v0->offset[1] += temp_v0->velocity[1];
temp_v0->offset[2] += temp_v0->velocity[2];
temp_v0->timer += (u16)temp_v0->unk_09A;
if (temp_v0->timer >= 0x2710) {
temp_v0->unk_084[9] = (u16)temp_v0->unk_084[9] + 1;
@ -1611,9 +1611,9 @@ void func_8008B038(s32 objectIndex) {
Objects *temp_v0;
temp_v0 = &gObjectList[objectIndex];
temp_v0->unk_028[0] = (D_80183DA8[0] * D_80165760[0]) + (D_80183DA8[1] * D_80165760[1]) + (D_80183DA8[2] * D_80165760[2]) + (D_80183DA8[3] * D_80165760[3]);
temp_v0->unk_028[1] = (D_80183DA8[0] * D_80165770[0]) + (D_80183DA8[1] * D_80165770[1]) + (D_80183DA8[2] * D_80165770[2]) + (D_80183DA8[3] * D_80165770[3]);
temp_v0->unk_028[2] = (D_80183DA8[0] * D_80165780[0]) + (D_80183DA8[1] * D_80165780[1]) + (D_80183DA8[2] * D_80165780[2]) + (D_80183DA8[3] * D_80165780[3]);
temp_v0->offset[0] = (D_80183DA8[0] * D_80165760[0]) + (D_80183DA8[1] * D_80165760[1]) + (D_80183DA8[2] * D_80165760[2]) + (D_80183DA8[3] * D_80165760[3]);
temp_v0->offset[1] = (D_80183DA8[0] * D_80165770[0]) + (D_80183DA8[1] * D_80165770[1]) + (D_80183DA8[2] * D_80165770[2]) + (D_80183DA8[3] * D_80165770[3]);
temp_v0->offset[2] = (D_80183DA8[0] * D_80165780[0]) + (D_80183DA8[1] * D_80165780[1]) + (D_80183DA8[2] * D_80165780[2]) + (D_80183DA8[3] * D_80165780[3]);
}
void func_8008B17C(s32 objectIndex, f32 arg1) {
@ -1686,7 +1686,7 @@ void func_8008B3E4(s32 objectIndex) {
Objects *temp_v0;
SplineData *spline;
if (is_obj_index_flag_unk_054_inactive(objectIndex, 8) != 0) {
if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) {
temp_v0 = &gObjectList[objectIndex];
temp_v0->unk_084[9] = 0;
temp_v0->timer = 0;
@ -1698,7 +1698,7 @@ void func_8008B3E4(s32 objectIndex) {
*/
temp_v0->unk_084[8] = *(((s16*)temp_v0->controlPoints) - 1);
set_object_flag_unk_054_true(objectIndex, 8);
set_object_flag_status_true(objectIndex, 8);
}
}
@ -1726,7 +1726,7 @@ void func_8008B478(s32 objectIndex, s32 arg1) {
sp34 = ((f32)gObjectList[objectIndex].timer / 10000.0);
// Calculate the curve at `t`
func_8008B17C(objectIndex, sp34);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x800) != 0) {
if (is_obj_flag_status_active(objectIndex, 0x800) != 0) {
// Calculate the curve's derivative at `t`
func_8008AFE0(objectIndex, sp34);
}
@ -1765,7 +1765,7 @@ void func_8008B6A4(s32 objectIndex) {
// Have to do it this way due to the u16 cast
temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1;
if ((u16)temp_v0->unk_084[9] == (u16)temp_v0->unk_084[8]) {
set_object_flag_unk_054_false(objectIndex, 8);
set_object_flag_status_false(objectIndex, 8);
} else {
func_8008B44C(objectIndex);
}
@ -1801,18 +1801,18 @@ void set_obj_origin_pos(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3) {
gObjectList[objectIndex].origin_pos[2] = arg3;
}
void func_8008B80C(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3) {
gObjectList[objectIndex].unk_028[0] = arg1;
gObjectList[objectIndex].unk_028[1] = arg2;
gObjectList[objectIndex].unk_028[2] = arg3;
void set_obj_origin_offset(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3) {
gObjectList[objectIndex].offset[0] = arg1;
gObjectList[objectIndex].offset[1] = arg2;
gObjectList[objectIndex].offset[2] = arg3;
}
void func_8008B844(s32 objectIndex) {
f32 temp_f0 = gObjectList[objectIndex].origin_pos[0];
gObjectList[objectIndex].pos[0] = gObjectList[objectIndex].unk_028[0] + temp_f0;
gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].unk_028[1] + temp_f0;
gObjectList[objectIndex].pos[2] = gObjectList[objectIndex].unk_028[2] + temp_f0;
gObjectList[objectIndex].pos[0] = gObjectList[objectIndex].offset[0] + temp_f0;
gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].offset[1] + temp_f0;
gObjectList[objectIndex].pos[2] = gObjectList[objectIndex].offset[2] + temp_f0;
}
void set_obj_direction_angle(s32 objectIndex, u16 arg1, u16 arg2, u16 arg3) {
@ -1849,63 +1849,63 @@ void func_8008B928(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, SplineData *sp
temp_s0->direction_angle[0] = get_x_direction_angle(objectIndex);
}
UNUSED void func_8008BA40(s32 objectIndex, s16 arg1, u16 arg2) {
s16 test;
UNUSED void object_origin_pos_randomize_around_x(s32 objectIndex, s16 x, u16 arg2) {
s16 offset_x;
test = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[0] = arg1 + test;
offset_x = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[0] = x + offset_x;
}
void func_8008BAB4(s32 objectIndex, s16 arg1, u16 arg2) {
s16 test;
void object_origin_pos_randomize_around_y(s32 objectIndex, s16 y, u16 arg2) {
s16 offset_y;
test = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[1] = arg1 + test;
offset_y = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[1] = y + offset_y;
}
UNUSED void func_8008BB28(s32 objectIndex, s16 arg1, u16 arg2) {
s16 test;
UNUSED void object_origin_pos_randomize_around_z(s32 objectIndex, s16 z, u16 arg2) {
s16 offset_z;
test = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[2] = arg1 + test;
offset_z = random_int(arg2) - (arg2 / 2);
gObjectList[objectIndex].origin_pos[2] = z + offset_z;
}
UNUSED void func_8008BB9C(s32 objectIndex, s16 arg1, s16 arg2, u16 arg3, u16 arg4) {
s16 sp1E;
s16 temp_v0;
UNUSED void object_origin_pos_randomize_around_xy(s32 objectIndex, s16 x, s16 y, u16 arg3, u16 arg4) {
s16 offset_x;
s16 offset_y;
sp1E = random_int(arg3) - ((s32) arg3 / 2);
temp_v0 = random_int(arg4) - ((s32) arg4 / 2);
gObjectList[objectIndex].origin_pos[0] = arg1 + sp1E;
gObjectList[objectIndex].origin_pos[1] = arg2 + temp_v0;
offset_x = random_int(arg3) - ((s32) arg3 / 2);
offset_y = random_int(arg4) - ((s32) arg4 / 2);
gObjectList[objectIndex].origin_pos[0] = x + offset_x;
gObjectList[objectIndex].origin_pos[1] = y + offset_y;
}
UNUSED void func_8008BC58(s32 objectIndex, s16 arg1, s16 arg2, u16 arg3, u16 arg4) {
s16 sp1E;
s16 temp_v0;
UNUSED void object_origin_pos_randomize_around_xz(s32 objectIndex, s16 x, s16 z, u16 arg3, u16 arg4) {
s16 offset_x;
s16 offset_z;
sp1E = random_int(arg3) - ((s32) arg3 / 2);
temp_v0 = random_int(arg4) - ((s32) arg4 / 2);
gObjectList[objectIndex].origin_pos[0] = arg1 + sp1E;
gObjectList[objectIndex].origin_pos[2] = arg2 + temp_v0;
offset_x = random_int(arg3) - ((s32) arg3 / 2);
offset_z = random_int(arg4) - ((s32) arg4 / 2);
gObjectList[objectIndex].origin_pos[0] = x + offset_x;
gObjectList[objectIndex].origin_pos[2] = z + offset_z;
}
void func_8008BD14(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, u16 arg4, u16 arg5, u16 arg6) {
s16 sp1E;
s16 sp1C;
s16 temp_v0;
void object_origin_pos_randomize_around_xyz(s32 objectIndex, s16 x, s16 y, s16 z, u16 arg4, u16 arg5, u16 arg6) {
s16 offset_x;
s16 offset_y;
s16 offset_z;
sp1E = random_int(arg4) - ((s32) arg4 / 2);
sp1C = random_int(arg5) - ((s32) arg5 / 2);
temp_v0 = random_int(arg6) - ((s32) arg6 / 2);
gObjectList[objectIndex].origin_pos[0] = arg1 + sp1E;
gObjectList[objectIndex].origin_pos[1] = arg2 + sp1C;
gObjectList[objectIndex].origin_pos[2] = arg3 + temp_v0;
offset_x = random_int(arg4) - ((s32) arg4 / 2);
offset_y = random_int(arg5) - ((s32) arg5 / 2);
offset_z = random_int(arg6) - ((s32) arg6 / 2);
gObjectList[objectIndex].origin_pos[0] = x + offset_x;
gObjectList[objectIndex].origin_pos[1] = y + offset_y;
gObjectList[objectIndex].origin_pos[2] = z + offset_z;
}
void func_8008BE0C(s32 objectIndex, s16 arg1, u16 arg2) {
gObjectList[objectIndex].origin_pos[0] = gPlayerOneCopy->pos[0] + (sins(arg2) * arg1);
gObjectList[objectIndex].origin_pos[2] = gPlayerOneCopy->pos[2] + (coss(arg2) * arg1);
void object_origin_pos_around_player_one(s32 objectIndex, s16 dist, u16 angle) {
gObjectList[objectIndex].origin_pos[0] = gPlayerOneCopy->pos[0] + (sins(angle) * dist);
gObjectList[objectIndex].origin_pos[2] = gPlayerOneCopy->pos[2] + (coss(angle) * dist);
}
UNUSED void func_8008BEA4(s32 objectIndex, u16 arg1, u16 arg2) {
@ -1914,13 +1914,13 @@ UNUSED void func_8008BEA4(s32 objectIndex, u16 arg1, u16 arg2) {
thing = random_int(arg1);
thing2 = camera1->rot[1] + random_int(arg2) - ((s32) arg2 / 2);
func_8008BE0C(objectIndex, thing, thing2);
object_origin_pos_around_player_one(objectIndex, thing, thing2);
}
void func_8008BF18(s32 objectIndex) {
gObjectList[objectIndex].pos[0] = gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].unk_028[0];
gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].origin_pos[1] + gObjectList[objectIndex].unk_028[1];
gObjectList[objectIndex].pos[2] = gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].unk_028[2];
void object_calculate_new_pos_offset(s32 objectIndex) {
gObjectList[objectIndex].pos[0] = gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0];
gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].origin_pos[1] + gObjectList[objectIndex].offset[1];
gObjectList[objectIndex].pos[2] = gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].offset[2];
}
void func_8008BF64(s32 objectIndex) {

View File

@ -17,7 +17,7 @@ s32 func_80087060(s32, s32);
s32 func_80087104(s32, u16);
s32 func_800871AC(s32, s32);
void func_80087258(s32, s32, f32);
s32 func_80087294(s32, Player*);
s32 get_angle_between_player_object(s32, Player*);
s32 angle_between_object_camera(s32, Camera*);
u16 get_x_direction_angle(s32);
s32 get_y_direction_angle(s32);
@ -30,11 +30,11 @@ void func_8008751C(s32);
void func_8008757C(s32);
void func_80087620(s32);
void func_800876A0(s32);
void func_80087710(s32);
void func_8008775C(s32);
void func_80087798(s32);
void func_800877C4(s32);
void func_800877F0(s32);
void object_add_velocity_offset_xyz(s32);
void object_add_velocity_offset_xz(s32);
void object_add_velocity_offset_x(s32);
void object_add_velocity_offset_y(s32);
void object_add_velocity_offset_z(s32);
void func_8008781C(s32);
void func_80087844(s32);
f32 func_8008786C(f32, f32, f32, f32, f32);
@ -93,7 +93,7 @@ s32 func_80089E18(s32);
s32 func_80089F24(s32);
s32 func_8008A060(s32, Camera*, u16);
s32 func_8008A0B4(s32, Player*, Camera*, u16);
s32 func_8008A140(s32, Camera*, u16);
s32 is_object_visible_on_camera(s32, Camera*, u16);
void func_8008A1D0(s32, s32, s32, s32);
void func_8008A2CC(s32, s32, u16);
s32 func_8008A364(s32, s32, u16, s32);
@ -145,22 +145,22 @@ void func_8008B6A4(s32);
void func_8008B724(s32);
void func_8008B78C(s32);
void set_obj_origin_pos(s32, f32, f32, f32);
void func_8008B80C(s32, f32, f32, f32);
void set_obj_origin_offset(s32, f32, f32, f32);
void func_8008B844(s32);
void set_obj_direction_angle(s32, u16, u16, u16);
void set_obj_orientation(s32, u16, u16, u16);
void set_obj_velocity(s32, f32, f32, f32);
void func_8008B928(s32, s16, s16, s16, SplineData*);
void func_8008BA40(s32, s16, u16);
void func_8008BAB4(s32, s16, u16);
void func_8008BB28(s32, s16, u16);
void func_8008BB9C(s32, s16, s16, u16, u16);
void func_8008BC58(s32, s16, s16, u16, u16);
void func_8008BD14(s32, s16, s16, s16, u16, u16, u16);
void func_8008BE0C(s32, s16, u16);
void object_origin_pos_randomize_around_x(s32, s16, u16);
void object_origin_pos_randomize_around_y(s32, s16, u16);
void object_origin_pos_randomize_around_z(s32, s16, u16);
void object_origin_pos_randomize_around_xy(s32, s16, s16, u16, u16);
void object_origin_pos_randomize_around_xz(s32, s16, s16, u16, u16);
void object_origin_pos_randomize_around_xyz(s32, s16, s16, s16, u16, u16, u16);
void object_origin_pos_around_player_one(s32, s16, u16);
void func_8008BEA4(s32, u16, u16);
void func_8008BFC0(s32);
void func_8008BF18(s32);
void object_calculate_new_pos_offset(s32);
void func_8008BF64(s32);
void func_8008BFFC(s32);
void func_8008C1B8(s32);

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ extern u32 _course_mario_raceway_dl_mio0SegmentRomStart[];
typedef struct {
/* 0x00 */ s32 type; // id maybe?
/* 0x04 */ s32 unk4; // sound mode, maybe some other stuff
/* 0x04 */ s32 cursor; // sound mode, maybe some other stuff
/* 0x08 */ s32 unk8; // This is used but I can't tell what for
/* 0x0C */ s32 column;
/* 0x10 */ s32 row;
@ -90,8 +90,8 @@ void func_80091EE4(void);
void func_80091FA4(void);
void func_80092148(void);
void func_800921B4(void);
void func_800921C0(s32, s32, s32);
void func_80092224(s32, s32, s32);
void text_rainbow_effect(s32, s32, s32);
void set_text_color_rainbow_if_selected(s32, s32, s32);
void func_80092258(void);
void func_80092290(s32, s32*, s32*);
void func_80092500(void);
@ -193,7 +193,7 @@ void func_8009B998(void);
Gfx *func_8009B9D0(Gfx*, MkTexture*);
Gfx *func_8009BA74(Gfx*, MkTexture*, s32, s32);
Gfx *func_8009BC9C(Gfx*, MkTexture*, s32, s32, s32, s32);
Gfx *func_8009BEF0(Gfx*, MkTexture*, f32, f32, s32, f32,f32);
Gfx *print_letter(Gfx*, MkTexture*, f32, f32, s32, f32,f32);
Gfx *func_8009C204(Gfx*, MkTexture*, s32, s32, s32);
Gfx *func_8009C434(Gfx*, struct_8018DEE0_entry*, s32, s32, s32);
Gfx *func_8009C708(Gfx*, struct_8018DEE0_entry *, s32, s32, s32, s32);
@ -266,11 +266,11 @@ void func_800A3E60(struct_8018D9E0_entry*);
void func_800A4550(s32, s32, s32);
void func_800A474C(s32, s32, s32);
void func_800A4A24(struct_8018D9E0_entry*);
void func_800A4B38(struct_8018D9E0_entry*);
void func_800A4BC8(struct_8018D9E0_entry*);
void func_800A4EF8(struct_8018D9E0_entry*);
void func_800A5084(struct_8018D9E0_entry*);
void func_800A5360(struct_8018D9E0_entry*);
void render_pause_menu(struct_8018D9E0_entry*);
void render_pause_menu_time_trials(struct_8018D9E0_entry*);
void render_pause_menu_versus(struct_8018D9E0_entry*);
void render_pause_grand_prix(struct_8018D9E0_entry*);
void render_pause_battle(struct_8018D9E0_entry*);
void func_800A54EC(void);
void func_800A5738(struct_8018D9E0_entry*);
void func_800A6034(struct_8018D9E0_entry*);
@ -498,7 +498,7 @@ extern char *D_800E7728[];
extern char *D_800E7730;
extern char *D_800E7734[];
extern char *D_800E7744[];
extern char *D_800E775C[];
extern char *gTextPauseButton[];
extern char *D_800E7778[];
extern char D_800E7780[];
extern char *D_800E77A0[];

View File

@ -12,8 +12,8 @@ typedef struct {
/** @cond */
extern s8 common_tlut_finish_line_banner[];
extern s8 common_texture_particle_fire[];
extern u8 common_tlut_finish_line_banner[];
extern u8 common_texture_particle_fire[];
extern Vtx D_0D001200[];
extern Vtx D_0D001210[];
extern Vtx D_0D001240[];
@ -52,7 +52,7 @@ extern Vtx D_0D001E28[];
extern Vtx D_0D001E58[];
extern Vtx D_0D001E88[];
extern Vtx D_0D001EB8[];
extern s8 common_texture_item_box_question_mark[];
extern u8 common_texture_item_box_question_mark[];
extern Gfx D_0D002EE8[];
extern Vtx common_fake_item_box_question_mark_vertices[];
extern Gfx common_model_fake_itembox[];
@ -70,13 +70,13 @@ extern Gfx D_0D003278[];
extern Gfx D_0D003288[];
extern Vtx common_vtx_banana[];
extern Vtx common_vtx_flat_banana[];
extern s8 common_texture_banana[];
extern s8 common_texture_flat_banana[];
extern u8 common_texture_banana[];
extern u8 common_texture_flat_banana[];
extern Gfx common_model_banana[];
extern Gfx common_model_flat_banana[];
extern s8 common_tlut_trees_import[];
extern s8 common_tlut_green_shell[];
extern s8 common_tlut_blue_shell[];
extern u8 common_tlut_trees_import[];
extern u8 common_tlut_green_shell[];
extern u8 common_tlut_blue_shell[];
extern Vtx D_0D005238[];
extern Vtx D_0D005278[];
extern Gfx D_0D0052B8[];
@ -141,10 +141,10 @@ extern Gfx D_0D0069F8[];
extern Gfx D_0D006A10[];
extern Gfx D_0D006A28[];
extern Gfx D_0D006A40[];
extern s8 D_0D006A58[];
extern s8 D_0D006AD8[];
extern s8 common_tlut_debug_font[];
extern s8 common_texture_debug_font[];
extern u8 D_0D006A58[];
extern u8 D_0D006AD8[];
extern u8 common_tlut_debug_font[];
extern u8 common_texture_debug_font[];
extern Gfx D_0D0076F8[];
extern Gfx D_0D007780[];
extern Gfx D_0D0077A0[];
@ -254,29 +254,29 @@ extern f32 D_0D009568[][4];
extern f32 D_0D0096B8[][4];
extern f32 D_0D009808[][4];
extern s32 unkPad;
extern s8 common_texture_speedometer[];
extern s8 common_texture_speedometer_needle[];
extern s8 common_texture_hud_lap[];
extern u8 common_texture_speedometer[];
extern u8 common_texture_speedometer_needle[];
extern u8 common_texture_hud_lap[];
extern u8 common_texture_hud_123[];
extern s8 common_texture_hud_lap_time[];
extern s8 common_texture_hud_lap_1_on_3[];
extern s8 common_texture_hud_lap_2_on_3[];
extern s8 common_texture_hud_lap_3_on_3[];
extern s8 common_texture_hud_total_time[];
extern s8 common_texture_hud_time[];
extern u8 common_texture_hud_lap_time[];
extern u8 common_texture_hud_lap_1_on_3[];
extern u8 common_texture_hud_lap_2_on_3[];
extern u8 common_texture_hud_lap_3_on_3[];
extern u8 common_texture_hud_total_time[];
extern u8 common_texture_hud_time[];
extern u8 common_texture_hud_normal_digit[];
extern u8 common_texture_hud_place[][4096];
extern s8 D_0D00E258[];
extern s8 D_0D00F258[];
extern s8 D_0D010258[];
extern s8 D_0D011258[];
extern s8 D_0D012258[];
extern s8 D_0D013258[];
extern s8 D_0D014258[];
extern u8 D_0D00E258[];
extern u8 D_0D00F258[];
extern u8 D_0D010258[];
extern u8 D_0D011258[];
extern u8 D_0D012258[];
extern u8 D_0D013258[];
extern u8 D_0D014258[];
extern u8 D_0D015258[][2048];
extern s8 D_0D015A58[];
extern s8 D_0D016258[];
extern s8 D_0D016A58[];
extern u8 D_0D015A58[];
extern u8 D_0D016258[];
extern u8 D_0D016A58[];
extern u8 common_tlut_player_emblem[];
extern s16 tlutPad[];
extern u8 common_texture_player_emblem[][2048];
@ -285,57 +285,57 @@ extern u8 common_texture_hud_type_C_rank_font[][256];
extern u8 common_tlut_hud_type_C_rank_tiny_font[];
extern u8 common_texture_hud_type_C_rank_tiny_font[][64];
extern u8 common_texture_character_portrait_border[];
extern s8 common_tlut_portrait_mario[];
extern s8 common_tlut_portrait_luigi[];
extern s8 common_tlut_portrait_peach[];
extern s8 common_tlut_portrait_toad[];
extern s8 common_tlut_portrait_yoshi[];
extern s8 common_tlut_portrait_donkey_kong[];
extern s8 common_tlut_portrait_wario[];
extern s8 common_tlut_portrait_bowser[];
extern s8 common_tlut_portrait_bomb_kart_and_question_mark[];
extern s8 common_texture_portrait_mario[];
extern s8 common_texture_portrait_luigi[];
extern s8 common_texture_portrait_peach[];
extern s8 common_texture_portrait_toad[];
extern s8 common_texture_portrait_yoshi[];
extern s8 common_texture_portrait_donkey_kong[];
extern s8 common_texture_portrait_wario[];
extern u8 common_tlut_portrait_mario[];
extern u8 common_tlut_portrait_luigi[];
extern u8 common_tlut_portrait_peach[];
extern u8 common_tlut_portrait_toad[];
extern u8 common_tlut_portrait_yoshi[];
extern u8 common_tlut_portrait_donkey_kong[];
extern u8 common_tlut_portrait_wario[];
extern u8 common_tlut_portrait_bowser[];
extern u8 common_tlut_portrait_bomb_kart_and_question_mark[];
extern u8 common_texture_portrait_mario[];
extern u8 common_texture_portrait_luigi[];
extern u8 common_texture_portrait_peach[];
extern u8 common_texture_portrait_toad[];
extern u8 common_texture_portrait_yoshi[];
extern u8 common_texture_portrait_donkey_kong[];
extern u8 common_texture_portrait_wario[];
extern u8 common_texture_portrait_bowser[];
extern u8 common_texture_portrait_bomb_kart[];
extern u8 common_texture_portrait_question_mark[];
extern s8 common_tlut_item_window_none[];
extern s8 common_tlut_item_window_banana[];
extern s8 common_tlut_item_window_banana_bunch[];
extern s8 common_tlut_item_window_mushroom[];
extern s8 common_tlut_item_window_double_mushroom[];
extern s8 common_tlut_item_window_triple_mushroom[];
extern s8 common_tlut_item_window_super_mushroom[];
extern s8 common_tlut_item_window_blue_shell[];
extern s8 common_tlut_item_window_boo[];
extern s8 common_tlut_item_window_green_shell[];
extern s8 common_tlut_item_window_triple_green_shell[];
extern s8 common_tlut_item_window_red_shell[];
extern s8 common_tlut_item_window_triple_red_shell[];
extern s8 common_tlut_item_window_star[];
extern s8 common_tlut_item_window_thunder_bolt[];
extern s8 common_tlut_item_window_fake_item_box[];
extern u8 common_tlut_item_window_none[];
extern u8 common_tlut_item_window_banana[];
extern u8 common_tlut_item_window_banana_bunch[];
extern u8 common_tlut_item_window_mushroom[];
extern u8 common_tlut_item_window_double_mushroom[];
extern u8 common_tlut_item_window_triple_mushroom[];
extern u8 common_tlut_item_window_super_mushroom[];
extern u8 common_tlut_item_window_blue_shell[];
extern u8 common_tlut_item_window_boo[];
extern u8 common_tlut_item_window_green_shell[];
extern u8 common_tlut_item_window_triple_green_shell[];
extern u8 common_tlut_item_window_red_shell[];
extern u8 common_tlut_item_window_triple_red_shell[];
extern u8 common_tlut_item_window_star[];
extern u8 common_tlut_item_window_thunder_bolt[];
extern u8 common_tlut_item_window_fake_item_box[];
extern u8 common_texture_item_window_none[];
extern s8 common_texture_item_window_banana[];
extern s8 common_texture_item_window_banana_bunch[];
extern s8 common_texture_item_window_mushroom[];
extern s8 common_texture_item_window_double_mushroom[];
extern s8 common_texture_item_window_triple_mushroom[];
extern s8 common_texture_item_window_super_mushroom[];
extern s8 common_texture_item_window_blue_shell[];
extern s8 common_texture_item_window_boo[];
extern s8 common_texture_item_window_green_shell[];
extern s8 common_texture_item_window_triple_green_shell[];
extern s8 common_texture_item_window_red_shell[];
extern s8 common_texture_item_window_triple_red_shell[];
extern s8 common_texture_item_window_star[];
extern s8 common_texture_item_window_thunder_bolt[];
extern s8 common_texture_item_window_fake_item_box[];
extern u8 common_texture_item_window_banana[];
extern u8 common_texture_item_window_banana_bunch[];
extern u8 common_texture_item_window_mushroom[];
extern u8 common_texture_item_window_double_mushroom[];
extern u8 common_texture_item_window_triple_mushroom[];
extern u8 common_texture_item_window_super_mushroom[];
extern u8 common_texture_item_window_blue_shell[];
extern u8 common_texture_item_window_boo[];
extern u8 common_texture_item_window_green_shell[];
extern u8 common_texture_item_window_triple_green_shell[];
extern u8 common_texture_item_window_red_shell[];
extern u8 common_texture_item_window_triple_red_shell[];
extern u8 common_texture_item_window_star[];
extern u8 common_texture_item_window_thunder_bolt[];
extern u8 common_texture_item_window_fake_item_box[];
extern u8 common_tlut_lakitu_countdown[][512];
extern u8 common_tlut_lakitu_checkered_flag[];
extern u8 common_tlut_lakitu_second_lap[];
@ -344,31 +344,31 @@ extern u8 common_tlut_lakitu_reverse[];
extern u8 common_tlut_lakitu_fishing[];
extern u8 common_texture_particle_leaf[];
extern s8 common_tlut_traffic_light[];
extern s8 common_texture_traffic_light_01[];
extern s8 common_texture_traffic_light_02[];
extern s8 common_texture_traffic_light_03[];
extern s8 common_texture_traffic_light_04[];
extern s8 common_texture_traffic_light_05[];
extern s8 common_texture_traffic_light_06[];
extern s8 common_texture_traffic_light_07[];
extern s8 common_texture_traffic_light_08[];
extern s8 common_texture_traffic_light_09[];
extern s8 common_texture_traffic_light_10[];
extern s8 common_texture_unused_particle_leaf[];
extern u8 common_tlut_traffic_light[];
extern u8 common_texture_traffic_light_01[];
extern u8 common_texture_traffic_light_02[];
extern u8 common_texture_traffic_light_03[];
extern u8 common_texture_traffic_light_04[];
extern u8 common_texture_traffic_light_05[];
extern u8 common_texture_traffic_light_06[];
extern u8 common_texture_traffic_light_07[];
extern u8 common_texture_traffic_light_08[];
extern u8 common_texture_traffic_light_09[];
extern u8 common_texture_traffic_light_10[];
extern u8 common_texture_unused_particle_leaf[];
extern u8 D_0D0293D8[];
extern s8 D_0D029458[];
extern u8 D_0D029458[];
extern u8 common_texture_bomb[][1024];
extern s8 D_0D029C58[];
extern s8 D_0D02A058[];
extern s8 D_0D02A458[];
extern u8 D_0D029C58[];
extern u8 D_0D02A058[];
extern u8 D_0D02A458[];
extern u8 common_tlut_bomb[];
extern u8 D_0D02AA58[];
extern u8 common_texture_particle_spark[][1024];
extern u8 common_texture_particle_smoke[][1024];
extern s8 common_texture_minimap_finish_line[];
extern s8 common_texture_minimap_kart_character[][128];
extern s8 common_texture_minimap_progress_dot[];
extern u8 common_texture_minimap_finish_line[];
extern u8 common_texture_minimap_kart_character[][128];
extern u8 common_texture_minimap_progress_dot[];
/** @endcond */

View File

@ -18,23 +18,23 @@
// Somehow these symbols need to be linked in. For now, raw addresses are used.
/*
extern s8 D_03004000[];
extern s8 D_03004800[];
extern s8 D_03005000[];
extern s8 D_03005800[];
extern s8 D_03006000[];
extern s8 D_03006800[];
extern s8 D_03007000[];
extern s8 D_03007800[];
extern s8 D_03008000[];
extern s8 D_03008800[];
extern u8 D_03004000[];
extern u8 D_03004800[];
extern u8 D_03005000[];
extern u8 D_03005800[];
extern u8 D_03006000[];
extern u8 D_03006800[];
extern u8 D_03007000[];
extern u8 D_03007800[];
extern u8 D_03008000[];
extern u8 D_03008800[];
*/
s8 common_tlut_finish_line_banner[] = { // tlut
u8 common_tlut_finish_line_banner[] = { // tlut
#include "assets/finish_line_banner/common_tlut_finish_line_banner.inc.c"
};
s8 common_texture_particle_fire[] = { // tlut
u8 common_texture_particle_fire[] = { // tlut
#include "textures/common/common_texture_particle_fire.rgba16.inc.c"
};
@ -396,7 +396,7 @@ Vtx D_0D001EB8[] = {
};
// D_0D001EE8
s8 common_texture_item_box_question_mark[] = {
u8 common_texture_item_box_question_mark[] = {
#include "textures/common/common_texture_item_box_question_mark.rgba16.inc.c"
};
@ -578,11 +578,11 @@ Vtx common_vtx_flat_banana[] = {
// D_0D003348
s8 common_texture_banana[] = {
u8 common_texture_banana[] = {
#include "textures/common/common_texture_banana.rgba16.inc.c"
};
s8 common_texture_flat_banana[] = {
u8 common_texture_flat_banana[] = {
#include "textures/common/common_texture_flat_banana.rgba16.inc.c"
};
@ -632,15 +632,15 @@ Gfx common_model_flat_banana[] = {
// tlut size 8x29
//! @todo What is this?
s8 common_tlut_trees_import[] = {
u8 common_tlut_trees_import[] = {
#include "assets/trees/common_tlut_trees_import.inc.c"
};
s8 common_tlut_green_shell[] = {
u8 common_tlut_green_shell[] = {
#include "assets/greenshell/common_tlut_green_shell.inc.c"
};
// 5038
s8 common_tlut_blue_shell[] = {
u8 common_tlut_blue_shell[] = {
#include "assets/blueshell/common_tlut_blue_shell.inc.c"
};
@ -1269,20 +1269,20 @@ Gfx D_0D006A40[] = {
// Texture Block shadow i4
s8 D_0D006A58[] = {
u8 D_0D006A58[] = {
#include "textures/common/132B50_06A58.i4.inc.c"
};
s8 D_0D006AD8[] = {
u8 D_0D006AD8[] = {
#include "textures/common/132B50_06AD8.ia8.inc.c"
};
// tlut
s8 common_tlut_debug_font[] = {
u8 common_tlut_debug_font[] = {
#include "assets/debug_font/common_tlut_debug_font.inc.c"
};
s8 common_texture_debug_font[] = {
u8 common_texture_debug_font[] = {
#include "assets/debug_font/common_texture_debug_font.inc.c"
};
@ -2566,17 +2566,17 @@ f32 D_0D009808[][4] = {
};
// Odometer speedometer
s8 common_texture_speedometer[] = {
u8 common_texture_speedometer[] = {
#include "textures/common/common_texture_speedometer.i4.inc.c"
};
// i8? odometer needle
s8 common_texture_speedometer_needle[] = {
u8 common_texture_speedometer_needle[] = {
#include "textures/common/common_texture_speedometer_needle.i4.inc.c"
};
// Lap UI Texture
s8 common_texture_hud_lap[] = {
u8 common_texture_hud_lap[] = {
#include "textures/common/common_texture_hud_lap.rgba16.inc.c"
};
@ -2586,32 +2586,32 @@ u8 common_texture_hud_123[] = {
};
// Lap
s8 common_texture_hud_lap_time[] = {
u8 common_texture_hud_lap_time[] = {
#include "textures/common/common_texture_hud_lap_time.rgba16.inc.c"
};
// 1/3
s8 common_texture_hud_lap_1_on_3[] = {
u8 common_texture_hud_lap_1_on_3[] = {
#include "textures/common/common_texture_hud_lap_1_on_3.rgba16.inc.c"
};
// 2/3
s8 common_texture_hud_lap_2_on_3[] = {
u8 common_texture_hud_lap_2_on_3[] = {
#include "textures/common/common_texture_hud_lap_2_on_3.rgba16.inc.c"
};
// 3/3
s8 common_texture_hud_lap_3_on_3[] = {
u8 common_texture_hud_lap_3_on_3[] = {
#include "textures/common/common_texture_hud_lap_3_on_3.rgba16.inc.c"
};
// total
s8 common_texture_hud_total_time[] = {
u8 common_texture_hud_total_time[] = {
#include "textures/common/common_texture_hud_total_time.rgba16.inc.c"
};
// time
s8 common_texture_hud_time[] = {
u8 common_texture_hud_time[] = {
#include "textures/common/common_texture_hud_time.rgba16.inc.c"
};
@ -2773,83 +2773,83 @@ u8 common_texture_character_portrait_border[] = {
};
// 1A4D8 mario tlut
s8 common_tlut_portrait_mario[] = {
u8 common_tlut_portrait_mario[] = {
#include "assets/character_portraits/common_tlut_portrait_mario.inc.c"
};
// 1A6D8 luigi tlut
s8 common_tlut_portrait_luigi[] = {
u8 common_tlut_portrait_luigi[] = {
#include "assets/character_portraits/common_tlut_portrait_luigi.inc.c"
};
// 1A8D8 peach tlut
s8 common_tlut_portrait_peach[] = {
u8 common_tlut_portrait_peach[] = {
#include "assets/character_portraits/common_tlut_portrait_peach.inc.c"
};
// 1AAD8 toad tlut
s8 common_tlut_portrait_toad[] = {
u8 common_tlut_portrait_toad[] = {
#include "assets/character_portraits/common_tlut_portrait_toad.inc.c"
};
// 1ACD8 yoshi tlut
s8 common_tlut_portrait_yoshi[] = {
u8 common_tlut_portrait_yoshi[] = {
#include "assets/character_portraits/common_tlut_portrait_yoshi.inc.c"
};
// 1AED8 dk tlut
s8 common_tlut_portrait_donkey_kong[] = {
u8 common_tlut_portrait_donkey_kong[] = {
#include "assets/character_portraits/common_tlut_portrait_donkey_kong.inc.c"
};
// 1B0D8 wario tlut
s8 common_tlut_portrait_wario[] = {
u8 common_tlut_portrait_wario[] = {
#include "assets/character_portraits/common_tlut_portrait_wario.inc.c"
};
// 1B2D8 bowser tlut
s8 common_tlut_portrait_bowser[] = {
u8 common_tlut_portrait_bowser[] = {
#include "assets/character_portraits/common_tlut_portrait_bowser.inc.c"
};
// 1B4D8 bob-omb tlut and question mark?
s8 common_tlut_portrait_bomb_kart_and_question_mark[] = {
u8 common_tlut_portrait_bomb_kart_and_question_mark[] = {
#include "assets/character_portraits/common_tlut_portrait_bomb_kart_and_question_mark.inc.c"
};
// Mario
s8 common_texture_portrait_mario[] = {
u8 common_texture_portrait_mario[] = {
#include "assets/character_portraits/common_texture_portrait_mario.inc.c"
};
// Luigi
s8 common_texture_portrait_luigi[] = {
u8 common_texture_portrait_luigi[] = {
#include "assets/character_portraits/common_texture_portrait_luigi.inc.c"
};
// Peach
s8 common_texture_portrait_peach[] = {
u8 common_texture_portrait_peach[] = {
#include "assets/character_portraits/common_texture_portrait_peach.inc.c"
};
// Toad
s8 common_texture_portrait_toad[] = {
u8 common_texture_portrait_toad[] = {
#include "assets/character_portraits/common_texture_portrait_toad.inc.c"
};
// Yoshi
s8 common_texture_portrait_yoshi[] = {
u8 common_texture_portrait_yoshi[] = {
#include "assets/character_portraits/common_texture_portrait_yoshi.inc.c"
};
// Donkey Kong
s8 common_texture_portrait_donkey_kong[] = {
u8 common_texture_portrait_donkey_kong[] = {
#include "assets/character_portraits/common_texture_portrait_donkey_kong.inc.c"
};
// Wario
s8 common_texture_portrait_wario[] = {
u8 common_texture_portrait_wario[] = {
#include "assets/character_portraits/common_texture_portrait_wario.inc.c"
};
@ -2869,67 +2869,67 @@ u8 common_texture_portrait_question_mark[] = {
};
// 1DED8 tlut item frames
s8 common_tlut_item_window_none[] = {
u8 common_tlut_item_window_none[] = {
#include "assets/item_window/common_tlut_item_window_none.inc.c"
};
s8 common_tlut_item_window_banana[] = {
u8 common_tlut_item_window_banana[] = {
#include "assets/item_window/common_tlut_item_window_banana.inc.c"
};
s8 common_tlut_item_window_banana_bunch[] = {
u8 common_tlut_item_window_banana_bunch[] = {
#include "assets/item_window/common_tlut_item_window_banana_bunch.inc.c"
};
s8 common_tlut_item_window_mushroom[] = {
u8 common_tlut_item_window_mushroom[] = {
#include "assets/item_window/common_tlut_item_window_mushroom.inc.c"
};
s8 common_tlut_item_window_double_mushroom[] = {
u8 common_tlut_item_window_double_mushroom[] = {
#include "assets/item_window/common_tlut_item_window_double_mushroom.inc.c"
};
s8 common_tlut_item_window_triple_mushroom[] = {
u8 common_tlut_item_window_triple_mushroom[] = {
#include "assets/item_window/common_tlut_item_window_triple_mushroom.inc.c"
};
s8 common_tlut_item_window_super_mushroom[] = {
u8 common_tlut_item_window_super_mushroom[] = {
#include "assets/item_window/common_tlut_item_window_super_mushroom.inc.c"
};
s8 common_tlut_item_window_blue_shell[] = {
u8 common_tlut_item_window_blue_shell[] = {
#include "assets/item_window/common_tlut_item_window_blue_shell.inc.c"
};
s8 common_tlut_item_window_boo[] = {
u8 common_tlut_item_window_boo[] = {
#include "assets/item_window/common_tlut_item_window_boo.inc.c"
};
s8 common_tlut_item_window_green_shell[] = {
u8 common_tlut_item_window_green_shell[] = {
#include "assets/item_window/common_tlut_item_window_green_shell.inc.c"
};
s8 common_tlut_item_window_triple_green_shell[] = {
u8 common_tlut_item_window_triple_green_shell[] = {
#include "assets/item_window/common_tlut_item_window_triple_green_shell.inc.c"
};
s8 common_tlut_item_window_red_shell[] = {
u8 common_tlut_item_window_red_shell[] = {
#include "assets/item_window/common_tlut_item_window_red_shell.inc.c"
};
s8 common_tlut_item_window_triple_red_shell[] = {
u8 common_tlut_item_window_triple_red_shell[] = {
#include "assets/item_window/common_tlut_item_window_triple_red_shell.inc.c"
};
s8 common_tlut_item_window_star[] = {
u8 common_tlut_item_window_star[] = {
#include "assets/item_window/common_tlut_item_window_star.inc.c"
};
s8 common_tlut_item_window_thunder_bolt[] = {
u8 common_tlut_item_window_thunder_bolt[] = {
#include "assets/item_window/common_tlut_item_window_thunder_bolt.inc.c"
};
s8 common_tlut_item_window_fake_item_box[] = {
u8 common_tlut_item_window_fake_item_box[] = {
#include "assets/item_window/common_tlut_item_window_fake_item_box.inc.c"
};
@ -2938,63 +2938,63 @@ u8 common_texture_item_window_none[] = {
#include "assets/item_window/common_texture_item_window_none.inc.c"
};
s8 common_texture_item_window_banana[] = {
u8 common_texture_item_window_banana[] = {
#include "assets/item_window/common_texture_item_window_banana.inc.c"
};
s8 common_texture_item_window_banana_bunch[] = {
u8 common_texture_item_window_banana_bunch[] = {
#include "assets/item_window/common_texture_item_window_banana_bunch.inc.c"
};
s8 common_texture_item_window_mushroom[] = {
u8 common_texture_item_window_mushroom[] = {
#include "assets/item_window/common_texture_item_window_mushroom.inc.c"
};
s8 common_texture_item_window_double_mushroom[] = {
u8 common_texture_item_window_double_mushroom[] = {
#include "assets/item_window/common_texture_item_window_double_mushroom.inc.c"
};
s8 common_texture_item_window_triple_mushroom[] = {
u8 common_texture_item_window_triple_mushroom[] = {
#include "assets/item_window/common_texture_item_window_triple_mushroom.inc.c"
};
s8 common_texture_item_window_super_mushroom[] = {
u8 common_texture_item_window_super_mushroom[] = {
#include "assets/item_window/common_texture_item_window_super_mushroom.inc.c"
};
s8 common_texture_item_window_blue_shell[] = {
u8 common_texture_item_window_blue_shell[] = {
#include "assets/item_window/common_texture_item_window_blue_shell.inc.c"
};
s8 common_texture_item_window_boo[] = {
u8 common_texture_item_window_boo[] = {
#include "assets/item_window/common_texture_item_window_boo.inc.c"
};
s8 common_texture_item_window_green_shell[] = {
u8 common_texture_item_window_green_shell[] = {
#include "assets/item_window/common_texture_item_window_green_shell.inc.c"
};
s8 common_texture_item_window_triple_green_shell[] = {
u8 common_texture_item_window_triple_green_shell[] = {
#include "assets/item_window/common_texture_item_window_triple_green_shell.inc.c"
};
s8 common_texture_item_window_red_shell[] = {
u8 common_texture_item_window_red_shell[] = {
#include "assets/item_window/common_texture_item_window_red_shell.inc.c"
};
s8 common_texture_item_window_triple_red_shell[] = {
u8 common_texture_item_window_triple_red_shell[] = {
#include "assets/item_window/common_texture_item_window_triple_red_shell.inc.c"
};
s8 common_texture_item_window_star[] = {
u8 common_texture_item_window_star[] = {
#include "assets/item_window/common_texture_item_window_star.inc.c"
};
s8 common_texture_item_window_thunder_bolt[] = {
u8 common_texture_item_window_thunder_bolt[] = {
#include "assets/item_window/common_texture_item_window_thunder_bolt.inc.c"
};
s8 common_texture_item_window_fake_item_box[] = {
u8 common_texture_item_window_fake_item_box[] = {
#include "assets/item_window/common_texture_item_window_fake_item_box.inc.c"
};
@ -3039,49 +3039,49 @@ u8 common_tlut_lakitu_fishing[] = {
};
// unused traffic light tlut
UNUSED s8 common_tlut_traffic_light[] = {
UNUSED u8 common_tlut_traffic_light[] = {
#include "assets/unused_traffic_light/common_tlut_traffic_light.inc.c"
};
// unused traffic light textures
UNUSED s8 common_texture_traffic_light_01[] = {
UNUSED u8 common_texture_traffic_light_01[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_01.inc.c"
};
UNUSED s8 common_texture_traffic_light_02[] = {
UNUSED u8 common_texture_traffic_light_02[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_02.inc.c"
};
UNUSED s8 common_texture_traffic_light_03[] = {
UNUSED u8 common_texture_traffic_light_03[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_03.inc.c"
};
UNUSED s8 common_texture_traffic_light_04[] = {
UNUSED u8 common_texture_traffic_light_04[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_04.inc.c"
};
UNUSED s8 common_texture_traffic_light_05[] = {
UNUSED u8 common_texture_traffic_light_05[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_05.inc.c"
};
UNUSED s8 common_texture_traffic_light_06[] = {
UNUSED u8 common_texture_traffic_light_06[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_06.inc.c"
};
UNUSED s8 common_texture_traffic_light_07[] = {
UNUSED u8 common_texture_traffic_light_07[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_07.inc.c"
};
UNUSED s8 common_texture_traffic_light_08[] = {
UNUSED u8 common_texture_traffic_light_08[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_08.inc.c"
};
UNUSED s8 common_texture_traffic_light_09[] = {
UNUSED u8 common_texture_traffic_light_09[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_09.inc.c"
};
UNUSED s8 common_texture_traffic_light_10[] = {
UNUSED u8 common_texture_traffic_light_10[] = {
#include "assets/unused_traffic_light/common_texture_traffic_light_10.inc.c"
};
@ -3091,7 +3091,7 @@ u8 common_texture_particle_leaf[] = {
};
// leaf
UNUSED s8 common_texture_unused_particle_leaf[] = {
UNUSED u8 common_texture_unused_particle_leaf[] = {
#include "textures/common/common_texture_unused_particle_leaf.rgba16.inc.c"
};
@ -3102,7 +3102,7 @@ u8 D_0D0293D8[] = {
};
// Smoke?
s8 D_0D029458[] = {
u8 D_0D029458[] = {
#include "textures/common/132B50_29458.i8.inc.c"
};
@ -3163,11 +3163,11 @@ u8 common_texture_particle_smoke[][1024] = {
};
// minimap cars
s8 common_texture_minimap_finish_line[] = {
u8 common_texture_minimap_finish_line[] = {
#include "assets/minimap_icons/common_texture_minimap_finish_line.inc.c"
};
s8 common_texture_minimap_kart_character[][128] = {
u8 common_texture_minimap_kart_character[][128] = {
{ // Mario
#include "assets/minimap_icons/common_texture_minimap_kart_mario.inc.c"
},
@ -3194,6 +3194,6 @@ s8 common_texture_minimap_kart_character[][128] = {
},
};
s8 common_texture_minimap_progress_dot[] = {
u8 common_texture_minimap_progress_dot[] = {
#include "assets/minimap_icons/common_texture_minimap_progress_dot.inc.c"
};

View File

@ -18,7 +18,7 @@
#include <code_8003DC40.h>
#include <code_80057C60.h>
#include <code_8006E9C0.h>
#include <code_80071F00.h>
#include <update_objects.h>
#include <code_80086E70.h>
#include <effects.h>
#include <code_80091440.h>
@ -34,7 +34,7 @@
#include <credits.h>
#include <data_segment2.h>
#include <buffers.h>
#include <hud_renderer.h>
#include <render_objects.h>
#include <kart_dma.h>
#include <main.h>
#include <math_util_2.h>

View File

@ -11,7 +11,7 @@
#include "code_80005FD0.h"
#include "render_player.h"
#include "player_controller.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "code_80057C60.h"
#include "effects.h"
#include "audio/external.h"
@ -1908,7 +1908,7 @@ void func_80090970(Player *player, s8 playerId, s8 arg2) {
case 2:
func_80090178(player, playerId, sp44, sp38);
// Fakematch found by Verti, who knows what's going on here
player->rotation[1] = (u16) -get_angle_between_points(sp44, sp38) & 0xFFFF;
player->rotation[1] = (u16) -get_angle_between_two_vectors(sp44, sp38) & 0xFFFF;
player->pos[0] = sp44[0];
player->pos[1] = sp44[1] + 40.0f;
player->pos[2] = sp44[2];

View File

@ -682,7 +682,7 @@ void play_sound_congratulation(UNUSED struct CinematicCamera *camera) {
}
/**
* Played in ceremony opening with ballons.
* Played in ceremony opening with balloons.
*/
void play_sound_balloon_pop(UNUSED struct CinematicCamera *camera) {
play_sound2(SOUND_CEREMONY_BALLOON_POP);

View File

@ -63,8 +63,8 @@ void func_80280038(void) {
render_set_position(matrix, 0);
render_course(D_800DC5EC);
render_course_actors(D_800DC5EC);
func_80058090(0);
func_80058538(0);
render_object(PLAYER_ONE+SCREEN_MODE_1P);
render_player_snow_effect(PLAYER_ONE+SCREEN_MODE_1P);
transition_sliding_borders();
func_80281C40();
init_rdp();
@ -165,7 +165,7 @@ void load_credits(void) {
camera->up[2] = 0.0f;
init_cinematic_camera();
func_80003040();
init_object_list();
init_hud();
func_80093E60();
func_80092688();
if (D_800DC5EC) {}

View File

@ -157,7 +157,7 @@ void load_ceremony_cutscene(void) {
debug_switch_character_ceremony_cutscene();
func_802818BC();
func_8003D080();
init_object_list();
init_hud();
func_8001C05C();
balloons_and_fireworks_init();
func_802816B8();

View File

@ -6,13 +6,14 @@
#include "main.h"
#include "math_util.h"
#include "skybox_and_splitscreen.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "code_80057C60.h"
#include "code_80091750.h"
#include "podium_ceremony_actors.h"
#include "ceremony_and_credits.h"
#include "podium_ceremony_actors.h"
#include "render_player.h"
#include "defines.h"
struct UnkStruct80287560 {
s16 unk0;
@ -79,7 +80,7 @@ void func_80281D00(void) {
render_players_on_screen_one();
gSPDisplayList(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&D_80284EE0));
update_actors_loop();
func_80058090(0);
render_object(PLAYER_ONE+SCREEN_MODE_1P);
func_80021B0C();
gSPDisplayList(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&D_80284EE0));
func_80093F10();

View File

@ -9,7 +9,7 @@
#include "memory.h"
#include "common_textures.h"
#include "render_player.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "podium_ceremony_actors.h"
#include "camera_junk.h"
#include "player_controller.h"
@ -471,7 +471,7 @@ void podium_ceremony_loop(void) {
func_8005A070();
if (D_802874D8.unk1C != 0) {
func_8001C14C();
func_800097E0();
update_vehicles();
}
func_80281D00();
func_80281540();

View File

@ -3,7 +3,7 @@
#include "common_structs.h"
enum ActorType {
enum CeremonyActorType {
Initial,
Balloon,
FireworkCone,

View File

@ -18,7 +18,7 @@
#include "profiler.h"
#include "race_logic.h"
#include "skybox_and_splitscreen.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "effects.h"
#include "code_80281780.h"
#include "audio/external.h"
@ -612,7 +612,7 @@ void race_logic_loop(void) {
sNumVBlanks = 0;
profiler_log_thread5_time(LEVEL_SCRIPT_EXECUTE);
D_8015F788 = 0;
func_802A59A4();
render_player_one_1p_screen();
if (!gEnableDebugMode) {
D_800DC514 = FALSE;
} else {
@ -684,11 +684,11 @@ void race_logic_loop(void) {
}
D_8015F788 = 0;
if (gPlayerWinningIndex == 0) {
func_802A5FAC();
func_802A5CB4();
render_player_two_2p_screen_vertical();
render_player_one_2p_screen_vertical();
} else {
func_802A5CB4();
func_802A5FAC();
render_player_one_2p_screen_vertical();
render_player_two_2p_screen_vertical();
}
break;
@ -730,11 +730,11 @@ void race_logic_loop(void) {
}
D_8015F788 = 0;
if (gPlayerWinningIndex == 0) {
func_802A65B8();
func_802A62A4();
render_player_two_2p_screen_horizontal();
render_player_one_2p_screen_horizontal();
} else {
func_802A62A4();
func_802A65B8();
render_player_one_2p_screen_horizontal();
render_player_two_2p_screen_horizontal();
}
break;
@ -802,25 +802,25 @@ void race_logic_loop(void) {
}
D_8015F788 = 0;
if (gPlayerWinningIndex == 0) {
func_802A6BB0();
func_802A6E94();
func_802A7178();
func_802A68CC();
render_player_two_3p_4p_screen();
render_player_three_3p_4p_screen();
render_player_four_3p_4p_screen();
render_player_one_3p_4p_screen();
} else if (gPlayerWinningIndex == 1) {
func_802A68CC();
func_802A6E94();
func_802A7178();
func_802A6BB0();
render_player_one_3p_4p_screen();
render_player_three_3p_4p_screen();
render_player_four_3p_4p_screen();
render_player_two_3p_4p_screen();
} else if (gPlayerWinningIndex == 2) {
func_802A68CC();
func_802A6BB0();
func_802A7178();
func_802A6E94();
render_player_one_3p_4p_screen();
render_player_two_3p_4p_screen();
render_player_four_3p_4p_screen();
render_player_three_3p_4p_screen();
} else {
func_802A68CC();
func_802A6BB0();
func_802A6E94();
func_802A7178();
render_player_one_3p_4p_screen();
render_player_two_3p_4p_screen();
render_player_three_3p_4p_screen();
render_player_four_3p_4p_screen();
}
break;
}

View File

@ -400,8 +400,8 @@ f32 func_80041724(f32 x, f32 z, u16 angle) {
return (coss(angle) * z) + (sinAngle * x);
}
s32 func_80041770(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
return atan2s(arg1 - arg0, arg3 - arg2);
s32 get_angle_between_xy(f32 x1, f32 x2, f32 y1, f32 y2) {
return atan2s(x2 - x1, y2 - y1);
}
u16 func_800417B4(u16 angle1, u16 angle2) {
@ -450,14 +450,14 @@ s32 func_80041924(Collision *arg0, Vec3f arg1) {
return ret;
}
s32 func_80041980(Vec3f arg0, Camera *arg1, u16 arg2) {
bool is_particle_on_screen(Vec3f arg0, Camera *arg1, u16 arg2) {
u16 temp_t9;
s32 ret;
ret = 0;
temp_t9 = (func_80041770(arg1->pos[0], arg0[0], arg1->pos[2], arg0[2]) + (arg2 / 2)) - arg1->rot[1];
ret = FALSE;
temp_t9 = (get_angle_between_xy(arg1->pos[0], arg0[0], arg1->pos[2], arg0[2]) + (arg2 / 2)) - arg1->rot[1];
if ((temp_t9 >= 0) && (arg2 >= temp_t9)) {
ret = 1;
ret = TRUE;
}
return ret;
}
@ -630,7 +630,7 @@ void func_80041D34(void) {
}
}
void func_80041EF4(void) {
void set_matrix_hud_screen(void) {
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxOrtho), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
}

View File

@ -54,12 +54,12 @@ Vec3f *vec3f_cross_product(Vec3f, Vec3f, Vec3f);
s32 func_80041658(f32, f32);
f32 func_800416D8(f32, f32, u16);
f32 func_80041724(f32, f32, u16);
s32 func_80041770(f32, f32, f32, f32);
s32 get_angle_between_xy(f32, f32, f32, f32);
u16 func_800417B4(u16, u16);
s32 func_800418AC(f32, f32, Vec3f);
s32 func_800418E8(f32, f32, Vec3f);
s32 func_80041924(Collision*, Vec3f);
s32 func_80041980(Vec3f, Camera*, u16);
s32 is_particle_on_screen(Vec3f, Camera*, u16);
void func_800419F8(void);
void mtfx_translation_x_y(Mat4, s32, s32);
void mtxf_u16_rotate_z(Mat4, u16);
@ -68,7 +68,7 @@ void mtxf_rotate_z_scale_x_y(Mat4, u16, f32);
void mtxf_translation_x_y_rotate_z_scale_x_y(Mat4, s32, s32, u16, f32);
void func_80041D24(void);
void func_80041D34(void);
void func_80041EF4(void);
void set_matrix_hud_screen(void);
void func_80042330(s32, s32, u16, f32);
void mtxf_set_matrix_transformation(Mat4, Vec3f, Vec3su, f32);
void mtxf_set_matrix_scale_transl(Mat4, Vec3f, Vec3f, f32);

View File

@ -258,20 +258,20 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
sp2C = TRUE;
sp38->unk8 = -1;
}
if (sp2C && gSoundMode != sp38->unk4) {
if (sp2C && gSoundMode != sp38->cursor) {
gSaveData.main.soundMode = gSoundMode;
write_save_data_grand_prix_points_and_sound_mode();
update_save_data_backup();
sp38->unk4 = gSoundMode;
sp38->cursor = gSoundMode;
}
if (btnAndStick & B_BUTTON) {
func_8009E280();
play_sound2(SOUND_MENU_GO_BACK);
if (gSoundMode != sp38->unk4) {
if (gSoundMode != sp38->cursor) {
gSaveData.main.soundMode = gSoundMode;
write_save_data_grand_prix_points_and_sound_mode();
update_save_data_backup();
sp38->unk4 = gSoundMode;
sp38->cursor = gSoundMode;
}
return;
}
@ -305,7 +305,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
switch (sp2C) {
case PFS_INVALID_DATA:
D_8018EDEC = 0x46;
sp38->unk4 = 0;
sp38->cursor = 0;
play_sound2(SOUND_MENU_SELECT);
break;
case PFS_NO_ERROR:
@ -486,7 +486,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
D_8018EDEC = 0x38;
} else {
D_8018EDEC = 0x3A;
sp38->unk4 = 0;
sp38->cursor = 0;
}
play_sound2(SOUND_MENU_SELECT);
}
@ -540,7 +540,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
} else {
D_8018EDEC = 0x3A;
play_sound2(SOUND_MENU_SELECT);
sp38->unk4 = 0;
sp38->cursor = 0;
}
}
// return?
@ -549,9 +549,9 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
case 0x3A:
{
if (arg1 == 0) {
sp38->unk4 += 1;
sp38->cursor += 1;
}
if (sp38->unk4 >= 3) {
if (sp38->cursor >= 3) {
D_8018EDEC = 0x3B;
}
break;
@ -584,9 +584,9 @@ void options_menu_act(struct Controller *controller, u16 arg1) {
case 0x46:
{
if (arg1 == 0) {
sp38->unk4 += 1;
sp38->cursor += 1;
}
if (sp38->unk4 >= 3) {
if (sp38->cursor >= 3) {
D_8018EDEC = 0x47;
}
break;
@ -1986,12 +1986,12 @@ void func_800B44BC(void) {
}
// Likely checks that the user is actually in the menus and not racing.
s32 func_800B4520(void) {
bool func_800B4520(void) {
if ((D_8018E7B0 == 2) || (D_8018E7B0 == 3) || (D_8018E7B0 == 4) || (D_8018E7B0 == 7)) {
return 1;
return TRUE;
}
return 0;
return FALSE;
}
UNUSED void func_800B4560(s32 arg0, s32 arg1) {

View File

@ -1696,7 +1696,7 @@ void func_8002B9CC(Player *player, s8 arg1, UNUSED s32 arg2) {
func_8008C73C(player, arg1);
}
}
temp = (-(s16)get_angle_between_points(player->pos, &player->copy_rotation_x));
temp = (-(s16)get_angle_between_two_vectors(player->pos, &player->copy_rotation_x));
temp2 = (player->rotation[1] - player->unk_0C0);
temp = temp - temp2;
player->unk_234 = temp / 182;
@ -1739,7 +1739,7 @@ void func_8002BB9C(Player *player, f32 *arg1, f32 *arg2, UNUSED s8 arg3, UNUSED
mtxf_translate_vec3f_mat3(sp4C, sp64);
var_v0 = -(s16)get_angle_between_points(sp58, sp4C);
var_v0 = -(s16)get_angle_between_two_vectors(sp58, sp4C);
t0 = player->rotation[1];
var_v0 = 0x10000 + (t0 - var_v0);
var_v0 /= 182;
@ -2160,7 +2160,7 @@ void func_8002D028(Player *player, s8 arg1) {
sp4C[1] = 0;
sp4C[2] = D_80165230[D_80165270[arg1]];
temp = -(s16)get_angle_between_points(player->pos, sp4C);
temp = -(s16)get_angle_between_two_vectors(player->pos, sp4C);
temp2 = player->rotation[1];
temp = (temp - temp2);

View File

@ -17,7 +17,7 @@
#include "waypoints.h"
#include "macros.h"
#include "code_80005FD0.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "effects.h"
#include "collision.h"
#include "audio/external.h"
@ -33,7 +33,7 @@ u8 *D_802BA054;
u8 *D_802BA058;
struct Actor *D_802BA05C;
struct Actor *gActorHotAirBalloonItemBox;
s8 gTLUTRedShell[512]; // tlut 256
u16 D_802BA260;
@ -414,7 +414,7 @@ void func_8029794C(Vec3f arg0, Vec3s arg1, f32 arg2) {
Mat4 sp20;
arg0[1] += 2.0f;
func_802B5F74(sp20, arg0, arg1);
mtxf_pos_rotation_xyz(sp20, arg0, arg1);
mtxf_scale(sp20, arg2);
if (render_set_position(sp20, 0) != 0) {
@ -571,7 +571,7 @@ void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) {
}
}
#include "actors/boat.inc.c"
#include "actors/paddle_boat/update.inc.c"
#include "actors/train.inc.c"
@ -893,7 +893,7 @@ void func_80298D7C(Camera *camera, Mat4 arg1, UNUSED struct Actor *actor) {
test &= 0xF;
test = (s16)test;
if (test == 6) {
func_802B5F74(sp90, spD4, sp88);
mtxf_pos_rotation_xyz(sp90, spD4, sp88);
if (!(gMatrixObjectCount < MTX_OBJECT_POOL_SIZE)) { break; }
render_set_position(sp90, 0);
goto dummylabel;
@ -1302,12 +1302,12 @@ void render_actor_banana(Camera *camera, UNUSED Mat4 arg1, struct BananaActor *b
func_802972B8(camera, (struct Actor *) banana);
if (banana->state == 5) {
func_802B5F74(sp3C, banana->pos, banana->rot);
mtxf_pos_rotation_xyz(sp3C, banana->pos, banana->rot);
} else {
sp7C[0] = 0;
sp7C[1] = 0;
sp7C[2] = 0;
func_802B5F74(sp3C, banana->pos, sp7C);
mtxf_pos_rotation_xyz(sp3C, banana->pos, sp7C);
}
maxObjectsReached = render_set_position(sp3C, 0) == 0;
@ -1405,41 +1405,7 @@ UNUSED void func_8029AE14() {
}
// This likely attaches the paddle wheel to the boat
void func_8029AE1C(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED Mat4 arg2, u16 arg3) {
UNUSED s32 pad[3];
Vec3f sp120;
Mat4 spE0;
Mat4 spA0;
Mat4 sp60;
f32 temp;
if ((arg3 > 20) && (arg3 < 25)) { return; }
temp = is_within_render_distance(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
if (temp < 0.0f) { return; }
gSPSetLights1(gDisplayListHead++, D_800DC610[1]);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
func_802B5F74(spE0, boat->pos, boat->boatRot);
if (render_set_position(spE0, 1) != 0) {
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E730);
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E058);
mtxf_rotate_x(spE0, boat->wheelRot);
vec3f_set(sp120, 0, 16.0f, -255.0f);
mtxf_translate(spA0, sp120);
mtxf_multiplication(sp60, spE0, spA0);
if (render_set_position(sp60, 3) != 0) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_FC28);
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
}
}
#include "actors/paddle_boat/render.inc.c"
void func_8029B06C(Camera *arg0, struct Actor *arg1) {
UNUSED s32 pad[6];
@ -1451,7 +1417,7 @@ void func_8029B06C(Camera *arg0, struct Actor *arg1) {
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(spD8, arg1->pos, arg1->rot);
mtxf_pos_rotation_xyz(spD8, arg1->pos, arg1->rot);
if (render_set_position(spD8, 0) != 0) {
switch(arg1->state) {
@ -1495,7 +1461,7 @@ void func_8029B2E4(Camera *arg0, struct Actor *arg1) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(spC8, arg1->pos, arg1->rot);
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
if (render_set_position(spC8, 0) != 0) {
if (gActiveScreenMode == SCREEN_MODE_1P) {
@ -1526,7 +1492,7 @@ void func_8029B4E0(Camera *arg0, struct Actor *arg1) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(spC8, arg1->pos, arg1->rot);
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
mtxf_scale(spC8, 0.1f);
if (render_set_position(spC8, 0) != 0) {
@ -1558,7 +1524,7 @@ void func_8029B6EC(Camera *camera, struct Actor* arg1) {
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(spC8, arg1->pos, arg1->rot);
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
if (render_set_position(spC8, 0) != 0) {
if (gActiveScreenMode == SCREEN_MODE_1P) {
@ -1580,7 +1546,7 @@ void func_8029B6EC(Camera *camera, struct Actor* arg1) {
}
// Spins train wheels?
void func_8029B8E8(Camera *camera, struct TrainCar *actor) {
void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
UNUSED s32 pad[2];
s32 maxObjectsReached;
Vec3f sp160;
@ -1594,7 +1560,7 @@ void func_8029B8E8(Camera *camera, struct TrainCar *actor) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(sp120, actor->pos, actor->rot);
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
maxObjectsReached = render_set_position(sp120, 0) == 0;
if (maxObjectsReached) { return; }
@ -1706,7 +1672,7 @@ void func_8029B8E8(Camera *camera, struct TrainCar *actor) {
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_8029BFB0(Camera *camera, struct TrainCar *actor) {
void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
Mat4 sp120;
Vec3f sp160;
Mat4 spE0;
@ -1718,7 +1684,7 @@ void func_8029BFB0(Camera *camera, struct TrainCar *actor) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(sp120, actor->pos, actor->rot);
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
if (render_set_position(sp120, 0) == 0) { return; }
if (temp_f0 < 250000.0f) {
@ -1776,7 +1742,7 @@ void func_8029BFB0(Camera *camera, struct TrainCar *actor) {
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_8029C3CC(Camera *camera, struct TrainCar *actor) {
void render_actor_passenger_car(Camera *camera, struct TrainCar *actor) {
Mat4 sp120;
Vec3f sp160;
Mat4 spE0;
@ -1788,7 +1754,7 @@ void func_8029C3CC(Camera *camera, struct TrainCar *actor) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(sp120, actor->pos, actor->rot);
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
if (render_set_position(sp120, 0) == 0) { return; }
@ -1915,14 +1881,14 @@ void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) {
sp98[1] = 0;
sp98[2] = 0;
sp8C[1] = temp_f0 + 2.0f;
func_802B5F74(sp4C, sp8C, sp98);
mtxf_pos_rotation_xyz(sp4C, sp8C, sp98);
if (render_set_position(sp4C, 0) == 0) {
return;
}
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_6F88);
}
}
func_802B5F74(sp4C, rock->pos, rock->rot);
mtxf_pos_rotation_xyz(sp4C, rock->pos, rock->rot);
if (render_set_position(sp4C, 0) == 0) {
return;
}
@ -2170,10 +2136,10 @@ void place_course_actors(void) {
place_all_item_boxes(d_course_mario_raceway_item_box_spawns);
vec3f_set(position, 150.0f, 40.0f, -1300.0f);
position[0] *= gCourseDirection;
addActorToEmptySlot(position, rotation, velocity, ACTOR_MARIO_RACEWAY_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_MARIO_SIGN);
vec3f_set(position, 2520.0f, 0.0f, 1240.0f);
position[0] *= gCourseDirection;
actor = &gActorList[addActorToEmptySlot(position, rotation, velocity, ACTOR_MARIO_RACEWAY_SIGN)];
actor = &gActorList[addActorToEmptySlot(position, rotation, velocity, ACTOR_MARIO_SIGN)];
actor->flags |= 0x4000;
break;
case COURSE_CHOCO_MOUNTAIN:
@ -2252,13 +2218,13 @@ void place_course_actors(void) {
place_all_item_boxes(d_course_wario_stadium_item_box_spawns);
vec3f_set(position, -131.0f, 83.0f, 286.0f);
position[0] *= gCourseDirection;
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
vec3f_set(position, -2353.0f, 72.0f, -1608.0f);
position[0] *= gCourseDirection;
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
vec3f_set(position, -2622.0f, 79.0f, 739.0f);
position[0] *= gCourseDirection;
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_STADIUM_SIGN);
addActorToEmptySlot(position, rotation, velocity, ACTOR_WARIO_SIGN);
break;
case COURSE_BLOCK_FORT:
place_all_item_boxes(d_course_block_fort_item_box_spawns);
@ -2696,7 +2662,7 @@ s32 func_8029F2FC(Player *player, struct PiranhaPlant *plant) {
return 0;
}
s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
bool func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
UNUSED f32 pad[5];
f32 z_dist;
f32 xz_dist;
@ -2708,31 +2674,36 @@ s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
x_dist = egg->pos[0] - player->pos[0];
if ((x_dist < thing2) && (x_dist < -thing)) {
return 0;
return FALSE;
}
if (x_dist > thing) {
return 0;
return FALSE;
}
z_dist = egg->pos[2] - player->pos[2];
if ((z_dist < thing2) && (z_dist < -thing)) {
return 0;
return FALSE;
}
if (z_dist > thing) {
return 0;
return FALSE;
}
xz_dist = sqrtf((x_dist * x_dist) + (z_dist * z_dist));
if (xz_dist > thing) {
return 0;
return FALSE;
}
func_802977B0(player);
y_dist = player->pos[1] - egg->pos[1];
if (y_dist < thing2) {
return 0;
return FALSE;
}
totalBox = player->boundingBoxSize + egg->boundingBoxSize;
if (totalBox < xz_dist) {
return 0;
return FALSE;
}
if ((player->type & PLAYER_HUMAN) != 0) {
if ((player->effects & STAR_EFFECT) != 0) {
egg->flags |= 0x400;
@ -2748,7 +2719,8 @@ s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
} else {
func_8008DABC(player, player - gPlayerOne);
}
return 1;
return TRUE;
}
s32 func_8029F69C(Player *player, struct Actor *actor) {
@ -2816,7 +2788,7 @@ s32 func_8029F69C(Player *player, struct Actor *actor) {
sp20[1] = actor->pos[1];
sp20[2] = actor->pos[2];
if (((gCurrentCourseId == COURSE_MARIO_RACEWAY) || (gCurrentCourseId == COURSE_YOSHI_VALLEY) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY) || (gCurrentCourseId == COURSE_LUIGI_RACEWAY)) && (player->unk_094 > 1.0f)) {
func_80077AB0(sp20, 0);
spawn_leaf(sp20, 0);
}
if (xz_dist < 0.1f) {
sqrtf((sp48 * sp48) + (sp44 * sp44));
@ -3156,7 +3128,7 @@ void func_802A0450(Player *player, struct Actor *actor) {
}
break;
case ACTOR_BANANA:
if (player->effects & 0x800008C0) { break; }
if (player->effects & (BOO_EFFECT | 0x8C0)) { break; }
if (player->soundEffects & 1) { break; }
temp_v1 = actor->rot[0];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
@ -3227,7 +3199,7 @@ void func_802A0450(Player *player, struct Actor *actor) {
func_8029F2FC(player, (struct PiranhaPlant *) actor);
}
break;
case ACTOR_MARIO_RACEWAY_SIGN:
case ACTOR_MARIO_SIGN:
if (!(player->effects & BOO_EFFECT)) {
func_8029F1F8(player, actor);
}
@ -3498,21 +3470,21 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
}
}
void func_802A14BC(f32 arg0, f32 arg1, f32 arg2) {
Vec3f sp34;
Vec3f sp28;
Vec3s sp20;
s16 temp_a0;
void func_802A14BC(f32 x, f32 y, f32 z) {
Vec3f pos;
Vec3f velocity;
Vec3s rot;
s16 id;
if (gModeSelection == TIME_TRIALS) { return; }
vec3s_set(sp20, 0, 0, 0);
vec3f_set(sp28, 0, 0, 0);
sp34[0] = arg0;
sp34[1] = arg1;
sp34[2] = arg2;
temp_a0 = addActorToEmptySlot(sp34, sp20, sp28, 43);
D_802BA05C = &gActorList[temp_a0];
vec3s_set(rot, 0, 0, 0);
vec3f_set(velocity, 0, 0, 0);
pos[0] = x;
pos[1] = y;
pos[2] = z;
id = addActorToEmptySlot(pos, rot, velocity, ACTOR_HOT_AIR_BALLOON_ITEM_BOX);
gActorHotAirBalloonItemBox = &gActorList[id];
}
void update_actor_item_box_hot_air_balloon(struct ItemBox *itemBox) {
@ -3602,14 +3574,14 @@ void func_802A171C(Camera *camera, struct FakeItemBox *fakeItemBox) {
someRot[0] = 0;
someRot[1] = fakeItemBox->rot[1];
someRot[2] = 0;
func_802B5F74(someMatrix2, fakeItemBox->pos, someRot);
mtxf_pos_rotation_xyz(someMatrix2, fakeItemBox->pos, someRot);
mtxf_scale(someMatrix2, fakeItemBox->sizeScaling);
if (fakeItemBox->state != 2) {
if (!render_set_position(someMatrix2, 0)) { return; }
gSPDisplayList(gDisplayListHead++, common_model_fake_itembox);
func_802B5F74(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
mtxf_pos_rotation_xyz(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
mtxf_scale(someMatrix2, fakeItemBox->sizeScaling);
if (!render_set_position(someMatrix2, 0)) { return; }
@ -3634,7 +3606,7 @@ void func_802A171C(Camera *camera, struct FakeItemBox *fakeItemBox) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetBlendMask(gDisplayListHead++, 0xFF);
thing = fakeItemBox->someTimer;
func_802B5F74(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
mtxf_pos_rotation_xyz(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
if (thing < 10.0f) {
someMultiplier = 1.0f;
} else {
@ -3736,28 +3708,28 @@ void func_802A1EA0(Camera *camera, struct ItemBox *item_box) {
someVec2[0] = item_box->pos[0];
someVec2[1] = item_box->resetDistance + 2.0f;
someVec2[2] = item_box->pos[2];
func_802B5F74(someMatrix1, someVec2, someRot);
mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
if (!render_set_position(someMatrix1, 0)) { return; }
gSPDisplayList(gDisplayListHead++, D_0D002EE8);
someRot[1] = item_box->rot[1] * 2;
someVec2[1] = item_box->pos[1];
func_802B5F74(someMatrix1, someVec2, someRot);
mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
if (!render_set_position(someMatrix1, 0)) { return; }
gSPDisplayList(gDisplayListHead++, itemBoxQuestionMarkModel);
}
if (item_box->state == 5) {
func_802B5F74(someMatrix1, item_box->pos, item_box->rot);
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
if (!render_set_position(someMatrix1, 0)) { return; }
gSPDisplayList(gDisplayListHead++, itemBoxQuestionMarkModel);
}
if (item_box->state != 3) {
func_802B5F74(someMatrix1, item_box->pos, item_box->rot);
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
if (!render_set_position(someMatrix1, 0)) { return; }
@ -3782,7 +3754,7 @@ void func_802A1EA0(Camera *camera, struct ItemBox *item_box) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetBlendMask(gDisplayListHead++, 0xFF);
thing = item_box->someTimer;
func_802B5F74(someMatrix1, item_box->pos, item_box->rot);
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
if (thing < 10.0f) {
someMultiplier = 1.0f;
} else {
@ -3858,7 +3830,7 @@ void func_802A1EA0(Camera *camera, struct ItemBox *item_box) {
}
}
void func_802A269C(Camera *arg0, struct Actor *arg1) {
void render_actor_wario_sign(Camera *arg0, struct Actor *arg1) {
Mat4 sp38;
f32 unk = is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 16000000.0f);
@ -3866,7 +3838,7 @@ void func_802A269C(Camera *arg0, struct Actor *arg1) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(sp38, arg1->pos, arg1->rot);
mtxf_pos_rotation_xyz(sp38, arg1->pos, arg1->rot);
if (render_set_position(sp38, 0) != 0) {
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_dl_sign);
@ -3902,7 +3874,7 @@ void func_802A27A0(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg, u16 arg3
sp5C[0] = 0;
sp5C[1] = egg->eggRot;
sp5C[2] = 0;
func_802B5F74(sp60, egg->pos, sp5C);
mtxf_pos_rotation_xyz(sp60, egg->pos, sp5C);
if (render_set_position(sp60, 0) == 0) { return; }
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
@ -3919,7 +3891,7 @@ void func_802A27A0(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg, u16 arg3
}
}
void func_802A29BC(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
void render_actor_mario_sign(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
Mat4 sp40;
f32 unk;
s16 temp = arg2->flags;
@ -3930,7 +3902,7 @@ void func_802A29BC(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
if (!(unk < 0.0f)) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
func_802B5F74(sp40, arg2->pos, arg2->rot);
mtxf_pos_rotation_xyz(sp40, arg2->pos, arg2->rot);
if (render_set_position(sp40, 0) != 0) {
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_dl_sign);
}
@ -3943,7 +3915,7 @@ void func_802A2AD0(Camera *arg0, struct RailroadCrossing *rr_crossing) {
f32 unk = is_within_render_distance(arg0->pos, rr_crossing->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
if (!(unk < 0.0f)) {
func_802B5F74(sp40, rr_crossing->pos, rr_crossing->rot);
mtxf_pos_rotation_xyz(sp40, rr_crossing->pos, rr_crossing->rot);
if (render_set_position(sp40, 0) != 0) {
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
@ -3980,7 +3952,7 @@ void func_802A2C78(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
func_8029794C(arg2->pos, arg2->rot, 2.0f);
}
func_802B5F74(sp68, arg2->pos, spA8);
mtxf_pos_rotation_xyz(sp68, arg2->pos, spA8);
if (render_set_position(sp68, 0) != 0) {
gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);
@ -4014,7 +3986,7 @@ void func_802A2C78(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
}
void func_802A2F34(struct UnkStruct_800DC5EC *arg0) {
Camera *temp_s1 = arg0->camera;
Camera *camera = arg0->camera;
struct Actor *actor;
s32 i;
D_8015F8DC = 0;
@ -4028,13 +4000,13 @@ void func_802A2F34(struct UnkStruct_800DC5EC *arg0) {
switch(actor->type) {
case ACTOR_FAKE_ITEM_BOX:
func_802A171C(temp_s1, (struct FakeItemBox *) actor);
func_802A171C(camera, (struct FakeItemBox *) actor);
break;
case ACTOR_ITEM_BOX:
func_802A1EA0(temp_s1, (struct ItemBox *) actor);
func_802A1EA0(camera, (struct ItemBox *) actor);
break;
case ACTOR_HOT_AIR_BALLOON_ITEM_BOX:
func_802A1EA0(temp_s1, (struct ItemBox *) actor);
func_802A1EA0(camera, (struct ItemBox *) actor);
break;
}
}
@ -4138,13 +4110,13 @@ void render_course_actors(struct UnkStruct_800DC5EC *arg0) {
render_actor_piranha_plant(camera, D_801502C0, (struct PiranhaPlant *) actor);
break;
case ACTOR_TRAIN_ENGINE:
func_8029B8E8(camera, (struct TrainCar *) actor);
render_actor_train_engine(camera, (struct TrainCar *) actor);
break;
case ACTOR_TRAIN_TENDER:
func_8029BFB0(camera, (struct TrainCar *) actor);
render_actor_train_tender(camera, (struct TrainCar *) actor);
break;
case ACTOR_TRAIN_PASSENGER_CAR:
func_8029C3CC(camera, (struct TrainCar *) actor);
render_actor_passenger_car(camera, (struct TrainCar *) actor);
break;
case ACTOR_COW:
render_actor_cow(camera, D_801502C0, actor);
@ -4152,17 +4124,17 @@ void render_course_actors(struct UnkStruct_800DC5EC *arg0) {
case 0x14:
func_8029AC18(camera, D_801502C0, actor);
break;
case ACTOR_MARIO_RACEWAY_SIGN:
func_802A29BC(camera, D_801502C0, actor);
case ACTOR_MARIO_SIGN:
render_actor_mario_sign(camera, D_801502C0, actor);
break;
case ACTOR_WARIO_STADIUM_SIGN:
func_802A269C(camera, actor);
case ACTOR_WARIO_SIGN:
render_actor_wario_sign(camera, actor);
break;
case ACTOR_PALM_TREE:
func_802A2C78(camera, D_801502C0, actor);
break;
case ACTOR_PADDLE_WHEEL_BOAT:
func_8029AE1C(camera, (struct PaddleWheelBoat *) actor, D_801502C0, pathCounter);
case ACTOR_PADDLE_BOAT:
render_actor_paddle_boat(camera, (struct PaddleWheelBoat *) actor, D_801502C0, pathCounter);
break;
case ACTOR_BOX_TRUCK:
func_8029B06C(camera, actor);
@ -4223,8 +4195,8 @@ void update_course_actors(void) {
case ACTOR_BANANA:
update_actor_banana((struct BananaActor *) actor);
break;
case ACTOR_PADDLE_WHEEL_BOAT:
update_actor_paddle_wheel((struct PaddleWheelBoat *) actor);
case ACTOR_PADDLE_BOAT:
update_actor_paddle_boat((struct PaddleWheelBoat *) actor);
break;
case ACTOR_TRAIN_ENGINE:
update_actor_train_engine((struct TrainCar *) actor);
@ -4256,10 +4228,10 @@ void update_course_actors(void) {
case ACTOR_TRIPLE_RED_SHELL:
update_actor_triple_shell((TripleShellParent *) actor, ACTOR_RED_SHELL);
break;
case ACTOR_MARIO_RACEWAY_SIGN:
case ACTOR_MARIO_SIGN:
update_actor_mario_raceway_sign(actor);
break;
case ACTOR_WARIO_STADIUM_SIGN:
case ACTOR_WARIO_SIGN:
update_actor_wario_stadium_sign(actor);
break;
case ACTOR_RAILROAD_CROSSING:

View File

@ -21,7 +21,7 @@ void render_actor_cow(Camera*, Mat4, struct Actor*);
void update_actor_yoshi_valley_egg(struct YoshiValleyEgg*);
void update_actor_trees_cacti_shrubs(struct Actor*);
void update_actor_kiwano_fruit(struct KiwanoFruit*);
void update_actor_paddle_wheel(struct PaddleWheelBoat*);
void update_actor_paddle_boat(struct PaddleWheelBoat*);
void update_actor_train_engine(struct TrainCar*);
void update_actor_train_car1(struct TrainCar*);
void update_actor_train_car2(struct TrainCar*);
@ -53,14 +53,14 @@ void update_actor_wario_stadium_sign(struct Actor*);
void update_actor_railroad_crossing(struct RailroadCrossing*);
void update_actor_mario_raceway_sign(struct Actor*);
void func_8029AC18(Camera*, Mat4, struct Actor*);
void func_8029AE1C(Camera*, struct PaddleWheelBoat*, Mat4, u16);
void render_actor_paddle_boat(Camera*, struct PaddleWheelBoat*, Mat4, u16);
void func_8029B06C(Camera*, struct Actor*);
void func_8029B2E4(Camera*, struct Actor*);
void func_8029B4E0(Camera*, struct Actor*);
void func_8029B6EC(Camera*, struct Actor*);
void func_8029B8E8(Camera*, struct TrainCar*);
void func_8029BFB0(Camera*, struct TrainCar*);
void func_8029C3CC(Camera*, struct TrainCar*);
void render_actor_train_engine(Camera*, struct TrainCar*);
void render_actor_train_tender(Camera*, struct TrainCar*);
void render_actor_passenger_car(Camera*, struct TrainCar*);
void render_actor_falling_rock(Camera*, struct FallingRock*);
void place_piranha_plants(struct ActorSpawnData*);
void place_palm_trees(struct ActorSpawnData*);
@ -98,9 +98,9 @@ void update_actor_item_box_hot_air_balloon(struct ItemBox*);
void update_actor_item_box(struct ItemBox*);
void func_802A171C(Camera*, struct FakeItemBox*);
void func_802A1EA0(Camera*, struct ItemBox*);
void func_802A269C(Camera*, struct Actor*);
void render_actor_wario_sign(Camera*, struct Actor*);
void func_802A27A0(Camera*, Mat4, struct YoshiValleyEgg*, u16);
void func_802A29BC(Camera*, Mat4, struct Actor*);
void render_actor_mario_sign(Camera*, Mat4, struct Actor*);
void func_802A2AD0(Camera*, struct RailroadCrossing*);
void func_802A2C78(Camera*, Mat4, struct Actor*);
void func_802A2F34(struct UnkStruct_800DC5EC*);
@ -114,7 +114,7 @@ extern void func_800C99E0(Vec3f, s32);
extern u8 *D_802BA050;
extern u8 *D_802BA054;
extern u8 *D_802BA058;
extern struct Actor *D_802BA05C;
extern struct Actor *gActorHotAirBalloonItemBox;
extern s8 gTLUTRedShell[]; // tlut 256
extern u16 D_802BA260; // Box Truck sub-type?
@ -124,7 +124,6 @@ extern s16 gCurrentCourseId;
extern u16 isCrossingTriggeredByIndex[];
extern Lights1 D_800DC610[];
extern s8 common_tlut_trees_import[];
extern Gfx D_0D005338[];
extern Gfx D_0D005368[];
extern Gfx D_0D007B20[];

View File

@ -12,7 +12,7 @@
#include "actors.h"
#include "actors_extended.h"
#include "audio/external.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "effects.h"
#include "sounds.h"

View File

@ -78,7 +78,7 @@ f32 func_802B51E8(Vec3f arg0, Vec3f arg1) {
return (sub_x * sub_x) + (sub_y * sub_y) + sub_z + sub_z;
}
s32 get_angle_between_points(Vec3f arg0, Vec3f arg1) {
s32 get_angle_between_two_vectors(Vec3f arg0, Vec3f arg1) {
f32 temp_v1;
f32 temp_v2;
temp_v1 = arg1[0] - arg0[0];
@ -87,7 +87,7 @@ s32 get_angle_between_points(Vec3f arg0, Vec3f arg1) {
return atan2s(temp_v1, temp_v2);
}
// get_angle_between_points
// get_angle_between_two_vectors
u32 func_802B5258(Vec3f arg0, Vec3s arg1) {
f32 temp_v1;
f32 temp_v2;
@ -483,7 +483,7 @@ void mtxf_scale(Mat4 mat, f32 coef) {
}
// look like create a translation and rotation matrix with arg1 position and arg2 rotation
void func_802B5F74(Mat4 arg0, Vec3f arg1, Vec3s arg2) {
void mtxf_pos_rotation_xyz(Mat4 out, Vec3f pos, Vec3s orientation) {
f32 sine1;
f32 cosine1;
f32 sine2;
@ -491,28 +491,28 @@ void func_802B5F74(Mat4 arg0, Vec3f arg1, Vec3s arg2) {
f32 sine3;
f32 cosine3;
sine1 = sins(arg2[0]);
cosine1 = coss(arg2[0]);
sine2 = sins(arg2[1]);
cosine2 = coss(arg2[1]);
sine3 = sins(arg2[2]);
cosine3 = coss(arg2[2]);
arg0[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3);
arg0[1][0] = (-cosine2 * sine3) + ((sine1 * sine2) * cosine3);
arg0[2][0] = cosine1 * sine2;
arg0[3][0] = arg1[0];
arg0[0][1] = cosine1 * sine3;
arg0[1][1] = cosine1 * cosine3;
arg0[2][1] = -sine1;
arg0[3][1] = arg1[1];
arg0[0][2] = (-sine2 * cosine3) + ((sine1 * cosine2) * sine3);
arg0[1][2] = (sine2 * sine3) + ((sine1 * cosine2) * cosine3);
arg0[2][2] = cosine1 * cosine2;
arg0[3][2] = arg1[2];
arg0[0][3] = 0.0f;
arg0[1][3] = 0.0f;
arg0[2][3] = 0.0f;
arg0[3][3] = 1.0f;
sine1 = sins(orientation[0]);
cosine1 = coss(orientation[0]);
sine2 = sins(orientation[1]);
cosine2 = coss(orientation[1]);
sine3 = sins(orientation[2]);
cosine3 = coss(orientation[2]);
out[0][0] = (cosine2 * cosine3) + ((sine1 * sine2) * sine3);
out[1][0] = (-cosine2 * sine3) + ((sine1 * sine2) * cosine3);
out[2][0] = cosine1 * sine2;
out[3][0] = pos[0];
out[0][1] = cosine1 * sine3;
out[1][1] = cosine1 * cosine3;
out[2][1] = -sine1;
out[3][1] = pos[1];
out[0][2] = (-sine2 * cosine3) + ((sine1 * cosine2) * sine3);
out[1][2] = (sine2 * sine3) + ((sine1 * cosine2) * cosine3);
out[2][2] = cosine1 * cosine2;
out[3][2] = pos[2];
out[0][3] = 0.0f;
out[1][3] = 0.0f;
out[2][3] = 0.0f;
out[3][3] = 1.0f;
}
UNUSED void func_802B60B4(Mat4 arg0, Vec3s arg1, Vec3s arg2) {
@ -1143,7 +1143,7 @@ f32 is_within_render_distance(Vec3f cameraPos, Vec3f objectPos, u16 orientationY
return -1.0f;
}
angleObject = get_angle_between_points(cameraPos, objectPos);
angleObject = get_angle_between_two_vectors(cameraPos, objectPos);
minus_fov_angle = (orientationY - extended_fov);
plus_fov_angle = (orientationY + extended_fov);

View File

@ -19,7 +19,7 @@ double fabs(double x);
s32 func_802B4F60(s32, Vec3f, s32, f32, f32);
s32 render_set_position(Mat4, s32);
f32 func_802B51E8(Vec3f, Vec3f);
s32 get_angle_between_points(Vec3f, Vec3f);
s32 get_angle_between_two_vectors(Vec3f, Vec3f);
u32 func_802B5258(Vec3f, Vec3s);
void vec3f_set(Vec3f, f32, f32, f32);
void vec3s_set(Vec3s, s16, s16, s16);
@ -40,7 +40,7 @@ void func_802B5CAC(s16, s16, Vec3f);
void func_802B5D30(s16, s16, s32);
void func_802B5D64(uintptr_t, s16, s16, s32);
void mtxf_scale(Mat4, f32);
void func_802B5F74(Mat4, Vec3f, Vec3s);
void mtxf_pos_rotation_xyz(Mat4, Vec3f, Vec3s);
void mtxf_translate_vec3f_mat3(Vec3f, Mat3);
void mtxf_translate_vec3f_mat4(Vec3f, Mat4);
void func_802B64C4(Vec3f, s16);

View File

@ -11,7 +11,7 @@
#include "main.h"
#include "code_800029B0.h"
#include "code_80057C60.h"
#include "code_80071F00.h"
#include "update_objects.h"
#include "code_80091750.h"
#include "code_80005FD0.h"
#include "spawn_players.h"
@ -670,7 +670,7 @@ void func_8028F474(void) {
}
case 1:
case 2:
func_800097E0();
update_vehicles();
break;
}
}

View File

@ -199,7 +199,7 @@ void func_802911C4(void) {
}
}
void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 arg1) {
void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) {
UNUSED s32 pad;
Player *player = arg0->player;
Mat4 matrix;
@ -212,22 +212,22 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 arg1) {
pathCounter = (u16) arg0->pathCounter;
cameraRot = (u16) arg0->camera->rot[1];
playerDirection = arg0->playerDirection;
switch (arg1) {
case 0:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[0]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
switch (playerId) {
case PLAYER_ONE:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[PLAYER_ONE]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[PLAYER_ONE]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
break;
case 1:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[1]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
case PLAYER_TWO:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[PLAYER_TWO]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[PLAYER_TWO]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
break;
case 2:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[2]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
case PLAYER_THREE:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[PLAYER_THREE]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[PLAYER_THREE]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
break;
case 3:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[3]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[3]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
case PLAYER_FOUR:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[PLAYER_FOUR]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[PLAYER_FOUR]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
break;
}
mtxf_identity(matrix);

View File

@ -766,7 +766,7 @@ void func_802A5760(void) {
}
}
void func_802A59A4(void) {
void render_player_one_1p_screen(void) {
Camera *camera = &cameras[0];
UNUSED s32 pad[4];
u16 perspNorm;
@ -810,23 +810,23 @@ void func_802A59A4(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5EC);
func_80058090(0);
render_object(RENDER_SCREEN_MODE_1P_PLAYER_ONE);
render_players_on_screen_one();
func_8029122C(D_800DC5EC, 0);
func_8029122C(D_800DC5EC, PLAYER_ONE);
func_80021B0C();
func_802A2F34(D_800DC5EC);
func_80058538(0);
render_player_snow_effect(RENDER_SCREEN_MODE_1P_PLAYER_ONE);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(0);
func_80058C20(RENDER_SCREEN_MODE_1P_PLAYER_ONE);
}
func_80093A5C(0);
func_80093A5C(RENDER_SCREEN_MODE_1P_PLAYER_ONE);
if (D_800DC5B8 != 0) {
func_80058DB4(0);
render_hud(RENDER_SCREEN_MODE_1P_PLAYER_ONE);
}
}
void func_802A5CB4(void) {
void render_player_one_2p_screen_vertical(void) {
Camera *camera = &cameras[0];
UNUSED s32 pad[2];
u16 perspNorm;
@ -866,24 +866,24 @@ void func_802A5CB4(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5EC);
func_80058090(1);
render_object(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE);
render_players_on_screen_one();
func_8029122C(D_800DC5EC, 0);
func_8029122C(D_800DC5EC, PLAYER_ONE);
func_80021B0C();
func_802A2F34(D_800DC5EC);
func_80058538(1);
render_player_snow_effect(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(1);
func_80058C20(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE);
}
func_80093A5C(1);
func_80093A5C(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE);
if (D_800DC5B8 != 0) {
func_80058DB4(1);
render_hud(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_ONE);
}
D_8015F788 += 1;
}
void func_802A5FAC(void) {
void render_player_two_2p_screen_vertical(void) {
Camera *camera = &cameras[1];
UNUSED s32 pad[2];
u16 perspNorm;
@ -920,24 +920,24 @@ void func_802A5FAC(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5F0);
func_80058090(2);
render_object(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO);
render_players_on_screen_two();
func_8029122C(D_800DC5F0, 1);
func_8029122C(D_800DC5F0, PLAYER_TWO);
func_80021C78();
func_802A2F34(D_800DC5F0);
func_80058BF4();
func_80058538(2);
render_player_snow_effect(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO);
if (D_800DC5B8 != 0) {
func_80058C20(2);
func_80058C20(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO);
}
func_80093A5C(2);
func_80093A5C(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO);
if (D_800DC5B8 != 0) {
func_80058DB4(2);
render_hud(RENDER_SCREEN_MODE_2P_HORIZONTAL_PLAYER_TWO);
}
D_8015F788 += 1;
}
void func_802A62A4(void) {
void render_player_one_2p_screen_horizontal(void) {
Camera *camera = &cameras[0];
UNUSED s32 pad[2];
u16 perspNorm;
@ -978,24 +978,24 @@ void func_802A62A4(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5EC);
func_80058090(3);
render_object(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE);
render_players_on_screen_one();
func_8029122C(D_800DC5EC, 0);
func_8029122C(D_800DC5EC, PLAYER_ONE);
func_80021B0C();
func_802A2F34(D_800DC5EC);
func_80058538(3);
render_player_snow_effect(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(3);
func_80058C20(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE);
}
func_80093A5C(3);
func_80093A5C(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE);
if (D_800DC5B8 != 0) {
func_80058DB4(3);
render_hud(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_ONE);
}
D_8015F788 += 1;
}
void func_802A65B8(void) {
void render_player_two_2p_screen_horizontal(void) {
Camera *camera = &cameras[1];
UNUSED s32 pad[2];
u16 perspNorm;
@ -1035,24 +1035,24 @@ void func_802A65B8(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5F0);
func_80058090(4);
render_object(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO);
render_players_on_screen_two();
func_8029122C(D_800DC5F0, 1);
func_8029122C(D_800DC5F0, PLAYER_TWO);
func_80021C78();
func_802A2F34(D_800DC5F0);
func_80058538(4);
render_player_snow_effect(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(4);
func_80058C20(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO);
}
func_80093A5C(4);
func_80093A5C(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO);
if (D_800DC5B8 != 0) {
func_80058DB4(4);
render_hud(RENDER_SCREEN_MODE_2P_VERTICAL_PLAYER_TWO);
}
D_8015F788 += 1;
}
void func_802A68CC(void) {
void render_player_one_3p_4p_screen(void) {
Camera *camera = camera1;
UNUSED s32 pad[2];
u16 perspNorm;
@ -1089,24 +1089,24 @@ void func_802A68CC(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5EC);
func_80058090(8);
render_object(RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE);
render_players_on_screen_one();
func_8029122C(D_800DC5EC, 0);
func_8029122C(D_800DC5EC, PLAYER_ONE);
func_80021B0C();
func_802A2F34(D_800DC5EC);
func_80058538(8);
render_player_snow_effect(RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(8);
func_80058C20(RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE);
}
func_80093A5C(8);
func_80093A5C(RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE);
if (D_800DC5B8 != 0) {
func_80058DB4(8);
render_hud(RENDER_SCREEN_MODE_3P_4P_PLAYER_ONE);
}
D_8015F788 += 1;
}
void func_802A6BB0(void) {
void render_player_two_3p_4p_screen(void) {
Camera *camera = camera2;
UNUSED s32 pad[2];
u16 perspNorm;
@ -1143,24 +1143,24 @@ void func_802A6BB0(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5F0);
func_80058090(9);
render_object(RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO);
render_players_on_screen_two();
func_8029122C(D_800DC5F0, 1);
func_8029122C(D_800DC5F0, PLAYER_TWO);
func_80021C78();
func_802A2F34(D_800DC5F0);
func_80058538(9);
render_player_snow_effect(RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(9);
func_80058C20(RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO);
}
func_80093A5C(9);
func_80093A5C(RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO);
if (D_800DC5B8 != 0) {
func_80058DB4(9);
render_hud(RENDER_SCREEN_MODE_3P_4P_PLAYER_TWO);
}
D_8015F788 += 1;
}
void func_802A6E94(void) {
void render_player_three_3p_4p_screen(void) {
Camera *camera = camera3;
UNUSED s32 pad[2];
u16 perspNorm;
@ -1198,24 +1198,24 @@ void func_802A6E94(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5F4);
func_80058090(10);
render_object(RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE);
render_players_on_screen_three();
func_8029122C(D_800DC5F4, 2);
func_8029122C(D_800DC5F4, PLAYER_THREE);
func_80021D40();
func_802A2F34(D_800DC5F4);
func_80058538(10);
render_player_snow_effect(RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(10);
func_80058C20(RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE);
}
func_80093A5C(10);
func_80093A5C(RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE);
if (D_800DC5B8 != 0) {
func_80058DB4(10);
render_hud(RENDER_SCREEN_MODE_3P_4P_PLAYER_THREE);
}
D_8015F788 += 1;
}
void func_802A7178(void) {
void render_player_four_3p_4p_screen(void) {
Camera *camera = camera4;
UNUSED s32 pad[2];
u16 perspNorm;
@ -1227,9 +1227,9 @@ void func_802A7178(void) {
func_802A5760();
if (gPlayerCountSelection1 == 3) {
func_80093A5C(11);
func_80093A5C(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
if (D_800DC5B8 != 0) {
func_80058DB4(11);
render_hud(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
}
D_8015F788 += 1;
return;
@ -1261,19 +1261,19 @@ void func_802A7178(void) {
render_set_position(matrix, 0);
}
render_course_actors(D_800DC5F8);
func_80058090(11);
render_object(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
render_players_on_screen_four();
func_8029122C(D_800DC5F8, 3);
func_8029122C(D_800DC5F8, PLAYER_FOUR);
func_80021DA8();
func_802A2F34(D_800DC5F8);
func_80058538(11);
render_player_snow_effect(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
func_80058BF4();
if (D_800DC5B8 != 0) {
func_80058C20(11);
func_80058C20(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
}
func_80093A5C(0xB);
func_80093A5C(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
if (D_800DC5B8 != 0) {
func_80058DB4(11);
render_hud(RENDER_SCREEN_MODE_3P_4P_PLAYER_FOUR);
}
D_8015F788 += 1;
}

View File

@ -40,15 +40,15 @@ void func_802A54A8(void);
void func_802A5590(void);
void func_802A5678(void);
void func_802A5760(void);
void func_802A59A4(void);
void func_802A5CB4(void);
void func_802A5FAC(void);
void func_802A62A4(void);
void func_802A65B8(void);
void func_802A68CC(void);
void func_802A6BB0(void);
void func_802A6E94(void);
void func_802A7178(void);
void render_player_one_1p_screen(void);
void render_player_one_2p_screen_vertical(void);
void render_player_two_2p_screen_vertical(void);
void render_player_one_2p_screen_horizontal(void);
void render_player_two_2p_screen_horizontal(void);
void render_player_one_3p_4p_screen(void);
void render_player_two_3p_4p_screen(void);
void render_player_three_3p_4p_screen(void);
void render_player_four_3p_4p_screen(void);
void func_802A74BC(void);
void copy_framebuffer(s32, s32, s32, s32, u16*, u16*);
void func_802A7728(void);

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#ifndef hud_renderer_H
#define hud_renderer_H
#ifndef RENDER_OBJECTS_H
#define RENDER_OBJECTS_H
#include "common_structs.h"
#include "main.h"
@ -22,17 +22,17 @@ void func_800437F8(s32, s32, u16, f32, Vtx*, s32);
void func_800438C4(s32, s32, u16, f32, Vtx*, s32);
void func_8004398C(s32, s32, u16, f32, Vtx*, s32);
s32 func_80043A54(s32);
void func_80043A84(u8*, s32, s32);
void func_80043C28(u8*, s32, s32);
void func_80043D50(u8*, s32, s32);
void func_80043EF8(u8*, s32, s32, s32);
void load_texture_block_rgba32_nomirror(u8*, s32, s32);
void load_texture_tile_rgba32_nomirror(u8*, s32, s32);
void load_texture_block_rgba16_mirror(u8*, s32, s32);
void load_texture_block_rgba16_nomirror(u8*, s32, s32, s32);
void func_800440B8(u8*, s32, s32);
void func_800441E0(u8*, s32, s32);
void func_80044388(u8*, s32, s32);
void func_800444B0(u8*, s32, s32);
void func_80044658(u8*, s32, s32);
void func_8004477C(u8*, s32, s32);
void load_texture_tile_rgba16_nomirror(u8*, s32, s32);
void load_texture_block_ia16_nomirror(u8*, s32, s32);
void load_texture_tile_ia16_nomirror(u8*, s32, s32);
void load_texture_block_ia8_nomirror(u8*, s32, s32);
void load_texture_tile_ia8_nomirror(u8*, s32, s32);
void load_texture_block_i8_nomirror(u8*, s32, s32);
void func_80044AB8(u8*, s32, s32);
void func_80044BF8(u8*, s32, s32);
@ -74,7 +74,7 @@ void func_80046CDC(s32, s32, u16, f32, u8*);
void func_80046D40(Vec3f, Vec3su, f32, u8*);
void func_80046D90(s32, s32, u16, f32, u8*);
void func_80046DF4(s32, s32, u16, f32, s32, u8*);
void func_80046E60(u8*, u8*, s32, s32);
void load_texture_and_tlut(u8*, u8*, s32, s32);
void func_80046F60(u8*, u8*, s32, s32, s32);
void func_80047068(u8*, u8*, Vtx*, s32, s32, s32, s32);
@ -98,7 +98,7 @@ void func_80047F40(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32);
void func_80047FBC(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32);
void func_80048038(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32);
void func_800480B4(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32);
void draw_2d_texture_at(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32);
void func_80048130(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32, s32, s32);
void func_800481B4(Vec3f, Vec3su, f32, u8*, u8*, Vtx*, s32, s32, s32);
void func_80048228(Vec3f, Vec3su, f32, s32, u8*, u8*, Vtx*, s32, s32, s32, s32);
@ -189,7 +189,7 @@ void func_8004B02C(void);
void func_8004B05C(u8*);
void func_8004B138(s32, s32, s32, s32);
void func_8004B180(s32, s32, s32, s32);
void func_8004B1C8(s32, s32, s32, s32, s32, s32, s32);
void set_color_render(s32, s32, s32, s32, s32, s32, s32);
void func_8004B254(s32, s32, s32);
void set_transparency(s32);
void func_8004B310(s32);
@ -214,7 +214,7 @@ void func_8004C024(s16, s16, s16, u16, u16, u16, u16);
void func_8004C148(s16, s16, s16, u16, u16, u16, u16);
void func_8004C354(void);
void func_8004C35C(void);
void func_8004C364(s32, s32, u32, u32, u8*);
void draw_hud_2d_texture(s32, s32, u32, u32, u8*);
void func_8004C450(s32, s32, u32, u32, u8*);
void func_8004C53C(s32, s32, u32, u32, u8*);
void func_8004C628(s32, s32, u32, u32, u8*);
@ -222,15 +222,15 @@ void func_8004C8D4(s16, s16);
void func_8004C91C(s32, s32, u8*, s32, s32, s32);
void func_8004C9D8(s32, s32, s32, u8*, s32, s32, s32, s32);
void func_8004CA58(s32, s32, f32, u8*, s32, s32);
void func_8004CAD0(s32, s32, u8*);
void func_8004CB00(s32, s32, u8*);
void func_8004CB30(s32, s32, u8*);
void func_8004CB60(s32, s32, u8*);
void func_8004CB90(s32, s32, u8*);
void draw_hud_2d_texture_8x8(s32, s32, u8*);
void draw_hud_2d_texture_8x16(s32, s32, u8*);
void draw_hud_2d_texture_16x16(s32, s32, u8*);
void draw_hud_2d_texture_32x8(s32, s32, u8*);
void draw_hud_2d_texture_32x16(s32, s32, u8*);
void func_8004CBC0(s32, s32, f32, u8*);
void func_8004CBF4(s32, s32, u8*);
void draw_hud_2d_texture_32x32(s32, s32, u8*);
void func_8004CC24(s32, s32, u8*);
void func_8004CC54(s32, s32, u8*);
void draw_hud_2d_texture_40x32(s32, s32, u8*);
void func_8004CC84(s32, s32, u8*);
void func_8004CCB4(s32, s32, u8*);
void func_8004CCE4(s32, s32, f32, u8*);
@ -282,9 +282,9 @@ void func_8004E568(s32, s32, u8*, u8*);
void func_8004E59C(s32, s32, s32, u8*, u8*);
void func_8004E5D8(s32, s32, u8*, u8*);
void func_8004E604(s32, s32, u8*, u8*);
void func_8004E638(s32);
void draw_item_window(s32);
void func_8004E6C4(s32);
void func_8004E78C(s32);
void draw_simplified_lap_count(s32);
void func_8004E800(s32);
void func_8004E998(s32);
void func_8004EB30(s32);
@ -300,9 +300,9 @@ void func_8004F3E4(s32);
s32 func_8004F674(s32*, s32);
void print_timer(s32, s32, s32);
void func_8004F950(s32, s32, s32, s32);
void func_8004F9CC(s32, s32, s32);
void func_8004FA78(s32);
void func_8004FC78(s16, s16, s8);
void print_timer_rainbow(s32, s32, s32);
void render_hud_timer(s32);
void draw_lap_count(s16, s16, s8);
void func_8004FDB4(f32, f32, s16, s16, s16, s32, s32, s32, s32);
void func_80050320(void);
@ -313,8 +313,8 @@ void func_80050C68(void);
void func_80050E34(s32, s32);
void func_800514BC(void);
void func_80051638(s32);
void func_800517C8(void);
void render_object_leaf_particle(s32);
void render_object_snowflakes_particles(void);
void func_800518F8(s32, s16, s16);
void func_800519D4(s32, s16, s16);
void func_80051ABC(s16, s32);
@ -328,35 +328,34 @@ void func_80052080(void);
void func_800520C0(s32);
void func_8005217C(s32);
void func_800523B8(s32, s32, u32);
void func_800524B4(s32);
void func_800524B4(s32);
void func_80052590(s32);
void func_800527D8(s32);
void render_object_boos(s32);
void render_object_bat(s32);
void render_object_trash_bin(s32);
void func_8005285C(s32);
void func_800528EC(s32);
void func_80052C60(s32);
void render_ice_block(s32);
void func_80052D70(s32);
void func_80052E30(s32);
void func_80052F20(s32);
void render_object_snowmans_list_2(s32);
void func_8005309C(s32);
void func_8005327C(s32);
void func_800532A4(s32);
void render_object_snowmans_list_1(s32);
void render_object_snowmans(s32);
void render_lakitu(s32);
void func_800534A4(s32);
void func_800534E8(s32);
void func_800536C8(s32);
void func_80053870(s32);
void render_object_thwomps_model(s32);
void render_object_thwomps(s32);
void func_80053D74(s32, s32, s32);
void func_80053E6C(s32);
void func_800540CC(s32, s32);
void func_800541BC(s32);
void func_80054324(s32, s32);
void func_80054414(s32);
void func_8005457C(s32, s32);
void func_80054664(s32);
void render_object_train_smoke_particle(s32, s32);
void render_object_train_smoke_particles(s32);
void render_object_paddle_boat_smoke_particle(s32, s32);
void render_object_paddle_boat_smoke_particles(s32);
void render_object_bowser_flame_particle(s32, s32);
void render_object_bowser_flame(s32);
void func_8005477C(s32, u8, Vec3f);
void func_80054938(s32);
void render_object_smoke_particles(s32);
void func_80054AFC(s32, Vec3f);
void func_80054BE8(s32);
void func_80054D00(s32, s32);
@ -364,28 +363,28 @@ void func_80054E10(s32);
void func_80054EB8(s32);
void func_80054F04(s32);
void func_800550A4(s32);
void render_object_moles(s32);
void func_80055164(s32);
void func_80055228(s32);
void func_800552BC(s32);
void func_80055380(s32);
void func_80055458(s32, s32);
void func_80055528(s32);
void render_object_seagulls(s32);
void draw_crabs(s32, s32);
void render_object_crabs(s32);
void func_800555BC(s32, s32);
void func_8005568C(s32);
void render_object_hedgehogs(s32);
void func_800557AC(void);
void func_800557B4(s32, u32, u32);
void func_8005592C(s32);
void render_object_train_penguins(s32);
void func_80055AB8(s32, s32);
void func_80055C38(s32);
void render_object_chain_chomps(s32);
void func_80055CCC(s32, s32);
void func_80055E68(s32);
void render_object_hot_air_balloon(s32);
void func_80055EF4(s32, s32);
void func_80055F48(s32);
void func_80055FA0(s32, s32);
void func_80056160(s32);
void func_80056188(s32);
void render_object_neon(s32);
void func_800562E4(s32, s32, s32);
void func_800563DC(s32, s32, s32);
void func_800568A0(s32, s32);
@ -393,7 +392,7 @@ void func_8005669C(s32, s32, s32);
void func_800569F4(s32);
void func_80056A40(s32, s32);
void func_80056A94(s32);
void func_80056AC0(s32);
void render_object_bomb_kart(s32);
void func_80056E24(s32, Vec3f);
void func_80056FCC(s32);

View File

@ -16,7 +16,7 @@
#include "buffers.h"
#include "waypoints.h"
#include "player_controller.h"
#include "hud_renderer.h"
#include "render_objects.h"
#include "common_textures.h"
#include "skybox_and_splitscreen.h"
#include "spawn_players.h"

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#ifndef CODE_80071F00_H
#define CODE_80071F00_H
#ifndef UPDATE_OBJECTS_H
#define UPDATE_OBJECTS_H
#include "code_80004740.h"
#include "common_structs.h"
@ -16,11 +16,11 @@ s32 add_unused_obj_index(s32*, s32*, s32);
void delete_object_wrapper(s32*);
void func_80072120(s32*, s32);
void func_80072180(void);
void set_object_flag_unk_054_true(s32, s32);
void set_object_flag_unk_054_false(s32, s32);
void set_object_flag_status_true(s32, s32);
void set_object_flag_status_false(s32, s32);
void func_80072214(s32, s32);
s32 is_obj_index_flag_unk_054_active(s32, s32);
s32 is_obj_index_flag_unk_054_inactive(s32, s32);
s32 is_obj_flag_status_active(s32, s32);
s32 is_obj_index_flag_status_inactive(s32, s32);
void func_800722A4(s32, s32);
void func_800722CC(s32, s32);
void func_800722F8(s32, s32);
@ -148,33 +148,33 @@ void func_80076958(s32);
void func_800769D8(s32);
void func_80076AEC(s32);
void func_80076B7C(void);
void update_particle_bowser_castle(void);
void func_80076C9C(s32, Vec3f, s16);
void func_80076D70(Vec3f, f32, s16);
void update_flame_particle(void);
void init_object_smoke_paticle(s32, Vec3f, s16);
void init_smoke_particle(Vec3f, f32, s16);
void func_80076DC4(s32);
void func_80076E14(s32);
void func_80076ED8(s32);
void func_80076F2C(void);
void func_80076FEC(s32, s32);
void func_800770F0(s32);
void init_object_smoke_particle(s32, s32);
void init_smoke_particles(s32);
void func_800773D8(f32*, s32);
void func_80077428(s32);
void func_80077450(s32);
void func_80077584(s32);
void func_80077640(void);
void init_leaf_particle(s32, Vec3f, s32);
s32 func_80077A54(Vec3f, s32);
void func_80077AB0(Vec3f, s32);
void init_object_leaf_particle(s32, Vec3f, s32);
s32 init_leaf_particle(Vec3f, s32);
void spawn_leaf(Vec3f, s32);
void func_80077B14(s32);
void func_80077B3C(s32);
void func_80077BCC(s32);
void func_80077C9C(void);
void update_leaf(void);
void func_80077E20(s32);
void func_80078220(s32);
void func_80078288(s32);
void func_800786EC(s32);
void func_80078790(void);
void func_80078838(void);
void update_snowflakes(void);
void func_800788F8(s32, u16, Camera*);
void func_800789AC(s32, Camera*, Vec4s*);
void func_80078C68(void);
@ -195,7 +195,7 @@ void func_8007A778(s32, Player*, Camera*);
void func_8007A884(void);
void func_8007A88C(s32);
void func_8007A910(s32);
void update_obj_laikitu(s32);
void update_object_lakitu(s32);
void func_8007AA44(s32);
void func_8007ABFC(s32, s32);
void consume_item(s32);
@ -209,13 +209,13 @@ void func_8007B34C(s32);
void func_8007BB9C(s32);
void func_8007BBBC(s32);
void func_8007BD04(s32);
void func_8007BDA8(void);
void update_cheep_cheep_race(void);
void init_var_cheep_cheep(s32);
void func_8007BEC8(s32);
void func_8007BFB0(s32);
void func_8007C280(void);
void func_8007C2F8(s32);
void func_8007C340(void);
void update_cheep_cheep_ending(void);
void update_cheep_cheep(s32);
void wrapper_update_boos(void);
void func_8007C360(s32, Camera*);
void func_8007C420(s32, Player*, Camera*);
void func_8007C4A4(s32);
@ -227,7 +227,7 @@ void func_8007C7B4(s32, s32);
void func_8007C91C(s32);
s32 func_8007C9F8(void);
void func_8007CA70(void);
void func_8007CC00(void);
void update_boos(void);
void func_8007CE0C(s32);
void func_8007CEDC(s32);
void func_8007D070(void);
@ -241,11 +241,11 @@ void func_8007D8D4(s32, s32);
void func_8007DA4C(s32);
void func_8007DA74(s32);
void func_8007DAF8(s32, s32);
void func_8007DB44(void);
void update_bat(void);
void func_8007DDC0(s32);
void init_bb_trash_bin(s32);
void func_8007E00C(s32);
void func_8007E1AC(void);
void update_trash_bin(void);
void func_8007E1F4(s32);
void func_8007E358(s32);
void func_8007E3EC(s32);
@ -297,16 +297,16 @@ void func_80081AFC(s32, s32);
void func_80081D34(s32);
void func_80081FF4(s32, s32);
void func_800821AC(s32, s32);
void func_800821FC(void);
void update_moles(void);
void func_8008241C(s32, s32);
void func_80082714(s32, s32);
void func_8008275C(s32);
void func_80082870(void);
void update_seagulls(void);
void init_ktb_crab(s32);
void func_80082B34(s32, s32);
void func_80082C30(s32);
void func_80082E18(s32);
void func_80082E5C(void);
void update_crabs(void);
void func_80082F1C(s32, s32);
void func_80083018(s32, s32);
void func_80083060(s32);
@ -315,7 +315,7 @@ void func_8008311C(s32, s32);
void func_80083248(s32);
void func_800833D0(s32, s32);
void func_80083474(s32);
void func_800834B8(void);
void update_hedgehogs(void);
void func_80083538(s32, Vec3f, s32, s32);
void func_800836F0(Vec3f);
void func_8008379C(s32);
@ -325,7 +325,7 @@ void func_80083A94(s32);
void func_80083B0C(s32);
void func_80083BE4(s32);
void func_80083C04(s32);
void func_80083D60(void);
void update_snowmen(void);
void func_80083F18(s32);
void func_80083FD0(s32, s32, s32);
void func_8008421C(s32, s32);
@ -339,13 +339,13 @@ void func_80085024(void);
void func_8008502C(s32, s32);
void func_80085080(s32);
void func_800850B0(s32, s32);
void func_800853DC(s32);
void init_hot_air_balloon(s32);
void func_80085534(s32);
void func_80085768(s32);
void func_800857C0(void);
void update_hot_air_balloon(void);
void func_80085878(s32, s32);
void func_800859C8(s32, s32);
void func_80085AA8(void);
void update_chain_chomps(void);
void func_80085BB4(s32);
void init_obj_neon_mushroom(s32);
void func_80085CA0(s32);
@ -355,7 +355,7 @@ void func_80085EF8(s32);
void func_80085F74(s32);
void func_80086074(s32, s32);
void func_80086110(s32, s32);
void update_obj_neon(s32, s32);
void update_object_neon(s32, s32);
void update_neon(void);
void func_8008629C(s32, s32);
void func_80086424(s32);
@ -376,7 +376,7 @@ extern Vtx D_800E4470[];
extern Vtx D_800E44B0[];
extern u8 *gItemWindowTLUTs[];
extern u8 *gItemWindowTextures[];
extern u8 *D_800E4570[];
extern u8 *gHudLapTextures[];
extern u8 *gPortraitTLUTs[];
extern u8 *gPortraitTextures[];

File diff suppressed because it is too large Load Diff

View File

@ -66,7 +66,7 @@ segments:
- [0x43D90, c, code_800431B0]
- [0x58840, c, code_80057C60]
- [0x6F5A0, c, code_8006E9C0]
- [0x72AE0, c, code_80071F00]
- [0x72AE0, c, update_objects]
- [0x87A50, c, code_80086E70]
- [0x8CDB0, c, effects]
- [0x920A0, c, code_800914A0]

View File

@ -65,7 +65,7 @@ segments:
- [0x43DB0, c, code_800431B0]
- [0x58860, c, code_80057C60]
- [0x6F5C0, c, code_8006E9C0]
- [0x72B00, c, code_80071F00]
- [0x72B00, c, update_objects]
- [0x87A70, c, code_80086E70]
- [0x8CDD0, c, effects]
- [0x920C0, c, code_800914A0]