mirror of
https://github.com/zeldaret/tmc
synced 2026-05-23 23:05:38 -04:00
+4
-4
@@ -3437,7 +3437,7 @@ sub_08074C68: @ 0x08074C68
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x84
|
||||
ldr r1, [r0]
|
||||
ldr r0, _08074CA4 @ =gUnk_02022750
|
||||
ldr r0, _08074CA4 @ =gPlayerScriptExecutionContext
|
||||
cmp r1, r0
|
||||
bne _08074CF2
|
||||
movs r0, #1
|
||||
@@ -3449,7 +3449,7 @@ sub_08074C68: @ 0x08074C68
|
||||
b _08074CF2
|
||||
.align 2, 0
|
||||
_08074CA0: .4byte gPlayerState
|
||||
_08074CA4: .4byte gUnk_02022750
|
||||
_08074CA4: .4byte gPlayerScriptExecutionContext
|
||||
_08074CA8:
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
@@ -4195,7 +4195,7 @@ sub_080751E8: @ 0x080751E8
|
||||
adds r7, r0, #0
|
||||
adds r5, r1, #0
|
||||
adds r6, r2, #0
|
||||
ldr r4, _08075230 @ =gUnk_02022750
|
||||
ldr r4, _08075230 @ =gPlayerScriptExecutionContext
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl _DmaZero
|
||||
@@ -4226,7 +4226,7 @@ sub_080751E8: @ 0x080751E8
|
||||
ldr r6, _0807523C @ =gUnk_08009ECC
|
||||
b _08075244
|
||||
.align 2, 0
|
||||
_08075230: .4byte gUnk_02022750
|
||||
_08075230: .4byte gPlayerScriptExecutionContext
|
||||
_08075234: .4byte gPlayerEntity
|
||||
_08075238: .4byte gPlayerState
|
||||
_0807523C: .4byte gUnk_08009ECC
|
||||
|
||||
-2216
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -126,7 +126,7 @@ _0805AC1A:
|
||||
ldr r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
beq _0805AC48
|
||||
bl sub_0807DAA0
|
||||
bl CreateScriptExecutionContext
|
||||
mov sb, r0
|
||||
cmp r0, #0
|
||||
beq _0805ACA6
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldr r1, _0807D2B0 @ =gRoomControls
|
||||
movs r0, #0xa
|
||||
ldrsh r2, [r1, r0]
|
||||
ldrh r0, [r1, #6]
|
||||
subs r3, r2, r0
|
||||
movs r0, #0xc
|
||||
ldrsh r2, [r1, r0]
|
||||
ldrh r0, [r1, #8]
|
||||
subs r4, r2, r0
|
||||
ldrb r0, [r1, #0x10]
|
||||
mov r8, r1
|
||||
cmp r0, #1
|
||||
beq _0807D330
|
||||
cmp r0, #1
|
||||
bgt _0807D2B4
|
||||
cmp r0, #0
|
||||
beq _0807D2BA
|
||||
b _0807D404
|
||||
.align 2, 0
|
||||
_0807D2B0: .4byte gRoomControls
|
||||
_0807D2B4:
|
||||
cmp r0, #2
|
||||
beq _0807D3A0
|
||||
b _0807D404
|
||||
_0807D2BA:
|
||||
mov r2, r8
|
||||
ldrh r1, [r2, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
beq _0807D2C8
|
||||
b _0807D462
|
||||
_0807D2C8:
|
||||
movs r2, #0x1c
|
||||
asrs r3, r3, #4
|
||||
mov sb, r3
|
||||
movs r3, #0x40
|
||||
adds r3, r3, r5
|
||||
mov ip, r3
|
||||
ldr r4, _0807D328 @ =0x040000D4
|
||||
ldr r7, _0807D32C @ =0x80000020
|
||||
movs r0, #0xe8
|
||||
lsls r0, r0, #3
|
||||
adds r3, r5, r0
|
||||
subs r0, #0x80
|
||||
adds r1, r5, r0
|
||||
_0807D2E2:
|
||||
str r1, [r4]
|
||||
str r3, [r4, #4]
|
||||
str r7, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
subs r3, #0x40
|
||||
subs r1, #0x40
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bgt _0807D2E2
|
||||
mov r1, r8
|
||||
ldrh r0, [r1, #0x20]
|
||||
lsrs r0, r0, #4
|
||||
subs r0, #1
|
||||
ldrh r1, [r1, #0x18]
|
||||
lsrs r1, r1, #2
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #8
|
||||
mov r2, sb
|
||||
lsls r1, r2, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
ldr r0, _0807D328 @ =0x040000D4
|
||||
str r6, [r0]
|
||||
str r5, [r0, #4]
|
||||
ldr r2, _0807D32C @ =0x80000020
|
||||
str r2, [r0, #8]
|
||||
ldr r1, [r0, #8]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r6, r3
|
||||
str r1, [r0]
|
||||
mov r1, ip
|
||||
b _0807D3F0
|
||||
.align 2, 0
|
||||
_0807D328: .4byte 0x040000D4
|
||||
_0807D32C: .4byte 0x80000020
|
||||
_0807D330:
|
||||
mov r2, r8
|
||||
ldrh r3, [r2, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r3
|
||||
cmp r0, #0
|
||||
beq _0807D33E
|
||||
b _0807D462
|
||||
_0807D33E:
|
||||
asrs r7, r4, #4
|
||||
movs r0, #0x3c
|
||||
adds r0, r0, r5
|
||||
mov sb, r0
|
||||
cmp r3, #0
|
||||
beq _0807D36A
|
||||
ldr r4, _0807D398 @ =0x040000D4
|
||||
ldr r1, _0807D39C @ =0x8000001E
|
||||
mov ip, r1
|
||||
adds r3, r5, #4
|
||||
adds r1, r5, #0
|
||||
movs r2, #0x15
|
||||
_0807D356:
|
||||
str r3, [r4]
|
||||
str r1, [r4, #4]
|
||||
mov r0, ip
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
adds r3, #0x40
|
||||
adds r1, #0x40
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D356
|
||||
_0807D36A:
|
||||
lsls r1, r7, #8
|
||||
mov r2, r8
|
||||
ldrh r0, [r2, #0x18]
|
||||
lsrs r0, r0, #2
|
||||
lsls r0, r0, #1
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #1
|
||||
adds r6, r6, r1
|
||||
mov r5, sb
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
movs r2, #0x15
|
||||
_0807D382:
|
||||
ldrh r0, [r6]
|
||||
strh r0, [r5]
|
||||
ldrh r0, [r6, #2]
|
||||
strh r0, [r5, #2]
|
||||
adds r5, #0x40
|
||||
adds r6, r6, r1
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D382
|
||||
b _0807D462
|
||||
.align 2, 0
|
||||
_0807D398: .4byte 0x040000D4
|
||||
_0807D39C: .4byte 0x8000001E
|
||||
_0807D3A0:
|
||||
mov r0, r8
|
||||
ldrh r1, [r0, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807D462
|
||||
lsls r2, r1, #0x10
|
||||
cmp r2, #0
|
||||
beq _0807D3C2
|
||||
ldr r1, _0807D3F8 @ =0x040000D4
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x80
|
||||
str r0, [r1]
|
||||
str r5, [r1, #4]
|
||||
ldr r0, _0807D3FC @ =0x800003C0
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_0807D3C2:
|
||||
lsrs r0, r2, #0x12
|
||||
lsls r0, r0, #8
|
||||
asrs r1, r3, #4
|
||||
lsls r1, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
ldr r0, _0807D3F8 @ =0x040000D4
|
||||
str r6, [r0]
|
||||
movs r2, #0xa0
|
||||
lsls r2, r2, #3
|
||||
adds r1, r5, r2
|
||||
str r1, [r0, #4]
|
||||
ldr r2, _0807D400 @ =0x80000020
|
||||
str r2, [r0, #8]
|
||||
ldr r1, [r0, #8]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r6, r3
|
||||
str r1, [r0]
|
||||
movs r3, #0xa8
|
||||
lsls r3, r3, #3
|
||||
adds r1, r5, r3
|
||||
_0807D3F0:
|
||||
str r1, [r0, #4]
|
||||
str r2, [r0, #8]
|
||||
ldr r0, [r0, #8]
|
||||
b _0807D462
|
||||
.align 2, 0
|
||||
_0807D3F8: .4byte 0x040000D4
|
||||
_0807D3FC: .4byte 0x800003C0
|
||||
_0807D400: .4byte 0x80000020
|
||||
_0807D404:
|
||||
mov r0, r8
|
||||
ldrh r1, [r0, #0x18]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0807D462
|
||||
movs r2, #0
|
||||
asrs r7, r4, #4
|
||||
mov ip, r5
|
||||
_0807D416:
|
||||
movs r1, #0x1d
|
||||
mov r3, ip
|
||||
adds r3, #0x3a
|
||||
_0807D41C:
|
||||
ldrh r0, [r3]
|
||||
strh r0, [r3, #4]
|
||||
subs r3, #2
|
||||
subs r1, #1
|
||||
cmp r1, #0
|
||||
bge _0807D41C
|
||||
movs r1, #0x40
|
||||
add ip, r1
|
||||
adds r2, #1
|
||||
cmp r2, #0x15
|
||||
ble _0807D416
|
||||
lsls r0, r7, #8
|
||||
mov r2, r8
|
||||
ldrh r1, [r2, #0x1e]
|
||||
lsrs r1, r1, #4
|
||||
subs r1, #1
|
||||
ldrh r2, [r2, #0x18]
|
||||
lsrs r2, r2, #2
|
||||
subs r1, r1, r2
|
||||
lsls r1, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r6, r6, r0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
movs r2, #0x15
|
||||
_0807D450:
|
||||
ldrh r0, [r6]
|
||||
strh r0, [r5]
|
||||
ldrh r0, [r6, #2]
|
||||
strh r0, [r5, #2]
|
||||
adds r5, #0x40
|
||||
adds r6, r6, r1
|
||||
subs r2, #1
|
||||
cmp r2, #0
|
||||
bge _0807D450
|
||||
_0807D462:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,346 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #8
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r0, _0807D494 @ =gRoomControls
|
||||
ldrb r2, [r0, #0x10]
|
||||
mov sb, r0
|
||||
cmp r2, #1
|
||||
bne _0807D488
|
||||
b _0807D5C4
|
||||
_0807D488:
|
||||
cmp r2, #1
|
||||
bgt _0807D498
|
||||
cmp r2, #0
|
||||
beq _0807D4A4
|
||||
b _0807D6CC
|
||||
.align 2, 0
|
||||
_0807D494: .4byte gRoomControls
|
||||
_0807D498:
|
||||
cmp r2, #2
|
||||
beq _0807D4A4
|
||||
cmp r2, #3
|
||||
bne _0807D4A2
|
||||
b _0807D5C4
|
||||
_0807D4A2:
|
||||
b _0807D6CC
|
||||
_0807D4A4:
|
||||
mov r1, sb
|
||||
movs r2, #0xa
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r1, [r1, #6]
|
||||
subs r5, r0, r1
|
||||
cmp r5, #7
|
||||
ble _0807D4B4
|
||||
subs r5, #8
|
||||
_0807D4B4:
|
||||
mov r3, sb
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r0, r2]
|
||||
subs r0, r0, r1
|
||||
subs r3, r0, #4
|
||||
mov r8, r3
|
||||
cmp r3, #7
|
||||
ble _0807D4CA
|
||||
subs r0, #0xc
|
||||
mov r8, r0
|
||||
_0807D4CA:
|
||||
mov r0, sb
|
||||
movs r2, #0xc
|
||||
ldrsh r1, [r0, r2]
|
||||
ldrh r0, [r0, #8]
|
||||
subs r1, r1, r0
|
||||
mov ip, r1
|
||||
cmp r1, #7
|
||||
ble _0807D4E0
|
||||
movs r3, #8
|
||||
rsbs r3, r3, #0
|
||||
add ip, r3
|
||||
_0807D4E0:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
lsls r0, r0, #3
|
||||
mov r2, r8
|
||||
subs r0, r2, r0
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xf8
|
||||
cmp r0, r5
|
||||
blt _0807D548
|
||||
mov r1, ip
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #8
|
||||
ldr r2, [sp]
|
||||
adds r1, r2, r1
|
||||
asrs r0, r0, #3
|
||||
lsls r2, r0, #1
|
||||
adds r4, r1, r2
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsls r0, r0, #1
|
||||
ldr r2, [sp, #4]
|
||||
adds r6, r2, r0
|
||||
ands r3, r1
|
||||
lsls r2, r3, #5
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x20]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xaf
|
||||
bhi _0807D520
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D522
|
||||
_0807D520:
|
||||
movs r3, #0x16
|
||||
_0807D522:
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xf8
|
||||
cmp r3, #0
|
||||
ble _0807D548
|
||||
ldr r0, _0807D55C @ =0x000003FF
|
||||
mov sl, r0
|
||||
_0807D52E:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
adds r4, r4, r1
|
||||
adds r2, #0x20
|
||||
mov r0, sl
|
||||
ands r2, r0
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D52E
|
||||
_0807D548:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #3
|
||||
add r0, r8
|
||||
ldrh r2, [r1, #0x1e]
|
||||
cmp r7, r2
|
||||
blt _0807D560
|
||||
adds r1, r7, #0
|
||||
b _0807D566
|
||||
.align 2, 0
|
||||
_0807D55C: .4byte 0x000003FF
|
||||
_0807D560:
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
adds r1, r5, r3
|
||||
_0807D566:
|
||||
cmp r0, r1
|
||||
blt _0807D56C
|
||||
b _0807D6CC
|
||||
_0807D56C:
|
||||
mov r1, ip
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #8
|
||||
ldr r2, [sp]
|
||||
adds r1, r2, r1
|
||||
asrs r0, r0, #3
|
||||
lsls r2, r0, #1
|
||||
adds r4, r1, r2
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsls r0, r0, #1
|
||||
ldr r2, [sp, #4]
|
||||
adds r6, r2, r0
|
||||
ands r3, r1
|
||||
lsls r2, r3, #5
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x20]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xaf
|
||||
bhi _0807D59A
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D59C
|
||||
_0807D59A:
|
||||
movs r3, #0x16
|
||||
_0807D59C:
|
||||
cmp r3, #0
|
||||
bgt _0807D5A2
|
||||
b _0807D6CC
|
||||
_0807D5A2:
|
||||
movs r7, #0x80
|
||||
lsls r7, r7, #1
|
||||
ldr r5, _0807D5C0 @ =0x000003FF
|
||||
_0807D5A8:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, r4, r7
|
||||
adds r2, #0x20
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D5A8
|
||||
b _0807D6CC
|
||||
.align 2, 0
|
||||
_0807D5C0: .4byte 0x000003FF
|
||||
_0807D5C4:
|
||||
mov r1, sb
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r1, r2]
|
||||
ldrh r2, [r1, #8]
|
||||
subs r5, r0, r2
|
||||
cmp r5, #7
|
||||
ble _0807D5D4
|
||||
subs r5, #8
|
||||
_0807D5D4:
|
||||
mov r3, sb
|
||||
movs r0, #0xa
|
||||
ldrsh r1, [r3, r0]
|
||||
ldrh r0, [r3, #6]
|
||||
subs r1, r1, r0
|
||||
mov r8, r1
|
||||
cmp r1, #7
|
||||
ble _0807D5EA
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
add r8, r1
|
||||
_0807D5EA:
|
||||
mov r3, sb
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r0, r1]
|
||||
subs r0, r0, r2
|
||||
subs r2, r0, #4
|
||||
mov ip, r2
|
||||
cmp r2, #7
|
||||
ble _0807D600
|
||||
subs r0, #0xc
|
||||
mov ip, r0
|
||||
_0807D600:
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x18]
|
||||
lsls r0, r0, #3
|
||||
mov r1, ip
|
||||
subs r0, r1, r0
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xa8
|
||||
movs r2, #0xb0
|
||||
adds r2, r2, r5
|
||||
mov sl, r2
|
||||
cmp r0, r5
|
||||
blt _0807D66A
|
||||
asrs r2, r0, #3
|
||||
lsls r0, r2, #8
|
||||
ldr r3, [sp]
|
||||
adds r0, r3, r0
|
||||
mov r1, r8
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #1
|
||||
adds r4, r0, r1
|
||||
movs r0, #0x1f
|
||||
ands r2, r0
|
||||
lsls r2, r2, #6
|
||||
ldr r1, [sp, #4]
|
||||
adds r6, r1, r2
|
||||
adds r2, r0, #0
|
||||
ands r2, r3
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x1e]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xff
|
||||
bhi _0807D646
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D648
|
||||
_0807D646:
|
||||
movs r3, #0x20
|
||||
_0807D648:
|
||||
adds r7, r5, #0
|
||||
adds r7, #0xa8
|
||||
adds r5, #0xb0
|
||||
mov sl, r5
|
||||
cmp r3, #0
|
||||
ble _0807D66A
|
||||
movs r5, #0x1f
|
||||
_0807D656:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, #2
|
||||
adds r2, #1
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D656
|
||||
_0807D66A:
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #0x18]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #3
|
||||
add r0, ip
|
||||
mov r2, sl
|
||||
ldrh r1, [r1, #0x20]
|
||||
cmp r7, r1
|
||||
blt _0807D67E
|
||||
adds r2, r7, #0
|
||||
_0807D67E:
|
||||
cmp r0, r2
|
||||
bge _0807D6CC
|
||||
asrs r2, r0, #3
|
||||
lsls r0, r2, #8
|
||||
ldr r1, [sp]
|
||||
adds r0, r1, r0
|
||||
mov r1, r8
|
||||
asrs r3, r1, #3
|
||||
lsls r1, r3, #1
|
||||
adds r4, r0, r1
|
||||
movs r0, #0x1f
|
||||
ands r2, r0
|
||||
lsls r2, r2, #6
|
||||
ldr r1, [sp, #4]
|
||||
adds r6, r1, r2
|
||||
adds r2, r0, #0
|
||||
ands r2, r3
|
||||
mov r3, sb
|
||||
ldrh r0, [r3, #0x1e]
|
||||
lsls r1, r0, #0x10
|
||||
lsrs r0, r1, #0x10
|
||||
cmp r0, #0xff
|
||||
bhi _0807D6B0
|
||||
lsrs r3, r1, #0x13
|
||||
b _0807D6B2
|
||||
_0807D6B0:
|
||||
movs r3, #0x20
|
||||
_0807D6B2:
|
||||
cmp r3, #0
|
||||
ble _0807D6CC
|
||||
movs r5, #0x1f
|
||||
_0807D6B8:
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r4]
|
||||
strh r1, [r0]
|
||||
adds r4, #2
|
||||
adds r2, #1
|
||||
ands r2, r5
|
||||
subs r3, #1
|
||||
cmp r3, #0
|
||||
bgt _0807D6B8
|
||||
_0807D6CC:
|
||||
add sp, #8
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,482 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x44
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r5, _0807D8BC @ =gRoomControls
|
||||
ldrh r0, [r5, #0x18]
|
||||
cmp r0, #0
|
||||
bne _0807D6F2
|
||||
b _0807DA62
|
||||
_0807D6F2:
|
||||
ldrh r0, [r5, #0x1a]
|
||||
cmp r0, #0
|
||||
bne _0807D6FA
|
||||
b _0807DA62
|
||||
_0807D6FA:
|
||||
movs r1, #0xa
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r5, #6]
|
||||
subs r0, r0, r1
|
||||
movs r4, #0x10
|
||||
rsbs r4, r4, #0
|
||||
ands r0, r4
|
||||
str r0, [sp, #0x24]
|
||||
ldr r3, [r5, #0x30]
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r3, r2]
|
||||
subs r0, r0, r1
|
||||
movs r2, #8
|
||||
rsbs r2, r2, #0
|
||||
ands r0, r2
|
||||
str r0, [sp, #0x14]
|
||||
ldr r1, [sp, #0x24]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x1c]
|
||||
movs r1, #0xc
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r5, #8]
|
||||
subs r0, r0, r1
|
||||
ands r0, r4
|
||||
str r0, [sp, #0x28]
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r3, r4]
|
||||
subs r0, r0, r1
|
||||
ands r0, r2
|
||||
str r0, [sp, #0x18]
|
||||
ldr r1, [sp, #0x28]
|
||||
subs r0, r0, r1
|
||||
str r0, [sp, #0x20]
|
||||
ldrh r0, [r5, #0x18]
|
||||
adds r2, r0, #0
|
||||
muls r2, r0, r2
|
||||
str r2, [sp, #0xc]
|
||||
ldrh r3, [r5, #0x1a]
|
||||
str r3, [sp, #8]
|
||||
adds r4, r3, #0
|
||||
muls r4, r3, r4
|
||||
str r4, [sp, #0x10]
|
||||
adds r4, r0, #0
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
lsls r0, r4, #1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #1
|
||||
ldr r1, [sp, #0x10]
|
||||
muls r0, r1, r0
|
||||
lsls r6, r2, #1
|
||||
adds r7, r0, r6
|
||||
adds r2, r4, #0
|
||||
muls r2, r1, r2
|
||||
mov r8, r2
|
||||
mov r0, r8
|
||||
ldr r1, [sp, #0xc]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
cmp sb, ip
|
||||
ble _0807D778
|
||||
b _0807D8D8
|
||||
_0807D778:
|
||||
mov sl, r5
|
||||
ldr r3, [sp, #0xc]
|
||||
adds r0, r6, r3
|
||||
lsls r0, r0, #1
|
||||
str r0, [sp, #0x3c]
|
||||
mov r0, r8
|
||||
str r0, [sp, #0x40]
|
||||
ldr r1, [sp, #0x14]
|
||||
subs r1, r1, r4
|
||||
mov r8, r1
|
||||
ldr r2, [sp, #0x14]
|
||||
adds r6, r4, r2
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
ldr r3, [sp, #0x24]
|
||||
adds r0, r3, r0
|
||||
str r0, [sp, #0x2c]
|
||||
_0807D79A:
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #0xb0
|
||||
ldr r1, [sp, #0x18]
|
||||
add r1, sb
|
||||
cmp r0, r1
|
||||
ble _0807D812
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, sb
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D812
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x2c]
|
||||
cmp r0, r6
|
||||
ble _0807D7EA
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D7EA:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D812
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D812:
|
||||
ldr r0, [sp, #0x18]
|
||||
mov r2, sb
|
||||
subs r1, r0, r2
|
||||
adds r0, r1, #0
|
||||
adds r0, #8
|
||||
ldr r3, [sp, #0x28]
|
||||
cmp r3, r0
|
||||
bge _0807D88E
|
||||
ldr r3, [sp, #0x20]
|
||||
subs r0, r3, r2
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D88E
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x2c]
|
||||
cmp r0, r6
|
||||
ble _0807D866
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D866:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D88E
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D88E:
|
||||
cmp r7, #0
|
||||
ble _0807D8C0
|
||||
lsls r0, r4, #2
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #4
|
||||
ldr r1, [sp, #0x10]
|
||||
muls r0, r1, r0
|
||||
ldr r2, [sp, #0x3c]
|
||||
adds r0, r0, r2
|
||||
adds r7, r7, r0
|
||||
ldr r3, [sp, #0x40]
|
||||
subs r3, r3, r1
|
||||
str r3, [sp, #0x40]
|
||||
movs r0, #1
|
||||
add r8, r0
|
||||
subs r6, #1
|
||||
subs r4, #1
|
||||
adds r0, r3, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
b _0807D8C4
|
||||
.align 2, 0
|
||||
_0807D8BC: .4byte gRoomControls
|
||||
_0807D8C0:
|
||||
ldr r1, [sp, #0x3c]
|
||||
adds r7, r7, r1
|
||||
_0807D8C4:
|
||||
ldr r2, [sp, #0xc]
|
||||
lsls r0, r2, #2
|
||||
ldr r3, [sp, #0x3c]
|
||||
adds r3, r3, r0
|
||||
str r3, [sp, #0x3c]
|
||||
movs r0, #1
|
||||
add sb, r0
|
||||
cmp sb, ip
|
||||
bgt _0807D8D8
|
||||
b _0807D79A
|
||||
_0807D8D8:
|
||||
movs r4, #0
|
||||
ldr r1, [sp, #8]
|
||||
mov sb, r1
|
||||
ldr r2, [sp, #0x10]
|
||||
lsls r6, r2, #1
|
||||
lsls r0, r1, #1
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #1
|
||||
ldr r3, [sp, #0xc]
|
||||
muls r0, r3, r0
|
||||
adds r7, r6, r0
|
||||
mov r5, sb
|
||||
muls r5, r3, r5
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
cmp r4, ip
|
||||
ble _0807D902
|
||||
b _0807DA62
|
||||
_0807D902:
|
||||
ldr r0, _0807DA40 @ =gRoomControls
|
||||
mov sl, r0
|
||||
ldr r1, [sp, #0x10]
|
||||
adds r0, r6, r1
|
||||
lsls r0, r0, #1
|
||||
str r0, [sp, #0x34]
|
||||
ldr r6, [sp, #0x14]
|
||||
mov r8, r6
|
||||
str r5, [sp, #0x38]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #1
|
||||
ldr r2, [sp, #0x24]
|
||||
adds r3, r2, r3
|
||||
str r3, [sp, #0x30]
|
||||
_0807D91E:
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #0xb0
|
||||
ldr r1, [sp, #0x18]
|
||||
add r1, sb
|
||||
cmp r0, r1
|
||||
ble _0807D996
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, sb
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807D996
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, r6
|
||||
ble _0807D96E
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D96E:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807D996
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #0x20
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807D996:
|
||||
ldr r0, [sp, #0x18]
|
||||
mov r2, sb
|
||||
subs r1, r0, r2
|
||||
adds r0, r1, #0
|
||||
adds r0, #8
|
||||
ldr r3, [sp, #0x28]
|
||||
cmp r3, r0
|
||||
bge _0807DA12
|
||||
ldr r3, [sp, #0x20]
|
||||
subs r0, r3, r2
|
||||
asrs r0, r0, #3
|
||||
movs r5, #0x1f
|
||||
ands r0, r5
|
||||
cmp r0, #0x1f
|
||||
beq _0807DA12
|
||||
lsls r0, r0, #6
|
||||
ldr r3, [sp, #4]
|
||||
adds r2, r3, r0
|
||||
asrs r0, r1, #3
|
||||
lsls r0, r0, #8
|
||||
ldr r1, [sp]
|
||||
adds r3, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, r6
|
||||
ble _0807D9EA
|
||||
ldr r0, [sp, #0x1c]
|
||||
adds r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
asrs r0, r6, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r1, sl
|
||||
ldrh r0, [r1, #0x1c]
|
||||
movs r1, #0x40
|
||||
orrs r0, r1
|
||||
mov r1, sl
|
||||
strh r0, [r1, #0x1c]
|
||||
_0807D9EA:
|
||||
ldr r0, [sp, #0x24]
|
||||
cmp r0, r8
|
||||
bge _0807DA12
|
||||
ldr r0, [sp, #0x1c]
|
||||
subs r1, r0, r4
|
||||
asrs r1, r1, #3
|
||||
ands r1, r5
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
mov r2, r8
|
||||
asrs r0, r2, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r3
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
mov r3, sl
|
||||
ldrh r0, [r3, #0x1c]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #0x1c]
|
||||
_0807DA12:
|
||||
cmp r7, #0
|
||||
ble _0807DA44
|
||||
mov r1, sb
|
||||
lsls r0, r1, #2
|
||||
rsbs r0, r0, #0
|
||||
adds r0, #4
|
||||
ldr r2, [sp, #0xc]
|
||||
muls r0, r2, r0
|
||||
ldr r3, [sp, #0x34]
|
||||
adds r0, r3, r0
|
||||
adds r7, r7, r0
|
||||
ldr r0, [sp, #0x38]
|
||||
subs r0, r0, r2
|
||||
str r0, [sp, #0x38]
|
||||
movs r1, #1
|
||||
rsbs r1, r1, #0
|
||||
add sb, r1
|
||||
ldr r1, [sp, #0x10]
|
||||
bl __divsi3
|
||||
mov ip, r0
|
||||
b _0807DA48
|
||||
.align 2, 0
|
||||
_0807DA40: .4byte gRoomControls
|
||||
_0807DA44:
|
||||
ldr r2, [sp, #0x34]
|
||||
adds r7, r7, r2
|
||||
_0807DA48:
|
||||
ldr r3, [sp, #0x10]
|
||||
lsls r0, r3, #2
|
||||
ldr r1, [sp, #0x34]
|
||||
adds r1, r1, r0
|
||||
str r1, [sp, #0x34]
|
||||
movs r2, #1
|
||||
rsbs r2, r2, #0
|
||||
add r8, r2
|
||||
adds r6, #1
|
||||
adds r4, #1
|
||||
cmp r4, ip
|
||||
bgt _0807DA62
|
||||
b _0807D91E
|
||||
_0807DA62:
|
||||
add sp, #0x44
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,81 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, #0xc
|
||||
adds r7, r1, #0
|
||||
bl sub_0807D1C4
|
||||
adds r5, r0, #0
|
||||
ldrh r0, [r5, #2]
|
||||
add r4, sp, #4
|
||||
adds r1, r4, #0
|
||||
bl sub_0807D0EC
|
||||
adds r6, r0, #0
|
||||
mov r8, r4
|
||||
cmp r6, #2
|
||||
bne _0807D048
|
||||
ldrh r0, [r5, #6]
|
||||
ldrh r2, [r5]
|
||||
adds r1, r7, #0
|
||||
bl sub_0807D1D8
|
||||
cmp r0, #0
|
||||
beq _0807D046
|
||||
ldrh r2, [r5]
|
||||
mov r0, r8
|
||||
adds r1, r7, #0
|
||||
bl sub_0807D0A0
|
||||
cmp r0, #0
|
||||
bne _0807D072
|
||||
_0807D046:
|
||||
movs r6, #0
|
||||
_0807D048:
|
||||
ldrh r0, [r5, #4]
|
||||
mov r1, r8
|
||||
bl sub_0807D0EC
|
||||
adds r4, r0, #0
|
||||
cmp r4, #2
|
||||
bne _0807D078
|
||||
ldrh r0, [r5, #8]
|
||||
ldrh r2, [r5]
|
||||
adds r1, r7, #0
|
||||
bl sub_0807D1D8
|
||||
cmp r0, #0
|
||||
beq _0807D076
|
||||
ldrh r2, [r5]
|
||||
mov r0, r8
|
||||
adds r1, r7, #0
|
||||
bl sub_0807D0A0
|
||||
cmp r0, #0
|
||||
beq _0807D076
|
||||
_0807D072:
|
||||
movs r0, #1
|
||||
b _0807D098
|
||||
_0807D076:
|
||||
movs r4, #0
|
||||
_0807D078:
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
ldrh r2, [r5]
|
||||
lsrs r2, r2, #2
|
||||
movs r0, #0xa0
|
||||
lsls r0, r0, #0x13
|
||||
orrs r2, r0
|
||||
mov r0, sp
|
||||
adds r1, r7, #0
|
||||
bl CpuSet
|
||||
orrs r6, r4
|
||||
movs r0, #0
|
||||
cmp r6, #0
|
||||
bne _0807D098
|
||||
subs r0, #1
|
||||
_0807D098:
|
||||
add sp, #0xc
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
adds r5, r1, #0
|
||||
adds r6, r2, #0
|
||||
adds r0, r7, #4
|
||||
movs r1, #4
|
||||
bl sub_0807D1A4
|
||||
adds r4, r0, #0
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
adds r0, r5, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_0807D1A4
|
||||
adds r4, r4, r0
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
ldrh r0, [r7]
|
||||
cmp r0, r4
|
||||
bne _0807D0DE
|
||||
lsls r0, r0, #0x10
|
||||
ldrh r1, [r7, #2]
|
||||
rsbs r0, r0, #0
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r1, r0
|
||||
bne _0807D0DE
|
||||
ldr r1, [r7, #4]
|
||||
ldr r0, _0807D0E4 @ =0x4D435A33
|
||||
cmp r1, r0
|
||||
beq _0807D0E8
|
||||
_0807D0DE:
|
||||
movs r0, #0
|
||||
b _0807D0EA
|
||||
.align 2, 0
|
||||
_0807D0E4: .4byte 0x4D435A33
|
||||
_0807D0E8:
|
||||
movs r0, #1
|
||||
_0807D0EA:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
lsrs r4, r2, #3
|
||||
adds r0, r4, #0
|
||||
lsrs r5, r5, #3
|
||||
b _0807D200
|
||||
_0807D1E6:
|
||||
lsls r0, r5, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
adds r1, r6, #0
|
||||
bl sub_080B15E8
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0807D1FA
|
||||
movs r0, #0
|
||||
b _0807D208
|
||||
_0807D1FA:
|
||||
adds r5, #1
|
||||
adds r6, #8
|
||||
adds r0, r4, #0
|
||||
_0807D200:
|
||||
subs r4, #1
|
||||
cmp r0, #0
|
||||
bne _0807D1E6
|
||||
movs r0, #1
|
||||
_0807D208:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
adds r7, r1, #0
|
||||
lsrs r5, r2, #3
|
||||
adds r0, r5, #0
|
||||
lsrs r6, r6, #3
|
||||
b _0807D242
|
||||
_0807D21A:
|
||||
lsls r0, r6, #0x10
|
||||
lsrs r4, r0, #0x10
|
||||
adds r0, r4, #0
|
||||
adds r1, r7, #0
|
||||
bl sub_080B18DC
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0807D23C
|
||||
adds r0, r4, #0
|
||||
ldr r1, _0807D238 @ =gUnk_0811E4B4
|
||||
bl sub_080B18DC
|
||||
movs r0, #0
|
||||
b _0807D24A
|
||||
.align 2, 0
|
||||
_0807D238: .4byte gUnk_0811E4B4
|
||||
_0807D23C:
|
||||
adds r6, #1
|
||||
adds r7, #8
|
||||
adds r0, r5, #0
|
||||
_0807D242:
|
||||
subs r5, #1
|
||||
cmp r0, #0
|
||||
bne _0807D21A
|
||||
movs r0, #1
|
||||
_0807D24A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
.syntax divided
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
lsrs r4, r2, #3
|
||||
adds r0, r4, #0
|
||||
lsrs r5, r5, #3
|
||||
b _0807D274
|
||||
_0807D25A:
|
||||
lsls r0, r5, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
adds r1, r6, #0
|
||||
bl sub_080B180C
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0807D26E
|
||||
movs r0, #0
|
||||
b _0807D27C
|
||||
_0807D26E:
|
||||
adds r5, #1
|
||||
adds r6, #8
|
||||
adds r0, r4, #0
|
||||
_0807D274:
|
||||
subs r4, #1
|
||||
cmp r0, #0
|
||||
bne _0807D25A
|
||||
movs r0, #1
|
||||
_0807D27C:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
||||
+2
-7
@@ -23,7 +23,6 @@ extern u32 CheckKinstoneFused(u32);
|
||||
extern void ForceEquipItem(u8, u8);
|
||||
extern void LoadRoomEntityList();
|
||||
void CopyPosition(Entity*, Entity*);
|
||||
extern u32* StartCutscene(Entity*, u8*);
|
||||
extern void ResolveEntityOnTop(Entity*, Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
|
||||
extern u32 GetAnimationState(Entity*);
|
||||
@@ -43,7 +42,6 @@ extern void UpdateAnimationVariableFrames(Entity*, u32);
|
||||
extern void CopyPositionAndSpriteOffset(Entity*, Entity*);
|
||||
extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
|
||||
extern u32 LoadFixedGFX(Entity*, u32);
|
||||
extern void ExecuteScriptCommandSet();
|
||||
extern void _DmaFill32(u32, void*, u32);
|
||||
extern Entity* CreateItemEntity(u32, u32, u32);
|
||||
void _DmaCopy(const void* src, void* dst, u32 size);
|
||||
@@ -86,13 +84,11 @@ extern void sub_0806F69C(Entity*);
|
||||
extern void sub_0805E3A0(void*, u32);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0807DD64(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern s32 sub_0806ED9C(Entity*, u32, u32);
|
||||
extern void sub_0807000C(Entity*);
|
||||
extern void sub_0805E47C(Entity*);
|
||||
@@ -106,7 +102,6 @@ extern void sub_0806FD3C(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0805ED14(u32*);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_08068BEC(Entity*, u32);
|
||||
@@ -222,9 +217,9 @@ extern void sub_080B1520(u32);
|
||||
extern struct_0807D1C4* sub_0807D1C4(u32);
|
||||
extern u32 sub_0807D24C(u32, const char*, u32);
|
||||
extern void sub_0807CF68(u32);
|
||||
extern void sub_0807D20C(u32, const char*, u32);
|
||||
extern u32 sub_0807D20C(u32, const char*, u32);
|
||||
extern u32 sub_0807CF88(u32, u8*);
|
||||
extern void sub_0807D184(u32, const char*);
|
||||
extern u32 sub_0807D184(u32, const char*);
|
||||
extern u32 sub_0806F520();
|
||||
extern void sub_0806F4E8(Entity*);
|
||||
extern u32 sub_0806F3E4(Entity*);
|
||||
|
||||
+7
-4
@@ -4,17 +4,17 @@
|
||||
#include "global.h"
|
||||
|
||||
typedef struct {
|
||||
u16 * unk_00;
|
||||
u16* unk_00;
|
||||
u32 unk_04;
|
||||
u32 unk_08;
|
||||
u8 unk_0C[0x4];//unused
|
||||
u8 unk_0C[0x4]; // unused
|
||||
u16 unk_10;
|
||||
u16 unk_12;
|
||||
u32 unk_14;
|
||||
u8 unk_18;
|
||||
u8 unk_19;
|
||||
u8 unk_1A;
|
||||
u8 unk_1B;//unused
|
||||
u8 unk_1B; // unused
|
||||
union SplitWord unk_1C;
|
||||
union SplitWord unk_20;
|
||||
} ScriptExecutionContext;
|
||||
@@ -26,8 +26,11 @@ extern u32 GetNextScriptCommandWord(u16*);
|
||||
extern u32 GetNextScriptCommandWordAfterCommandMetadata(u16*);
|
||||
extern u32 GetNextScriptCommandHalfwordAfterCommandMetadata(u16*);
|
||||
|
||||
extern void StartPlayerScript(u32);
|
||||
extern void StartPlayerScript(u16*);
|
||||
|
||||
extern void sub_0807DEDC(Entity*, ScriptExecutionContext*, u32, u32);
|
||||
|
||||
extern ScriptExecutionContext* StartCutscene(Entity*, u16*);
|
||||
extern void sub_0807DDAC(Entity*, void(*function)(Entity*, ScriptExecutionContext*));
|
||||
extern void sub_0807DD94(Entity*, void(*function)(Entity*, ScriptExecutionContext*));
|
||||
#endif
|
||||
|
||||
@@ -177,6 +177,6 @@ static_assert(sizeof(BG3Buffer) == 0x1000);
|
||||
*/
|
||||
|
||||
extern u8 gUnk_02022740[];
|
||||
extern u8 gUnk_02034490;
|
||||
extern u8 gUnk_02034490[];
|
||||
|
||||
#endif
|
||||
|
||||
@@ -84,7 +84,7 @@ SECTIONS {
|
||||
. = 0x00022130; gUnk_02022130 = .;
|
||||
. = 0x00022730; gUnk_02022730 = .;
|
||||
. = 0x00022740; gUnk_02022740 = .;
|
||||
. = 0x00022750; gUnk_02022750 = .;
|
||||
. = 0x00022750; gPlayerScriptExecutionContext = .;
|
||||
. = 0x00022780; gUnk_02022780 = .;
|
||||
. = 0x000227DC; gUnk_020227DC = .;
|
||||
. = 0x000227E8; gUnk_020227E8 = .;
|
||||
@@ -144,7 +144,7 @@ SECTIONS {
|
||||
. = 0x00035540; gUnk_02035540 = .;
|
||||
. = 0x00035542; gUnk_02035542 = .;
|
||||
. = 0x00036540; gUnk_02036540 = .;
|
||||
. = 0x00036570; gUnk_02036570 = .;
|
||||
. = 0x00036570; gScriptExecutionContextArray = .;
|
||||
. = 0x000369F0; gUnk_020369F0 = .;
|
||||
. = 0x00036A38; gUnk_02036A38 = .;
|
||||
. = 0x00036A40; gUnk_02036A40 = .;
|
||||
@@ -672,8 +672,8 @@ SECTIONS {
|
||||
asm/code_0807CAA0.o(.text);
|
||||
src/flags.o(.text);
|
||||
src/save.o(.text);
|
||||
asm/code_0807CC3C.o(.text);
|
||||
src/executeScriptCommandSet.o(.text);
|
||||
src/code_0807CC3C.o(.text);
|
||||
src/script.o(.text);
|
||||
asm/code_0807F0D8.o(.text);
|
||||
src/code_0808091C.o(.text);
|
||||
asm/code_0808091C.o(.text);
|
||||
@@ -1019,7 +1019,7 @@ SECTIONS {
|
||||
data/room_headers.o(.rodata);
|
||||
src/save.o(.rodata);
|
||||
data/data_0811E454.o(.rodata);
|
||||
src/executeScriptCommandSet.o(.rodata);
|
||||
src/script.o(.rodata);
|
||||
data/data_0811E750.o(.rodata);
|
||||
src/object/greatFairy.o(.rodata);
|
||||
data/animations/greatFairy.o(.rodata);
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#include "global.h"
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "script.h"
|
||||
#include "entity.h"
|
||||
#include "save.h"
|
||||
|
||||
// these three functions use gRoomControls, maybe once that is understood better, these can be decompiled easier
|
||||
NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D280.inc", void sub_0807D280(u32 unk_1, u32 unk_2)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D46C.inc", void sub_0807D46C(u32 unk_1, u32 unk_2)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D6D8.inc", void sub_0807D6D8(u32 unk_1, u32 unk_2)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "screen.h"
|
||||
#include "manager.h"
|
||||
#include "functions.h"
|
||||
#include "structures.h"
|
||||
|
||||
typedef struct {
|
||||
Manager manager;
|
||||
@@ -293,7 +294,6 @@ void sub_0805A758(Manager15* this) {
|
||||
}
|
||||
}
|
||||
|
||||
extern u8 gUnk_02034490;
|
||||
extern void sub_0805E4E0(Manager*, u32);
|
||||
extern void sub_08077B20(void);
|
||||
|
||||
@@ -308,7 +308,7 @@ void sub_0805A76C(Manager15* this) {
|
||||
gPlayerEntity.animationState = 4;
|
||||
sub_0805E4E0(&this->manager, 0x258);
|
||||
sub_08078A90(0xFF);
|
||||
gUnk_02034490 = 1;
|
||||
gUnk_02034490[0] = 1;
|
||||
gRoomControls.cameraTarget = 0;
|
||||
sub_08077B20();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "manager.h"
|
||||
#include "functions.h"
|
||||
#include "structures.h"
|
||||
#include "gba/gba.h"
|
||||
|
||||
typedef struct {
|
||||
@@ -18,7 +19,6 @@ extern void sub_08052D74();
|
||||
extern u32 sub_08056300(const u16*);
|
||||
extern void sub_0805E3A0();
|
||||
|
||||
extern u8 gUnk_02034490;
|
||||
extern const u8 gGlobalGfxAndPalettes[];
|
||||
|
||||
const u16 gUnk_08108050[0x2A] = { 0, 0, 0x20, 0xE0, 0xE0, 1, 0, 0x1D0, 0x80, 0x60, 2,
|
||||
@@ -63,7 +63,7 @@ void Manager7_Main(Manager7* this) {
|
||||
tmp2 = &gUnk_081080A4[tmp << 4];
|
||||
switch (this->manager.unk_0e) {
|
||||
case 0:
|
||||
gUnk_02034490 = 1;
|
||||
gUnk_02034490[0] = 1;
|
||||
LoadAssetAsync(&gGlobalGfxAndPalettes[tmp2[0]], tmp2[1], 0x1000);
|
||||
LoadPaletteGroup(gUnk_081081E4[tmp]);
|
||||
this->manager.unk_0e++;
|
||||
@@ -80,7 +80,7 @@ void Manager7_Main(Manager7* this) {
|
||||
this->manager.unk_0e++;
|
||||
break;
|
||||
case 8:
|
||||
gUnk_02034490 = 0;
|
||||
gUnk_02034490[0] = 0;
|
||||
this->manager.unk_0e++;
|
||||
break;
|
||||
}
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@
|
||||
#include "textbox.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
#include "script.h"
|
||||
|
||||
typedef struct {
|
||||
u32 unk_00;
|
||||
@@ -108,7 +109,7 @@ void sub_08063410(Entity* this) {
|
||||
if (this->entityType.form != 0) {
|
||||
sub_0806346C(this);
|
||||
}
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
#include "player.h"
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void (*gUnk_081140D4[])(Entity*);
|
||||
|
||||
extern u16 gUnk_081140CC[];
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0807DD64(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void PlaySFX(u32);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
@@ -28,7 +28,7 @@ void sub_0806CF30(Entity* this) {
|
||||
sub_0806D0B0(this);
|
||||
sub_0807DD64(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "room.h"
|
||||
#include "textbox.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void (*gUnk_081115C0[])(Entity*);
|
||||
extern void (*gUnk_081115D0[])(Entity*);
|
||||
@@ -126,7 +127,7 @@ void FUN_08068b2c(Entity* this) {
|
||||
InitAnimationForceUpdate(this, uVar1);
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -3,12 +3,12 @@
|
||||
#include "functions.h"
|
||||
#include "npc.h"
|
||||
#include "player.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void ExecuteScriptCommandSet(Entity*, void*);
|
||||
extern void sub_0805FF2C(Entity*, void*);
|
||||
|
||||
extern void (*const gUnk_08109BBC[])(Entity*);
|
||||
@@ -38,7 +38,7 @@ void sub_0805FE48(Entity* this) {
|
||||
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
ExecuteScriptCommandSet(this, *(void**)&this->cutsceneBeh);
|
||||
ExecuteScriptCommandSet(this, *(ScriptExecutionContext **)&this->cutsceneBeh);
|
||||
sub_0805FF2C(this, *(void**)&this->cutsceneBeh);
|
||||
uVar4 = this->field_0x80.HWORD;
|
||||
if (uVar4 < 8) {
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_080600F0(Entity*);
|
||||
extern s32 sub_0806EDD8(Entity*, u32, u32);
|
||||
@@ -41,7 +41,7 @@ void ForestMinish(Entity* this) {
|
||||
this->field_0x68.HALF.HI = this->animationState = this->actionDelay << 1;
|
||||
this->actionDelay = 0;
|
||||
sub_0805E3A0(this, 2);
|
||||
StartCutscene(this, gUnk_08109D18[this->entityType.parameter]);
|
||||
StartCutscene(this, (u16*)gUnk_08109D18[this->entityType.parameter]);
|
||||
sub_0807DD50(this);
|
||||
}
|
||||
break;
|
||||
@@ -51,7 +51,7 @@ void ForestMinish(Entity* this) {
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
if (this->frameDuration != 0xf0) {
|
||||
sub_080600F0(this);
|
||||
|
||||
+2
-1
@@ -2,6 +2,7 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "textbox.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void (*gUnk_08111A80[])(Entity*);
|
||||
extern void (*gUnk_08111A8C[])(Entity*);
|
||||
@@ -61,7 +62,7 @@ void sub_080693C4(Entity* this) {
|
||||
void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65);
|
||||
|
||||
void sub_080693D0(Entity* this) {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
if (this->animIndex == 8) {
|
||||
u32 var0 = this->field_0x82.HWORD & 0xF;
|
||||
bool32 createFx65 = BOOLCAST(var0); // = !var0
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "textbox.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u32 sub_080696BC(Entity*);
|
||||
|
||||
@@ -70,7 +71,7 @@ void sub_0806963C(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08069654(Entity* this) {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
|
||||
void sub_08069660(Entity* this) {
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@
|
||||
#include "flags.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u16 gUnk_08112D48[];
|
||||
|
||||
@@ -24,7 +25,7 @@ void Librari(Entity* this) {
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "functions.h"
|
||||
#include "entity.h"
|
||||
#include "script.h"
|
||||
|
||||
extern Entity gPlayerEntity;
|
||||
|
||||
@@ -44,7 +45,7 @@ void sub_080658BC(Entity* this) {
|
||||
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_08078850();
|
||||
extern u32 gUnk_08113F44;
|
||||
@@ -43,7 +43,7 @@ void MayorHagen(Entity* this) {
|
||||
sub_0806F118(this);
|
||||
break;
|
||||
}
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
break;
|
||||
|
||||
+2
-2
@@ -3,12 +3,12 @@
|
||||
#include "npc.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_08068780(Entity*);
|
||||
extern void sub_08078778(Entity*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern u32 sub_080040A8(Entity*);
|
||||
extern void EnqueueSFX(u32);
|
||||
@@ -82,7 +82,7 @@ void sub_08068780(Entity* this) {
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,12 +7,12 @@
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern u32 UpdateFuseInteraction(Entity*);
|
||||
extern void sub_0807000C(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
@@ -43,7 +43,7 @@ void Mutoh(Entity* this) {
|
||||
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 4);
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "flags.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0806B41C(Entity*);
|
||||
extern void sub_0806B3CC(Entity*);
|
||||
@@ -77,7 +78,7 @@ void sub_0806B41C(Entity* this) {
|
||||
sub_0801DFB4(this, tmp[0], tmp[1], tmp[2]);
|
||||
gPlayerState.field_0x8b = 3;
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
||||
+4
-5
@@ -7,6 +7,7 @@
|
||||
#include "room.h"
|
||||
#include "structures.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_08060528(Entity*);
|
||||
extern void* GetCurrentRoomProperty(u32);
|
||||
@@ -21,13 +22,11 @@ extern void sub_0806F118(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_080606D8(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_080788E0(Entity*);
|
||||
extern void EnqueueSFX(u32);
|
||||
extern void sub_080606C0(Entity*);
|
||||
extern void sub_0800451C(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DEDC(Entity*, u32, u32, u32);
|
||||
|
||||
typedef struct {
|
||||
s16 x;
|
||||
@@ -145,7 +144,7 @@ void sub_08060528(Entity* this) {
|
||||
sub_080606D8(this);
|
||||
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -202,12 +201,12 @@ void sub_080606D8(Entity* this) {
|
||||
ShowNPCDialogue(this, &gUnk_0810AA30[index]);
|
||||
}
|
||||
|
||||
void sub_08060700(Entity* entity, u32 arg1) {
|
||||
void sub_08060700(Entity* entity, ScriptExecutionContext* context) {
|
||||
s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO];
|
||||
Coords16* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]];
|
||||
u32 x = coords->x + gRoomControls.roomOriginX;
|
||||
u32 y = coords->y + gRoomControls.roomOriginY;
|
||||
sub_0807DEDC(entity, arg1, x, y);
|
||||
sub_0807DEDC(entity, context, x, y);
|
||||
gUnk_02033280.unk_07 |= 1;
|
||||
}
|
||||
|
||||
|
||||
+5
-6
@@ -1,12 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "functions.h"
|
||||
#include "entity.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void PlaySFX(u32);
|
||||
extern void sub_0806A8C8(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
|
||||
extern void (*gUnk_08112260[])(Entity*);
|
||||
extern void (*gUnk_08112278[])(Entity*);
|
||||
@@ -21,7 +20,7 @@ void sub_0806a370(Entity* this) {
|
||||
u8* pbVar1;
|
||||
|
||||
gUnk_08112278[this->action](this);
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
sub_0806ED78(this);
|
||||
@@ -39,13 +38,13 @@ void sub_0806a370(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0806A3D8(Entity* this) {
|
||||
u32* uVar1;
|
||||
ScriptExecutionContext* uVar1;
|
||||
|
||||
this->action = 1;
|
||||
this->actionDelay = 0xb4;
|
||||
sub_0805E3A0(this, 2);
|
||||
sub_0806A8C8(this);
|
||||
uVar1 = StartCutscene(this, &gUnk_08012F0C);
|
||||
*(u32*)&this->cutsceneBeh = (u32)uVar1;
|
||||
sub_0807DD94(this, 0);
|
||||
*(ScriptExecutionContext**)&this->cutsceneBeh = uVar1;
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
|
||||
+2
-1
@@ -3,6 +3,7 @@
|
||||
#include "functions.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "script.h"
|
||||
|
||||
typedef struct {
|
||||
u8 filler[4];
|
||||
@@ -22,7 +23,7 @@ void Simon(Entity* this) {
|
||||
this->action++;
|
||||
sub_0807DD50(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-5
@@ -3,6 +3,7 @@
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
@@ -12,8 +13,6 @@ extern void PlaySFX(u32);
|
||||
extern void sub_0807000C(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern u32 UpdateFuseInteraction(Entity*);
|
||||
extern u32 GetAnimationState(Entity*);
|
||||
@@ -118,7 +117,7 @@ void sub_08066178(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080661B0(Entity* this) {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
|
||||
void sub_080661BC(Entity* this) {
|
||||
@@ -131,12 +130,12 @@ void sub_080661BC(Entity* this) {
|
||||
InitAnimationForceUpdate(this, this->field_0x80.HWORD);
|
||||
}
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08066200(Entity* this) {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
|
||||
+2
-2
@@ -2,13 +2,13 @@
|
||||
#include "entity.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_08078778(Entity*);
|
||||
extern void sub_0805E47C(Entity*);
|
||||
extern void sub_0805E584();
|
||||
extern void sub_0807DD64();
|
||||
extern void sub_08062CA4();
|
||||
extern void sub_0807DDAC();
|
||||
extern void sub_0807DDE4();
|
||||
extern u32 CheckKinstoneFused();
|
||||
|
||||
@@ -68,7 +68,7 @@ void sub_08062C7C(Entity* ent) {
|
||||
}
|
||||
|
||||
void sub_08062CA4(Entity* ent) {
|
||||
sub_0807DDAC(ent, 0);
|
||||
sub_0807DDAC(ent, NULL);
|
||||
sub_0807DDE4(ent);
|
||||
GetNextFrame(ent);
|
||||
}
|
||||
|
||||
+4
-3
@@ -3,6 +3,7 @@
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "player.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void (*gUnk_0810FEC4[])(Entity* this);
|
||||
extern void (*gUnk_0810FEBC[])(Entity* this);
|
||||
@@ -77,7 +78,7 @@ void sub_08065648(Entity* this) {
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +107,7 @@ void sub_080656D4(Entity* this) {
|
||||
} else {
|
||||
if (this->interactType != 0) {
|
||||
if (GetInventoryValue(0x37) != 0) { // keyLonLon
|
||||
StartCutscene(this, &gUnk_0800B41C);
|
||||
StartCutscene(this, (u16*)&gUnk_0800B41C);
|
||||
goto label2;
|
||||
} else {
|
||||
this->field_0x68.HALF.HI = this->action;
|
||||
@@ -118,7 +119,7 @@ void sub_080656D4(Entity* this) {
|
||||
}
|
||||
} else {
|
||||
label2:
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
#include "player.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern SpriteLoadData gUnk_08113910[];
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern u32 UpdateFuseInteraction(Entity*);
|
||||
extern void sub_0807000C(Entity*);
|
||||
@@ -37,7 +37,7 @@ void Teachers(Entity* this) {
|
||||
(this->animIndex & -4) + sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "textbox.h"
|
||||
#include "flags.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void InitializeAnimation(Entity*, u32);
|
||||
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
|
||||
@@ -111,7 +112,7 @@ void sub_0806ACC4(Entity* this) {
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0806AEA8(this);
|
||||
if (this->entityType.parameter == 10 && this->interactType) {
|
||||
this->action = 2;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
typedef struct {
|
||||
u8 frame1;
|
||||
@@ -30,7 +31,6 @@ extern void sub_08061D64(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_08062048(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
@@ -144,7 +144,7 @@ void sub_08061D64(Entity* this) {
|
||||
this->field_0x68.HALF.HI = this->animIndex;
|
||||
InitializeAnimation(this, (this->animIndex & -4) + sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
if (this->frameDuration == 0xff) {
|
||||
this->frameDuration = gUnk_0810B680[this->entityType.form].unk2;
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806C7D4(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0807DD80(Entity*, u32*);
|
||||
extern u32 sub_0801E99C();
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
@@ -54,7 +54,7 @@ void sub_0806C7D4(Entity* this) {
|
||||
this->interactType = '\0';
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
sub_0807DD94(this, NULL);
|
||||
if ((this->entityType.parameter == 3) && (!CheckGlobalFlag(WARP_EVENT_END)) && (CheckLocalFlag(0x63)) &&
|
||||
(CheckRoomFlag(0))) {
|
||||
(this->entityType).parameter = 7;
|
||||
|
||||
+2
-2
@@ -3,10 +3,10 @@
|
||||
#include "functions.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void PrependEntityToList(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern Entity* FindEntityBySubtype(u32, u32);
|
||||
void CopyPosition(Entity*, Entity*);
|
||||
void sub_08068680(Entity*, Entity*);
|
||||
@@ -37,7 +37,7 @@ void sub_08066CCC(Entity* ent) {
|
||||
}
|
||||
|
||||
void sub_08066CF8(Entity* ent) {
|
||||
sub_0807DD94(ent, 0);
|
||||
sub_0807DD94(ent, NULL);
|
||||
}
|
||||
|
||||
void sub_08066D04(Entity* ent) {
|
||||
|
||||
+2
-2
@@ -4,6 +4,7 @@
|
||||
#include "player.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern void sub_0809F7BC(Entity*);
|
||||
extern void PlaySFX(u32);
|
||||
@@ -22,7 +23,6 @@ extern Entity* CreateObject(u32, u32, u32);
|
||||
extern void PositionEntityOnTop(Entity*, Entity*);
|
||||
extern void sub_0807BB68(u32*, u32, u32);
|
||||
|
||||
extern u8 gUnk_02034490;
|
||||
extern void* gUnk_080DD750;
|
||||
extern Entity gPlayerEntity;
|
||||
extern PlayerState gPlayerState;
|
||||
@@ -48,7 +48,7 @@ void sub_0809F514(Entity* this) {
|
||||
this->spriteSettings.b.draw = 0;
|
||||
this->field_0x68.HALF.LO = 12;
|
||||
gRoomControls.cameraTarget = this;
|
||||
gUnk_02034490 = 255;
|
||||
gUnk_02034490[0] = 255;
|
||||
sub_0809F7BC(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "room.h"
|
||||
#include "script.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ u16 unk0;
|
||||
@@ -64,7 +65,7 @@ void sub_080866D8(Entity* this) {
|
||||
UpdateSpriteForCollisionLayer(entity);
|
||||
*((u32*)(&this->field_0x68)) |= mask;
|
||||
if (prop->unk8) {
|
||||
*((u32**)(&entity->cutsceneBeh)) = StartCutscene(entity, prop->unk8);
|
||||
*((ScriptExecutionContext **)(&entity->cutsceneBeh)) = StartCutscene(entity, (u16*)prop->unk8);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,7 +117,7 @@ static void sub_0808681C(Entity* this) {
|
||||
}
|
||||
|
||||
if (this->flags & 0x2) {
|
||||
ExecuteScriptCommandSet(this, *(u32**)&this->cutsceneBeh);
|
||||
ExecuteScriptCommandSet(this, *(ScriptExecutionContext **)&this->cutsceneBeh);
|
||||
sub_080868EC(this, *(void**)&this->cutsceneBeh);
|
||||
}
|
||||
}
|
||||
@@ -128,7 +129,7 @@ void sub_080868B0(Entity* this) {
|
||||
this->boundingBox = &gUnk_081206AC;
|
||||
this->actionDelay = 8;
|
||||
}
|
||||
ExecuteScriptCommandSet(this, *(u32**)&this->cutsceneBeh);
|
||||
ExecuteScriptCommandSet(this, *(ScriptExecutionContext **)&this->cutsceneBeh);
|
||||
sub_080868EC(this, *(void**)&this->cutsceneBeh);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
|
||||
extern void sub_0807DD64(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_08078850(Entity*, u32, u32, u8*);
|
||||
extern void PlaySFX(u32);
|
||||
@@ -18,7 +18,7 @@ void Windcrest(Entity* this) {
|
||||
this->frameIndex = 0;
|
||||
sub_0807DD64(this);
|
||||
}
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDAC(this, NULL);
|
||||
sub_0807DDE4(this);
|
||||
}
|
||||
|
||||
|
||||
+212
-1
@@ -1,6 +1,13 @@
|
||||
#include "save.h"
|
||||
|
||||
extern u32 sub_0807D008(u32, SaveFile*);
|
||||
typedef struct Thing {
|
||||
u16 unk_1;
|
||||
u16 unk_2;
|
||||
u32 unk_3;
|
||||
} Thing;
|
||||
|
||||
extern u32 sub_080B180C(u32, const char*);
|
||||
extern u16 sub_080B18DC(u16, const char*);
|
||||
|
||||
const u16 gUnk_0811E454[] = { 0x0, 0x0, 0x100, 0x200, 0x300, 0x400, 0x500,
|
||||
0x5C0, 0x680, 0x740, 0x800, 0x8C0, 0x9C0, 0xA80 };
|
||||
@@ -12,6 +19,13 @@ static SaveResult HandleSaveInProgress(u32);
|
||||
static SaveResult HandleSaveDone(u32);
|
||||
static SaveResult (*const sSaveHandlers[])(u32) = { HandleSaveInit, HandleSaveInProgress, HandleSaveDone };
|
||||
|
||||
u32 sub_0807D008(u32, SaveFile*);
|
||||
u32 sub_0807D0A0(u16*, u16*, u32);
|
||||
u32 sub_0807D0EC(u32, const char*);
|
||||
u32 sub_0807D128(const Thing*);
|
||||
u16 sub_0807D1A4(u16*, u32);
|
||||
u32 sub_0807D1D8(u32, const char*, u32);
|
||||
|
||||
static const char sSignatureLong[32] = "AGBZELDA:THE MINISH CAP:ZELDA 5";
|
||||
|
||||
// Save file is untouched
|
||||
@@ -22,6 +36,7 @@ static const char sSaveDescDeleted[8] = "\xFF\xFF\xFF\xFF"
|
||||
"DelF";
|
||||
|
||||
const char gUnk_0811E4B4[8] = "DAMEDAME";
|
||||
extern struct_0807D1C4 gUnk_0811E4BC[];
|
||||
|
||||
extern s16 gUnk_02021EE0[6];
|
||||
|
||||
@@ -155,3 +170,199 @@ void sub_0807CF68(u32 arg0) {
|
||||
sub_0807D184(temp->field_0x4, str);
|
||||
sub_0807D184(temp->field_0x2, str);
|
||||
}
|
||||
|
||||
u32 sub_0807CF88(u32 arg0, u8* arg1) {
|
||||
Thing thing;
|
||||
|
||||
u32 retval;
|
||||
struct_0807D1C4* ptr;
|
||||
u32 e0, e1;
|
||||
u16 l1prep;
|
||||
|
||||
ptr = sub_0807D1C4(arg0);
|
||||
|
||||
thing.unk_3 = 'MCZ3';
|
||||
l1prep = sub_0807D1A4((u16*)&thing.unk_3, 4);
|
||||
l1prep += sub_0807D1A4((u16*)arg1, ptr->field_0x0);
|
||||
thing.unk_1 = l1prep;
|
||||
thing.unk_2 = -(u32)l1prep;
|
||||
e0 = sub_0807D20C(ptr->field_0x6, (const char*)arg1, ptr->field_0x0);
|
||||
if (e0) {
|
||||
e0 = sub_0807D184(ptr->field_0x2, (const char*)&thing.unk_1);
|
||||
}
|
||||
e1 = sub_0807D20C(ptr->field_0x8, (const char*)arg1, ptr->field_0x0);
|
||||
if (e1) {
|
||||
e1 = sub_0807D184(ptr->field_0x4, (const char*)&thing.unk_1);
|
||||
}
|
||||
|
||||
retval = 0;
|
||||
if (e0 || e1) {
|
||||
retval = 1;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/save/sub_0807D008.inc", u32 sub_0807D008(u32 param_1, SaveFile* saveFile)) {
|
||||
u32 set_0;
|
||||
char auStack32[8];
|
||||
|
||||
struct_0807D1C4* unk_s;
|
||||
u32 t1;
|
||||
u32 t2;
|
||||
u32 ret;
|
||||
u32 temp;
|
||||
|
||||
unk_s = sub_0807D1C4(param_1);
|
||||
t1 = sub_0807D0EC(unk_s->field_0x2, auStack32);
|
||||
if (t1 == 2) {
|
||||
if ((sub_0807D1D8(unk_s->field_0x6, (char*)saveFile, unk_s->field_0x0) == 0) ||
|
||||
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) == 0)) {
|
||||
t1 = 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
t2 = sub_0807D0EC(unk_s->field_0x4, auStack32);
|
||||
if (t2 == 2) {
|
||||
if ((sub_0807D1D8(unk_s->field_0x8, (char*)saveFile, unk_s->field_0x0) != 0) &&
|
||||
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) != 0)) {
|
||||
return 1;
|
||||
}
|
||||
t2 = 0;
|
||||
}
|
||||
set_0 = 0;
|
||||
CpuSet(&set_0, saveFile, unk_s->field_0x0 >> 2 | CPU_SET_SRC_FIXED | CPU_SET_32BIT);
|
||||
temp = t1 | t2;
|
||||
ret = 0;
|
||||
if (temp == 0) {
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/save/sub_0807D0A0.inc", u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3)) {
|
||||
u32 r0;
|
||||
|
||||
u32* u32_1 = (u32*)unk_1;
|
||||
|
||||
u16 u0;
|
||||
u32 u1;
|
||||
|
||||
u0 = sub_0807D1A4(unk_1 + 2, 4);
|
||||
u0 = u0 + sub_0807D1A4(unk_2, unk_3);
|
||||
|
||||
u1 = unk_1[0];
|
||||
if (u1 != u0) {
|
||||
r0 = 0;
|
||||
} else {
|
||||
if (unk_1[1] == (-(u1 << 0x10) >> 0x10)) {
|
||||
if (*(u32_1 + 1) != 'MCZ3') {
|
||||
r0 = 0;
|
||||
} else {
|
||||
r0 = 1;
|
||||
}
|
||||
} else {
|
||||
r0 = 0;
|
||||
}
|
||||
}
|
||||
return r0;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
u32 sub_0807D0EC(u32 unk_1, const char* unk_2) {
|
||||
u32 ret;
|
||||
|
||||
if (!sub_0807D1D8(unk_1, unk_2, 8)) {
|
||||
ret = 0;
|
||||
} else {
|
||||
ret = sub_0807D128((Thing*)unk_2);
|
||||
}
|
||||
if (!ret && sub_0807D1D8(unk_1 + 8, unk_2, 8)) {
|
||||
ret = sub_0807D128((Thing*)unk_2);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 sub_0807D128(const Thing* thing) {
|
||||
u32 ret;
|
||||
switch (thing->unk_3) {
|
||||
case 'MCZ3':
|
||||
if (thing->unk_1 + thing->unk_2 == 0x10000) {
|
||||
ret = 2;
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
break;
|
||||
case 'FleD':
|
||||
case 'TINI':
|
||||
ret = 0;
|
||||
if ((thing->unk_1 & thing->unk_2) == 0xffff) {
|
||||
ret = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 sub_0807D184(u32 param_1, const char* param_2) {
|
||||
u32 uVar1;
|
||||
|
||||
uVar1 = sub_0807D20C(param_1, param_2, 8);
|
||||
if (uVar1 == 0) {
|
||||
uVar1 = sub_0807D20C(param_1 + 8, param_2, 8);
|
||||
}
|
||||
return uVar1;
|
||||
}
|
||||
|
||||
u16 sub_0807D1A4(u16* unk_1, u32 unk_2) {
|
||||
u32 uVar1;
|
||||
|
||||
uVar1 = 0;
|
||||
while (unk_2 != 0) {
|
||||
uVar1 = uVar1 + (*unk_1 ^ unk_2);
|
||||
unk_1 = unk_1 + 1;
|
||||
unk_2 = unk_2 - 2;
|
||||
}
|
||||
return uVar1;
|
||||
}
|
||||
|
||||
struct_0807D1C4* sub_0807D1C4(u32 unk_1) {
|
||||
return &gUnk_0811E4BC[unk_1];
|
||||
}
|
||||
|
||||
// these three are basically the same and wrong by basically one instruction in the wrong place
|
||||
NONMATCH("asm/non_matching/save/sub_0807D1D8.inc", u32 sub_0807D1D8(u32 unk_1, const char* unk_2, u32 unk_3)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/save/sub_0807D20C.inc", u32 sub_0807D20C(u32 unk_1, const char* unk_2, u32 unk_3)) {
|
||||
unk_3 >>= 3;
|
||||
unk_1 >>= 3;
|
||||
while (unk_3-- > 0) {
|
||||
if (sub_080B18DC(unk_1, unk_2)) {
|
||||
sub_080B18DC(unk_1, gUnk_0811E4B4);
|
||||
return 0;
|
||||
}
|
||||
unk_1++;
|
||||
unk_2 += 8;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/save/sub_0807D24C.inc", u32 sub_0807D24C(u32 unk_1, const char* unk_2, u32 unk_3)) {
|
||||
unk_3 >>= 3;
|
||||
unk_1 >>= 3;
|
||||
while (unk_3-- > 0) {
|
||||
if (sub_080B180C(unk_1, unk_2))
|
||||
return 0;
|
||||
unk_1++;
|
||||
unk_2 += 8;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#include "functions.h"
|
||||
#include "save.h"
|
||||
|
||||
void sub_0807DAF0(Entity*, ScriptExecutionContext*, u16*);
|
||||
void sub_0807DB88(ScriptExecutionContext*, u16*);
|
||||
void sub_0807DE80(Entity*);
|
||||
void sub_0807DF38(void);
|
||||
void nullsub_507 (Entity*, ScriptExecutionContext*);
|
||||
void sub_0807E004(Entity*, ScriptExecutionContext*);
|
||||
void sub_0807E014(Entity*, ScriptExecutionContext*);
|
||||
@@ -147,6 +151,10 @@ void sub_0807F0A4(Entity*, ScriptExecutionContext*);
|
||||
void sub_0807F0B4(Entity*, ScriptExecutionContext*);
|
||||
void sub_0807F0C8(Entity*, ScriptExecutionContext*);
|
||||
|
||||
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
|
||||
extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32);
|
||||
extern void sub_0801C4A0(u32);
|
||||
|
||||
void (* const gUnk_0811E524[])() = {
|
||||
nullsub_507,
|
||||
sub_0807E004,
|
||||
@@ -290,6 +298,305 @@ void (* const gUnk_0811E524[])() = {
|
||||
};
|
||||
|
||||
extern const u16 gUnk_08016984;
|
||||
extern u8 gUnk_0811E514[];
|
||||
extern u8 gUnk_0811E510[];
|
||||
extern ScriptExecutionContext gPlayerScriptExecutionContext;
|
||||
extern ScriptExecutionContext gScriptExecutionContextArray[0x20];
|
||||
|
||||
void sub_0807DA70(void) {
|
||||
_DmaZero(&gUnk_02033280, sizeof(gUnk_02033280));
|
||||
_DmaZero(&gScriptExecutionContextArray, sizeof(gScriptExecutionContextArray));
|
||||
_DmaZero(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext));
|
||||
gUnk_02033280.unk_08 = 8;
|
||||
}
|
||||
|
||||
ScriptExecutionContext* CreateScriptExecutionContext(void) {
|
||||
ScriptExecutionContext* context;
|
||||
|
||||
context = gScriptExecutionContextArray;
|
||||
do {
|
||||
if (context->unk_00 == 0) {
|
||||
return context;
|
||||
}
|
||||
context++;
|
||||
} while (context < gScriptExecutionContextArray + ARRAY_COUNT(gScriptExecutionContextArray));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void DestroyScriptExecutionContext(ScriptExecutionContext* context) {
|
||||
_DmaZero(context, sizeof(ScriptExecutionContext));
|
||||
}
|
||||
|
||||
ScriptExecutionContext* StartCutscene(Entity* entity, u16* unk_2) {
|
||||
ScriptExecutionContext* context;
|
||||
|
||||
context = CreateScriptExecutionContext();
|
||||
if (context) {
|
||||
sub_0807DAF0(entity, context, unk_2);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
void sub_0807DAF0(Entity* entity, ScriptExecutionContext* context, u16* unk1) {
|
||||
entity->flags = entity->flags | 2;
|
||||
*(ScriptExecutionContext**)&entity->cutsceneBeh = context;
|
||||
sub_0807DB88(context, unk1);
|
||||
}
|
||||
|
||||
void UnloadCutsceneData(Entity* entity) {
|
||||
if ((entity->flags & 2)) {
|
||||
entity->flags = entity->flags & 0xfd;
|
||||
DestroyScriptExecutionContext(*(ScriptExecutionContext**)&entity->cutsceneBeh);
|
||||
*(ScriptExecutionContext**)&entity->cutsceneBeh = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void StartPlayerScript(u16* unk1) {
|
||||
Entity* player;
|
||||
|
||||
_DmaZero(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext));
|
||||
gPlayerScriptExecutionContext.unk_00 = unk1;
|
||||
player = &gPlayerEntity;
|
||||
*(ScriptExecutionContext**)&player->cutsceneBeh = &gPlayerScriptExecutionContext;
|
||||
gPlayerState.playerAction = 0x1c;
|
||||
gPlayerState.field_0x3a = 0;
|
||||
gPlayerState.field_0x39 = 0;
|
||||
gPlayerState.field_0x38 = 0;
|
||||
}
|
||||
|
||||
ScriptExecutionContext* sub_0807DB68(Entity* entity, u16* unk1) {
|
||||
ScriptExecutionContext* context;
|
||||
|
||||
context = CreateScriptExecutionContext();
|
||||
if (context) {
|
||||
entity->flags |= 2;
|
||||
*(ScriptExecutionContext**)&entity->field_0x3c = context;
|
||||
context->unk_00 = unk1;
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
void sub_0807DB88(ScriptExecutionContext* context, u16* unk1) {
|
||||
_DmaZero(context, sizeof(ScriptExecutionContext));
|
||||
context->unk_00 = unk1;
|
||||
}
|
||||
|
||||
void sub_0807DB98(Entity* entity, ScriptExecutionContext* context) {
|
||||
u32 switchVar;
|
||||
|
||||
while (context->unk_08) {
|
||||
switchVar = (~context->unk_08 + 1) & context->unk_08;
|
||||
context->unk_08 ^= switchVar;
|
||||
switch (switchVar) {
|
||||
case 1:
|
||||
entity->field_0x80.HWORD = 0;
|
||||
break;
|
||||
case 2:
|
||||
entity->field_0x80.HWORD = 4;
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 8:
|
||||
entity->field_0x20 = 0x18000;
|
||||
break;
|
||||
case 0x10:
|
||||
CreateSpeechBubbleExclamationMark(entity, 8, -0x18);
|
||||
break;
|
||||
case 0x20:
|
||||
CreateSpeechBubbleQuestionMark(entity, 8, -0x18);
|
||||
break;
|
||||
case 0x40:
|
||||
DestroyScriptExecutionContext(context);
|
||||
DeleteThisEntity();
|
||||
case 0x80:
|
||||
entity->spriteSettings.b.draw = 1;
|
||||
break;
|
||||
case 0x100:
|
||||
entity->spriteSettings.b.draw = 0;
|
||||
break;
|
||||
case 0x200:
|
||||
entity->spriteOffsetY = 0;
|
||||
entity->spriteOffsetX = 0;
|
||||
entity->field_0x82.HWORD = 0;
|
||||
break;
|
||||
case 0x400:
|
||||
entity->field_0x82.HWORD |= 2;
|
||||
break;
|
||||
case 0x800:
|
||||
entity->field_0x82.HWORD &= 0xfffd;
|
||||
break;
|
||||
case 0x1000:
|
||||
entity->field_0x82.HWORD &= 0xfffe;
|
||||
break;
|
||||
case 0x2000:
|
||||
entity->field_0x82.HWORD |= 1;
|
||||
break;
|
||||
case 0x4000:
|
||||
entity->field_0x82.HWORD |= 8;
|
||||
break;
|
||||
case 0x8000:
|
||||
entity->field_0x82.HWORD ^= 4;
|
||||
break;
|
||||
case 0x10000:
|
||||
entity->field_0x82.HWORD ^= 0x10;
|
||||
break;
|
||||
case 0x20000:
|
||||
entity->spriteSettings.b.flipX ^= 1;
|
||||
break;
|
||||
case 0x40000:
|
||||
entity->field_0x82.HWORD |= 0x20;
|
||||
break;
|
||||
case 0x80000:
|
||||
entity->field_0x82.HWORD &= 0xffdf;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807DD50(Entity* entity) {
|
||||
sub_0807DD64(entity);
|
||||
sub_0807DD94(entity, 0);
|
||||
}
|
||||
|
||||
void sub_0807DD64(Entity* entity) {
|
||||
entity->field_0xf = entity->animationState;
|
||||
entity->animIndex = 0xff;
|
||||
entity->field_0x80.HWORD = 0;
|
||||
entity->field_0x82.HWORD = 0;
|
||||
}
|
||||
|
||||
void sub_0807DD80(Entity* entity, u16* unk1) {
|
||||
sub_0807DB88(*(ScriptExecutionContext**)&entity->cutsceneBeh, unk1);
|
||||
sub_0807DD64(entity);
|
||||
}
|
||||
|
||||
void sub_0807DD94(Entity* entity, void (*function)(Entity*, ScriptExecutionContext*)) {
|
||||
sub_0807DDAC(entity, function);
|
||||
sub_0807DDE4(entity);
|
||||
sub_0807DE80(entity);
|
||||
}
|
||||
|
||||
void sub_0807DDAC(Entity* entity, void (*function)(Entity*, ScriptExecutionContext*)) {
|
||||
ScriptExecutionContext** piVar1;
|
||||
|
||||
piVar1 = (ScriptExecutionContext**)&entity->cutsceneBeh;
|
||||
if (*piVar1) {
|
||||
ExecuteScriptCommandSet(entity, *piVar1);
|
||||
if (function) {
|
||||
function(entity, *piVar1);
|
||||
} else {
|
||||
sub_0807DB98(entity, *piVar1);
|
||||
}
|
||||
if (!entity->next) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807DDE4(Entity* entity) {
|
||||
u32 temp;
|
||||
u32 switchVar;
|
||||
u32 loopVar;
|
||||
|
||||
loopVar = entity->field_0x82.HWORD;
|
||||
while (loopVar) {
|
||||
switchVar = (~loopVar + 1) & loopVar;
|
||||
loopVar = loopVar ^ switchVar;
|
||||
switch (switchVar) {
|
||||
case 2:
|
||||
if (entity->entityType.type == 7) {
|
||||
sub_0806ED78(entity);
|
||||
} else {
|
||||
sub_0800445C(entity);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if ((gScreenTransition.frameCount & 3) == 0) {
|
||||
temp = (entity->field_0xf + 2U) & 7;
|
||||
entity->animationState = temp;
|
||||
entity->field_0xf = temp;
|
||||
}
|
||||
break;
|
||||
case 0x10:
|
||||
if ((gScreenTransition.frameCount & 1) == 0) {
|
||||
entity->spriteOffsetX = gUnk_0811E510[Random() & 3];
|
||||
}
|
||||
break;
|
||||
case 0x20:
|
||||
sub_08003FC4(entity, 0x2000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807DE80(Entity* entity) {
|
||||
u32 local1;
|
||||
u16 local2;
|
||||
|
||||
u32 temp;
|
||||
|
||||
local2 = entity->field_0x80.HWORD;
|
||||
if (local2 < 8) {
|
||||
if (entity->field_0x82.HWORD & 1) {
|
||||
u32 t1, t2;
|
||||
t1 = local2 & 0xfc;
|
||||
t2 = entity->field_0xf >> 1;
|
||||
local2 = t1 + t2;
|
||||
} else {
|
||||
u32 t1, t2;
|
||||
t1 = local2 & 0xfc;
|
||||
t2 = entity->animationState >> 1;
|
||||
local2 = t1 + t2;
|
||||
entity->field_0xf = entity->animationState;
|
||||
}
|
||||
}
|
||||
if (local2 != entity->animIndex) {
|
||||
InitAnimationForceUpdate(entity, local2);
|
||||
}
|
||||
temp = entity->field_0x82.HWORD & 4;
|
||||
local1 = 1;
|
||||
if (temp) {
|
||||
local1 = 2;
|
||||
}
|
||||
sub_080042BA(entity, local1);
|
||||
}
|
||||
|
||||
void sub_0807DEDC(Entity* entity, ScriptExecutionContext* context, u32 arg2, u32 arg3) {
|
||||
int temp;
|
||||
s32 t0, t1;
|
||||
|
||||
context->unk_19 = 8;
|
||||
context->unk_08 |= 2;
|
||||
context->unk_14 = 0;
|
||||
context->unk_1C.HALF.HI = arg2;
|
||||
context->unk_20.HALF.HI = arg3;
|
||||
t0 = context->unk_1C.HALF.HI - entity->x.HALF.HI;
|
||||
t1 = context->unk_20.HALF.HI - entity->y.HALF.HI;
|
||||
temp = sub_080045DA(t0, t1);
|
||||
entity->direction = temp;
|
||||
entity->animationState = (entity->animationState & 0x80) | gUnk_0811E514[(u32)(temp << 0x18) >> 0x1c];
|
||||
}
|
||||
|
||||
void sub_0807DF28(void) {
|
||||
sub_0807DF38();
|
||||
sub_08079184();
|
||||
sub_08077B20();
|
||||
}
|
||||
|
||||
void sub_0807DF38(void) {
|
||||
gUnk_0200AF00.filler0[1] = 0xff;
|
||||
gUnk_02034490[0] = 0xff;
|
||||
}
|
||||
|
||||
void sub_0807DF50(void) {
|
||||
gUnk_02034490[0] = 0;
|
||||
gUnk_0200AF00.filler0[1] = 0;
|
||||
sub_0801C4A0(0);
|
||||
sub_080791D0();
|
||||
sub_08079184();
|
||||
}
|
||||
|
||||
void ExecuteScriptCommandSet(Entity* unk1, ScriptExecutionContext* unk2) {
|
||||
if (!unk2->unk_00) return;
|
||||
@@ -752,7 +1059,7 @@ void sub_0807E898(Entity* unk1, ScriptExecutionContext* unk2) {
|
||||
}
|
||||
|
||||
void sub_0807E8C4(Entity* unk1, ScriptExecutionContext* unk2) {
|
||||
StartPlayerScript(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00));
|
||||
StartPlayerScript((u16*)GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00));
|
||||
}
|
||||
|
||||
void sub_0807E8D4(Entity* unk1, ScriptExecutionContext* unk2) {
|
||||
@@ -832,7 +1139,7 @@ void sub_0807E9F0(Entity* unk1, ScriptExecutionContext* unk2) {
|
||||
switch (gUnk_02022740[0]) {
|
||||
case 2:
|
||||
gPlayerState.field_0x8b = 3;
|
||||
gUnk_02034490 = tmp;
|
||||
gUnk_02034490[0] = tmp;
|
||||
unk2->unk_14 = tmp;
|
||||
break;
|
||||
case 1:
|
||||
Reference in New Issue
Block a user