Add bss render player and spawn player (#518)

* finish render_player

* finish normally spawn_player bss
This commit is contained in:
coco875 2023-12-30 23:46:05 +01:00 committed by GitHub
parent a38d338bf0
commit e5a215cb7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 139 additions and 265 deletions

View File

@ -2,189 +2,6 @@
.section .bss
glabel D_80164AB0
.skip 14
glabel D_80164ABE
.skip 2
glabel D_80164AC0
.skip 16
glabel D_80164AD0
.skip 32
glabel gMatrixEffectCount
.skip 20
glabel gPlayerPalette
.skip 4
glabel D_80164B08
.skip 4
glabel D_80164B0C
.skip 4
glabel gPlayerRedEffect
.skip 16
glabel gPlayerGreenEffect
.skip 16
glabel gPlayerBlueEffect
.skip 16
glabel gPlayerCyanEffect
.skip 16
glabel gPlayerMagentaEffect
.skip 16
glabel gPlayerYellowEffect
.skip 32
glabel D_80164B80
.skip 1184
glabel D_80165020
.skip 80
glabel D_80165070
.skip 96
glabel D_801650D0
.skip 64
glabel D_80165110
.skip 64
glabel D_80165150
.skip 64
glabel D_80165190
.skip 64
glabel D_801651D0
.skip 1
glabel D_801651D1
.skip 63
glabel D_80165210
.skip 32
glabel D_80165230
.skip 28
glabel D_8016524C
.skip 36
glabel D_80165270
.skip 16
glabel D_80165280
.skip 32
glabel D_801652A0
.skip 32
glabel D_801652C0
.skip 32
glabel D_801652E0
.skip 32
glabel D_80165300
.skip 16
glabel D_80165310
.skip 16
glabel D_80165320
.skip 16
glabel D_80165330
.skip 16
glabel D_80165340
.skip 128
glabel D_801653C0
.skip 32
glabel gPlayerIsThrottleActive
.skip 32
glabel D_80165400
.skip 32
glabel D_80165420
.skip 32
glabel D_80165440
.skip 32
glabel gIsPlayerTripleAButtonCombo
.skip 32
glabel D_80165480
.skip 32
glabel D_801654A0
.skip 32
glabel D_801654C0
.skip 32
glabel D_801654E0
.skip 32
glabel D_80165500
.skip 32
glabel D_80165520
.skip 32
glabel D_80165540
.skip 32
glabel D_80165560
.skip 14
glabel D_8016556E
.skip 2
glabel D_80165570
.skip 2
glabel D_80165572
.skip 2
glabel D_80165574
.skip 2
glabel D_80165576
.skip 2
glabel D_80165578
.skip 2
glabel D_8016557A
.skip 2
glabel D_8016557C
.skip 2
glabel D_8016557E
.skip 2
glabel D_80165580
.skip 2
glabel D_80165582
.skip 14
glabel D_80165590
.skip 4

View File

@ -377,17 +377,6 @@ typedef struct {
/* 0x0DD4 */ // s16 unk_DD4;
} Player; // size = 0xDD8
typedef struct {
s16 unk_00;
char unk_02[0xE];
s16 unk_10;
char unk_12[0xE];
s16 unk_20;
char unk_22[0xE];
s16 unk_30;
char unk_32[0xE]; // guessed
} struct_D_801650D0;
typedef struct {
char unk_00[0x4];
Vec3f unk_04;

View File

@ -7,62 +7,15 @@
extern s8 gCharacterIdByGPOverallRank[8]; // D_8018D9D0
extern s32 gPlayerIsThrottleActive[]; // D_801653E0
extern hud_player playerHUD[];
extern Mtx D_80183D60[];
extern struct_D_8018CE10 D_8018CE10[];
extern Vec3f D_80165070[];
extern f32 D_80164510[];
extern s16 gMatrixEffectCount;
extern s16 D_80165020[];
extern s16 D_801650D0[4][8];
extern s16 D_80165110[4][8];
extern s16 D_80165150[4][8];
extern s16 D_80165190[4][8];
extern s16 D_801651D0[4][8];
extern f32 D_80165210[];
extern f32 D_80165230[];
extern f32 D_8016524C;
extern s16 D_80165270[8];
extern f32 D_80165280[];
extern f32 D_801652A0[];
extern s32 D_801652C0[];
extern s32 D_801652E0[];
extern s16 D_80165300[];
extern s32 D_80165400[];
extern s32 D_80165420[];
extern s32 D_80165440[];
extern bool gIsPlayerTripleAButtonCombo[];
extern s32 D_80165480[];
extern s32 D_801654A0[];
extern s32 D_801654C0[];
extern s32 D_801654E0[];
extern s32 D_80165500[];
extern s32 D_80165520[];
extern s32 D_80165540[];
extern s16 D_8016556E;
extern s16 D_80165570;
extern s16 D_80165572;
extern s16 D_80165574;
extern s16 D_80165576;
extern s16 D_80165578;
extern s16 D_8016557A;
extern s16 D_8016557C;
extern s16 D_8016557E;
extern s16 D_80165580;
extern s16 D_80165582;
extern bool8 D_801657E8;
extern s8 D_801658FE;

View File

@ -39,12 +39,6 @@ extern s16 *D_801645A0[];
extern s16 D_80162FCE;
// Shadows values from gPathIndexByPlayerId
extern s32 D_80163448;
// Shadows values from gPathIndexByPlayerId, but is an array
extern u16 D_80165310[];
// Shadows values from gNearestWaypointByPlayerId, but is an array
extern s16 D_80165320[];
// Don't think this really belongs with waypoint stuff, but don't know where else to put it
extern s16 D_80165330[];
// Shadows values from D_80164560
extern TrackWaypoint *D_801631D0;
// Shadows values from D_80164570

View File

@ -309,7 +309,8 @@ SECTIONS
BUILD_DIR/src/code_80005FD0.jp.o(.bss);
BUILD_DIR/src/camera.o(.bss);
BUILD_DIR/src/render_player.o(.bss);
BUILD_DIR/asm/bss_80164AB0.o(.bss);
BUILD_DIR/src/spawn_players.o(.bss);
BUILD_DIR/asm/bss_80165590.o(.bss);
BUILD_DIR/src/code_80091750.jp.o(.bss);
BUILD_DIR/src/code_800AF9B0.o(.bss);
BUILD_DIR/src/menus.o(.bss);

View File

@ -15,6 +15,7 @@
#include "code_80057C60.h"
#include "code_80005FD0.h"
#include "main.h"
#include "spawn_players.h"
f32 D_800DDB30[] = { 0.4f, 0.6f, 0.275f, 0.3f };

View File

@ -28,6 +28,7 @@
#include "code_80091750.h"
#include "audio/external.h"
#include "ending/podium_ceremony_actors.h"
#include "spawn_players.h"
extern UnkCommonTextureStruct0 *D_800DC720[];

View File

@ -26,6 +26,7 @@
#include "bomb_kart.h"
#include "menus.h"
#include "data/other_textures.h"
#include "spawn_players.h"
// WARNING: this macro is undef'd at the end of this file

View File

@ -313,7 +313,6 @@ extern u8 *D_8018D4C8;
extern u16 gPlayerBalloonStatus[8][3]; // D_8018D5F0
extern s16 gPlayerBalloonCount[]; // D_8018D8C0
extern f32 D_801652A0[];
extern s32 D_801655C0;
extern s32 D_801655F0;
extern s32 D_80165678;

View File

@ -16,6 +16,7 @@
#include "code_80057C60.h"
#include "code_8008C1D0.h"
#include "audio/external.h"
#include "spawn_players.h"
UNUSED void func_unnamed(void) {

View File

@ -138,9 +138,6 @@ extern f32 D_800E37F0[];
extern s16 D_80165190[4][8];
extern f32 D_80165280[];
extern s32 D_80165420[];
extern s32 D_80165440[];
extern s32 gIsPlayerTripleAButtonCombo[];
extern s32 D_80165480[];
extern s8 D_801658BC;
extern s32 D_8018D900[];
extern s16 D_8018D920[];

View File

@ -30,6 +30,7 @@
#include "framebuffers.h"
#include "racing/race_logic.h"
#include "ending/code_80281C40.h"
#include "spawn_players.h"
// TODO: Move gGfxPool out of main.h
// Unfortunately that's not a small effort due to weird import structure in this project
#include "main.h"

View File

@ -17,6 +17,7 @@
#include "staff_ghosts.h"
#include "save_data.h"
#include <sounds.h>
#include "spawn_players.h"
/** BSS **/
s32 D_8018EDC0;

View File

@ -17,6 +17,7 @@
#include "code_8003DC40.h"
#include "main.h"
#include "camera.h"
#include "spawn_players.h"
extern s16 D_801633F8;
extern s32 D_8018D168;

View File

@ -190,7 +190,6 @@ extern s16 *D_800E3C30[];
extern s16 **D_800E3C50[];
extern s16 gMatrixEffectCount;
extern Player *D_801653C0[8];
extern s16 D_801656F0;
extern s32 gRaceFrameCounter;

View File

@ -20,6 +20,7 @@
#include "hud_renderer.h"
#include "common_textures.h"
#include "skybox_and_splitscreen.h"
#include "spawn_players.h"
s8 gRenderingFramebufferByPlayer[] = {
0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02
@ -27,11 +28,37 @@ s8 gRenderingFramebufferByPlayer[] = {
s32 gPlayersToRenderCount = 0;
// Can't find anything that actually references these...
UNUSED void *D_800DDB5C[3] = {
gFramebuffer0, gFramebuffer1, gFramebuffer2
};
s16 D_80164AB0[8];
s16 D_80164AC0[8];
Player *D_80164AD0[8];
s16 gMatrixEffectCount;
s32 D_80164AF4[3];
struct_D_802F1F80 *gPlayerPalette;
u8 *D_80164B08;
u8 *D_80164B0C;
u16 gPlayerRedEffect[8];
u16 gPlayerGreenEffect[8];
u16 gPlayerBlueEffect[8];
u16 gPlayerCyanEffect[8];
u16 gPlayerMagentaEffect[8];
u16 gPlayerYellowEffect[8];
//if it's also a color effect like before
UNUSED u16 gPlayerWhiteEffect[8];
s32 D_80164B80[296];
s16 D_80165020[40];
Vec3f D_80165070[8];
s16 D_801650D0[4][8];
s16 D_80165110[4][8];
s16 D_80165150[4][8];
s16 D_80165190[4][8];
s16 D_801651D0[4][8];
void func_8001F980(s32 *arg0, s32 *arg1) {
if ((gDemoMode == 1) || (D_80164A28 != 0) || (D_8015F894 != 0)) {
*arg0 = 0xAA;
@ -243,8 +270,8 @@ void func_80020524(void) {
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode(D_802DFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
}
void func_8002088C(void) {
@ -268,8 +295,8 @@ void func_8002088C(void) {
D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode(D_802DFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
}
void func_80020BF4(void) {
@ -287,8 +314,8 @@ void func_80020BF4(void) {
D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode(D_802DFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array);
mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array);
}
void func_80020F1C(void) {
@ -306,8 +333,8 @@ void func_80020F1C(void) {
D_802BFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode(D_802DFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80[D_801651D0[D_80164ABE[gPlayersToRenderCount]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164ABE[gPlayersToRenderCount] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array);
mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array);
}
void try_render_player(Player *player, s8 playerId, s8 arg2) {

View File

@ -279,4 +279,12 @@ extern u8 *gKartWario209Wheel0[];
extern u8 *gKartWario189Wheel0[];
extern u8 *gKartWario189Wheel0[];
extern s16 D_80165020[40];
extern Vec3f D_80165070[8];
extern s16 D_801650D0[4][8];
extern s16 D_80165110[4][8];
extern s16 D_80165150[4][8];
extern s16 D_80165190[4][8];
extern s16 D_801651D0[4][8];
#endif

View File

@ -22,6 +22,52 @@
#include "menus.h"
#include "render_player.h"
f32 D_80165210[8];
f32 D_80165230[7];
// weird D_8016524C should not exist and be in D_80165230 but don't match
f32 D_8016524C;
f32 D_80165250[8];
s16 D_80165270[8];
f32 D_80165280[8];
f32 D_801652A0[8];
s32 D_801652C0[8];
s32 D_801652E0[8];
s16 D_80165300[8];
// Shadows values from gPathIndexByPlayerId, but is an array
u16 D_80165310[8];
// Shadows values from gNearestWaypointByPlayerId, but is an array
s16 D_80165320[8];
// Don't think this really belongs with waypoint stuff, but don't know where else to put it
s16 D_80165330[8];
s16 D_80165340;
UNUSED s32 D_80165348[29];
Player *D_801653C0[8];
s32 gPlayerIsThrottleActive[8];
s32 D_80165400[8];
s32 D_80165420[8];
s32 D_80165440[8];
bool gIsPlayerTripleAButtonCombo[8];
s32 D_80165480[8];
s32 D_801654A0[8];
s32 D_801654C0[8];
s32 D_801654E0[8];
s32 D_80165500[8];
s32 D_80165520[8];
s32 D_80165540[8];
s16 D_80165560[7];
// weird D_8016556E should not exist and be in D_80165560 but don't match
s16 D_8016556E;
s16 D_80165570;
s16 D_80165572;
s16 D_80165574;
s16 D_80165576;
s16 D_80165578;
s16 D_8016557A;
s16 D_8016557C;
s16 D_8016557E;
s16 D_80165580;
s16 D_80165582;
// arg4 is height? Or something like that?
void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingColumn, f32 arg4, f32 arg5, u16 characterId, s16 playerType) {
f32 ret;

View File

@ -25,8 +25,43 @@ void func_8003CD98(Player*, Camera*, s8, s8);
void func_8003D080(void);
void func_8003DB5C(void);
extern s16 D_80165560[];
extern f32 D_80165210[];
extern f32 D_80165230[];
extern f32 D_8016524C;
extern s16 D_80165270[];
extern f32 D_80165280[];
extern f32 D_801652A0[];
extern s32 D_801652C0[];
extern s32 D_801652E0[];
extern s16 D_80165300[];
extern u16 D_80165310[];
extern s16 D_80165320[];
extern s16 D_80165330[];
extern s16 D_80165340;
extern Player *D_801653C0[];
extern s32 gPlayerIsThrottleActive[];
extern s32 D_80165400[];
extern s32 D_80165420[];
extern s32 D_80165440[];
extern bool gIsPlayerTripleAButtonCombo[];
extern s32 D_80165480[];
extern s32 D_801654A0[];
extern s32 D_801654C0[];
extern s32 D_801654E0[];
extern s32 D_80165500[];
extern s32 D_80165520[];
extern s32 D_80165540[];
extern s16 D_80165560[];
extern s16 D_8016556E;
extern s16 D_80165570;
extern s16 D_80165572;
extern s16 D_80165574;
extern s16 D_80165576;
extern s16 D_80165578;
extern s16 D_8016557A;
extern s16 D_8016557C;
extern s16 D_8016557E;
extern s16 D_80165580;
extern s16 D_80165582;
#endif

View File

@ -4360,10 +4360,10 @@ Variable Name | Memory Address
[D_80164A90](@ref D_80164A90) | 0x80164A90
[D_80164AA0](@ref D_80164AA0) | 0x80164AA0
[D_80164AB0](@ref D_80164AB0) | 0x80164AB0
[D_80164ABE](@ref D_80164ABE) | 0x80164ABE
[D_80164AC0](@ref D_80164AC0) | 0x80164AC0
[D_80164AD0](@ref D_80164AD0) | 0x80164AD0
[gMatrixEffectCount](@ref gMatrixEffectCount) | 0x80164AF0
[D_80164AF4](@ref D_80164AF4) | 0x80164AF8
[gPlayerPalette](@ref gPlayerPalette) | 0x80164B04
[D_80164B08](@ref D_80164B08) | 0x80164B08
[D_80164B0C](@ref D_80164B0C) | 0x80164B0C
@ -4373,6 +4373,7 @@ Variable Name | Memory Address
[gPlayerCyanEffect](@ref gPlayerCyanEffect) | 0x80164B40
[gPlayerMagentaEffect](@ref gPlayerMagentaEffect) | 0x80164B50
[gPlayerYellowEffect](@ref gPlayerYellowEffect) | 0x80164B60
[gPlayerWhiteEffect](@ref gPlayerWhiteEffect) | 0x80164B70
[D_80164B80](@ref D_80164B80) | 0x80164B80
[D_80165020](@ref D_80165020) | 0x80165020
[D_80165070](@ref D_80165070) | 0x80165070
@ -4381,10 +4382,10 @@ Variable Name | Memory Address
[D_80165150](@ref D_80165150) | 0x80165150
[D_80165190](@ref D_80165190) | 0x80165190
[D_801651D0](@ref D_801651D0) | 0x801651D0
[D_801651D1](@ref D_801651D1) | 0x801651D1
[D_80165210](@ref D_80165210) | 0x80165210
[D_80165230](@ref D_80165230) | 0x80165230
[D_8016524C](@ref D_8016524C) | 0x8016524C
[D_80165250](@ref D_80165250) | 0x80165250
[D_80165270](@ref D_80165270) | 0x80165270
[D_80165280](@ref D_80165280) | 0x80165280
[D_801652A0](@ref D_801652A0) | 0x801652A0
@ -4395,6 +4396,7 @@ Variable Name | Memory Address
[D_80165320](@ref D_80165320) | 0x80165320
[D_80165330](@ref D_80165330) | 0x80165330
[D_80165340](@ref D_80165340) | 0x80165340
[D_80165348](@ref D_80165348) | 0x80165348
[D_801653C0](@ref D_801653C0) | 0x801653C0
[gPlayerIsThrottleActive](@ref gPlayerIsThrottleActive) | 0x801653E0
[D_80165400](@ref D_80165400) | 0x80165400