diff --git a/asm/bss_8028DF00.s b/asm/bss_8028DF00.s index 0ef5cc6aa..ae36f2df3 100644 --- a/asm/bss_8028DF00.s +++ b/asm/bss_8028DF00.s @@ -2,33 +2,6 @@ .section .bss -glabel D_802BA030 -.skip 2 - -glabel D_802BA032 -.skip 2 - -glabel D_802BA034 -.skip 4 - -glabel D_802BA038 -.skip 8 - -glabel D_802BA040 -.skip 2 - -glabel D_802BA042 -.skip 2 - -glabel D_802BA044 -.skip 2 - -glabel D_802BA046 -.skip 2 - -glabel D_802BA048 -.skip 8 - glabel D_802BA050 .skip 4 diff --git a/asm/non_matchings/code_8028DF00/code_8028DF00.s b/asm/non_matchings/code_8028DF00/code_8028DF00.s index fbdaa9b2c..828507fe4 100644 --- a/asm/non_matchings/code_8028DF00/code_8028DF00.s +++ b/asm/non_matchings/code_8028DF00/code_8028DF00.s @@ -695,8 +695,8 @@ glabel L8028FD10 /* 0F93A0 8028FD90 E4240118 */ swc1 $f4, %lo(D_80150118)($at) /* 0F93A4 8028FD94 3C01800E */ lui $at, %hi(D_800DC518) # $at, 0x800e /* 0F93A8 8028FD98 A420C518 */ sh $zero, %lo(D_800DC518)($at) -/* 0F93AC 8028FD9C 3C01802C */ lui $at, %hi(D_802BA032) # $at, 0x802c -/* 0F93B0 8028FDA0 A420A032 */ sh $zero, %lo(D_802BA032)($at) +/* 0F93AC 8028FD9C 3C01802C */ lui $at, %hi(D_802BA030+0x2) # $at, 0x802c +/* 0F93B0 8028FDA0 A420A032 */ sh $zero, %lo(D_802BA030+0x2)($at) /* 0F93B4 8028FDA4 3C018015 */ lui $at, %hi(D_8015011E) # $at, 0x8015 /* 0F93B8 8028FDA8 A420011E */ sh $zero, %lo(D_8015011E)($at) /* 0F93BC 8028FDAC 3C01800E */ lui $at, %hi(gCourseTimer) # $at, 0x800e diff --git a/asm/non_matchings/code_8028DF00/wip.s b/asm/non_matchings/code_8028DF00/wip.s index b49793f97..b1188158d 100644 --- a/asm/non_matchings/code_8028DF00/wip.s +++ b/asm/non_matchings/code_8028DF00/wip.s @@ -9,12 +9,12 @@ glabel func_8028EF28 /* 0F8554 8028EF44 AFB30024 */ sw $s3, 0x24($sp) /* 0F8558 8028EF48 AFB20020 */ sw $s2, 0x20($sp) /* 0F855C 8028EF4C 3C10800F */ lui $s0, %hi(gPlayers) # $s0, 0x800f -/* 0F8560 8028EF50 3C16802C */ lui $s6, %hi(D_802BA032) # $s6, 0x802c +/* 0F8560 8028EF50 3C16802C */ lui $s6, %hi(D_802BA030+0x2) # $s6, 0x802c /* 0F8564 8028EF54 3C17800E */ lui $s7, %hi(D_800DC510) # $s7, 0x800e /* 0F8568 8028EF58 AFBF003C */ sw $ra, 0x3c($sp) /* 0F856C 8028EF5C AFB1001C */ sw $s1, 0x1c($sp) /* 0F8570 8028EF60 26F7C510 */ addiu $s7, %lo(D_800DC510) # addiu $s7, $s7, -0x3af0 -/* 0F8574 8028EF64 26D6A032 */ addiu $s6, %lo(D_802BA032) # addiu $s6, $s6, -0x5fce +/* 0F8574 8028EF64 26D6A032 */ addiu $s6, %lo(D_802BA030+0x2) # addiu $s6, $s6, -0x5fce /* 0F8578 8028EF68 26106990 */ addiu $s0, %lo(gPlayers) # addiu $s0, $s0, 0x6990 /* 0F857C 8028EF6C 00009025 */ move $s2, $zero /* 0F8580 8028EF70 24130002 */ li $s3, 2 diff --git a/mk64.ld b/mk64.ld index 76bf2dd61..28eff89a3 100644 --- a/mk64.ld +++ b/mk64.ld @@ -296,6 +296,7 @@ SECTIONS END_SEG(code_8028DF00) BEGIN_NOLOAD(code_8028DF00) { + BUILD_DIR/src/code_8028DF00.o(.bss); BUILD_DIR/asm/bss_8028DF00.o(.bss); } END_NOLOAD(code_8028DF00) diff --git a/src/code_8028DF00.c b/src/code_8028DF00.c index b8a546057..0b4f4c799 100644 --- a/src/code_8028DF00.c +++ b/src/code_8028DF00.c @@ -3,8 +3,6 @@ #include "types.h" #include "common_structs.h" - -extern s16 D_802BA040[4]; extern struct Controller gControllers[]; extern struct Controller *D_800DC4BC; extern struct Controller *D_800DC4C4; @@ -27,7 +25,6 @@ extern Player D_800DC4E0[]; extern Player D_800DC4DC[]; extern s32 lapCount[]; extern s32 D_80150120; -extern u16 D_802BA032; extern s32 gModeSelection; extern s32 gPlayerCountSelection1; extern u16 D_802BA048; @@ -37,7 +34,6 @@ extern s32 D_80150124; extern u16 D_800DC5B4; extern u16 D_800DC5B0; extern u16 D_800DC5B8; -extern s32 D_802BA038; extern s32 D_800E86A0; extern struct Controller *D_800DC4CC; @@ -49,7 +45,6 @@ extern u16 D_800DC518; extern u16 D_8015011E; extern float gCourseTimer; extern float D_800DC594; -extern float D_802BA034; extern s32 D_800DC530; extern s32 D_8018D2AC; extern s32 D_800DC52C; @@ -100,50 +95,39 @@ extern void func_80005AE8(); extern u16 D_8015F894; +u16 D_802BA030[2]; + +float D_802BA034; + + +s32 D_802BA038; +UNUSED s32 D_802BA03C; + + +s16 D_802BA040[4]; +u16 D_802BA048; + // Likely bss memed need to declare controllers likely in main.c -/* + void func_8028DF00(void) { - struct Controller *controllers = (u16) &D_800F6914[0]; + struct Controller *controllers = &gControllers[0]; s32 i; - for (i = 0; i < 4; i ++) { - D_802BA040[i] = controllers->unk4; + for (i = 0; i < 4; i++) { + D_802BA040[i] = controllers->button; controllers++; } } -*/ -GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028DF00.s") -/* + void func_8028DF38(void) { struct Controller *controllers = &gControllers[0]; s32 i; for (i = 0; i < 4; i++) { - D_800F6916 = (s16) ((D_802BA040 ^ D_800F6914) & D_800F6914); - D_800F6918 = (s16) ((D_802BA040 ^ D_800F6914) & D_802BA040); - D_800F6914 = (u16) temp_t6; - - gPlayer2Controller.unk6 = (s16) ((D_802BA042[i] ^ gPlayer2Controller.unk4) & gPlayer2Controller.unk4); - - gPlayer2Controller.unk8 = (s16) ((D_802BA042[i] ^ gPlayer2Controller.unk4;) & D_802BA042[i]); - temp_v1_2 = gPlayer2Controller.unk14; - - - - - gPlayer2Controller.unk4 = (u16) D_802BA042; - temp_v0 = &gPlayer2Controller + 0x20; - temp_v0->unk-A = (s16) ((D_802BA044 ^ temp_v1_2) & temp_v1_2); - temp_t1 = D_802BA044; - temp_v0->unk-8 = (s16) ((temp_t1 ^ temp_v1_2) & temp_t1); - temp_v1_3 = temp_v0->unk4; - temp_v0->unk-C = (s16) D_802BA044; - temp_v0->unk6 = (s16) ((D_802BA046 ^ temp_v1_3) & temp_v1_3); - temp_t9 = D_802BA046; - temp_v0->unk8 = (s16) ((temp_t9 ^ temp_v1_3) & temp_t9); - temp_v0->unk4 = (u16) D_802BA046; + controllers->buttonPressed = (controllers->button & (D_802BA040[i] ^ controllers->button)); + controllers->buttonDepressed = (D_802BA040[i] & (D_802BA040[i] ^ controllers->button)); + controllers->button = D_802BA040[i]; + controllers++; } } -*/ -GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028DF38.s") void func_8028E028(void) { @@ -166,8 +150,8 @@ void func_8028E028(void) { void func_8028E0F0(void) { Player *ply; s32 i; - s16 unk_arr[4]; s16 unk_arr2[4]; + s16 unk_arr[4]; s16 phi_s1 = 0; s16 phi_s2 = 0; @@ -181,18 +165,19 @@ void func_8028E0F0(void) { } if (D_8018D8C0[i] < 0) { ply->unk_000 |= 0x800; - unk_arr[phi_s1] = (s16) (ply - D_800DC4DC); + unk_arr[phi_s2] = (s16) (ply - D_800DC4DC); + phi_s2++; func_800CA118((u8) i); } else { - unk_arr2[phi_s2] = (s16) (ply - D_800DC4DC); - phi_s2++; + unk_arr2[phi_s1] = (s16) (ply - D_800DC4DC); + phi_s1++; } } - if (phi_s2 == 1) { - D_800DC5E8 = (s32) unk_arr2; + if (phi_s1 == 1) { + D_800DC5E8 = (s32) unk_arr2[0]; func_8028E028(); - } else if (phi_s2 == 0) { - D_800DC5E8 = (s32) unk_arr; + } else if (phi_s1 == 0) { + D_800DC5E8 = (s32) unk_arr[0]; func_8028E028(); } } @@ -673,8 +658,8 @@ void func_8028EF28(void) { D_80150120 = 1; } func_800CA118((u8)i); - if ((D_802BA032 & 0x8000) == 0) { - D_802BA032 |= 0x8000; + if ((D_802BA030[1] & 0x8000) == 0) { + D_802BA030[1] |= 0x8000; } if (gModeSelection == 0 && gPlayerCountSelection1 == 2 && D_802BA048 == 0) { D_802BA048 = 1; @@ -746,8 +731,8 @@ void func_8028EF28(void) { if ((gPlayers[i].unk_000 & 0x100) == 0) { return; } - if ((D_802BA032 & 0x4000) == 0) { - D_802BA032 |= 0x4000; + if ((D_802BA030[1] & 0x4000) == 0) { + D_802BA030[1] |= 0x4000; func_800CA49C(i); } }