mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
decomp sub_173FC and 171C8 (#169)
This commit is contained in:
parent
2ce6570915
commit
7e0d797380
566
asm/rom_14740.s
566
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
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -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 *);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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[];
|
||||
|
|
|
|||
199
src/rom_17634.c
199
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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user