From c1114ebb6bfe8b8b08d048d0beb61d56f138b65d Mon Sep 17 00:00:00 2001 From: CoderStig <79828759+CoderStig@users.noreply.github.com> Date: Thu, 3 Mar 2022 18:51:25 -0700 Subject: [PATCH 1/4] fix audio pointers allowing rom shifts again --- asm/bss_8028DF00.s | 1 + asm/bss_audio.s | 56 +++++++++++++ asm/bss_sptask_audio.s | 87 +------------------- asm/non_matchings/audio/heap/func_800B90F0.s | 4 +- asm/non_matchings/audio/heap/func_800B914C.s | 8 +- asm/non_matchings/audio/heap/func_800B9FB8.s | 8 +- asm/non_matchings/audio/heap/func_800BA250.s | 24 +++--- include/segments.h | 4 +- mk64.ld | 25 ++---- src/audio/load.c | 14 ++-- src/audio/synthesis.c | 13 ++- src/audio/synthesis.h | 8 +- src/code_8028DF00.c | 2 + src/framebuffers.c | 4 +- src/memory.c | 1 - 15 files changed, 117 insertions(+), 142 deletions(-) create mode 100644 asm/bss_audio.s diff --git a/asm/bss_8028DF00.s b/asm/bss_8028DF00.s index 920a0219d..7dc81de4b 100644 --- a/asm/bss_8028DF00.s +++ b/asm/bss_8028DF00.s @@ -2,6 +2,7 @@ .section .bss + glabel D_802BA050 .skip 4 diff --git a/asm/bss_audio.s b/asm/bss_audio.s new file mode 100644 index 000000000..e8b8d28c4 --- /dev/null +++ b/asm/bss_audio.s @@ -0,0 +1,56 @@ + +.include "macros.inc" + +.section .bss + +glabel D_803AFBD0 +.skip 8 + +glabel D_803AFBD8 +.skip 16 + +glabel D_803AFBE8 +.skip 48 + +glabel D_803AFC18 +.skip 16 + +glabel D_803AFC28 +.skip 16 + +glabel D_803AFC38 +.skip 16 + +glabel D_803AFC48 +.skip 4 + +glabel D_803AFC4C +.skip 400 + +glabel D_803AFDDC +.skip 4 + +glabel D_803AFDE0 +.skip 56 + +glabel D_803AFE18 +.skip 4 + +glabel D_803AFE1C +.skip 400 + +glabel D_803AFFAC +.skip 4 + +glabel D_803AFFB0 +.skip 56 + +glabel D_803AFFE8 +.skip 4 + +glabel D_803AFFEC + + + + + diff --git a/asm/bss_sptask_audio.s b/asm/bss_sptask_audio.s index 409292540..2250678fb 100644 --- a/asm/bss_sptask_audio.s +++ b/asm/bss_sptask_audio.s @@ -2,92 +2,9 @@ .section .bss -.skip 875760 -#glabel gFramebuffer0 -#.skip 153600 +# Audio -#glabel gFramebuffer1 -#.skip 153600 - -#glabel gFramebuffer2 -#.skip 153600 - -## Audio - -glabel gGfxSPTaskOutputBuffer # 0x8038FF80 -.skip 129024 - -glabel gGfxSPTaskOutputBufferSize # 0x803AF780 -.skip 16 - -glabel D_803AF790 -.skip 1056 - -glabel D_803AFBB0 -.skip 16 - -glabel D_803AFBC0 -.skip 2 - -glabel D_803AFBC2 -.skip 1 - -glabel D_803AFBC3 -.skip 1 - -glabel D_803AFBC4 -.skip 4 - -glabel D_803AFBC8 -.skip 8 - -glabel D_803AFBD0 -.skip 8 - -glabel D_803AFBD8 -.skip 16 - -glabel D_803AFBE8 -.skip 48 - -glabel D_803AFC18 -.skip 16 - -glabel D_803AFC28 -.skip 16 - -glabel D_803AFC38 -.skip 16 - -glabel D_803AFC48 -.skip 4 - -glabel D_803AFC4C -.skip 400 - -glabel D_803AFDDC -.skip 4 - -glabel D_803AFDE0 -.skip 56 - -glabel D_803AFE18 -.skip 4 - -glabel D_803AFE1C -.skip 400 - -glabel D_803AFFAC -.skip 4 - -glabel D_803AFFB0 -.skip 56 - -glabel D_803AFFE8 -.skip 4 - -glabel D_803AFFEC -.skip 400 +.skip 396 glabel D_803B017C .skip 4 diff --git a/asm/non_matchings/audio/heap/func_800B90F0.s b/asm/non_matchings/audio/heap/func_800B90F0.s index 5f6ca0f7a..fe417aa03 100644 --- a/asm/non_matchings/audio/heap/func_800B90F0.s +++ b/asm/non_matchings/audio/heap/func_800B90F0.s @@ -13,8 +13,8 @@ glabel func_800B90F0 /* 0B9D1C 800B911C 8DEFA5D0 */ lw $t7, %lo(D_800EA5D0)($t7) /* 0B9D20 800B9120 3C0E803B */ lui $t6, %hi(D_803B71B0) # $t6, 0x803b /* 0B9D24 800B9124 25CE71B0 */ addiu $t6, %lo(D_803B71B0) # addiu $t6, $t6, 0x71b0 -/* 0B9D28 800B9128 3C04803B */ lui $a0, %hi(D_803AFBC8) # $a0, 0x803b -/* 0B9D2C 800B912C 2484FBC8 */ addiu $a0, %lo(D_803AFBC8) # addiu $a0, $a0, -0x438 +/* 0B9D28 800B9128 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b +/* 0B9D2C 800B912C 2484FBC8 */ addiu $a0, %lo(gLeftVolRampings) # addiu $a0, $a0, -0x438 /* 0B9D30 800B9130 00EE2821 */ addu $a1, $a3, $t6 /* 0B9D34 800B9134 0C02E41F */ jal func_800B907C /* 0B9D38 800B9138 01E73023 */ subu $a2, $t7, $a3 diff --git a/asm/non_matchings/audio/heap/func_800B914C.s b/asm/non_matchings/audio/heap/func_800B914C.s index 69a6145b8..3fe4f7ce6 100644 --- a/asm/non_matchings/audio/heap/func_800B914C.s +++ b/asm/non_matchings/audio/heap/func_800B914C.s @@ -1,8 +1,8 @@ glabel func_800B914C /* 0B9D4C 800B914C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0B9D50 800B9150 AFA40018 */ sw $a0, 0x18($sp) -/* 0B9D54 800B9154 3C04803B */ lui $a0, %hi(D_803AFBC8) # $a0, 0x803b -/* 0B9D58 800B9158 2484FBC8 */ addiu $a0, %lo(D_803AFBC8) # addiu $a0, $a0, -0x438 +/* 0B9D54 800B9154 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b +/* 0B9D58 800B9158 2484FBC8 */ addiu $a0, %lo(gLeftVolRampings) # addiu $a0, $a0, -0x438 /* 0B9D5C 800B915C 8C8E0000 */ lw $t6, ($a0) /* 0B9D60 800B9160 8FAF0018 */ lw $t7, 0x18($sp) /* 0B9D64 800B9164 AFBF0014 */ sw $ra, 0x14($sp) @@ -16,8 +16,8 @@ glabel func_800B914C /* 0B9D84 800B9184 0C02E41F */ jal func_800B907C /* 0B9D88 800B9188 8F060000 */ lw $a2, ($t8) /* 0B9D8C 800B918C 8FB90018 */ lw $t9, 0x18($sp) -/* 0B9D90 800B9190 3C04803B */ lui $a0, %hi(D_803AFBC8) # $a0, 0x803b -/* 0B9D94 800B9194 2484FBC8 */ addiu $a0, %lo(D_803AFBC8) # addiu $a0, $a0, -0x438 +/* 0B9D90 800B9190 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b +/* 0B9D94 800B9194 2484FBC8 */ addiu $a0, %lo(gLeftVolRampings) # addiu $a0, $a0, -0x438 /* 0B9D98 800B9198 0C02E3FF */ jal func_800B8FFC /* 0B9D9C 800B919C 8F25000C */ lw $a1, 0xc($t9) /* 0B9DA0 800B91A0 8FA80018 */ lw $t0, 0x18($sp) diff --git a/asm/non_matchings/audio/heap/func_800B9FB8.s b/asm/non_matchings/audio/heap/func_800B9FB8.s index 09c4230d6..fff2ea18c 100644 --- a/asm/non_matchings/audio/heap/func_800B9FB8.s +++ b/asm/non_matchings/audio/heap/func_800B9FB8.s @@ -1,8 +1,8 @@ glabel func_800B9FB8 -/* 0BABB8 800B9FB8 3C03803B */ lui $v1, %hi(D_803AFBC3) # $v1, 0x803b -/* 0BABBC 800B9FBC 8063FBC3 */ lb $v1, %lo(D_803AFBC3)($v1) -/* 0BABC0 800B9FC0 3C0E803B */ lui $t6, %hi(D_803AF790) # 0x803b -/* 0BABC4 800B9FC4 25C2F790 */ addiu $v0, $t6, %lo(D_803AF790) # -0x870 +/* 0BABB8 800B9FB8 3C03803B */ lui $v1, %hi(gNumSynthesisReverbs) # $v1, 0x803b +/* 0BABBC 800B9FBC 8063FBC3 */ lb $v1, %lo(gNumSynthesisReverbs)($v1) +/* 0BABC0 800B9FC0 3C0E803B */ lui $t6, %hi(gSynthesisReverbs) # 0x803b +/* 0BABC4 800B9FC4 25C2F790 */ addiu $v0, $t6, %lo(gSynthesisReverbs) # -0x870 /* 0BABC8 800B9FC8 1860000E */ blez $v1, .L800BA004 /* 0BABCC 800B9FCC 00037940 */ sll $t7, $v1, 5 /* 0BABD0 800B9FD0 01E37821 */ addu $t7, $t7, $v1 diff --git a/asm/non_matchings/audio/heap/func_800BA250.s b/asm/non_matchings/audio/heap/func_800BA250.s index 63fa8ef0d..c756fb1e5 100644 --- a/asm/non_matchings/audio/heap/func_800BA250.s +++ b/asm/non_matchings/audio/heap/func_800BA250.s @@ -98,7 +98,7 @@ glabel func_800BA250 /* 0BAFC0 800BA3C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 0BAFC4 800BA3C4 44812000 */ mtc1 $at, $f4 /* 0BAFC8 800BA3C8 46009183 */ div.s $f6, $f18, $f0 -/* 0BAFCC 800BA3CC 3C01803B */ lui $at, %hi(D_803AFBC0) # $at, 0x803b +/* 0BAFCC 800BA3CC 3C01803B */ lui $at, %hi(gVolume) # $at, 0x803b /* 0BAFD0 800BA3D0 46002203 */ div.s $f8, $f4, $f0 /* 0BAFD4 800BA3D4 E686001C */ swc1 $f6, 0x1c($s4) /* 0BAFD8 800BA3D8 E6880018 */ swc1 $f8, 0x18($s4) @@ -106,7 +106,7 @@ glabel func_800BA250 /* 0BAFE0 800BA3E0 AD8E0000 */ sw $t6, ($t4) /* 0BAFE4 800BA3E4 96CF000C */ lhu $t7, 0xc($s6) /* 0BAFE8 800BA3E8 8718A5CC */ lh $t8, %lo(D_800EA5CC)($t8) -/* 0BAFEC 800BA3EC A42FFBC0 */ sh $t7, %lo(D_803AFBC0)($at) +/* 0BAFEC 800BA3EC A42FFBC0 */ sh $t7, %lo(gVolume)($at) /* 0BAFF0 800BA3F0 3C01800F */ lui $at, %hi(D_800F2E9C) # $at, 0x800f /* 0BAFF4 800BA3F4 C42A2E9C */ lwc1 $f10, %lo(D_800F2E9C)($at) /* 0BAFF8 800BA3F8 44989000 */ mtc1 $t8, $f18 @@ -250,10 +250,10 @@ glabel func_800BA250 /* 0BB214 800BA614 0005C900 */ sll $t9, $a1, 4 /* 0BB218 800BA618 0C02E3FF */ jal func_800B8FFC /* 0BB21C 800BA61C 03202825 */ move $a1, $t9 -/* 0BB220 800BA620 3C01803B */ lui $at, %hi(D_803AFBC4) # $at, 0x803b +/* 0BB220 800BA620 3C01803B */ lui $at, %hi(gNoteSubsEu) # $at, 0x803b /* 0BB224 800BA624 3C10803B */ lui $s0, %hi(D_803B70C8) # $s0, 0x803b /* 0BB228 800BA628 3C11803B */ lui $s1, %hi(D_803B70D0) # $s1, 0x803b -/* 0BB22C 800BA62C AC22FBC4 */ sw $v0, %lo(D_803AFBC4)($at) +/* 0BB22C 800BA62C AC22FBC4 */ sw $v0, %lo(gNoteSubsEu)($at) /* 0BB230 800BA630 263170D0 */ addiu $s1, %lo(D_803B70D0) # addiu $s1, $s1, 0x70d0 /* 0BB234 800BA634 261070C8 */ addiu $s0, %lo(D_803B70C8) # addiu $s0, $s0, 0x70c8 .L800BA638: @@ -265,22 +265,22 @@ glabel func_800BA250 /* 0BB24C 800BA64C 26100004 */ addiu $s0, $s0, 4 /* 0BB250 800BA650 1611FFF9 */ bne $s0, $s1, .L800BA638 /* 0BB254 800BA654 AE02FFFC */ sw $v0, -4($s0) -/* 0BB258 800BA658 3C12803B */ lui $s2, %hi(D_803AF790) # $s2, 0x803b -/* 0BB25C 800BA65C 3C02803B */ lui $v0, %hi(D_803AFBB0) # $v0, 0x803b -/* 0BB260 800BA660 2442FBB0 */ addiu $v0, %lo(D_803AFBB0) # addiu $v0, $v0, -0x450 -/* 0BB264 800BA664 2652F790 */ addiu $s2, %lo(D_803AF790) # addiu $s2, $s2, -0x870 +/* 0BB258 800BA658 3C12803B */ lui $s2, %hi(gSynthesisReverbs) # $s2, 0x803b +/* 0BB25C 800BA65C 3C02803B */ lui $v0, %hi(sAudioSynthesisPad) # $v0, 0x803b +/* 0BB260 800BA660 2442FBB0 */ addiu $v0, %lo(sAudioSynthesisPad) # addiu $v0, $v0, -0x450 +/* 0BB264 800BA664 2652F790 */ addiu $s2, %lo(gSynthesisReverbs) # addiu $s2, $s2, -0x870 .L800BA668: /* 0BB268 800BA668 26520108 */ addiu $s2, $s2, 0x108 /* 0BB26C 800BA66C 0242082B */ sltu $at, $s2, $v0 /* 0BB270 800BA670 1420FFFD */ bnez $at, .L800BA668 /* 0BB274 800BA674 A240FEF9 */ sb $zero, -0x107($s2) /* 0BB278 800BA678 92CF0006 */ lbu $t7, 6($s6) -/* 0BB27C 800BA67C 3C17803B */ lui $s7, %hi(D_803AFBC3) # $s7, 0x803b -/* 0BB280 800BA680 26F7FBC3 */ addiu $s7, %lo(D_803AFBC3) # addiu $s7, $s7, -0x43d +/* 0BB27C 800BA67C 3C17803B */ lui $s7, %hi(gNumSynthesisReverbs) # $s7, 0x803b +/* 0BB280 800BA680 26F7FBC3 */ addiu $s7, %lo(gNumSynthesisReverbs) # addiu $s7, $s7, -0x43d /* 0BB284 800BA684 A2EF0000 */ sb $t7, ($s7) /* 0BB288 800BA688 82EE0000 */ lb $t6, ($s7) -/* 0BB28C 800BA68C 3C12803B */ lui $s2, %hi(D_803AF790) # $s2, 0x803b -/* 0BB290 800BA690 2652F790 */ addiu $s2, %lo(D_803AF790) # addiu $s2, $s2, -0x870 +/* 0BB28C 800BA68C 3C12803B */ lui $s2, %hi(gSynthesisReverbs) # $s2, 0x803b +/* 0BB290 800BA690 2652F790 */ addiu $s2, %lo(gSynthesisReverbs) # addiu $s2, $s2, -0x870 /* 0BB294 800BA694 19C0005F */ blez $t6, .L800BA814 /* 0BB298 800BA698 0000A825 */ move $s5, $zero /* 0BB29C 800BA69C 241E0008 */ li $fp, 8 diff --git a/include/segments.h b/include/segments.h index 8a17bb051..63fc5fbc6 100644 --- a/include/segments.h +++ b/include/segments.h @@ -4,8 +4,8 @@ #define SEG_MAIN 0x80000400 #define SEG_80280000 0x80280000 #define SEG_8028DF00 0x8028DF00 -#define SEG_802BA370 0x802BA370 #define SEG_FRAMEBUFFERS 0x802BA290 -#define SEG_AUDIO 0x803AF790 +#define SEG_802BA370 0x802BA370 +#define SEG_AUDIO 0x803AF780 #endif diff --git a/mk64.ld b/mk64.ld index 1de408c68..14398a18d 100644 --- a/mk64.ld +++ b/mk64.ld @@ -300,14 +300,8 @@ SECTIONS _mainSegmentNoloadSizeHi = _mainSegmentNoloadSize >> 16; _mainSegmentNoloadSizeLo = _mainSegmentNoloadSize & 0xFFFF; - . = SEG_FRAMEBUFFERS; - BEGIN_NOLOAD(framebuffers) - { - BUILD_DIR/src/framebuffers.o(.bss*); - } - END_NOLOAD(framebuffers) - + /* 0x8028DF00 0F7510-123640 [2C130] */ BEGIN_SEG(code_8028DF00, SEG_8028DF00) @@ -334,6 +328,9 @@ SECTIONS BUILD_DIR/src/code_8028DF00.o(.bss); BUILD_DIR/asm/bss_8028DF00.o(.bss); BUILD_DIR/src/memory.o(.bss); + BUILD_DIR/src/framebuffers.o(.bss*); + BUILD_DIR/src/audio/synthesis.o(.bss*); + BUILD_DIR/asm/bss_audio.o(.bss*); BUILD_DIR/asm/bss_sptask_audio.o(.bss); } END_NOLOAD(code_8028DF00) @@ -343,12 +340,8 @@ SECTIONS _code_8028DF00SegmentNoloadSizeHi = _code_8028DF00SegmentNoloadSize >> 16; _code_8028DF00SegmentNoloadSizeLo = _code_8028DF00SegmentNoloadSize & 0xFFFF; - . = SEG_AUDIO; - BEGIN_NOLOAD(audio) - { - BUILD_DIR/src/audio/synthesis.o(.bss*); - } - END_NOLOAD(audio) + + /* 0x80280000 123640-12AAE0 [74A0] */ @@ -417,10 +410,10 @@ SECTIONS END_SEG(other_textures) /* 0x802BA370 724220-729A30 [0x5810] */ - BEGIN_SEG(data_802BA370, 0x802BA370) + BEGIN_SEG(data_802BA370, SEG_802BA370) { - BUILD_DIR/src/math_util.o(.data); - . = ALIGN(0x10); + BUILD_DIR/src/math_util.o(.data); + . = ALIGN(0x10); } END_SEG(data_802BA370) diff --git a/src/audio/load.c b/src/audio/load.c index 370c7af37..8dbd8cee0 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -284,7 +284,7 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAD0C.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B8FFC(? *, s32, u32); // extern -extern ? D_803AFBE8; +extern ? D_803BFBE8; extern ? D_803B6758; extern u32 D_803B6E58; extern u32 D_803B6E5C; @@ -341,7 +341,7 @@ void func_800BB030(s32 arg0, u32 arg2) { phi_s0_3 = 0; if ((D_803B70B0 * 3 * D_803B7088) > 0) { loop_1: - temp_v0 = func_800B8FFC(&D_803AFBE8, phi_a1, phi_a2); + temp_v0 = func_800B8FFC(&D_803BFBE8, phi_a1, phi_a2); temp_a2 = D_803B6E58; temp_v1 = &D_803B6758 + (temp_a2 * 0x10); temp_v1->unk0 = temp_v0; @@ -397,7 +397,7 @@ loop_1: if (D_803B70B0 > 0) { phi_a1_2 = 0x180; loop_13: - temp_v0_3 = func_800B8FFC(&D_803AFBE8, phi_a1_2, D_803B6E58); + temp_v0_3 = func_800B8FFC(&D_803BFBE8, phi_a1_2, D_803B6E58); temp_a2_3 = D_803B6E58; temp_s0_3 = phi_s0_3 + 1; temp_v1_2 = &D_803B6758 + (temp_a2_3 * 0x10); @@ -460,7 +460,7 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB030.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B8FFC(? *, s32, void *); // extern ? func_800BAA80(s32, s32, s32, void *); // extern -extern ? D_803AFBE8; +extern ? D_803BFBE8; void func_800BB304(void *arg0) { s32 sp1C; @@ -479,7 +479,7 @@ void func_800BB304(void *arg0) { if (temp_a3->unk1 == 1) { temp_a1 = temp_a3->unk10; arg0 = temp_a3; - temp_v0 = func_800B8FFC(&D_803AFBE8, temp_a1, temp_a3); + temp_v0 = func_800B8FFC(&D_803BFBE8, temp_a1, temp_a3); temp_a3_2 = arg0; temp_a1_2 = temp_v0; if (temp_v0 == 0) { @@ -576,7 +576,7 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB43C.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B8FFC(? *, s32, s32); // extern ? func_800BAA80(s32, s32, s32, s32); // extern -extern ? D_803AFBE8; +extern ? D_803BFBE8; void func_800BB484(void **arg0, s32 arg1, s32 arg2) { void *sp2C; @@ -604,7 +604,7 @@ void func_800BB484(void **arg0, s32 arg1, s32 arg2) { temp_a3_2 = temp_a3->unk4 + arg2; sp28 = temp_a3_2; sp2C = temp_a3; - temp_v0_2 = func_800B8FFC(&D_803AFBE8, temp_a3->unk10, temp_a3_2); + temp_v0_2 = func_800B8FFC(&D_803BFBE8, temp_a3->unk10, temp_a3_2); if (temp_v0_2 == 0) { temp_a3->unk4 = temp_a3_2; temp_a3->unk1 = 1; diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index b41fc6a9c..0cfca8028 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -50,6 +50,11 @@ u64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 cou u64 *process_envelope(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags); u64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight); + +u64 gGfxSPTaskOutputBuffer[0x3F00]; + +u32 gGfxSPTaskOutputBufferSize; +u32 padding3[2]; struct SynthesisReverb gSynthesisReverbs[4]; u8 sAudioSynthesisPad[0x10]; s16 gVolume; @@ -60,10 +65,10 @@ struct NoteSubEu *gNoteSubsEu; extern struct Note *D_803B7088; extern s32 D_803B70B0; -f32 gLeftVolRampings[3][1024]; -f32 gRightVolRampings[3][1024]; -f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above -f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above +f32 gLeftVolRampings; +//f32 gRightVolRampings[3][1024]; +//f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above +//f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above u8 audioString1[] = "pitch %x: delaybytes %d : olddelay %d\n"; u8 audioString2[] = "cont %x: delaybytes %d : olddelay %d\n"; diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index 106d8ff23..cb7dba792 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -50,10 +50,10 @@ struct SynthesisReverb { extern struct SynthesisReverb gSynthesisReverbs[4]; extern s8 gNumSynthesisReverbs; extern struct NoteSubEu *gNoteSubsEu; -extern f32 gLeftVolRampings[3][1024]; -extern f32 gRightVolRampings[3][1024]; -extern f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above -extern f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above +extern f32 gLeftVolRampings; +//extern f32 gRightVolRampings[3][1024]; +//extern f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above +//extern f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen); diff --git a/src/code_8028DF00.c b/src/code_8028DF00.c index d2f4abb33..b065ab221 100644 --- a/src/code_8028DF00.c +++ b/src/code_8028DF00.c @@ -115,6 +115,8 @@ extern void func_80005AE8(); extern u16 D_8015F894; +//u32 testbss[0x200]; + u16 D_802BA030; u16 D_802BA032; diff --git a/src/framebuffers.c b/src/framebuffers.c index dff76823f..9684baeaa 100644 --- a/src/framebuffers.c +++ b/src/framebuffers.c @@ -2,8 +2,10 @@ #include "config.h" +u8 D_802BA290[224]; + +u8 frameBufferPadding[22544]; -u8 D_802BA290[22768]; u8 D_802BFB80[77824]; u8 D_802D2B80[32768]; // Luigi raceway course path ghost diff --git a/src/memory.c b/src/memory.c index 9f11b084c..8358bbc3d 100644 --- a/src/memory.c +++ b/src/memory.c @@ -31,7 +31,6 @@ struct MainPoolBlock { extern uintptr_t gSegmentTable[16]; - extern s32 D_801502A0; s32 D_802BA270; s32 D_802BA274; From fc4411edeaf43c7ded4c1b38f355bd728d40fd42 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Thu, 3 Mar 2022 19:24:44 -0700 Subject: [PATCH 2/4] Update bss_8028DF00.s --- asm/bss_8028DF00.s | 1 - 1 file changed, 1 deletion(-) diff --git a/asm/bss_8028DF00.s b/asm/bss_8028DF00.s index 7dc81de4b..920a0219d 100644 --- a/asm/bss_8028DF00.s +++ b/asm/bss_8028DF00.s @@ -2,7 +2,6 @@ .section .bss - glabel D_802BA050 .skip 4 From d25926eae41fbb96f6d4057cc49228fbd2a2b26c Mon Sep 17 00:00:00 2001 From: MegaMech Date: Thu, 3 Mar 2022 19:26:16 -0700 Subject: [PATCH 3/4] Update code_8028DF00.c --- src/code_8028DF00.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/code_8028DF00.c b/src/code_8028DF00.c index b065ab221..d2f4abb33 100644 --- a/src/code_8028DF00.c +++ b/src/code_8028DF00.c @@ -115,8 +115,6 @@ extern void func_80005AE8(); extern u16 D_8015F894; -//u32 testbss[0x200]; - u16 D_802BA030; u16 D_802BA032; From 345cbd4f1973f3066ec25f94500c83aecedd9b2c Mon Sep 17 00:00:00 2001 From: CoderStig <79828759+CoderStig@users.noreply.github.com> Date: Fri, 4 Mar 2022 23:10:21 -0700 Subject: [PATCH 4/4] Fix remaining pointers for shifting --- asm/bss_8028DF00.s | 38 ------------------- .../code_800393C0/func_8003D080.s | 8 ++-- asm/non_matchings/code_actors/func_802A0D54.s | 4 +- data/rodata_main.s | 2 +- mk64.ld | 17 --------- src/code_800029B0.c | 2 +- src/code_8001C4D0.c | 1 - src/code_800393C0.c | 2 - src/code_8028DF00.c | 2 +- src/crash_screen.c | 1 + src/main.c | 18 +++++++-- 11 files changed, 24 insertions(+), 71 deletions(-) diff --git a/asm/bss_8028DF00.s b/asm/bss_8028DF00.s index 7dc81de4b..736a7d1d9 100644 --- a/asm/bss_8028DF00.s +++ b/asm/bss_8028DF00.s @@ -2,7 +2,6 @@ .section .bss - glabel D_802BA050 .skip 4 @@ -20,40 +19,3 @@ glabel D_802BA060 glabel D_802BA260 .skip 16 - -#glabel D_802BA270 -#.skip 4 - -#glabel D_802BA274 -#.skip 4 # 4 - -#glabel sPoolFreeSpace -#.skip 4 - -#glabel sPoolListHeadL -#.skip 4 - -#glabel sPoolListHeadR -#.skip 875776 # 16 - -#glabel D_802BA290 -#.skip 22768 # 100592 - -#glabel D_802BFB80 -#.skip 77824 - -#glabel D_802D2B80 -#.skip 32768 - -#glabel D_802DAB80 -#.skip 20480 - -#glabel D_802DFB80 -#.skip 74752 - -#glabel D_802F1F80 -#.skip 32768 - -#glabel gZBuffer -#.skip 153600 - diff --git a/asm/non_matchings/code_800393C0/func_8003D080.s b/asm/non_matchings/code_800393C0/func_8003D080.s index 729ccd282..17f88e5e6 100644 --- a/asm/non_matchings/code_800393C0/func_8003D080.s +++ b/asm/non_matchings/code_800393C0/func_8003D080.s @@ -86,7 +86,7 @@ glabel func_8003D080 .L8003D1BC: /* 03DDBC 8003D1BC 3C01800F */ lui $at, %hi(gPlayers+0x14) # $at, 0x800f /* 03DDC0 8003D1C0 C42C69A4 */ lwc1 $f12, %lo(gPlayers+0x14)($at) -/* 03DDC4 8003D1C4 3C01800F */ lui $at, %hi(gPlayers+0x14) # $at, 0x800f +/* 03DDC4 8003D1C4 3C01800F */ lui $at, %hi(gPlayers+0x18) # $at, 0x800f /* 03DDC8 8003D1C8 3C07800F */ lui $a3, %hi(gPlayers+0x2E) # $a3, 0x800f /* 03DDCC 8003D1CC 24090001 */ li $t1, 1 /* 03DDD0 8003D1D0 AFA90010 */ sw $t1, 0x10($sp) @@ -151,13 +151,13 @@ glabel func_8003D080 .L8003D2AC: /* 03DEAC 8003D2AC 3C01800F */ lui $at, %hi(gPlayers+0x14) # $at, 0x800f /* 03DEB0 8003D2B0 C42C69A4 */ lwc1 $f12, %lo(gPlayers+0x14)($at) -/* 03DEB4 8003D2B4 3C01800F */ lui $at, %hi(gPlayers+0x14) # $at, 0x800f +/* 03DEB4 8003D2B4 3C01800F */ lui $at, %hi(gPlayers+0x18) # $at, 0x800f /* 03DEB8 8003D2B8 3C07800F */ lui $a3, %hi(gPlayers+0x2E) # $a3, 0x800f /* 03DEBC 8003D2BC 240E0009 */ li $t6, 9 /* 03DEC0 8003D2C0 AFAE0010 */ sw $t6, 0x10($sp) /* 03DEC4 8003D2C4 84E769BE */ lh $a3, %lo(gPlayers+0x2E)($a3) /* 03DEC8 8003D2C8 C42E69A8 */ lwc1 $f14, %lo(gPlayers+0x18)($at) -/* 03DECC 8003D2CC 8CC669AC */ lw $a2, 0x69ac($a2) +/* 03DECC 8003D2CC 8CC669AC */ lw $a2, %lo(gPlayers+0x1C)($a2) # 0x69ac($a2) /* 03DED0 8003D2D0 0C007134 */ jal func_8001C4D0 /* 03DED4 8003D2D4 AFA00014 */ sw $zero, 0x14($sp) /* 03DED8 8003D2D8 3C02800F */ lui $v0, %hi(gPlayers+0xDD8) # $v0, 0x800f @@ -377,7 +377,7 @@ glabel func_8003D080 /* 03E20C 8003D60C AFAB0010 */ sw $t3, 0x10($sp) /* 03E210 8003D610 84E769BE */ lh $a3, %lo(gPlayers+0x2E)($a3) /* 03E214 8003D614 C42E69A8 */ lwc1 $f14, %lo(gPlayers+0x18)($at) -/* 03E218 8003D618 8CC669AC */ lw $a2, 0x69ac($a2) +/* 03E218 8003D618 8CC669AC */ lw $a2, %lo(gPlayers+0x1C)($a2) # 0x69ac($a2) /* 03E21C 8003D61C 0C007134 */ jal func_8001C4D0 /* 03E220 8003D620 AFA00014 */ sw $zero, 0x14($sp) /* 03E224 8003D624 3C02800F */ lui $v0, %hi(gPlayers+0xDD8) # $v0, 0x800f diff --git a/asm/non_matchings/code_actors/func_802A0D54.s b/asm/non_matchings/code_actors/func_802A0D54.s index 62a79b237..4f50b4bfb 100644 --- a/asm/non_matchings/code_actors/func_802A0D54.s +++ b/asm/non_matchings/code_actors/func_802A0D54.s @@ -8,10 +8,10 @@ glabel func_802A0D54 /* 10A37C 802A0D6C AFB20020 */ sw $s2, 0x20($sp) /* 10A380 802A0D70 3C11800F */ lui $s1, %hi(gPlayers) # $s1, 0x800f /* 10A384 802A0D74 3C138016 */ lui $s3, %hi(D_8015F9B8) # $s3, 0x8016 -/* 10A388 802A0D78 3C168010 */ lui $s6, 0x8010 # fake pointer. Bitflag +/* 10A388 802A0D78 3C168010 */ lui $s6, %hi(gPlayers+0x6EC0) # 0x8010 /* 10A38C 802A0D7C AFBF0034 */ sw $ra, 0x34($sp) /* 10A390 802A0D80 AFB00018 */ sw $s0, 0x18($sp) -/* 10A394 802A0D84 26D6D850 */ addiu $s6, $s6, -0x27b0 # fake pointer +/* 10A394 802A0D84 26D6D850 */ addiu $s6, $s6, %lo(gPlayers+0x6EC0) # -0x27b0 /* 10A398 802A0D88 2673F9B8 */ addiu $s3, %lo(D_8015F9B8) # addiu $s3, $s3, -0x648 /* 10A39C 802A0D8C 26316990 */ addiu $s1, %lo(gPlayers) # addiu $s1, $s1, 0x6990 /* 10A3A0 802A0D90 3C120400 */ lui $s2, 0x400 diff --git a/data/rodata_main.s b/data/rodata_main.s index 14237da87..01a2037cd 100644 --- a/data/rodata_main.s +++ b/data/rodata_main.s @@ -47,4 +47,4 @@ #.word L800026B4, L800026CC, L800026E4, L800026FC #.word L80002714, L8000272C, L8000276C, L8000276C #.word L8000276C, L8000274C -glabel D_800EB670 +#glabel D_800EB670 diff --git a/mk64.ld b/mk64.ld index 14398a18d..c3d28a3d5 100644 --- a/mk64.ld +++ b/mk64.ld @@ -214,18 +214,15 @@ SECTIONS BUILD_DIR/src/os/_Litob.o(.text); BUILD_DIR/src/os/_Ldtob.o(.text); BUILD_DIR/src/os/ldiv.o(.text); - BUILD_DIR/data/rsp.o(.text); BUILD_DIR/src/main.o(.data); BUILD_DIR/data/data_0DD0A0.o(.data); BUILD_DIR/src/code_800029B0.o(.data); - BUILD_DIR/data/data_0DD0A0_0.o(.data); BUILD_DIR/src/crash_screen.o(.data); BUILD_DIR/src/staff_ghosts.o(.data); BUILD_DIR/data/data_0DD0A0_1.o(.data); BUILD_DIR/src/code_8001C4D0.o(.data); - BUILD_DIR/src/code_8001F980.o(.data); BUILD_DIR/data/data_0DD0A0_1_1.o(.data); BUILD_DIR/src/kart_attributes.inc.o(.data); BUILD_DIR/data/data_0DD0A0_2.o(.rodata); @@ -234,7 +231,6 @@ SECTIONS BUILD_DIR/src/os/osViTable.o(.data); BUILD_DIR/src/os/osCreatePiManager.o(.data); BUILD_DIR/src/os/osContInit.o(.data); - BUILD_DIR/data/data_0DD0A0_2_1.o(.data); BUILD_DIR/src/os/osTimer.o(.data); BUILD_DIR/src/os/__osViInit.o(.data); @@ -243,7 +239,6 @@ SECTIONS BUILD_DIR/src/os/_Printf.o(.data); BUILD_DIR/src/os/osViData.o(.data); BUILD_DIR/src/os/_Litob.o(.data); - BUILD_DIR/data/rodata_main.o(.rodata); BUILD_DIR/src/main.o(.rodata); BUILD_DIR/src/code_800029B0.o(.rodata); BUILD_DIR/data/data_0DD0A0_3.o(.rodata); @@ -294,15 +289,7 @@ SECTIONS BUILD_DIR/asm/bss_after_diskinit.o(.bss); } END_NOLOAD(main) - - _mainSegmentNoloadSize = SIZEOF(.main.noload) + 0x10; - _mainSegmentNoloadSizeHi = _mainSegmentNoloadSize >> 16; - _mainSegmentNoloadSizeLo = _mainSegmentNoloadSize & 0xFFFF; - - - - /* 0x8028DF00 0F7510-123640 [2C130] */ BEGIN_SEG(code_8028DF00, SEG_8028DF00) { @@ -340,10 +327,6 @@ SECTIONS _code_8028DF00SegmentNoloadSizeHi = _code_8028DF00SegmentNoloadSize >> 16; _code_8028DF00SegmentNoloadSizeLo = _code_8028DF00SegmentNoloadSize & 0xFFFF; - - - - /* 0x80280000 123640-12AAE0 [74A0] */ BEGIN_SEG(code_80280000, SEG_80280000) { diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 630322b5d..539a797ea 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -101,7 +101,7 @@ Lights1 D_800DC610[] = { gdSPDefLights1(175, 175, 175, 255, 255, 255, 0, 0, 120), gdSPDefLights1(115, 115, 115, 255, 255, 255, 0, 0, 120), }; -static s32 pad = 0x80000000; +static s32 pad_800029B0 = 0x80000000; s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY; s16 gPlaceItemBoxes = 1; diff --git a/src/code_8001C4D0.c b/src/code_8001C4D0.c index 6e2589a7b..eaf9f8661 100644 --- a/src/code_8001C4D0.c +++ b/src/code_8001C4D0.c @@ -14,7 +14,6 @@ Camera *camera1 = &cameras[0]; Camera *camera2 = &cameras[1]; Camera *camera3 = &cameras[2]; Camera *camera4 = &cameras[3]; -//s32 test; extern Player *gPlayerTwo; diff --git a/src/code_800393C0.c b/src/code_800393C0.c index 4cb55837d..9b8cd60f5 100644 --- a/src/code_800393C0.c +++ b/src/code_800393C0.c @@ -12,8 +12,6 @@ extern Camera *camera2; extern Camera *camera3; extern Camera *camera4; -//GLOBAL_ASM("asm/non_matchings/code_800393C0/spawn_player.s") - void spawn_player(Player *player, s8 playerIndex, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u16 arg6, s16 arg7) { f32 ret; s8 idx; diff --git a/src/code_8028DF00.c b/src/code_8028DF00.c index b065ab221..57790549a 100644 --- a/src/code_8028DF00.c +++ b/src/code_8028DF00.c @@ -115,7 +115,7 @@ extern void func_80005AE8(); extern u16 D_8015F894; -//u32 testbss[0x200]; + u16 D_802BA030; u16 D_802BA032; diff --git a/src/crash_screen.c b/src/crash_screen.c index d903ed284..87d999bb6 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -47,6 +47,7 @@ extern void read_controllers(); extern struct Controller *gControllerOne; +//s32 shift = 0; u32 D_800DC670 = 0; diff --git a/src/main.c b/src/main.c index 3cc63bfe0..05dd6b1a3 100644 --- a/src/main.c +++ b/src/main.c @@ -63,6 +63,9 @@ struct Controller *gControllerFive = &gControllers[4]; // 0x800DC4CC struct Controller *gControllerSix = &gControllers[5]; // 0x800DC4D0 struct Controller *gControllerSeven = &gControllers[6]; // 0x800DC4D4 struct Controller *gControllerEight = &gControllers[7]; // 0x800DC4D8 +//Player shift[1]; +//Player *shifting = &shift[0]; + Player gPlayers[8]; Player *gPlayerOne = &gPlayers[0]; // 0x800DC4DC @@ -171,8 +174,8 @@ u16 gEnableDebugMode = 0; s32 D_800DC524 = 7; // = COURSE_DATA_MENU?; UNUSED s32 D_800DC528 = 1; s32 gActiveScreenMode = SCREEN_MODE_1P; - -s32 gScreenModeSelection[2] = {0}; +s32 gScreenModeSelection = 0; +UNUSED s32 D_800DC534 = 0; s32 gPlayerCountSelection1 = 2; s32 gModeSelection = GRAND_PRIX; @@ -1123,7 +1126,7 @@ void func_80002684(void) { extern s32 D_800DC600; extern s32 D_8015F8B8, D_8015F8BC, D_8015F8C0, D_8015F8C4, D_8015F8C8, D_8015F8CC; - +//extern u8 _networkSegmentRomStart; void thread5_game_logic(s32 arg0) { osCreateMesgQueue(&D_8014EF88, &D_8014F00C, 1); osCreateMesgQueue(&D_8014EF70, &D_8014F008, 1); @@ -1142,6 +1145,13 @@ void thread5_game_logic(s32 arg0) { read_controllers(); func_800C5CB8(); + //set_segment_base_addr(0x8, SEG_NETWORK); + //osInvalICache(SEG_NETWORK, 0x90); + //osInvalDCache(SEG_NETWORK+0x90, 0xFF); + //osPiStartDma(&gDmaIoMesg, 0, 0, &_networkSegmentRomStart, SEG_NETWORK, 0xFF, &gDmaMesgQueue); + //osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1); + + while(1) { func_800CB2C4(); if (D_800DC524 != D_800DC50C) { @@ -1174,4 +1184,4 @@ void thread4_audio(UNUSED s32 arg0) { } profiler_log_thread4_time(); } -} +} \ No newline at end of file