diff --git a/asm/rom_14740.s b/asm/rom_14740.s index c230c09..1097ccb 100644 --- a/asm/rom_14740.s +++ b/asm/rom_14740.s @@ -2175,569 +2175,3 @@ _080171B8: bx r0 .align 2, 0 _080171C4: .4byte 0x00000306 - - thumb_func_start COLLISION_CHECK_DUSCLOPS_171C8 -COLLISION_CHECK_DUSCLOPS_171C8: @ 0x080171C8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - mov sb, r0 - mov r8, r1 - add r2, sp, #4 - movs r1, #0 - strh r1, [r2] - ldr r0, _080172CC @ =gCurrentPinballGame - ldr r0, [r0] - mov sl, r0 - ldr r0, _080172D0 @ =0x0000132C - add r0, sl - ldr r0, [r0] - strh r1, [r0, #4] - mov r0, sb - movs r1, #0 - ldrsh r4, [r0, r1] - adds r0, r4, #0 - cmp r4, #0 - bge _080171FA - adds r0, r4, #7 -_080171FA: - asrs r1, r0, #3 - lsls r0, r1, #0x10 - lsrs r0, r0, #0x10 - ldr r2, _080172D4 @ =0xFFFF0000 - mov ip, r2 - ands r5, r2 - orrs r5, r0 - mov r7, sb - movs r0, #2 - ldrsh r3, [r7, r0] - adds r0, r3, #0 - cmp r3, #0 - bge _08017216 - adds r0, r3, #7 -_08017216: - asrs r0, r0, #3 - lsls r2, r0, #0x10 - ldr r7, _080172D8 @ =0x0000FFFF - ands r5, r7 - lsls r1, r1, #3 - subs r1, r4, r1 - lsls r1, r1, #0x10 - lsrs r1, r1, #0x10 - mov r4, ip - ands r6, r4 - orrs r6, r1 - lsls r0, r0, #3 - subs r0, r3, r0 - lsls r0, r0, #0x10 - ands r6, r7 - orrs r6, r0 - orrs r5, r2 - asrs r4, r2, #0x10 - adds r2, r4, #0 - cmp r4, #0 - bge _08017242 - adds r2, #0x3f -_08017242: - asrs r2, r2, #6 - mov r0, sl - adds r0, #0x24 - movs r3, #0 - ldrsb r3, [r0, r3] - lsls r1, r2, #6 - subs r1, r4, r1 - lsls r1, r1, #0x10 - ands r5, r7 - ldr r7, _080172DC @ =gUnknown_02031520 - mov ip, r7 - adds r3, r3, r2 - lsls r3, r3, #2 - mov r2, ip - adds r2, #0x38 - adds r2, r3, r2 - lsls r0, r5, #0x10 - asrs r0, r0, #0x10 - asrs r1, r1, #0xa - adds r1, r1, r0 - ldr r0, [r2] - lsls r1, r1, #1 - adds r1, r1, r0 - mov r4, ip - adds r4, #0x48 - adds r4, r3, r4 - movs r0, #0 - ldrsh r2, [r1, r0] - asrs r1, r6, #0x10 - lsls r0, r6, #0x10 - asrs r0, r0, #0x10 - lsls r1, r1, #3 - lsls r2, r2, #6 - adds r1, r1, r2 - adds r1, r1, r0 - ldr r2, [r4] - lsls r0, r1, #1 - adds r0, r0, r2 - ldrh r2, [r0] - mov r0, sp - strh r2, [r0] - mov r0, ip - adds r0, #0x58 - adds r3, r3, r0 - ldr r0, [r3] - adds r0, r0, r1 - ldrb r0, [r0] - mov r4, sp - adds r4, #2 - strb r0, [r4] - mov r0, sb - mov r1, sp - adds r2, r4, #0 - bl sub_173FC - ldrb r0, [r4] - movs r3, #0xf - ands r3, r0 - lsrs r6, r0, #4 - subs r0, r3, #1 - cmp r0, #5 - bls _080172C0 - b _080173DA -_080172C0: - lsls r0, r0, #2 - ldr r1, _080172E0 @ =_080172E4 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080172CC: .4byte gCurrentPinballGame -_080172D0: .4byte 0x0000132C -_080172D4: .4byte 0xFFFF0000 -_080172D8: .4byte 0x0000FFFF -_080172DC: .4byte gUnknown_02031520 -_080172E0: .4byte _080172E4 -_080172E4: @ jump table - .4byte _080172FC @ case 0 - .4byte _080173A8 @ case 1 - .4byte _080173A8 @ case 2 - .4byte _080172FC @ case 3 - .4byte _080173D8 @ case 4 - .4byte _080172FC @ case 5 -_080172FC: - ldr r2, _08017374 @ =gCurrentPinballGame - ldr r0, [r2] - subs r1, r3, #1 - adds r0, #0x23 - strb r1, [r0] - ldr r0, [r2] - adds r0, #0x22 - movs r5, #1 - strb r5, [r0] - mov r0, sp - ldrh r0, [r0] - mov r1, r8 - strh r0, [r1] - ldr r4, _08017378 @ =0xFFFFC010 - adds r0, r0, r4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x20 - bhi _0801739C - ldr r0, [r2] - ldr r7, _0801737C @ =0x0000132C - adds r3, r0, r7 - ldr r2, [r3] - movs r0, #0x10 - ldrsh r1, [r2, r0] - ldr r4, _08017380 @ =gUnknown_02031520 - movs r7, #0x26 - ldrsh r0, [r4, r7] - subs r0, #8 - cmp r1, r0 - blt _08017348 - movs r0, #0x12 - ldrsh r1, [r2, r0] - movs r7, #0x28 - ldrsh r0, [r4, r7] - subs r0, #8 - cmp r1, r0 - bge _0801739C -_08017348: - movs r1, #6 - ldrsh r0, [r2, r1] - cmp r0, #0 - bgt _08017366 - cmp r0, #0 - bne _08017392 - ldr r0, _08017384 @ =gMain - ldr r0, [r0, #0x4c] - ands r0, r5 - cmp r0, #0 - beq _08017388 - movs r0, #0x28 - strh r0, [r2, #4] - ldr r0, [r3] - strh r5, [r0, #6] -_08017366: - movs r2, #0xf8 - lsls r2, r2, #6 - adds r0, r2, #0 - mov r4, r8 - strh r0, [r4] - b _0801739C - .align 2, 0 -_08017374: .4byte gCurrentPinballGame -_08017378: .4byte 0xFFFFC010 -_0801737C: .4byte 0x0000132C -_08017380: .4byte gUnknown_02031520 -_08017384: .4byte gMain -_08017388: - ldr r0, _080173A4 @ =0x0000FFD8 - strh r0, [r2, #4] - ldr r1, [r3] - adds r0, #0x27 - strh r0, [r1, #6] -_08017392: - movs r7, #0x82 - lsls r7, r7, #7 - adds r0, r7, #0 - mov r1, r8 - strh r0, [r1] -_0801739C: - movs r0, #1 - mov r2, sp - strh r0, [r2, #4] - b _080173DA - .align 2, 0 -_080173A4: .4byte 0x0000FFD8 -_080173A8: - ldr r2, _080173D0 @ =gCurrentPinballGame - ldr r0, [r2] - subs r1, r3, #1 - adds r0, #0x23 - strb r1, [r0] - ldr r0, [r2] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - mov r0, sp - ldrh r1, [r0] - ldr r0, _080173D4 @ =0x0000FFF0 - ands r0, r1 - mov r4, r8 - strh r0, [r4] - movs r0, #1 - mov r7, sp - strh r0, [r7, #4] - b _080173DA - .align 2, 0 -_080173D0: .4byte gCurrentPinballGame -_080173D4: .4byte 0x0000FFF0 -_080173D8: - movs r6, #4 -_080173DA: - adds r0, r6, #0 - add r1, sp, #4 - mov r2, r8 - bl sub_17634 - mov r1, sp - movs r2, #4 - ldrsh r0, [r1, r2] - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 - - thumb_func_start sub_173FC -sub_173FC: @ 0x080173FC - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r6, r0, #0 - mov sb, r1 - mov ip, r2 - movs r7, #0 - movs r3, #0 - ldr r1, _08017494 @ =gCurrentPinballGame - ldr r5, [r1] - ldr r2, _08017498 @ =0x00000387 - adds r0, r5, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r8, r1 - cmp r0, #2 - bne _080174C0 - mov r1, ip - ldrb r0, [r1] - cmp r0, #0 - beq _0801742C - b _080175FE -_0801742C: - adds r2, #0x69 - adds r0, r5, r2 - ldrh r2, [r6] - ldrh r0, [r0] - subs r2, r2, r0 - ldr r0, _0801749C @ =0x000003F2 - adds r1, r5, r0 - ldrh r0, [r6, #2] - ldrh r1, [r1] - subs r0, r0, r1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - lsls r3, r2, #0x10 - lsrs r0, r3, #0x10 - cmp r0, #0x5f - bls _0801744E - b _080175FE -_0801744E: - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x77 - bls _08017458 - b _080175FE -_08017458: - ldr r2, _080174A0 @ =gUnknown_083071D4 - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #5 - asrs r1, r3, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _080174A4 @ =0x0000FFF0 - ands r7, r0 - movs r3, #0xf - ands r3, r0 - cmp r3, #0 - bne _0801747A - b _080175FE -_0801747A: - movs r1, #0xf7 - lsls r1, r1, #2 - adds r0, r5, r1 - ldrb r0, [r0] - subs r0, #3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #1 - bhi _080174A8 - movs r0, #1 - mov r2, ip - strb r0, [r2] - b _080174AC - .align 2, 0 -_08017494: .4byte gCurrentPinballGame -_08017498: .4byte 0x00000387 -_0801749C: .4byte 0x000003F2 -_080174A0: .4byte gUnknown_083071D4 -_080174A4: .4byte 0x0000FFF0 -_080174A8: - mov r0, ip - strb r3, [r0] -_080174AC: - mov r1, r8 - ldr r0, [r1] - movs r2, #0xf7 - lsls r2, r2, #2 - adds r0, r0, r2 - movs r1, #4 - strb r1, [r0] - mov r0, sb - strh r7, [r0] - b _080175FE -_080174C0: - cmp r0, #1 - beq _080174C6 - b _080175FE -_080174C6: - mov r1, ip - ldrb r0, [r1] - cmp r0, #0 - beq _080174D0 - b _080175FE -_080174D0: - ldr r2, _0801760C @ =0x000003A9 - adds r0, r5, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0801752C - movs r1, #0xf4 - lsls r1, r1, #2 - adds r0, r5, r1 - ldrh r2, [r6] - ldrh r0, [r0] - subs r2, r2, r0 - ldr r0, _08017610 @ =0x000003D2 - adds r1, r5, r0 - ldrh r0, [r6, #2] - ldrh r1, [r1] - subs r0, r0, r1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - lsls r4, r2, #0x10 - lsrs r0, r4, #0x10 - cmp r0, #0x3f - bhi _0801752C - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _0801752C - ldr r2, _08017614 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r4, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _08017618 @ =0x0000FFF0 - ands r7, r0 - movs r3, #0xf - ands r3, r0 - cmp r3, #0 - beq _08017530 - movs r2, #0xe8 - lsls r2, r2, #2 - adds r1, r5, r2 - movs r0, #4 - strb r0, [r1] -_0801752C: - cmp r3, #0 - bne _080175F4 -_08017530: - mov r0, r8 - ldr r5, [r0] - ldr r1, _0801761C @ =0x000003AA - adds r0, r5, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0801758E - movs r2, #0xf5 - lsls r2, r2, #2 - adds r0, r5, r2 - ldrh r2, [r6] - ldrh r0, [r0] - subs r2, r2, r0 - ldr r0, _08017620 @ =0x000003D6 - adds r1, r5, r0 - ldrh r0, [r6, #2] - ldrh r1, [r1] - subs r0, r0, r1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - lsls r4, r2, #0x10 - lsrs r0, r4, #0x10 - cmp r0, #0x3f - bhi _0801758E - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _0801758E - ldr r2, _08017614 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r4, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _08017618 @ =0x0000FFF0 - ands r7, r0 - movs r3, #0xf - ands r3, r0 - cmp r3, #0 - beq _08017592 - ldr r2, _08017624 @ =0x000003A1 - adds r1, r5, r2 - movs r0, #4 - strb r0, [r1] -_0801758E: - cmp r3, #0 - bne _080175F4 -_08017592: - mov r0, r8 - ldr r5, [r0] - ldr r1, _08017628 @ =0x000003AB - adds r0, r5, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _080175F0 - movs r2, #0xf6 - lsls r2, r2, #2 - adds r0, r5, r2 - ldrh r2, [r6] - ldrh r0, [r0] - subs r2, r2, r0 - ldr r0, _0801762C @ =0x000003DA - adds r1, r5, r0 - ldrh r0, [r6, #2] - ldrh r1, [r1] - subs r0, r0, r1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - lsls r4, r2, #0x10 - lsrs r0, r4, #0x10 - cmp r0, #0x3f - bhi _080175F0 - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _080175F0 - ldr r2, _08017614 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r4, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _08017618 @ =0x0000FFF0 - ands r7, r0 - movs r3, #0xf - ands r3, r0 - cmp r3, #0 - beq _080175FE - ldr r2, _08017630 @ =0x000003A2 - adds r1, r5, r2 - movs r0, #4 - strb r0, [r1] -_080175F0: - cmp r3, #0 - beq _080175FE -_080175F4: - mov r0, sb - strh r7, [r0] - movs r0, #6 - mov r1, ip - strb r0, [r1] -_080175FE: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0801760C: .4byte 0x000003A9 -_08017610: .4byte 0x000003D2 -_08017614: .4byte gUnknown_08252B10 -_08017618: .4byte 0x0000FFF0 -_0801761C: .4byte 0x000003AA -_08017620: .4byte 0x000003D6 -_08017624: .4byte 0x000003A1 -_08017628: .4byte 0x000003AB -_0801762C: .4byte 0x000003DA -_08017630: .4byte 0x000003A2 diff --git a/expected_objs/sub_171C8.o b/expected_objs/sub_171C8.o deleted file mode 100644 index 5451d49..0000000 Binary files a/expected_objs/sub_171C8.o and /dev/null differ diff --git a/expected_objs/sub_173FC.o b/expected_objs/sub_173FC.o deleted file mode 100644 index c41954b..0000000 Binary files a/expected_objs/sub_173FC.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index 5ce17ed..33c156d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -391,8 +391,8 @@ void sub_153CC(s32, s16*, u16*); //extern ? sub_162B8(); //extern ? sub_1642C(); //extern ? COLLISION_CHECK_DUSCLOPS_171C8(); -//extern ? sub_173FC(); -extern void sub_17634(u8); +void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2); +extern void sub_17634(u8, u16*, u16*); //extern ? COLLISION_CHECK_KECLEON_176B0(); extern void sub_17898(struct Vector16 *, u16 *, u8 *); extern void sub_179D0(u8, u16 *, u16 *); diff --git a/include/global.h b/include/global.h index 1f3ee12..1b1b653 100644 --- a/include/global.h +++ b/include/global.h @@ -503,7 +503,7 @@ struct PinballGame /*0x3A0*/ s8 unk3A0[3]; /*0x3A3*/ s8 unk3A3[3]; /*0x3A6*/ s8 unk3A6[3]; - /*0x3A9*/ u8 unk3A9[3]; + /*0x3A9*/ s8 unk3A9[3]; /*0x3AC*/ s8 unk3AC[3]; /*0x3B0*/ u16 unk3B0[3]; /*0x3B6*/ u16 unk3B6[3]; @@ -962,4 +962,7 @@ extern u8 gUnknown_081B4784[]; extern const u16 gUnknown_086AD000[][4]; extern u32 gUnknown_086AD50C[]; +extern const u16 gUnknown_08252B10[]; +extern const u16 gUnknown_083071D4[]; + #endif // GUARD_GLOBAL_H \ No newline at end of file diff --git a/src/rom_14740.c b/src/rom_14740.c index 157bae0..430e3c3 100644 --- a/src/rom_14740.c +++ b/src/rom_14740.c @@ -3,7 +3,6 @@ #include "m4a.h" #include "constants/bg_music.h" -extern const u16 gUnknown_08252B10[]; extern const u16 gUnknown_08254B10[]; extern const u16 gUnknown_08257390[]; extern const u16 gUnknown_08259C10[]; diff --git a/src/rom_17634.c b/src/rom_17634.c index da60eb3..daa8240 100644 --- a/src/rom_17634.c +++ b/src/rom_17634.c @@ -1,7 +1,204 @@ #include "global.h" #include "main.h" -void sub_17634(u8 arg0) + +s16 COLLISION_CHECK_DUSCLOPS_171C8(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_173FC(arg0, &sp00, &sp02); + switch_enum = sp02 & 0xF; + some_enum = sp02 >> 4; + + switch (switch_enum) + { + case 1: + case 4: + case 6: + 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 2: + case 3: + gCurrentPinballGame->unk23 = switch_enum - 1; + gCurrentPinballGame->unk22 = 2; + *arg1 = sp00 & 0x0000FFF0; + return_val = 1; + break; + case 5: + some_enum = 4; + break; + } + + sub_17634(some_enum, &return_val, arg1); + return return_val; +} + +void sub_173FC(struct Vector16 *arg0, s16* arg1, u8* arg2) { + s16 deltaX; + s16 deltaY; + u16 maskedResult; + u8 lowerNibble; + u8 temp; + + maskedResult = 0; + lowerNibble = 0; + + 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) + 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) + { + deltaX = arg0->x - gCurrentPinballGame->unk3D0[0].x; + deltaY = arg0->y - gCurrentPinballGame->unk3D0[0].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[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) + { + deltaX = arg0->x - gCurrentPinballGame->unk3D0[2].x; + deltaY = arg0->y - gCurrentPinballGame->unk3D0[2].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[2] = 4; + } + } + } + } + + if (lowerNibble != 0) + { + *arg1 = maskedResult; + *arg2 = 6; + } + return; + } +} + + +void sub_17634(u8 arg0, u16 *arg1, u16 *arg2) { switch (arg0) {