diff --git a/.github/calcrom/calcrom.pl b/.github/calcrom/calcrom.pl index 94a8d8c..cc0eb83 100755 --- a/.github/calcrom/calcrom.pl +++ b/.github/calcrom/calcrom.pl @@ -162,28 +162,14 @@ my $incbin_bytes_as_string; # to convert to a number becomes 0. So if our converted number is 0, but our string # is nonzero, then the conversion was an error. my $undocumented = $undocumented_as_string + 0; -(($undocumented != 0) and ($undocumented_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$undocumented_as_string'"; - my $partial_documented = $partial_documented_as_string + 0; -(($partial_documented != 0) and ($partial_documented_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$partial_documented_as_string'"; my $total_syms = $total_syms_as_string + 0; -(($total_syms != 0) and ($total_syms_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$total_syms_as_string'"; - ($total_syms != 0) or die "ERROR: No symbols found."; my $incbin_count = $incbin_count_as_string + 0; -(($incbin_count != 0) and ($incbin_count_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$incbin_count_as_string'"; - my $incbin_bytes = $incbin_bytes_as_string + 0; -(($incbin_bytes != 0) and ($incbin_bytes_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$incbin_bytes_as_string'"; - my $functions_remaining_cmd = "git grep 'thumb_func_start' ':/asm/**.s'"; my $functions_remaining_as_string; @@ -193,9 +179,8 @@ my $functions_remaining_as_string; timeout => 60 )) or die "ERROR: Error while calculating TODO totals: $?"; + my $functions_remaining_count = $functions_remaining_as_string + 0; -(($functions_remaining_count != 0) and ($functions_remaining_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$functions_remaining_as_string'"; my $nonmatching_cmd = "git grep -E 'asm_unified' ':/' ':(exclude)*.pl' ':(exclude)include/global.h'"; my $nonmatching_as_string; @@ -205,9 +190,8 @@ my $nonmatching_as_string; timeout => 60 )) or die "ERROR: Error while calculating asm_unified totals: $?"; + my $nonmatching_count = $nonmatching_as_string + 0; -(($nonmatching_count != 0) and ($nonmatching_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$nonmatching_as_string'"; my $expected_objs_cmd = "ls -1 expected_objs/"; my $expected_objs_as_string; @@ -217,9 +201,8 @@ my $expected_objs_as_string; timeout => 60 )) or die "ERROR: Error while calculating asm_unified totals: $?"; + my $expected_objs_count = $expected_objs_as_string + 0; -(($expected_objs_count != 0) and ($expected_objs_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$expected_objs_as_string'"; @@ -314,9 +297,6 @@ if ($verbose != 0) )) or die "ERROR: Error while calculating TODO totals: $?"; my $todo_count = $todo_as_string + 0; - (($todo_count != 0) and ($todo_as_string ne "0")) - or die "ERROR: Cannot convert string to num: '$todo_as_string'"; - print "\n"; printf "%8d comments are labeled TODO\n", $todo_count; } diff --git a/asm/rom_203CC.s b/asm/rom_203CC.s deleted file mode 100644 index 2515dfb..0000000 --- a/asm/rom_203CC.s +++ /dev/null @@ -1,1344 +0,0 @@ -#include "constants/global.h" -#include "constants/bg_music.h" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_203CC -sub_203CC: @ 0x080203CC - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - bl sub_20EC0 - ldr r6, _0802042C @ =gCurrentPinballGame - ldr r5, [r6] - movs r1, #0xe3 - lsls r1, r1, #1 - adds r0, r5, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #0xa7 - ble _0802044C - ldr r4, _08020430 @ =gUnknown_086ADF48 - ldr r0, _08020434 @ =gMain - ldr r0, [r0, #0x50] - movs r1, #0xa0 - bl __umodsi3 - movs r1, #5 - bl __udivsi3 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r1, [r0] - ldr r3, _08020438 @ =0x00000744 - adds r0, r5, r3 - strb r1, [r0] - ldr r2, [r6] - movs r4, #0xf1 - lsls r4, r4, #1 - adds r0, r2, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020440 - adds r0, r2, r3 - ldrb r0, [r0] - adds r0, #6 - ldr r5, _0802043C @ =0x00000745 - adds r1, r2, r5 - strb r0, [r1] - b _0802049C - .align 2, 0 -_0802042C: .4byte gCurrentPinballGame -_08020430: .4byte gUnknown_086ADF48 -_08020434: .4byte gMain -_08020438: .4byte 0x00000744 -_0802043C: .4byte 0x00000745 -_08020440: - ldr r7, _08020448 @ =0x00000744 - adds r0, r2, r7 - b _08020494 - .align 2, 0 -_08020448: .4byte 0x00000744 -_0802044C: - ldr r0, _08020484 @ =gMain - ldr r0, [r0, #0x50] - movs r1, #0x32 - bl __umodsi3 - movs r1, #0x19 - bl __udivsi3 - ldr r4, _08020488 @ =0x00000744 - adds r1, r5, r4 - strb r0, [r1] - ldr r2, [r6] - movs r5, #0xf1 - lsls r5, r5, #1 - adds r0, r2, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020490 - adds r0, r2, r4 - ldrb r0, [r0] - adds r0, #9 - ldr r7, _0802048C @ =0x00000745 - adds r1, r2, r7 - strb r0, [r1] - b _0802049C - .align 2, 0 -_08020484: .4byte gMain -_08020488: .4byte 0x00000744 -_0802048C: .4byte 0x00000745 -_08020490: - ldr r1, _080204C8 @ =0x00000744 - adds r0, r2, r1 -_08020494: - ldrb r1, [r0] - ldr r3, _080204CC @ =0x00000745 - adds r0, r2, r3 - strb r1, [r0] -_0802049C: - ldr r1, _080204D0 @ =gCurrentPinballGame - ldr r5, [r1] - movs r4, #0xf1 - lsls r4, r4, #1 - adds r3, r5, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - mov sl, r1 - cmp r0, #2 - bne _080204D8 - ldr r7, _080204D4 @ =0x000001E3 - adds r0, r5, r7 - movs r1, #1 - strb r1, [r0] - mov r2, sl - ldr r0, [r2] - movs r3, #0xf2 - lsls r3, r3, #1 - adds r0, r0, r3 - strb r1, [r0] - b _08020500 - .align 2, 0 -_080204C8: .4byte 0x00000744 -_080204CC: .4byte 0x00000745 -_080204D0: .4byte gCurrentPinballGame -_080204D4: .4byte 0x000001E3 -_080204D8: - movs r1, #0 - ldrsb r1, [r3, r1] - ldr r3, _0802060C @ =0x000001E3 - adds r0, r5, r3 - adds r0, r0, r1 - movs r4, #0 - movs r2, #1 - strb r2, [r0] - mov r5, sl - ldr r0, [r5] - movs r7, #0xf1 - lsls r7, r7, #1 - adds r1, r0, r7 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - subs r2, r2, r1 - adds r0, r0, r3 - adds r0, r0, r2 - strb r4, [r0] -_08020500: - mov r0, sl - ldr r1, [r0] - movs r3, #0xe2 - lsls r3, r3, #1 - adds r2, r1, r3 - ldrh r4, [r2] - cmp r4, #0 - bne _08020512 - b _0802073A -_08020512: - cmp r4, #0x78 - beq _08020518 - b _080206CC -_08020518: - movs r5, #0xe1 - lsls r5, r5, #1 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, r1, r0 - movs r7, #0xf1 - lsls r7, r7, #1 - adds r0, r0, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08020538 - b _080206CC -_08020538: - movs r6, #0xe3 - lsls r6, r6, #1 - adds r0, r1, r6 - movs r3, #0 - ldrsh r0, [r0, r3] - cmp r0, #0xa7 - ble _08020630 - movs r5, #0 - movs r3, #1 - strb r3, [r1, #0x1f] - mov r7, sl - ldr r0, [r7] - ldr r1, _08020610 @ =0x0000061C - adds r0, r0, r1 - strb r3, [r0] - ldr r1, [r7] - movs r7, #0xef - lsls r7, r7, #1 - adds r2, r1, r7 - movs r0, #0 - mov r8, r0 - strh r4, [r2] - adds r7, #2 - adds r0, r1, r7 - strh r4, [r0] - ldrh r2, [r2] - ldr r4, _08020614 @ =0x0000061E - adds r0, r1, r4 - strh r2, [r0] - ldr r7, _08020618 @ =0x000005F7 - adds r1, r1, r7 - strb r3, [r1] - mov r1, sl - ldr r0, [r1] - movs r2, #0x82 - lsls r2, r2, #2 - adds r1, r0, r2 - strh r5, [r1] - ldr r3, _0802061C @ =0x0000020A - adds r0, r0, r3 - mov r4, r8 - strb r4, [r0] - mov r7, sl - ldr r2, [r7] - movs r1, #0xf1 - lsls r1, r1, #1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - beq _080205E4 - adds r0, r2, r6 - strh r5, [r0] - subs r3, #0x42 - adds r0, r2, r3 - strh r5, [r0] - movs r4, #0xe6 - lsls r4, r4, #1 - adds r0, r2, r4 - strh r5, [r0] - movs r7, #0xe5 - lsls r7, r7, #1 - adds r0, r2, r7 - strh r5, [r0] - subs r1, #0xe - adds r0, r2, r1 - strh r5, [r0] - adds r3, #0xe - adds r1, r2, r3 - ldr r0, _08020620 @ =0x0000FFFC - strh r0, [r1] - adds r4, #0xc - adds r0, r2, r4 - movs r1, #0x80 - lsls r1, r1, #1 - strh r1, [r0] - adds r7, #0x10 - adds r0, r2, r7 - strh r1, [r0] - adds r1, #0xce - adds r0, r2, r1 - strh r5, [r0] - subs r3, #6 - adds r0, r2, r3 - strh r5, [r0] -_080205E4: - mov r4, sl - ldr r1, [r4] - movs r5, #0xc4 - lsls r5, r5, #3 - adds r2, r1, r5 - ldr r7, _08020624 @ =0x0000132C - adds r0, r1, r7 - ldr r0, [r0] - ldr r0, [r0, #0x28] - str r0, [r2] - ldr r0, _08020628 @ =0x00007530 - str r0, [r1, #0x3c] - ldr r0, _0802062C @ =0x0000062E - adds r1, r1, r0 - ldrb r0, [r1] - cmp r0, #0x62 - bhi _0802063C - adds r0, #1 - strb r0, [r1] - b _0802063C - .align 2, 0 -_0802060C: .4byte 0x000001E3 -_08020610: .4byte 0x0000061C -_08020614: .4byte 0x0000061E -_08020618: .4byte 0x000005F7 -_0802061C: .4byte 0x0000020A -_08020620: .4byte 0x0000FFFC -_08020624: .4byte 0x0000132C -_08020628: .4byte 0x00007530 -_0802062C: .4byte 0x0000062E -_08020630: - movs r0, #0x3c - strh r0, [r2] - ldr r0, _0802067C @ =gMPlayInfo_SE1 - ldr r1, _08020680 @ =gUnknown_086A2FA0 - bl MPlayStart -_0802063C: - ldr r0, _08020684 @ =gCurrentPinballGame - ldr r5, [r0] - movs r2, #0xe1 - lsls r2, r2, #1 - adds r1, r5, r2 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - subs r1, #1 - lsls r1, r1, #0x10 - lsrs r2, r1, #0x10 - movs r3, #0xf1 - lsls r3, r3, #1 - adds r1, r5, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - mov sl, r0 - cmp r1, #2 - bne _0802068C - lsls r3, r2, #0x10 - asrs r1, r3, #0x10 - ldr r4, _08020688 @ =0x00000744 - adds r2, r5, r4 - adds r2, r2, r1 - lsls r0, r1, #3 - subs r0, r0, r1 - adds r0, #2 - strb r0, [r2] - mov r8, r3 - b _0802069C - .align 2, 0 -_0802067C: .4byte gMPlayInfo_SE1 -_08020680: .4byte gUnknown_086A2FA0 -_08020684: .4byte gCurrentPinballGame -_08020688: .4byte 0x00000744 -_0802068C: - lsls r2, r2, #0x10 - asrs r1, r2, #0x10 - ldr r7, _08020700 @ =0x00000744 - adds r0, r5, r7 - adds r0, r0, r1 - movs r1, #2 - strb r1, [r0] - mov r8, r2 -_0802069C: - ldr r3, _08020704 @ =0x040000D4 - mov r1, sl - ldr r0, [r1] - mov r4, r8 - asrs r2, r4, #0x10 - ldr r5, _08020700 @ =0x00000744 - adds r0, r0, r5 - adds r0, r0, r2 - ldrb r1, [r0] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08020708 @ =gUnknown_084C07EC - adds r0, r0, r1 - str r0, [r3] - lsls r0, r2, #1 - adds r0, r0, r2 - lsls r0, r0, #7 - ldr r7, _0802070C @ =0x06010480 - adds r0, r0, r7 - str r0, [r3, #4] - ldr r0, _08020710 @ =0x800000C0 - str r0, [r3, #8] - ldr r0, [r3, #8] -_080206CC: - mov r0, sl - ldr r2, [r0] - movs r1, #0xf1 - lsls r1, r1, #1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020714 - movs r3, #0xe1 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - ldr r4, _08020700 @ =0x00000744 - adds r2, r2, r4 - adds r2, r2, r0 - lsls r1, r0, #3 - subs r1, r1, r0 - adds r1, #2 - strb r1, [r2] - b _0802072A - .align 2, 0 -_08020700: .4byte 0x00000744 -_08020704: .4byte 0x040000D4 -_08020708: .4byte gUnknown_084C07EC -_0802070C: .4byte 0x06010480 -_08020710: .4byte 0x800000C0 -_08020714: - movs r5, #0xe1 - lsls r5, r5, #1 - adds r0, r2, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, r2, r0 - ldr r7, _080207B4 @ =0x00000743 - adds r0, r0, r7 - movs r1, #2 - strb r1, [r0] -_0802072A: - mov r0, sl - ldr r1, [r0] - movs r2, #0xe2 - lsls r2, r2, #1 - adds r1, r1, r2 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] -_0802073A: - mov r3, sl - ldr r5, [r3] - ldr r4, _080207B8 @ =0x0000061C - adds r0, r5, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0802074E - b _08020D82 -_0802074E: - ldr r7, _080207BC @ =0x0000061E - mov sb, r7 - mov r0, sb - adds r6, r5, r0 - ldrh r7, [r6] - mov r8, r7 - mov r1, r8 - cmp r1, #1 - bhi _08020762 - b _08020928 -_08020762: - movs r2, #0xef - lsls r2, r2, #1 - adds r4, r5, r2 - ldrh r0, [r4] - lsls r0, r0, #0x10 - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - subs r0, r7, #1 - strh r0, [r6] - ldrh r0, [r4] - cmp r0, #0 - beq _08020796 - subs r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x28 - bne _08020796 - ldrh r0, [r6] - cmp r0, #0x28 - bls _08020796 - movs r0, #0x3c - strh r0, [r4] -_08020796: - ldr r3, _080207C0 @ =gCurrentPinballGame - ldr r1, [r3] - ldr r4, _080207BC @ =0x0000061E - adds r2, r1, r4 - ldrh r0, [r2] - cmp r0, #0x74 - bne _08020832 - adds r1, #0xe4 - ldrb r0, [r1] - cmp r0, #0 - beq _080207C4 - movs r0, #0x78 - strh r0, [r2] - b _08020832 - .align 2, 0 -_080207B4: .4byte 0x00000743 -_080207B8: .4byte 0x0000061C -_080207BC: .4byte 0x0000061E -_080207C0: .4byte gCurrentPinballGame -_080207C4: - movs r0, #1 - strb r0, [r1] - ldr r1, [r3] - movs r7, #0xf1 - lsls r7, r7, #1 - adds r0, r1, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020820 - movs r2, #0xe1 - lsls r2, r2, #1 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #1 - bne _080207FC - ldr r0, _080207F4 @ =gMPlayInfo_SE1 - ldr r1, _080207F8 @ =gUnknown_086A0328 - bl MPlayStart - b _08020804 - .align 2, 0 -_080207F4: .4byte gMPlayInfo_SE1 -_080207F8: .4byte gUnknown_086A0328 -_080207FC: - ldr r0, _08020810 @ =gMPlayInfo_SE1 - ldr r1, _08020814 @ =gUnknown_086A0368 - bl MPlayStart -_08020804: - ldr r0, _08020818 @ =gMPlayInfo_BGM - ldr r1, _0802081C @ =0x0000FFFF - movs r2, #0x40 - bl m4aMPlayVolumeControl - b _08020832 - .align 2, 0 -_08020810: .4byte gMPlayInfo_SE1 -_08020814: .4byte gUnknown_086A0368 -_08020818: .4byte gMPlayInfo_BGM -_0802081C: .4byte 0x0000FFFF -_08020820: - ldr r0, _08020900 @ =gMPlayInfo_SE1 - ldr r1, _08020904 @ =gUnknown_086A0328 - bl MPlayStart - ldr r0, _08020908 @ =gMPlayInfo_BGM - ldr r1, _0802090C @ =0x0000FFFF - movs r2, #0x40 - bl m4aMPlayVolumeControl -_08020832: - ldr r0, _08020910 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r3, _08020914 @ =0x0000061E - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, #0x73 - bne _08020856 - adds r0, r1, #0 - adds r0, #0xe4 - ldrb r0, [r0] - cmp r0, #1 - bne _08020856 - ldr r0, _08020900 @ =gMPlayInfo_SE1 - ldr r1, _0802090C @ =0x0000FFFF - movs r2, #0x80 - lsls r2, r2, #2 - bl m4aMPlayVolumeControl -_08020856: - adds r0, r5, #0 - bl Sin - adds r1, r0, #0 - ldr r0, _08020910 @ =gCurrentPinballGame - ldr r4, [r0] - ldr r5, _08020918 @ =0x0000132C - adds r5, r5, r4 - mov r8, r5 - ldr r7, [r5] - mov sb, r7 - movs r0, #0xc4 - lsls r0, r0, #3 - adds r6, r4, r0 - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - ldr r1, _0802091C @ =0x00004E20 - bl __divsi3 - ldrh r5, [r6] - adds r5, r5, r0 - ldr r1, _08020920 @ =gUnknown_086ADF8A - movs r2, #0xe1 - lsls r2, r2, #1 - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r3, #0 - ldrsh r2, [r0, r3] - lsls r2, r2, #1 - movs r7, #0 - ldrsh r0, [r6, r7] - subs r2, r2, r0 - movs r0, #0xf0 - lsls r0, r0, #1 - adds r6, r4, r0 - ldrh r1, [r6] - movs r3, #0xef - lsls r3, r3, #1 - adds r7, r4, r3 - ldrh r0, [r7] - subs r0, r1, r0 - muls r0, r2, r0 - bl __divsi3 - adds r5, r5, r0 - mov r0, sb - strh r5, [r0, #0x28] - ldrh r1, [r6] - ldrh r2, [r7] - subs r2, r1, r2 - lsls r0, r2, #2 - adds r0, r0, r2 - lsls r0, r0, #3 - bl __divsi3 - mov r1, r8 - ldr r2, [r1] - ldr r3, _08020924 @ =0x00000622 - adds r4, r4, r3 - ldrh r1, [r4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - subs r1, r1, r0 - strh r1, [r2, #0x2a] - mov r4, r8 - ldr r1, [r4] - movs r5, #0x28 - ldrsh r0, [r1, r5] - lsls r0, r0, #7 - str r0, [r1, #0x34] - ldr r1, [r4] - movs r7, #0x2a - ldrsh r0, [r1, r7] - lsls r0, r0, #7 - str r0, [r1, #0x38] - b _080209FE - .align 2, 0 -_08020900: .4byte gMPlayInfo_SE1 -_08020904: .4byte gUnknown_086A0328 -_08020908: .4byte gMPlayInfo_BGM -_0802090C: .4byte 0x0000FFFF -_08020910: .4byte gCurrentPinballGame -_08020914: .4byte 0x0000061E -_08020918: .4byte 0x0000132C -_0802091C: .4byte 0x00004E20 -_08020920: .4byte gUnknown_086ADF8A -_08020924: .4byte 0x00000622 -_08020928: - mov r0, r8 - cmp r0, #1 - bne _080209FE - ldr r1, _08020A3C @ =0x0000132C - adds r2, r5, r1 - ldr r3, [r2] - ldr r1, _08020A40 @ =gUnknown_086ADF8A - movs r4, #0xe1 - lsls r4, r4, #1 - adds r0, r5, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - lsls r0, r0, #1 - adds r0, r0, r1 - movs r5, #0 - ldrsh r0, [r0, r5] - lsls r0, r0, #1 - movs r6, #0 - movs r5, #0 - strh r0, [r3, #0x28] - ldr r1, [r2] - ldr r0, _08020A44 @ =0x000002BE - strh r0, [r1, #0x2a] - ldr r1, [r2] - movs r7, #0x28 - ldrsh r0, [r1, r7] - lsls r0, r0, #7 - str r0, [r1, #0x34] - ldr r1, [r2] - movs r3, #0x2a - ldrsh r0, [r1, r3] - lsls r0, r0, #7 - str r0, [r1, #0x38] - ldr r0, [r2] - strh r5, [r0, #0x30] - ldr r1, [r2] - ldr r0, _08020A48 @ =0x0000FED4 - strh r0, [r1, #0x32] - movs r0, 0x7C @=SE_UNKNOWN_0x7C - bl m4aSongNumStart - mov r7, sl - ldr r1, [r7] - mov r2, sb - adds r0, r1, r2 - strh r5, [r0] - strb r6, [r1, #0x1f] - ldr r0, [r7] - ldr r3, _08020A4C @ =0x000005F7 - adds r0, r0, r3 - strb r6, [r0] - ldr r2, [r7] - adds r4, r2, r4 - movs r0, #0 - ldrsb r0, [r4, r0] - subs r0, #1 - lsls r1, r0, #1 - adds r1, r1, r0 - movs r4, #0xe2 - lsls r4, r4, #3 - adds r2, r2, r4 - adds r2, r2, r1 - mov r5, r8 - strb r5, [r2] - ldr r3, [r7] - ldr r7, _08020A50 @ =0x00000714 - adds r4, r3, r7 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _080209F8 - movs r1, #0xe2 - lsls r1, r1, #3 - adds r0, r3, r1 - ldr r2, _08020A54 @ =0x00000711 - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - ldr r5, _08020A58 @ =0x00000712 - adds r1, r3, r5 - ldrb r1, [r1] - ands r0, r1 - subs r7, #1 - adds r1, r3, r7 - ldrb r1, [r1] - ands r0, r1 - cmp r0, #0 - beq _080209F8 - mov r0, r8 - strb r0, [r4] - mov r1, sl - ldr r0, [r1] - ldr r2, _08020A5C @ =0x00000715 - adds r0, r0, r2 - movs r1, #0x7e - strb r1, [r0] - mov r3, sl - ldr r1, [r3] - movs r0, #0xfa - lsls r0, r0, #4 - str r0, [r1, #0x3c] -_080209F8: - movs r0, #0xb - bl sub_11B0 -_080209FE: - ldr r0, _08020A60 @ =gCurrentPinballGame - ldr r3, [r0] - ldr r4, _08020A64 @ =0x0000061E - adds r1, r3, r4 - ldrh r1, [r1] - mov sl, r0 - cmp r1, #0x63 - bls _08020AFC - movs r5, #0xf1 - lsls r5, r5, #1 - adds r0, r3, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020A6C - movs r7, #0xe1 - lsls r7, r7, #1 - adds r0, r3, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - ldr r1, _08020A68 @ =0x00000744 - adds r2, r3, r1 - adds r2, r2, r0 - lsls r1, r0, #3 - subs r1, r1, r0 - adds r1, #2 - strb r1, [r2] - b _08020A82 - .align 2, 0 -_08020A3C: .4byte 0x0000132C -_08020A40: .4byte gUnknown_086ADF8A -_08020A44: .4byte 0x000002BE -_08020A48: .4byte 0x0000FED4 -_08020A4C: .4byte 0x000005F7 -_08020A50: .4byte 0x00000714 -_08020A54: .4byte 0x00000711 -_08020A58: .4byte 0x00000712 -_08020A5C: .4byte 0x00000715 -_08020A60: .4byte gCurrentPinballGame -_08020A64: .4byte 0x0000061E -_08020A68: .4byte 0x00000744 -_08020A6C: - movs r2, #0xe1 - lsls r2, r2, #1 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, r3, r0 - ldr r3, _08020AC4 @ =0x00000743 - adds r0, r0, r3 - movs r1, #2 - strb r1, [r0] -_08020A82: - mov r4, sl - ldr r2, [r4] - ldr r5, _08020AC8 @ =0x0000061E - adds r0, r2, r5 - ldrh r0, [r0] - cmp r0, #0x64 - beq _08020A92 - b _08020D82 -_08020A92: - ldr r0, _08020ACC @ =gMain - ldr r0, [r0, #0x44] - adds r0, #0x98 - ldr r1, [r0] - movs r0, #1 - strh r0, [r1] - movs r7, #0xf1 - lsls r7, r7, #1 - adds r0, r2, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020AD8 - movs r1, #0xe1 - lsls r1, r1, #1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020AD8 - ldr r1, _08020AD0 @ =0x040000D4 - ldr r0, _08020AD4 @ =gUnknown_08395A4C - b _08020ADC - .align 2, 0 -_08020AC4: .4byte 0x00000743 -_08020AC8: .4byte 0x0000061E -_08020ACC: .4byte gMain -_08020AD0: .4byte 0x040000D4 -_08020AD4: .4byte gUnknown_08395A4C -_08020AD8: - ldr r1, _08020AEC @ =0x040000D4 - ldr r0, _08020AF0 @ =gUnknown_08397E6C -_08020ADC: - str r0, [r1] - ldr r0, _08020AF4 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _08020AF8 @ =0x80001200 - str r0, [r1, #8] - ldr r0, [r1, #8] - b _08020D82 - .align 2, 0 -_08020AEC: .4byte 0x040000D4 -_08020AF0: .4byte gUnknown_08397E6C -_08020AF4: .4byte 0x06015800 -_08020AF8: .4byte 0x80001200 -_08020AFC: - ldr r2, _08020B24 @ =gUnknown_086ADEE0 - ldr r6, _08020B28 @ =0x0000020A - adds r4, r3, r6 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #2 - adds r1, r2, #2 - adds r0, r0, r1 - movs r5, #0x82 - lsls r5, r5, #2 - adds r1, r3, r5 - ldrh r3, [r1] - ldrh r0, [r0] - mov r8, r2 - cmp r0, r3 - bls _08020B2C - adds r0, r3, #1 - strh r0, [r1] - b _08020C1C - .align 2, 0 -_08020B24: .4byte gUnknown_086ADEE0 -_08020B28: .4byte 0x0000020A -_08020B2C: - movs r5, #0 - movs r7, #0 - strh r7, [r1] - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - mov r1, sl - ldr r0, [r1] - ldr r2, _08020BC0 @ =0x0000020A - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x17 - bne _08020B5C - movs r0, #0x7c - bl m4aSongNumStop - ldr r0, _08020BC4 @ =gMPlayInfo_BGM - ldr r1, _08020BC8 @ =0x0000FFFF - movs r2, #0x80 - lsls r2, r2, #1 - bl m4aMPlayVolumeControl -_08020B5C: - mov r3, sl - ldr r0, [r3] - adds r1, r0, r6 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x19 - ble _08020C1C - movs r0, #0x19 - strb r0, [r1] - mov r4, sl - ldr r0, [r4] - ldr r1, _08020BCC @ =0x0000061C - adds r0, r0, r1 - strb r5, [r0] - ldr r2, _08020BD0 @ =gMain - ldr r0, [r2, #0x44] - adds r0, #0x98 - ldr r0, [r0] - strh r7, [r0] - ldr r0, [r4] - adds r0, #0xe4 - strb r5, [r0] - ldr r4, [r4] - movs r3, #0xe1 - lsls r3, r3, #1 - adds r0, r4, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - movs r7, #0xf1 - lsls r7, r7, #1 - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08020BD8 - lsls r3, r2, #0x10 - asrs r1, r3, #0x10 - ldr r0, _08020BD4 @ =0x00000744 - adds r2, r4, r0 - adds r2, r2, r1 - lsls r0, r1, #3 - adds r0, r0, r1 - strb r0, [r2] - mov r8, r3 - b _08020BE6 - .align 2, 0 -_08020BC0: .4byte 0x0000020A -_08020BC4: .4byte gMPlayInfo_BGM -_08020BC8: .4byte 0x0000FFFF -_08020BCC: .4byte 0x0000061C -_08020BD0: .4byte gMain -_08020BD4: .4byte 0x00000744 -_08020BD8: - lsls r2, r2, #0x10 - asrs r1, r2, #0x10 - ldr r3, _08020C48 @ =0x00000744 - adds r0, r4, r3 - adds r0, r0, r1 - strb r5, [r0] - mov r8, r2 -_08020BE6: - ldr r3, _08020C4C @ =0x040000D4 - ldr r4, _08020C50 @ =gCurrentPinballGame - ldr r0, [r4] - mov r5, r8 - asrs r2, r5, #0x10 - ldr r7, _08020C48 @ =0x00000744 - adds r0, r0, r7 - adds r0, r0, r2 - ldrb r1, [r0] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08020C54 @ =gUnknown_084C07EC - adds r0, r0, r1 - str r0, [r3] - lsls r0, r2, #1 - adds r0, r0, r2 - lsls r0, r0, #7 - ldr r1, _08020C58 @ =0x06010480 - adds r0, r0, r1 - str r0, [r3, #4] - ldr r0, _08020C5C @ =0x800000C0 - str r0, [r3, #8] - ldr r0, [r3, #8] - mov sl, r4 - ldr r2, _08020C60 @ =gUnknown_086ADEE0 - mov r8, r2 -_08020C1C: - mov r3, sl - ldr r1, [r3] - ldr r4, _08020C64 @ =0x0000020A - adds r0, r1, r4 - ldrb r0, [r0] - subs r0, #0x11 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #6 - bhi _08020C76 - ldr r5, _08020C68 @ =gMain - ldr r0, [r5, #0x4c] - movs r2, #3 - ands r0, r2 - lsrs r0, r0, #1 - cmp r0, #0 - beq _08020C70 - adds r1, #0x4c - ldr r0, _08020C6C @ =0x0000FFFD - strh r0, [r1] - b _08020C76 - .align 2, 0 -_08020C48: .4byte 0x00000744 -_08020C4C: .4byte 0x040000D4 -_08020C50: .4byte gCurrentPinballGame -_08020C54: .4byte gUnknown_084C07EC -_08020C58: .4byte 0x06010480 -_08020C5C: .4byte 0x800000C0 -_08020C60: .4byte gUnknown_086ADEE0 -_08020C64: .4byte 0x0000020A -_08020C68: .4byte gMain -_08020C6C: .4byte 0x0000FFFD -_08020C70: - adds r0, r1, #0 - adds r0, #0x4c - strh r2, [r0] -_08020C76: - mov r7, sl - ldr r3, [r7] - ldr r1, _08020CD8 @ =0x0000020A - adds r0, r3, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - add r0, r8 - ldrh r5, [r0] - movs r2, #0xe1 - lsls r2, r2, #1 - adds r0, r3, r2 - movs r1, #0 - ldrsb r1, [r0, r1] - ldr r4, _08020CDC @ =gMain - ldr r0, [r4, #0x44] - adds r0, #0x98 - ldr r6, [r0] - subs r2, r1, #1 - movs r0, #0xb1 - adds r1, r2, #0 - muls r1, r0, r1 - adds r0, r3, #0 - adds r0, #0x58 - ldrh r0, [r0] - subs r0, #0x10 - subs r1, r1, r0 - strh r1, [r6, #2] - ldr r7, _08020CE0 @ =0x0000061C - adds r0, r3, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08020CE8 - adds r0, r3, #0 - adds r0, #0x5a - ldrh r1, [r0] - movs r4, #0xbe - lsls r4, r4, #1 - adds r0, r4, #0 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r7, _08020CE4 @ =0x000001E3 - adds r0, r3, r7 - adds r0, r0, r2 - movs r1, #0 - b _08020CF4 - .align 2, 0 -_08020CD8: .4byte 0x0000020A -_08020CDC: .4byte gMain -_08020CE0: .4byte 0x0000061C -_08020CE4: .4byte 0x000001E3 -_08020CE8: - movs r0, #0xb4 - strh r0, [r6, #4] - ldr r1, _08020E14 @ =0x000001E3 - adds r0, r3, r1 - adds r0, r0, r2 - movs r1, #1 -_08020CF4: - strb r1, [r0] - movs r4, #0 - lsls r1, r5, #0x10 - ldr r2, _08020E18 @ =gOamBuffer - mov sb, r2 - ldr r3, _08020E1C @ =gUnknown_086B4922 - mov r8, r3 - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #3 - mov ip, r0 - ldr r5, _08020E20 @ =0xFFFFFE00 - mov sl, r5 -_08020D10: - lsls r3, r4, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, sb - lsls r1, r3, #1 - adds r1, r1, r3 - lsls r0, r1, #1 - add r0, ip - add r0, r8 - ldrh r0, [r0] - strh r0, [r2] - adds r2, #2 - adds r0, r1, #1 - lsls r0, r0, #1 - add r0, ip - add r0, r8 - ldrh r0, [r0] - strh r0, [r2] - adds r1, #2 - lsls r1, r1, #1 - add r1, ip - add r1, r8 - ldrh r0, [r1] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, sb - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r7, #2 - ldrsh r0, [r6, r7] - adds r1, r1, r0 - ldr r7, _08020E24 @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, sl - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r6, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r4, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #3 - ble _08020D10 -_08020D82: - ldr r0, _08020E28 @ =gMain - ldr r1, [r0, #0x44] - ldr r6, [r1, #0x74] - ldrh r1, [r6] - cmp r1, #0 - bne _08020D90 - b _08020EA4 -_08020D90: - movs r2, #0 - ldr r3, _08020E2C @ =0x040000D4 - mov sl, r3 -_08020D96: - lsls r2, r2, #0x10 - asrs r5, r2, #0x10 - ldr r4, _08020E28 @ =gMain - ldr r1, [r4, #0x44] - lsls r0, r5, #2 - adds r0, r0, r1 - ldr r6, [r0, #0x74] - movs r0, #0xb1 - adds r1, r5, #0 - muls r1, r0, r1 - ldr r7, _08020E30 @ =gCurrentPinballGame - ldr r4, [r7] - adds r0, r4, #0 - adds r0, #0x58 - ldrh r0, [r0] - subs r0, #0x10 - subs r1, r1, r0 - strh r1, [r6, #2] - ldr r1, _08020E14 @ =0x000001E3 - adds r0, r4, r1 - adds r0, r0, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r8, r2 - cmp r0, #0 - beq _08020E44 - ldr r2, _08020E28 @ =gMain - ldr r0, [r2, #0x50] - movs r1, #5 - bl __umodsi3 - cmp r0, #0 - bne _08020E02 - ldr r3, _08020E34 @ =0x00000744 - adds r0, r4, r3 - adds r0, r0, r5 - ldrb r1, [r0] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08020E38 @ =gUnknown_084C07EC - adds r0, r0, r1 - mov r4, sl - str r0, [r4] - lsls r0, r5, #1 - adds r0, r0, r5 - lsls r0, r0, #7 - ldr r5, _08020E3C @ =0x06010480 - adds r0, r0, r5 - str r0, [r4, #4] - ldr r0, _08020E40 @ =0x800000C0 - str r0, [r4, #8] - ldr r0, [r4, #8] -_08020E02: - ldr r7, _08020E30 @ =gCurrentPinballGame - ldr r0, [r7] - adds r0, #0x5a - ldrh r1, [r0] - movs r2, #0xbe - lsls r2, r2, #1 - adds r0, r2, #0 - subs r0, r0, r1 - b _08020E46 - .align 2, 0 -_08020E14: .4byte 0x000001E3 -_08020E18: .4byte gOamBuffer -_08020E1C: .4byte gUnknown_086B4922 -_08020E20: .4byte 0xFFFFFE00 -_08020E24: .4byte 0x000001FF -_08020E28: .4byte gMain -_08020E2C: .4byte 0x040000D4 -_08020E30: .4byte gCurrentPinballGame -_08020E34: .4byte 0x00000744 -_08020E38: .4byte gUnknown_084C07EC -_08020E3C: .4byte 0x06010480 -_08020E40: .4byte 0x800000C0 -_08020E44: - movs r0, #0xc8 -_08020E46: - strh r0, [r6, #4] - movs r4, #0 - ldr r7, _08020EB4 @ =gOamBuffer - ldr r3, _08020EB8 @ =0xFFFFFE00 - mov sb, r3 -_08020E50: - lsls r3, r4, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r7 - movs r4, #2 - ldrsh r1, [r5, r4] - movs r4, #2 - ldrsh r0, [r6, r4] - adds r1, r1, r0 - ldr r4, _08020EBC @ =0x000001FF - adds r0, r4, #0 - ands r1, r0 - ldrh r4, [r2, #2] - mov r0, sb - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r4, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #1 - ble _08020E50 - movs r0, #0x80 - lsls r0, r0, #9 - add r0, r8 - lsrs r2, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #1 - bgt _08020EA4 - b _08020D96 -_08020EA4: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08020EB4: .4byte gOamBuffer -_08020EB8: .4byte 0xFFFFFE00 -_08020EBC: .4byte 0x000001FF diff --git a/expected_objs/sub_203CC.o b/expected_objs/sub_203CC.o deleted file mode 100644 index 6b15c2d..0000000 Binary files a/expected_objs/sub_203CC.o and /dev/null differ diff --git a/expected_objs/sub_2DE54.o b/expected_objs/sub_2DE54.o deleted file mode 100644 index bbcb3d0..0000000 Binary files a/expected_objs/sub_2DE54.o and /dev/null differ diff --git a/expected_objs/sub_71DC.o b/expected_objs/sub_71DC.o deleted file mode 100644 index 9b3471b..0000000 Binary files a/expected_objs/sub_71DC.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index bcedf9b..b2c3272 100644 --- a/include/functions.h +++ b/include/functions.h @@ -461,7 +461,7 @@ extern void sub_1F59C(); //extern ? sub_1FF0C(); //extern ? sub_201B8(); extern void sub_203CC(); -//extern ? sub_20EC0(); +extern void sub_20EC0(); extern void sub_21238(s16); //extern ? sub_21300(); //extern ? sub_21320(); diff --git a/include/global.h b/include/global.h index 7d6d734..561c154 100644 --- a/include/global.h +++ b/include/global.h @@ -99,16 +99,18 @@ struct BallState /*0x3C*/ struct Vector32 prevPositionQ8; }; -struct UnkPinballGame13BC +// Position rises in steps of 2 from 0 to 10. +// Releasing the button continues rising till it reaches 10, and stalls for 3 frames before falling +struct FlipperState { - /*0x00*/ s8 unk0; - /*0x01*/ s8 unk1; + /*0x00*/ s8 position; + /*0x01*/ s8 prevPosition; /*0x02*/ s8 unk2; /*0x03*/ s8 unk3; /*0x04*/ s8 unk4; /*0x05*/ s8 unk5; - /*0x06*/ s8 unk6; - /*0x07*/ u8 unk7; + /*0x06*/ s8 active; + /*0x07*/ u8 stallTicks; /*0x08*/ s8 unk8; /*0x09*/ u8 filler9[0x3]; }; @@ -139,7 +141,7 @@ struct PinballGame /*0x025*/ s8 unk25; /*0x026*/ u16 unk26; /*0x028*/ u16 unk28; - /*0x02A*/ u8 filler2A[0x2]; + /*0x02A*/ u16 unk2A; /*0x02C*/ int unk2C; /*0x030*/ s8 numLives; /*0x031*/ u8 ballSpeed; @@ -189,7 +191,7 @@ struct PinballGame /*0x0C8*/ u8 fillerC8[0x2]; /*0x0CA*/ s16 unkCA; /*0x0CC*/ s16 unkCC; - /*0x0CE*/ u8 fillerCE[0x2]; + /*0x0CE*/ u16 unkCE; /*0x0D0*/ struct Vector16 unkD0[5]; /*0x0E4*/ u8 unkE4; /*0x0E6*/ s16 unkE6; @@ -297,9 +299,10 @@ struct PinballGame /*0x1D8*/ u16 unk1D8; /*0x1DA*/ u16 unk1DA; /*0x1DC*/ u16 unk1DC; - /*0x1DE*/ u8 filler1DE[0x4]; + /*0x1DE*/ u16 unk1DE; + /*0x1E0*/ u16 unk1E0; /*0x1E2*/ s8 outLanePikaPosition; //Pikachu coverage. 0= left lane, 1=right lane, 2 = both - /*0x1E3*/ u8 filler1E3[0x2]; + /*0x1E3*/ s8 unk1E3[2]; /*0x1E5*/ s8 unk1E5; /*0x1E6*/ s8 unk1E6; /*0x1E7*/ u8 filler1E7[0x1]; @@ -322,7 +325,7 @@ struct PinballGame /*0x205*/ u8 filler205[0x1]; /*0x206*/ u16 unk206; /*0x208*/ u16 unk208; - /*0x20A*/ u8 unk20A; + /*0x20A*/ s8 unk20A; /*0x20B*/ s8 unk20B; /*0x20C*/ s8 unk20C; /*0x20D*/ u8 filler20D[0x1]; @@ -711,7 +714,9 @@ struct PinballGame /*0x618*/ u16 unk618; /*0x61A*/ s16 unk61A; /*0x61C*/ s8 unk61C; - /*0x61D*/ u8 filler61D[0x7]; + /*0x61D*/ u8 filler61D; + /*0x61E*/ u16 unk61E; + /*0x620*/ struct Vector16 unk620; /*0x624*/ s8 unk624; /*0x625*/ s8 unk625; /*0x626*/ s8 unk626; @@ -854,7 +859,7 @@ struct PinballGame /*0x132C*/struct BallState *ball; /*0x1330*/struct BallState *unk1330; /*0x1334*/struct BallState unk1334[2]; - /*0x13BC*/struct UnkPinballGame13BC unk13BC[2]; + /*0x13BC*/struct FlipperState flipper[2]; /*0x13D4*/u16 unk13D4[10]; /*0x13E8*/struct Vector16 unk13E8[10]; } /* size=0x1410 */; @@ -973,15 +978,18 @@ extern u8 *gMonPortraitGroupGfx[]; extern u8 *gMonPortraitGroupPals[]; extern u8 gUnknown_02030760[]; extern u8 gUnknown_02031060[]; +extern const u8 gUnknown_08395A4C[]; +extern const u8 gUnknown_08397E6C[]; extern const u8 gUnknown_083A8EEC[][0x300]; extern const u8 gUnknown_083BB16C[][0x80]; extern const u8 gUnknown_083BD36C[][0x200]; extern const u8 gUnknown_0844838C[][0x300]; extern const u8 gUnknown_0848D68C[][0x300]; extern const u8 gUnknown_084C00EC[][0x80]; -extern const s8 gUnknown_084C07EC[]; +extern const u8 gUnknown_084C07EC[]; extern const u8 gUnknown_084FA48C[][0x120]; extern const u8 gUnknown_084FD18C[][0x200]; extern const u8 *gUnknown_086AD49C[]; extern const u16 gUnknown_086AD2EE[][4]; + #endif // GUARD_GLOBAL_H \ No newline at end of file diff --git a/ld_script.txt b/ld_script.txt index c473af3..f8907b2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -46,15 +46,13 @@ SECTIONS src/board_process5.o(.text); src/board_process7.o(.text); src/board_process6.o(.text); - src/rom_14740.o(.text); - src/rom_17634.o(.text); - src/rom_19028.o(.text); + src/collision_checks.o(.text); + src/game_idle.o(.text); src/board_process4.o(.text); src/board_process3_ruby.o(.text); src/rom_1A0F4.o(.text); src/rom_1A98C.o(.text); src/rom_201B8.o(.text); - asm/rom_203CC.o(.text); src/rom_27E08.o(.text); src/rom_27F94.o(.text); src/rom_2C538.o(.text); diff --git a/src/board_process2.c b/src/board_process2.c index 9acfd25..2fa7ea3 100644 --- a/src/board_process2.c +++ b/src/board_process2.c @@ -307,7 +307,7 @@ void sub_4DFA0(void) } } - if (gCurrentPinballGame->newButtonActions[3] && gCurrentPinballGame->unk12A == 0) + if (gCurrentPinballGame->newButtonActions[3] && gCurrentPinballGame->unk12A == 0) { gCurrentPinballGame->unk129 = 1; if (gCurrentPinballGame->unk128 == 0) @@ -581,7 +581,7 @@ void sub_4E598(void) gCurrentPinballGame->unk16F = 1; gCurrentPinballGame->unk174 = 0x40; gCurrentPinballGame->unk2AA = 0; - + } gCurrentPinballGame->unk300 = 0; diff --git a/src/board_process3_dusclops.c b/src/board_process3_dusclops.c index 91f45ae..51d15bd 100644 --- a/src/board_process3_dusclops.c +++ b/src/board_process3_dusclops.c @@ -364,7 +364,7 @@ void sub_336E0(void) { { gCurrentPinballGame->unk3B0[i] = 0; //Time since last decision gCurrentPinballGame->unk3A3[i]++; //Animation frame advance 'move left to neutral state' - if (gCurrentPinballGame->unk3A3[i] > 6) //Animation frame at neutral forward, continue with move right + if (gCurrentPinballGame->unk3A3[i] > 6) //Animation frame at neutral forward, continue with move right { gCurrentPinballGame->unk3A3[i] = 7; gCurrentPinballGame->unk3A0[i] = 3; //duskull lifecycle state. Move Right @@ -374,7 +374,7 @@ void sub_336E0(void) { sp0 = gUnknown_086AE5EC[gCurrentPinballGame->unk3A3[i]][0]; r7 = gUnknown_086AE5EC[gCurrentPinballGame->unk3A3[i]][2]; break; - case 3: //Move Right state + case 3: //Move Right state gCurrentPinballGame->unk3B6[i]++; //Time Alive if (gCurrentPinballGame->unk3C4[i].x < 800) //Dusclops x pos { @@ -387,7 +387,7 @@ void sub_336E0(void) { else { gCurrentPinballGame->unk3B0[i] = 0; //Time since last decision - gCurrentPinballGame->unk3A3[i]++; //Animation frame advance + gCurrentPinballGame->unk3A3[i]++; //Animation frame advance if (gCurrentPinballGame->unk3A3[i] > 10) gCurrentPinballGame->unk3A3[i] = 7; } @@ -593,7 +593,7 @@ void sub_340EC() { } else { - for (j = 0; j < 2; j++) + for (j = 0; j < 2; j++) { oamData = &spriteGroup->oam[j]; dst = (u16*)&gOamBuffer[oamData->oamId]; @@ -610,20 +610,20 @@ void sub_340EC() { } } -void sub_34450(void) -{ +void sub_34450(void) +{ s16 r9; u16 available; struct OamDataSimple *oamSimple; struct SpriteGroup *spriteGroup; - + r9 = 0; spriteGroup = &gMain.spriteGroups[14]; switch(gCurrentPinballGame->unk3DC) { case 0: { - gCurrentPinballGame->unk3E8 = 880; + gCurrentPinballGame->unk3E8 = 880; gCurrentPinballGame->unk3EA = 300; gCurrentPinballGame->unk3DC = 1; gCurrentPinballGame->unk3E6 = 184; @@ -632,11 +632,11 @@ void sub_34450(void) gCurrentPinballGame->unk294 = 1; break; } - + case 1: { if (gUnknown_086AE68E[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) - gCurrentPinballGame->unk3E4++; + gCurrentPinballGame->unk3E4++; else { gCurrentPinballGame->unk3E4 = 0; @@ -645,7 +645,7 @@ void sub_34450(void) if (gCurrentPinballGame->unk3E2 > 28) { gCurrentPinballGame->unk3E2 = 21; - + if (gCurrentPinballGame->unk3E0 <= 0) gCurrentPinballGame->unk3E0++; else @@ -654,15 +654,15 @@ void sub_34450(void) gCurrentPinballGame->unk3DC = 2; } } - + if (gCurrentPinballGame->unk3E2 == 23) { gCurrentPinballGame->unk129 = 0; gCurrentPinballGame->unk128 = 1; m4aSongNumStart(SE_UNKNOWN_0xF4); //Dusclops entry; footstops - sub_11B0(8); + sub_11B0(8); } - + if (gCurrentPinballGame->unk3E2 == 27) { gCurrentPinballGame->unk129 = 1; @@ -672,8 +672,8 @@ void sub_34450(void) } } - - r9 = 0; + + r9 = 0; break; } case 2: @@ -682,12 +682,12 @@ void sub_34450(void) { r9 = gUnknown_08137D40[(gCurrentPinballGame->unk3E4 % 0x40) / 16]; gCurrentPinballGame->unk3E4++; - + if (gCurrentPinballGame->unk3E4 == 256) { gCurrentPinballGame->unk3DC = 3; gCurrentPinballGame->unk3E4 = 0; - + if (gCurrentPinballGame->unk3E0 > 3) gCurrentPinballGame->unk3E0 = 0; if (gCurrentPinballGame->unk3E0 <= 1) @@ -696,11 +696,11 @@ void sub_34450(void) gCurrentPinballGame->unk3E2 = 7; } } - + if (gCurrentPinballGame->unk3E6 > 0) { if (gCurrentPinballGame->unk3E6 > 64) - gCurrentPinballGame->unk3E6 -= 1; + gCurrentPinballGame->unk3E6--; else gCurrentPinballGame->unk3E6 -= 2; @@ -712,16 +712,16 @@ void sub_34450(void) gCurrentPinballGame->unk387 = 2; gCurrentPinballGame->unk294 = 2; } - + break; } case 3: { if (gUnknown_086AE68E[gCurrentPinballGame->unk3E2][1] > gCurrentPinballGame->unk3E4) - { - gCurrentPinballGame->unk3E4++; + { + gCurrentPinballGame->unk3E4++; } - else + else { gCurrentPinballGame->unk3E4 = 0; @@ -733,7 +733,7 @@ void sub_34450(void) { gCurrentPinballGame->unk3E2 = 0; gCurrentPinballGame->unk3E0++; - + if ((gCurrentPinballGame->unk3E0 & 1) == 0) { gCurrentPinballGame->unk3DC = 2; @@ -742,9 +742,9 @@ void sub_34450(void) } } else if (--gCurrentPinballGame->unk3E2 < 0) - { + { gCurrentPinballGame->unk3E0++; - + if ((gCurrentPinballGame->unk3E0 & 1) == 0) { gCurrentPinballGame->unk3DC = 2; @@ -758,27 +758,27 @@ void sub_34450(void) if (gCurrentPinballGame->unk3E2 == 2) { gCurrentPinballGame->unk129 = 0; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->unk128 = 1; m4aSongNumStart(SE_UNKNOWN_0xF4); //Dusclops entry; footstops - sub_11B0(8); + sub_11B0(8); } - + if (gCurrentPinballGame->unk3E2 == 6) { - gCurrentPinballGame->unk129 = 1; - gCurrentPinballGame->unk128 = 1; + gCurrentPinballGame->unk129 = 1; + gCurrentPinballGame->unk128 = 1; m4aSongNumStart(SE_UNKNOWN_0xF4); //Dusclops entry; footstops sub_11B0(8); } } r9 = gUnknown_086AE68E[gCurrentPinballGame->unk3E2][0]; - + if((gCurrentPinballGame->unk3E2 == 0) || (gCurrentPinballGame->unk3E2 == 4)) { break; } - + if (gCurrentPinballGame->unk3E0 <= 1) { if (gCurrentPinballGame->unk3EA <= 583) @@ -789,7 +789,7 @@ void sub_34450(void) if ((gCurrentPinballGame->unk3E2 % 4) != 0) break; - + gCurrentPinballGame->unk3DC = 2; gCurrentPinballGame->unk3E4 = 0; gCurrentPinballGame->unk3E2 = 0; @@ -802,15 +802,15 @@ void sub_34450(void) gCurrentPinballGame->unk3EA--; break; } - + if ((gCurrentPinballGame->unk3E2 % 4) != 0) break; - + gCurrentPinballGame->unk3DC = 2; gCurrentPinballGame->unk3E4 = 0; gCurrentPinballGame->unk3E2 = 0; gCurrentPinballGame->unk3E0 = 4; - + break; } case 4: @@ -819,7 +819,7 @@ void sub_34450(void) gCurrentPinballGame->unk3E2 = 0; gCurrentPinballGame->unk3DC = 5; r9 = 7; - + m4aSongNumStart(SE_UNKNOWN_0xF6); //Dusclops hit gCurrentPinballGame->unk387 = 0; sub_11B0(7); @@ -847,7 +847,7 @@ void sub_34450(void) gCurrentPinballGame->unk3DC = 8; r9 = 7; } - + gCurrentPinballGame->unk385++; gCurrentPinballGame->scoreAddedInFrame = 300000; @@ -856,24 +856,24 @@ void sub_34450(void) case 6: { struct Vector16 tempVector; - + gCurrentPinballGame->unk3E2 = 9; gCurrentPinballGame->unk3E4 = 0; gCurrentPinballGame->unk3DC = 7; gCurrentPinballGame->unk5A6 = 0; r9 = 8; - + m4aSongNumStart(SE_UNKNOWN_0xF7); //Dusclops absorbs ball gCurrentPinballGame->unk288 = (gCurrentPinballGame->unk3E8 / 10) + 32; gCurrentPinballGame->unk28A = (gCurrentPinballGame->unk3EA / 10) + 36; - + tempVector.x = (gCurrentPinballGame->unk288 << 8) - gCurrentPinballGame->ball->positionQ8.x; tempVector.y = (gCurrentPinballGame->unk28A << 8) - gCurrentPinballGame->ball->positionQ8.y; gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); - + sub_11B0(13); break; } @@ -885,19 +885,19 @@ void sub_34450(void) { gCurrentPinballGame->unk3E4 = 0; gCurrentPinballGame->unk3E2++; - + if (gCurrentPinballGame->unk3E2 == 15) { - gCurrentPinballGame->ball->velocity.x = (gMain.systemFrameCount % 2 * 300) + 65386; + gCurrentPinballGame->ball->velocity.x = (gMain.systemFrameCount % 2 * 300) + 65386; gCurrentPinballGame->ball->velocity.y = 300; gCurrentPinballGame->ball->unk0 = 0; m4aSongNumStart(SE_UNKNOWN_0xF8); //Dusclops launch ball sub_11B0(8); } - + if (gCurrentPinballGame->unk3E2 == 16) gCurrentPinballGame->unk1F = 0; - + if (gCurrentPinballGame->unk3E2 > 16) { gCurrentPinballGame->unk3E4 = 128; @@ -921,16 +921,16 @@ void sub_34450(void) { s16 tr4 = 29 - gCurrentPinballGame->unk5A6; s32 sl; - + gCurrentPinballGame->unk5B0 -= ((tr4 * 8192) / 30) - 8192; gCurrentPinballGame->ball->unkA = gCurrentPinballGame->ball->unkA - 8192; - + sl = (gCurrentPinballGame->unk5AC * tr4) / 30; - + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk288 * 256) + ((Cos(gCurrentPinballGame->unk5B0) * sl) / 20000); - + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unk28A * 256) - ((Sin(gCurrentPinballGame->unk5B0) * sl) / 20000); - + gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; } @@ -944,7 +944,7 @@ void sub_34450(void) gCurrentPinballGame->unk5A6++; r9 = gUnknown_086AE68E[gCurrentPinballGame->unk3E2][0]; - + break; } case 8: @@ -957,7 +957,7 @@ void sub_34450(void) gCurrentPinballGame->unk388 = 2; gCurrentPinballGame->unk392 = 0; } - + r9 = 15; if (gCurrentPinballGame->unk3E6 <= 183) @@ -973,18 +973,18 @@ void sub_34450(void) } break; } - + gMain.spriteGroups[13].available = 0; gMain.spriteGroups[14].available = 0; gMain.spriteGroups[12].available = 0; gCurrentPinballGame->unk13 = 4; gCurrentPinballGame->unk18 = 0; break; - } + } default: break; } //End switch - + DmaCopy16(3 , gUnknown_084EDACC + r9 * 1024, (void *)OBJ_VRAM0+0x10a0, BG_SCREEN_SIZE); gCurrentPinballGame->unk3F0 = ((gCurrentPinballGame->unk3E8 / 10) * 2) + 16; @@ -1006,7 +1006,7 @@ void sub_34450(void) } else gOamBuffer[oamSimple->oamId].paletteNum = 3; - + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + spriteGroup->baseY; } @@ -1017,9 +1017,9 @@ void sub_34450(void) if (gCurrentPinballGame->unk386 == 0) { u32 offY = 92; - + spriteGroup->baseX = -gCurrentPinballGame->unk58 + (gCurrentPinballGame->unk3E8 / 10); - spriteGroup->baseY = -gCurrentPinballGame->unk5A + (gCurrentPinballGame->unk3EA / 10) + spriteGroup->baseY = -gCurrentPinballGame->unk5A + (gCurrentPinballGame->unk3EA / 10) + ((gCurrentPinballGame->unk3E6 / 2) - offY); } else @@ -1027,8 +1027,8 @@ void sub_34450(void) spriteGroup->baseX = 240; spriteGroup->baseY = 160; } - - { + + { s16 i; u8 r1; r1 = gMain.systemFrameCount % 4; @@ -1039,7 +1039,7 @@ void sub_34450(void) oamSimple = &spriteGroup->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + spriteGroup->baseY; - } + } } } @@ -1061,7 +1061,7 @@ void sub_34450(void) r9 = 1; else r9 = 2; - + DmaCopy16(3 , gUnknown_084FF30C + r9 * 0x200,(void *)OBJ_VRAM0+0x18a0, 0x200); } else diff --git a/src/board_process3_groudon.c b/src/board_process3_groudon.c index ab1ea0f..e0593f4 100644 --- a/src/board_process3_groudon.c +++ b/src/board_process3_groudon.c @@ -108,7 +108,7 @@ void GroudonBoardProcess_3A_3B120(void) gCurrentPinballGame->unk4B4[i].x = 0; gCurrentPinballGame->unk4B4[i].y = 0; } - + for (i = 0; i < 3; i++) { gCurrentPinballGame->unk4CC[i] = 0; @@ -458,7 +458,7 @@ void sub_3B7C4(void) { gCurrentPinballGame->unk3E2 = 0; gCurrentPinballGame->unk3DC = 2; - + if (gCurrentPinballGame->unk47C & 1) { gCurrentPinballGame->unk3DD = 4; @@ -1193,7 +1193,7 @@ void sub_3CBC4(void) gCurrentPinballGame->unk4E4[i] = 0; } } - + if (gCurrentPinballGame->unk4E4[i] >= 0) { if (gCurrentPinballGame->unk4D8[i] == 0) @@ -1201,7 +1201,7 @@ void sub_3CBC4(void) m4aSongNumStart(SE_UNKNOWN_0x121); sub_11B0(7); } - + if (gCurrentPinballGame->unk4D8[i] < 5) { gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i] + 1; @@ -1216,7 +1216,7 @@ void sub_3CBC4(void) gCurrentPinballGame->unk4D2[i] = gUnknown_086AF3AC[i]; gCurrentPinballGame->unk4CF[i] = 2; } - + gCurrentPinballGame->unk4D8[i]++; } diff --git a/src/board_process3_kecleon.c b/src/board_process3_kecleon.c index c8c0887..5b89f58 100644 --- a/src/board_process3_kecleon.c +++ b/src/board_process3_kecleon.c @@ -57,7 +57,7 @@ extern const struct SpriteSet *gUnknown_086BB420[]; void KecleonBoardProcess_3A_35860(void) { s16 i; - + gCurrentPinballGame->unk18 = 0; gCurrentPinballGame->unk17 = 0; gCurrentPinballGame->unk13 = 0; @@ -315,7 +315,7 @@ void sub_35D54(void) gCurrentPinballGame->unk3F4 = gUnknown_086AE9E4[gCurrentPinballGame->unk3F4].unk0[rand & mask]; } } - + if (gCurrentPinballGame->unk3E2 == 60 || gCurrentPinballGame->unk3E2 == 61) MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A1ABC); } diff --git a/src/board_process3_kyogre.c b/src/board_process3_kyogre.c index a79e511..ead1047 100644 --- a/src/board_process3_kyogre.c +++ b/src/board_process3_kyogre.c @@ -965,7 +965,7 @@ void sub_39A40(void) } } - if (gCurrentPinballGame->unk448 < 18) + if (gCurrentPinballGame->unk448 < 18) { gCurrentPinballGame->unk383 = 1; gCurrentPinballGame->ball->velocity.x = 0; diff --git a/src/board_process3_rayquaza.c b/src/board_process3_rayquaza.c index 6e74c7f..9e175c4 100644 --- a/src/board_process3_rayquaza.c +++ b/src/board_process3_rayquaza.c @@ -632,7 +632,7 @@ void sub_3EDF0(void) gCurrentPinballGame->unk3DC = 12; gCurrentPinballGame->unk3E1 = 0; } - + break; case 12: DmaCopy16(3, gUnknown_084AA18C, (void *)0x06011620, 0x860); diff --git a/src/board_process3_ruby.c b/src/board_process3_ruby.c index d707fae..7aecbd4 100644 --- a/src/board_process3_ruby.c +++ b/src/board_process3_ruby.c @@ -83,7 +83,7 @@ void RubyBoardProcess_3B_19B10(void) sub_19FA0(); if (gCurrentPinballGame->unk29C != 0) { - gCurrentPinballGame->unk29C -= 1; + gCurrentPinballGame->unk29C--; if (gCurrentPinballGame->unk29C == 0) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); @@ -105,7 +105,7 @@ void sub_19B90(void) { case 0: gUnknown_086AD4C4[gCurrentPinballGame->unk13](); - gCurrentPinballGame->unk16 += 1; + gCurrentPinballGame->unk16++; break; case 1: gUnknown_086AD4E8[gCurrentPinballGame->unk13](); @@ -168,7 +168,7 @@ void sub_19CC8(void) { if (gCurrentPinballGame->unk6EE != 0) { - gCurrentPinballGame->unk6EE -= 1; + gCurrentPinballGame->unk6EE--; } else { @@ -224,7 +224,7 @@ void sub_19E10(void) sub_1DA74(); if (gCurrentPinballGame->unk2A0 != 0) { - gCurrentPinballGame->unk2A0 -= 1; + gCurrentPinballGame->unk2A0--; if (gCurrentPinballGame->unk2A0 == 0) { randNum = Random(); @@ -291,7 +291,7 @@ void sub_19E10(void) if (gCurrentPinballGame->unk1328 != 0) { - gCurrentPinballGame->unk1328 -= 1; + gCurrentPinballGame->unk1328--; if (gCurrentPinballGame->unk1328 == 0) { gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; @@ -307,7 +307,7 @@ void sub_19F70(void) sub_1FF0C(); if (gCurrentPinballGame->unk600 != 0) { - gCurrentPinballGame->unk600 -= 1; + gCurrentPinballGame->unk600--; } } diff --git a/src/board_process3_spheal.c b/src/board_process3_spheal.c index c1b653d..1c602bb 100644 --- a/src/board_process3_spheal.c +++ b/src/board_process3_spheal.c @@ -595,9 +595,9 @@ void sub_4387C(void) if (gCurrentPinballGame->unk55B[i] == 7) m4aSongNumStart(SE_UNKNOWN_0x135); } - + gCurrentPinballGame->unk54F[i] = 0; - + break; case 7: if (gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][1] > gCurrentPinballGame->unk562[i]) @@ -620,7 +620,7 @@ void sub_4387C(void) } gCurrentPinballGame->unk54F[i] = 2; - + break; case 8: if (gCurrentPinballGame->unk562[i] < 184) @@ -707,10 +707,10 @@ void sub_4387C(void) gCurrentPinballGame->unk553[i] = 11; gCurrentPinballGame->unk55B[i] = 29; gCurrentPinballGame->unk562[i] = 0; - + gCurrentPinballGame->unk580[i].x = gUnknown_086AFAC0[var1].unk0[gCurrentPinballGame->unk559[i]].x << 8; gCurrentPinballGame->unk580[i].y = gUnknown_086AFAC0[var1].unk0[gCurrentPinballGame->unk559[i]].y << 8; - + gCurrentPinballGame->unk559[i]++; gCurrentPinballGame->unk54F[i] = 0; break; @@ -842,7 +842,7 @@ void sub_4387C(void) sp4 = gCurrentPinballGame->unk555[i]; gCurrentPinballGame->unk555[i] = gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][2] + (1 - gCurrentPinballGame->unk551[i]) * 30 ; var2 = gUnknown_086AFB2C[gCurrentPinballGame->unk55B[i]][0]; - + group->baseX = (gCurrentPinballGame->unk580[i].x / 256) - (gCurrentPinballGame->unk58 + 12); group->baseY = (gCurrentPinballGame->unk580[i].y / 256) - (gCurrentPinballGame->unk5A + 14); @@ -863,7 +863,7 @@ void sub_4387C(void) gCurrentPinballGame->unk55D[i] = -gOamBuffer[oamSimple->oamId].x; gCurrentPinballGame->unk55F[i] = gOamBuffer[oamSimple->oamId].y; } - + gOamBuffer[oamSimple->oamId].x += group->baseX + gCurrentPinballGame->unk55D[i] * 2; } else @@ -873,22 +873,22 @@ void sub_4387C(void) gCurrentPinballGame->unk55D[i] = gOamBuffer[oamSimple->oamId].x; gCurrentPinballGame->unk55F[i] = gOamBuffer[oamSimple->oamId].y; } - + gOamBuffer[oamSimple->oamId].x += group->baseX; } - + gOamBuffer[oamSimple->oamId].y += group->baseY; gOamBuffer[oamSimple->oamId].tileNum += i * 9; } var3 = 0x10; gCurrentPinballGame->unk570[i].x = ((gCurrentPinballGame->unk580[i].x / 256) + (gCurrentPinballGame->unk55D[i] - var3)) * 2; - + var3 = 0x12; gCurrentPinballGame->unk570[i].y = ((gCurrentPinballGame->unk580[i].y / 256) + (gCurrentPinballGame->unk55F[i] - var3)) * 2; - + gCurrentPinballGame->unk566[i] = gCurrentPinballGame->unk580[i].y / 256 + gCurrentPinballGame->unk55F[i]; - + group = &gMain.spriteGroups[16 + i]; if (sp4 == 12 || sp4 == 42) { @@ -901,10 +901,10 @@ void sub_4387C(void) { sp4 = 0; } - + group->baseX = (gCurrentPinballGame->unk580[i].x / 256) - (gCurrentPinballGame->unk58 + 12); group->baseY = (gCurrentPinballGame->unk580[i].y / 256) - (gCurrentPinballGame->unk5A + 14); - + DmaCopy16(3, gUnknown_084B046C[sp4], (void *)0x06011EE0 + i * 0x120, 0x120); for (j = 0; j < 4; j++) { diff --git a/src/board_process4.c b/src/board_process4.c index e8e1439..7c548f0 100644 --- a/src/board_process4.c +++ b/src/board_process4.c @@ -17,7 +17,7 @@ void sub_1931C(struct Vector16 arg0) struct Unk086ACE8C *line; struct Vector16 point1, point2; - line = &gUnknown_086ACE8C[gCurrentPinballGame->unk13BC[0].unk0]; + line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[0].position]; point1.x = line->unk0 + 0x53; point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; @@ -27,11 +27,11 @@ void sub_1931C(struct Vector16 arg0) check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; if (check >= 0) - gCurrentPinballGame->unk13BC[0].unk8 = 1; + gCurrentPinballGame->flipper[0].unk8 = 1; else - gCurrentPinballGame->unk13BC[0].unk8 = -1; + gCurrentPinballGame->flipper[0].unk8 = -1; - line = &gUnknown_086ACE8C[gCurrentPinballGame->unk13BC[1].unk0]; + line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[1].position]; point1.x = 0x9C - line->unk0; point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; @@ -42,9 +42,9 @@ void sub_1931C(struct Vector16 arg0) check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; if (check >= 0) - gCurrentPinballGame->unk13BC[1].unk8 = 1; + gCurrentPinballGame->flipper[1].unk8 = 1; else - gCurrentPinballGame->unk13BC[1].unk8 = -1; + gCurrentPinballGame->flipper[1].unk8 = -1; } void MainBoardProcess_4B_19490(void) @@ -58,10 +58,10 @@ void MainBoardProcess_4B_19490(void) { struct SpriteGroup *spriteGroup; - if (gCurrentPinballGame->unk13BC[i].unk0 > 10) - gCurrentPinballGame->unk13BC[i].unk0 = 10; - else if (gCurrentPinballGame->unk13BC[i].unk0 < 0) - gCurrentPinballGame->unk13BC[i].unk0 = 0; + if (gCurrentPinballGame->flipper[i].position > 10) + gCurrentPinballGame->flipper[i].position = 10; + else if (gCurrentPinballGame->flipper[i].position < 0) + gCurrentPinballGame->flipper[i].position = 0; spriteGroup = &gMain.spriteGroups[10 + i]; if (spriteGroup->available) @@ -69,7 +69,7 @@ void MainBoardProcess_4B_19490(void) s8 unk0; struct OamDataSimple *oamData; - unk0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; + unk0 = gCurrentPinballGame->flipper[i].position / 2; spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; @@ -91,34 +91,34 @@ void sub_195C4(void) for (i = 0; i < 2; i++) { s16 dir; - struct UnkPinballGame13BC *unk13BC; - unk13BC = &gCurrentPinballGame->unk13BC[i]; + struct FlipperState *flipper; + flipper = &gCurrentPinballGame->flipper[i]; - unk13BC->unk1 = unk13BC->unk0; - unk13BC->unk2 = 0; + flipper->prevPosition = flipper->position; + flipper->unk2 = 0; if (gCurrentPinballGame->heldButtonActions[i]) { - if (unk13BC->unk6 == 0 && gCurrentPinballGame->unk25 == 0) + if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0) m4aSongNumStart(SE_UNKNOWN_0x72); - unk13BC->unk6 = 1; - unk13BC->unk7 = 0; + flipper->active = 1; + flipper->stallTicks = 0; } else { - if (unk13BC->unk0 == 10) + if (flipper->position == 10) { - if (unk13BC->unk7 > 2) - unk13BC->unk6 = gCurrentPinballGame->heldButtonActions[i]; - unk13BC->unk7++; + if (flipper->stallTicks > 2) + flipper->active = gCurrentPinballGame->heldButtonActions[i]; + flipper->stallTicks++; } } dir = 0; - if (unk13BC->unk6 != 0) + if (flipper->active != 0) { - if (unk13BC->unk0 != 10) + if (flipper->position != 10) { dir = 1; } @@ -129,14 +129,14 @@ void sub_195C4(void) gCurrentPinballGame->unk5C = 0; sub_11B0(7); } - unk13BC->unk2 = unk13BC->unk0 / 2 + 1; - unk13BC->unk0 += 4; + flipper->unk2 = flipper->position / 2 + 1; + flipper->position += 4; } else { - if (unk13BC->unk0 != 0) + if (flipper->position != 0) { - unk13BC->unk2 = unk13BC->unk0 / 2 + 6; + flipper->unk2 = flipper->position / 2 + 6; dir = -1; } else if (gCurrentPinballGame->unk5C != 0) @@ -146,12 +146,12 @@ void sub_195C4(void) gCurrentPinballGame->unk5C = 0; sub_11B0(7); } - unk13BC->unk0 -= 2; + flipper->position -= 2; } - unk13BC->unk3 = unk13BC->unk3 * dir; - if (unk13BC->unk3 <= 0) - unk13BC->unk4 = 0; - unk13BC->unk3 = dir; + flipper->unk3 = flipper->unk3 * dir; + if (flipper->unk3 <= 0) + flipper->unk4 = 0; + flipper->unk3 = dir; } } @@ -169,10 +169,10 @@ void BonusBoardProcess_4B_19734(void) { struct SpriteGroup *spriteGroup; - if (gCurrentPinballGame->unk13BC[i].unk0 > 10) - gCurrentPinballGame->unk13BC[i].unk0 = 10; - else if (gCurrentPinballGame->unk13BC[i].unk0 < 0) - gCurrentPinballGame->unk13BC[i].unk0 = 0; + if (gCurrentPinballGame->flipper[i].position > 10) + gCurrentPinballGame->flipper[i].position = 10; + else if (gCurrentPinballGame->flipper[i].position < 0) + gCurrentPinballGame->flipper[i].position = 0; spriteGroup = &gMain.spriteGroups[3 + i]; if (spriteGroup->available) @@ -180,7 +180,7 @@ void BonusBoardProcess_4B_19734(void) s8 unk0; struct OamDataSimple *oamData; - unk0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; + unk0 = gCurrentPinballGame->flipper[i].position / 2; spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; @@ -206,35 +206,35 @@ void sub_19894(void) for (i = 0; i < 2; i++) { s16 dir; - struct UnkPinballGame13BC *unk13BC; - unk13BC = &gCurrentPinballGame->unk13BC[i]; + struct FlipperState *flipper; + flipper = &gCurrentPinballGame->flipper[i]; - unk13BC->unk1 = unk13BC->unk0; - unk13BC->unk2 = 0; + flipper->prevPosition = flipper->position; + flipper->unk2 = 0; if (gCurrentPinballGame->heldButtonActions[i] && gMain.unkF == 0) { - if (unk13BC->unk6 == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0) + if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0) { m4aSongNumStart(SE_UNKNOWN_0x72); } - unk13BC->unk6 = 1; - unk13BC->unk7 = 0; + flipper->active = 1; + flipper->stallTicks = 0; } else { - if (unk13BC->unk0 == 10) + if (flipper->position == 10) { - if (unk13BC->unk7 > 2) - unk13BC->unk6 = 0; - unk13BC->unk7++; + if (flipper->stallTicks > 2) + flipper->active = 0; + flipper->stallTicks++; } } dir = 0; - if (unk13BC->unk6 != 0) + if (flipper->active != 0) { - if (unk13BC->unk0 != 10) + if (flipper->position != 10) { dir = 1; } @@ -245,14 +245,14 @@ void sub_19894(void) gCurrentPinballGame->unk5C = 0; sub_11B0(7); } - unk13BC->unk2 = unk13BC->unk0 / 2 + 1; - unk13BC->unk0 += 4; + flipper->unk2 = flipper->position / 2 + 1; + flipper->position += 4; } else { - if (unk13BC->unk0 != 0) + if (flipper->position != 0) { - unk13BC->unk2 = unk13BC->unk0 / 2 + 6; + flipper->unk2 = flipper->position / 2 + 6; dir = -1; } else if (gCurrentPinballGame->unk5C != 0) @@ -262,11 +262,11 @@ void sub_19894(void) gCurrentPinballGame->unk5C = 0; sub_11B0(7); } - unk13BC->unk0 -= 2; + flipper->position -= 2; } - unk13BC->unk3 = unk13BC->unk3 * dir; - if (unk13BC->unk3 <= 0) - unk13BC->unk4 = 0; - unk13BC->unk3 = dir; + flipper->unk3 = flipper->unk3 * dir; + if (flipper->unk3 <= 0) + flipper->unk4 = 0; + flipper->unk3 = dir; } } diff --git a/src/board_process6.c b/src/board_process6.c index 9bcc426..9f6c934 100644 --- a/src/board_process6.c +++ b/src/board_process6.c @@ -4,7 +4,11 @@ #include "m4a.h" #include "constants/anglemath.h" +extern u8 gUnknown_0839A28C[]; extern u16 gUnknown_086ACD84[][2]; +extern u16 gUnknown_086ACE2C[][2]; +extern s8 gUnknown_086ACDB8[]; + u16 sub_13824(struct Vector16*); void sub_13D24(u16,struct Vector16*, struct Vector16*); @@ -12,7 +16,7 @@ void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle); void sub_1493C(void); u16 sub_14488(struct Vector16*, struct Vector16); -void sub_14B84(u32 arg0, s16 arg1, struct Vector16 *arg2, u16 arg3); +void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3); void AllBoardProcess_6A_4CEA8() { @@ -28,7 +32,7 @@ void AllBoardProcess_6B_1333C() u16 r7; r7 = sub_13824(&var0); - switch (gCurrentPinballGame->unk22) + switch (gCurrentPinballGame->unk22) { case 7: gCurrentPinballGame->ball->velocity.x = 0; @@ -39,7 +43,7 @@ void AllBoardProcess_6B_1333C() sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); for (i = 0; i < 9; i++) { - if (gUnknown_086ACD50[i].unk2 <= r7) + if (gUnknown_086ACD50[i].unk2 <= r7) { var0.x += gUnknown_086ACD50[i].unk0; var0.y += gUnknown_086ACD50[i].unk1; @@ -51,7 +55,7 @@ void AllBoardProcess_6B_1333C() break; case 6: sub_13934(&var0, &var1,r7); - sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); + sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; break; @@ -60,7 +64,7 @@ void AllBoardProcess_6B_1333C() sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); for (i = 0; i < 9; i++) { - if (gUnknown_086ACD50[i].unk2 <= r7) + if (gUnknown_086ACD50[i].unk2 <= r7) { var0.x += gUnknown_086ACD50[i].unk0; var0.y += gUnknown_086ACD50[i].unk1; @@ -74,20 +78,20 @@ void AllBoardProcess_6B_1333C() sub_13934(&var0, &var1, r7); var0.x -= (gUnknown_02031520.unk14.unk22 * 2); var0.y -= (gUnknown_02031520.unk14.unk20 * 2); - if (gCurrentPinballGame->unk13BC[0].unk4 == 0) + if (gCurrentPinballGame->flipper[0].unk4 == 0) { sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); - gCurrentPinballGame->unk13BC[0].unk4 = 1; + gCurrentPinballGame->flipper[0].unk4 = 1; } else - { + { var2.x = gCurrentPinballGame->ball->velocity.x; var2.y = gCurrentPinballGame->ball->velocity.y; } sub_13B28(&var0, &var2, 0); gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; - if (gCurrentPinballGame->unk22 == 5) + if (gCurrentPinballGame->unk22 == 5) { for (i = 0; i < 4; i++) { @@ -106,10 +110,10 @@ void AllBoardProcess_6B_1333C() sub_13934(&var0, &var1, r7); var0.x -= (gUnknown_02031520.unk14.unk24 * 2); var0.y -= (gUnknown_02031520.unk14.unk20 * 2); - if (gCurrentPinballGame->unk13BC[1].unk4 == 0) + if (gCurrentPinballGame->flipper[1].unk4 == 0) { sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); - gCurrentPinballGame->unk13BC[1].unk4 = 1; + gCurrentPinballGame->flipper[1].unk4 = 1; } else { @@ -122,7 +126,7 @@ void AllBoardProcess_6B_1333C() var2.x = -var2.x; gCurrentPinballGame->ball->velocity.x = var2.x + var1.x; gCurrentPinballGame->ball->velocity.y = var2.y + var1.y; - if (gCurrentPinballGame->unk22 == 5) + if (gCurrentPinballGame->unk22 == 5) { for (i = 0; i < 4; i++) { @@ -155,12 +159,12 @@ void AllBoardProcess_6B_1333C() gCurrentPinballGame->unk127 = -1; } } - if (gCurrentPinballGame->unk5F3) + if (gCurrentPinballGame->unk5F3) { sub_1493C(); } } - if (gCurrentPinballGame->unk22 != 0) + if (gCurrentPinballGame->unk22 != 0) { gCurrentPinballGame->ball->positionQ1.x = var0.x; gCurrentPinballGame->ball->positionQ1.y = var0.y; @@ -169,7 +173,7 @@ void AllBoardProcess_6B_1333C() } } -u16 sub_13824(struct Vector16* param) +u16 sub_13824(struct Vector16* param) { u16 retVal; struct Vector16 test; @@ -269,46 +273,46 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) int xx, yy; struct Vector16 r5 = { arg0->x * 128, arg0->y * 128 }; struct Vector16 sp4 = { arg1->x, arg1->y }; - + for (;;) { - sp12 = gCurrentPinballGame->unk13BC[arg2].unk0 - gCurrentPinballGame->unk13BC[arg2].unk1; + sp12 = gCurrentPinballGame->flipper[arg2].position - gCurrentPinballGame->flipper[arg2].prevPosition; - if ((sp12 *= gCurrentPinballGame->unk13BC[arg2].unk8) > 0) + if ((sp12 *= gCurrentPinballGame->flipper[arg2].unk8) > 0) { - if (gCurrentPinballGame->unk13BC[arg2].unk2 < 7) - r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 - 1][0] + 0x4000; + if (gCurrentPinballGame->flipper[arg2].unk2 < 7) + r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 - 1][0] + 0x4000; else - r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently + r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently } else { break; } - + r7.x = r5.x - 22 * 128; r7.y = r5.y - 48 * 128; - + xx = r7.x * r7.x; yy = r7.y * r7.y; temp = xx + yy - 0x240000; temp = Sqrt(temp * 4) / 2; sub_14B84(temp, arg2, &sp4, r4); - + if (sp4.x > 0x1C2) sp4.x = 0x1C2; else if (sp4.x < -0x1C2) sp4.x = -0x1C2; - + r5.x += sp4.x; r5.y += sp4.y; arg0->x = r5.x / 128; arg0->y = r5.y / 128; flag = FALSE; - + if (arg0->x < 50) break; - + for (i = gCurrentPinballGame->unk1E; i < 4; i++) { if (sub_14AF4(*arg0, i + 1, &sp0, arg2)) @@ -317,11 +321,11 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) break; } } - + if (!flag) break; } - + if (sp12 <= 0) { gCurrentPinballGame->unk22 = 5; @@ -334,36 +338,36 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2) } -void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) -{ +void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) +{ u16 angleOfFlippedArg1; s32 angleDelta, adjustedAngle; s16 angleSign; u16 halfMag; s32 halfMag2; - + s32 forwardMag, lateralMag, scaledForwardMag, scaledLateralMag; u32 vxSquared, vySquared; - + s32 curveDir, curveSign, curveDirScaledFactor, curveScaleFactor; u16 finalAngle; - + struct Vector32 tempVec; struct Vector16 tempVec2; - + angleOfFlippedArg1 = ArcTan2(-arg1->x, arg1->y); - vxSquared = (arg1->x * arg1->x) + (arg1->y * arg1->y); + vxSquared = (arg1->x * arg1->x) + (arg1->y * arg1->y); halfMag = Sqrt(vxSquared * 4) /2; // Determine smallest angle difference and its direction - if (angleOfFlippedArg1 > arg0) + if (angleOfFlippedArg1 > arg0) { angleDelta = angleOfFlippedArg1 - arg0; angleSign = -1; } - else + else { angleDelta = arg0 - angleOfFlippedArg1; angleSign = 1; @@ -375,7 +379,7 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) //0x10000 = 360 degrees //Clamps to the closest 180, with direction - if (angleDelta > ANGLE_180) + if (angleDelta > ANGLE_180) { angleDelta = ANGLE_360 - angleDelta; angleSign = -angleSign; @@ -383,11 +387,11 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) //Adds a 90 degree offset based on the delta factor adjustedAngle = arg0 + angleSign * ANGLE_90; - + // Apply signed adjustedAngle to stay in 0..0xFFFF if (adjustedAngle < 0) adjustedAngle = ANGLE_360 + adjustedAngle; - + // Project a curved arg2 delta based on half the magnitude // Note: the trigonometric functions return s16, typically scaled by 0x1000 or more lateralMag = halfMag * Sin(angleDelta) / 20000; @@ -398,9 +402,9 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) { if (forwardMag > 0x46) m4aSongNumStart(SE_UNKNOWN_0x77); - - if (forwardMag > 0x118 - && gCurrentPinballGame->unk61C == 0 + + if (forwardMag > 0x118 + && gCurrentPinballGame->unk61C == 0 && gMain.selectedField < MAIN_FIELD_COUNT) { sub_11B0(6); @@ -419,22 +423,22 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) curveDir = -angleSign; curveDirScaledFactor = (curveDir * 25) * 1024; - gCurrentPinballGame->ball->unk6 = - curveDirScaledFactor * scaledLateralMag / 0xEB8 + gCurrentPinballGame->ball->unk6 = + curveDirScaledFactor * scaledLateralMag / 0xEB8 + gCurrentPinballGame->ball->unk4; tempVec.x = forwardMag * Cos(arg0); tempVec.y = -forwardMag * Sin(arg0); - + tempVec.x = lateralMag * Cos(adjustedAngle) + tempVec.x; tempVec.y = -lateralMag * Sin(adjustedAngle) + tempVec.y; tempVec.x = tempVec.x / 20000; tempVec.y = tempVec.y / 20000; - // With how the curveSign/curveScaleFactor are only used 'multiplied together' + // With how the curveSign/curveScaleFactor are only used 'multiplied together' // with the tempVec calculation, the negations cancel out. - Shouldn't be needed. - // Speculation is that this might have been a defensive code measure against + // Speculation is that this might have been a defensive code measure against // sign misbehavior, written by someone familar with assembly patterns. curveSign = 1; if (curveScaleFactor < 0) @@ -443,26 +447,26 @@ void sub_13D24(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg2) curveScaleFactor = -curveScaleFactor; } curveSign = curveDir * curveSign; - + tempVec2.x = curveSign * curveScaleFactor * Cos(adjustedAngle) / 20000; tempVec2.y = -curveSign * curveScaleFactor * Sin(adjustedAngle) / 20000; - + vxSquared = tempVec.x * tempVec.x; vySquared = tempVec.y * tempVec.y; //Yes, the name is weird here. -- var reuse was needed for register match halfMag2 = vxSquared + vySquared; halfMag2 = Sqrt(halfMag2 * 4) /2; - + tempVec.x = tempVec2.x + tempVec.x; tempVec.y = tempVec2.y + tempVec.y; finalAngle = ArcTan2( tempVec.x, -tempVec.y); - if (gMain.selectedField == FIELD_SAPPHIRE - && gCurrentPinballGame->unk24 > 0 - && gCurrentPinballGame->ball->positionQ0.y < 0xD2) + if (gMain.selectedField == FIELD_SAPPHIRE + && gCurrentPinballGame->unk24 > 0 + && gCurrentPinballGame->ball->positionQ0.y < 0xD2) { - tempVec.x = halfMag * Cos(finalAngle) / 20000; + tempVec.x = halfMag * Cos(finalAngle) / 20000; tempVec.y = -halfMag * Sin(finalAngle) / 20000; } else @@ -485,7 +489,7 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) s16 var0; struct Vector16 tempVec; - + x = gCurrentPinballGame->ball->velocity.x; y = gCurrentPinballGame->ball->velocity.y; vMagSquared = (x * x) + (y * y); @@ -496,15 +500,15 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) { s32 value = -0x2A1C; var0 = value + arg2; - arg0 = 0x6a1c; - } + arg0 = 0x6a1c; + } else { s32 value = 0x55e4; var0 = value - arg2; arg0 = 0x15e4; - } - + } + if (var0 >= 0 && var0 <= 0x1200 && vMagSquared < 0x4000) { tempVec.x = 0; @@ -515,26 +519,26 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) arg1->x = arg1->x / 5; arg1->y = arg1->y / 5; - gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 4) / 10; - + gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 4) / 10; + if ( gCurrentPinballGame->ballSpeed > 0) { tempVec.x = 230 * Cos(arg0) / VECTORSCALEDOWN; - tempVec.y = -230 * Sin(arg0) / VECTORSCALEDOWN; - } + tempVec.y = -230 * Sin(arg0) / VECTORSCALEDOWN; + } else { tempVec.x = 285 * Cos(arg0) / VECTORSCALEDOWN; tempVec.y = -285 * Sin(arg0) / VECTORSCALEDOWN; } - + gCurrentPinballGame->unk716 = 4; if (gCurrentPinballGame->ball->positionQ0.x < 120) gCurrentPinballGame->unk717 = 0; else gCurrentPinballGame->unk717 = 1; - } - } + } + } else { if (gCurrentPinballGame->unk23 == 1) @@ -546,7 +550,7 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) { tempVec.x = 60 * Cos(arg0) / VECTORSCALEDOWN; tempVec.y = -60 * Sin(arg0) / VECTORSCALEDOWN; - } + } else if (arg0 >= 0x1000 && arg0 <= 0x7000) { tempVec.x = 240 * Cos(arg0) / VECTORSCALEDOWN; @@ -557,17 +561,17 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) tempVec.x = 120 * Cos(arg0) / VECTORSCALEDOWN; tempVec.y = -120 * Sin(arg0) / VECTORSCALEDOWN; } - } + } else { tempVec.x = gUnknown_086ACDF4[gCurrentPinballGame->unk23] * Cos(arg0) / VECTORSCALEDOWN; tempVec.y = -gUnknown_086ACDF4[gCurrentPinballGame->unk23] * Sin(arg0) / VECTORSCALEDOWN; - } + } } - + arg1->x = arg1->x + tempVec.x; arg1->y = arg1->y + tempVec.y; - + if (gCurrentPinballGame->unk5A4 != 0) { s16 x2 = arg1->x; @@ -577,26 +581,26 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2) { gCurrentPinballGame->unk5A4 = 0; vMagSquared = 0x80; - } + } else { - vMagSquared = 0x280; + vMagSquared = 0x280; } - + if (x2 < 0) { - x2 = -x2; + x2 = -x2; xSign = -1; } - + if (x2 < 0x100) - arg1->x = xSign * 256; - + arg1->x = xSign * 256; + gCurrentPinballGame->ball->unk6 = 0; angle = ArcTan2(arg1->x, -arg1->y); arg1->x = vMagSquared * Cos(angle) / VECTORSCALEDOWN; arg1->y = -vMagSquared * Sin(angle) / VECTORSCALEDOWN; - } + } } u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { @@ -696,14 +700,14 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) { return sp0_return; } -u16 sub_1467C(struct Vector16* arg0, u16* arg1) +u16 sub_1467C(struct Vector16* arg0, u16* arg1) { u16 res; struct Vector16 vec1; struct Vector16 vec2; - + res = 0; - + vec1.x = arg0->x - gUnknown_02031520.unk14.unk22 * 2; vec2.x = arg0->x - gUnknown_02031520.unk14.unk24 * 2; vec1.y = arg0->y - gUnknown_02031520.unk14.unk20 * 2; @@ -721,7 +725,7 @@ u16 sub_1467C(struct Vector16* arg0, u16* arg1) } if (res == 0) - { + { if (vec2.x <= 95 && vec2.x >= 0) { vec2.x = 95 - vec2.x; @@ -731,8 +735,259 @@ u16 sub_1467C(struct Vector16* arg0, u16* arg1) res = 1; } } - } + } } - + return res; } + + +u16 sub_14740(struct Vector16 *arg0, u16 *arg1) +{ + struct Vector16 vec1; + u16 x, y; + u16 res; + u16 var0; + + res = 0; + if (gCurrentPinballGame->unk5A4 != 2) + { + vec1.x = arg0->x / 2 - gCurrentPinballGame->unkC4; + vec1.y = arg0->y / 2 - gCurrentPinballGame->unkC6; + if ((vec1.y >= 0 && vec1.y < 48) && (vec1.x >= 0 && vec1.x < 48)) + { + s32 ix = vec1.y * 48 + vec1.x; + var0 = gUnknown_0839A28C[ix]; + if (var0 & 0x80) + { + gCurrentPinballGame->unk22 = 2; + gCurrentPinballGame->unk23 = 3; + //Todo: fakematch; used to swap register order + *arg1 = (var0 & 0x7F & var0) * 512; + gCurrentPinballGame->unk5A6 = 20; + + if (gCurrentPinballGame->unk5A9) + gCurrentPinballGame->unk5A9 = 24; + else + gCurrentPinballGame->unk5A9 = 20; + + // Only difference between these two branches is the played sound + if (gCurrentPinballGame->currentSpecies == SPECIES_JIRACHI) + { + if (gCurrentPinballGame->unk5AA == 0) + { + gCurrentPinballGame->unk5A5++; + if (gCurrentPinballGame->unk5A5 == 3) + { + gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; + gCurrentPinballGame->unk5A4 = 2; + gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->scoreAddedInFrame = 10000; + } + else + { + gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; + gCurrentPinballGame->unk5A4 = 1; + gCurrentPinballGame->scoreAddedInFrame = 10000; + } + + gCurrentPinballGame->unk5AA = 4; + } + + res = 1; + m4aSongNumStart(SE_UNKNOWN_0x145); + sub_11B0(7); + } + else + { + if (gCurrentPinballGame->unk5AA == 0) + { + gCurrentPinballGame->unk5A5++; + if (gCurrentPinballGame->unk5A5 == 3) + { + gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; + gCurrentPinballGame->unk5A4 = 2; + gCurrentPinballGame->unk5A6 = 0; + gCurrentPinballGame->scoreAddedInFrame = 10000; + } + else + { + gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; + gCurrentPinballGame->unk5A4 = 1; + gCurrentPinballGame->scoreAddedInFrame = 10000; + } + + gCurrentPinballGame->unk5AA = 4; + } + + res = 1; + m4aSongNumStart(SE_UNKNOWN_0x74); + sub_11B0(7); + } + } + } + } + + return res; +} + + +void sub_1493C(void) +{ + struct Vector16 vec1; + struct Vector32 vec2; + int squaredMagnitude; + u16 angle; + u8 temp_adjust; + + vec1.x = gCurrentPinballGame->ball->positionQ1.x - 238; + vec1.y = gCurrentPinballGame->ball->positionQ1.y - 558; + squaredMagnitude = (vec1.x * vec1.x) + (vec1.y * vec1.y); + + if (squaredMagnitude < 1764 && (gCurrentPinballGame->unk1E & 1) == 0) + { + angle = ArcTan2(-vec1.x, vec1.y); + temp_adjust = 30; + vec2.x = (temp_adjust * Cos(angle)) / 20000; + vec2.y = (-temp_adjust * Sin(angle)) / 20000; + gCurrentPinballGame->ball->velocity.x = ((vec2.x * 100) + (98 * gCurrentPinballGame->ball->velocity.x)) / 100; + gCurrentPinballGame->ball->velocity.y = ((vec2.y * 100) + (98 * gCurrentPinballGame->ball->velocity.y)) / 100; + } + + if (gCurrentPinballGame->unk5F4 < 20) + { + if (squaredMagnitude < 40) + { + gCurrentPinballGame->unk5F4++; + gCurrentPinballGame->ball->scale = 0x100; + } + else + { + gCurrentPinballGame->ball->scale = 0x100; + if (squaredMagnitude > 100) + gCurrentPinballGame->unk5F4 = 0; + } + } + else + { + if (gCurrentPinballGame->unk5F4 < 30) + { + gCurrentPinballGame->unk5F4++; + gCurrentPinballGame->ball->scale = ((30 - gCurrentPinballGame->unk5F4) * 0x80) / 10 + 0x80; + gCurrentPinballGame->ball->positionQ0.x = 119; + gCurrentPinballGame->ball->positionQ0.y = 279; + gCurrentPinballGame->ball->unk6 = 0; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; + } + else + { + gCurrentPinballGame->unk5F4 = 0; + gCurrentPinballGame->unk25 = 4; + if (gMain.selectedField == FIELD_RUBY) + sub_1A98C(); + else + sub_32914(); + + gCurrentPinballGame->unk22 = 7; + gCurrentPinballGame->ball->scale = 0x80; + } + } +} + +u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { + struct FlipperState* flipper; + u16 res; + int new_var; + unsigned short ix; + + res = 0; + + ix = (r0.y * 96) + r0.x; + flipper = &gCurrentPinballGame->flipper[r3]; + + flipper->unk5 = gUnknown_086ACDB8[r1 + (flipper->unk2 * 5)]; + + if (0xF & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix]) + { + *r2 = 0xFFF0 & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix]; + if (r3 == 1) + { + new_var = 0x8000; + *r2 = new_var - (*r2); + } + res = 1; + } + + return res; +} + +void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) +{ + u16 angle; + + angle = gCurrentPinballGame->flipper[arg1].unk5; + + if (gCurrentPinballGame->flipper[arg1].unk8 > 0) + { + if (gCurrentPinballGame->unk5C == 0) + { + u16 var0; + s32 scale; + s16 temp_r2; + s16 temp_r5; + + temp_r2 = gCurrentPinballGame->flipper[arg1].unk5; + temp_r5 = (temp_r2 - 2) * 25; + arg0 -= temp_r5; + + if (arg0 < 2850) + { + var0 = 0x4800 - (arg0 - 2600) * 2048 / 600; + scale = (arg0 - 2600) * 128 / 300 + 120; + } + else + { + var0 = + gUnknown_086ACE2C[temp_r2][0] - + ((gUnknown_086ACE2C[temp_r2][1] * (arg0 -2600)) / 5400); + scale = ((arg0 -2600) * 348 / 5400) + 406; + } + + if (arg1) + var0 = 0x8000 - var0; + + angle = (gCurrentPinballGame->ball->velocity.x * -0x600) / 0x80 + + (gCurrentPinballGame->ball->unk8 * -0x180) / 0x100 + + var0; + gCurrentPinballGame->unk60.x = scale * Cos(angle) / 20000; + gCurrentPinballGame->unk60.y = -scale * Sin(angle) / 20000; + } + + gCurrentPinballGame->unk5C = 1; + + if (arg1) + arg2->x = -gCurrentPinballGame->unk60.x; + else + arg2->x = gCurrentPinballGame->unk60.x; + + arg2->y = gCurrentPinballGame->unk60.y; + } + else + { + struct Vector16 vec1; + s32 scale; + u16 angle2; + + scale = arg0 / 20; + vec1.x = scale * Cos(arg3) / 20000; + vec1.y = -(scale * Sin(arg3)) / 20000; + + arg2->x = vec1.x + arg2->x * 3 / 2; + arg2->y = vec1.y + arg2->y * 3 / 2; + + angle2 = ArcTan2(arg2->x, -arg2->y); + arg2->x = scale * Cos(angle2) / 20000; + arg2->y = -scale * Sin(angle2) / 20000; + } +} \ No newline at end of file diff --git a/src/board_process7.c b/src/board_process7.c index b9e02b3..a8cce8a 100644 --- a/src/board_process7.c +++ b/src/board_process7.c @@ -15,15 +15,15 @@ void MainBoardProcess_7B_12524(void) struct BallState *currentBallState; struct SpriteGroup *spriteGroup; s16 r8; - + currentBallState = gCurrentPinballGame->ball; r8 = currentBallState->unkA >> 12; - + if (currentBallState->positionQ0.y == 340 && (currentBallState->positionQ0.x == 90 || currentBallState->positionQ0.x == 149)) currentBallState->unkA = currentBallState->unkC; currentBallState->unkC = currentBallState->unkA; - + if (!gCurrentPinballGame->unk5F7 && gCurrentPinballGame->ballUpgradeCounter > 0) { if (--gCurrentPinballGame->ballUpgradeCounter == 0) @@ -31,11 +31,11 @@ void MainBoardProcess_7B_12524(void) if (gCurrentPinballGame->ballUpgradeType > BALL_UPGRADE_TYPE_POKE_BALL) { gCurrentPinballGame->ballUpgradeType--; - + if (gCurrentPinballGame->ballUpgradeType > BALL_UPGRADE_TYPE_POKE_BALL) gCurrentPinballGame->ballUpgradeCounter = 3600; } - + DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], (void *)OBJ_PLTT + 0x20, 0x20); } } @@ -50,22 +50,22 @@ void MainBoardProcess_7B_12524(void) currentBallState->positionQ0.x = currentBallState->positionQ1.x / 2; currentBallState->positionQ0.y = currentBallState->positionQ1.y / 2; - + spriteGroup = gMain.unk44[0]; - + if (spriteGroup->available) { SetMatrixScale(currentBallState->scale, currentBallState->scale, 0); - + spriteGroup->baseX = -(gCurrentPinballGame->unk4C + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->unk2AA; spriteGroup->baseY = -(gCurrentPinballGame->unk4E + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->unk5FC - gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk166; - + currentBallState->screenPosition.x = spriteGroup->baseX; currentBallState->screenPosition.y = spriteGroup->baseY; - + oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - + if (currentBallState->oamPriority == 3) { if (currentBallState->positionQ0.y > 248) @@ -81,12 +81,12 @@ void MainBoardProcess_7B_12524(void) if (spriteGroup->baseY > 200) spriteGroup->baseY = 200; - + if (spriteGroup->baseY < -20) spriteGroup->baseY = -20; oamData->x = oam->xOffset + spriteGroup->baseX; - + if (currentBallState->unk0) oamData->y = 200; else @@ -98,16 +98,16 @@ void MainBoardProcess_7B_12524(void) if (spriteGroup->available) { SetMatrixScale(currentBallState->scale, currentBallState->scale, 0); - + spriteGroup->baseX = -(gCurrentPinballGame->unk4C + 7) + currentBallState->positionQ0.x - gCurrentPinballGame->unk2AA; spriteGroup->baseY = -(gCurrentPinballGame->unk4E + 7) + currentBallState->positionQ0.y - gCurrentPinballGame->unk5FC - gCurrentPinballGame->unkE6 + gCurrentPinballGame->unk166; - + currentBallState->screenPosition.x = spriteGroup->baseX; currentBallState->screenPosition.y = spriteGroup->baseY; - + oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - + if (currentBallState->oamPriority == 3) { if (currentBallState->positionQ0.y > 248) @@ -117,12 +117,12 @@ void MainBoardProcess_7B_12524(void) } else oamData->priority = currentBallState->oamPriority; - + DmaCopy16(3, gUnknown_083BB16C[r8 + gCurrentPinballGame->ballUpgradeType * 17], (void *)0x6010400, 0x80); if (spriteGroup->baseY > 200) spriteGroup->baseY = 200; - + if (spriteGroup->baseY < -20) spriteGroup->baseY = -20; @@ -142,21 +142,21 @@ void MainBoardProcess_7B_12524(void) gCurrentPinballGame->unkD0[0].x = currentBallState->positionQ0.x - 7; gCurrentPinballGame->unkD0[0].y = currentBallState->positionQ0.y - 7; - + if (gCurrentPinballGame->unk71) { for (i = 0; i < 2; i++) { spriteGroup = gMain.unk44[i + 1]; - + if (spriteGroup->available) { oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - + oamData->priority = currentBallState->oamPriority; oamData->x = oam->xOffset + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - gCurrentPinballGame->unk4C); - + if (i == 0) oamData->y = gCurrentPinballGame->unkD0[2].y - gCurrentPinballGame->unk4E + oam->yOffset; else if (i == 1) @@ -179,12 +179,12 @@ void MainBoardProcess_7B_12524(void) for (i = 0; i < 2; i++) { spriteGroup = gMain.unk44[i + 1]; - + if (spriteGroup->available) { oam = &spriteGroup->oam[0]; oamData = &gOamBuffer[oam->oamId]; - + oamData->priority = currentBallState->oamPriority; oamData->x = oam->xOffset + (gCurrentPinballGame->unkD0[(i + 1) * 2].x - gCurrentPinballGame->unk4C); oamData->y = 200; @@ -198,7 +198,7 @@ void MainBoardProcess_7B_12524(void) } spriteGroup = gMain.unk44[43]; - + if (spriteGroup->available) { s8 newIx; @@ -215,14 +215,14 @@ void MainBoardProcess_7B_12524(void) newIx = gCurrentPinballGame->unk6E; DmaCopy16(3, gUnknown_083BD36C[newIx], (void *)0x6011EE0, 0x200); - + oam = &spriteGroup->oam[0]; - + gOamBuffer[oam->oamId].x = oam->xOffset + spriteGroup->baseX; gOamBuffer[oam->oamId].y = oam->yOffset + spriteGroup->baseY; - + gOamBuffer[oam->oamId].priority = currentBallState->oamPriority; - + if (gCurrentPinballGame->unk71C < 14) gMain.unk44[43]->available = 0; } @@ -400,12 +400,12 @@ void BonusBoardProcess_7B_12BF8() { if (gCurrentPinballGame->unk5F7 == 0 && gCurrentPinballGame->ballUpgradeCounter != 0) { - gCurrentPinballGame->ballUpgradeCounter -= 1; + gCurrentPinballGame->ballUpgradeCounter--; if (gCurrentPinballGame->ballUpgradeCounter == 0) { if (gCurrentPinballGame->ballUpgradeType > BALL_UPGRADE_TYPE_POKE_BALL) { - gCurrentPinballGame->ballUpgradeType -= 1; + gCurrentPinballGame->ballUpgradeType--; if (gCurrentPinballGame->ballUpgradeType > BALL_UPGRADE_TYPE_POKE_BALL) { gCurrentPinballGame->ballUpgradeCounter = 60 * 60; diff --git a/src/rom_17634.c b/src/collision_checks.c similarity index 62% rename from src/rom_17634.c rename to src/collision_checks.c index a6fc2b6..1ffd996 100644 --- a/src/rom_17634.c +++ b/src/collision_checks.c @@ -3,40 +3,1021 @@ #include "m4a.h" #include "constants/bg_music.h" +extern const u16 gUnknown_08254B10[]; +extern const u16 gUnknown_08257390[]; +extern const u16 gUnknown_08259C10[]; +extern struct SongHeader gUnknown_0869FC0C; extern u16 gUnknown_086ACE70[]; -void sub_1642C(u8 arg0, u16* arg1, u16* arg2) + +s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { + struct Vector16 vec1; + struct Vector16 vec2; + u16 sp00; + u8 sp02; + u16 return_val; + s16 unk0; + s32 unk1; + s32 unk2; + + u32 some_enum; + u32 switch_enum; + + return_val = 0; + gCurrentPinballGame->ball->unk4 = 0; + + vec1.x = arg0->x / 8; + vec1.y = arg0->y / 8; + vec2.x = arg0->x % 8; + vec2.y = arg0->y % 8; + unk1 = vec1.y / 64; + unk2 = gCurrentPinballGame->unk24; + vec1.y %= 64; + + unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; + sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; + sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; + + sub_15054(arg0, &sp00, &sp02); + + switch_enum = sp02 & 0xF; + some_enum = sp02 >> 4; + + switch (switch_enum-1) { + case 0: + case 3: + case 5: + gCurrentPinballGame->unk23 = (switch_enum - 1); + gCurrentPinballGame->unk22 = 1; + *arg1 = sp00; + + if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) + { + if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || + gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + { + + if (gCurrentPinballGame->ball->unk6 > 0) + { + *arg1 = 0x3E00; + } + else if (gCurrentPinballGame->ball->unk6 != 0) + { + *arg1 = 0x4100; + } + else + { + if (gMain.systemFrameCount & 1) + { + gCurrentPinballGame->ball->unk4 = 0x28; + gCurrentPinballGame->ball->unk6 = 1; + *arg1 = 0x3E00; + } + else + { + gCurrentPinballGame->ball->unk4 = 0xFFD8; + gCurrentPinballGame->ball->unk6 = 0xFFFF; + *arg1 = 0x4100; + } + } + } + } + return_val = 1; + break; + case 1: + case 2: + gCurrentPinballGame->unk23 = switch_enum - 1; + gCurrentPinballGame->unk22 = 2; + *arg1 = sp00 & 0x0000FFF0; + return_val = 1; + + break; + case 4: + gCurrentPinballGame->unk2A2 = 2; + gCurrentPinballGame->unk1F = 1; + some_enum = 0; + break; + } + sub_153CC((s32) some_enum, &return_val, arg1); + + return return_val; +} + + +void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2) { - s16 absVelY; + s16 deltaX; + s16 deltaY; + u16 maskedResult; + u8 lowerNibble; + s32 ix; + + maskedResult = 0; + lowerNibble = 0; + ix = 0; + + if (gCurrentPinballGame->unk5B2 == 0) + { + if (gCurrentPinballGame->unk24 != 0) + return; + + if (gCurrentPinballGame->unk2A4 != 0) + { + if (gCurrentPinballGame->unk2A3 == 0) + return; + + deltaX = arg0->x + gCurrentPinballGame->unk184[0].x; + deltaY = arg0->y + gCurrentPinballGame->unk184[0].y; + + if (deltaX > 79U) + return; + + if (deltaY > 87U) + return; + + maskedResult = 0xFFF0 & gUnknown_08259C10[(deltaY * 80) + deltaX]; + lowerNibble = 0xF & gUnknown_08259C10[(deltaY * 80) + deltaX]; + + if (lowerNibble == 0) + return; + + *arg1 = maskedResult; + + if (gCurrentPinballGame->unk2A2 <= 1) + { + *arg2 = lowerNibble; + gCurrentPinballGame->unk2A2 = 7; + return; + } + + *arg2 = 1; + return; + } + + if (0xF & *arg2) + return; + + deltaX = arg0->x + (u16) gCurrentPinballGame->unk184[0].x; + deltaY = arg0->y + (u16) gCurrentPinballGame->unk184[0].y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + + if (lowerNibble != 0) + ix = 0; + } + + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[1].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[1].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + if (lowerNibble != 0) + ix = 1; + } + + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[2].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[2].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + + if (lowerNibble == 0) + return; + + ix = 2; + } + + if (lowerNibble == 0) + return; + } + } + + if (gCurrentPinballGame->unk16F == 0) + gCurrentPinballGame->unk170[ix] = 107; + + *arg1 = maskedResult; + *arg2 = lowerNibble; + + if (gCurrentPinballGame->unk624 > 0) + return; + + gCurrentPinballGame->unk624 = 2; + } + else + { + if ((*arg2 & 0xF) == 0) + { + if (gCurrentPinballGame->unk2E5[0] > 0) + { + s16 deltaY_alt; + deltaX = 2 * (-24 -gCurrentPinballGame->unk2EC[0]) + arg0->x; + deltaY_alt = arg0->y -580; + + if (deltaX <= 71U && deltaY_alt <= 71U) + { + *arg1 = 0xFFF0 & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; + *arg2 = 0xF & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; + + if (*arg2 & 1) + { + gCurrentPinballGame->unk2E2 = 1; + *arg2 = 6; + } + } + } + + if (gCurrentPinballGame->unk2E5[1] > 0) + { + deltaX = ((gCurrentPinballGame->unk2EC[1] - 180) * 2) + arg0->x; + deltaY = arg0->y -580; + + if (deltaX <= 71U && deltaY <= 71U) + { + *arg1 = 0xFFF0 & gUnknown_08257390[(deltaY * 72) + deltaX]; + *arg2 = 0xF & gUnknown_08257390[(deltaY * 72) + deltaX]; + + if (*arg2 & 1) + { + gCurrentPinballGame->unk2E2 = 2; + *arg2 = 6; + return; + } + } + } + } + } +} + +void sub_153CC(s32 arg0, s16* arg1, u16* arg2) +{ + s16 absVelY; + + switch ((u8)arg0 - 1) + { + case 0: + if (gCurrentPinballGame->unk26 == 0) + { + if (gCurrentPinballGame->ball->positionQ1.x > 359) + { + if (gCurrentPinballGame->ball->positionQ1.y > 199) + gCurrentPinballGame->unk25 = 1; + else + gCurrentPinballGame->unk25 = 3; + } + else + gCurrentPinballGame->unk25= 2; + + sub_1A98C(); + gCurrentPinballGame->unk22 = 7; + *arg1 = 1; + return; + } + default: + return; + case 1: + if (gCurrentPinballGame->unk24 == 0) + { + gCurrentPinballGame->ball->oamPriority = 2; + gCurrentPinballGame->unk24 = 2; + break; + } + + if (gCurrentPinballGame->unk24 == 2) + { + gCurrentPinballGame->ball->oamPriority = 2; + gCurrentPinballGame->unk24 = 3; + } + + break; + case 2: + if (gCurrentPinballGame->unk24 == 2) + { + gCurrentPinballGame->ball->oamPriority = 3; + gCurrentPinballGame->unk24 = 0; + } + else if (gCurrentPinballGame->unk24 == 3) + { + gCurrentPinballGame->ball->oamPriority = 2; + gCurrentPinballGame->unk24 = 2; + } + + if (gCurrentPinballGame->unk2FB == 6) + gCurrentPinballGame->unk2FB = 7; + + if (gCurrentPinballGame->unk2F0 & 0xF0 ) + gCurrentPinballGame->unk2F0 = 0; + + if (gCurrentPinballGame->unk1AB & 0xF0) + gCurrentPinballGame->unk1AB = 0; + + break; + case 3: + if (gCurrentPinballGame->unk600 == 0) + { + if (gCurrentPinballGame->ball->positionQ0.x > 131) + { + gCurrentPinballGame->scoreAddedInFrame = 1000; + + if (gCurrentPinballGame->unk70E <= 98) + gCurrentPinballGame->unk70E++; + } + else if (gCurrentPinballGame->ball->positionQ0.x > 91) + { + gCurrentPinballGame->scoreAddedInFrame = 2000; + gCurrentPinballGame->unk174 = 0; + gCurrentPinballGame->unk16F = 1; + } + else + { + gCurrentPinballGame->scoreAddedInFrame = 1000; + + if (gCurrentPinballGame->unk2B2 == 0) + { + gCurrentPinballGame->unk2B2 = 1; + gCurrentPinballGame->unk2B0 = 0; + } + } + gCurrentPinballGame->unk600 = 45; + + m4aSongNumStart(SE_UNKNOWN_0x76); + } + break; + case 4: + gCurrentPinballGame->unk20 = 1; + gCurrentPinballGame->unk165 = 1; + gCurrentPinballGame->unk732 = 0; + return; + case 5: + if (gCurrentPinballGame->unk5B2 == 0) + { + sub_46FD4(1); + gCurrentPinballGame->unk29E = 1; + } + break; + case 6: + if (gCurrentPinballGame->ball->positionQ0.x < 50) + { + if (gCurrentPinballGame->unk2FA == 0) + { + gCurrentPinballGame->unk2FA = 1; + gCurrentPinballGame->unk2FB = 1; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xB000; + *arg1 = 1; + } + } + else if (gCurrentPinballGame->unk2FA == 1) + { + gCurrentPinballGame->unk2FA = 2; + gCurrentPinballGame->unk2FB = 3; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xA000; + *arg1 = 1; + gCurrentPinballGame->ball->velocity.x = 0; + gCurrentPinballGame->ball->velocity.y = 0; + + memcpy(&gCurrentPinballGame->unk1334[1], gCurrentPinballGame->unk1334, 0x44U); + + gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; + gCurrentPinballGame->unk1328 = 120; + } + + gCurrentPinballGame->unk732 = 14; + return; + case 7: + if (gCurrentPinballGame->ball->positionQ0.x <= 50) + { + if (gCurrentPinballGame->unk732 == 8) + { + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72E <= 2) + { + if (gCurrentPinballGame->unk72E == 0) + gCurrentPinballGame->scoreAddedInFrame = 2000; + else if (gCurrentPinballGame->unk72E == 1) + gCurrentPinballGame->scoreAddedInFrame = 5000; + else + gCurrentPinballGame->scoreAddedInFrame = 10000; + + gCurrentPinballGame->unk72E++; + + m4aSongNumStart(SE_UNKNOWN_0x99); + } + + gCurrentPinballGame->unk6BC = 1; + } + gCurrentPinballGame->unk732 = 2; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 100) + { + if (gCurrentPinballGame->unk732 == 7) + { + gCurrentPinballGame->unk194 = 10; + + if(gCurrentPinballGame->unk72B <= 2) + { + if(gCurrentPinballGame->unk72B == 0) + { + gCurrentPinballGame->scoreAddedInFrame = 2000; + gCurrentPinballGame->unk194 = 1; + } + else if(gCurrentPinballGame->unk72B == 1) + { + gCurrentPinballGame->scoreAddedInFrame = 5000; + gCurrentPinballGame->unk194 = 5; + } + else + { + gCurrentPinballGame->scoreAddedInFrame = 10000; + gCurrentPinballGame->unk194 = 10; + } + gCurrentPinballGame->unk72B++; + } + + gCurrentPinballGame->unk196 = 0; + gCurrentPinballGame->unk72C = 0; + } + + gCurrentPinballGame->unk732 = 1; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 126) + { + if (gCurrentPinballGame->ballPowerUpLight[0] == 0) + gCurrentPinballGame->scoreAddedInFrame = 1000; + + gCurrentPinballGame->ballPowerUpLight[0] = 1; + gCurrentPinballGame->unk732 = 3; + + if (gCurrentPinballGame->unk71B == 0) + { + if (!(gCurrentPinballGame->ballPowerUpLight[1] & + gCurrentPinballGame->ballPowerUpLight[2])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + } + else + { + if (gCurrentPinballGame->ball->positionQ0.x <= 148) + { + if (gCurrentPinballGame->ballPowerUpLight[1] == 0) + gCurrentPinballGame->scoreAddedInFrame = 1000; + + gCurrentPinballGame->ballPowerUpLight[1] = 1; + gCurrentPinballGame->unk732 = 4; + + if (gCurrentPinballGame->unk71B != 0) + return; + + if (!(gCurrentPinballGame->ballPowerUpLight[0] & + gCurrentPinballGame->ballPowerUpLight[2])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 172) + { + if (gCurrentPinballGame->ballPowerUpLight[2] == 0) + gCurrentPinballGame->scoreAddedInFrame = 1000; + + gCurrentPinballGame->ballPowerUpLight[2] = 1; + gCurrentPinballGame->unk732 = 5; + + if (gCurrentPinballGame->unk71B != 0) + return; + + if (!(gCurrentPinballGame->ballPowerUpLight[0] & + gCurrentPinballGame->ballPowerUpLight[1])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + + if (gCurrentPinballGame->unk732 == 9) + { + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F <= 2) + { + if (gCurrentPinballGame->unk72F == 0) + gCurrentPinballGame->scoreAddedInFrame = 2000; + else if (gCurrentPinballGame->unk72F == 1) + gCurrentPinballGame->scoreAddedInFrame = 5000; + else + gCurrentPinballGame->scoreAddedInFrame = 10000; + + gCurrentPinballGame->unk72F++; + + MPlayStart(&gMPlayInfo_SE1, &gUnknown_0869FC0C); + + if (gCurrentPinballGame->unk72F > 1) + gCurrentPinballGame->unk731 = 1; + } + + gCurrentPinballGame->unk6BC = 2; + } + + gCurrentPinballGame->unk732 = 6; + return; + } + break; + case 8: + if (gCurrentPinballGame->ball->positionQ0.x <= 50) + { + gCurrentPinballGame->unk732 = 8; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 100) + { + gCurrentPinballGame->unk732 = 7; + return; + } + + gCurrentPinballGame->unk732 = 9; + return; + case 9: + if (gCurrentPinballGame->ball->positionQ0.x <= 46) + { + gCurrentPinballGame->unk732 = 10; + + if (gCurrentPinballGame->holeIndicators[0] != 0) + return; + + gCurrentPinballGame->scoreAddedInFrame = 1000; + gCurrentPinballGame->holeIndicators[0] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 120) + { + gCurrentPinballGame->unk732 = 11; + + if (gCurrentPinballGame->holeIndicators[1] != 0) + return; + + gCurrentPinballGame->scoreAddedInFrame = 1000; + gCurrentPinballGame->holeIndicators[1] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 193) + { + gCurrentPinballGame->unk732 = 12; + + if (gCurrentPinballGame->holeIndicators[2] != 0) + return; + + gCurrentPinballGame->scoreAddedInFrame = 1000; + gCurrentPinballGame->holeIndicators[2] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + } + + gCurrentPinballGame->unk732 = 13; + + if (gCurrentPinballGame->holeIndicators[3] != 0) + return; + + gCurrentPinballGame->scoreAddedInFrame = 1000; + gCurrentPinballGame->holeIndicators[3] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->scoreAddedInFrame = 4000; + return; + case 10: + if (gCurrentPinballGame->unk5B2 == 0) + { + if (gCurrentPinballGame->ball->positionQ0.x > 170) + { + if (gCurrentPinballGame->unk2F0 > 2U) + return; + + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xB000; + *arg1 = 1; + + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk1AB <= 2) + { + gCurrentPinballGame->unk1AB = 3; + gCurrentPinballGame->unk2F2 = 5; + } + + gCurrentPinballGame->scoreAddedInFrame = 50000; + return; + } + + if (gCurrentPinballGame->unk2FB <= 4) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xF800; + *arg1 = 1; + } + + if (gCurrentPinballGame->unk2FB == 5) + gCurrentPinballGame->unk2FB = 6; + + if (gCurrentPinballGame->unk29F == 0) + return; + + if (gCurrentPinballGame->unk29F == 1) + gCurrentPinballGame->unk286 = 90; + else + { + gCurrentPinballGame->unk2F8 = 1; + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + m4aSongNumStart(SE_UNKNOWN_0xD8); + } + + gCurrentPinballGame->unk29F = 0; + gCurrentPinballGame->unk2A0 = 600; + return; + } + + if (gCurrentPinballGame->unk1C4 != 0) + return; + + if (gCurrentPinballGame->ball->positionQ0.x <= 120) + gCurrentPinballGame->unk1C2 = 1; + else + gCurrentPinballGame->unk1C2 = 2; + + if (gCurrentPinballGame->outLanePikaPosition <= 1) + { + if (gCurrentPinballGame->outLanePikaPosition != gCurrentPinballGame->unk1C2 - 1) + return; + else + gCurrentPinballGame->unk1C4 = 120; + return; + } + + gCurrentPinballGame->unk1C4 = 120; + return; + + case 11: + if (gCurrentPinballGame->unk616 != 0) + return; + + absVelY = gCurrentPinballGame->ball->velocity.y; + gCurrentPinballGame->unk614 = gCurrentPinballGame->ball->velocity.y; + + if (absVelY < 0) { + absVelY = -absVelY; + } + + gCurrentPinballGame->unk1C6 += (absVelY) / 3; + + if (gCurrentPinballGame->unk1C6 > 168) + gCurrentPinballGame->unk1C6 = 168; + + gCurrentPinballGame->unk616 = 20; + return; + case 12: + if (gCurrentPinballGame->unk2D8 == 0) + return; + + if (gCurrentPinballGame->unk26 != 0) + return; + + if (gCurrentPinballGame->unk2DA != 0) + return; + + gCurrentPinballGame->unk2DA++; + + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + + *arg2 = 0xD000; + *arg1 = 1; + gCurrentPinballGame->scoreAddedInFrame = 5000; + m4aSongNumStart(SE_UNKNOWN_0xB7); + sub_11B0(7); + return; + case 13: + if (gCurrentPinballGame->unk2D8 == 0) + return; + + if (gCurrentPinballGame->unk26 != 0) + return; + + if (gCurrentPinballGame->unk2DA != 1) + return; + + gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xCC00; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->scoreAddedInFrame = 5000; + sub_11B0(7); + return; + case 14: + if ((gCurrentPinballGame->unk13 > 2) && (gCurrentPinballGame->unk13 != 5)) + { + if (gCurrentPinballGame->unk2E0 == 0) + { + if (gCurrentPinballGame->unk2DA == 2) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + gCurrentPinballGame->unk2DA++; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->scoreAddedInFrame = 5000; + sub_11B0(7); + return; + } + else if (gCurrentPinballGame->unk2DA == 3) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->unk2D9 = 1; + sub_11B0(7); + return; + } + } + } + else if (gCurrentPinballGame->unk2D8 != 0 && gCurrentPinballGame->unk2DA == 2) + { + gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->scoreAddedInFrame = 5000; + sub_11B0(7); + } + + break; + } +} + + +s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { + struct Vector16 vec1; + struct Vector16 vec2; + u16 sp00; + u8 sp02; + u16 return_val; + s16 unk0; + s32 unk1; + s32 unk2; + + u32 some_enum; + u8 switch_enum; + + return_val = 0; + gCurrentPinballGame->ball->unk4 = 0; + + vec1.x = arg0->x / 8; + vec1.y = arg0->y / 8; + vec2.x = arg0->x % 8; + vec2.y = arg0->y % 8; + unk1 = vec1.y / 64; + unk2 = gCurrentPinballGame->unk24; + vec1.y %= 64; + + unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; + sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; + sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; + + sub_162B8(arg0, &sp00, &sp02); + + switch_enum = sp02 & 0xF; + some_enum = sp02 >> 4; + + switch (switch_enum) + { + case 1: + case 4: + gCurrentPinballGame->unk23 = switch_enum - 1; + gCurrentPinballGame->unk22 = 1; + *arg1 = sp00; + if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) + { + if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || + gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) + { + + if (gCurrentPinballGame->ball->unk6 > 0) + { + *arg1 = 0x3E00; + } + else if (gCurrentPinballGame->ball->unk6 != 0) + { + *arg1 = 0x4100; + } + else + { + if (gMain.systemFrameCount & 1) + { + gCurrentPinballGame->ball->unk4 = 0x28; + gCurrentPinballGame->ball->unk6 = 1; + *arg1 = 0x3E00; + } + else + { + gCurrentPinballGame->ball->unk4 = 0xFFD8; + gCurrentPinballGame->ball->unk6 = 0xFFFF; + *arg1 = 0x4100; + } + } + + } + } + return_val = 1; + break; + case 3: + case 2: + gCurrentPinballGame->unk23 = switch_enum - 1; + gCurrentPinballGame->unk22 = 2; + *arg1 = sp00 & 0x0000FFF0; + return_val = 1; + break; + } + + sub_1642C((s32) some_enum, &return_val, arg1); + return return_val; +} + +void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { + + s16 deltaX; + s16 deltaY; + u16 maskedResult = 0; + u8 lowerNibble = 0; + s32 ix = 0; + + if (gCurrentPinballGame->unk5B2 == 0) + { + if (gCurrentPinballGame->unk24 != 0) + return; + + deltaX = arg0->x + gCurrentPinballGame->unk184[0].x; + deltaY = arg0->y + gCurrentPinballGame->unk184[0].y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + ix = 0; + } + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[1].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[1].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + ix = 1; + } + + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[2].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[2].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + ix = 2; + } + + if (lowerNibble == 0) + return; + } + } + gCurrentPinballGame->unk170[ix] = 6; + + *arg1 = maskedResult; + *arg2 = lowerNibble; + + if (gCurrentPinballGame->unk624 <= 0) + gCurrentPinballGame->unk624 = 2; + } +} + + +void sub_1642C(u8 arg0, u16* arg1, u16* arg2) +{ + s16 absVelY; s16 x0Position; s16 modRes; s16 index; u16 angle; int squaredMagnitude; - switch (arg0) + switch (arg0) { case 1: - if (gCurrentPinballGame->unk26 == 0) - { + if (gCurrentPinballGame->unk26 == 0) + { if (gCurrentPinballGame->ball->positionQ1.x >= 200) gCurrentPinballGame->unk25 = 1; else gCurrentPinballGame->unk25 = 3; - + sub_32914(); gCurrentPinballGame->unk22 = 7; *arg1 = 1; } break; case 2: - if (gCurrentPinballGame->unk24 == 0) + if (gCurrentPinballGame->unk24 == 0) { gCurrentPinballGame->ball->oamPriority = 2; gCurrentPinballGame->unk24 = 2; } - else if (gCurrentPinballGame->unk24 == 2) + else if (gCurrentPinballGame->unk24 == 2) { gCurrentPinballGame->ball->oamPriority = 2; gCurrentPinballGame->unk24 = 3; @@ -59,9 +1040,9 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) } break; case 4: - if (gCurrentPinballGame->unk600 == 0) + if (gCurrentPinballGame->unk600 == 0) { - if (gCurrentPinballGame->ball->positionQ0.y < 260) + if (gCurrentPinballGame->ball->positionQ0.y < 260) { if (gCurrentPinballGame->ball->positionQ0.x < 74) { @@ -71,21 +1052,21 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk36C[1] = 6; else gCurrentPinballGame->unk36C[1] = 4; - + gCurrentPinballGame->unk36E[1] = 0; gCurrentPinballGame->unk36A[1] = 1; sub_11B0(7); - + gCurrentPinballGame->ball->velocity.x /= 2; gCurrentPinballGame->ball->velocity.y /= 2; - + memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); - + gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; gCurrentPinballGame->unk1328 = 25; } - } - else if (gCurrentPinballGame->ball->positionQ0.x < 116) + } + else if (gCurrentPinballGame->ball->positionQ0.x < 116) { if (gCurrentPinballGame->unk13 < 3 && gCurrentPinballGame->unk36A[0] < 3) { @@ -93,7 +1074,7 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk36C[0] = 6; else gCurrentPinballGame->unk36C[0] = 4; - + gCurrentPinballGame->unk36E[0] = 0; gCurrentPinballGame->unk36A[0] = 1; @@ -101,43 +1082,43 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->ball->velocity.x /= 2; gCurrentPinballGame->ball->velocity.y /= 2; - + memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); - + gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; gCurrentPinballGame->unk1328 = 25; } - } - else + } + else { gCurrentPinballGame->unk30C = 1800; gCurrentPinballGame->unk306 = 1; - + if (gCurrentPinballGame->unk70E < 99) gCurrentPinballGame->unk70E++; gCurrentPinballGame->scoreAddedInFrame = 5000; } } - else - { - if (gCurrentPinballGame->ball->positionQ0.x < 110) + else + { + if (gCurrentPinballGame->ball->positionQ0.x < 110) { gCurrentPinballGame->unk328 = 1; gCurrentPinballGame->ball->velocity.y /= 2; - } - else + } + else { if (gCurrentPinballGame->unk378 == 0) gCurrentPinballGame->unk378 = 1; else gCurrentPinballGame->unk378 = 0; - + gCurrentPinballGame->ball->velocity.y /=2; gCurrentPinballGame->scoreAddedInFrame = 3000; } } - + gCurrentPinballGame->unk600 = 45; m4aSongNumStart(SE_UNKNOWN_0x76); } @@ -149,25 +1130,25 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk342 = 0; break; case 6: - if (gCurrentPinballGame->ball->positionQ0.x < 120) + if (gCurrentPinballGame->ball->positionQ0.x < 120) { - if (gCurrentPinballGame->ball->velocity.y > 0) + if (gCurrentPinballGame->ball->velocity.y > 0) { angle = 0xDA00; - squaredMagnitude = - gCurrentPinballGame->ball->velocity.x * gCurrentPinballGame->ball->velocity.x + + squaredMagnitude = + gCurrentPinballGame->ball->velocity.x * gCurrentPinballGame->ball->velocity.x + gCurrentPinballGame->ball->velocity.y * gCurrentPinballGame->ball->velocity.y; - + squaredMagnitude = Sqrt(squaredMagnitude * 4) / 2; gCurrentPinballGame->ball->velocity.x = squaredMagnitude * Cos(angle) / 20000; gCurrentPinballGame->ball->velocity.y = -squaredMagnitude * Sin(angle) / 20000; } - } + } else - gCurrentPinballGame->unk342 = 1; + gCurrentPinballGame->unk342 = 1; break; case 7: - if (gCurrentPinballGame->unk366 != 3) + if (gCurrentPinballGame->unk366 != 3) { gCurrentPinballGame->unk368 = 17; gCurrentPinballGame->unk23 = 0; @@ -178,9 +1159,9 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) break; case 8: x0Position = gCurrentPinballGame->ball->positionQ0.x; - if (gCurrentPinballGame->unk24 > 0) + if (gCurrentPinballGame->unk24 > 0) { - if (gCurrentPinballGame->unk732 == 7) + if (gCurrentPinballGame->unk732 == 7) { gCurrentPinballGame->unk194 = 10; if (gCurrentPinballGame->unk72B < 3) @@ -189,7 +1170,7 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) { gCurrentPinballGame->scoreAddedInFrame = 2000; gCurrentPinballGame->unk194 = 1; - } + } else if (gCurrentPinballGame->unk72B == 1) { gCurrentPinballGame->scoreAddedInFrame = 5000; @@ -200,21 +1181,21 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 10000; gCurrentPinballGame->unk194 = 10; } - + gCurrentPinballGame->unk72B++; } - + gCurrentPinballGame->unk196 = 0; gCurrentPinballGame->unk72C = 0; } - + gCurrentPinballGame->unk732 = 1; } else { - if (x0Position <= 72) + if (x0Position <= 72) { - if (gCurrentPinballGame->unk732 == 8) + if (gCurrentPinballGame->unk732 == 8) { if (gCurrentPinballGame->unk13 < 3 && gCurrentPinballGame->unk72E < 3) { @@ -228,35 +1209,35 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk72E++; m4aSongNumStart(SE_UNKNOWN_0x99); } - + gCurrentPinballGame->unk6BC = 1; } - + gCurrentPinballGame->unk732 = 2; } - else if (x0Position <= 98) + else if (x0Position <= 98) { if (gCurrentPinballGame->ballPowerUpLight[0] == 0) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[0] = 1; gCurrentPinballGame->unk732 = 3; - + if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[1] & gCurrentPinballGame->ballPowerUpLight[2])) - { + { gCurrentPinballGame->unk71B = 1; gCurrentPinballGame->unk71C = 60; gCurrentPinballGame->scoreAddedInFrame = 4000; } } - else if (x0Position <= 118) + else if (x0Position <= 118) { if (gCurrentPinballGame->ballPowerUpLight[1] == 0) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[1] = 1; gCurrentPinballGame->unk732 = 4; - + if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[2])) { gCurrentPinballGame->unk71B = 1; @@ -264,14 +1245,14 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 4000; } } - else if (x0Position <= 146) + else if (x0Position <= 146) { if (gCurrentPinballGame->ballPowerUpLight[2] == 0) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->ballPowerUpLight[2] = 1; gCurrentPinballGame->unk732 = 5; - + if (gCurrentPinballGame->unk71B == 0 && (gCurrentPinballGame->ballPowerUpLight[0] & gCurrentPinballGame->ballPowerUpLight[1])) { gCurrentPinballGame->unk71B = 1; @@ -281,9 +1262,9 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) } else { - if (gCurrentPinballGame->unk732 == 9) + if (gCurrentPinballGame->unk732 == 9) { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F < 3) + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F < 3) { if (gCurrentPinballGame->unk72F == 0) gCurrentPinballGame->scoreAddedInFrame = 2000; @@ -293,17 +1274,17 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 10000; gCurrentPinballGame->unk72F++; - + if (gCurrentPinballGame->unk1CA == 13) m4aSongNumStart(SE_UNKNOWN_0x99); - + if (gCurrentPinballGame->unk72F > 1) gCurrentPinballGame->unk731 = 1; } gCurrentPinballGame->unk6BC = 2; } - + gCurrentPinballGame->unk732 = 6; } } @@ -326,8 +1307,8 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[0] = 1; if (gCurrentPinballGame->unk714 == 0 && ( - gCurrentPinballGame->holeIndicators[1] & - gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2] & gCurrentPinballGame->holeIndicators[3])) { gCurrentPinballGame->unk714 = 1; @@ -339,14 +1320,14 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) else if (gCurrentPinballGame->ball->positionQ0.x <= 120) { gCurrentPinballGame->unk732 = 11; - + if (gCurrentPinballGame->holeIndicators[1] == 0) { gCurrentPinballGame->scoreAddedInFrame = 1000; - gCurrentPinballGame->holeIndicators[1] = 1; + gCurrentPinballGame->holeIndicators[1] = 1; if (gCurrentPinballGame->unk714 == 0 && ( - gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[2] & gCurrentPinballGame->holeIndicators[3])) { gCurrentPinballGame->unk714 = 1; @@ -362,10 +1343,10 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) { gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[2] = 1; - + if (gCurrentPinballGame->unk714 == 0 && ( - gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[3])) { gCurrentPinballGame->unk714 = 1; @@ -382,8 +1363,8 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->scoreAddedInFrame = 1000; gCurrentPinballGame->holeIndicators[3] = 1; if (gCurrentPinballGame->unk714 == 0 && ( - gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & gCurrentPinballGame->holeIndicators[2])) { gCurrentPinballGame->unk714 = 1; @@ -400,7 +1381,7 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk1C2 = 1; else gCurrentPinballGame->unk1C2 = 2; - + if (gCurrentPinballGame->outLanePikaPosition < 2) { if (gCurrentPinballGame->outLanePikaPosition == gCurrentPinballGame->unk1C2 - 1) @@ -419,11 +1400,11 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk614 = absVelY; if (absVelY < 0) absVelY = -absVelY; - + gCurrentPinballGame->unk1C6 = gCurrentPinballGame->unk1C6 + (absVelY / 3); if (gCurrentPinballGame->unk1C6 > 168) gCurrentPinballGame->unk1C6 = 168; - + gCurrentPinballGame->unk616 = 20; } break; @@ -434,14 +1415,14 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) index = gUnknown_086ACE70[gCurrentPinballGame->unk34A]; gCurrentPinballGame->unk34B[index] = 10; gCurrentPinballGame->unk34A++; - if (gCurrentPinballGame->unk34A == 3) + if (gCurrentPinballGame->unk34A == 3) { memcpy(&gCurrentPinballGame->unk1334[1], &gCurrentPinballGame->unk1334[0], sizeof(*gCurrentPinballGame->unk1334)); gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; if (gCurrentPinballGame->unk342) gCurrentPinballGame->unk344 = 1; } - + if (gCurrentPinballGame->unk34A == 11) gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; @@ -453,10 +1434,10 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) if (gCurrentPinballGame->unk34A > 12) gCurrentPinballGame->unk34A = 0; - + if (index == 0 && gCurrentPinballGame->ball->velocity.y > -120) gCurrentPinballGame->ball->velocity.y = -120; - + if (index == 2 && gCurrentPinballGame->ball->velocity.y > -180) gCurrentPinballGame->ball->velocity.y = -180; } @@ -474,25 +1455,25 @@ void sub_1642C(u8 arg0, u16* arg1, u16* arg2) gCurrentPinballGame->unk355[modRes] = 0; gCurrentPinballGame->unk35E[modRes] = 0; gCurrentPinballGame->unk359[modRes] = gCurrentPinballGame->unk34A - 1; - if (index == 1 && gCurrentPinballGame->ball->velocity.y > -150) + if (index == 1 && gCurrentPinballGame->ball->velocity.y > -150) gCurrentPinballGame->ball->velocity.y = -150; } break; case 15: - if (gCurrentPinballGame->ball->positionQ0.y < 80) + if (gCurrentPinballGame->ball->positionQ0.y < 80) { if (gCurrentPinballGame->unk306 == 1) gCurrentPinballGame->unk306 = 2; - } - else + } + else { - if (gCurrentPinballGame->unk306 == 2) - { + if (gCurrentPinballGame->unk306 == 2) + { gCurrentPinballGame->unk306 = 3; gCurrentPinballGame->unk30C = 0; } } - + break; } } @@ -512,7 +1493,7 @@ s16 COLLISION_CHECK_DUSCLOPS_171C8(struct Vector16* arg0, u16* arg1) { return_val = 0; gCurrentPinballGame->ball->unk4 = 0; - + vec1.x = arg0->x / 8; vec1.y = arg0->y / 8; vec2.x = arg0->x % 8; @@ -595,74 +1576,74 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) { maskedResult = 0; lowerNibble = 0; - - if(gCurrentPinballGame->unk387 == 2) + + if(gCurrentPinballGame->unk387 == 2) { if (*arg2 != 0) return; - + deltaX = arg0->x -gCurrentPinballGame->unk3F0; deltaY = arg0->y -gCurrentPinballGame->unk3F2; - - if (deltaX > 95U || deltaY > 119U) - return; - - maskedResult = 0xFFF0 & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; - lowerNibble = 0xF & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; - - if (lowerNibble == 0) + + if (deltaX > 95U || deltaY > 119U) return; - temp = gCurrentPinballGame->unk3DC -3; - if (temp <= 1U) + maskedResult = 0xFFF0 & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; + lowerNibble = 0xF & gUnknown_083071D4[(deltaY * 96 ) + deltaX]; + + if (lowerNibble == 0) + return; + + temp = gCurrentPinballGame->unk3DC -3; + if (temp <= 1U) *arg2 = 1; else *arg2 = lowerNibble; - + gCurrentPinballGame->unk3DC = 4; *arg1 = maskedResult; - + return; } - + if(gCurrentPinballGame->unk387 == 1) { if (*arg2 != 0) return; - - if (gCurrentPinballGame->unk3A9[0] != 0) + + if (gCurrentPinballGame->unk3A9[0] != 0) { deltaX = arg0->x - gCurrentPinballGame->unk3D0[0].x; deltaY = arg0->y - gCurrentPinballGame->unk3D0[0].y; - - if (deltaX < 64U && deltaY < 64U) + + if (deltaX < 64U && deltaY < 64U) { maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; - + if (lowerNibble != 0) gCurrentPinballGame->unk3A0[0] = 4; } } - + if (lowerNibble == 0) { if (gCurrentPinballGame->unk3A9[1] != 0) { deltaX = arg0->x - gCurrentPinballGame->unk3D0[1].x; deltaY = arg0->y - gCurrentPinballGame->unk3D0[1].y; - + if (deltaX < 64U && deltaY < 64U) { maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; - + if (lowerNibble != 0) gCurrentPinballGame->unk3A0[1] = 4; } } } - + if (lowerNibble == 0) { if ( gCurrentPinballGame->unk3A9[2] != 0) @@ -674,20 +1655,20 @@ void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) { { maskedResult = 0xFFF0 & gUnknown_08252B10[deltaY * 64 + deltaX]; lowerNibble = 0xF & gUnknown_08252B10[deltaY * 64 + deltaX]; - + if (lowerNibble != 0) { gCurrentPinballGame->unk3A0[2] = 4; } } - } + } } - + if (lowerNibble != 0) { *arg1 = maskedResult; *arg2 = 6; - } + } return; } } diff --git a/src/debug_menu.c b/src/debug_menu.c index a66faab..633b12b 100644 --- a/src/debug_menu.c +++ b/src/debug_menu.c @@ -228,7 +228,7 @@ void sub_47670(void) m4aSongNumStart(SE_UNKNOWN_0xA4); for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) - gCurrentPinballGame->unk63C[i][j] = 0; + gCurrentPinballGame->unk63C[i][j] = 0; } else if (gMain.unk12 == 1) { @@ -629,21 +629,21 @@ void sub_48190(void) gCurrentPinballGame->unk62C * 500000 + gCurrentPinballGame->unk62D * 100000 + gCurrentPinballGame->unk62E * 100000; - + gCurrentPinballGame->unk634 = 0; gMain.unk12 = 150; - + for (j = 0; j < 20; j++) gCurrentPinballGame->unk63C[0][j] = 1; for (j = 0; j < 20; j++) gCurrentPinballGame->unk63C[1][j] = 1; for (j = 0; j < 20; j++) gCurrentPinballGame->unk63C[2][j] = 1; - + for (i = 0; i < 3; i++) for (j = 0; j < 20; j++) gCurrentPinballGame->unk678[i][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][i][j]; - + sp14 = 1; } else @@ -778,7 +778,7 @@ void sub_48190(void) value = 0; multiplier = 0; if (gCurrentPinballGame->unk63A == 212 || sp14 != 0) - { + { switch (gCurrentPinballGame->unk638) { case 0: @@ -919,7 +919,7 @@ void sub_48190(void) if (value / 100000000 > 0) { value -= 100000000; - var4 += 1; + var4++; } gCurrentPinballGame->unk6B8 = var4; @@ -1011,7 +1011,7 @@ void sub_48190(void) sp0[i] = 0; for (j = 0; j < 20; j++) gCurrentPinballGame->unk678[2][j] = gUnknown_086B0128[gCurrentPinballGame->unk638][2][j]; - + var4 = gCurrentPinballGame->unk6B8; value = gCurrentPinballGame->unk6B4; sp0[10] = (var4 % 1000) / 100; diff --git a/src/rom_19028.c b/src/game_idle.c similarity index 100% rename from src/rom_19028.c rename to src/game_idle.c diff --git a/src/gbplayer.c b/src/gbplayer.c index a152343..d7a595d 100644 --- a/src/gbplayer.c +++ b/src/gbplayer.c @@ -340,7 +340,7 @@ void Sio32IDIntr(void) gUnknown_02002808.send_id = 0x8000; } gUnknown_02002808.recv_id = ~receiverChunk; - REG_SIODATA32 = + REG_SIODATA32 = (gUnknown_02002808.send_id << ((1 - gUnknown_02002808.MS_mode) << 4)) + (gUnknown_02002808.recv_id << (gUnknown_02002808.MS_mode << 4)); break; diff --git a/src/high_scores.c b/src/high_scores.c index 96fd250..3a21712 100644 --- a/src/high_scores.c +++ b/src/high_scores.c @@ -109,7 +109,7 @@ void sub_CFD4(void) int i, j, k; for(i = 0; i < MAIN_FIELD_COUNT; i++) { - for(j = 0; j < NUM_HIGH_SCORES; j++) + for(j = 0; j < NUM_HIGH_SCORES; j++) { for(k = 0; k < HIGH_SCORE_NAME_LENGTH + 2; k++) // ? use an array count instead? gUnknown_0202C610[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; @@ -211,7 +211,7 @@ void HighScore_State1_D20C(void) } break; case 1: - gUnknown_0201A4B8 -= 1; + gUnknown_0201A4B8--; // TODO: FAKEMATCH - Seth temp = gUnknown_02002858.unk18; @@ -248,7 +248,7 @@ void HighScore_State1_D20C(void) break; } - gUnknown_02002858.unk18 += 1; + gUnknown_02002858.unk18++; sub_E860(); } @@ -2185,7 +2185,7 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) u32 r3; if(arg0 == 0) { - if(arg1 == 0) + if(arg1 == 0) { r3 = (0 * 2 + 2) * 32 + 12; for(i = 0; i < 15; i++) @@ -2226,7 +2226,7 @@ void sub_F8B0(u32 arg0, u32 arg1, s16 arg2) } else { - if(arg1 == 0) + if(arg1 == 0) { r3 = (0 * 2 + 2) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) @@ -2273,7 +2273,7 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) u32 r3; if(arg0 == 0) { - if(arg1 == 0) + if(arg1 == 0) { r3 = (0 * 2 + 2) * 32 + 12; for(i = 0; i < 15; i++) @@ -2314,7 +2314,7 @@ void sub_FAE8(u32 arg0, u32 arg1, s16 arg2) } else { - if(arg1 == 0) + if(arg1 == 0) { r3 = (0 * 2 + 2) * 32 + 32 * 32 + 10; for(i = 0; i < 15; i++) @@ -2359,7 +2359,7 @@ s8 sub_FD20(void) { int i; s16 sp0[NUM_SPECIES]; - + for(i = 0; i < NUM_SPECIES; i++) sp0[i] = gMain_saveData.pokedexFlags[i]; @@ -2379,7 +2379,7 @@ void sub_FD5C(void (*func)(void)) DmaFill16(3, 0x7FFF, gUnknown_0201A520[0], PLTT_SIZE); DmaCopy16(3, gUnknown_0201A520[0], gUnknown_0201A520[2], PLTT_SIZE); DmaCopy16(3, gUnknown_0201A520[2], (void*)PLTT, PLTT_SIZE); - + UnblankLCD(); for (i = 0; i < 32; i++) @@ -2439,7 +2439,7 @@ void sub_FEB8(u8 * arg0, u8 * arg1, void (*func)(void)) UnblankLCD(); gMain.dispcntBackup = REG_DISPCNT; - + for (i = 0; i < 32; i++) { if (func != NULL) @@ -2501,13 +2501,13 @@ void sub_1001C(u16 arg0) arg0 &= ~3; arg0 += 4; - + while(var0 < var1) { r[0] = gUnknown_0201A520[0][var0] & 0x1F; g[0] = (gUnknown_0201A520[0][var0] & 0x3E0) >> 5; b[0] = (gUnknown_0201A520[0][var0] & 0x7C00) >> 10; - + r[1] = gUnknown_0201A520[1][var0] & 0x1F; g[1] = (gUnknown_0201A520[1][var0] & 0x3E0) >> 5; b[1] = (gUnknown_0201A520[1][var0] & 0x7C00) >> 10; @@ -2526,7 +2526,7 @@ void sub_1001C(u16 arg0) r[0] += ((r[1] - r[0]) * arg0) >> 5; else r[0] -= ((r[0] - r[1]) * arg0) >> 5; - + gUnknown_0201A520[2][var0] = (b[0] << 10) | (g[0] << 5) | r[0]; var0++; } @@ -2537,16 +2537,16 @@ void sub_10170(u8 * pal, u8 * dest, u16 arg2, u16 arg3) u16 i; u16 b[2]; u16 g[2]; - u16 r[2]; + u16 r[2]; DmaCopy16(3, pal, gUnknown_0201A520[0], arg2); DmaFill16(3, 0, gUnknown_0201A520[1], arg2); - + for(i = 0; i < arg2; i++) { r[0] = gUnknown_0201A520[0][i] & 0x1F; g[0] = (gUnknown_0201A520[0][i] & 0x3E0) >> 5; b[0] = (gUnknown_0201A520[0][i] & 0x7C00) >> 10; - + r[1] = gUnknown_0201A520[1][i] & 0x1F; g[1] = (gUnknown_0201A520[1][i] & 0x3E0) >> 5; b[1] = (gUnknown_0201A520[1][i] & 0x7C00) >> 10; @@ -2554,18 +2554,18 @@ void sub_10170(u8 * pal, u8 * dest, u16 arg2, u16 arg3) if(b[0] > b[1]) b[0] -= (b[0] * arg3) >> 5; else - b[0] = b[1]; + b[0] = b[1]; if(g[0] > g[1]) g[0] -= (g[0] * arg3) >> 5; else - g[0] = g[1]; + g[0] = g[1]; if(r[0] > r[1]) r[0] -= (r[0] * arg3) >> 5; else - r[0] = r[1]; - + r[0] = r[1]; + gUnknown_0201A520[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; } DmaCopy16(3, gUnknown_0201A520[2], dest, arg2); @@ -2576,16 +2576,16 @@ void sub_102A8(u8 * pal, u8 * dest, u16 arg2, u16 arg3) u16 i; u16 b[2]; u16 g[2]; - u16 r[2]; + u16 r[2]; DmaCopy16(3, pal, gUnknown_0201A520[0], arg2); DmaFill16(3, 0x7FFF, gUnknown_0201A520[1], arg2); - + for(i = 0; i < arg2; i++) { r[0] = gUnknown_0201A520[0][i] & 0x1F; g[0] = (gUnknown_0201A520[0][i] & 0x3E0) >> 5; b[0] = (gUnknown_0201A520[0][i] & 0x7C00) >> 10; - + r[1] = gUnknown_0201A520[1][i] & 0x1F; g[1] = (gUnknown_0201A520[1][i] & 0x3E0) >> 5; b[1] = (gUnknown_0201A520[1][i] & 0x7C00) >> 10; @@ -2604,7 +2604,7 @@ void sub_102A8(u8 * pal, u8 * dest, u16 arg2, u16 arg3) r[0] += ((r[1] - r[0]) * arg3) >> 5; else r[0] -= ((r[0] - r[1]) * arg3) >> 5; - + gUnknown_0201A520[2][i] = (b[0] << 10) | (g[0] << 5) | r[0]; } DmaCopy16(3, gUnknown_0201A520[2], dest, arg2); diff --git a/src/intro.c b/src/intro.c index 2e4f527..7facb10 100644 --- a/src/intro.c +++ b/src/intro.c @@ -302,7 +302,7 @@ void sub_978C(void) if (gUnknown_0202BF10 >= gUnknown_086A77A8[gUnknown_0202C5A8][gUnknown_0202A578][1]) { m4aSongNumStart(gUnknown_086A77A8[gUnknown_0202C5A8][gUnknown_0202A578][0]); - gUnknown_0202A578 = gUnknown_0202A578 + 1; + gUnknown_0202A578++; } } } @@ -430,7 +430,7 @@ void sub_9AB8(void) gUnknown_0201A450[3].unk2 -= 0xD; gUnknown_0202ADA0[0x12] -= 0x10; - gUnknown_0202ADA0[0x13] += 1; + gUnknown_0202ADA0[0x13]++; gUnknown_0202ADA0[0x6] -= 0x10; gUnknown_0201A450[2].unk0 -= 0xE; @@ -1983,29 +1983,29 @@ void sub_C4F0(void) s32 j; s8 cVar1; s8 cVar2; - + sg0 = &gMain.spriteGroups[0]; sg1 = &gMain.spriteGroups[1]; - + spriteGroups[0] = &gMain.spriteGroups[(5 * gUnknown_0201A450[2].unk8) + 2]; spriteGroups[1] = &gMain.spriteGroups[(5 * gUnknown_0201A450[3].unk8) + 3]; spriteGroups[2] = &gMain.spriteGroups[(5 * gUnknown_0201A450[4].unk8) + 4]; spriteGroups[3] = &gMain.spriteGroups[(5 * gUnknown_0201A450[5].unk8) + 5]; spriteGroups[4] = &gMain.spriteGroups[(5 * gUnknown_0201A450[6].unk8) + 6]; - + sg0->available = gUnknown_0201A450[0].unkC; sg1->available = 1; - + spriteGroups[0]->available = gUnknown_0201A450[2].unkC; spriteGroups[1]->available = gUnknown_0201A450[3].unkC; spriteGroups[2]->available = gUnknown_0201A450[4].unkC; spriteGroups[3]->available = gUnknown_0201A450[5].unkC; spriteGroups[4]->available = gUnknown_0201A450[6].unkC; - + LoadSpriteSets(gUnknown_086A7C24, 0x11, gMain.spriteGroups); - + if (sg0->available == 1) { sg0->baseX = gUnknown_0201A450[0].unk0; @@ -2015,7 +2015,7 @@ void sub_C4F0(void) gOamBuffer[oamData->oamId].x = oamData->xOffset + sg0->baseX; gOamBuffer[oamData->oamId].y = oamData->yOffset + sg0->baseY; } - + for (i = 0; i < 5; i++) { if (spriteGroups[i]->available == 1) @@ -2031,14 +2031,14 @@ void sub_C4F0(void) cVar1 = gUnknown_086A7C68[i].unk0; cVar2 = gUnknown_086A7C68[i].unk1; } - + gUnknown_0201A450[2 + i].unk0 += cVar1; gUnknown_0201A450[2 + i].unk2 += cVar2; spriteGroups[i]->baseX = gUnknown_0201A450[2 + i].unk0; spriteGroups[i]->baseY = gUnknown_0201A450[2 + i].unk2; - + p = gUnknown_086A7C24[( 2 + i) + (5 * gUnknown_0201A450[2 + i].unk8)]; - + for (j = 0; j < p->count; j++) { oamData = &spriteGroups[i]->oam[j]; @@ -2048,7 +2048,7 @@ void sub_C4F0(void) } gUnknown_0201A450[2 + i].unkA++; - + if (gUnknown_0201A450[2 + i].unkA > 0x4) { gUnknown_0201A450[2 + i].unkA = 0; @@ -2064,7 +2064,7 @@ void sub_C4F0(void) { sg1->baseX = gUnknown_0201A450[1].unk0; sg1->baseY = gUnknown_0201A450[1].unk2; - + for (j = 0; j < 4; j++) { oamData = &sg1->oam[j]; @@ -2074,10 +2074,10 @@ void sub_C4F0(void) } } - + sg1->available = 0; sg0->available = 0; - + spriteGroups[0]->available = 0; spriteGroups[1]->available = 0; spriteGroups[2]->available = 0; diff --git a/src/pinball_game_main.c b/src/pinball_game_main.c index ba8513f..b7679bb 100644 --- a/src/pinball_game_main.c +++ b/src/pinball_game_main.c @@ -24,8 +24,6 @@ extern const VoidFunc gUnknown_086B085C[]; extern struct SpriteGroup *gMainFieldSpriteGroups[][60]; extern struct SpriteGroup *gBonusFieldSpriteGroups[][30]; extern const u8 gUnknown_08158284[]; -extern const u8 gUnknown_08395A4C[]; -extern const u8 gUnknown_08397E6C[]; extern const u8 gUnknown_083A704C[]; extern const u8 gUnknown_0848FD8C[]; extern const u8 gUnknown_081428D4[]; @@ -1356,28 +1354,28 @@ void sub_4BC34(void) } } -void sub_4C290(void) +void sub_4C290(void) { s16 i; s16 var0; - + sub_28AE0(); sub_28BFC(); - for (i = 0; i <= 1; i++) + for (i = 0; i <= 1; i++) { - var0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; + var0 = gCurrentPinballGame->flipper[i].position / 2; DmaCopy16(3, gUnknown_083FE44C[var0], ((i * 0x200) + 0x06010000), 0x200); } - + var0 = gCurrentPinballGame->ball->unkA / 0x1000; DmaCopy16(3, gUnknown_083BB16C[var0], 0x06010400, 0x80); - for (i = 0; i <= 1; i++) + for (i = 0; i <= 1; i++) { DmaCopy16(3, gUnknown_084C07EC + ((var0 =gCurrentPinballGame->unk744[i]) * 0x180), 0x06010480 + (i * 0x180), 0x180); } - + var0 = gCurrentPinballGame->unk1E5; DmaCopy16(3, gUnknown_084FA48C[var0 = gCurrentPinballGame->unk1E5], 0x06010780, 0x120); var0 = gCurrentPinballGame->unk1CA; @@ -1385,32 +1383,32 @@ void sub_4C290(void) for (i = 0; i <= 1; i++) { - switch (gCurrentPinballGame->unk747[i]) + switch (gCurrentPinballGame->unk747[i]) { case 0: DmaCopy16(3, gUnknown_0848D68C[gCurrentPinballGame->unk749[i]], 0x06010CA0 + (i * 0x300), 0x300); gCurrentPinballGame->ball += 0; //TODO: Dumb match is still a match... break; case 9: - if (gCurrentPinballGame->unk25C > 0) + if (gCurrentPinballGame->unk25C > 0) { - if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] == 0) + if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] == 0) { gCurrentPinballGame->unk749[i] = 205; DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + (gCurrentPinballGame->unk749[i] % 15) * 0x20, 0x050003A0, 0x20); - } - else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] <= 3) + } + else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->unk59A] <= 3) { gCurrentPinballGame->unk749[i] = gCurrentPinballGame->unk59A; DmaCopy16(3, gMonPortraitGroupPals[0] + 15 * 0x20, 0x050003A0, 0x20); - } - else + } + else { gCurrentPinballGame->unk749[i] = gCurrentPinballGame->unk59A; DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + (gCurrentPinballGame->unk749[i] % 15) * 0x20, 0x050003A0, 0x20); } - } - else + } + else { gCurrentPinballGame->unk749[i] = gCurrentPinballGame->currentSpecies; DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->unk749[i] / 15] + ((gCurrentPinballGame->unk749[i] % 15) * 0x20), 0x050003A0, 0x20); @@ -1429,29 +1427,29 @@ void sub_4C290(void) } } - if (gCurrentPinballGame->unk13 == 4) + if (gCurrentPinballGame->unk13 == 4) { switch (gCurrentPinballGame->unk17) { case 7: case 8: - if ((u32) gCurrentPinballGame->unk5A9 > 4) + if ((u32) gCurrentPinballGame->unk5A9 > 4) { DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); - } - else + } + else { DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); } break; case 9: - if (gCurrentPinballGame->unk5A8 <= 31) + if (gCurrentPinballGame->unk5A8 <= 31) { - if (gCurrentPinballGame->unk5A9 > 4) + if (gCurrentPinballGame->unk5A9 > 4) { DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); - } - else + } + else { DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); } @@ -1460,28 +1458,28 @@ void sub_4C290(void) } } - if (gCurrentPinballGame->unk13 == 8) + if (gCurrentPinballGame->unk13 == 8) { - switch (gCurrentPinballGame->unk17) + switch (gCurrentPinballGame->unk17) { case 2: - if (gCurrentPinballGame->unk5A9 > 4U) + if (gCurrentPinballGame->unk5A9 > 4U) { DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); - } - else + } + else { DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); } break; case 3: - if (gCurrentPinballGame->unk5A8 <= 31) + if (gCurrentPinballGame->unk5A8 <= 31) { - if (gCurrentPinballGame->unk5A9 > 4U) + if (gCurrentPinballGame->unk5A9 > 4U) { DmaCopy16(3, gUnknown_02031060, 0x06010CA0, 0x480); - } - else + } + else { DmaCopy16(3, gUnknown_02030760, 0x06010CA0, 0x480); } diff --git a/src/pokedex.c b/src/pokedex.c index 66e6a86..7207a43 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -409,7 +409,7 @@ void Pokedex_State5_45A4(void) m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); } } - gUnknown_0202BEF4 = gUnknown_0202BEF4 + 1; + gUnknown_0202BEF4++; if (0x1e < gUnknown_0202BEF4) { gUnknown_0202BEF4 = 0; @@ -706,7 +706,7 @@ void Pokedex_State9_4BB4(void) gMain.subState = POKEDEX_STATE_LOAD_GRAPHICS; break; } - gUnknown_0201B120 += 1; + gUnknown_0201B120++; } void Pokedex_State11_4C80(void) @@ -1885,7 +1885,7 @@ void PrintDexNumbersFromListPosition(s16 listPosition) { for (j = 0; j < 7; j++) CopyBgTilesRect((void *)&gPokedexTextGlyphs_Gfx[ENGLISH_GLYPHS_START], (void *)0x06000000 + gUnknown_086A64F0[i] + j * 0x20, 1, 2); - + CopyBgTilesRect((void *)gPokedexTextGlyphs_Gfx, (void *)0x06000000 + gUnknown_086A64F0[i] + j * 0x20, 1, 2); } } @@ -1960,2945 +1960,390 @@ void sub_70E0(s16 species, u32 page) DmaCopy16(3, gUnknown_03000000, (void *)VRAM + 0x5C00, 0x1800); } -// void sub_71DC(int arg0, int arg1, int arg2) -// { -// int i; -// int var0; -// int var1; +void sub_71DC(s32 arg0, s32 arg1, s32 arg2) { + int i; + s32 temp_r2; -// var0 = arg1; -// if (var0 < 0) -// var0 += 7; - -// var1 = (var0 / 8) * 16 + (arg2 * 0x400); -// switch (arg0) -// { -// case 6: -// // _08007228 -// var0 = arg1; -// if (arg1 < 0) -// var0 += 7; - -// var0 = arg1 - (var0 / 8) * 8; + temp_r2 = ((arg1 / 8) * 0x10) + (arg2 * 0x400); -// // _0800723E -// switch (var0) -// { -// case 0: -// for (i = 0; i < 8; i++) -// { -// gUnknown_03000000[i * 2 + var1 + 0x000] |= gUnknown_0202BE30[i * 2]; -// gUnknown_03000000[i * 2 + var1 + 0x001] |= gUnknown_0202BE30[i * 2 + 1] & 0xFF; -// gUnknown_03000000[i * 2 + var1 + 0x200] |= gUnknown_0201B130[i * 2]; -// gUnknown_03000000[i * 2 + var1 + 0x201] |= gUnknown_0201B130[i * 2 + 1] & 0xFF; -// } -// break; -// case 1: -// for (i = 0; i < 8; i++) -// { -// gUnknown_03000000[i * 2 + var1 + 0x000] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; -// // gUnknown_03000000[i * 2 + var1 + 0x001] |= (u8)gUnknown_0202BE30[i * 2 + 1]; -// // gUnknown_03000000[i * 2 + var1 + 0x200] |= gUnknown_0201B130[i * 2]; -// // gUnknown_03000000[i * 2 + var1 + 0x201] |= (u8)gUnknown_0201B130[i * 2 + 1]; -// } -// break; -// case 2: -// break; -// case 3: -// break; -// case 4: -// break; -// case 5: -// break; -// case 6: -// break; -// case 7: -// break; -// } -// break; -// case 5: -// break; -// case 4: -// break; -// case 3: -// break; -// case 2: -// break; -// } -// } + switch (arg0) { + case 6: + switch (arg1 % 8) { + case 0: + for(i = 0; i < 8; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xFF; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xFF; + } + return; + case 1: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 4); + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 4); + } + return; + case 2: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 8) | (gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 8; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 8) | (gUnknown_0201B130[i * 2 + 1] & 0xFF) << 8; + } + return; + case 3: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2 + 1] & 0xF0) >> 0x4; -NAKED -void sub_71DC(int arg0, int arg1, int arg2) -{ - asm_unified("\n\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, sb\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - sub sp, #0x14\n\ - adds r4, r0, #0\n\ - adds r3, r1, #0\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _080071F4\n\ - adds r0, r3, #7\n\ -_080071F4:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #4\n\ - lsls r1, r2, #0xa\n\ - adds r2, r0, r1\n\ - subs r0, r4, #2\n\ - cmp r0, #4\n\ - bls _08007206\n\ - bl _080088C8\n\ -_08007206:\n\ - lsls r0, r0, #2\n\ - ldr r1, _08007210 @ =_08007214\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08007210: .4byte _08007214\n\ -_08007214: @ jump table\n\ - .4byte _08008580 @ case 0\n\ - .4byte _0800819C @ case 1\n\ - .4byte _08007D50 @ case 2\n\ - .4byte _0800780C @ case 3\n\ - .4byte _08007228 @ case 4\n\ -_08007228:\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _08007230\n\ - adds r0, r3, #7\n\ -_08007230:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #3\n\ - subs r0, r3, r0\n\ - cmp r0, #7\n\ - bls _0800723E\n\ - bl _080088C8\n\ -_0800723E:\n\ - lsls r0, r0, #2\n\ - ldr r1, _08007248 @ =_0800724C\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08007248: .4byte _0800724C\n\ -_0800724C: @ jump table\n\ - .4byte _0800726C @ case 0\n\ - .4byte _080072EC @ case 1\n\ - .4byte _08007398 @ case 2\n\ - .4byte _0800744C @ case 3\n\ - .4byte _08007548 @ case 4\n\ - .4byte _080075C0 @ case 5\n\ - .4byte _0800766C @ case 6\n\ - .4byte _08007714 @ case 7\n\ -_0800726C:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - ldr r1, _080072E0 @ =gUnknown_03000000\n\ - mov sb, r1\n\ - movs r0, #0xff\n\ - mov sl, r0\n\ - ldr r1, _080072E4 @ =gUnknown_0201B130\n\ - mov r8, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r5, r0, r2\n\ - ldr r6, _080072E8 @ =gUnknown_0202BE30\n\ - lsls r1, r1, #1\n\ - adds r4, r1, r2\n\ -_08007290:\n\ - lsls r3, r7, #1\n\ - ldrh r0, [r5]\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - ldrh r1, [r6, #2]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldrh r0, [r4]\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r3, r3, r0\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r2, #2]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007290\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_080072E0: .4byte gUnknown_03000000\n\ -_080072E4: .4byte gUnknown_0201B130\n\ -_080072E8: .4byte gUnknown_0202BE30\n\ -_080072EC:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - ldr r1, _08007388 @ =gUnknown_03000000\n\ - mov sl, r1\n\ - ldr r0, _0800738C @ =gUnknown_0201B130\n\ - mov sb, r0\n\ - ldr r1, _08007390 @ =gUnknown_0202BE30\n\ - mov r8, r1\n\ - lsls r0, r2, #1\n\ - mov r2, sl\n\ - adds r6, r0, r2\n\ - movs r1, #0x80\n\ - lsls r1, r1, #3\n\ - adds r0, r0, r1\n\ - adds r5, r0, r2\n\ -_0800730C:\n\ - lsls r4, r7, #1\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - ldr r0, _08007394 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r4, ip\n\ - lsls r3, r4, #1\n\ - add r3, sl\n\ - ldrh r0, [r2]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - mov r0, sb\n\ - ldrh r1, [r0]\n\ - ldr r0, _08007394 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r4, r4, r1\n\ - lsls r4, r4, #1\n\ - add r4, sl\n\ - mov r2, sb\n\ - ldrh r0, [r2]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r0, #4\n\ - add sb, r0\n\ - add r8, r0\n\ - adds r6, #4\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800730C\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007388: .4byte gUnknown_03000000\n\ -_0800738C: .4byte gUnknown_0201B130\n\ -_08007390: .4byte gUnknown_0202BE30\n\ -_08007394: .4byte 0x00000FFF\n\ -_08007398:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - movs r0, #0xff\n\ - mov sl, r0\n\ - ldr r1, _08007440 @ =gUnknown_0201B130\n\ - mov sb, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - ldr r0, _08007444 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r0, r2, #1\n\ - ldr r2, _08007448 @ =gUnknown_03000000\n\ - adds r6, r0, r2\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_080073BA:\n\ - lsls r4, r7, #1\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r4, ip\n\ - lsls r3, r4, #1\n\ - ldr r1, _08007448 @ =gUnknown_03000000\n\ - adds r3, r3, r1\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r2, #2]\n\ - mov r0, sl\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - mov r0, sb\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r4, r4, r1\n\ - lsls r4, r4, #1\n\ - ldr r2, _08007448 @ =gUnknown_03000000\n\ - adds r4, r4, r2\n\ - mov r1, sb\n\ - ldrh r0, [r1]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - mov r0, sb\n\ - ldrh r2, [r0, #2]\n\ - mov r0, sl\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #4\n\ - add sb, r1\n\ - adds r5, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080073BA\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007440: .4byte gUnknown_0201B130\n\ -_08007444: .4byte gUnknown_0202BE30\n\ -_08007448: .4byte gUnknown_03000000\n\ -_0800744C:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - movs r1, #0x10\n\ - adds r1, r1, r2\n\ - mov sb, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - movs r0, #2\n\ - str r0, [sp, #8]\n\ - ldr r0, _08007538 @ =gUnknown_0202BE30\n\ - mov sl, r0\n\ - lsls r0, r2, #1\n\ - ldr r2, _0800753C @ =gUnknown_03000000\n\ - adds r0, r0, r2\n\ - mov r8, r0\n\ - ldr r0, _08007540 @ =gUnknown_0201B130\n\ - str r0, [sp, #0x10]\n\ - lsls r1, r1, #1\n\ - adds r6, r1, r2\n\ -_08007476:\n\ - lsls r5, r7, #1\n\ - mov r2, sl\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - mov r0, ip\n\ - adds r4, r5, r0\n\ - lsls r3, r4, #1\n\ - ldr r1, _0800753C @ =gUnknown_03000000\n\ - adds r3, r3, r1\n\ - mov r2, sl\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007544 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - add r5, sb\n\ - lsls r2, r5, #1\n\ - ldr r0, _0800753C @ =gUnknown_03000000\n\ - adds r2, r2, r0\n\ - mov r0, sl\n\ - ldrh r1, [r0, #2]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r2, [sp, #0x10]\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r4, r4, r0\n\ - lsls r4, r4, #1\n\ - ldr r1, _0800753C @ =gUnknown_03000000\n\ - adds r4, r4, r1\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007544 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldr r2, [sp, #8]\n\ - ldr r0, _08007540 @ =gUnknown_0201B130\n\ - adds r3, r2, r0\n\ - ldrh r2, [r3]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r5, r5, r1\n\ - lsls r5, r5, #1\n\ - ldr r2, _0800753C @ =gUnknown_03000000\n\ - adds r5, r5, r2\n\ - ldrh r1, [r3]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - adds r6, #4\n\ - ldr r0, [sp, #8]\n\ - adds r0, #4\n\ - str r0, [sp, #8]\n\ - movs r1, #4\n\ - add sl, r1\n\ - add r8, r1\n\ - ldr r2, [sp, #0x10]\n\ - adds r2, #4\n\ - str r2, [sp, #0x10]\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007476\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007538: .4byte gUnknown_0202BE30\n\ -_0800753C: .4byte gUnknown_03000000\n\ -_08007540: .4byte gUnknown_0201B130\n\ -_08007544: .4byte 0x0000FFF0\n\ -_08007548:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _080075B4 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _080075B8 @ =gUnknown_0201B130\n\ - ldr r5, _080075BC @ =gUnknown_0202BE30\n\ -_08007560:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - ldrh r0, [r2]\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r5, #2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldrh r0, [r3]\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r6, #2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007560\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_080075B4: .4byte gUnknown_03000000\n\ -_080075B8: .4byte gUnknown_0201B130\n\ -_080075BC: .4byte gUnknown_0202BE30\n\ -_080075C0:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r2, _0800765C @ =gUnknown_03000000\n\ - mov sl, r2\n\ - ldr r0, _08007660 @ =gUnknown_0201B130\n\ - mov r8, r0\n\ - ldr r6, _08007664 @ =gUnknown_0202BE30\n\ -_080075D4:\n\ - lsls r5, r7, #1\n\ - mov r1, ip\n\ - adds r3, r5, r1\n\ - lsls r2, r3, #1\n\ - add r2, sl\n\ - ldrh r1, [r6]\n\ - ldr r0, _08007668 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r5, sb\n\ - lsls r4, r5, #1\n\ - add r4, sl\n\ - ldrh r0, [r6]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r6, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sl\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - ldr r0, _08007668 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, r5, r2\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - mov r0, r8\n\ - ldrh r2, [r0, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080075D4\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_0800765C: .4byte gUnknown_03000000\n\ -_08007660: .4byte gUnknown_0201B130\n\ -_08007664: .4byte gUnknown_0202BE30\n\ -_08007668: .4byte 0x00000FFF\n\ -_0800766C:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08007708 @ =gUnknown_03000000\n\ - mov sl, r1\n\ - ldr r2, _0800770C @ =gUnknown_0201B130\n\ - mov r8, r2\n\ - ldr r6, _08007710 @ =gUnknown_0202BE30\n\ -_08007680:\n\ - lsls r5, r7, #1\n\ - mov r0, ip\n\ - adds r3, r5, r0\n\ - lsls r2, r3, #1\n\ - add r2, sl\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r5, sb\n\ - lsls r4, r5, #1\n\ - add r4, sl\n\ - ldrh r0, [r6]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r6, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r3, r3, r1\n\ - lsls r3, r3, #1\n\ - add r3, sl\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r5, r5, r0\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - ldrh r0, [r2]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xff\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007680\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007708: .4byte gUnknown_03000000\n\ -_0800770C: .4byte gUnknown_0201B130\n\ -_08007710: .4byte gUnknown_0202BE30\n\ -_08007714:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - movs r1, #0x10\n\ - adds r1, r1, r2\n\ - mov sb, r1\n\ - adds r2, #0x11\n\ - str r2, [sp]\n\ - ldr r2, _080077FC @ =gUnknown_03000000\n\ - mov sl, r2\n\ - movs r0, #2\n\ - str r0, [sp, #4]\n\ - ldr r1, _08007800 @ =gUnknown_0202BE30\n\ - mov r8, r1\n\ - ldr r2, _08007804 @ =gUnknown_0201B130\n\ - str r2, [sp, #0xc]\n\ -_08007734:\n\ - lsls r6, r7, #1\n\ - mov r0, ip\n\ - adds r4, r6, r0\n\ - lsls r2, r4, #1\n\ - add r2, sl\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - mov r1, sb\n\ - adds r5, r6, r1\n\ - lsls r3, r5, #1\n\ - add r3, sl\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007808 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - ldr r0, [sp]\n\ - adds r6, r6, r0\n\ - lsls r2, r6, #1\n\ - add r2, sl\n\ - mov r0, r8\n\ - ldrh r1, [r0, #2]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r4, r4, r1\n\ - lsls r4, r4, #1\n\ - add r4, sl\n\ - ldr r2, [sp, #0xc]\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r5, r5, r0\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007808 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldr r2, [sp, #4]\n\ - ldr r0, _08007804 @ =gUnknown_0201B130\n\ - adds r3, r2, r0\n\ - ldrh r2, [r3]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r6, r6, r1\n\ - lsls r6, r6, #1\n\ - add r6, sl\n\ - ldrh r1, [r3]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - ldr r2, [sp, #4]\n\ - adds r2, #4\n\ - str r2, [sp, #4]\n\ - movs r0, #4\n\ - add r8, r0\n\ - ldr r1, [sp, #0xc]\n\ - adds r1, #4\n\ - str r1, [sp, #0xc]\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007734\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_080077FC: .4byte gUnknown_03000000\n\ -_08007800: .4byte gUnknown_0202BE30\n\ -_08007804: .4byte gUnknown_0201B130\n\ -_08007808: .4byte 0x0000FFF0\n\ -_0800780C:\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _08007814\n\ - adds r0, r3, #7\n\ -_08007814:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #3\n\ - subs r0, r3, r0\n\ - cmp r0, #7\n\ - bls _08007822\n\ - bl _080088C8\n\ -_08007822:\n\ - lsls r0, r0, #2\n\ - ldr r1, _0800782C @ =_08007830\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0800782C: .4byte _08007830\n\ -_08007830: @ jump table\n\ - .4byte _08007850 @ case 0\n\ - .4byte _080078D0 @ case 1\n\ - .4byte _0800797C @ case 2\n\ - .4byte _08007A28 @ case 3\n\ - .4byte _08007ADC @ case 4\n\ - .4byte _08007B54 @ case 5\n\ - .4byte _08007C00 @ case 6\n\ - .4byte _08007CA8 @ case 7\n\ -_08007850:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - ldr r1, _080078C4 @ =gUnknown_03000000\n\ - mov sb, r1\n\ - movs r0, #0xf\n\ - mov sl, r0\n\ - ldr r1, _080078C8 @ =gUnknown_0201B130\n\ - mov r8, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r5, r0, r2\n\ - ldr r6, _080078CC @ =gUnknown_0202BE30\n\ - lsls r1, r1, #1\n\ - adds r4, r1, r2\n\ -_08007874:\n\ - lsls r3, r7, #1\n\ - ldrh r0, [r5]\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - ldrh r1, [r6, #2]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldrh r0, [r4]\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r3, r3, r0\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r2, #2]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007874\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_080078C4: .4byte gUnknown_03000000\n\ -_080078C8: .4byte gUnknown_0201B130\n\ -_080078CC: .4byte gUnknown_0202BE30\n\ -_080078D0:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - ldr r1, _0800796C @ =gUnknown_03000000\n\ - mov sl, r1\n\ - ldr r0, _08007970 @ =gUnknown_0201B130\n\ - mov sb, r0\n\ - ldr r1, _08007974 @ =gUnknown_0202BE30\n\ - mov r8, r1\n\ - lsls r0, r2, #1\n\ - mov r2, sl\n\ - adds r6, r0, r2\n\ - movs r1, #0x80\n\ - lsls r1, r1, #3\n\ - adds r0, r0, r1\n\ - adds r5, r0, r2\n\ -_080078F0:\n\ - lsls r4, r7, #1\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - ldr r0, _08007978 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r4, ip\n\ - lsls r3, r4, #1\n\ - add r3, sl\n\ - ldrh r0, [r2]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - mov r0, sb\n\ - ldrh r1, [r0]\n\ - ldr r0, _08007978 @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r4, r4, r1\n\ - lsls r4, r4, #1\n\ - add r4, sl\n\ - mov r2, sb\n\ - ldrh r0, [r2]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r0, #4\n\ - add sb, r0\n\ - add r8, r0\n\ - adds r6, #4\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080078F0\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_0800796C: .4byte gUnknown_03000000\n\ -_08007970: .4byte gUnknown_0201B130\n\ -_08007974: .4byte gUnknown_0202BE30\n\ -_08007978: .4byte 0x00000FFF\n\ -_0800797C:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _08007A1C @ =gUnknown_03000000\n\ - mov sl, r0\n\ - ldr r1, _08007A20 @ =gUnknown_0201B130\n\ - mov sb, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - ldr r0, _08007A24 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sl\n\ - adds r6, r0, r2\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_0800799E:\n\ - lsls r4, r7, #1\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r4, ip\n\ - lsls r3, r4, #1\n\ - add r3, sl\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - mov r0, r8\n\ - ldrh r2, [r0, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - mov r2, sb\n\ - ldrh r1, [r2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r4, r4, r0\n\ - lsls r4, r4, #1\n\ - add r4, sl\n\ - ldrh r0, [r2]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #4\n\ - add sb, r1\n\ - adds r5, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800799E\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007A1C: .4byte gUnknown_03000000\n\ -_08007A20: .4byte gUnknown_0201B130\n\ -_08007A24: .4byte gUnknown_0202BE30\n\ -_08007A28:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - movs r1, #0xf\n\ - mov sl, r1\n\ - ldr r0, _08007ACC @ =gUnknown_0201B130\n\ - mov sb, r0\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - ldr r0, _08007AD0 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r0, r2, #1\n\ - ldr r2, _08007AD4 @ =gUnknown_03000000\n\ - adds r6, r0, r2\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_08007A4A:\n\ - lsls r4, r7, #1\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r4, ip\n\ - lsls r3, r4, #1\n\ - ldr r1, _08007AD4 @ =gUnknown_03000000\n\ - adds r3, r3, r1\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007AD8 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldrh r2, [r2, #2]\n\ - mov r0, sl\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r3]\n\ - orrs r1, r0\n\ - strh r1, [r3]\n\ - mov r0, sb\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r4, r4, r1\n\ - lsls r4, r4, #1\n\ - ldr r2, _08007AD4 @ =gUnknown_03000000\n\ - adds r4, r4, r2\n\ - mov r1, sb\n\ - ldrh r0, [r1]\n\ - ldr r1, _08007AD8 @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - mov r0, sb\n\ - ldrh r2, [r0, #2]\n\ - mov r0, sl\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #4\n\ - add sb, r1\n\ - adds r5, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007A4A\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007ACC: .4byte gUnknown_0201B130\n\ -_08007AD0: .4byte gUnknown_0202BE30\n\ -_08007AD4: .4byte gUnknown_03000000\n\ -_08007AD8: .4byte 0x0000FFF0\n\ -_08007ADC:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08007B48 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _08007B4C @ =gUnknown_0201B130\n\ - ldr r5, _08007B50 @ =gUnknown_0202BE30\n\ -_08007AF4:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - ldrh r0, [r2]\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r5, #2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldrh r0, [r3]\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r6, #2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007AF4\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007B48: .4byte gUnknown_03000000\n\ -_08007B4C: .4byte gUnknown_0201B130\n\ -_08007B50: .4byte gUnknown_0202BE30\n\ -_08007B54:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r2, _08007BF0 @ =gUnknown_03000000\n\ - mov sl, r2\n\ - ldr r0, _08007BF4 @ =gUnknown_0201B130\n\ - mov r8, r0\n\ - ldr r6, _08007BF8 @ =gUnknown_0202BE30\n\ -_08007B68:\n\ - lsls r5, r7, #1\n\ - mov r1, ip\n\ - adds r3, r5, r1\n\ - lsls r2, r3, #1\n\ - add r2, sl\n\ - ldrh r1, [r6]\n\ - ldr r0, _08007BFC @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r5, sb\n\ - lsls r4, r5, #1\n\ - add r4, sl\n\ - ldrh r0, [r6]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - ldrh r2, [r6, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sl\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - ldr r0, _08007BFC @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, r5, r2\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #0xc\n\ - mov r0, r8\n\ - ldrh r2, [r0, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #4\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007B68\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007BF0: .4byte gUnknown_03000000\n\ -_08007BF4: .4byte gUnknown_0201B130\n\ -_08007BF8: .4byte gUnknown_0202BE30\n\ -_08007BFC: .4byte 0x00000FFF\n\ -_08007C00:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08007C9C @ =gUnknown_03000000\n\ - mov sl, r1\n\ - ldr r2, _08007CA0 @ =gUnknown_0201B130\n\ - mov r8, r2\n\ - ldr r6, _08007CA4 @ =gUnknown_0202BE30\n\ -_08007C14:\n\ - lsls r5, r7, #1\n\ - mov r0, ip\n\ - adds r3, r5, r0\n\ - lsls r2, r3, #1\n\ - add r2, sl\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r5, sb\n\ - lsls r4, r5, #1\n\ - add r4, sl\n\ - ldrh r0, [r6]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r6, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r3, r3, r1\n\ - lsls r3, r3, #1\n\ - add r3, sl\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r5, r5, r0\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - ldrh r0, [r2]\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - ands r1, r0\n\ - lsrs r1, r1, #8\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #8\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007C14\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007C9C: .4byte gUnknown_03000000\n\ -_08007CA0: .4byte gUnknown_0201B130\n\ -_08007CA4: .4byte gUnknown_0202BE30\n\ -_08007CA8:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08007D40 @ =gUnknown_03000000\n\ - mov sl, r1\n\ - ldr r2, _08007D44 @ =gUnknown_0201B130\n\ - mov r8, r2\n\ - ldr r6, _08007D48 @ =gUnknown_0202BE30\n\ -_08007CBC:\n\ - lsls r5, r7, #1\n\ - mov r0, ip\n\ - adds r3, r5, r0\n\ - lsls r2, r3, #1\n\ - add r2, sl\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r5, sb\n\ - lsls r4, r5, #1\n\ - add r4, sl\n\ - ldrh r0, [r6]\n\ - ldr r1, _08007D4C @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldrh r2, [r6, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r4]\n\ - orrs r1, r0\n\ - strh r1, [r4]\n\ - movs r1, #0x80\n\ - lsls r1, r1, #2\n\ - adds r3, r3, r1\n\ - lsls r3, r3, #1\n\ - add r3, sl\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r5, r5, r0\n\ - lsls r5, r5, #1\n\ - add r5, sl\n\ - ldrh r0, [r2]\n\ - ldr r1, _08007D4C @ =0x0000FFF0\n\ - ands r1, r0\n\ - lsrs r1, r1, #4\n\ - ldrh r2, [r2, #2]\n\ - movs r0, #0xf\n\ - ands r0, r2\n\ - lsls r0, r0, #0xc\n\ - orrs r1, r0\n\ - ldrh r0, [r5]\n\ - orrs r1, r0\n\ - strh r1, [r5]\n\ - movs r1, #4\n\ - add r8, r1\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007CBC\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007D40: .4byte gUnknown_03000000\n\ -_08007D44: .4byte gUnknown_0201B130\n\ -_08007D48: .4byte gUnknown_0202BE30\n\ -_08007D4C: .4byte 0x0000FFF0\n\ -_08007D50:\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _08007D58\n\ - adds r0, r3, #7\n\ -_08007D58:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #3\n\ - subs r0, r3, r0\n\ - cmp r0, #7\n\ - bls _08007D66\n\ - bl _080088C8\n\ -_08007D66:\n\ - lsls r0, r0, #2\n\ - ldr r1, _08007D70 @ =_08007D74\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08007D70: .4byte _08007D74\n\ -_08007D74: @ jump table\n\ - .4byte _08007D94 @ case 0\n\ - .4byte _08007DD8 @ case 1\n\ - .4byte _08007E74 @ case 2\n\ - .4byte _08007F0C @ case 3\n\ - .4byte _08007FA4 @ case 4\n\ - .4byte _08007FF4 @ case 5\n\ - .4byte _08008084 @ case 6\n\ - .4byte _08008110 @ case 7\n\ -_08007D94:\n\ - movs r7, #0\n\ - ldr r1, _08007DCC @ =gUnknown_03000000\n\ - lsls r0, r2, #1\n\ - adds r3, r0, r1\n\ - ldr r5, _08007DD0 @ =gUnknown_0202BE30\n\ - ldr r4, _08007DD4 @ =gUnknown_0201B130\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r2, r0, r1\n\ -_08007DA8:\n\ - ldrh r0, [r3]\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - ldrh r0, [r2]\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r3, #4\n\ - adds r5, #4\n\ - adds r2, #4\n\ - adds r4, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007DA8\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007DCC: .4byte gUnknown_03000000\n\ -_08007DD0: .4byte gUnknown_0202BE30\n\ -_08007DD4: .4byte gUnknown_0201B130\n\ -_08007DD8:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - ldr r1, _08007E64 @ =gUnknown_03000000\n\ - mov sb, r1\n\ - movs r0, #0xf0\n\ - lsls r0, r0, #8\n\ - mov sl, r0\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _08007E68 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_08007DFC:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - ldr r0, _08007E6C @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _08007E70 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - ldr r0, _08007E6C @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #0xc\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007DFC\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007E64: .4byte gUnknown_03000000\n\ -_08007E68: .4byte gUnknown_0202BE30\n\ -_08007E6C: .4byte 0x00000FFF\n\ -_08007E70: .4byte gUnknown_0201B130\n\ -_08007E74:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _08007F00 @ =gUnknown_03000000\n\ - mov sb, r0\n\ - movs r1, #0xff\n\ - lsls r1, r1, #8\n\ - mov sl, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _08007F04 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_08007E98:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _08007F08 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007E98\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007F00: .4byte gUnknown_03000000\n\ -_08007F04: .4byte gUnknown_0202BE30\n\ -_08007F08: .4byte gUnknown_0201B130\n\ -_08007F0C:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _08007F94 @ =gUnknown_03000000\n\ - mov sb, r0\n\ - ldr r1, _08007F98 @ =0x0000FFF0\n\ - mov sl, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _08007F9C @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_08007F2E:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _08007FA0 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007F2E\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007F94: .4byte gUnknown_03000000\n\ -_08007F98: .4byte 0x0000FFF0\n\ -_08007F9C: .4byte gUnknown_0202BE30\n\ -_08007FA0: .4byte gUnknown_0201B130\n\ -_08007FA4:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r1, _08007FE8 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - ldr r6, _08007FEC @ =gUnknown_0202BE30\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - mov r5, ip\n\ -_08007FB6:\n\ - lsls r3, r7, #2\n\ - ldrh r0, [r4]\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r5, r0\n\ - lsls r2, r2, #1\n\ - add r2, r8\n\ - ldr r1, _08007FF0 @ =gUnknown_0201B130\n\ - adds r3, r3, r1\n\ - ldrh r0, [r2]\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r6, #4\n\ - adds r4, #4\n\ - adds r5, #2\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08007FB6\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08007FE8: .4byte gUnknown_03000000\n\ -_08007FEC: .4byte gUnknown_0202BE30\n\ -_08007FF0: .4byte gUnknown_0201B130\n\ -_08007FF4:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08008074 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _08008078 @ =gUnknown_0202BE30\n\ -_0800800A:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - ldr r0, _0800807C @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf0\n\ - lsls r0, r0, #8\n\ - ands r0, r1\n\ - lsrs r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _08008080 @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - ldr r0, _0800807C @ =0x00000FFF\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf0\n\ - lsls r0, r0, #8\n\ - ands r0, r1\n\ - lsrs r0, r0, #0xc\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800800A\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08008074: .4byte gUnknown_03000000\n\ -_08008078: .4byte gUnknown_0202BE30\n\ -_0800807C: .4byte 0x00000FFF\n\ -_08008080: .4byte gUnknown_0201B130\n\ -_08008084:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08008104 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _08008108 @ =gUnknown_0202BE30\n\ -_0800809A:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - lsls r0, r0, #8\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _0800810C @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - movs r0, #0xff\n\ - lsls r0, r0, #8\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800809A\n\ - bl _080088C8\n\ - .align 2, 0\n\ -_08008104: .4byte gUnknown_03000000\n\ -_08008108: .4byte gUnknown_0202BE30\n\ -_0800810C: .4byte gUnknown_0201B130\n\ -_08008110:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _0800818C @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _08008190 @ =gUnknown_0202BE30\n\ -_08008126:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - ldr r0, _08008194 @ =0x0000FFF0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _08008198 @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - ldr r0, _08008194 @ =0x0000FFF0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008126\n\ - b _080088C8\n\ - .align 2, 0\n\ -_0800818C: .4byte gUnknown_03000000\n\ -_08008190: .4byte gUnknown_0202BE30\n\ -_08008194: .4byte 0x0000FFF0\n\ -_08008198: .4byte gUnknown_0201B130\n\ -_0800819C:\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _080081A4\n\ - adds r0, r3, #7\n\ -_080081A4:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #3\n\ - subs r0, r3, r0\n\ - cmp r0, #7\n\ - bls _080081B0\n\ - b _080088C8\n\ -_080081B0:\n\ - lsls r0, r0, #2\n\ - ldr r1, _080081BC @ =_080081C0\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080081BC: .4byte _080081C0\n\ -_080081C0: @ jump table\n\ - .4byte _080081E0 @ case 0\n\ - .4byte _08008230 @ case 1\n\ - .4byte _08008284 @ case 2\n\ - .4byte _08008318 @ case 3\n\ - .4byte _080083AC @ case 4\n\ - .4byte _0800840C @ case 5\n\ - .4byte _08008468 @ case 6\n\ - .4byte _080084F4 @ case 7\n\ -_080081E0:\n\ - movs r7, #0\n\ - ldr r1, _08008220 @ =gUnknown_03000000\n\ - ldr r6, _08008224 @ =0x00000FFF\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - ldr r5, _08008228 @ =gUnknown_0202BE30\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r3, r0, r1\n\ -_080081F4:\n\ - lsls r2, r7, #2\n\ - ldrh r1, [r5]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _0800822C @ =gUnknown_0201B130\n\ - adds r2, r2, r0\n\ - ldrh r1, [r2]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r3, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080081F4\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008220: .4byte gUnknown_03000000\n\ -_08008224: .4byte 0x00000FFF\n\ -_08008228: .4byte gUnknown_0202BE30\n\ -_0800822C: .4byte gUnknown_0201B130\n\ -_08008230:\n\ - movs r7, #0\n\ - ldr r1, _08008274 @ =gUnknown_03000000\n\ - ldr r6, _08008278 @ =0x00000FFF\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - ldr r5, _0800827C @ =gUnknown_0202BE30\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r3, r0, r1\n\ -_08008244:\n\ - lsls r2, r7, #2\n\ - ldrh r1, [r5]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _08008280 @ =gUnknown_0201B130\n\ - adds r2, r2, r0\n\ - ldrh r1, [r2]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r3, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008244\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008274: .4byte gUnknown_03000000\n\ -_08008278: .4byte 0x00000FFF\n\ -_0800827C: .4byte gUnknown_0202BE30\n\ -_08008280: .4byte gUnknown_0201B130\n\ -_08008284:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _0800830C @ =gUnknown_03000000\n\ - mov sb, r0\n\ - movs r1, #0xf0\n\ - lsls r1, r1, #4\n\ - mov sl, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _08008310 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_080082A8:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _08008314 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080082A8\n\ - b _080088C8\n\ - .align 2, 0\n\ -_0800830C: .4byte gUnknown_03000000\n\ -_08008310: .4byte gUnknown_0202BE30\n\ -_08008314: .4byte gUnknown_0201B130\n\ -_08008318:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _080083A0 @ =gUnknown_03000000\n\ - mov sb, r0\n\ - movs r1, #0xff\n\ - lsls r1, r1, #4\n\ - mov sl, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _080083A4 @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_0800833C:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _080083A8 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800833C\n\ - b _080088C8\n\ - .align 2, 0\n\ -_080083A0: .4byte gUnknown_03000000\n\ -_080083A4: .4byte gUnknown_0202BE30\n\ -_080083A8: .4byte gUnknown_0201B130\n\ -_080083AC:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r1, _080083FC @ =gUnknown_03000000\n\ - mov sb, r1\n\ - ldr r2, _08008400 @ =0x00000FFF\n\ - mov r8, r2\n\ - ldr r6, _08008404 @ =gUnknown_0202BE30\n\ - mov r1, ip\n\ - lsls r0, r1, #1\n\ - mov r2, sb\n\ - adds r4, r0, r2\n\ - mov r5, ip\n\ -_080083C6:\n\ - lsls r3, r7, #2\n\ - ldrh r1, [r6]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r5, r0\n\ - lsls r2, r2, #1\n\ - add r2, sb\n\ - ldr r1, _08008408 @ =gUnknown_0201B130\n\ - adds r3, r3, r1\n\ - ldrh r1, [r3]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r6, #4\n\ - adds r4, #4\n\ - adds r5, #2\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080083C6\n\ - b _080088C8\n\ - .align 2, 0\n\ -_080083FC: .4byte gUnknown_03000000\n\ -_08008400: .4byte 0x00000FFF\n\ -_08008404: .4byte gUnknown_0202BE30\n\ -_08008408: .4byte gUnknown_0201B130\n\ -_0800840C:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r6, _08008458 @ =gUnknown_03000000\n\ - ldr r2, _0800845C @ =0x00000FFF\n\ - mov r8, r2\n\ - ldr r5, _08008460 @ =gUnknown_0202BE30\n\ -_0800841A:\n\ - lsls r2, r7, #1\n\ - add r2, ip\n\ - lsls r3, r2, #1\n\ - adds r3, r3, r6\n\ - lsls r4, r7, #2\n\ - ldrh r1, [r5]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r2, r0\n\ - lsls r2, r2, #1\n\ - adds r2, r2, r6\n\ - ldr r1, _08008464 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800841A\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008458: .4byte gUnknown_03000000\n\ -_0800845C: .4byte 0x00000FFF\n\ -_08008460: .4byte gUnknown_0202BE30\n\ -_08008464: .4byte gUnknown_0201B130\n\ -_08008468:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _080084E8 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _080084EC @ =gUnknown_0202BE30\n\ -_0800847E:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf0\n\ - lsls r0, r0, #4\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _080084F0 @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - movs r0, #0xff\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf0\n\ - lsls r0, r0, #4\n\ - ands r0, r1\n\ - lsrs r0, r0, #8\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800847E\n\ - b _080088C8\n\ - .align 2, 0\n\ -_080084E8: .4byte gUnknown_03000000\n\ -_080084EC: .4byte gUnknown_0202BE30\n\ -_080084F0: .4byte gUnknown_0201B130\n\ -_080084F4:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _08008574 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _08008578 @ =gUnknown_0202BE30\n\ -_0800850A:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - movs r0, #0xff\n\ - lsls r0, r0, #4\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _0800857C @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - movs r0, #0xff\n\ - lsls r0, r0, #4\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800850A\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008574: .4byte gUnknown_03000000\n\ -_08008578: .4byte gUnknown_0202BE30\n\ -_0800857C: .4byte gUnknown_0201B130\n\ -_08008580:\n\ - adds r0, r3, #0\n\ - cmp r3, #0\n\ - bge _08008588\n\ - adds r0, r3, #7\n\ -_08008588:\n\ - asrs r0, r0, #3\n\ - lsls r0, r0, #3\n\ - subs r0, r3, r0\n\ - cmp r0, #7\n\ - bls _08008594\n\ - b _080088C8\n\ -_08008594:\n\ - lsls r0, r0, #2\n\ - ldr r1, _080085A0 @ =_080085A4\n\ - adds r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080085A0: .4byte _080085A4\n\ -_080085A4: @ jump table\n\ - .4byte _080085C4 @ case 0\n\ - .4byte _08008610 @ case 1\n\ - .4byte _08008660 @ case 2\n\ - .4byte _080086B0 @ case 3\n\ - .4byte _08008744 @ case 4\n\ - .4byte _080087A0 @ case 5\n\ - .4byte _080087F8 @ case 6\n\ - .4byte _08008850 @ case 7\n\ -_080085C4:\n\ - movs r7, #0\n\ - ldr r1, _08008604 @ =gUnknown_03000000\n\ - movs r6, #0xff\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - ldr r5, _08008608 @ =gUnknown_0202BE30\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r3, r0, r1\n\ -_080085D8:\n\ - lsls r2, r7, #2\n\ - ldrh r1, [r5]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _0800860C @ =gUnknown_0201B130\n\ - adds r2, r2, r0\n\ - ldrh r1, [r2]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r3, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080085D8\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008604: .4byte gUnknown_03000000\n\ -_08008608: .4byte gUnknown_0202BE30\n\ -_0800860C: .4byte gUnknown_0201B130\n\ -_08008610:\n\ - movs r7, #0\n\ - ldr r1, _08008654 @ =gUnknown_03000000\n\ - movs r6, #0xff\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - ldr r5, _08008658 @ =gUnknown_0202BE30\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r3, r0, r1\n\ -_08008624:\n\ - lsls r2, r7, #2\n\ - ldrh r1, [r5]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _0800865C @ =gUnknown_0201B130\n\ - adds r2, r2, r0\n\ - ldrh r1, [r2]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r3, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008624\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008654: .4byte gUnknown_03000000\n\ -_08008658: .4byte gUnknown_0202BE30\n\ -_0800865C: .4byte gUnknown_0201B130\n\ -_08008660:\n\ - movs r7, #0\n\ - ldr r1, _080086A4 @ =gUnknown_03000000\n\ - movs r6, #0xff\n\ - lsls r0, r2, #1\n\ - adds r4, r0, r1\n\ - ldr r5, _080086A8 @ =gUnknown_0202BE30\n\ - movs r2, #0x80\n\ - lsls r2, r2, #3\n\ - adds r0, r0, r2\n\ - adds r3, r0, r1\n\ -_08008674:\n\ - lsls r2, r7, #2\n\ - ldrh r1, [r5]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _080086AC @ =gUnknown_0201B130\n\ - adds r2, r2, r0\n\ - ldrh r1, [r2]\n\ - adds r0, r6, #0\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r4, #4\n\ - adds r5, #4\n\ - adds r3, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008674\n\ - b _080088C8\n\ - .align 2, 0\n\ -_080086A4: .4byte gUnknown_03000000\n\ -_080086A8: .4byte gUnknown_0202BE30\n\ -_080086AC: .4byte gUnknown_0201B130\n\ -_080086B0:\n\ - movs r7, #0\n\ - adds r1, r2, #1\n\ - mov ip, r1\n\ - ldr r0, _08008738 @ =gUnknown_03000000\n\ - mov sb, r0\n\ - movs r1, #0xf0\n\ - mov sl, r1\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r1, r2, r0\n\ - lsls r0, r2, #1\n\ - mov r2, sb\n\ - adds r6, r0, r2\n\ - ldr r0, _0800873C @ =gUnknown_0202BE30\n\ - mov r8, r0\n\ - lsls r1, r1, #1\n\ - adds r5, r1, r2\n\ -_080086D2:\n\ - lsls r3, r7, #1\n\ - lsls r4, r7, #2\n\ - mov r2, r8\n\ - ldrh r1, [r2]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r6]\n\ - orrs r0, r1\n\ - strh r0, [r6]\n\ - add r3, ip\n\ - lsls r2, r3, #1\n\ - add r2, sb\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _08008740 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r5]\n\ - orrs r0, r1\n\ - strh r0, [r5]\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - adds r3, r3, r2\n\ - lsls r3, r3, #1\n\ - add r3, sb\n\ - ldrh r1, [r4]\n\ - mov r0, sl\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - adds r5, #4\n\ - adds r6, #4\n\ - movs r0, #4\n\ - add r8, r0\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080086D2\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008738: .4byte gUnknown_03000000\n\ -_0800873C: .4byte gUnknown_0202BE30\n\ -_08008740: .4byte gUnknown_0201B130\n\ -_08008744:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r1, _08008794 @ =gUnknown_03000000\n\ - mov sb, r1\n\ - movs r2, #0xff\n\ - mov r8, r2\n\ - ldr r6, _08008798 @ =gUnknown_0202BE30\n\ - mov r1, ip\n\ - lsls r0, r1, #1\n\ - mov r2, sb\n\ - adds r4, r0, r2\n\ - mov r5, ip\n\ -_0800875E:\n\ - lsls r3, r7, #2\n\ - ldrh r1, [r6]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r5, r0\n\ - lsls r2, r2, #1\n\ - add r2, sb\n\ - ldr r1, _0800879C @ =gUnknown_0201B130\n\ - adds r3, r3, r1\n\ - ldrh r1, [r3]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r6, #4\n\ - adds r4, #4\n\ - adds r5, #2\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _0800875E\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008794: .4byte gUnknown_03000000\n\ -_08008798: .4byte gUnknown_0202BE30\n\ -_0800879C: .4byte gUnknown_0201B130\n\ -_080087A0:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r6, _080087EC @ =gUnknown_03000000\n\ - movs r2, #0xff\n\ - mov r8, r2\n\ - ldr r5, _080087F0 @ =gUnknown_0202BE30\n\ -_080087AE:\n\ - lsls r2, r7, #1\n\ - add r2, ip\n\ - lsls r3, r2, #1\n\ - adds r3, r3, r6\n\ - lsls r4, r7, #2\n\ - ldrh r1, [r5]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r2, r0\n\ - lsls r2, r2, #1\n\ - adds r2, r2, r6\n\ - ldr r1, _080087F4 @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _080087AE\n\ - b _080088C8\n\ - .align 2, 0\n\ -_080087EC: .4byte gUnknown_03000000\n\ -_080087F0: .4byte gUnknown_0202BE30\n\ -_080087F4: .4byte gUnknown_0201B130\n\ -_080087F8:\n\ - movs r7, #0\n\ - adds r2, #1\n\ - mov ip, r2\n\ - ldr r6, _08008844 @ =gUnknown_03000000\n\ - movs r2, #0xff\n\ - mov r8, r2\n\ - ldr r5, _08008848 @ =gUnknown_0202BE30\n\ -_08008806:\n\ - lsls r2, r7, #1\n\ - add r2, ip\n\ - lsls r3, r2, #1\n\ - adds r3, r3, r6\n\ - lsls r4, r7, #2\n\ - ldrh r1, [r5]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - movs r0, #0x80\n\ - lsls r0, r0, #2\n\ - adds r2, r2, r0\n\ - lsls r2, r2, #1\n\ - adds r2, r2, r6\n\ - ldr r1, _0800884C @ =gUnknown_0201B130\n\ - adds r4, r4, r1\n\ - ldrh r1, [r4]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - lsls r0, r0, #8\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - adds r5, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008806\n\ - b _080088C8\n\ - .align 2, 0\n\ -_08008844: .4byte gUnknown_03000000\n\ -_08008848: .4byte gUnknown_0202BE30\n\ -_0800884C: .4byte gUnknown_0201B130\n\ -_08008850:\n\ - movs r7, #0\n\ - adds r0, r2, #1\n\ - mov ip, r0\n\ - adds r2, #0x10\n\ - mov sb, r2\n\ - ldr r1, _080088D8 @ =gUnknown_03000000\n\ - mov r8, r1\n\ - movs r2, #0x80\n\ - lsls r2, r2, #2\n\ - mov sl, r2\n\ - ldr r6, _080088DC @ =gUnknown_0202BE30\n\ -_08008866:\n\ - lsls r4, r7, #1\n\ - mov r0, ip\n\ - adds r3, r4, r0\n\ - lsls r2, r3, #1\n\ - add r2, r8\n\ - lsls r5, r7, #2\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r4, sb\n\ - lsls r2, r4, #1\n\ - add r2, r8\n\ - ldrh r1, [r6]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r2]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - add r3, sl\n\ - lsls r3, r3, #1\n\ - add r3, r8\n\ - ldr r1, _080088E0 @ =gUnknown_0201B130\n\ - adds r5, r5, r1\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf\n\ - ands r0, r1\n\ - lsls r0, r0, #0xc\n\ - ldrh r1, [r3]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - add r4, sl\n\ - lsls r4, r4, #1\n\ - add r4, r8\n\ - ldrh r1, [r5]\n\ - movs r0, #0xf0\n\ - ands r0, r1\n\ - lsrs r0, r0, #4\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r4]\n\ - adds r6, #4\n\ - adds r7, #1\n\ - cmp r7, #7\n\ - ble _08008866\n\ -_080088C8:\n\ - add sp, #0x14\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov sb, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080088D8: .4byte gUnknown_03000000\n\ -_080088DC: .4byte gUnknown_0202BE30\n\ -_080088E0: .4byte gUnknown_0201B130\n\ - "); + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2 + 1] & 0xF0) >> 0x4; + } + return; + case 4: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xFF; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xFF; + } + return; + case 5: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 4); + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 4); + + } + return; + case 6: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xFF) << 8); + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xFF) << 8); + } + return; + case 7: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[(i * 2 + 0x11) + temp_r2] |= (gUnknown_0202BE30[i * 2 + 1] & 0xF0) >> 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[(i * 2 + 0x11) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2 + 1] & 0xF0) >> 4; + + } + return; + default: + return; + } + break; + case 5: + switch (arg1 % 8) { + case 0: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xF; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xF; + + } + return; + case 1: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 4); + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 4); + + } + return; + case 2: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 8); + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 8); + + } + return; + case 3: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 0x4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + + } + return; + case 4: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= gUnknown_0202BE30[i * 2 + 1] & 0xF; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2 + 1] & 0xF; + + } + return; + case 5: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 4); + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xF000) >> 0xC) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 4); + + } + return; + case 6: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFF00) >> 8) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 8); + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFF00) >> 0x8) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 8); + + } + return; + case 7: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= ((gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4) | ((gUnknown_0202BE30[i * 2 + 1] & 0xF) << 0xC); + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= ((gUnknown_0201B130[i * 2] & 0xFFF0) >> 4) | ((gUnknown_0201B130[i * 2 + 1] & 0xF) << 0xC); + + } + return; + } + break; + case 4: + switch (arg1 % 8) { + case 0: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + } + return; + case 1: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF000) >> 0xC; + } + return; + case 2: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF00) >> 8; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF00) >> 8; + } + return; + case 3: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF0) >> 4; + } + return; + case 4: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= gUnknown_0202BE30[i * 2]; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= gUnknown_0201B130[i * 2]; + } + return; + case 5: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF000) >> 0xC; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF000) >> 0xC; + } + return; + case 6: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF00) >> 8; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF00) >> 8; + } + return; + case 7: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF0) >> 4; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF0) >> 4; + } + return; + } + break; + case 3: + switch (arg1 % 8) { + case 0: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF); + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF); + } + return; + case 1: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + } + return; + case 2: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF00) >> 8; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF00) >> 8; + } + return; + case 3: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF0) >> 4; + gUnknown_03000000[(i * 2) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF0) >> 4; + } + return; + case 4: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF); + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF); + } + return; + case 5: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFFF) << 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFFF) << 4; + } + return; + case 6: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF00) >> 8; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF00) >> 8; + } + return; + case 7: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF0) >> 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF0) >> 4; + } + return; + } + break; + case 2: + switch (arg1 % 8) { + case 0: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF); + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF); + } + return; + case 1: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 4; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 4; + } + return; + case 2: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 8; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 8; + } + return; + case 3: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[i * 2 + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF0) >> 4; + gUnknown_03000000[i * 2 + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF0) >> 4; + } + return; + case 4: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF); + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF); + } + return; + case 5: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 0x4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 0x4; + } + return; + case 6: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xFF) << 0x8; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xFF) << 0x8; + } + return; + case 7: + for(i = 0; i <=7; i++) + { + gUnknown_03000000[(i * 2 + 1) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2] |= (gUnknown_0202BE30[i * 2] & 0xF0) >> 4; + gUnknown_03000000[(i * 2 + 1) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF) << 0xC; + gUnknown_03000000[(i * 2 + 0x10) + temp_r2 + 0x200] |= (gUnknown_0201B130[i * 2] & 0xF0) >> 4; + } + break; + } + break; + } } + void sub_88E4(void) { int i; diff --git a/src/rom_14740.c b/src/rom_14740.c deleted file mode 100644 index be5e075..0000000 --- a/src/rom_14740.c +++ /dev/null @@ -1,1241 +0,0 @@ -#include "global.h" -#include "main.h" -#include "m4a.h" -#include "constants/bg_music.h" - -extern const u16 gUnknown_08254B10[]; -extern const u16 gUnknown_08257390[]; -extern const u16 gUnknown_08259C10[]; - -extern u8 gUnknown_0839A28C[]; -extern u16 gUnknown_086ACE2C[][2]; -extern s8 gUnknown_086ACDB8[]; - -extern struct SongHeader gUnknown_0869FC0C; - - - -u16 sub_14740(struct Vector16 *arg0, u16 *arg1) -{ - struct Vector16 vec1; - u16 x, y; - u16 res; - u16 var0; - - res = 0; - if (gCurrentPinballGame->unk5A4 != 2) - { - vec1.x = arg0->x / 2 - gCurrentPinballGame->unkC4; - vec1.y = arg0->y / 2 - gCurrentPinballGame->unkC6; - if ((vec1.y >= 0 && vec1.y < 48) && (vec1.x >= 0 && vec1.x < 48)) - { - s32 ix = vec1.y * 48 + vec1.x; - var0 = gUnknown_0839A28C[ix]; - if (var0 & 0x80) - { - gCurrentPinballGame->unk22 = 2; - gCurrentPinballGame->unk23 = 3; - //Todo: fakematch; used to swap register order - *arg1 = (var0 & 0x7F & var0) * 512; - gCurrentPinballGame->unk5A6 = 20; - - if (gCurrentPinballGame->unk5A9) - gCurrentPinballGame->unk5A9 = 24; - else - gCurrentPinballGame->unk5A9 = 20; - - // Only difference between these two branches is the played sound - if (gCurrentPinballGame->currentSpecies == SPECIES_JIRACHI) - { - if (gCurrentPinballGame->unk5AA == 0) - { - gCurrentPinballGame->unk5A5++; - if (gCurrentPinballGame->unk5A5 == 3) - { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 2; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->scoreAddedInFrame = 10000; - } - else - { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 1; - gCurrentPinballGame->scoreAddedInFrame = 10000; - } - - gCurrentPinballGame->unk5AA = 4; - } - - res = 1; - m4aSongNumStart(SE_UNKNOWN_0x145); - sub_11B0(7); - } - else - { - if (gCurrentPinballGame->unk5AA == 0) - { - gCurrentPinballGame->unk5A5++; - if (gCurrentPinballGame->unk5A5 == 3) - { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 2; - gCurrentPinballGame->unk5A6 = 0; - gCurrentPinballGame->scoreAddedInFrame = 10000; - } - else - { - gCurrentPinballGame->unk71D[gCurrentPinballGame->unk5A5 - 1] = 3; - gCurrentPinballGame->unk5A4 = 1; - gCurrentPinballGame->scoreAddedInFrame = 10000; - } - - gCurrentPinballGame->unk5AA = 4; - } - - res = 1; - m4aSongNumStart(SE_UNKNOWN_0x74); - sub_11B0(7); - } - } - } - } - - return res; -} - - -void sub_1493C(void) -{ - struct Vector16 vec1; - struct Vector32 vec2; - int squaredMagnitude; - u16 angle; - u8 temp_adjust; - - vec1.x = gCurrentPinballGame->ball->positionQ1.x - 238; - vec1.y = gCurrentPinballGame->ball->positionQ1.y - 558; - squaredMagnitude = (vec1.x * vec1.x) + (vec1.y * vec1.y); - - if (squaredMagnitude < 1764 && (gCurrentPinballGame->unk1E & 1) == 0) - { - angle = ArcTan2(-vec1.x, vec1.y); - temp_adjust = 30; - vec2.x = (temp_adjust * Cos(angle)) / 20000; - vec2.y = (-temp_adjust * Sin(angle)) / 20000; - gCurrentPinballGame->ball->velocity.x = ((vec2.x * 100) + (98 * gCurrentPinballGame->ball->velocity.x)) / 100; - gCurrentPinballGame->ball->velocity.y = ((vec2.y * 100) + (98 * gCurrentPinballGame->ball->velocity.y)) / 100; - } - - if (gCurrentPinballGame->unk5F4 < 20) - { - if (squaredMagnitude < 40) - { - gCurrentPinballGame->unk5F4++; - gCurrentPinballGame->ball->scale = 0x100; - } - else - { - gCurrentPinballGame->ball->scale = 0x100; - if (squaredMagnitude > 100) - gCurrentPinballGame->unk5F4 = 0; - } - } - else - { - if (gCurrentPinballGame->unk5F4 < 30) - { - gCurrentPinballGame->unk5F4++; - gCurrentPinballGame->ball->scale = ((30 - gCurrentPinballGame->unk5F4) * 0x80) / 10 + 0x80; - gCurrentPinballGame->ball->positionQ0.x = 119; - gCurrentPinballGame->ball->positionQ0.y = 279; - gCurrentPinballGame->ball->unk6 = 0; - gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ0.x << 8; - gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - } - else - { - gCurrentPinballGame->unk5F4 = 0; - gCurrentPinballGame->unk25 = 4; - if (gMain.selectedField == FIELD_RUBY) - sub_1A98C(); - else - sub_32914(); - - gCurrentPinballGame->unk22 = 7; - gCurrentPinballGame->ball->scale = 0x80; - } - } -} - -u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { - struct UnkPinballGame13BC* unk13BC; - u16 res; - int new_var; - unsigned short ix; - - res = 0; - - ix = (r0.y * 96) + r0.x; - unk13BC = &gCurrentPinballGame->unk13BC[r3]; - - unk13BC->unk5 = gUnknown_086ACDB8[r1 + (unk13BC->unk2 * 5)]; - - if (0xF & (&gUnknown_02031520.unk68[unk13BC->unk5 * 0x2400])[ix]) - { - *r2 = 0xFFF0 & (&gUnknown_02031520.unk68[unk13BC->unk5 * 0x2400])[ix]; - if (r3 == 1) - { - new_var = 0x8000; - *r2 = new_var - (*r2); - } - res = 1; - } - - return res; -} - -void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3) -{ - u16 angle; - - angle = gCurrentPinballGame->unk13BC[arg1].unk5; - - if (gCurrentPinballGame->unk13BC[arg1].unk8 > 0) - { - if (gCurrentPinballGame->unk5C == 0) - { - u16 var0; - s32 scale; - s16 temp_r2; - s16 temp_r5; - - temp_r2 = gCurrentPinballGame->unk13BC[arg1].unk5; - temp_r5 = (temp_r2 - 2) * 25; - arg0 -= temp_r5; - - if (arg0 < 2850) - { - var0 = 0x4800 - (arg0 - 2600) * 2048 / 600; - scale = (arg0 - 2600) * 128 / 300 + 120; - } - else - { - var0 = - gUnknown_086ACE2C[temp_r2][0] - - ((gUnknown_086ACE2C[temp_r2][1] * (arg0 -2600)) / 5400); - scale = ((arg0 -2600) * 348 / 5400) + 406; - } - - if (arg1) - var0 = 0x8000 - var0; - - angle = (gCurrentPinballGame->ball->velocity.x * -0x600) / 0x80 + - (gCurrentPinballGame->ball->unk8 * -0x180) / 0x100 + - var0; - gCurrentPinballGame->unk60.x = scale * Cos(angle) / 20000; - gCurrentPinballGame->unk60.y = -scale * Sin(angle) / 20000; - } - - gCurrentPinballGame->unk5C = 1; - - if (arg1) - arg2->x = -gCurrentPinballGame->unk60.x; - else - arg2->x = gCurrentPinballGame->unk60.x; - - arg2->y = gCurrentPinballGame->unk60.y; - } - else - { - struct Vector16 vec1; - s32 scale; - u16 angle2; - - scale = arg0 / 20; - vec1.x = scale * Cos(arg3) / 20000; - vec1.y = -(scale * Sin(arg3)) / 20000; - - arg2->x = vec1.x + arg2->x * 3 / 2; - arg2->y = vec1.y + arg2->y * 3 / 2; - - angle2 = ArcTan2(arg2->x, -arg2->y); - arg2->x = scale * Cos(angle2) / 20000; - arg2->y = -scale * Sin(angle2) / 20000; - } -} - -s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { - struct Vector16 vec1; - struct Vector16 vec2; - u16 sp00; - u8 sp02; - u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; - - u32 some_enum; - u32 switch_enum; - - return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; - - vec1.x = arg0->x / 8; - vec1.y = arg0->y / 8; - vec2.x = arg0->x % 8; - vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; - vec1.y %= 64; - - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; - sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; - - sub_15054(arg0, &sp00, &sp02); - - switch_enum = sp02 & 0xF; - some_enum = sp02 >> 4; - - switch (switch_enum-1) { - case 0: - case 3: - case 5: - gCurrentPinballGame->unk23 = (switch_enum - 1); - gCurrentPinballGame->unk22 = 1; - *arg1 = sp00; - - if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) - { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) - { - - if (gCurrentPinballGame->ball->unk6 > 0) - { - *arg1 = 0x3E00; - } - else if (gCurrentPinballGame->ball->unk6 != 0) - { - *arg1 = 0x4100; - } - else - { - if (gMain.systemFrameCount & 1) - { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; - *arg1 = 0x3E00; - } - else - { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; - *arg1 = 0x4100; - } - } - } - } - return_val = 1; - break; - case 1: - case 2: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; - *arg1 = sp00 & 0x0000FFF0; - return_val = 1; - - break; - case 4: - gCurrentPinballGame->unk2A2 = 2; - gCurrentPinballGame->unk1F = 1; - some_enum = 0; - break; - } - sub_153CC((s32) some_enum, &return_val, arg1); - - return return_val; -} - - -void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2) -{ - s16 deltaX; - s16 deltaY; - u16 maskedResult; - u8 lowerNibble; - s32 ix; - - maskedResult = 0; - lowerNibble = 0; - ix = 0; - - if (gCurrentPinballGame->unk5B2 == 0) - { - if (gCurrentPinballGame->unk24 != 0) - return; - - if (gCurrentPinballGame->unk2A4 != 0) - { - if (gCurrentPinballGame->unk2A3 == 0) - return; - - deltaX = arg0->x + gCurrentPinballGame->unk184[0].x; - deltaY = arg0->y + gCurrentPinballGame->unk184[0].y; - - if (deltaX > 79U) - return; - - if (deltaY > 87U) - return; - - maskedResult = 0xFFF0 & gUnknown_08259C10[(deltaY * 80) + deltaX]; - lowerNibble = 0xF & gUnknown_08259C10[(deltaY * 80) + deltaX]; - - if (lowerNibble == 0) - return; - - *arg1 = maskedResult; - - if (gCurrentPinballGame->unk2A2 <= 1) - { - *arg2 = lowerNibble; - gCurrentPinballGame->unk2A2 = 7; - return; - } - - *arg2 = 1; - return; - } - - if (0xF & *arg2) - return; - - deltaX = arg0->x + (u16) gCurrentPinballGame->unk184[0].x; - deltaY = arg0->y + (u16) gCurrentPinballGame->unk184[0].y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - - if (lowerNibble != 0) - ix = 0; - } - - if (lowerNibble == 0) - { - deltaX = gCurrentPinballGame->unk184[1].x + arg0->x; - deltaY = gCurrentPinballGame->unk184[1].y + arg0->y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - if (lowerNibble != 0) - ix = 1; - } - - if (lowerNibble == 0) - { - deltaX = gCurrentPinballGame->unk184[2].x + arg0->x; - deltaY = gCurrentPinballGame->unk184[2].y + arg0->y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - - if (lowerNibble == 0) - return; - - ix = 2; - } - - if (lowerNibble == 0) - return; - } - } - - if (gCurrentPinballGame->unk16F == 0) - gCurrentPinballGame->unk170[ix] = 107; - - *arg1 = maskedResult; - *arg2 = lowerNibble; - - if (gCurrentPinballGame->unk624 > 0) - return; - - gCurrentPinballGame->unk624 = 2; - } - else - { - if ((*arg2 & 0xF) == 0) - { - if (gCurrentPinballGame->unk2E5[0] > 0) - { - s16 deltaY_alt; - deltaX = 2 * (-24 -gCurrentPinballGame->unk2EC[0]) + arg0->x; - deltaY_alt = arg0->y -580; - - if (deltaX <= 71U && deltaY_alt <= 71U) - { - *arg1 = 0xFFF0 & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; - *arg2 = 0xF & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; - - if (*arg2 & 1) - { - gCurrentPinballGame->unk2E2 = 1; - *arg2 = 6; - } - } - } - - if (gCurrentPinballGame->unk2E5[1] > 0) - { - deltaX = ((gCurrentPinballGame->unk2EC[1] - 180) * 2) + arg0->x; - deltaY = arg0->y -580; - - if (deltaX <= 71U && deltaY <= 71U) - { - *arg1 = 0xFFF0 & gUnknown_08257390[(deltaY * 72) + deltaX]; - *arg2 = 0xF & gUnknown_08257390[(deltaY * 72) + deltaX]; - - if (*arg2 & 1) - { - gCurrentPinballGame->unk2E2 = 2; - *arg2 = 6; - return; - } - } - } - } - } -} - -void sub_153CC(s32 arg0, s16* arg1, u16* arg2) -{ - s16 absVelY; - - switch ((u8)arg0 - 1) - { - case 0: - if (gCurrentPinballGame->unk26 == 0) - { - if (gCurrentPinballGame->ball->positionQ1.x > 359) - { - if (gCurrentPinballGame->ball->positionQ1.y > 199) - gCurrentPinballGame->unk25 = 1; - else - gCurrentPinballGame->unk25 = 3; - } - else - gCurrentPinballGame->unk25= 2; - - sub_1A98C(); - gCurrentPinballGame->unk22 = 7; - *arg1 = 1; - return; - } - default: - return; - case 1: - if (gCurrentPinballGame->unk24 == 0) - { - gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; - break; - } - - if (gCurrentPinballGame->unk24 == 2) - { - gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 3; - } - - break; - case 2: - if (gCurrentPinballGame->unk24 == 2) - { - gCurrentPinballGame->ball->oamPriority = 3; - gCurrentPinballGame->unk24 = 0; - } - else if (gCurrentPinballGame->unk24 == 3) - { - gCurrentPinballGame->ball->oamPriority = 2; - gCurrentPinballGame->unk24 = 2; - } - - if (gCurrentPinballGame->unk2FB == 6) - gCurrentPinballGame->unk2FB = 7; - - if (gCurrentPinballGame->unk2F0 & 0xF0 ) - gCurrentPinballGame->unk2F0 = 0; - - if (gCurrentPinballGame->unk1AB & 0xF0) - gCurrentPinballGame->unk1AB = 0; - - break; - case 3: - if (gCurrentPinballGame->unk600 == 0) - { - if (gCurrentPinballGame->ball->positionQ0.x > 131) - { - gCurrentPinballGame->scoreAddedInFrame = 1000; - - if (gCurrentPinballGame->unk70E <= 98) - gCurrentPinballGame->unk70E++; - } - else if (gCurrentPinballGame->ball->positionQ0.x > 91) - { - gCurrentPinballGame->scoreAddedInFrame = 2000; - gCurrentPinballGame->unk174 = 0; - gCurrentPinballGame->unk16F = 1; - } - else - { - gCurrentPinballGame->scoreAddedInFrame = 1000; - - if (gCurrentPinballGame->unk2B2 == 0) - { - gCurrentPinballGame->unk2B2 = 1; - gCurrentPinballGame->unk2B0 = 0; - } - } - gCurrentPinballGame->unk600 = 45; - - m4aSongNumStart(SE_UNKNOWN_0x76); - } - break; - case 4: - gCurrentPinballGame->unk20 = 1; - gCurrentPinballGame->unk165 = 1; - gCurrentPinballGame->unk732 = 0; - return; - case 5: - if (gCurrentPinballGame->unk5B2 == 0) - { - sub_46FD4(1); - gCurrentPinballGame->unk29E = 1; - } - break; - case 6: - if (gCurrentPinballGame->ball->positionQ0.x < 50) - { - if (gCurrentPinballGame->unk2FA == 0) - { - gCurrentPinballGame->unk2FA = 1; - gCurrentPinballGame->unk2FB = 1; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xB000; - *arg1 = 1; - } - } - else if (gCurrentPinballGame->unk2FA == 1) - { - gCurrentPinballGame->unk2FA = 2; - gCurrentPinballGame->unk2FB = 3; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xA000; - *arg1 = 1; - gCurrentPinballGame->ball->velocity.x = 0; - gCurrentPinballGame->ball->velocity.y = 0; - - memcpy(&gCurrentPinballGame->unk1334[1], gCurrentPinballGame->unk1334, 0x44U); - - gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; - gCurrentPinballGame->unk1328 = 120; - } - - gCurrentPinballGame->unk732 = 14; - return; - case 7: - if (gCurrentPinballGame->ball->positionQ0.x <= 50) - { - if (gCurrentPinballGame->unk732 == 8) - { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72E <= 2) - { - if (gCurrentPinballGame->unk72E == 0) - gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72E == 1) - gCurrentPinballGame->scoreAddedInFrame = 5000; - else - gCurrentPinballGame->scoreAddedInFrame = 10000; - - gCurrentPinballGame->unk72E++; - - m4aSongNumStart(SE_UNKNOWN_0x99); - } - - gCurrentPinballGame->unk6BC = 1; - } - gCurrentPinballGame->unk732 = 2; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 100) - { - if (gCurrentPinballGame->unk732 == 7) - { - gCurrentPinballGame->unk194 = 10; - - if(gCurrentPinballGame->unk72B <= 2) - { - if(gCurrentPinballGame->unk72B == 0) - { - gCurrentPinballGame->scoreAddedInFrame = 2000; - gCurrentPinballGame->unk194 = 1; - } - else if(gCurrentPinballGame->unk72B == 1) - { - gCurrentPinballGame->scoreAddedInFrame = 5000; - gCurrentPinballGame->unk194 = 5; - } - else - { - gCurrentPinballGame->scoreAddedInFrame = 10000; - gCurrentPinballGame->unk194 = 10; - } - gCurrentPinballGame->unk72B++; - } - - gCurrentPinballGame->unk196 = 0; - gCurrentPinballGame->unk72C = 0; - } - - gCurrentPinballGame->unk732 = 1; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 126) - { - if (gCurrentPinballGame->ballPowerUpLight[0] == 0) - gCurrentPinballGame->scoreAddedInFrame = 1000; - - gCurrentPinballGame->ballPowerUpLight[0] = 1; - gCurrentPinballGame->unk732 = 3; - - if (gCurrentPinballGame->unk71B == 0) - { - if (!(gCurrentPinballGame->ballPowerUpLight[1] & - gCurrentPinballGame->ballPowerUpLight[2])) - return; - - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - } - else - { - if (gCurrentPinballGame->ball->positionQ0.x <= 148) - { - if (gCurrentPinballGame->ballPowerUpLight[1] == 0) - gCurrentPinballGame->scoreAddedInFrame = 1000; - - gCurrentPinballGame->ballPowerUpLight[1] = 1; - gCurrentPinballGame->unk732 = 4; - - if (gCurrentPinballGame->unk71B != 0) - return; - - if (!(gCurrentPinballGame->ballPowerUpLight[0] & - gCurrentPinballGame->ballPowerUpLight[2])) - return; - - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 172) - { - if (gCurrentPinballGame->ballPowerUpLight[2] == 0) - gCurrentPinballGame->scoreAddedInFrame = 1000; - - gCurrentPinballGame->ballPowerUpLight[2] = 1; - gCurrentPinballGame->unk732 = 5; - - if (gCurrentPinballGame->unk71B != 0) - return; - - if (!(gCurrentPinballGame->ballPowerUpLight[0] & - gCurrentPinballGame->ballPowerUpLight[1])) - return; - - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - - if (gCurrentPinballGame->unk732 == 9) - { - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F <= 2) - { - if (gCurrentPinballGame->unk72F == 0) - gCurrentPinballGame->scoreAddedInFrame = 2000; - else if (gCurrentPinballGame->unk72F == 1) - gCurrentPinballGame->scoreAddedInFrame = 5000; - else - gCurrentPinballGame->scoreAddedInFrame = 10000; - - gCurrentPinballGame->unk72F++; - - MPlayStart(&gMPlayInfo_SE1, &gUnknown_0869FC0C); - - if (gCurrentPinballGame->unk72F > 1) - gCurrentPinballGame->unk731 = 1; - } - - gCurrentPinballGame->unk6BC = 2; - } - - gCurrentPinballGame->unk732 = 6; - return; - } - break; - case 8: - if (gCurrentPinballGame->ball->positionQ0.x <= 50) - { - gCurrentPinballGame->unk732 = 8; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 100) - { - gCurrentPinballGame->unk732 = 7; - return; - } - - gCurrentPinballGame->unk732 = 9; - return; - case 9: - if (gCurrentPinballGame->ball->positionQ0.x <= 46) - { - gCurrentPinballGame->unk732 = 10; - - if (gCurrentPinballGame->holeIndicators[0] != 0) - return; - - gCurrentPinballGame->scoreAddedInFrame = 1000; - gCurrentPinballGame->holeIndicators[0] = 1; - - if (gCurrentPinballGame->unk714 != 0) - return; - - if (!(gCurrentPinballGame->holeIndicators[1] & - gCurrentPinballGame->holeIndicators[2] & - gCurrentPinballGame->holeIndicators[3])) - return; - - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 120) - { - gCurrentPinballGame->unk732 = 11; - - if (gCurrentPinballGame->holeIndicators[1] != 0) - return; - - gCurrentPinballGame->scoreAddedInFrame = 1000; - gCurrentPinballGame->holeIndicators[1] = 1; - - if (gCurrentPinballGame->unk714 != 0) - return; - - if (!(gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[2] & - gCurrentPinballGame->holeIndicators[3])) - return; - - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - - if (gCurrentPinballGame->ball->positionQ0.x <= 193) - { - gCurrentPinballGame->unk732 = 12; - - if (gCurrentPinballGame->holeIndicators[2] != 0) - return; - - gCurrentPinballGame->scoreAddedInFrame = 1000; - gCurrentPinballGame->holeIndicators[2] = 1; - - if (gCurrentPinballGame->unk714 != 0) - return; - - if (!(gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[1] & - gCurrentPinballGame->holeIndicators[3])) - return; - - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - } - - gCurrentPinballGame->unk732 = 13; - - if (gCurrentPinballGame->holeIndicators[3] != 0) - return; - - gCurrentPinballGame->scoreAddedInFrame = 1000; - gCurrentPinballGame->holeIndicators[3] = 1; - - if (gCurrentPinballGame->unk714 != 0) - return; - - if (!(gCurrentPinballGame->holeIndicators[0] & - gCurrentPinballGame->holeIndicators[1] & - gCurrentPinballGame->holeIndicators[2])) - return; - - gCurrentPinballGame->unk714 = 1; - gCurrentPinballGame->unk715 = 126; - gCurrentPinballGame->scoreAddedInFrame = 4000; - return; - case 10: - if (gCurrentPinballGame->unk5B2 == 0) - { - if (gCurrentPinballGame->ball->positionQ0.x > 170) - { - if (gCurrentPinballGame->unk2F0 > 2U) - return; - - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xB000; - *arg1 = 1; - - if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk1AB <= 2) - { - gCurrentPinballGame->unk1AB = 3; - gCurrentPinballGame->unk2F2 = 5; - } - - gCurrentPinballGame->scoreAddedInFrame = 50000; - return; - } - - if (gCurrentPinballGame->unk2FB <= 4) - { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xF800; - *arg1 = 1; - } - - if (gCurrentPinballGame->unk2FB == 5) - gCurrentPinballGame->unk2FB = 6; - - if (gCurrentPinballGame->unk29F == 0) - return; - - if (gCurrentPinballGame->unk29F == 1) - gCurrentPinballGame->unk286 = 90; - else - { - gCurrentPinballGame->unk2F8 = 1; - gCurrentPinballGame->unk71B = 1; - gCurrentPinballGame->unk71C = 60; - m4aSongNumStart(SE_UNKNOWN_0xD8); - } - - gCurrentPinballGame->unk29F = 0; - gCurrentPinballGame->unk2A0 = 600; - return; - } - - if (gCurrentPinballGame->unk1C4 != 0) - return; - - if (gCurrentPinballGame->ball->positionQ0.x <= 120) - gCurrentPinballGame->unk1C2 = 1; - else - gCurrentPinballGame->unk1C2 = 2; - - if (gCurrentPinballGame->outLanePikaPosition <= 1) - { - if (gCurrentPinballGame->outLanePikaPosition != gCurrentPinballGame->unk1C2 - 1) - return; - else - gCurrentPinballGame->unk1C4 = 120; - return; - } - - gCurrentPinballGame->unk1C4 = 120; - return; - - case 11: - if (gCurrentPinballGame->unk616 != 0) - return; - - absVelY = gCurrentPinballGame->ball->velocity.y; - gCurrentPinballGame->unk614 = gCurrentPinballGame->ball->velocity.y; - - if (absVelY < 0) { - absVelY = -absVelY; - } - - gCurrentPinballGame->unk1C6 += (absVelY) / 3; - - if (gCurrentPinballGame->unk1C6 > 168) - gCurrentPinballGame->unk1C6 = 168; - - gCurrentPinballGame->unk616 = 20; - return; - case 12: - if (gCurrentPinballGame->unk2D8 == 0) - return; - - if (gCurrentPinballGame->unk26 != 0) - return; - - if (gCurrentPinballGame->unk2DA != 0) - return; - - gCurrentPinballGame->unk2DA++; - - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - - *arg2 = 0xD000; - *arg1 = 1; - gCurrentPinballGame->scoreAddedInFrame = 5000; - m4aSongNumStart(SE_UNKNOWN_0xB7); - sub_11B0(7); - return; - case 13: - if (gCurrentPinballGame->unk2D8 == 0) - return; - - if (gCurrentPinballGame->unk26 != 0) - return; - - if (gCurrentPinballGame->unk2DA != 1) - return; - - gCurrentPinballGame->unk2DA++; - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xCC00; - *arg1 = 1; - - m4aSongNumStart(SE_UNKNOWN_0xB7); - gCurrentPinballGame->scoreAddedInFrame = 5000; - sub_11B0(7); - return; - case 14: - if ((gCurrentPinballGame->unk13 > 2) && (gCurrentPinballGame->unk13 != 5)) - { - if (gCurrentPinballGame->unk2E0 == 0) - { - if (gCurrentPinballGame->unk2DA == 2) - { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xC800; - *arg1 = 1; - gCurrentPinballGame->unk2DA++; - - m4aSongNumStart(SE_UNKNOWN_0xB7); - gCurrentPinballGame->scoreAddedInFrame = 5000; - sub_11B0(7); - return; - } - else if (gCurrentPinballGame->unk2DA == 3) - { - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xC800; - *arg1 = 1; - - m4aSongNumStart(SE_UNKNOWN_0xB7); - gCurrentPinballGame->unk2D9 = 1; - sub_11B0(7); - return; - } - } - } - else if (gCurrentPinballGame->unk2D8 != 0 && gCurrentPinballGame->unk2DA == 2) - { - gCurrentPinballGame->unk2DA++; - gCurrentPinballGame->unk2D8 = 0; - gCurrentPinballGame->unk23 = 0; - gCurrentPinballGame->unk22 = 2; - *arg2 = 0xC800; - *arg1 = 1; - - m4aSongNumStart(SE_UNKNOWN_0xB7); - gCurrentPinballGame->scoreAddedInFrame = 5000; - sub_11B0(7); - } - - break; - } -} - - -s16 COLLISION_CHECK_SAPPHIRE_16090(struct Vector16 *arg0, u16* arg1) { - struct Vector16 vec1; - struct Vector16 vec2; - u16 sp00; - u8 sp02; - u16 return_val; - s16 unk0; - s32 unk1; - s32 unk2; - - u32 some_enum; - u8 switch_enum; - - return_val = 0; - gCurrentPinballGame->ball->unk4 = 0; - - vec1.x = arg0->x / 8; - vec1.y = arg0->y / 8; - vec2.x = arg0->x % 8; - vec2.y = arg0->y % 8; - unk1 = vec1.y / 64; - unk2 = gCurrentPinballGame->unk24; - vec1.y %= 64; - - unk0 = gUnknown_02031520.unk14.unk38[unk2 + unk1][vec1.y * 64 + vec1.x]; - sp00 = gUnknown_02031520.unk14.unk48[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; - sp02 = gUnknown_02031520.unk14.unk58[unk2 + unk1][unk0 * 64 + vec2.y * 8 + vec2.x]; - - sub_162B8(arg0, &sp00, &sp02); - - switch_enum = sp02 & 0xF; - some_enum = sp02 >> 4; - - switch (switch_enum) - { - case 1: - case 4: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 1; - *arg1 = sp00; - if (*arg1 >= 0x3FF0 && *arg1 <= 0x4010) - { - if (gCurrentPinballGame->ball->positionQ0.x < gUnknown_02031520.unk14.unk26 - 8 || - gCurrentPinballGame->ball->positionQ0.y < gUnknown_02031520.unk14.unk28 - 8) - { - - if (gCurrentPinballGame->ball->unk6 > 0) - { - *arg1 = 0x3E00; - } - else if (gCurrentPinballGame->ball->unk6 != 0) - { - *arg1 = 0x4100; - } - else - { - if (gMain.systemFrameCount & 1) - { - gCurrentPinballGame->ball->unk4 = 0x28; - gCurrentPinballGame->ball->unk6 = 1; - *arg1 = 0x3E00; - } - else - { - gCurrentPinballGame->ball->unk4 = 0xFFD8; - gCurrentPinballGame->ball->unk6 = 0xFFFF; - *arg1 = 0x4100; - } - } - - } - } - return_val = 1; - break; - case 3: - case 2: - gCurrentPinballGame->unk23 = switch_enum - 1; - gCurrentPinballGame->unk22 = 2; - *arg1 = sp00 & 0x0000FFF0; - return_val = 1; - break; - } - - sub_1642C((s32) some_enum, &return_val, arg1); - return return_val; -} - -void sub_162B8(struct Vector16 *arg0, s16 *arg1, u8 *arg2) { - - s16 deltaX; - s16 deltaY; - u16 maskedResult = 0; - u8 lowerNibble = 0; - s32 ix = 0; - - if (gCurrentPinballGame->unk5B2 == 0) - { - if (gCurrentPinballGame->unk24 != 0) - return; - - deltaX = arg0->x + gCurrentPinballGame->unk184[0].x; - deltaY = arg0->y + gCurrentPinballGame->unk184[0].y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - ix = 0; - } - if (lowerNibble == 0) - { - deltaX = gCurrentPinballGame->unk184[1].x + arg0->x; - deltaY = gCurrentPinballGame->unk184[1].y + arg0->y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - ix = 1; - } - - if (lowerNibble == 0) - { - deltaX = gCurrentPinballGame->unk184[2].x + arg0->x; - deltaY = gCurrentPinballGame->unk184[2].y + arg0->y; - - if (deltaX <= 63U && deltaY <= 63U) - { - maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; - lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; - ix = 2; - } - - if (lowerNibble == 0) - return; - } - } - gCurrentPinballGame->unk170[ix] = 6; - - *arg1 = maskedResult; - *arg2 = lowerNibble; - - if (gCurrentPinballGame->unk624 <= 0) - gCurrentPinballGame->unk624 = 2; - } -} \ No newline at end of file diff --git a/src/rom_1A0F4.c b/src/rom_1A0F4.c index 2773005..21578fc 100644 --- a/src/rom_1A0F4.c +++ b/src/rom_1A0F4.c @@ -17,13 +17,13 @@ void sub_1A0F4(void) gCurrentPinballGame->unk5FA = 1; if (gCurrentPinballGame->unkEA != 0) { - gCurrentPinballGame->unkEA -= 1; + gCurrentPinballGame->unkEA--; } else if (gCurrentPinballGame->unkEE == 0) { if (gCurrentPinballGame->unkEC != 0) { - gCurrentPinballGame->unkEC -= 1; + gCurrentPinballGame->unkEC--; } else { @@ -42,7 +42,7 @@ void sub_1A0F4(void) } else if (gCurrentPinballGame->unkEC != 0) { - gCurrentPinballGame->unkEC -= 1; + gCurrentPinballGame->unkEC--; } else { @@ -204,7 +204,7 @@ void sub_1A2C0(void) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); gCurrentPinballGame->unk6F = 2; } } @@ -231,7 +231,7 @@ void sub_1A2C0(void) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); gCurrentPinballGame->unk6F = 1; } } @@ -269,7 +269,7 @@ void sub_1A2C0(void) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); gCurrentPinballGame->unk6F = 1; gCurrentPinballGame->unk70 = 1; } @@ -296,7 +296,7 @@ void sub_1A2C0(void) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, (void *)(OBJ_PLTT + 0x40), 0xE0); } - DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, (void *)(OBJ_PLTT + 0x140), 0x60); gCurrentPinballGame->unk6F = 0; gCurrentPinballGame->unk70 = 1; } diff --git a/src/rom_1A98C.c b/src/rom_1A98C.c index 20ae9d8..dfc2882 100644 --- a/src/rom_1A98C.c +++ b/src/rom_1A98C.c @@ -17,7 +17,7 @@ void sub_22D54(void); void sub_1A98C(void) -{ +{ if (gMain.unkF != 0) return; @@ -62,18 +62,18 @@ void sub_1A9E8(void) } } -void sub_1AA38(void) +void sub_1AA38(void) { if (gCurrentPinballGame->unk72F > 1) { sub_19B64(4); } - + gCurrentPinballGame->unk5FC = 0; gCurrentPinballGame->unk5FB = 0; gCurrentPinballGame->unk5FE = 0; gCurrentPinballGame->unk28 = 113; - + m4aSongNumStart(SE_UNKNOWN_0xCE); gCurrentPinballGame->scoreAddedInFrame = 50000; @@ -87,7 +87,7 @@ void sub_1AA38(void) * Note: this *does not* affect the start of the catch mode itself. * When this function is nulled out at sub_1A9E8, the banner *doesn't* show, and * the ball bounces off the sharpedo. However, the grid still shows a picked mon, -* and the mode otherwise works mostly normally, with the exception of affecting +* and the mode otherwise works mostly normally, with the exception of affecting * the 'tilt' behavior, and the colision with the cyndaquil pushback. */ void sub_1AAA0(void) @@ -95,11 +95,11 @@ void sub_1AAA0(void) if (gCurrentPinballGame->unk28) //Countdown timer; ball grabbed/held while banner shows { gCurrentPinballGame->unk28--; - if (gCurrentPinballGame->unk28 > 100) + if (gCurrentPinballGame->unk28 > 100) { gCurrentPinballGame->unk5F7 = 1; gCurrentPinballGame->unk1F = 1; - + gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->unk6 = 0; @@ -107,7 +107,7 @@ void sub_1AAA0(void) if (gCurrentPinballGame->unk28 > 108) { gCurrentPinballGame->unk5FA = 1; - + if (gCurrentPinballGame->unk28 > 110) { gCurrentPinballGame->ball->positionQ0.x = 195; @@ -120,7 +120,7 @@ void sub_1AAA0(void) } //Presumed controling either the message board 'state'/'tile' // or the sharpedo animation 'state'/tile. - gCurrentPinballGame->unk2F4 =6; + gCurrentPinballGame->unk2F4 =6; } else if (gCurrentPinballGame->unk28 > 104) { @@ -128,7 +128,7 @@ void sub_1AAA0(void) gCurrentPinballGame->ball->positionQ0.y = 219; gCurrentPinballGame->unk2F4 = 7; } - else + else { gCurrentPinballGame->ball->unk0 = 1; gCurrentPinballGame->unk2F4 = 8; @@ -177,14 +177,14 @@ void sub_1AAA0(void) gCurrentPinballGame->unk2F4 = 16; } } - else if (gCurrentPinballGame->unk28 > 18) + else if (gCurrentPinballGame->unk28 > 18) { gCurrentPinballGame->ball->positionQ0.x = 193; gCurrentPinballGame->ball->positionQ0.y = 226; gCurrentPinballGame->ball->unk0 = 0; gCurrentPinballGame->unk2F4 = 17; } - else if (gCurrentPinballGame->unk28 > 16) + else if (gCurrentPinballGame->unk28 > 16) { gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->unk5FE = 0; @@ -202,17 +202,17 @@ void sub_1AAA0(void) sub_11B0(7); } } - else if (gCurrentPinballGame->unk28 > 12) + else if (gCurrentPinballGame->unk28 > 12) { gCurrentPinballGame->ball->unk6 = 0; gCurrentPinballGame->unk2F4 = 19; } - else if (gCurrentPinballGame->unk28 > 8) + else if (gCurrentPinballGame->unk28 > 8) { gCurrentPinballGame->ball->unk6 = 0; gCurrentPinballGame->unk2F4 = 20; } - else if (gCurrentPinballGame->unk28 > 4) + else if (gCurrentPinballGame->unk28 > 4) { gCurrentPinballGame->ball->unk6 = 0; gCurrentPinballGame->unk2F4 = 21; @@ -227,7 +227,7 @@ void sub_1AAA0(void) gCurrentPinballGame->ball->prevPositionQ1 = gCurrentPinballGame->ball->positionQ1; gCurrentPinballGame->ball->positionQ8.x= gCurrentPinballGame->ball->positionQ0.x << 8; gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ0.y << 8; - + } else { @@ -355,7 +355,7 @@ void sub_1AFD4(void) { gCurrentPinballGame->ball->unk0 = 1; gCurrentPinballGame->unk1F = 1; - gCurrentPinballGame->unk28 = gCurrentPinballGame->unk28 - 1; + gCurrentPinballGame->unk28--; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ0.x = 0xDC; diff --git a/src/rom_201B8.c b/src/rom_201B8.c index 4302f0b..8da84b2 100644 --- a/src/rom_201B8.c +++ b/src/rom_201B8.c @@ -41,6 +41,13 @@ extern const s16 gUnknown_086AD79C[]; extern struct SongHeader gUnknown_0869F2A0; extern struct SongHeader gUnknown_0869F240; extern struct SongHeader gUnknown_086A0F30; +extern struct SongHeader gUnknown_086A2FA0; +extern struct SongHeader gUnknown_086A0328; +extern struct SongHeader gUnknown_086A0368; +extern s16 gUnknown_086ADF48[100]; +extern s16 gUnknown_086ADF8A[3]; +extern u16 gUnknown_086ADEE0[][2]; +extern s16 gUnknown_086B4922[][0xC]; void sub_1C7F4(s16 arg0, s16 arg1) @@ -882,7 +889,7 @@ void sub_1DDDC(void) if (gCurrentPinballGame->unk16C == var2) gCurrentPinballGame->unk16C = ((gMain.systemFrameCount + 1) % 6) + 1; else - gCurrentPinballGame->unk16C = var2; + gCurrentPinballGame->unk16C = var2; } if (gCurrentPinballGame->unk162) @@ -926,7 +933,7 @@ void sub_1DDDC(void) if (gCurrentPinballGame->unk174 == 130) m4aSongNumStart(SE_UNKNOWN_0xC8); break; - case 4: + case 4: if (gCurrentPinballGame->unk174 == 102) m4aSongNumStart(SE_UNKNOWN_0xC8); if (gCurrentPinballGame->unk174 == 118) @@ -934,7 +941,7 @@ void sub_1DDDC(void) if (gCurrentPinballGame->unk174 == 134) m4aSongNumStart(SE_UNKNOWN_0xC8); break; - case 5: + case 5: if (gCurrentPinballGame->unk174 == 104) m4aSongNumStart(SE_UNKNOWN_0xC8); break; @@ -1176,7 +1183,7 @@ void sub_1EC48(void) gCurrentPinballGame->unk184[i].y = (-(gCurrentPinballGame->unk178[i].y / 10) + 7) * 2; if (group->baseY < -40) group->baseY = -40; - + for (j = 0; j < 2; j++) { oamSimple = &group->oam[j + i * 2]; @@ -1831,3 +1838,308 @@ void sub_201B8(void) } } } + +void sub_203CC(void) +{ + s16 i; + s16 j; + s16 r5; + s16 tempY; + struct SpriteGroup *spriteGroup; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + + sub_20EC0(); + + if (gCurrentPinballGame->unk1C6 > 167) + { + gCurrentPinballGame->unk744[0] = gUnknown_086ADF48[(gMain.fieldFrameCount % 160) / 5]; + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0] + 6; + else + gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0]; + } + else + { + gCurrentPinballGame->unk744[0] = (gMain.fieldFrameCount % 50) / 25; + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0] + 9; + else + gCurrentPinballGame->unk744[1] = gCurrentPinballGame->unk744[0]; + } + + if (gCurrentPinballGame->outLanePikaPosition == 2) + { + gCurrentPinballGame->unk1E3[0] = 1; + gCurrentPinballGame->unk1E3[1] = 1; + } + else + { + gCurrentPinballGame->unk1E3[0 + gCurrentPinballGame->outLanePikaPosition] = 1; + gCurrentPinballGame->unk1E3[1 - gCurrentPinballGame->outLanePikaPosition] = 0; + } + + if (gCurrentPinballGame->unk1C4 != 0) + { + if (gCurrentPinballGame->unk1C4 == 120) + { + // gCurrentPinballGame->unk1C2 + gCurrentPinballGame->unk1E2 + // Note: this can be && chained off of the previous if, once we have this line deciphered. + if (gCurrentPinballGame->unk1E3[gCurrentPinballGame->unk1C2 - 1] != 0) + { + if (gCurrentPinballGame->unk1C6 > 167) + { + gCurrentPinballGame->unk1F = 1; + gCurrentPinballGame->unk61C = 1; + gCurrentPinballGame->unk1DE = 120; + gCurrentPinballGame->unk1E0 = 120; + gCurrentPinballGame->unk61E = gCurrentPinballGame->unk1DE; + gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->unk208 = 0; + gCurrentPinballGame->unk20A = 0; + + if (gCurrentPinballGame->outLanePikaPosition != 2) + { + gCurrentPinballGame->unk1C6 = 0; + gCurrentPinballGame->unk1C8 = 0; + gCurrentPinballGame->unk1CC = 0; + gCurrentPinballGame->unk1CA = 0; + gCurrentPinballGame->unk1D4 = 0; + gCurrentPinballGame->unk1D6 = -4; + gCurrentPinballGame->unk1D8 = 256; + gCurrentPinballGame->unk1DA = 256; + gCurrentPinballGame->unk1CE = 0; + gCurrentPinballGame->unk1D0 = 0; + } + + gCurrentPinballGame->unk620 = gCurrentPinballGame->ball->positionQ1; + gCurrentPinballGame->scoreAddedInFrame = 30000; + + if (gCurrentPinballGame->unk62E <= 98) + gCurrentPinballGame->unk62E++; + } + else + { + gCurrentPinballGame->unk1C4 = 60; + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2FA0); + } + + i = gCurrentPinballGame->unk1C2 - 1; + + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[i] = (i) * 7 + 2; + else + gCurrentPinballGame->unk744[i] = 2; + + DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + ((i) * 0x180), 0x180); + } + } + + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = (gCurrentPinballGame->unk1C2 - 1) * 7 + 2; + else + gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = 2; + + gCurrentPinballGame->unk1C4--; + } + + if (gCurrentPinballGame->unk61C != 0) + { + if (gCurrentPinballGame->unk61E > 1) + { + r5 = (gCurrentPinballGame->unk1DE * 0x10000) / 10; + gCurrentPinballGame->unk61E--; + if (gCurrentPinballGame->unk1DE != 0) + { + gCurrentPinballGame->unk1DE--; + if (gCurrentPinballGame->unk1DE == 40 && gCurrentPinballGame->unk61E > 40) + { + gCurrentPinballGame->unk1DE = 60; + } + } + if (gCurrentPinballGame->unk61E == 116) + { + if (gCurrentPinballGame->unkE4) + gCurrentPinballGame->unk61E = 120; + else + { + gCurrentPinballGame->unkE4 = 1; + if (gCurrentPinballGame->outLanePikaPosition == 2) + { + if (gCurrentPinballGame->unk1C2 == 1) + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A0328); + else + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A0368); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x40); + } + else + { + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A0328); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x40); + } + } + } + if (gCurrentPinballGame->unk61E == 115 && gCurrentPinballGame->unkE4 == 1) + m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, 0x200); + + gCurrentPinballGame->ball->positionQ1.x = + gCurrentPinballGame->unk620.x + ((Sin(r5) * 6) / 20000) + + ((gUnknown_086ADF8A[gCurrentPinballGame->unk1C2 - 1] * 2 - gCurrentPinballGame->unk620.x) * (gCurrentPinballGame->unk1E0 - gCurrentPinballGame->unk1DE)) / gCurrentPinballGame->unk1E0; + + tempY = ((gCurrentPinballGame->unk1E0 - gCurrentPinballGame->unk1DE) * 40) / gCurrentPinballGame->unk1E0; + gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->unk620.y - tempY; + + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128; + } + else if (gCurrentPinballGame->unk61E == 1) + { + gCurrentPinballGame->ball->positionQ1.x = gUnknown_086ADF8A[gCurrentPinballGame->unk1C2 - 1] * 2; + gCurrentPinballGame->ball->positionQ1.y = 702; + gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128; + gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128; + gCurrentPinballGame->ball->velocity.x = 0; + // fly me to the moon + gCurrentPinballGame->ball->velocity.y = -300; + m4aSongNumStart(SE_UNKNOWN_0x7C); + gCurrentPinballGame->unk61E = 0; + gCurrentPinballGame->unk1F = 0; + gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->holeIndicators[(gCurrentPinballGame->unk1C2 - 1) * 3] = 1; + + if (gCurrentPinballGame->unk714 == 0 && + (gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[3])) + { + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->scoreAddedInFrame = 4000; + } + + sub_11B0(11); + } + + if (gCurrentPinballGame->unk61E >= 100) + { + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = (gCurrentPinballGame->unk1C2 - 1) * 7 + 2; + else + gCurrentPinballGame->unk744[gCurrentPinballGame->unk1C2 - 1] = 2; + + if (gCurrentPinballGame->unk61E == 100) + { + gMain.unk44[38]->available = 1; + + if (gCurrentPinballGame->outLanePikaPosition == 2 && gCurrentPinballGame->unk1C2 == 2) + { + DmaCopy16(3, gUnknown_08395A4C, 0x06015800, 0x2400); + } + else + { + DmaCopy16(3, gUnknown_08397E6C, 0x06015800, 0x2400); + } + } + } + else + { + if (gUnknown_086ADEE0[gCurrentPinballGame->unk20A][1] > gCurrentPinballGame->unk208) + gCurrentPinballGame->unk208++; + else + { + gCurrentPinballGame->unk208 = 0; + gCurrentPinballGame->unk20A++; + + if (gCurrentPinballGame->unk20A == 23) + { + m4aSongNumStop(SE_UNKNOWN_0x7C); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + } + + if (gCurrentPinballGame->unk20A > 25) + { + gCurrentPinballGame->unk20A = 25; + gCurrentPinballGame->unk61C = 0; + gMain.unk44[38]->available = 0; + gCurrentPinballGame->unkE4 = 0; + + i = gCurrentPinballGame->unk1C2 - 1; + if (gCurrentPinballGame->outLanePikaPosition == 2) + gCurrentPinballGame->unk744[i] = i * 9; + else + gCurrentPinballGame->unk744[i] = 0; + + DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); + } + } + + if (gCurrentPinballGame->unk20A >= 17 && gCurrentPinballGame->unk20A <= 23) + { + if ((gMain.systemFrameCount & 3) >> 1) + gCurrentPinballGame->unk4C = -3; + else + gCurrentPinballGame->unk4C = 3; + } + + r5 = gUnknown_086ADEE0[gCurrentPinballGame->unk20A][0]; + i = gCurrentPinballGame->unk1C2 - 1; + + spriteGroup = gMain.unk44[38]; + spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->unk58 - 16); + if (gCurrentPinballGame->unk61C) + { + spriteGroup->baseY = 380 - gCurrentPinballGame->unk5A; + gCurrentPinballGame->unk1E3[i] = 0; + } + else + { + spriteGroup->baseY = 180; + gCurrentPinballGame->unk1E3[i] = 1; + } + + for (j = 0; j < 4; j++) + { + oamSimple = &spriteGroup->oam[j]; + dst = (u16 *)&gOamBuffer[oamSimple->oamId]; + *dst++ = gUnknown_086B4922[r5][j * 3 + 0]; + *dst++ = gUnknown_086B4922[r5][j * 3 + 1]; + *dst++ = gUnknown_086B4922[r5][j * 3 + 2]; + + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; + gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; + } + } + } + spriteGroup = gMain.unk44[29]; + + if (spriteGroup->available) + { + for (i = 0; i <= 1; i++) + { + spriteGroup = gMain.unk44[29 + i]; + spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->unk58 - 16); + if (gCurrentPinballGame->unk1E3[i]) + { + if ((gMain.fieldFrameCount % 5) == 0) + { + DmaCopy16(3, gUnknown_084C07EC + (gCurrentPinballGame->unk744[i] * 0x180), 0x06010480 + (i * 0x180), 0x180); + } + + tempY = 380 - gCurrentPinballGame->unk5A; + spriteGroup->baseY = tempY; + } + else + spriteGroup->baseY = 200; + + for (j = 0; j <= 1; j++) + { + oamSimple = &spriteGroup->oam[j]; + + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + spriteGroup->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + spriteGroup->baseY; + } + } + } +} diff --git a/src/rom_27E08.c b/src/rom_27E08.c index 7f48fad..4fe5b0f 100644 --- a/src/rom_27E08.c +++ b/src/rom_27E08.c @@ -590,7 +590,7 @@ void sub_21B0C(void) { DmaCopy16(3, gUnknown_084C00EC[gCurrentPinballGame->unk1CA], (void *)0x06010AE0, 0x80); gCurrentPinballGame->unk1CC = gCurrentPinballGame->unk1CA; - } + } } if (gCurrentPinballGame->unk1D0) @@ -1258,7 +1258,7 @@ void sub_23300(void) gCurrentPinballGame->unk210++; if (gCurrentPinballGame->unk210 < 156) { - + group = gMain.unk44[4]; for (i = 0; i < 10; i++) { @@ -2251,7 +2251,7 @@ void sub_253E0(void) { var1 = 0; } - + if (gCurrentPinballGame->unk6CC == 1) { m4aSongNumStart(SE_UNKNOWN_0x8C); @@ -2624,7 +2624,7 @@ void sub_260B8(void) } } - if (gCurrentPinballGame->unk6F4) + if (gCurrentPinballGame->unk6F4) { gCurrentPinballGame->unk6F4--; if (gMain.eReaderBonuses[EREADER_RUIN_AREA_CARD]) @@ -2938,7 +2938,7 @@ void sub_26A10(void) var0 = gCurrentPinballGame->unk34; if (gCurrentPinballGame->unk6BC == 1) gCurrentPinballGame->unk32 = gCurrentPinballGame->unk33; - else + else gCurrentPinballGame->unk32 = gCurrentPinballGame->unk34; gCurrentPinballGame->unk33 = (var0 + 1) % 6; @@ -3439,7 +3439,7 @@ void sub_278F4(void) if (squaredMagnitude < 82 && ((gCurrentPinballGame->unk24 == 0 && gCurrentPinballGame->unk25E <= 5) || (gCurrentPinballGame->unk24 == 2 && gCurrentPinballGame->unk25E > 5)) && gCurrentPinballGame->unk26B < 3) - { + { gCurrentPinballGame->scoreAddedInFrame = 10000; MPlayStart(&gMPlayInfo_SE1, &gUnknown_0869F618); gCurrentPinballGame->unk17 = 1; @@ -3522,7 +3522,7 @@ void sub_27E08(void) { gCurrentPinballGame->unk724 = 4200; } - gCurrentPinballGame->unk29A += 1; + gCurrentPinballGame->unk29A++; DmaCopy16(3, gUnknown_081C0064, (void *)PLTT + 0x180, 0x20); diff --git a/src/rom_27F94.c b/src/rom_27F94.c index f0497fc..1b4b388 100644 --- a/src/rom_27F94.c +++ b/src/rom_27F94.c @@ -15,15 +15,15 @@ extern u8 gUnknown_020315D0[]; extern const u8 gUnknown_0839C78C[]; extern const u8 gUnknown_0839DBAC[]; extern const u8 gUnknown_08137F14; -extern const u8 gUnknown_08138014[]; +extern const u8 gUnknown_08138014[]; extern const u8 gUnknown_081428D4[]; -extern const u16 gUnknown_081B0FE4[][0x30]; +extern const u16 gUnknown_081B0FE4[][0x30]; extern const u8 gUnknown_081C0064[]; extern const u8 gUnknown_0844AA0C[][0x480]; extern const u8 gUnknown_084C156C[]; -extern const s16 gUnknown_086ACF38[36]; +extern const s16 gUnknown_086ACF38[36]; extern const u8 gUnknown_086ACF80[]; -extern const s8 gUnknown_086ACFF4[]; +extern const s8 gUnknown_086ACFF4[]; extern u16 gUnknown_086AD180[][7]; extern const s16 gUnknown_086AD436[][2]; extern const struct Vector16 gUnknown_086AE124[]; @@ -1492,7 +1492,7 @@ void sub_2A354(void) } } -void sub_2AADC(void) +void sub_2AADC(void) { s16 i; s16 j; @@ -1503,118 +1503,118 @@ void sub_2AADC(void) struct OamDataSimple *oamSimple; u16 *dst; const u16 *src; - + if (gCurrentPinballGame->unk1E != 0) return; - + // Handle counter increment logic - if (gCurrentPinballGame->unk5A6 < gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) + if (gCurrentPinballGame->unk5A6 < gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) { gCurrentPinballGame->unk5A6++; - - if (gCurrentPinballGame->unk5A6 >= gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) + + if (gCurrentPinballGame->unk5A6 >= gUnknown_086ACF38[gCurrentPinballGame->unk5A8]) { gCurrentPinballGame->unk5A6 = 0; - + if (gCurrentPinballGame->unk5A8 <= 34) gCurrentPinballGame->unk5A8++; } } - - switch (gCurrentPinballGame->unk5A8) + + switch (gCurrentPinballGame->unk5A8) { case 0: gMain.blendControl = 0xCE; - - if (gMain.selectedField < MAIN_FIELD_COUNT && (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8)) + + if (gMain.selectedField < MAIN_FIELD_COUNT && (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8)) gCurrentPinballGame->unk294 = 1; - + gCurrentPinballGame->unk1F = 1; - + gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 4) / 5; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * 4) / 5; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; - + gCurrentPinballGame->unkE4 = 9; DmaCopy16(3, gUnknown_081428D4, 0x06015800, 0x1C00); DmaCopy16(3, &gUnknown_08138014[gCurrentPinballGame->ballUpgradeType << 9], 0x060164C0, 0x80); DmaCopy16(3, &gUnknown_08138014[((gCurrentPinballGame->ballUpgradeType * 8 + 4) << 6)], 0x06016760, 0x80); - + gCurrentPinballGame->unk5F7 = 1; - - if (gCurrentPinballGame->unk5A6 == 1) + + if (gCurrentPinballGame->unk5A6 == 1) { m4aMPlayStop(&gMPlayInfo_BGM); gCurrentPinballGame->unk71 = 1; } - + break; - + case 1: - if (gCurrentPinballGame->unk13 == 4) + if (gCurrentPinballGame->unk13 == 4) { gCurrentPinballGame->unk720 = 0; gCurrentPinballGame->unk71D[0] = 2; gCurrentPinballGame->unk71D[1] = 2; gCurrentPinballGame->unk71D[2] = 2; } - + gCurrentPinballGame->ball->oamPriority = 0; gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; - + if (gCurrentPinballGame->unk5A6 == 0) MPlayStart(&gMPlayInfo_SE1, &gUnknown_0869FCE4); - + break; - + case 2: //TODO: fakematch; unused i. Here for the +4 to parse correctly; DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); gMain.blendBrightness = 4; - - if (gCurrentPinballGame->unk5A6 > 1) + + if (gCurrentPinballGame->unk5A6 > 1) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], 0x05000200, 0x20); - + if (gMain.selectedField == FIELD_SAPPHIRE) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xC0); } else DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xE0); - + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, 0x05000340, 0x60); gCurrentPinballGame->unk6F = 1; gCurrentPinballGame->unk70 = 1; } break; - + case 3: gMain.blendBrightness = 7; - - if (gCurrentPinballGame->unk5A6 > 1) + + if (gCurrentPinballGame->unk5A6 > 1) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2], 0x05000200, 0x20); - - if (gMain.selectedField == FIELD_SAPPHIRE) + + if (gMain.selectedField == FIELD_SAPPHIRE) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, 0x05000240, 0xC0); - } - else + } + else DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x40, 0x05000240, 0xE0); - + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[2] + 0x140, 0x05000340, 0x60); gCurrentPinballGame->unk6F = 2; gCurrentPinballGame->unk70 = 1; } - + DmaCopy16(3, &gUnknown_08137F14, 0x05000220, 0x20); break; - + case 4: case 5: case 6: @@ -1623,83 +1623,83 @@ void sub_2AADC(void) case 9: case 10: temp_r3 = gCurrentPinballGame->unk5A8 - 4; - - if (temp_r3 == 0 || temp_r3 == 6) + + if (temp_r3 == 0 || temp_r3 == 6) { - if (gMain.selectedField <= 3 && + if (gMain.selectedField <= 3 && ( - (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || + (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3) )) { DmaCopy16(3, &gUnknown_02030710, 0x050003A0, 0x20); } - + DmaCopy16(3, &gUnknown_08137F14, 0x05000220, 0x20); gMain.blendBrightness = 6; - } - else + } + else { //TODO: fakematch; unused i. Here for the +4 to parse correctly; DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); gMain.blendBrightness = 7; } - + spriteGroup = gMain.unk44[3]; - - if (spriteGroup->available != 0) + + if (spriteGroup->available != 0) { spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; - - if (gCurrentPinballGame->unk13 == 5) + + if (gCurrentPinballGame->unk13 == 5) { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; gOamBuffer[oamSimple->oamId].priority = 0; } } - else + else { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; } } } - + gMain.unk44[3]->available = 1; - + if (gCurrentPinballGame->unk5A8 == 10 && gCurrentPinballGame->unk5A6 == 3) gMain.unk44[3]->available = 0; break; case 11: //TODO: fakematch; unused i. Here for the +4 to parse correctly; DmaCopy16(3, gUnknown_08137E14[i=gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); - + tempVector.x = (gCurrentPinballGame->unk288 << 8) - gCurrentPinballGame->ball->positionQ8.x; tempVector.y = (gCurrentPinballGame->unk28A << 8) - gCurrentPinballGame->ball->positionQ8.y; - + gCurrentPinballGame->unk5AC = (tempVector.x * tempVector.x) + (tempVector.y * tempVector.y); - + gCurrentPinballGame->unk5AC = Sqrt(gCurrentPinballGame->unk5AC * 4) / 2; gCurrentPinballGame->unk5B0 = ArcTan2(-tempVector.x, tempVector.y); - + if (gMain.selectedField > 3) { gCurrentPinballGame->unk389 = 0; @@ -1709,8 +1709,8 @@ void sub_2AADC(void) { DmaCopy16(3, &gUnknown_020306D0, 0x050003A0, 0x20); } - - for (i = 0; i < 4; i++) + + for (i = 0; i < 4; i++) { gCurrentPinballGame->ball->prevPositionsQ0[i].x = gCurrentPinballGame->ball->positionQ0.x; gCurrentPinballGame->ball->prevPositionsQ0[i].y = gCurrentPinballGame->ball->positionQ0.y; @@ -1720,10 +1720,10 @@ void sub_2AADC(void) temp_r0 = 99 - gCurrentPinballGame->unk5A6; gCurrentPinballGame->unk5B0 -= (temp_r0 * 0x2000) / 100 - 0x2000; gCurrentPinballGame->ball->unkA -= 0x2000; - + temp_r0 -= 20; - - if (temp_r0 < 0) + + if (temp_r0 < 0) { temp_r0 = 0; gCurrentPinballGame->ball->unk0 = 0; @@ -1731,39 +1731,39 @@ void sub_2AADC(void) { s32 var_3 = (gCurrentPinballGame->unk5AC * temp_r0) / 80; - - gCurrentPinballGame->ball->positionQ8.x = + + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk288 << 8) + Cos(gCurrentPinballGame->unk5B0) * var_3 / 20000; - gCurrentPinballGame->ball->positionQ8.y = + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unk28A << 8) - Sin(gCurrentPinballGame->unk5B0) * var_3 / 20000; } break; - + case 13: gCurrentPinballGame->ball->unk6 = 0; gCurrentPinballGame->unk71 = 0; gCurrentPinballGame->ball->unkA -= 0x2000; break; - + case 14: DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); gCurrentPinballGame->ball->unkA -= 0x2000; break; - + case 15: //TODO: fakematch; unused i. Here for the +4 to parse correctly; DmaCopy16(3, gUnknown_08137E14[i= gCurrentPinballGame->ballUpgradeType + 4], 0x05000220, 0x20); gCurrentPinballGame->ball->unkA -= 0x2000; break; - + case 16: if (gCurrentPinballGame->unk5A6 == 0) m4aSongNumStart(0x9B); - + DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); gCurrentPinballGame->ball->unkA = 0x7000; break; - + case 17: case 18: case 19: @@ -1776,79 +1776,79 @@ void sub_2AADC(void) case 27: case 28: spriteGroup = gMain.unk44[3]; - - if (spriteGroup->available != 0) + + if (spriteGroup->available != 0) { gCurrentPinballGame->ball->unk0 = 1; spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; temp_r3 = gUnknown_086ACFF4[gCurrentPinballGame->unk5A8 - 17] + 7; - - if (gCurrentPinballGame->unk13 == 5) + + if (gCurrentPinballGame->unk13 == 5) { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; gOamBuffer[oamSimple->oamId].priority = 0; } - } - else + } + else { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; } } } gMain.unk44[3]->available = 1; - - if (gCurrentPinballGame->unk5A8 == 18 || gCurrentPinballGame->unk5A8 == 20 || gCurrentPinballGame->unk5A8 == 21) + + if (gCurrentPinballGame->unk5A8 == 18 || gCurrentPinballGame->unk5A8 == 20 || gCurrentPinballGame->unk5A8 == 21) { gCurrentPinballGame->unk5A9 = 200; - + if (gMain.selectedField > 3) gCurrentPinballGame->unk389 = 1; else if ((gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) DmaCopy16(3, &gUnknown_020306F0, 0x050003A0, 0x20); } - else if (gCurrentPinballGame->unk5A8 == 19 || gCurrentPinballGame->unk5A8 == 22) + else if (gCurrentPinballGame->unk5A8 == 19 || gCurrentPinballGame->unk5A8 == 22) { if (gMain.selectedField > 3) gCurrentPinballGame->unk389 = 3; else if ((gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) || - (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) + (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3)) DmaCopy16(3, &gUnknown_02030730, 0x050003A0, 0x20); } - - if (gCurrentPinballGame->unk5A8 == 23) + + if (gCurrentPinballGame->unk5A8 == 23) { if (gMain.selectedField > 3) gCurrentPinballGame->unk389 = 10; - else + else { - if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) + if (gCurrentPinballGame->unk13 == 4 && gCurrentPinballGame->unk17 == 9) { sub_28E2C(); gCurrentPinballGame->unk5F2 = 0; m4aMPlayAllStop(); } - - if (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3) + + if (gCurrentPinballGame->unk13 == 8 && gCurrentPinballGame->unk17 == 3) { sub_292A0(); gCurrentPinballGame->unk5F2 = 0; @@ -1856,334 +1856,334 @@ void sub_2AADC(void) } } } - - if (gCurrentPinballGame->unk5A8 == 28) + + if (gCurrentPinballGame->unk5A8 == 28) { - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->unk5A6 == 0) { m4aMPlayAllStop(); sub_11B0(8); } - + if (gCurrentPinballGame->unk5A6 == 2) m4aSongNumStart(0x9C); } break; - + case 26: spriteGroup = gMain.unk44[3]; - - if (spriteGroup->available != 0) + + if (spriteGroup->available != 0) { spriteGroup->baseX = gCurrentPinballGame->ball->screenPosition.x; spriteGroup->baseY = gCurrentPinballGame->ball->screenPosition.y; - + temp_r3 = gUnknown_086ACFF4[gCurrentPinballGame->unk5A8 - 17] + 7; - - if (gCurrentPinballGame->unk13 == 5) + + if (gCurrentPinballGame->unk13 == 5) { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; gOamBuffer[oamSimple->oamId].priority = 0; } - } - else + } + else { - for (i = 0; i <= 15; i++) + for (i = 0; i <= 15; i++) { oamSimple = &spriteGroup->oam[i]; dst = (u16*)&gOamBuffer[oamSimple->oamId]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 0]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 1]; *dst++ = gUnknown_081B0FE4[temp_r3][i * 3 + 2]; - + gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX; gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY; } } } - + break; - + case 29: gMain.blendBrightness = 4; DmaCopy16(3, gUnknown_08137E14[gCurrentPinballGame->ballUpgradeType], 0x05000220, 0x20); - + spriteGroup = gMain.unk44[3]; - - if (spriteGroup->available != 0) + + if (spriteGroup->available != 0) { - for (i = 0; i <= 21; i++) + for (i = 0; i <= 21; i++) { oamSimple = &spriteGroup->oam[i]; gOamBuffer[oamSimple->oamId].y = 190; } } - + gMain.unk44[3]->available = 0; gCurrentPinballGame->ball->unk0 = 0; gCurrentPinballGame->ball->velocity.y = -256; gCurrentPinballGame->ball->velocity.x = 40; gCurrentPinballGame->ball->unk6 = 256; - + gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; gCurrentPinballGame->unkE4 = 0; - + break; - + case 30: - if (gCurrentPinballGame->unk5A6 <= 7) + if (gCurrentPinballGame->unk5A6 <= 7) { - if (gCurrentPinballGame->unk5A6 <= 3) + if (gCurrentPinballGame->unk5A6 <= 3) { - if (gCurrentPinballGame->unk5A6 == 0) + if (gCurrentPinballGame->unk5A6 == 0) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1], 0x05000200, 0x20); - - if (gMain.selectedField == FIELD_SAPPHIRE) + + if (gMain.selectedField == FIELD_SAPPHIRE) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xC0); - } + } else DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x40, 0x05000240, 0xE0); - + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[1] + 0x140, 0x05000340, 0x60); gCurrentPinballGame->unk6F = 1; gCurrentPinballGame->unk70 = 1; } - } - else + } + else { gMain.blendBrightness = 0; - - if (gCurrentPinballGame->unk5A6 > 4) + + if (gCurrentPinballGame->unk5A6 > 4) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0], 0x05000200, 0x20); - - if (gMain.selectedField == FIELD_SAPPHIRE) + + if (gMain.selectedField == FIELD_SAPPHIRE) { DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, 0x05000240, 0xC0); - } - else + } + else DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x40, 0x05000240, 0xE0); - + DmaCopy16(3, gUnknown_02031520.unk14.unk2C[0] + 0x140, 0x05000340, 0x60); - + gCurrentPinballGame->unk6F = 0; gCurrentPinballGame->unk70 = 1; } } } - - if (gCurrentPinballGame->unk13 == 5 || gCurrentPinballGame->unk13 == 8) + + if (gCurrentPinballGame->unk13 == 5 || gCurrentPinballGame->unk13 == 8) { gCurrentPinballGame->ball->velocity.y += 16; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; gCurrentPinballGame->ball->positionQ8.x += ((118 << 8) - gCurrentPinballGame->ball->positionQ8.x) / 30; - - if (gCurrentPinballGame->ball->positionQ8.y >= 314 << 8) + + if (gCurrentPinballGame->ball->positionQ8.y >= 314 << 8) { if (gCurrentPinballGame->ball->velocity.y > 49) m4aSongNumStart(0x9D); - + if (gCurrentPinballGame->ball->velocity.y <= -50) m4aSongNumStart(0x9D); - + gCurrentPinballGame->ball->positionQ8.y = 314 << 8; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * -45) / 100; gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 7) / 10; - - if (gCurrentPinballGame->ball->unk6 > 0) + + if (gCurrentPinballGame->ball->unk6 > 0) gCurrentPinballGame->ball->unk6 = -gCurrentPinballGame->ball->unk6; - + gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 7) / 10; - - if (gCurrentPinballGame->ball->velocity.x > 0) + + if (gCurrentPinballGame->ball->velocity.x > 0) gCurrentPinballGame->ball->velocity.x = -gCurrentPinballGame->ball->velocity.x; } { s16 var_4 = gCurrentPinballGame->ball->velocity.y; - - if (var_4 < 0) + + if (var_4 < 0) var_4 = -var_4; - + if (var_4 > 256) gCurrentPinballGame->unk5A6--; } - } - else + } + else { gCurrentPinballGame->ball->velocity.y += 16; gCurrentPinballGame->ball->positionQ8.y += gCurrentPinballGame->ball->velocity.y; gCurrentPinballGame->ball->positionQ8.x += gCurrentPinballGame->ball->velocity.x; - - if (gCurrentPinballGame->ball->positionQ8.y >= (gCurrentPinballGame->unk28A + 50) << 8) + + if (gCurrentPinballGame->ball->positionQ8.y >= (gCurrentPinballGame->unk28A + 50) << 8) { m4aSongNumStart(0x9D); gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unk28A + 50) << 8; gCurrentPinballGame->ball->velocity.y = (gCurrentPinballGame->ball->velocity.y * -45) / 100; gCurrentPinballGame->ball->unk6 = (gCurrentPinballGame->ball->unk6 * 7) / 10; - - if (gCurrentPinballGame->ball->unk6 > 0) + + if (gCurrentPinballGame->ball->unk6 > 0) gCurrentPinballGame->ball->unk6 = -gCurrentPinballGame->ball->unk6; - + gCurrentPinballGame->ball->velocity.x = (gCurrentPinballGame->ball->velocity.x * 7) / 10; - - if (gCurrentPinballGame->ball->velocity.x > 0) + + if (gCurrentPinballGame->ball->velocity.x > 0) gCurrentPinballGame->ball->velocity.x = -gCurrentPinballGame->ball->velocity.x; } } - + gCurrentPinballGame->unk5B0 = 0; break; - + case 31: gCurrentPinballGame->ball->velocity.x = 0; gCurrentPinballGame->ball->velocity.y = 0; gCurrentPinballGame->ball->unk6 = 0; break; - + case 32: temp_r0 = 237 - gCurrentPinballGame->unk5A6; - - if (temp_r0 <= 191) + + if (temp_r0 <= 191) { - if (temp_r0 > 183) + if (temp_r0 > 183) { if (temp_r0 == 185) sub_11B0(6); - + if (temp_r0 == 184) m4aSongNumStart(158); - + gCurrentPinballGame->ball->positionQ8.x -= 96; gCurrentPinballGame->ball->unkA -= 0x400; - } - else if (temp_r0 > 175) + } + else if (temp_r0 > 175) { gCurrentPinballGame->ball->positionQ8.x += 96; gCurrentPinballGame->ball->unkA += 0x400; - } - else if (temp_r0 > 167) + } + else if (temp_r0 > 167) { - if (temp_r0 == 169) + if (temp_r0 == 169) sub_11B0(6); - - if (temp_r0 == 168) + + if (temp_r0 == 168) m4aSongNumStart(0x9E); - + gCurrentPinballGame->ball->positionQ8.x -= 96; gCurrentPinballGame->ball->unkA -= 0x400; - } - else if (temp_r0 > 159) + } + else if (temp_r0 > 159) { gCurrentPinballGame->ball->positionQ8.x += 96; gCurrentPinballGame->ball->unkA += 0x400; - } - else if (temp_r0 <= 123) + } + else if (temp_r0 <= 123) { - if (temp_r0 > 115) + if (temp_r0 > 115) { if (temp_r0 == 117) sub_11B0(6); - + if (temp_r0 == 116) m4aSongNumStart(0x9E); - + gCurrentPinballGame->ball->positionQ8.x -= 96; gCurrentPinballGame->ball->unkA -= 0x400; - } - else if (temp_r0 > 107) + } + else if (temp_r0 > 107) { gCurrentPinballGame->ball->positionQ8.x += 96; gCurrentPinballGame->ball->unkA += 0x400; - } - else if (temp_r0 > 99) + } + else if (temp_r0 > 99) { - if (temp_r0 == 101) + if (temp_r0 == 101) sub_11B0(6); - - if (temp_r0 == 100) + + if (temp_r0 == 100) m4aSongNumStart(0x9E); - + gCurrentPinballGame->ball->positionQ8.x -= 96; gCurrentPinballGame->ball->unkA -= 0x400; - } - else if (temp_r0 > 91) + } + else if (temp_r0 > 91) { gCurrentPinballGame->ball->positionQ8.x += 96; gCurrentPinballGame->ball->unkA += 0x400; } } } - - if (temp_r0 == 0) + + if (temp_r0 == 0) { m4aSongNumStart(0x11); sub_2312C(); } - + break; - + case 33: gCurrentPinballGame->ball->oamPriority = 3; sub_23300(); - + if (gCurrentPinballGame->unk5A6 <= 229 && gCurrentPinballGame->unk210 == 150) gCurrentPinballGame->unk210--; - + if (gCurrentPinballGame->unk5A6 == 270 && gMain.selectedField < MAIN_FIELD_COUNT) { sub_1C7F4(0, 0); gCurrentPinballGame->unk6C4 = 0; } - - if (gCurrentPinballGame->unk5A6 <= 29) + + if (gCurrentPinballGame->unk5A6 <= 29) { gMain.unk2C = 1; temp_r0 = gCurrentPinballGame->unk5A6; gCurrentPinballGame->unk298 = temp_r0; - - for (j = 0; j <= temp_r0; j++) + + for (j = 0; j <= temp_r0; j++) { - for (i = 1; i <= 10; i++) + for (i = 1; i <= 10; i++) { gUnknown_03005C00[(i + 15) * 32 + j] = 0xC100; } } - + DmaCopy16(3, &gUnknown_03005C00, 0x06002000, 0x800); } - - if (gCurrentPinballGame->unk5A6 >= 240 && gCurrentPinballGame->unk5A6 <= 269) + + if (gCurrentPinballGame->unk5A6 >= 240 && gCurrentPinballGame->unk5A6 <= 269) { temp_r0 = gCurrentPinballGame->unk5A6 - 240; - - for (j = 0; j <= temp_r0; j++) + + for (j = 0; j <= temp_r0; j++) { - for (i = 1; i <= 10; i++) + for (i = 1; i <= 10; i++) { gUnknown_03005C00[(i + 15) * 32 + j] = 511; } } - + DmaCopy16(3, &gUnknown_03005C00, 0x06002000, 0x800); - - if (gCurrentPinballGame->unk5A6 == 269) + + if (gCurrentPinballGame->unk5A6 == 269) { gMain.unk2C = 0; - - if (gMain.selectedField < MAIN_FIELD_COUNT) + + if (gMain.selectedField < MAIN_FIELD_COUNT) { gMain.blendControl = 0; gMain.blendBrightness = 0; @@ -2194,10 +2194,10 @@ void sub_2AADC(void) if (gCurrentPinballGame->scoreCounterAnimationEnabled) gCurrentPinballGame->unk5A6 = 181; - - if (gCurrentPinballGame->unk5A6 == 180) + + if (gCurrentPinballGame->unk5A6 == 180) { - if (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8) + if (gCurrentPinballGame->unk13 == 4 || gCurrentPinballGame->unk13 == 8) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; @@ -2225,12 +2225,12 @@ void sub_2AADC(void) break; } } - - if (gCurrentPinballGame->unk13 == 5) + + if (gCurrentPinballGame->unk13 == 5) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; - if (gCurrentPinballGame->currentSpecies == 154) + if (gCurrentPinballGame->currentSpecies == SPECIES_PICHU) { gCurrentPinballGame->scoreAddStepSize = 140000; gCurrentPinballGame->scoreAddedInFrame = 10000000; @@ -2238,12 +2238,12 @@ void sub_2AADC(void) else gCurrentPinballGame->scoreAddedInFrame = 3000000; } - - if (gMain.selectedField > MAIN_FIELD_COUNT) + + if (gMain.selectedField > MAIN_FIELD_COUNT) { gCurrentPinballGame->scoreCounterAnimationEnabled = TRUE; - if (gMain.selectedField == FIELD_RAYQUAZA) + if (gMain.selectedField == FIELD_RAYQUAZA) { gCurrentPinballGame->scoreAddStepSize = 400000; gCurrentPinballGame->scoreAddedInFrame = 30000000; @@ -2255,31 +2255,31 @@ void sub_2AADC(void) } } } - + break; - + case 34: gCurrentPinballGame->unk5F7 = 0; gCurrentPinballGame->ball->oamPriority = 3; gCurrentPinballGame->unk5A4 = 0; gCurrentPinballGame->unk5A6 = 0; gCurrentPinballGame->unk5A8 = 0; - - if (gMain.selectedField < MAIN_FIELD_COUNT) + + if (gMain.selectedField < MAIN_FIELD_COUNT) { gCurrentPinballGame->unk1F = 0; gCurrentPinballGame->ball->velocity.y = -10; gCurrentPinballGame->ball->velocity.x = 20; - - for (i = 0; i <= 2; i++) + + for (i = 0; i <= 2; i++) { if (i < gCurrentPinballGame->unk723) gCurrentPinballGame->unk71D[i] = 1; else gCurrentPinballGame->unk71D[i] = 0; } - - if (gCurrentPinballGame->unk723 <= 2) + + if (gCurrentPinballGame->unk723 <= 2) { gCurrentPinballGame->unk721 = gCurrentPinballGame->unk723; gCurrentPinballGame->unk722 = gCurrentPinballGame->unk723; @@ -2287,26 +2287,26 @@ void sub_2AADC(void) gCurrentPinballGame->unk720 = 120; gCurrentPinballGame->unk723++; } - + gCurrentPinballGame->caughtMonCount++; - + if (gCurrentPinballGame->caughtMonCount == 15) gCurrentPinballGame->unk286 = 90; - + if (gCurrentPinballGame->unk62A <= 98) gCurrentPinballGame->unk62A++; - + if (gCurrentPinballGame->unk13 == 4) gCurrentPinballGame->unk17 = 10; - - if (gCurrentPinballGame->unk13 == 8) + + if (gCurrentPinballGame->unk13 == 8) gCurrentPinballGame->unk17 = 5; - + if (gCurrentPinballGame->unk13 == 5) gCurrentPinballGame->unk17 = 6; - - } - else + + } + else { gCurrentPinballGame->unk1F = 1; gCurrentPinballGame->ball->velocity.y = 0; @@ -2314,18 +2314,18 @@ void sub_2AADC(void) gCurrentPinballGame->unk6C4 = 3; gCurrentPinballGame->unk13 = 4; gCurrentPinballGame->caughtMonCount++; - + if (gCurrentPinballGame->caughtMonCount == 15) gCurrentPinballGame->unk286 = 91; } sub_31CF8(0); break; } - + gCurrentPinballGame->ball->prevPositionsQ0[0].x = gCurrentPinballGame->ball->positionQ0.x; gCurrentPinballGame->ball->prevPositionsQ0[0].y = gCurrentPinballGame->ball->positionQ0.y; - - for (i = 2; i >= 0; i--) + + for (i = 2; i >= 0; i--) { gCurrentPinballGame->ball->prevPositionsQ0[i + 1].x = gCurrentPinballGame->ball->prevPositionsQ0[i].x; gCurrentPinballGame->ball->prevPositionsQ0[i + 1].y = gCurrentPinballGame->ball->prevPositionsQ0[i].y; diff --git a/src/rom_2C538.c b/src/rom_2C538.c index 5dd1da5..fbb05a6 100644 --- a/src/rom_2C538.c +++ b/src/rom_2C538.c @@ -39,7 +39,7 @@ void sub_2C538(void) gCurrentPinballGame->unk304++; if (gCurrentPinballGame->unk304 == 9) { - gCurrentPinballGame->unk300 = 3; + gCurrentPinballGame->unk300 = 3; gCurrentPinballGame->unk304 = 0; } break; @@ -99,14 +99,14 @@ void sub_2C538(void) group->baseX = 192 - gCurrentPinballGame->unk58; group->baseY = 278 - gCurrentPinballGame->unk5A; } - + if (gCurrentPinballGame->unk302 > 0) { gCurrentPinballGame->unk302--; if (gCurrentPinballGame->unk302 == 0) gMain.spriteGroups[68].available = 0; } - + oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; @@ -136,7 +136,7 @@ void sub_2C538(void) group = &gMain.spriteGroups[58]; if (group->available) { - group->baseX = 184 - gCurrentPinballGame->unk58; + group->baseX = 184 - gCurrentPinballGame->unk58; group->baseY = 277 - gCurrentPinballGame->unk5A; DmaCopy16(3, gUnknown_0847DF0C[index], (void*) 0x06013580, 0x300); for (i = 0; i < 3;i++) diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index cc3bc05..c832a41 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -357,7 +357,7 @@ void sub_2D204(void) if (gCurrentPinballGame->unkCC < 236) gCurrentPinballGame->unkE6 = gCurrentPinballGame->unk18 / 2;; - if (gCurrentPinballGame->unk18 > 35) + if (gCurrentPinballGame->unk18 > 35) { if (gCurrentPinballGame->unk18 < 68) { @@ -664,7 +664,7 @@ void sub_2D204(void) { if (var0 == 1) m4aMPlayStop(&gMPlayInfo_BGM); - + gMain.blendControl = 0x9F; gMain.blendBrightness = 16 - (var0 / 4); if (var0 == 32) @@ -672,7 +672,7 @@ void sub_2D204(void) gCurrentPinballGame->unk29C = 140; PlayCry_Normal(gSpeciesInfo[gCurrentPinballGame->currentSpecies].mainSeriesIndexNumber, 0); } - + if (var0 == 64) { gCurrentPinballGame->unk604 = 0; @@ -701,14 +701,14 @@ void sub_2D204(void) gCurrentPinballGame->unkE4 = 0; } } - + index = gCurrentPinballGame->unk603; group = gMain.unk44[37]; group->baseX = 96 - gCurrentPinballGame->unk58; group->baseY = 300 - gCurrentPinballGame->unk5A; if (group->baseY >= 200) group->baseY = 200; - + for (i = 0; i < 4; i++) { oamSimple = &group->oam[i]; @@ -850,7 +850,7 @@ void sub_2E094(void) if (gCurrentPinballGame->unk18 % 10 == 0) m4aSongNumStart(SE_UNKNOWN_0x97); } - + if (gMain.selectedField == FIELD_RUBY) { DmaCopy16(3, gUnknown_08483D8C[index], (void *) 0x06015800, 0x480); @@ -1314,7 +1314,7 @@ void sub_2F504(void) u16 *dst; const u16 *src; s16 index; - + group = &gMain.spriteGroups[26]; if (group->available) { diff --git a/src/rom_31BE8.c b/src/rom_31BE8.c index 11e2b2a..c58d31b 100644 --- a/src/rom_31BE8.c +++ b/src/rom_31BE8.c @@ -23,7 +23,7 @@ void sub_313A0(void) s16 index; group = &gMain.spriteGroups[69]; - if (group->available) + if (group->available) { group->baseX = 16 - gCurrentPinballGame->unk58; group->baseY = 115 - gCurrentPinballGame->unk5A; @@ -35,11 +35,11 @@ void sub_313A0(void) oamSimple = &group->oam[i]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - } + } } } -void sub_31498(void) +void sub_31498(void) { s16 i, j; struct SpriteGroup *group; @@ -55,7 +55,7 @@ void sub_31498(void) { if (gCurrentPinballGame->unk345 < 3) { - gCurrentPinballGame->unk345 = gCurrentPinballGame->unk345 + 1; + gCurrentPinballGame->unk345++; gCurrentPinballGame->scoreAddedInFrame = 20000; m4aSongNumStart(SE_UNKNOWN_0xDE); } @@ -128,14 +128,14 @@ void sub_31498(void) gCurrentPinballGame->unk345++; if (gCurrentPinballGame->unk345 == 10) gCurrentPinballGame->unk346 = 4; - + if (gCurrentPinballGame->unk345 == 6) m4aSongNumStart(SE_UNKNOWN_0xE0); index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); } - + if (gCurrentPinballGame->unk345 < 6) { gCurrentPinballGame->unk200 = 280; @@ -231,9 +231,9 @@ void sub_31498(void) oamSimple = &group->oam[j]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; - } + } } - } + } } void sub_31B30(void) diff --git a/src/rom_356A0.c b/src/rom_356A0.c index ec16545..c11023a 100644 --- a/src/rom_356A0.c +++ b/src/rom_356A0.c @@ -199,7 +199,7 @@ void sub_356A0(void) group->baseX = 240; group->baseY = 160; - + oamSimple = &group->oam[0]; gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + 240; gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; diff --git a/src/rom_4F258.c b/src/rom_4F258.c index 492e497..c0f940d 100644 --- a/src/rom_4F258.c +++ b/src/rom_4F258.c @@ -24,7 +24,7 @@ extern struct SongHeader gUnknown_0869F664; void sub_4E814(void) { gCurrentPinballGame->unk734 = (gCurrentPinballGame->unk70C % 40) / 20; - gCurrentPinballGame->unk70C = gCurrentPinballGame->unk70C + 1; + gCurrentPinballGame->unk70C++; sub_4EA44(); if (gCurrentPinballGame->unk6A < 232) { @@ -181,7 +181,7 @@ void sub_4EBD0(void) gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; } } - + for (i = 0; i < 4; i++) { src = &gUnknown_086B0BC4[i][gCurrentPinballGame->holeIndicators[i]]; @@ -297,7 +297,7 @@ void sub_4EF38(void) s16 index; const u8 **src; const u8 **dest; - + index = 0; if (gCurrentPinballGame->unk2F0 > 2) gCurrentPinballGame->unk72A = 1; diff --git a/src/rom_50AD4.c b/src/rom_50AD4.c index 651cb27..2232918 100644 --- a/src/rom_50AD4.c +++ b/src/rom_50AD4.c @@ -33,12 +33,12 @@ void sub_4F2B8(void) { if (gCurrentPinballGame->unk72C < gUnknown_086B08C4[gCurrentPinballGame->unk72B - 1]) { - gCurrentPinballGame->unk72C = gCurrentPinballGame->unk72C + 1; + gCurrentPinballGame->unk72C++; } else { gCurrentPinballGame->unk72C = 0; - gCurrentPinballGame->unk72B = gCurrentPinballGame->unk72B - 1; + gCurrentPinballGame->unk72B--; } } } @@ -442,7 +442,7 @@ void sub_4FC7C(void) gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0]; } } - + for (i = 0; i < 4; i++) { src = &gUnknown_086B1300[i][gCurrentPinballGame->holeIndicators[i]]; diff --git a/src/titlescreen.c b/src/titlescreen.c index 256f1f7..2dbd631 100644 --- a/src/titlescreen.c +++ b/src/titlescreen.c @@ -270,7 +270,7 @@ void TitleScreen3_8010E00(void) gTitlescreen.unk6 = 9; gMain.subState = SUBSTATE_11; } - + if (gUnknown_020028A4) return;