From 7e0d797380bb603e5fce3086f61e7a1ccf8022e5 Mon Sep 17 00:00:00 2001 From: Retnuhytnuob <65794339+Retnuhytnuob@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:28:05 -0500 Subject: [PATCH] decomp sub_173FC and 171C8 (#169) --- asm/rom_14740.s | 566 -------------------------------------- expected_objs/sub_171C8.o | Bin 2324 -> 0 bytes expected_objs/sub_173FC.o | Bin 2256 -> 0 bytes include/functions.h | 4 +- include/global.h | 5 +- src/rom_14740.c | 1 - src/rom_17634.c | 199 +++++++++++++- 7 files changed, 204 insertions(+), 571 deletions(-) delete mode 100644 expected_objs/sub_171C8.o delete mode 100644 expected_objs/sub_173FC.o 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 5451d4927763ee6bbd0549a99541a1e65a9e98a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2324 zcma);O>7%Q6vy9gY}ZbsvI&l~Nu6}#q{)^BckMN?ODWj3GjXD%iBN&|;$SOQ*5JC4 zi#@+RuHBuwOHVkx{ z7cyY1lNU2{X)xBz41s}kRtdl;>^J(pmAo$Kh)#V>x)biyED@CpSvde_VSlf$E{U#l zvlkN&A=m43`8pQJaNyt+`t4$!wZE#)$Tvxjxbq;sH7fL3xX8n!SxZT#N6}T*Uza=PK0P8E=AC z6_gv~p6PB_wGJ@fHLL}MFE0_gXGP))*0SPGeD@P_n{1PVU2)etQ76e$n4c@;@yXC}cTdIcZu)W2KXp%V$vh9BPAaQhAy5U>U3YjAm8Qq0rEYLe?T@leuVrv$G;+f z&++fbyBt43u5(P+zs)gyB|YZ(AM*M5am@8{>!)4${prSr4lYi|^KeY_`Taw5tPR|7 z3KM7!wJua=7$8gd=tp?s2wywG^G6tlsxYs`wQwwwN->qzY!xO+r!C4hnLklc*+$l*|Cq2nZ>P~Sz#`5%-6Fu+rh&d|m3>bCt#@J-_^K6QG z+^H9L@{&%Qvv@rnh2@p}d^i?P#cieIOczrtl}e#pohz2}xl(B&cfA0Mua(~}-*~4y zuSGOH{6a*7#hF~OZ1)<|TmQy>!|$v8to42n@uK_jyAYqZ?jyZ}^xjdg*nY_Ns_jQ@ zui2j7Gg^n<4_b$wb1`I{N7^pqIcq)wH z^St<+wwb+k4Xzf3TDjEYmbUW$D^J5b%vqv+sL^^#OId&D*wm=!hpJJ)j`SzVbNJBt f(Yr_2z{W%gH8((!6+vdQ^GIF^3nj3P8O!?%4RI^- diff --git a/expected_objs/sub_173FC.o b/expected_objs/sub_173FC.o deleted file mode 100644 index c41954b7f5959cb86055037a832c1b8c02f26145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2256 zcma)7U1*zC7=FL}HQCzQ)KtFB;gYShU+oA-gsj=L_6^!;LUD?BGr1Q&q;Gm-xU8&cypfTyuato zIVV?6J!NT{MsjFm&@Lk~`#KtLvNIX9j{>xL`>bVIUwrO6v|_z!(HI?#%nno{#Z{e_ z$wv=0Ethd--M0M82-dpao=>dmi6%9N4<48q*K5r{(>zEXt^Yxf-alv1y&u{EkH7yi z(A{>h7zoXfshiq?5WeZEPR)U{edYs4-6l=Y`j_qP$O=`E$(=>6LCqN0(848asJ6c? zN_@>t^eaS+%|D5rx7@Y7<*#fXxrSJth*q1i`mVm))==47ZCT^>_8C<@8IQKMIyrV~ zp6#hQrxHIHD>wRi(bxePq0)d&2%2P1x(E<*npqMctx9WE^Y# z2EFV{@^5m4x;ch6#(Q#%sT|(cSW#w(bux_hWcZzBc;sI*1bZ?Jsto&DL6yPN5}osf z(X*PqcEh@9ZLVo+G);61{l3e3{t@u^keiT?AwNRihvX0AN3qLxX`ZwZKyUus>CE}5 z)3fAr`LzH)cH-yj8Sb7_N#w?d4>x)CSZG)wx}l6T8U%iuaUJ+8#*YBU7(Wi|a>)ga z(tz(tifktEImU~?7Z^Ve`~l<70k1M%0e*$?I`AiqzYP2-A26aGmk5!4EP1EqIdo-vj@H@t?uN%>EbfYfQflKFajs z8M@B&`+*In9|1qk_+juZWQL?hwbVAwX65YJ%gz`wJc$TzF z?^b{ujiu6DJTqw(=u%;+UN2Xjr{}9BdtqVPUM$n4XR0q$U%XsJdnaR=_*9awBvOf! z*hA;8xE|ZNgRY64v+NR=I@)+?(XmUIo%+sPk*Ho?h&ttEhoTp4$EIkh(V)&kJd@33 zDT*g6YCBGSzO>|&8;JEkhj{wL@$hx+#s6tmoki-rRYLVJBmglXV*CUL@lJ`qVc{>{ zG(Y56m&;dhfyIJKom*_XWB*@v;@xA%m;Nc<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) {