diff --git a/.gitignore b/.gitignore index e808e398..9d6c1b6c 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ __pycache__ .vscode/settings.json .vscode/c_cpp_properties.json .vscode/tasks.json +Info.plist diff --git a/asm/beanstalk.s b/asm/beanstalk.s index 21d9c53b..c6934032 100644 --- a/asm/beanstalk.s +++ b/asm/beanstalk.s @@ -40,7 +40,7 @@ sub_08089D1C: @ 0x08089D1C strb r0, [r5, #0x1b] adds r0, r5, #0 movs r1, #4 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r5, #0xa] cmp r0, #7 bne _08089688 @@ -288,7 +288,7 @@ _080897FE: strb r0, [r5, #0x1b] adds r0, r5, #0 movs r1, #4 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r5, #0xa] cmp r0, #7 bne _08089D90 diff --git a/asm/bigBarrel.s b/asm/bigBarrel.s index f721b772..237d053a 100644 --- a/asm/bigBarrel.s +++ b/asm/bigBarrel.s @@ -500,7 +500,7 @@ _08088DEC: strb r0, [r1] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r4, #0xb] movs r1, #0x16 cmp r0, #0 @@ -688,7 +688,7 @@ _08088F6E: movs r1, #0x87 lsls r1, r1, #1 adds r0, r4, #0 - bl sub_0805E4E0 + bl RequestPriorityDuration movs r0, #0x2a movs r1, #1 movs r2, #0 @@ -815,7 +815,7 @@ _0808905C: beq _08089088 adds r0, r4, #0 movs r1, #0x3c - bl sub_0805E4E0 + bl RequestPriorityDuration movs r0, #0x72 bl SoundReq _08089088: @@ -883,7 +883,7 @@ sub_080890EC: @ 0x080890EC cmp r4, #0 beq _08089132 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority ldrh r0, [r5, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] diff --git a/asm/bigPushableLever.s b/asm/bigPushableLever.s index 6c1b7753..e24791fd 100644 --- a/asm/bigPushableLever.s +++ b/asm/bigPushableLever.s @@ -69,7 +69,7 @@ sub_08098F14: @ 0x08098F14 bl EnqueueSFX adds r0, r5, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration bl sub_08079F8C cmp r0, #0 beq _08098F84 diff --git a/asm/bird.s b/asm/bird.s index cdbaf811..2c43ef24 100644 --- a/asm/bird.s +++ b/asm/bird.s @@ -84,7 +84,7 @@ _0809D234: str r3, [r5, #0x54] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r5, #0 movs r1, #0 bl InitAnimationForceUpdate @@ -212,7 +212,7 @@ _0809D2D6: rsbs r0, r0, #0 ands r0, r1 strb r0, [r6, #0x18] - ldr r1, _0809D43C @ =gUnk_03003DC0 + ldr r1, _0809D43C @ =gPriorityHandler movs r0, #6 strb r0, [r1] ldr r0, _0809D440 @ =gUnk_02034490 @@ -287,7 +287,7 @@ _0809D3DA: _0809D430: .4byte gPlayerEntity _0809D434: .4byte gMessage _0809D438: .4byte gPlayerState -_0809D43C: .4byte gUnk_03003DC0 +_0809D43C: .4byte gPriorityHandler _0809D440: .4byte gUnk_02034490 _0809D444: .4byte 0xFFF80000 _0809D448: @@ -384,7 +384,7 @@ sub_0809D498: @ 0x0809D498 strb r1, [r5, #0x1b] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority ldr r0, _0809D53C @ =gRoomControls ldrh r0, [r0, #0xa] strh r0, [r5, #0x2e] @@ -500,7 +500,7 @@ _0809D5E6: orrs r0, r1 strb r0, [r6, #0x18] bl sub_080791D0 - bl UnfreezeTime + bl ResetPlayerEventPriority ldr r1, _0809D664 @ =gUnk_02034490 movs r0, #0 strb r0, [r1] @@ -609,7 +609,7 @@ _0809D6A2: strb r1, [r4, #0x1b] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 movs r1, #0xe0 bl InitAnimationForceUpdate @@ -631,7 +631,7 @@ CreateBird: @ 0x0809D700 push {r4, lr} sub sp, #4 .ifdef EU - bl sub_08052620 @ TODO correct function? + bl CheckIsOverworld @ TODO correct function? .else bl sub_08052654 .endif @@ -674,8 +674,8 @@ sub_0809D738: @ 0x0809D738 str r0, [r1, #0x30] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 - bl FreezeTime + bl SetDefaultPriority + bl SetPlayerEventPriority movs r0, #0x95 movs r1, #0xa movs r2, #0 diff --git a/asm/businessScrubPrologue.s b/asm/businessScrubPrologue.s index 8a48c644..ee5b6397 100644 --- a/asm/businessScrubPrologue.s +++ b/asm/businessScrubPrologue.s @@ -88,7 +88,7 @@ _08045C16: bl EnqueueSFX adds r0, r4, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority _08045C2C: pop {r4, pc} .align 2, 0 @@ -419,7 +419,7 @@ _08045E70: strh r0, [r2, #0x36] adds r0, r2, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority _08045EBA: adds r0, r4, #0 bl GetNextFrame diff --git a/asm/chestSpawner.s b/asm/chestSpawner.s index bc6f7bc2..756dfa62 100644 --- a/asm/chestSpawner.s +++ b/asm/chestSpawner.s @@ -100,7 +100,7 @@ sub_08083EB0: @ 0x08083EB0 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration bl sub_0805BC4C _08083F0A: pop {r4, pc} @@ -113,7 +113,7 @@ sub_08083F14: @ 0x08083F14 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x1e - bl sub_0805E510 + bl SetPriorityTimer ldrb r0, [r4, #0xd] cmp r0, #0 beq _08083F78 @@ -236,7 +236,7 @@ sub_08083FEC: @ 0x08083FEC bl sub_080788E0 adds r0, r4, #0 movs r1, #0x3c - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _08084020 @ =0x0000011B bl SoundReq _0808401E: diff --git a/asm/code_08018500.s b/asm/code_08018500.s index c937ee09..b12aa134 100644 --- a/asm/code_08018500.s +++ b/asm/code_08018500.s @@ -118,16 +118,16 @@ _080185C2: _080185D4: cmp r0, #0xfd beq _080185F0 - ldr r1, _080185EC @ =gUnk_0811E454 + ldr r1, _080185EC @ =gLocalFlagBanks ldrb r0, [r2] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrb r1, [r2, #1] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank b _080185F6 .align 2, 0 -_080185EC: .4byte gUnk_0811E454 +_080185EC: .4byte gLocalFlagBanks _080185F0: ldrb r0, [r2, #1] bl CheckKinstoneFused @@ -648,7 +648,7 @@ _080189D0: .endif .endif .endif - bl SetLocalFlagByOffset + bl SetLocalFlagByBank ldr r0, _080189E8 @ =gUnk_080FEE38 bl LoadRoomEntityList _080189E4: diff --git a/asm/code_0801967C.s b/asm/code_0801967C.s index badafeba..d4982be5 100644 --- a/asm/code_0801967C.s +++ b/asm/code_0801967C.s @@ -34,7 +34,7 @@ sub_08019698: @ 0x08019698 movs r0, #0x80 lsls r0, r0, #1 ldrh r1, [r4, #4] - bl SetLocalFlagByOffset + bl SetLocalFlagByBank ldrh r0, [r4] ldrh r1, [r4, #2] bl sub_08052FD8 diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index 89dac585..8a693cff 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -487,7 +487,7 @@ _0801DC26: ldrb r1, [r4, #1] mov r0, r8 str r3, [sp] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank ldr r3, [sp] cmp r0, #0 bne _0801DCA6 @@ -682,7 +682,7 @@ sub_0801DDA0: @ 0x0801DDA0 push {r5, r6, r7} sub sp, #0x14 adds r4, r0, #0 - bl sub_08052690 + bl CheckHasMap cmp r0, #0 bne _0801DDB8 b _0801DEEA @@ -865,7 +865,7 @@ sub_0801DF10: @ 0x0801DF10 b _0801DF26 _0801DF20: ldrb r0, [r1] - bl sub_08052D58 + bl GetFlagBankOffset _0801DF26: pop {pc} @@ -941,7 +941,7 @@ sub_0801DF90: @ 0x0801DF90 _0801DF9A: ldrb r1, [r0, #1] adds r0, r2, #0 - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank b _0801DFB2 _0801DFA4: cmp r1, #1 diff --git a/asm/code_080300AC.s b/asm/code_080300AC.s index 9533deb0..2b7e1ec0 100644 --- a/asm/code_080300AC.s +++ b/asm/code_080300AC.s @@ -48,7 +48,7 @@ sub_08030118: @ 0x08030118 lsls r0, r0, #2 adds r1, r2, #0 adds r1, #0x67 - bl SetLocalFlagByOffset + bl SetLocalFlagByBank b _0803014C .align 2, 0 _0803013C: .4byte gScreenTransition @@ -57,7 +57,7 @@ _08030140: lsls r0, r0, #2 adds r1, r2, #0 adds r1, #0x67 - bl ClearLocalFlagByOffset + bl ClearLocalFlagByBank _0803014C: pop {pc} .align 2, 0 diff --git a/asm/code_0804A720.s b/asm/code_0804A720.s index 7d7deb47..480ab1df 100644 --- a/asm/code_0804A720.s +++ b/asm/code_0804A720.s @@ -203,7 +203,7 @@ _0804A864: strb r0, [r5, #0xe] adds r0, r5, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r1, [r5, #9] movs r0, #1 movs r2, #0 @@ -299,7 +299,7 @@ _0804A940: strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #0 - bl sub_0805E3A0 + bl SetDefaultPriority b _0804A982 _0804A95E: lsls r0, r1, #0x18 diff --git a/asm/code_0804AA84.s b/asm/code_0804AA84.s index db72cf8c..4dda3c9a 100644 --- a/asm/code_0804AA84.s +++ b/asm/code_0804AA84.s @@ -58,7 +58,7 @@ _0804ABA4: adds r0, r0, r1 ldr r0, [r0] bl LoadRoomEntityList - bl sub_0805E5B4 + bl ResetSystemPriority ldr r1, _0804AC04 @ =gArea ldrb r0, [r1, #0xe] adds r0, #1 @@ -195,7 +195,7 @@ sub_0804ACF8: @ 0x0804ACF8 beq _0804AD12 ldr r0, _0804AD14 @ =gRoomControls bl sub_0804AD6C - bl sub_0805E5A8 + bl SetInitializationPriority movs r0, #0xf8 bl SoundReq _0804AD12: diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index 798ec263..db0707fb 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -6,1967 +6,6 @@ .text - thumb_func_start sub_080526F8 -sub_080526F8: @ 0x080526F8 - push {r4, lr} - adds r4, r0, #0 - bl sub_08052724 - cmp r0, #0 - beq _08052718 - ldr r0, _0805271C @ =gArea - ldrb r1, [r0, #3] - ldr r0, _08052720 @ =gUnk_02002E9C - adds r1, r1, r0 - ldrb r0, [r1] - adds r0, r0, r4 - cmp r0, #0 - bge _08052716 - movs r0, #0 -_08052716: - strb r0, [r1] -_08052718: - pop {r4, pc} - .align 2, 0 -_0805271C: .4byte gArea -_08052720: .4byte gUnk_02002E9C - - thumb_func_start sub_08052724 -sub_08052724: @ 0x08052724 - ldr r0, _08052730 @ =gArea - ldrb r0, [r0] - lsrs r0, r0, #1 - movs r1, #1 - ands r0, r1 - bx lr - .align 2, 0 -_08052730: .4byte gArea - - thumb_func_start sub_08052734 -sub_08052734: @ 0x08052734 - push {r4, lr} - bl sub_08052724 - cmp r0, #0 - beq _0805274C - ldr r0, _08052758 @ =gSave - ldr r1, _0805275C @ =gArea - ldr r2, _08052760 @ =0x0000045C - adds r0, r0, r2 - ldrb r1, [r1, #3] - adds r0, r0, r1 - ldrb r4, [r0] -_0805274C: - adds r0, r4, #0 - cmp r0, #0 - beq _08052754 - movs r0, #1 -_08052754: - pop {r4, pc} - .align 2, 0 -_08052758: .4byte gSave -_0805275C: .4byte gArea -_08052760: .4byte 0x0000045C - - thumb_func_start sub_08052764 -sub_08052764: @ 0x08052764 - push {r4, lr} - bl sub_08052724 - cmp r0, #0 - beq _08052784 - ldr r0, _08052790 @ =gSave - ldr r1, _08052794 @ =gArea - ldr r2, _08052798 @ =0x0000046C - adds r0, r0, r2 - ldrb r1, [r1, #3] - adds r0, r0, r1 - ldrb r1, [r0] - movs r0, #4 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r4, r0, #0x18 -_08052784: - adds r0, r4, #0 - cmp r0, #0 - beq _0805278C - movs r0, #1 -_0805278C: - pop {r4, pc} - .align 2, 0 -_08052790: .4byte gSave -_08052794: .4byte gArea -_08052798: .4byte 0x0000046C - - thumb_func_start sub_0805279C -sub_0805279C: @ 0x0805279C - push {lr} - bl sub_08052724 - cmp r0, #0 - beq _080527C8 - ldr r0, _080527BC @ =gSave - ldr r1, _080527C0 @ =gArea - ldr r2, _080527C4 @ =0x0000046C - adds r0, r0, r2 - ldrb r1, [r1, #3] - adds r0, r0, r1 - ldrb r0, [r0] - lsrs r0, r0, #1 - movs r1, #1 - ands r0, r1 - b _080527CA - .align 2, 0 -_080527BC: .4byte gSave -_080527C0: .4byte gArea -_080527C4: .4byte 0x0000046C -_080527C8: - movs r0, #0 -_080527CA: - pop {pc} - - thumb_func_start sub_080527CC -sub_080527CC: @ 0x080527CC - push {lr} - bl sub_08052724 - cmp r0, #0 - beq _080527F8 - ldr r0, _080527EC @ =gSave - ldr r1, _080527F0 @ =gArea - ldr r2, _080527F4 @ =0x0000046C - adds r0, r0, r2 - ldrb r1, [r1, #3] - adds r0, r0, r1 - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - b _080527FA - .align 2, 0 -_080527EC: .4byte gSave -_080527F0: .4byte gArea -_080527F4: .4byte 0x0000046C -_080527F8: - movs r0, #0 -_080527FA: - pop {pc} - - thumb_func_start sub_080527FC -sub_080527FC: @ 0x080527FC - push {r4, lr} - adds r4, r0, #0 - bl sub_08053320 -.ifndef EU - bl CleanUpGFXSlots -.endif - bl sub_080ADE24 - movs r0, #1 - bl sub_0801C370 - adds r0, r4, #0 - bl sub_0801AE44 - ldr r0, _08052830 @ =gUnk_02024090 - ldr r1, _08052834 @ =gPaletteBuffer - movs r2, #0x80 - lsls r2, r2, #3 - bl MemCopy - ldr r1, _08052838 @ =gUsedPalettes - movs r0, #1 - rsbs r0, r0, #0 - str r0, [r1] - pop {r4, pc} - .align 2, 0 -_08052830: .4byte gUnk_02024090 -_08052834: .4byte gPaletteBuffer -_08052838: .4byte gUsedPalettes - - thumb_func_start sub_0805283C -sub_0805283C: @ 0x0805283C - push {r4, lr} - ldr r0, _08052868 @ =gArea - ldr r1, _0805286C @ =0x00000864 - adds r4, r0, r1 - ldr r1, _08052870 @ =gAreaMetadata - ldr r0, _08052874 @ =gRoomControls - ldrb r0, [r0, #4] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrb r0, [r0, #3] - str r0, [r4] - movs r0, #0x8c - lsls r0, r0, #4 - movs r1, #0x7c - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _08052864 - movs r0, #0x33 - str r0, [r4] -_08052864: - pop {r4, pc} - .align 2, 0 -_08052868: .4byte gArea -_0805286C: .4byte 0x00000864 -_08052870: .4byte gAreaMetadata -_08052874: .4byte gRoomControls - -.ifndef EU - thumb_func_start sub_08052878 -sub_08052878: @ 0x08052878 - push {lr} - ldr r0, _08052894 @ =gArea - movs r2, #0x86 - lsls r2, r2, #4 - adds r1, r0, r2 - adds r2, #4 - adds r0, r0, r2 - ldr r0, [r0] - str r0, [r1] - ldr r0, _08052898 @ =0x80010000 - bl SoundReq - pop {pc} - .align 2, 0 -_08052894: .4byte gArea -_08052898: .4byte 0x80010000 - - thumb_func_start sub_0805289C -sub_0805289C: @ 0x0805289C - ldr r0, _080528AC @ =gArea - ldr r2, _080528B0 @ =0x00000864 - adds r1, r0, r2 - subs r2, #4 - adds r0, r0, r2 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080528AC: .4byte gArea -_080528B0: .4byte 0x00000864 -.endif - - thumb_func_start sub_080528B4 -sub_080528B4: @ 0x080528B4 - push {lr} - ldr r0, _080528C4 @ =gScreenTransition - ldrb r0, [r0, #5] - cmp r0, #0 - bne _080528C8 - movs r0, #0 - b _080528E6 - .align 2, 0 -_080528C4: .4byte gScreenTransition -_080528C8: - bl sub_0804FFE4 - ldr r1, _080528E8 @ =gMain - movs r2, #0 - movs r0, #3 - strb r0, [r1, #3] - strb r2, [r1, #4] - movs r0, #5 - movs r1, #8 - bl DoFade - ldr r0, _080528EC @ =0x80100000 - bl SoundReq - movs r0, #1 -_080528E6: - pop {pc} - .align 2, 0 -_080528E8: .4byte gMain -_080528EC: .4byte 0x80100000 - - thumb_func_start sub_080528F0 -sub_080528F0: @ 0x080528F0 - push {lr} - ldr r1, _08052914 @ =gArea - ldr r2, _08052918 @ =0x00000888 - adds r0, r1, r2 - ldr r2, [r0] - cmp r2, #0 - beq _08052910 - movs r3, #0x89 - lsls r3, r3, #4 - adds r0, r1, r3 - ldr r1, [r0] - cmp r1, #0 - beq _08052910 - adds r0, r2, #0 - bl _call_via_r1 -_08052910: - pop {pc} - .align 2, 0 -_08052914: .4byte gArea -_08052918: .4byte 0x00000888 - - thumb_func_start sub_0805291C -sub_0805291C: @ 0x0805291C - push {r4, lr} - ldr r4, _08052948 @ =gScreenTransition - ldrb r0, [r4, #8] - cmp r0, #0 - beq _080529F4 - ldr r0, _0805294C @ =gSave - adds r0, #0xaa - ldrb r0, [r0] - cmp r0, #0 - beq _080529F4 - ldr r0, _08052950 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - cmp r0, #0x12 - beq _080529F4 - bl sub_080529F8 - cmp r0, #0 - beq _08052954 - movs r0, #0 - strb r0, [r4, #8] - b _080529F6 - .align 2, 0 -_08052948: .4byte gScreenTransition -_0805294C: .4byte gSave -_08052950: .4byte gPlayerState -_08052954: - ldrb r0, [r4, #9] - subs r0, #1 - cmp r0, #8 - bhi _080529D4 - lsls r0, r0, #2 - ldr r1, _08052968 @ =_0805296C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052968: .4byte _0805296C -_0805296C: @ jump table - .4byte _08052990 @ case 0 - .4byte _080529A4 @ case 1 - .4byte _080529D4 @ case 2 - .4byte _080529A8 @ case 3 - .4byte _080529B2 @ case 4 - .4byte _080529BC @ case 5 - .4byte _080529C8 @ case 6 - .4byte _080529C8 @ case 7 - .4byte _0805299A @ case 8 -_08052990: - movs r0, #0xd - movs r1, #8 - bl DoFade - b _080529DC -_0805299A: - movs r0, #0xd - movs r1, #3 - bl DoFade - b _080529DC -_080529A4: - movs r0, #7 - b _080529AA -_080529A8: - movs r0, #5 -_080529AA: - movs r1, #4 - bl DoFade - b _080529DC -_080529B2: - movs r0, #5 - movs r1, #0x10 - bl DoFade - b _080529DC -_080529BC: - movs r1, #0x80 - lsls r1, r1, #1 - movs r0, #5 - bl DoFade - b _080529DC -_080529C8: - movs r1, #0x80 - lsls r1, r1, #1 - movs r0, #7 - bl DoFade - b _080529DC -_080529D4: - movs r0, #7 - movs r1, #0x10 - bl DoFade -_080529DC: - bl sub_080528F0 - ldr r0, _080529F0 @ =gMain - movs r1, #3 - strb r1, [r0, #4] - movs r1, #1 - strb r1, [r0, #0xb] - movs r0, #1 - b _080529F6 - .align 2, 0 -_080529F0: .4byte gMain -_080529F4: - movs r0, #0 -_080529F6: - pop {r4, pc} - - thumb_func_start sub_080529F8 -sub_080529F8: @ 0x080529F8 - push {r4, r5, r6, lr} - ldr r1, _08052A34 @ =gScreenTransition - ldrh r4, [r1, #0xa] - ldr r2, _08052A38 @ =gUnk_080FCAD6 - ldrh r0, [r2] - cmp r0, #0 - beq _08052A48 - ldr r3, _08052A3C @ =gPlayerState - movs r6, #0 - movs r0, #0x39 - adds r0, r0, r3 - mov ip, r0 - movs r5, #0x1e -_08052A12: - ldrh r0, [r2] - cmp r4, r0 - bne _08052A40 - strb r5, [r3, #0xc] - adds r0, r3, #0 - adds r0, #0x38 - strb r6, [r0] - ldrh r0, [r2, #2] - mov r3, ip - strb r0, [r3] - ldrb r0, [r1, #0xf] - cmp r0, #0 - bne _08052A30 - ldrh r0, [r2, #2] - strb r0, [r1, #0xf] -_08052A30: - movs r0, #1 - b _08052A4A - .align 2, 0 -_08052A34: .4byte gScreenTransition -_08052A38: .4byte gUnk_080FCAD6 -_08052A3C: .4byte gPlayerState -_08052A40: - adds r2, #4 - ldrh r0, [r2] - cmp r0, #0 - bne _08052A12 -_08052A48: - movs r0, #0 -_08052A4A: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08052A4C -sub_08052A4C: @ 0x08052A4C - push {r4, r5, lr} - ldr r2, _08052A88 @ =gScreenTransition - movs r0, #1 - strb r0, [r2, #8] - ldr r5, _08052A8C @ =gPlayerEntity - ldr r3, _08052A90 @ =gRoomControls - ldrh r0, [r5, #0x2e] - ldrh r1, [r3, #6] - subs r0, r0, r1 - movs r1, #0xfe - lsls r1, r1, #2 - adds r4, r1, #0 - ands r0, r4 - strh r0, [r2, #0x10] - ldrh r0, [r5, #0x32] - ldrh r1, [r3, #8] - subs r0, r0, r1 - ands r0, r4 - strh r0, [r2, #0x12] - movs r0, #4 - strb r0, [r2, #0xe] - movs r0, #0xa - strb r0, [r2, #0xf] - ldrb r0, [r3, #4] - strb r0, [r2, #0xc] - ldrb r0, [r3, #5] - subs r0, #1 - strb r0, [r2, #0xd] - pop {r4, r5, pc} - .align 2, 0 -_08052A88: .4byte gScreenTransition -_08052A8C: .4byte gPlayerEntity -_08052A90: .4byte gRoomControls - - thumb_func_start sub_08052A94 -sub_08052A94: @ 0x08052A94 - push {lr} - ldr r0, _08052AAC @ =gScreenTransition - ldrb r0, [r0, #9] - subs r0, #1 - cmp r0, #8 - bhi _08052B1C - lsls r0, r0, #2 - ldr r1, _08052AB0 @ =_08052AB4 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052AAC: .4byte gScreenTransition -_08052AB0: .4byte _08052AB4 -_08052AB4: @ jump table - .4byte _08052AD8 @ case 0 - .4byte _08052AE6 @ case 1 - .4byte _08052B22 @ case 2 - .4byte _08052B1C @ case 3 - .4byte _08052B08 @ case 4 - .4byte _08052AF0 @ case 5 - .4byte _08052AFC @ case 6 - .4byte _08052B12 @ case 7 - .4byte _08052ADC @ case 8 -_08052AD8: - movs r0, #0xc - b _08052B14 -_08052ADC: - movs r0, #0xc - movs r1, #3 - bl DoFade - b _08052B22 -_08052AE6: - movs r0, #6 - movs r1, #4 - bl DoFade - b _08052B22 -_08052AF0: - movs r1, #0x80 - lsls r1, r1, #1 - movs r0, #5 - bl DoFade - b _08052B22 -_08052AFC: - movs r1, #0x80 - lsls r1, r1, #1 - movs r0, #7 - bl DoFade - b _08052B22 -_08052B08: - movs r0, #4 - movs r1, #0x10 - bl DoFade - b _08052B22 -_08052B12: - movs r0, #6 -_08052B14: - movs r1, #8 - bl DoFade - b _08052B22 -_08052B1C: - movs r0, #0x10 - bl sub_080500F4 -_08052B22: - pop {pc} - - thumb_func_start sub_08052B24 -sub_08052B24: @ 0x08052B24 - push {lr} - ldr r0, _08052B90 @ =gInput - ldrh r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08052B8A - ldr r2, _08052B94 @ =gPlayerState - adds r0, r2, #0 - adds r0, #0x8b - ldrb r0, [r0] - cmp r0, #0 - bne _08052B8A - ldr r0, _08052B98 @ =gUnk_02034490 - ldrb r0, [r0] - cmp r0, #0 - bne _08052B8A - ldr r0, _08052B9C @ =gUnk_0200AF00 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _08052B8A - ldr r0, [r2, #0x30] - movs r1, #0x8c - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08052B8A - adds r0, r2, #0 - adds r0, #0xa9 - ldrb r0, [r0] - cmp r0, #1 - bgt _08052B8A - ldr r0, [r2, #0x2c] - cmp r0, #0 - bne _08052B8A - ldr r1, _08052BA0 @ =gPlayerEntity - adds r0, r1, #0 - adds r0, #0x7a - ldrh r0, [r0] - cmp r0, #0 - bne _08052B8A - movs r3, #0x36 - ldrsh r0, [r1, r3] - movs r1, #0x80 - lsls r1, r1, #8 - ands r0, r1 - cmp r0, #0 - beq _08052BA4 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _08052BA4 -_08052B8A: - movs r0, #0 - b _08052BB4 - .align 2, 0 -_08052B90: .4byte gInput -_08052B94: .4byte gPlayerState -_08052B98: .4byte gUnk_02034490 -_08052B9C: .4byte gUnk_0200AF00 -_08052BA0: .4byte gPlayerEntity -_08052BA4: - bl sub_0801862C - movs r0, #0x13 - bl sub_08078160 - bl FreezeTime - movs r0, #1 -_08052BB4: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08052BB8 -sub_08052BB8: @ 0x08052BB8 - push {lr} - ldr r0, _08052BE0 @ =gScreenTransition - adds r2, r0, #0 -.ifdef JP - adds r2, #0x34 -.else -.ifdef EU - adds r2, #0x34 -.else - adds r2, #0x35 -.endif -.endif - ldrb r1, [r2] - adds r3, r0, #0 - cmp r1, #0 - bne _08052BEC - ldr r0, _08052BE4 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r1, [r0, r2] - ldr r0, _08052BE8 @ =gRoomControls - movs r2, #0xc - ldrsh r0, [r0, r2] - subs r1, r1, r0 - movs r2, #0xd - cmp r1, #0x60 - ble _08052BEE - movs r2, #1 - b _08052BEE - .align 2, 0 -_08052BE0: .4byte gScreenTransition -_08052BE4: .4byte gPlayerEntity -_08052BE8: .4byte gRoomControls -_08052BEC: - ldrb r2, [r2] -_08052BEE: - ldrh r0, [r3, #0x36] - adds r1, r2, #0 - bl MessageAtHeight - pop {pc} - -.ifdef USA - thumb_func_start sub_08052BF8 -sub_08052BF8: @ 0x08052BF8 - push {lr} - ldr r2, _08052C34 @ =gScreenTransition - adds r1, r2, #0 - adds r1, #0x31 - ldrb r0, [r1] - cmp r0, #0 - bne _08052C30 - movs r0, #1 - strb r0, [r1] - ldr r0, _08052C38 @ =gArea - ldrb r1, [r0, #1] - adds r0, r2, #0 - adds r0, #0x2e - strb r1, [r0] - bl GetEmptyManager - adds r1, r0, #0 - cmp r1, #0 - beq _08052C30 - movs r0, #9 - strb r0, [r1, #8] - movs r0, #0xf - strb r0, [r1, #9] - strb r0, [r1, #0xa] - adds r0, r1, #0 - movs r1, #0 - bl AppendEntityToList -_08052C30: - pop {pc} - .align 2, 0 -_08052C34: .4byte gScreenTransition -_08052C38: .4byte gArea -.else -.ifdef DEMO_USA @TODO deduplicate - thumb_func_start sub_08052BF8 -sub_08052BF8: @ 0x08052BF8 - push {lr} - ldr r2, _08052C34 @ =gScreenTransition - adds r1, r2, #0 - adds r1, #0x31 - ldrb r0, [r1] - cmp r0, #0 - bne _08052C30 - movs r0, #1 - strb r0, [r1] - ldr r0, _08052C38 @ =gArea - ldrb r1, [r0, #1] - adds r0, r2, #0 - adds r0, #0x2e - strb r1, [r0] - bl GetEmptyManager - adds r1, r0, #0 - cmp r1, #0 - beq _08052C30 - movs r0, #9 - strb r0, [r1, #8] - movs r0, #0xf - strb r0, [r1, #9] - strb r0, [r1, #0xa] - adds r0, r1, #0 - movs r1, #0 - bl AppendEntityToList -_08052C30: - pop {pc} - .align 2, 0 -_08052C34: .4byte gScreenTransition -_08052C38: .4byte gArea -.endif -.endif - - -.ifdef DEMO_JP - thumb_func_start sub_08052BF8 -sub_08052BF8: @ 0x08052BF8 - push {lr} - ldr r0, _08052B38 @ =gScreenTransition - adds r1, r0, #0 - adds r1, #0x31 - ldrb r0, [r1] - cmp r0, #0 - bne _08052B36 - movs r0, #1 - strb r0, [r1] - bl GetEmptyManager - adds r1, r0, #0 - cmp r1, #0 - beq _08052B36 - movs r0, #9 - strb r0, [r1, #8] - movs r0, #0xf - strb r0, [r1, #9] - strb r0, [r1, #0xa] - adds r0, r1, #0 - movs r1, #0 - bl AppendEntityToList -_08052B36: - pop {pc} - .align 2, 0 -_08052B38: .4byte gScreenTransition -.endif - - thumb_func_start sub_08052C3C -sub_08052C3C: @ 0x08052C3C - push {lr} - ldr r2, _08052C58 @ =gArea - ldrb r0, [r2, #0x18] - cmp r0, #0 - bne _08052C48 - strb r0, [r2, #0x1a] -_08052C48: - ldrb r0, [r2, #0x1a] - cmp r0, #0 - beq _08052C56 - subs r0, #1 - movs r1, #0 - strb r0, [r2, #0x1a] - strb r1, [r2, #0x18] -_08052C56: - pop {pc} - .align 2, 0 -_08052C58: .4byte gArea - - thumb_func_start sub_08052C5C -sub_08052C5C: @ 0x08052C5C - push {lr} - bl sub_08052680 - cmp r0, #0 - bne _08052C98 - bl sub_08052620 - cmp r0, #0 - beq _08052C84 - ldr r2, _08052C7C @ =gScreenTransition - ldr r1, _08052C80 @ =gPlayerEntity - ldrh r0, [r1, #0x2e] - strh r0, [r2, #0x20] - ldrh r0, [r1, #0x32] - strh r0, [r2, #0x22] - b _08052C98 - .align 2, 0 -_08052C7C: .4byte gScreenTransition -_08052C80: .4byte gPlayerEntity -_08052C84: - bl CheckIsDungeon - cmp r0, #0 - beq _08052C98 - ldr r2, _08052C9C @ =gScreenTransition - ldr r1, _08052CA0 @ =gPlayerEntity - ldrh r0, [r1, #0x2e] - strh r0, [r2, #0x1c] - ldrh r0, [r1, #0x32] - strh r0, [r2, #0x1e] -_08052C98: - pop {pc} - .align 2, 0 -_08052C9C: .4byte gScreenTransition -_08052CA0: .4byte gPlayerEntity - - thumb_func_start sub_08052CA4 -sub_08052CA4: @ 0x08052CA4 - push {r4, lr} - ldr r4, _08052CC8 @ =gAreaRoomHeaders - lsls r0, r0, #2 - adds r0, r0, r4 - lsls r4, r1, #2 - adds r4, r4, r1 - lsls r4, r4, #1 - ldr r1, [r0] - adds r1, r1, r4 - ldr r4, _08052CCC @ =gScreenTransition - ldrh r0, [r1] - adds r0, r0, r2 - strh r0, [r4, #0x20] - ldrh r0, [r1, #2] - adds r0, r0, r3 - strh r0, [r4, #0x22] - pop {r4, pc} - .align 2, 0 -_08052CC8: .4byte gAreaRoomHeaders -_08052CCC: .4byte gScreenTransition - - thumb_func_start sub_08052CD0 -sub_08052CD0: @ 0x08052CD0 - push {r4, lr} - ldr r4, _08052CF4 @ =gAreaRoomHeaders - lsls r0, r0, #2 - adds r0, r0, r4 - lsls r4, r1, #2 - adds r4, r4, r1 - lsls r4, r4, #1 - ldr r1, [r0] - adds r1, r1, r4 - ldr r4, _08052CF8 @ =gScreenTransition - ldrh r0, [r1] - adds r0, r0, r2 - strh r0, [r4, #0x1c] - ldrh r0, [r1, #2] - adds r0, r0, r3 - strh r0, [r4, #0x1e] - pop {r4, pc} - .align 2, 0 -_08052CF4: .4byte gAreaRoomHeaders -_08052CF8: .4byte gScreenTransition - - thumb_func_start sub_08052CFC -sub_08052CFC: @ 0x08052CFC - push {r4, lr} - ldr r4, _08052D44 @ =gArea - ldr r1, _08052D48 @ =0x00000894 - adds r0, r4, #0 - bl MemClear - ldr r0, _08052D4C @ =gRoomControls - ldrb r1, [r0, #4] - lsls r1, r1, #2 - ldr r0, _08052D50 @ =gAreaMetadata - adds r1, r1, r0 - ldrb r0, [r1] - strb r0, [r4] - ldrb r0, [r1, #1] - strb r0, [r4, #1] - ldrb r0, [r1, #1] - subs r0, #0x17 - strb r0, [r4, #3] - ldr r2, _08052D54 @ =gUnk_0811E454 - ldrb r0, [r1, #2] - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - strh r0, [r4, #4] - ldrb r0, [r1, #2] - strb r0, [r4, #6] - movs r0, #0xb4 - strb r0, [r4, #0x1a] - adds r0, #0x4c - strh r0, [r4, #0xa] - bl sub_08052A94 - bl sub_08052DA8 - pop {r4, pc} - .align 2, 0 -_08052D44: .4byte gArea -_08052D48: .4byte 0x00000894 -_08052D4C: .4byte gRoomControls -_08052D50: .4byte gAreaMetadata -_08052D54: .4byte gUnk_0811E454 - - thumb_func_start sub_08052D58 -sub_08052D58: @ 0x08052D58 - lsls r0, r0, #2 - ldr r1, _08052D6C @ =gAreaMetadata - adds r0, r0, r1 - ldr r1, _08052D70 @ =gUnk_0811E454 - ldrb r0, [r0, #2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_08052D6C: .4byte gAreaMetadata -_08052D70: .4byte gUnk_0811E454 - - thumb_func_start sub_08052D74 -sub_08052D74: @ 0x08052D74 - push {r4, r5, lr} - adds r3, r0, #0 - adds r4, r1, #0 - ldr r0, _08052D98 @ =gMain - ldrb r0, [r0, #4] - cmp r0, #7 - beq _08052D96 - ldr r0, _08052D9C @ =gArea - ldr r5, _08052DA0 @ =0x00000888 - adds r1, r0, r5 - str r3, [r1] - ldr r3, _08052DA4 @ =0x0000088C - adds r1, r0, r3 - str r4, [r1] - adds r5, #8 - adds r0, r0, r5 - str r2, [r0] -_08052D96: - pop {r4, r5, pc} - .align 2, 0 -_08052D98: .4byte gMain -_08052D9C: .4byte gArea -_08052DA0: .4byte 0x00000888 -_08052DA4: .4byte 0x0000088C - - thumb_func_start sub_08052DA8 -sub_08052DA8: @ 0x08052DA8 - push {r4, r5, r6, r7, lr} - ldr r1, _08052DF8 @ =gAreaRoomHeaders - ldr r0, _08052DFC @ =gRoomControls - ldrb r0, [r0, #4] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r4, [r0] - ldr r7, _08052E00 @ =gUnk_02033ACC - movs r5, #0 - ldrh r0, [r4] - ldr r1, _08052E04 @ =0x0000FFFF - cmp r0, r1 - beq _08052DE8 - adds r6, r1, #0 -_08052DC4: - ldrh r0, [r4, #8] - cmp r0, r6 - beq _08052DD8 - ldr r0, _08052DFC @ =gRoomControls - ldrb r2, [r0, #4] - adds r0, r7, #0 - adds r1, r4, #0 - adds r3, r5, #0 - bl sub_08052E10 -_08052DD8: - adds r7, #0x20 - adds r5, #1 - adds r4, #0xa - cmp r5, #0x3f - bhi _08052DE8 - ldrh r0, [r4] - cmp r0, r6 - bne _08052DC4 -_08052DE8: - bl sub_08052E8C - ldr r1, _08052E08 @ =gArea - ldr r2, _08052E0C @ =0x0000085C - adds r1, r1, r2 - str r0, [r1] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08052DF8: .4byte gAreaRoomHeaders -_08052DFC: .4byte gRoomControls -_08052E00: .4byte gUnk_02033ACC -_08052E04: .4byte 0x0000FFFF -_08052E08: .4byte gArea -_08052E0C: .4byte 0x0000085C - - thumb_func_start sub_08052E10 -sub_08052E10: @ 0x08052E10 - push {r4, r5, lr} - adds r5, r0, #0 - ldrh r0, [r1] - strh r0, [r5, #4] - ldrh r0, [r1, #2] - strh r0, [r5, #6] - ldrh r0, [r1, #4] - strh r0, [r5] - ldrh r0, [r1, #6] - strh r0, [r5, #2] - ldr r4, _08052E74 @ =gAreaTilesets - lsls r2, r2, #2 - adds r4, r2, r4 - ldrh r0, [r1, #8] - ldr r1, [r4] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r5, #8] - ldr r0, _08052E78 @ =gAreaRoomMaps - adds r0, r2, r0 - ldr r0, [r0] - lsls r3, r3, #2 - adds r0, r3, r0 - ldr r0, [r0] - str r0, [r5, #0xc] - ldr r0, _08052E7C @ =gAreaMetatiles - adds r0, r2, r0 - ldr r0, [r0] - str r0, [r5, #0x10] - ldr r0, _08052E80 @ =gUnk_080B755C - adds r0, r2, r0 - ldr r0, [r0] - str r0, [r5, #0x14] - ldr r0, _08052E84 @ =gExitLists - adds r0, r2, r0 - ldr r0, [r0] - adds r0, r3, r0 - ldr r0, [r0] - str r0, [r5, #0x18] - ldr r0, _08052E88 @ =gAreaTable - adds r2, r2, r0 - ldr r0, [r2] - cmp r0, #0 - beq _08052E70 - adds r0, r3, r0 - ldr r0, [r0] - str r0, [r5, #0x1c] -_08052E70: - pop {r4, r5, pc} - .align 2, 0 -_08052E74: .4byte gAreaTilesets -_08052E78: .4byte gAreaRoomMaps -_08052E7C: .4byte gAreaMetatiles -_08052E80: .4byte gUnk_080B755C -_08052E84: .4byte gExitLists -_08052E88: .4byte gAreaTable - - thumb_func_start sub_08052E8C -sub_08052E8C: @ 0x08052E8C - ldr r0, _08052E98 @ =gRoomControls - ldrb r0, [r0, #5] - lsls r0, r0, #5 - ldr r1, _08052E9C @ =gUnk_02033ACC - adds r0, r0, r1 - bx lr - .align 2, 0 -_08052E98: .4byte gRoomControls -_08052E9C: .4byte gUnk_02033ACC - - thumb_func_start sub_08052EA0 -sub_08052EA0: @ 0x08052EA0 - push {r4, lr} - ldr r4, _08052EE4 @ =gRoomVars - adds r0, r4, #0 - movs r1, #0xcc - bl MemClear - movs r0, #0xff - strb r0, [r4, #0x10] - strb r0, [r4, #0x11] - strb r0, [r4, #0x12] - strb r0, [r4, #0x13] - adds r0, #1 - strh r0, [r4, #0xc] - ldr r2, _08052EE8 @ =gArea - ldr r1, _08052EEC @ =gAreaMetadata - ldr r0, _08052EF0 @ =gRoomControls - ldrb r0, [r0, #4] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrb r0, [r0, #1] - strb r0, [r2, #1] - bl sub_08049D30 - bl InitScriptData - bl sub_08054524 - bl sub_080186D4 - bl sub_0806F364 - bl sub_080530C8 - pop {r4, pc} - .align 2, 0 -_08052EE4: .4byte gRoomVars -_08052EE8: .4byte gArea -_08052EEC: .4byte gAreaMetadata -_08052EF0: .4byte gRoomControls - - thumb_func_start sub_08052EF4 -sub_08052EF4: @ 0x08052EF4 - push {lr} - cmp r0, #0 - bge _08052EFE - ldr r0, _08052F10 @ =gRoomControls - ldrb r0, [r0, #4] -_08052EFE: - lsls r0, r0, #2 - ldr r1, _08052F14 @ =gAreaMetadata - adds r0, r0, r1 - ldr r1, _08052F18 @ =gUnk_0811E454 - ldrb r0, [r0, #2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - pop {pc} - .align 2, 0 -_08052F10: .4byte gRoomControls -_08052F14: .4byte gAreaMetadata -_08052F18: .4byte gUnk_0811E454 - - thumb_func_start sub_08052F1C -sub_08052F1C: @ 0x08052F1C - push {r4, r5, r6, lr} - ldr r2, _08052F4C @ =gArea - ldrb r1, [r2, #0xd] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08052FCC - ldr r0, _08052F50 @ =gRoomVars - ldrb r0, [r0] - cmp r0, #0 - beq _08052FCC - movs r5, #0 - movs r4, #0 - ldr r0, _08052F54 @ =gRoomControls - ldrb r1, [r0, #0x10] - adds r3, r0, #0 - cmp r1, #1 - beq _08052F62 - cmp r1, #1 - bgt _08052F58 - cmp r1, #0 - beq _08052F62 - b _08052F72 - .align 2, 0 -_08052F4C: .4byte gArea -_08052F50: .4byte gRoomVars -_08052F54: .4byte gRoomControls -_08052F58: - cmp r1, #2 - beq _08052F62 - cmp r1, #3 - beq _08052F6A - b _08052F72 -_08052F62: - ldr r1, _08052FD0 @ =0x0000085C - adds r0, r2, r1 - ldr r0, [r0] - ldrh r5, [r0, #2] -_08052F6A: - ldr r1, _08052FD0 @ =0x0000085C - adds r0, r2, r1 - ldr r0, [r0] - ldrh r4, [r0] -_08052F72: - ldr r0, _08052FD0 @ =0x0000085C - adds r2, r2, r0 - ldr r1, [r2] - ldrh r0, [r1, #4] - adds r0, r0, r4 - strh r0, [r1, #4] - ldr r1, [r2] - ldrh r0, [r1, #6] - adds r0, r0, r5 - strh r0, [r1, #6] - ldrh r0, [r3, #6] - adds r0, r0, r4 - strh r0, [r3, #6] - ldrh r0, [r3, #8] - adds r0, r0, r5 - strh r0, [r3, #8] - ldrh r0, [r3, #0xa] - adds r0, r0, r4 - strh r0, [r3, #0xa] - ldrh r0, [r3, #0xc] - adds r0, r0, r5 - strh r0, [r3, #0xc] - ldr r2, _08052FD4 @ =gEntityLists - adds r6, r2, #0 - adds r6, #0x48 -_08052FA4: - ldr r1, [r2, #4] - adds r3, r2, #0 - adds r3, #8 - cmp r1, r2 - beq _08052FC6 -_08052FAE: - ldrb r0, [r1, #8] - cmp r0, #9 - beq _08052FC0 - ldrh r0, [r1, #0x2e] - adds r0, r0, r4 - strh r0, [r1, #0x2e] - ldrh r0, [r1, #0x32] - adds r0, r0, r5 - strh r0, [r1, #0x32] -_08052FC0: - ldr r1, [r1, #4] - cmp r1, r2 - bne _08052FAE -_08052FC6: - adds r2, r3, #0 - cmp r2, r6 - blo _08052FA4 -_08052FCC: - pop {r4, r5, r6, pc} - .align 2, 0 -_08052FD0: .4byte 0x0000085C -_08052FD4: .4byte gEntityLists - - thumb_func_start sub_08052FD8 -sub_08052FD8: @ 0x08052FD8 - push {lr} - bl sub_08052FF4 - ldr r1, _08052FF0 @ =gRoomControls - movs r0, #0 - str r0, [r1, #0x30] - bl sub_0807C860 - bl sub_0807C740 - pop {pc} - .align 2, 0 -_08052FF0: .4byte gRoomControls - - thumb_func_start sub_08052FF4 -sub_08052FF4: @ 0x08052FF4 - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r4, r1, #0 - bl sub_08080668 - bl sub_080197AC - ldr r0, _0805306C @ =gRoomControls - strb r6, [r0, #4] - strb r4, [r0, #5] - ldr r1, _08053070 @ =gScreen - movs r0, #0xba - lsls r0, r0, #5 - strh r0, [r1] - ldr r5, _08053074 @ =gUnk_020342CC - adds r0, r5, #0 - movs r1, #0x20 - bl MemClear - str r5, [r5, #0x20] - ldr r0, _08053078 @ =gAreaRoomHeaders - lsls r6, r6, #2 - adds r0, r6, r0 - lsls r2, r4, #2 - adds r4, r2, r4 - lsls r4, r4, #1 - ldr r0, [r0] - adds r0, r0, r4 - ldrh r1, [r0] - strh r1, [r5, #4] - ldrh r1, [r0, #2] - strh r1, [r5, #6] - ldrh r1, [r0, #4] - strh r1, [r5] - ldrh r1, [r0, #6] - strh r1, [r5, #2] - ldr r1, _0805307C @ =gAreaTilesets - adds r1, r6, r1 - ldrh r0, [r0, #8] - ldr r1, [r1] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r5, #8] - ldr r0, _08053080 @ =gAreaRoomMaps - adds r0, r6, r0 - ldr r0, [r0] - adds r2, r2, r0 - ldr r0, [r2] - str r0, [r5, #0xc] - ldr r0, _08053084 @ =gAreaMetatiles - adds r0, r6, r0 - ldr r0, [r0] - str r0, [r5, #0x10] - ldr r0, _08053088 @ =gUnk_080B755C - adds r6, r6, r0 - ldr r0, [r6] - str r0, [r5, #0x14] - pop {r4, r5, r6, pc} - .align 2, 0 -_0805306C: .4byte gRoomControls -_08053070: .4byte gScreen -_08053074: .4byte gUnk_020342CC -_08053078: .4byte gAreaRoomHeaders -_0805307C: .4byte gAreaTilesets -_08053080: .4byte gAreaRoomMaps -_08053084: .4byte gAreaMetatiles -_08053088: .4byte gUnk_080B755C - - thumb_func_start sub_0805308C -sub_0805308C: @ 0x0805308C - push {lr} - adds r1, r0, #0 - ldr r2, _080530AC @ =gRoomVars - movs r3, #0xc - ldrsh r0, [r2, r3] - adds r1, r1, r0 - cmp r1, #0 - bge _0805309E - movs r1, #0 -_0805309E: - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - ble _080530A8 - adds r1, r0, #0 -_080530A8: - strh r1, [r2, #0xc] - pop {pc} - .align 2, 0 -_080530AC: .4byte gRoomVars - - thumb_func_start sub_080530B0 -sub_080530B0: @ 0x080530B0 - push {lr} - ldr r0, _080530C0 @ =gUnk_080FCAF8 - ldr r1, _080530C4 @ =gUnk_030010EC - movs r2, #0x20 - bl MemCopy - pop {pc} - .align 2, 0 -_080530C0: .4byte gUnk_080FCAF8 -_080530C4: .4byte gUnk_030010EC - - thumb_func_start sub_080530C8 -sub_080530C8: @ 0x080530C8 - push {r4, r5, lr} - movs r4, #1 - movs r5, #0xc0 - lsls r5, r5, #2 - adds r0, r5, #0 - movs r1, #0x78 - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _080530E0 - movs r4, #9 - b _08053138 -_080530E0: - movs r0, #6 - bl CheckGlobalFlag - cmp r0, #0 - beq _080530EE - movs r4, #8 - b _08053138 -_080530EE: - adds r0, r5, #0 - movs r1, #0x32 - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _080530FE - movs r4, #7 - b _08053138 -_080530FE: - movs r0, #5 - bl CheckGlobalFlag - cmp r0, #0 - beq _0805310C - movs r4, #6 - b _08053138 -_0805310C: - movs r0, #4 - bl CheckGlobalFlag - cmp r0, #0 - beq _0805311A - movs r4, #5 - b _08053138 -_0805311A: - movs r0, #0x80 - lsls r0, r0, #1 -.ifdef JP @ TODO deduplicate - movs r1, #0x9b -.else -.ifdef EU - movs r1, #0x9b -.else -.ifdef DEMO_JP - movs r1, #0x9b -.else - movs r1, #0x9c -.endif -.endif -.endif - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _0805312C - movs r4, #4 - b _08053138 -_0805312C: - movs r0, #2 - bl CheckGlobalFlag - cmp r0, #0 - beq _08053138 - movs r4, #2 -_08053138: - ldr r0, _08053140 @ =gSave - strb r4, [r0, #8] - pop {r4, r5, pc} - .align 2, 0 -_08053140: .4byte gSave - - thumb_func_start sub_08053144 -sub_08053144: @ 0x08053144 - push {lr} - movs r0, #0x51 - bl CheckGlobalFlag - cmp r0, #0 - beq _08053154 - movs r0, #0 - b _0805316E -_08053154: - movs r1, #0 - ldr r0, _08053170 @ =gArea - ldrb r2, [r0, #1] - cmp r2, #0 - beq _0805316C - ldr r0, _08053174 @ =gScreenTransition - adds r0, #0x2e - ldrb r1, [r0] - eors r1, r2 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r1, r0, #0x1f -_0805316C: - adds r0, r1, #0 -_0805316E: - pop {pc} - .align 2, 0 -_08053170: .4byte gArea -_08053174: .4byte gScreenTransition - - thumb_func_start sub_08053178 -sub_08053178: @ 0x08053178 - push {r4, r5, lr} - bl sub_08053144 - cmp r0, #0 - beq _080531E6 - ldr r0, _080531E8 @ =gScreenTransition - ldr r5, _080531EC @ =gArea - ldrb r1, [r5, #1] - adds r0, #0x2e - strb r1, [r0] - movs r0, #0x15 - bl CheckGlobalFlag - cmp r0, #0 - beq _080531E6 - movs r0, #0x51 - bl CheckGlobalFlag - cmp r0, #0 - bne _080531DC - bl GetEmptyManager - adds r4, r0, #0 - cmp r4, #0 - beq _080531DC - movs r0, #9 - strb r0, [r4, #8] - movs r0, #0x39 - strb r0, [r4, #9] - adds r0, r4, #0 - movs r1, #8 - bl AppendEntityToList - ldr r0, _080531F0 @ =gRoomVars - ldrb r0, [r0] - cmp r0, #0 - bne _080531DC - ldr r0, _080531F4 @ =gUnk_02002AA0 - ldrb r1, [r5, #1] - bl ReadBit - cmp r0, #0 - bne _080531DC - movs r0, #1 - strb r0, [r4, #0xb] - movs r0, #3 - bl sub_08078A90 - bl sub_0805E5A8 -_080531DC: - ldr r0, _080531F4 @ =gUnk_02002AA0 - ldr r1, _080531EC @ =gArea - ldrb r1, [r1, #1] - bl WriteBit -_080531E6: - pop {r4, r5, pc} - .align 2, 0 -_080531E8: .4byte gScreenTransition -_080531EC: .4byte gArea -_080531F0: .4byte gRoomVars -_080531F4: .4byte gUnk_02002AA0 - - thumb_func_start sub_080531F8 -sub_080531F8: @ 0x080531F8 - push {r4, r5, lr} - ldr r1, _0805323C @ =gPlayerState - ldr r4, _08053240 @ =gPlayerEntity - ldrh r0, [r4, #0x2e] - strh r0, [r1, #0x16] - ldrh r0, [r4, #0x32] - strh r0, [r1, #0x18] - bl sub_08053144 - cmp r0, #0 - beq _08053238 - ldr r5, _08053244 @ =gUnk_030010AC - ldr r1, _08053248 @ =gUnk_02002AC8 - adds r0, r5, #0 - movs r2, #0x20 - bl MemCopy - bl CheckIsDungeon - cmp r0, #0 - beq _08053238 - adds r1, r5, #0 - subs r1, #0xc - ldr r2, _0805324C @ =gRoomControls - ldrb r0, [r2, #4] - strb r0, [r1, #0x16] - ldrb r0, [r2, #5] - strb r0, [r1, #0x17] - ldrh r0, [r4, #0x2e] - strh r0, [r1, #0x18] - ldrh r0, [r4, #0x32] - strh r0, [r1, #0x1a] -_08053238: - pop {r4, r5, pc} - .align 2, 0 -_0805323C: .4byte gPlayerState -_08053240: .4byte gPlayerEntity -_08053244: .4byte gUnk_030010AC -_08053248: .4byte gUnk_02002AC8 -_0805324C: .4byte gRoomControls - - thumb_func_start sub_08053250 -sub_08053250: @ 0x08053250 - push {r4, lr} - ldr r0, _0805328C @ =gScreenTransition - movs r1, #0 - strb r1, [r0, #0xf] - ldr r3, _08053290 @ =gPlayerEntity - ldr r4, _08053294 @ =gRoomControls - ldrh r1, [r3, #0x2e] - ldrh r2, [r4, #6] - subs r1, r1, r2 - strh r1, [r0, #0x10] - ldrh r1, [r3, #0x32] - ldrh r2, [r4, #8] - subs r1, r1, r2 - strh r1, [r0, #0x12] - ldrb r1, [r3, #0x14] - strb r1, [r0, #0xe] - adds r3, #0x38 - ldrb r1, [r3] - strb r1, [r0, #0x14] - ldrb r1, [r4, #4] - strb r1, [r0, #0xc] - ldrb r1, [r4, #5] - strb r1, [r0, #0xd] - adds r0, #0xc - ldr r1, _08053298 @ =gUnk_02002AC8 - movs r2, #0x20 - bl MemCopy - pop {r4, pc} - .align 2, 0 -_0805328C: .4byte gScreenTransition -_08053290: .4byte gPlayerEntity -_08053294: .4byte gRoomControls -_08053298: .4byte gUnk_02002AC8 - - thumb_func_start sub_0805329C -sub_0805329C: @ 0x0805329C - push {lr} - bl sub_08053144 - cmp r0, #0 - beq _080532E0 - ldr r0, _080532B8 @ =gRoomControls - ldrb r0, [r0, #4] - cmp r0, #0x48 - beq _080532C2 - cmp r0, #0x48 - bgt _080532BC - cmp r0, #0x18 - beq _080532D6 - b _080532DC - .align 2, 0 -_080532B8: .4byte gRoomControls -_080532BC: - cmp r0, #0x50 - beq _080532D0 - b _080532DC -_080532C2: - ldr r1, _080532CC @ =gSave - movs r0, #0 - strb r0, [r1, #7] - b _080532E0 - .align 2, 0 -_080532CC: .4byte gSave -_080532D0: - bl sub_080530B0 - b _080532E0 -_080532D6: - bl sub_080532E4 - b _080532E0 -_080532DC: - bl sub_08053460 -_080532E0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080532E4 -sub_080532E4: @ 0x080532E4 - ldr r0, _08053318 @ =gAreaRoomHeaders - movs r1, #0xb0 - lsls r1, r1, #1 - adds r0, r0, r1 - ldr r0, [r0] - movs r3, #0xa5 - lsls r3, r3, #1 - adds r2, r0, r3 - ldr r1, _0805331C @ =gScreenTransition - movs r0, #0x58 - strb r0, [r1, #0x16] - movs r0, #0x21 - strb r0, [r1, #0x17] - ldrh r0, [r2, #4] - lsrs r0, r0, #1 - ldrh r3, [r2] - adds r0, r0, r3 - strh r0, [r1, #0x18] - strh r0, [r1, #0x1c] - ldrh r0, [r2, #6] - ldrh r2, [r2, #2] - adds r0, r0, r2 - adds r0, #0xa0 - strh r0, [r1, #0x1a] - strh r0, [r1, #0x1e] - bx lr - .align 2, 0 -_08053318: .4byte gAreaRoomHeaders -_0805331C: .4byte gScreenTransition - - thumb_func_start sub_08053320 -sub_08053320: @ 0x08053320 - push {r4, lr} - ldr r0, _0805337C @ =gBG0Buffer - movs r4, #0x80 - lsls r4, r4, #4 - adds r1, r4, #0 - bl MemClear - ldr r0, _08053380 @ =gBG1Buffer - adds r1, r4, #0 - bl MemClear - ldr r0, _08053384 @ =gBG2Buffer - adds r1, r4, #0 - bl MemClear - ldr r0, _08053388 @ =gBG3Buffer - movs r1, #0x80 - lsls r1, r1, #5 - bl MemClear - movs r0, #0x10 - bl LoadGfxGroup - movs r0, #0x17 - bl LoadGfxGroup - ldr r0, _0805338C @ =gRoomControls - ldrb r0, [r0, #4] - cmp r0, #4 - bne _08053362 - movs r0, #0x1a - bl LoadGfxGroup -_08053362: - bl sub_08053390 - movs r0, #0xb - bl LoadPaletteGroup - movs r0, #0xc - bl LoadPaletteGroup - movs r0, #0 - movs r1, #0 - bl sub_0801D79C - pop {r4, pc} - .align 2, 0 -_0805337C: .4byte gBG0Buffer -_08053380: .4byte gBG1Buffer -_08053384: .4byte gBG2Buffer -_08053388: .4byte gBG3Buffer -_0805338C: .4byte gRoomControls - - thumb_func_start sub_08053390 -sub_08053390: @ 0x08053390 - push {lr} - movs r0, #8 - bl GetInventoryValue - movs r1, #0x19 - cmp r0, #0 - beq _080533A0 - movs r1, #0x18 -_080533A0: - adds r0, r1, #0 - bl LoadGfxGroup - movs r0, #0xa - bl GetInventoryValue - cmp r0, #0 - beq _080533B6 - movs r0, #0x1d - bl LoadGfxGroup -_080533B6: - movs r0, #0xc - bl GetInventoryValue - movs r1, #0x1b - cmp r0, #0 - beq _080533C4 - movs r1, #0x1c -_080533C4: - adds r0, r1, #0 - bl LoadGfxGroup - pop {pc} - - thumb_func_start sub_080533CC -sub_080533CC: @ 0x080533CC - ldr r0, _08053400 @ =gUnk_020178E0 - ldr r2, _08053404 @ =0xFFFFFE00 - adds r1, r0, r2 - ldrh r2, [r0] - strh r2, [r1] - adds r0, #2 - adds r1, #2 - ldrh r2, [r0] - strh r2, [r1] - adds r0, #2 - adds r1, #2 - ldrh r2, [r0] - strh r2, [r1] - adds r0, #2 - adds r1, #2 - ldrh r2, [r0] - strh r2, [r1] - ldrh r0, [r0, #2] - strh r0, [r1, #2] - ldr r2, _08053408 @ =gUsedPalettes - ldr r0, [r2] - movs r1, #8 - orrs r0, r1 - str r0, [r2] - bx lr - .align 2, 0 -_08053400: .4byte gUnk_020178E0 -_08053404: .4byte 0xFFFFFE00 -_08053408: .4byte gUsedPalettes - - thumb_func_start sub_0805340C -sub_0805340C: @ 0x0805340C - push {r4, r5, r6, lr} - ldr r5, _08053428 @ =gUnk_02002ECC - movs r4, #0 - ldr r6, _0805342C @ =gUnk_080FCB18 -_08053414: - ldm r6!, {r1} - adds r0, r5, #0 - bl _call_via_r1 - adds r4, #1 - adds r5, #4 - cmp r4, #7 - bls _08053414 - pop {r4, r5, r6, pc} - .align 2, 0 -_08053428: .4byte gUnk_02002ECC -_0805342C: .4byte gUnk_080FCB18 - - thumb_func_start nullsub_480 -nullsub_480: @ 0x08053430 - bx lr - .align 2, 0 - - thumb_func_start sub_08053434 -sub_08053434: @ 0x08053434 - push {lr} - adds r1, r0, #0 - ldr r0, _0805345C @ =gArea - ldrb r0, [r0, #1] - cmp r0, #0x1d - bne _0805345A - ldr r0, [r1] - cmp r0, #0 - beq _0805345A - subs r0, #1 - str r0, [r1] - cmp r0, #0 - bne _0805345A - bl sub_08053460 - movs r0, #5 - movs r1, #6 - bl MenuFadeIn -_0805345A: - pop {pc} - .align 2, 0 -_0805345C: .4byte gArea - - thumb_func_start sub_08053460 -sub_08053460: @ 0x08053460 - push {lr} - ldr r0, _08053488 @ =gSave - ldr r1, _0805348C @ =0x0000048C - adds r0, r0, r1 - movs r1, #0 - str r1, [r0] - movs r0, #0x8c - lsls r0, r0, #4 - movs r1, #0x79 - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _08053480 - movs r0, #0x1c - bl ClearGlobalFlag -_08053480: - ldr r0, _08053490 @ =gUnk_080FCB38 - bl sub_0805356C - pop {pc} - .align 2, 0 -_08053488: .4byte gSave -_0805348C: .4byte 0x0000048C -_08053490: .4byte gUnk_080FCB38 - - thumb_func_start sub_08053494 -sub_08053494: @ 0x08053494 - ldr r0, _080534A0 @ =gSave - ldr r1, _080534A4 @ =0x0000048C - adds r0, r0, r1 - ldr r1, _080534A8 @ =0x00002A30 - str r1, [r0] - bx lr - .align 2, 0 -_080534A0: .4byte gSave -_080534A4: .4byte 0x0000048C -_080534A8: .4byte 0x00002A30 - - thumb_func_start sub_080534AC -sub_080534AC: @ 0x080534AC - push {r4, lr} - movs r4, #0x8c - lsls r4, r4, #4 - adds r0, r4, #0 - movs r1, #0x7c - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _080534D6 - adds r0, r4, #0 - movs r1, #0x7c - bl ClearLocalFlagByOffset - ldr r0, _080534D8 @ =gSave - ldr r1, _080534DC @ =0x0000048C - adds r0, r0, r1 - movs r1, #0 - str r1, [r0] - ldr r0, _080534E0 @ =0x80100000 - bl SoundReq -_080534D6: - pop {r4, pc} - .align 2, 0 -_080534D8: .4byte gSave -_080534DC: .4byte 0x0000048C -_080534E0: .4byte 0x80100000 - - thumb_func_start sub_080534E4 -sub_080534E4: @ 0x080534E4 - push {lr} - adds r1, r0, #0 - ldr r0, _080534FC @ =gRoomControls - ldrb r0, [r0, #4] - cmp r0, #0x1a - beq _080534FA - ldr r0, [r1] - cmp r0, #0 - beq _080534FA - subs r0, #1 - str r0, [r1] -_080534FA: - pop {pc} - .align 2, 0 -_080534FC: .4byte gRoomControls - - thumb_func_start sub_08053500 -sub_08053500: @ 0x08053500 - ldr r0, _0805350C @ =gSave - ldr r1, _08053510 @ =0x00000494 - adds r0, r0, r1 - ldr r1, _08053514 @ =0x00008CA0 - str r1, [r0] - bx lr - .align 2, 0 -_0805350C: .4byte gSave -_08053510: .4byte 0x00000494 -_08053514: .4byte 0x00008CA0 - - thumb_func_start sub_08053518 -sub_08053518: @ 0x08053518 - push {lr} - bl sub_08053460 - ldr r0, _08053568 @ =gUnk_080FCB62 - bl sub_0805356C - movs r0, #0x1b - bl CheckGlobalFlag - cmp r0, #0 - bne _08053534 - movs r0, #0x1a - bl ClearGlobalFlag -_08053534: - movs r0, #0x40 - bl GetInventoryValue - cmp r0, #0 - bne _08053544 - movs r0, #2 - bl ClearGlobalFlag -_08053544: - movs r0, #0x41 - bl GetInventoryValue - cmp r0, #0 - bne _08053554 - movs r0, #3 - bl ClearGlobalFlag -_08053554: - movs r0, #0x42 - bl GetInventoryValue - cmp r0, #0 - bne _08053564 - movs r0, #5 - bl ClearGlobalFlag -_08053564: - pop {pc} - .align 2, 0 -_08053568: .4byte gUnk_080FCB62 - - thumb_func_start sub_0805356C -sub_0805356C: @ 0x0805356C - push {r4, r5, lr} - adds r4, r0, #0 - ldrh r0, [r4] - ldr r1, _0805358C @ =0x0000FFFF - cmp r0, r1 - beq _0805358A - adds r5, r1, #0 -_0805357A: - ldrh r0, [r4] - ldrh r1, [r4, #2] - bl ClearLocalFlagByOffset - adds r4, #4 - ldrh r0, [r4] - cmp r0, r5 - bne _0805357A -_0805358A: - pop {r4, r5, pc} - .align 2, 0 -_0805358C: .4byte 0x0000FFFF - thumb_func_start sub_08053590 sub_08053590: @ 0x08053590 push {lr} @@ -2020,7 +59,7 @@ sub_080535F4: @ 0x080535F4 ldrb r0, [r0] cmp r0, #0 bne _08053608 - bl sub_0805E5B4 + bl ResetSystemPriority ldr r1, _08053610 @ =gMenu movs r0, #2 strb r0, [r1, #6] @@ -2263,7 +302,7 @@ sub_08053758: @ 0x08053758 strh r0, [r2, #0x20] movs r0, #0xf bl SoundReq - bl sub_0805E5B4 + bl ResetSystemPriority movs r1, #0x80 lsls r1, r1, #1 movs r0, #5 @@ -2732,8 +771,8 @@ sub_08053B74: @ 0x08053B74 strb r0, [r1] ldr r0, _08053BA8 @ =gUnk_080FCDE0 bl LoadRoomEntityList - bl sub_0805E5B4 - bl sub_0805E470 + bl ResetSystemPriority + bl ResetEntityPriority movs r1, #0x80 lsls r1, r1, #1 movs r0, #5 @@ -2953,7 +992,7 @@ sub_08053D34: @ 0x08053D34 lsls r4, r4, #3 adds r0, r4, #0 movs r1, #0x3d - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _08053D5C movs r0, #0x74 @@ -2963,7 +1002,7 @@ sub_08053D34: @ 0x08053D34 _08053D5C: adds r0, r4, #0 movs r1, #0x3e - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _08053D72 movs r0, #0x74 @@ -3123,7 +1162,7 @@ sub_08053E74: @ 0x08053E74 movs r0, #1 strb r0, [r1] movs r0, #1 - bl sub_0805E450 + bl SetMinPriority movs r0, #4 movs r1, #8 bl DoFade @@ -3248,7 +1287,7 @@ sub_08053F88: @ 0x08053F88 ldrb r0, [r1, #5] adds r0, #1 strb r0, [r1, #5] - bl sub_0805E470 + bl ResetEntityPriority _08053FAA: pop {pc} .align 2, 0 diff --git a/asm/code_0805436C.s b/asm/code_0805436C.s index 3e00265f..2def72dc 100644 --- a/asm/code_0805436C.s +++ b/asm/code_0805436C.s @@ -131,7 +131,7 @@ sub_08054974: @ 0x08054974 strb r0, [r4, #5] bl sub_08053320 ldrb r0, [r4, #4] - bl sub_08052D58 + bl GetFlagBankOffset ldr r1, _080549B8 @ =gArea strh r0, [r1, #4] cmp r5, #0 @@ -194,14 +194,14 @@ sub_08054A14: @ 0x08054A14 ldrb r0, [r2, #0x11] cmp r0, #0xd bhi _08054A34 - ldr r1, _08054A3C @ =gUnk_0811E454 + ldr r1, _08054A3C @ =gLocalFlagBanks lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrh r1, [r2, #0x12] - bl SetLocalFlagByOffset + bl SetLocalFlagByBank _08054A34: pop {pc} .align 2, 0 _08054A38: .4byte gUnk_080FE320 -_08054A3C: .4byte gUnk_0811E454 +_08054A3C: .4byte gLocalFlagBanks diff --git a/asm/code_08054C04.s b/asm/code_08054C04.s index 56bd9e02..c10cd693 100644 --- a/asm/code_08054C04.s +++ b/asm/code_08054C04.s @@ -531,7 +531,7 @@ _08054FCA: movs r0, #0x80 lsls r0, r0, #3 movs r1, #0x77 - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _08055004 ldrb r0, [r5, #2] @@ -1288,13 +1288,13 @@ sub_080555B8: @ 0x080555B8 push {r4, r5, lr} ldr r5, _08055600 @ =gMenu ldr r4, [r5, #0xc] - ldr r1, _08055604 @ =gUnk_0811E454 + ldr r1, _08055604 @ =gLocalFlagBanks ldrb r0, [r4, #0x11] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrh r1, [r4, #0x12] - bl SetLocalFlagByOffset + bl SetLocalFlagByBank ldrb r0, [r4, #2] ldrb r1, [r4, #3] bl sub_0804B0E8 @@ -1317,7 +1317,7 @@ sub_080555B8: @ 0x080555B8 pop {r4, r5, pc} .align 2, 0 _08055600: .4byte gMenu -_08055604: .4byte gUnk_0811E454 +_08055604: .4byte gLocalFlagBanks _08055608: .4byte gUpdateVisibleTiles thumb_func_start sub_0805560C diff --git a/asm/code_0807059C.s b/asm/code_0807059C.s index b7bcb418..370d8b49 100644 --- a/asm/code_0807059C.s +++ b/asm/code_0807059C.s @@ -56,7 +56,7 @@ sub_080705AC: @ 0x080705AC ldrb r0, [r0] cmp r0, #0 bne _08070674 - ldr r0, _0807062C @ =gUnk_03003DC0 + ldr r0, _0807062C @ =gPriorityHandler ldrh r0, [r0, #8] cmp r0, #0 bne _08070674 @@ -76,7 +76,7 @@ _0807061C: .4byte gUnk_02034490 _08070620: .4byte gMessage _08070624: .4byte gSave _08070628: .4byte gPlayerState -_0807062C: .4byte gUnk_03003DC0 +_0807062C: .4byte gPriorityHandler _08070630: ldrb r0, [r2] _08070632: diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index d6ba3f5d..b4cb9e7f 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -814,7 +814,7 @@ _080738E0: .4byte gPlayerState _080738E4: .4byte gUnk_0811BC40 _080738E8: .4byte gUnk_0813AD88 _080738EC: - bl sub_08052A4C + bl InitParachuteRoom _080738F0: ldr r1, _08073900 @ =0xFFFFE800 adds r0, r4, #0 @@ -4266,7 +4266,7 @@ _08075270: cmp r0, #0 beq _0807528C movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority _0807528C: pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/asm/code_08077698.s b/asm/code_08077698.s index ef0b4211..82a5c161 100644 --- a/asm/code_08077698.s +++ b/asm/code_08077698.s @@ -218,7 +218,7 @@ _08077810: ands r1, r2 strb r1, [r0, #0x10] movs r1, #0xb4 - bl sub_0805E4E0 + bl RequestPriorityDuration b _080777CC .align 2, 0 _08077834: .4byte gPlayerEntity diff --git a/asm/code_08078778.s b/asm/code_08078778.s index 4137d25e..c1242ad4 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -289,8 +289,8 @@ _08078A88: pop {r4, r5, r6, r7, pc} .align 2, 0 - thumb_func_start sub_08078A90 -sub_08078A90: @ 0x08078A90 + thumb_func_start SetPlayerControl +SetPlayerControl: @ 0x08078A90 push {lr} adds r1, r0, #0 ldr r0, _08078AA4 @ =gPlayerState @@ -1966,7 +1966,7 @@ sub_08079708: @ 0x08079708 ands r0, r1 cmp r0, #0 bne _0807973E - bl FreezeTime + bl SetPlayerEventPriority _0807973E: pop {r4, pc} .align 2, 0 @@ -3378,7 +3378,7 @@ sub_0807A1B8: @ 0x0807A1B8 adds r0, r4, #0 movs r1, #0 movs r2, #0 - bl sub_0807A1E8 + bl GetSurfaceCalcType ldr r1, _0807A1E0 @ =gPlayerState strb r0, [r1, #0x12] ldr r2, _0807A1E4 @ =gUnk_0811C120 @@ -3394,8 +3394,8 @@ _0807A1DC: .4byte gPlayerEntity _0807A1E0: .4byte gPlayerState _0807A1E4: .4byte gUnk_0811C120 - thumb_func_start sub_0807A1E8 -sub_0807A1E8: @ 0x0807A1E8 + thumb_func_start GetSurfaceCalcType +GetSurfaceCalcType: @ 0x0807A1E8 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} diff --git a/asm/code_0807B9B8.s b/asm/code_0807B9B8.s index 33572525..5a9cf42e 100644 --- a/asm/code_0807B9B8.s +++ b/asm/code_0807B9B8.s @@ -456,7 +456,7 @@ sub_0807BD14: @ 0x0807BD14 strh r4, [r1] strb r3, [r1, #5] strb r5, [r1, #0x10] - bl sub_08052E8C + bl GetCurrentRoomInfo adds r2, r0, #0 ldr r1, _0807BD6C @ =gArea ldr r3, _0807BD70 @ =0x0000085C @@ -511,7 +511,7 @@ _0807BD98: movs r1, #6 orrs r0, r1 strb r0, [r2, #0x11] - bl sub_0805E5A8 + bl SetInitializationPriority movs r0, #1 b _0807BDB6 .align 2, 0 diff --git a/asm/code_0807CAA0.s b/asm/code_0807CAA0.s index 45cd2503..96368728 100644 --- a/asm/code_0807CAA0.s +++ b/asm/code_0807CAA0.s @@ -65,8 +65,8 @@ _0807CB04: .4byte gSave _0807CB08: .4byte gArea _0807CB0C: .4byte 0x0000047C - thumb_func_start CheckLocalFlagByOffset -CheckLocalFlagByOffset: @ 0x0807CB10 + thumb_func_start CheckLocalFlagByBank +CheckLocalFlagByBank: @ 0x0807CB10 push {lr} adds r2, r0, #0 ldr r0, _0807CB20 @ =gGlobalFlags @@ -114,17 +114,17 @@ _0807CB84: movs r1, #0 b _0807CBCA _0807CB88: - ldr r0, _0807CB9C @ =gUnk_0811E454 + ldr r0, _0807CB9C @ =gLocalFlagBanks lsls r1, r2, #1 adds r1, r1, r0 ldrh r0, [r1] adds r1, r3, #0 - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank _0807CB96: adds r1, r0, #0 b _0807CBCA .align 2, 0 -_0807CB9C: .4byte gUnk_0811E454 +_0807CB9C: .4byte gLocalFlagBanks _0807CBA0: adds r0, r3, #0 bl GetInventoryValue diff --git a/asm/code_0807F0D8.s b/asm/code_0807F0D8.s index 6eaef89b..78ccdd83 100644 --- a/asm/code_0807F0D8.s +++ b/asm/code_0807F0D8.s @@ -429,7 +429,7 @@ sub_0807FF1C: @ 0x0807FF1C bls _0807FF48 movs r0, #0 strb r0, [r2, #2] - bl sub_0805E5B4 + bl ResetSystemPriority _0807FF48: pop {pc} .align 2, 0 @@ -794,7 +794,7 @@ _08080232: bne _08080268 strb r0, [r5, #2] strh r0, [r5] - bl sub_0805E5B4 + bl ResetSystemPriority ldr r1, _08080260 @ =gScreen ldrh r2, [r1] ldr r0, _08080264 @ =0x0000BFFF diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s index e5088b9d..63d65add 100644 --- a/asm/code_080A29BC.s +++ b/asm/code_080A29BC.s @@ -391,7 +391,7 @@ CreateSpeechBubble: @ 0x080A2D2C lsls r1, r1, #0x1c lsrs r1, r1, #0x1c adds r0, r4, #0 - bl sub_0805E3A0 + bl SetDefaultPriority _080A2D6E: adds r0, r4, #0 pop {r4, r5, r6, r7, pc} diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index 78965ce9..43c751e4 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -78,7 +78,7 @@ _080A365E: bl LoadPaletteGroup movs r0, #0 movs r1, #0 - bl sub_0801D79C + bl SetColor ldr r2, _080A36B4 @ =gScreen movs r0, #0xc8 lsls r0, r0, #3 @@ -96,7 +96,7 @@ _080A365E: subs r0, #0x8a strh r0, [r2, #0x20] bl InitSoundPlayingInfo - bl sub_0805E5B4 + bl ResetSystemPriority movs r1, #0x80 lsls r1, r1, #1 movs r0, #5 @@ -511,7 +511,7 @@ _080A39C8: bl LoadPaletteGroup movs r0, #0 movs r1, #0 - bl sub_0801D79C + bl SetColor movs r0, #4 bl LoadGfxGroup movs r0, #0xc0 @@ -520,7 +520,7 @@ _080A39C8: bl MemClear movs r0, #0 movs r1, #0 - bl sub_08052418 + bl SetPopupState ldr r2, _080A3A2C @ =gScreen ldrh r0, [r2] movs r3, #0xc0 @@ -604,7 +604,7 @@ _080A3A9A: strb r4, [r1, #3] movs r0, #0 adds r1, r4, #0 - bl sub_08052418 + bl SetPopupState movs r0, #0x69 bl SoundReq b _080A3B36 diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 5290794f..fe5e7913 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -1364,14 +1364,14 @@ sub_080A4608: @ 0x080A4608 adds r0, r4, r1 ldrh r1, [r0] movs r0, #0 - bl sub_0801D79C + bl SetColor movs r0, #0xae lsls r0, r0, #1 movs r2, #0xd3 lsls r2, r2, #1 adds r1, r4, r2 ldrh r1, [r1] - bl sub_0801D79C + bl SetColor ldr r0, _080A46A4 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 @@ -2923,7 +2923,7 @@ sub_080A50A0: @ 0x080A50A0 adds r1, r0, #0 cmp r1, #0xf bne _080A50B4 - bl sub_08052690 + bl CheckHasMap movs r1, #4 cmp r0, #0 beq _080A50B4 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index b1829231..60c6ca18 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -813,7 +813,7 @@ sub_080A59AC: @ 0x080A59AC movs r0, #0 strb r0, [r1, #3] movs r1, #0 - bl sub_08052418 + bl SetPopupState movs r0, #1 bl sub_080A7114 pop {pc} @@ -887,7 +887,7 @@ _080A5A3C: strb r2, [r1, #3] movs r0, #0 adds r1, r2, #0 - bl sub_08052418 + bl SetPopupState movs r0, #0x69 bl SoundReq _080A5A52: @@ -998,7 +998,7 @@ sub_080A5AF4: @ 0x080A5AF4 .endif movs r0, #2 movs r1, #0 - bl sub_08052418 + bl SetPopupState .ifndef EU movs r0, #0x80 lsls r0, r0, #0x12 @@ -1077,7 +1077,7 @@ _080A5B76: strb r4, [r1, #3] movs r0, #2 adds r1, r4, #0 - bl sub_08052418 + bl SetPopupState movs r0, #0x69 bl SoundReq _080A5B8E: @@ -1796,7 +1796,7 @@ sub_080A5F24: @ 0x080A5F24 movs r0, #0x8c lsls r0, r0, #4 movs r1, #0x7b - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _080A5F40 movs r4, #0 @@ -2873,7 +2873,7 @@ sub_080A6534: @ 0x080A6534 adds r0, #0xa2 ldrh r1, [r0] movs r0, #0 - bl sub_0801D79C + bl SetColor ldr r1, _080A659C @ =gUnk_08128F4C ldr r0, _080A65A0 @ =gUnk_02032EC0 ldrb r0, [r0, #3] @@ -3851,10 +3851,10 @@ sub_080A6B04: @ 0x080A6B04 ldr r4, _080A6C00 @ =0x0000475F movs r0, #0 adds r1, r4, #0 - bl sub_0801D79C + bl SetColor movs r0, #0x5f adds r1, r4, #0 - bl sub_0801D79C + bl SetColor ldr r0, _080A6C04 @ =0x00005001 ldr r1, _080A6C08 @ =gBG3Buffer movs r2, #0x80 @@ -5033,10 +5033,10 @@ _080A73B4: movs r2, #0x7c bl MemCopy ldrb r0, [r4, #4] - bl sub_08052D58 + bl GetFlagBankOffset ldr r4, _080A749C @ =gArea strh r0, [r4, #4] - bl sub_08052E8C + bl GetCurrentRoomInfo ldr r1, _080A74A0 @ =0x0000085C adds r4, r4, r1 str r0, [r4] @@ -5104,7 +5104,7 @@ sub_080A74C8: @ 0x080A74C8 strb r2, [r0, #4] strb r3, [r1] strb r3, [r1, #2] - bl sub_0805E5B4 + bl ResetSystemPriority _080A74E6: pop {pc} .align 2, 0 @@ -5115,7 +5115,7 @@ _080A74F0: .4byte gUnk_02032EC0 thumb_func_start sub_080A74F4 sub_080A74F4: @ 0x080A74F4 push {lr} - bl sub_0805E5A8 + bl SetInitializationPriority ldr r1, _080A7524 @ =gMain movs r0, #0 strb r0, [r1, #0xb] diff --git a/asm/code_080A7C00.s b/asm/code_080A7C00.s index 5a45ca57..988666cd 100644 --- a/asm/code_080A7C00.s +++ b/asm/code_080A7C00.s @@ -133,7 +133,7 @@ _080A7CDC: bl sub_0807B7D8 movs r0, #0 movs r1, #0x78 - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _080A7CF8 @ =0x0000011B bl SoundReq _080A7CF4: diff --git a/asm/code_080ADD30.s b/asm/code_080ADD30.s index 2190d709..f4c1ec86 100644 --- a/asm/code_080ADD30.s +++ b/asm/code_080ADD30.s @@ -3050,7 +3050,7 @@ sub_080AF244: @ 0x080AF244 sub_080AF250: @ 0x080AF250 push {r4, lr} adds r4, r0, #0 - bl sub_08052E8C + bl GetCurrentRoomInfo adds r1, r0, #0 ldr r0, _080AF26C @ =gArea ldr r2, _080AF270 @ =0x0000085C @@ -3084,7 +3084,7 @@ sub_080AF284: @ 0x080AF284 bl CheckPlayerInRegion cmp r0, #0 beq _080AF2BC - bl sub_08052E8C + bl GetCurrentRoomInfo ldr r1, _080AF2B0 @ =gArea ldr r2, _080AF2B4 @ =0x0000085C adds r1, r1, r2 @@ -3101,7 +3101,7 @@ _080AF2BC: bl GetInventoryValue cmp r0, #0 beq _080AF2D6 - bl sub_08052E8C + bl GetCurrentRoomInfo ldr r1, _080AF2D8 @ =gArea ldr r2, _080AF2DC @ =0x0000085C adds r1, r1, r2 @@ -3123,7 +3123,7 @@ sub_080AF2E4: @ 0x080AF2E4 bl GetInventoryValue cmp r0, #0 beq _080AF300 - bl sub_08052E8C + bl GetCurrentRoomInfo ldr r1, _080AF304 @ =gArea ldr r2, _080AF308 @ =0x0000085C adds r1, r1, r2 diff --git a/asm/crenalBeanSprout.s b/asm/crenalBeanSprout.s index f89d5250..10d49ea1 100644 --- a/asm/crenalBeanSprout.s +++ b/asm/crenalBeanSprout.s @@ -194,7 +194,7 @@ _08096494: strb r0, [r5, #0x19] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority b _0809650A _080964A6: ldrb r0, [r5, #0xb] diff --git a/asm/deathFx.s b/asm/deathFx.s index 018ef831..ef4a1b39 100644 --- a/asm/deathFx.s +++ b/asm/deathFx.s @@ -129,7 +129,7 @@ _08081702: _0808170C: adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority pop {r4, r5, pc} .align 2, 0 _08081718: .4byte gUnk_0811EC08 diff --git a/asm/enemy64.s b/asm/enemy64.s index d70851ed..8d706fde 100644 --- a/asm/enemy64.s +++ b/asm/enemy64.s @@ -887,7 +887,7 @@ sub_080496EC: @ 0x080496EC cmp r0, #0 bne _08049720 movs r0, #2 - bl sub_08078A90 + bl SetPlayerControl movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x1e @@ -916,7 +916,7 @@ sub_0804972C: @ 0x0804972C cmp r0, #0 bne _08049750 movs r0, #2 - bl sub_08078A90 + bl SetPlayerControl movs r0, #2 strb r0, [r4, #0xd] movs r0, #1 @@ -1098,7 +1098,7 @@ sub_08049888: @ 0x08049888 movs r0, #0x7c bl SetFlag movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl _080498AE: pop {pc} .align 2, 0 diff --git a/asm/fairy.s b/asm/fairy.s index 236beb3f..9ae61b7f 100644 --- a/asm/fairy.s +++ b/asm/fairy.s @@ -185,7 +185,7 @@ sub_0808D7B4: @ 0x0808D7B4 strh r0, [r1] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority movs r0, #0x9b lsls r0, r0, #1 bl EnqueueSFX @@ -335,7 +335,7 @@ _0808D8EE: _0808D910: adds r0, r4, #0 bl sub_080AEFB4 - bl sub_0805E40C + bl AnyPrioritySet cmp r0, #0 bne _0808D954 ldrb r0, [r4, #0xb] diff --git a/asm/figurineDevice.s b/asm/figurineDevice.s index 0b58d4db..fa20a78c 100644 --- a/asm/figurineDevice.s +++ b/asm/figurineDevice.s @@ -108,7 +108,7 @@ _08087C64: strb r5, [r0] adds r0, r4, #0 movs r1, #7 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 movs r1, #1 bl InitializeAnimation @@ -136,7 +136,7 @@ _08087C7C: bl sub_0808804C adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority _08087CA6: pop {r4, r5, pc} @@ -951,7 +951,7 @@ _08088072: movs r0, #0x80 lsls r0, r0, #4 movs r1, #0x77 - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _08088084 movs r4, #6 @@ -960,7 +960,7 @@ _08088084: movs r0, #0xc0 lsls r0, r0, #2 movs r1, #0x32 - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _08088096 movs r4, #5 @@ -995,7 +995,7 @@ _080880B2: .endif .endif .endif - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _080880C4 movs r4, #2 @@ -1129,7 +1129,7 @@ _08087FB4: _08087FBC: ldr r0, [r1] ldrh r1, [r1, #4] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank b _08088064EU _08087FC6: ldrh r0, [r1, #4] @@ -1246,7 +1246,7 @@ _08087B48: _08087B50: ldr r0, [r1] ldrh r1, [r1, #4] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank b _08087BF8 _08087B5A: ldrh r0, [r1, #4] @@ -1361,7 +1361,7 @@ _0808818C: _08088194: ldr r0, [r1] ldrh r1, [r1, #4] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank b _08088262 _0808819E: ldrh r0, [r1, #4] diff --git a/asm/fileScreen.s b/asm/fileScreen.s index 7a5c96f5..50f5a585 100755 --- a/asm/fileScreen.s +++ b/asm/fileScreen.s @@ -171,7 +171,7 @@ _08051AA8: .4byte gMain thumb_func_start InitializeNewRoom InitializeNewRoom: @ 0x08051AAC push {lr} - bl sub_0805E5A8 + bl SetInitializationPriority ldr r1, _08051AE4 @ =gScreen movs r2, #0 movs r0, #0xba @@ -248,14 +248,14 @@ _08051796: cmp r4, #0 bne _080517DC bl sub_08052C5C - bl sub_0805E5B4 + bl ResetSystemPriority bl sub_08051E04 bl sub_080300C4 ldr r1, _080517F0 @ =gMain movs r0, #2 strb r0, [r1, #4] movs r0, #0 - bl sub_08078A90 + bl SetPlayerControl ldr r0, _080517F4 @ =gUnk_02034490 strb r4, [r0] bl sub_08053178 @@ -266,7 +266,7 @@ _08051796: bne _080517DC movs r0, #0 movs r1, #1 - bl sub_0805E4E0 + bl RequestPriorityDuration _080517DC: pop {r4, pc} .align 2, 0 @@ -330,14 +330,14 @@ _08051B5A: cmp r4, #0 bne _08051BAE bl sub_08052C5C - bl sub_0805E5B4 + bl ResetSystemPriority bl sub_08051E04 bl sub_080300C4 ldr r1, _08051BC4 @ =gMain movs r0, #2 strb r0, [r1, #4] movs r0, #0 - bl sub_08078A90 + bl SetPlayerControl ldr r0, _08051BC8 @ =gUnk_02034490 strb r4, [r0] .ifdef DEMO_JP @@ -394,7 +394,7 @@ _08051B96: bne _08051BAE movs r0, #0 movs r1, #1 - bl sub_0805E4E0 + bl RequestPriorityDuration _08051BAE: pop {r4, r5, pc} .align 2, 0 @@ -433,7 +433,7 @@ sub_08051BD0: @ 0x08051BD0 ands r0, r1 cmp r0, #0 bne _08051C02 - ldr r0, _08051C64 @ =gUnk_03003DC0 + ldr r0, _08051C64 @ =gPriorityHandler ldrh r0, [r0, #8] cmp r0, #0 beq _08051C06 @@ -453,7 +453,7 @@ _08051C06: bl sub_0801C208 bl sub_08078CB4 bl sub_080AD9B0 - bl sub_0805291C + bl HandleRoomExit bl sub_08052C5C bl sub_080528B4 bl sub_080185F8 @@ -468,7 +468,7 @@ _08051C06: .align 2, 0 _08051C5C: .4byte gMain _08051C60: .4byte gMessage -_08051C64: .4byte gUnk_03003DC0 +_08051C64: .4byte gPriorityHandler _08051C68: .4byte gRoomControls _08051C6C: ldr r0, _08051C80 @ =gPlayerState @@ -476,7 +476,7 @@ _08051C6C: strb r1, [r0, #0xc] ldr r0, _08051C84 @ =gMain strb r2, [r0, #4] - bl sub_0805E59C + bl SetRoomReloadPriority bl sub_08051D98 b _08051C9C .align 2, 0 @@ -489,7 +489,7 @@ _08051C88: ldr r1, _08051CA4 @ =gMain movs r0, #1 strb r0, [r1, #4] - bl sub_0805E59C + bl SetRoomReloadPriority bl sub_08051DCC _08051C9C: pop {pc} @@ -511,14 +511,14 @@ sub_08051CA8: @ 0x08051CA8 bl sub_0801C208 bl sub_08078CB4 bl sub_080AD9B0 - bl sub_0805291C + bl HandleRoomExit bl sub_080528B4 bl sub_080AD918 ldr r0, _08051CEC @ =gFadeControl ldrb r0, [r0] cmp r0, #0 bne _08051CEA - bl sub_0805E5B4 + bl ResetSystemPriority _08051CEA: pop {pc} .align 2, 0 @@ -592,7 +592,7 @@ InitializeEntities: @ 0x08051D40 bl sub_0805283C movs r0, #0 movs r1, #0 - bl sub_0801D79C + bl SetColor bl LoadRoom bl CreateZeldaFollower bl sub_0804AFF4 @@ -622,7 +622,7 @@ sub_08051D98: @ 0x08051D98 bl LoadRoom bl sub_0804AFF4 movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl pop {pc} .align 2, 0 _08051DC8: .4byte gRoomVars @@ -636,7 +636,7 @@ sub_08051DCC: @ 0x08051DCC strb r0, [r1, #4] ldrb r0, [r4, #0xd] strb r0, [r1, #5] - bl sub_080528F0 + bl RoomExitCallback movs r0, #3 strb r0, [r4, #9] bl sub_08052CFC @@ -653,7 +653,7 @@ _08051E00: .4byte gScreenTransition thumb_func_start sub_08051E04 sub_08051E04: @ 0x08051E04 push {lr} - bl sub_08052620 + bl CheckIsOverworld cmp r0, #0 beq _08051E60 ldr r1, _08051E2C @ =gPlayerEntity @@ -735,7 +735,7 @@ sub_08051E84: @ 0x08051E84 strb r0, [r5, #5] bl sub_08053320 ldrb r0, [r5, #4] - bl sub_08052D58 + bl GetFlagBankOffset ldr r1, _08051EFC @ =gArea movs r6, #0 strh r0, [r1, #4] @@ -927,7 +927,7 @@ sub_08052010: @ 0x08052010 bl LoadPaletteGroup movs r0, #0 movs r1, #0 - bl sub_0801D79C + bl SetColor movs r0, #4 bl LoadGfxGroup movs r0, #0xc0 diff --git a/asm/fourElements.s b/asm/fourElements.s index 6ed7f1b2..781da69f 100644 --- a/asm/fourElements.s +++ b/asm/fourElements.s @@ -216,14 +216,14 @@ sub_080A034C: @ 0x080A034C bne _080A038C ldr r0, _080A0374 @ =gPlayerEntity movs r1, #0 - bl sub_0805E3A0 + bl SetDefaultPriority b _080A038C .align 2, 0 _080A0374: .4byte gPlayerEntity _080A0378: movs r0, #0 movs r1, #0x3c - bl sub_0805E4E0 + bl RequestPriorityDuration bl sub_0808C67C cmp r0, #0 beq _080A038C @@ -239,7 +239,7 @@ sub_080A0390: @ 0x080A0390 adds r4, r0, #0 movs r0, #0 movs r1, #0x3c - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _080A03B4 @ =gFadeControl ldrb r0, [r0] cmp r0, #0 @@ -262,7 +262,7 @@ sub_080A03B8: @ 0x080A03B8 adds r4, r0, #0 movs r0, #0 movs r1, #0xa - bl sub_0805E4E0 + bl RequestPriorityDuration adds r1, r4, #0 adds r1, #0x68 ldrh r0, [r1] @@ -286,7 +286,7 @@ sub_080A03E8: @ 0x080A03E8 push {lr} movs r0, #0 movs r1, #0xa - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _080A041C @ =gMessage ldrb r1, [r0] movs r0, #0x7f @@ -294,7 +294,7 @@ sub_080A03E8: @ 0x080A03E8 cmp r0, #0 bne _080A041A movs r0, #0x5a - bl sub_0805E510 + bl SetPriorityTimer ldr r0, _080A0420 @ =gPlayerState adds r0, #0x8b movs r1, #1 diff --git a/asm/getEmptyEntity.s b/asm/getEmptyEntity.s index 3ab8e820..faa6d4d6 100644 --- a/asm/getEmptyEntity.s +++ b/asm/getEmptyEntity.s @@ -35,7 +35,7 @@ _0805E6A8: ands r0, r1 cmp r0, #0 beq _0805E6D4 - ldr r0, _0805E6D0 @ =gUnk_03003DD0 + ldr r0, _0805E6D0 @ =gUpdateContext ldr r0, [r0, #8] cmp r4, r0 beq _0805E6D4 @@ -45,7 +45,7 @@ _0805E6A8: b _0805E730 .align 2, 0 _0805E6CC: .4byte gPlayerEntity -_0805E6D0: .4byte gUnk_03003DD0 +_0805E6D0: .4byte gUpdateContext _0805E6D4: adds r4, #0x88 ldr r0, _0805E738 @ =gUnk_03003BE0 @@ -65,7 +65,7 @@ _0805E6EA: cmp r4, r2 beq _0805E718 movs r7, #0x1c - ldr r6, _0805E740 @ =gUnk_03003DD0 + ldr r6, _0805E740 @ =gUpdateContext _0805E6F8: ldrb r0, [r4, #8] cmp r0, #9 @@ -103,5 +103,5 @@ _0805E730: .align 2, 0 _0805E738: .4byte gUnk_03003BE0 _0805E73C: .4byte gEntityLists -_0805E740: .4byte gUnk_03003DD0 +_0805E740: .4byte gUpdateContext .syntax divided diff --git a/asm/giantBookLadder.s b/asm/giantBookLadder.s index bde8c303..a17733ef 100644 --- a/asm/giantBookLadder.s +++ b/asm/giantBookLadder.s @@ -82,7 +82,7 @@ _0808E4C8: ldr r1, _0808E548 @ =sub_0808E55C adds r0, r4, #0 movs r2, #0 - bl sub_08052D74 + bl RegisterTransitionManager b _0808E55A .align 2, 0 _0808E540: .4byte gUnk_08121C40 diff --git a/asm/gyorgFemale.s b/asm/gyorgFemale.s index 42d10c34..3d90df67 100644 --- a/asm/gyorgFemale.s +++ b/asm/gyorgFemale.s @@ -129,7 +129,7 @@ sub_0804614C: @ 0x0804614C ldr r1, _08046258 @ =sub_08046498 adds r0, r6, #0 movs r2, #0 - bl sub_08052D74 + bl RegisterTransitionManager _08046244: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/intr.s b/asm/intr.s index 1be83dc3..64f46e95 100644 --- a/asm/intr.s +++ b/asm/intr.s @@ -657,7 +657,7 @@ _080B21A4: .4byte 0x01010101 _080B21A8: .4byte gUnk_02000006 _080B21AC: .4byte gUnk_08000F54 - ldr r11, _080B2270 @ =gUnk_03003DD0 + ldr r11, _080B2270 @ =gUpdateContext ldr r1, [r11] ldm r1, {r7, r8, r9, r10} ldr sp, [r11, #0xc] @@ -665,7 +665,7 @@ _080B21AC: .4byte gUnk_08000F54 ldr r0, [r11, #8] add pc, pc, #0x60 @ =_080B2230 -@ gUnk_03003DD0 { +@ gUpdateContext { @ void* chosen_table; @ void* linked_list_top; @ void* curr_entity; @@ -679,7 +679,7 @@ UpdateEntities_arm: @ 0x080B21B0 ldr r1, _080B2274 @ =gUnk_080026A4 add r1, r1, r0, lsl #4 push {r4 - r11, lr} - ldr r11, _080B2278 @ =gUnk_03003DD0 + ldr r11, _080B2278 @ =gUpdateContext str r1, [r11, #0x0] str sp, [r11, #0xc] ldm r1, {r7, r8, r9, r10} @@ -724,9 +724,9 @@ _080B2264: .4byte NPCUpdate _080B2268: .4byte ItemUpdate _080B226C: .4byte ManagerUpdate -_080B2270: .4byte gUnk_03003DD0 +_080B2270: .4byte gUpdateContext _080B2274: .4byte gUnk_080026A4 -_080B2278: .4byte gUnk_03003DD0 +_080B2278: .4byte gUpdateContext arm_func_start sub_080B227C sub_080B227C: @ 0x080B227C diff --git a/asm/itemForSale.s b/asm/itemForSale.s index 512d589a..8b5a7c02 100644 --- a/asm/itemForSale.s +++ b/asm/itemForSale.s @@ -64,7 +64,7 @@ sub_08081854: @ 0x08081854 .ifdef EU adds r0, r4, #0x0 movs r1, #0x6 - bl sub_0805E3A0 + bl SetDefaultPriority .endif str r4, [r4, #0x54] adds r0, r4, #0 @@ -358,7 +358,7 @@ sub_08081AB0: @ 0x08081AB0 str r0, [r1, #0x68] strb r0, [r1, #6] strb r0, [r1, #7] - bl sub_08078A90 + bl SetPlayerControl pop {pc} .align 2, 0 _08081AC4: .4byte gRoomVars diff --git a/asm/macroBook.s b/asm/macroBook.s index 654f182a..bb20fefb 100644 --- a/asm/macroBook.s +++ b/asm/macroBook.s @@ -159,7 +159,7 @@ _0809A87C: bl InitAnimationForceUpdate adds r0, r4, #0 movs r1, #0x78 - bl sub_0805E4E0 + bl RequestPriorityDuration _0809A8A0: pop {r4, pc} .align 2, 0 @@ -206,7 +206,7 @@ _0809A8E2: ands r0, r1 strb r0, [r2] movs r0, #0xff - bl sub_08078A90 + bl SetPlayerControl movs r0, #0x2a bl SetGlobalFlag _0809A8FC: diff --git a/asm/macros/scripts.inc b/asm/macros/scripts.inc index 66a3f1dc..6b78fc2c 100644 --- a/asm/macros/scripts.inc +++ b/asm/macros/scripts.inc @@ -139,7 +139,7 @@ .2byte \s .endm -.macro CheckLocalFlagByOffset a:req, b:req +.macro CheckLocalFlagByBank a:req, b:req .2byte 0x0c13 .2byte \a .2byte \b @@ -262,7 +262,7 @@ .2byte \s .endm -.macro SetLocalFlagByOffset a:req, b:req +.macro SetLocalFlagByBank a:req, b:req .2byte 0x0c2b .2byte \a .2byte \b diff --git a/asm/non_matching/eu/Manager7_Main.inc b/asm/non_matching/eu/Manager7_Main.inc index 83617e4d..4f31a4cf 100644 --- a/asm/non_matching/eu/Manager7_Main.inc +++ b/asm/non_matching/eu/Manager7_Main.inc @@ -15,7 +15,7 @@ ldr r1, _0805791C @ =sub_080582F8 adds r0, r4, #0 movs r2, #0 - bl sub_08052D74 + bl RegisterTransitionManager _080578C4: ldr r0, _08057920 @ =gRoomControls ldrh r5, [r0] diff --git a/asm/non_matching/eu/sub_08057A18.inc b/asm/non_matching/eu/sub_08057A18.inc index 3ea092df..3787ba7e 100644 --- a/asm/non_matching/eu/sub_08057A18.inc +++ b/asm/non_matching/eu/sub_08057A18.inc @@ -4,7 +4,7 @@ push {r6} mov r8, r0 adds r4, r1, #0 - bl sub_0805E5A8 + bl SetInitializationPriority ldr r5, _080575E8 @ =gUnk_03004030 ldrb r0, [r5, #9] strb r0, [r5, #0xa] diff --git a/asm/non_matching/game/sub_08052418.inc b/asm/non_matching/game/sub_08052418.inc deleted file mode 100644 index bd30db21..00000000 --- a/asm/non_matching/game/sub_08052418.inc +++ /dev/null @@ -1,66 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - sub sp, #0x18 - adds r6, r0, #0 - adds r4, r1, #0 - ldr r0, _08052494 @ =gBG1Buffer - movs r1, #0x80 - lsls r1, r1, #4 - bl MemClear - ldr r0, _08052498 @ =gUnk_020227E8 - movs r1, #0xf - str r1, [r0] - str r1, [r0, #8] - str r1, [r0, #0x10] - str r1, [r0, #0x18] - lsls r4, r4, #3 - adds r0, #1 - adds r4, r4, r0 - movs r5, #1 - strb r5, [r4] - ldr r4, _0805249C @ =gUnk_080FCA8C - adds r0, r4, #0 - mov r1, sp - movs r2, #0x18 - bl MemCopy - lsls r2, r6, #1 - adds r2, r2, r6 - lsls r2, r2, #2 - ldr r0, _080524A0 @ =gUnk_080FCAA4 - adds r2, r2, r0 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r1, [r0, #7] - adds r1, r2, r1 - ldrb r0, [r2, #8] - lsls r0, r0, #5 - ldrb r1, [r1] - adds r0, r0, r1 - lsls r0, r0, #1 - ldr r1, [r4] - adds r1, r1, r0 - str r1, [sp] - mov r4, sp - ldrb r0, [r2, #9] - adds r1, r5, #0 - ands r1, r0 - ldrb r3, [r4, #0x13] - movs r0, #2 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, #0x13] - ldrh r0, [r2, #0xa] - mov r1, sp - bl sub_0805F46C - ldr r0, _080524A4 @ =gScreen - strh r5, [r0, #0x1a] - add sp, #0x18 - pop {r4, r5, r6, pc} - .align 2, 0 -_08052494: .4byte gBG1Buffer -_08052498: .4byte gUnk_020227E8 -_0805249C: .4byte gUnk_080FCA8C -_080524A0: .4byte gUnk_080FCAA4 -_080524A4: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/manager1/sub_08057450.inc b/asm/non_matching/manager1/sub_08057450.inc index c1608a37..62143543 100644 --- a/asm/non_matching/manager1/sub_08057450.inc +++ b/asm/non_matching/manager1/sub_08057450.inc @@ -76,11 +76,11 @@ _080574DC: adds r0, r5, #0 adds r0, #0x87 ldrh r1, [r4] - bl sub_0801D79C + bl SetColor adds r0, r5, #0 adds r0, #0x8c ldrh r1, [r4, #0xa] - bl sub_0801D79C + bl SetColor adds r4, #2 adds r5, #1 cmp r5, #3 diff --git a/asm/non_matching/manager16/Manager16_Main.inc b/asm/non_matching/manager16/Manager16_Main.inc index 8c424e8d..0e8bf5a5 100644 --- a/asm/non_matching/manager16/Manager16_Main.inc +++ b/asm/non_matching/manager16/Manager16_Main.inc @@ -25,7 +25,7 @@ _0805AB68: strb r0, [r1] adds r0, r6, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority ldr r2, _0805ABF4 @ =gUnk_02031EC0 ldrb r0, [r6, #0xb] mov r3, r8 diff --git a/asm/non_matching/manager22/Manager22_Main.inc b/asm/non_matching/manager22/Manager22_Main.inc index 42e1a86e..2c07a5d9 100644 --- a/asm/non_matching/manager22/Manager22_Main.inc +++ b/asm/non_matching/manager22/Manager22_Main.inc @@ -27,7 +27,7 @@ _0805B90A: str r2, [r5, #0x20] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority bl sub_0801E120 ldrb r0, [r5, #0xe] bl sub_0801E154 diff --git a/asm/non_matching/mountainMinish/sub_08067EF0.inc b/asm/non_matching/mountainMinish/sub_08067EF0.inc index a1953289..6dc123ef 100644 --- a/asm/non_matching/mountainMinish/sub_08067EF0.inc +++ b/asm/non_matching/mountainMinish/sub_08067EF0.inc @@ -40,7 +40,7 @@ _08067F1E: strb r4, [r0] adds r0, r5, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r5, #0 bl sub_0807DD50 ldr r1, _08067F54 @ =gUnk_08111304 diff --git a/asm/non_matching/ocarina/OcarinaUpdate.inc b/asm/non_matching/ocarina/OcarinaUpdate.inc index 6e203081..ffd951df 100644 --- a/asm/non_matching/ocarina/OcarinaUpdate.inc +++ b/asm/non_matching/ocarina/OcarinaUpdate.inc @@ -24,7 +24,7 @@ ldr r1, _08076C7C @ =gUnk_02034490 strb r4, [r1] bl CreateBird - bl UnfreezeTime + bl ResetPlayerEventPriority adds r0, r5, #0 adds r1, r6, #0 bl sub_08077E78 diff --git a/asm/non_matching/sub_unk3_HyruleTown_0.inc b/asm/non_matching/sub_unk3_HyruleTown_0.inc index 508dae20..b2cdc19e 100644 --- a/asm/non_matching/sub_unk3_HyruleTown_0.inc +++ b/asm/non_matching/sub_unk3_HyruleTown_0.inc @@ -1,6 +1,6 @@ .syntax unified push {r4, r5, r6, lr} - bl sub_080530C8 + bl UpdateGlobalProgress movs r0, #0xb bl CheckKinstoneFused cmp r0, #0 diff --git a/asm/object1E.s b/asm/object1E.s index 5191f789..0bb09357 100644 --- a/asm/object1E.s +++ b/asm/object1E.s @@ -125,7 +125,7 @@ _080875CE: _080875DC: adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r1, [r4, #0xb] lsls r1, r1, #2 ldrb r0, [r4, #0x14] diff --git a/asm/object28.s b/asm/object28.s index f011a04e..8845a4f6 100644 --- a/asm/object28.s +++ b/asm/object28.s @@ -59,7 +59,7 @@ _080897BA: strh r0, [r1] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority _080897D0: ldrb r1, [r4, #0x10] movs r0, #0x10 diff --git a/asm/object30.s b/asm/object30.s index c89903a3..084b0cfc 100644 --- a/asm/object30.s +++ b/asm/object30.s @@ -198,7 +198,7 @@ sub_0808A968: @ 0x0808A968 str r0, [r4, #0x48] adds r0, r4, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority movs r0, #0xa0 lsls r0, r0, #6 str r0, [r4, #0x70] diff --git a/asm/object3E.s b/asm/object3E.s index ee4b5d42..031a6fdf 100644 --- a/asm/object3E.s +++ b/asm/object3E.s @@ -295,7 +295,7 @@ sub_0808D2CC: @ 0x0808D2CC strb r0, [r1, #0xa] adds r0, r1, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority _0808D2F2: add sp, #4 pop {pc} diff --git a/asm/object6A.s b/asm/object6A.s index 4004db87..6ce1e494 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -283,7 +283,7 @@ _08094C44: strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority ldr r1, _08094C84 @ =gUnk_08114F30 ldrb r0, [r5, #0x19] lsrs r0, r0, #6 @@ -333,7 +333,7 @@ _08094CA0: strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r5, #0xb] cmp r0, #0x43 bgt _08094CCC @@ -478,7 +478,7 @@ _08094DAC: strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate @@ -603,7 +603,7 @@ _08094EA6: str r1, [r4, #0x20] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 movs r1, #0 bl InitializeAnimation @@ -863,7 +863,7 @@ _08094FF0: movs r1, #0x36 strb r1, [r0] movs r0, #2 - bl sub_08078A90 + bl SetPlayerControl b _08095086 .align 2, 0 _08095020: .4byte gPlayerState @@ -913,7 +913,7 @@ _08095070: movs r0, #5 strb r0, [r4, #0xc] movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl _08095086: pop {r4, pc} .endif @@ -1005,7 +1005,7 @@ sub_08095120: @ 0x08095120 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAD8 @@ -1056,7 +1056,7 @@ sub_08095188: @ 0x08095188 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAD8 @@ -1182,7 +1182,7 @@ sub_08095288: @ 0x08095288 strb r1, [r4, #0xd] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 movs r1, #0 bl InitAnimationForceUpdate @@ -1326,7 +1326,7 @@ sub_080953A4: @ 0x080953A4 strh r0, [r4, #0x36] adds r0, r4, #0 movs r1, #2 - bl sub_0805E3A0 + bl SetDefaultPriority ldr r1, _08095418 @ =gUnk_08114F30 ldrb r2, [r4, #0x19] lsrs r0, r2, #6 @@ -2025,7 +2025,7 @@ sub_08095918: @ 0x08095918 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 @@ -2116,7 +2116,7 @@ sub_080959CC: @ 0x080959CC strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 bl sub_0807DD64 _080959F2: @@ -2533,7 +2533,7 @@ sub_08095CE0: @ 0x08095CE0 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r4, #0 bl sub_0807DD64 _08095D06: @@ -2956,14 +2956,14 @@ sub_08096028: @ 0x08096028 lsls r5, r5, #2 adds r0, r5, #0 movs r1, #0x7b - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 bne _0809603E movs r4, #4 _0809603E: adds r0, r5, #0 movs r1, #0x7a - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 bne _0809604C movs r4, #3 diff --git a/asm/object74.s b/asm/object74.s index cc2ea1f6..8f81ac3b 100644 --- a/asm/object74.s +++ b/asm/object74.s @@ -75,13 +75,13 @@ sub_08097BDC: @ 0x08097BDC cmp r0, #0 beq _08097C10 movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl ldr r0, _08097C14 @ =gUnk_02034490 movs r1, #1 strb r1, [r0] adds r0, r4, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration adds r0, r4, #0 bl sub_08097CB0 cmp r0, #0 @@ -108,7 +108,7 @@ sub_08097C20: @ 0x08097C20 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x1e - bl sub_0805E510 + bl SetPriorityTimer adds r0, r4, #0 bl sub_0800445C movs r1, #0x2e @@ -146,7 +146,7 @@ sub_08097C20: @ 0x08097C20 cmp r0, #0x10 bne _08097CA6 movs r0, #0 - bl sub_08078A90 + bl SetPlayerControl ldr r1, _08097CAC @ =gUnk_02034490 movs r0, #0 strb r0, [r1] diff --git a/asm/object79.s b/asm/object79.s index c25f887a..579a16d0 100644 --- a/asm/object79.s +++ b/asm/object79.s @@ -62,7 +62,7 @@ sub_08097FB4: @ 0x08097FB4 str r0, [r4, #0x74] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r4, #0xa] cmp r0, #0 bne _08098018 diff --git a/asm/object8B.s b/asm/object8B.s index a02afe6b..0a6e701a 100644 --- a/asm/object8B.s +++ b/asm/object8B.s @@ -165,7 +165,7 @@ sub_0809B050: @ 0x0809B050 adds r0, #0x80 strh r1, [r0] movs r0, #0 - bl sub_08078A90 + bl SetPlayerControl adds r0, r4, #0 bl sub_0809B0B0 movs r0, #0x86 diff --git a/asm/object8E.s b/asm/object8E.s index ff4bb033..94969da8 100644 --- a/asm/object8E.s +++ b/asm/object8E.s @@ -25,7 +25,7 @@ sub_0809B858: @ 0x0809B858 push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration ldrb r3, [r4, #0xc] cmp r3, #1 beq _0809B8CC @@ -206,7 +206,7 @@ sub_0809B9BC: @ 0x0809B9BC push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration ldrb r0, [r4, #0xc] cmp r0, #1 beq _0809BA34 @@ -344,7 +344,7 @@ sub_0809BAD0: @ 0x0809BAD0 push {r4, r5, lr} adds r4, r0, #0 movs r1, #0xa - bl sub_0805E4E0 + bl RequestPriorityDuration ldrb r0, [r4, #0xc] cmp r0, #4 bls _0809BAE2 @@ -545,7 +545,7 @@ sub_0809BC70: @ 0x0809BC70 push {r4, r5, r6, lr} adds r4, r0, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration ldrb r5, [r4, #0xc] cmp r5, #1 beq _0809BCDC @@ -701,7 +701,7 @@ sub_0809BDB0: @ 0x0809BDB0 push {r4, lr} adds r4, r0, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration ldrb r0, [r4, #0xc] cmp r0, #1 beq _0809BE00 diff --git a/asm/object9.s b/asm/object9.s index 4207e9ec..83e07658 100644 --- a/asm/object9.s +++ b/asm/object9.s @@ -125,7 +125,7 @@ _08083942: strb r0, [r4, #0x10] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority pop {r4, pc} .align 2, 0 .ifdef EU diff --git a/asm/object91.s b/asm/object91.s index 6ae9e0b9..9a3ffce8 100644 --- a/asm/object91.s +++ b/asm/object91.s @@ -58,7 +58,7 @@ _0809C410: @ jump table _0809C430: adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r1, r4, #0 adds r1, #0x7e movs r0, #0 @@ -451,7 +451,7 @@ _0809C738: beq _0809C74A adds r0, r5, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration _0809C74A: ldr r1, _0809C7A8 @ =gUnk_08123DF8 ldrb r0, [r5, #0xd] diff --git a/asm/object98.s b/asm/object98.s index 18f11555..5732bd0b 100644 --- a/asm/object98.s +++ b/asm/object98.s @@ -69,7 +69,7 @@ _0809E3A6: strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #0 - bl sub_0805E3A0 + bl SetDefaultPriority ldrb r0, [r4, #0xa] cmp r0, #0 beq _0809E3D8 diff --git a/asm/objectA8.s b/asm/objectA8.s index 47032256..52c6a36d 100644 --- a/asm/objectA8.s +++ b/asm/objectA8.s @@ -62,7 +62,7 @@ _0809FAE6: strh r0, [r1] adds r0, r3, #0 movs r1, #3 - bl sub_0805E3A0 + bl SetDefaultPriority movs r0, #0x9b lsls r0, r0, #1 bl EnqueueSFX @@ -277,7 +277,7 @@ _0809FC8A: _0809FCAC: adds r0, r4, #0 bl sub_080AEFB4 - bl sub_0805E40C + bl AnyPrioritySet cmp r0, #0 bne _0809FCF8 ldrb r0, [r4, #0xa] diff --git a/asm/objectAB.s b/asm/objectAB.s index a954dd21..bc40b3a5 100644 --- a/asm/objectAB.s +++ b/asm/objectAB.s @@ -84,7 +84,7 @@ sub_080A0158: @ 0x080A0158 bl sub_080A0190 adds r0, r4, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r1, _080A018C @ =gPlayerEntity adds r0, r4, #0 movs r2, #0x10 diff --git a/asm/objectB.s b/asm/objectB.s index cd3200fc..8d19df05 100644 --- a/asm/objectB.s +++ b/asm/objectB.s @@ -57,7 +57,7 @@ sub_08083BE0: @ 0x08083BE0 push {r4, lr} adds r4, r0, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority movs r0, #1 strb r0, [r4, #0xc] pop {r4, pc} diff --git a/asm/objectBA.s b/asm/objectBA.s index 66229321..aaa2d687 100644 --- a/asm/objectBA.s +++ b/asm/objectBA.s @@ -774,7 +774,7 @@ _080A1B80: ldr r0, _080A1C00 @ =gRoomControls str r4, [r0, #0x30] movs r0, #2 - bl sub_08078A90 + bl SetPlayerControl _080A1BD0: ldr r2, _080A1BF8 @ =gPlayerState ldr r1, _080A1C00 @ =gRoomControls diff --git a/asm/objectBlockingStairs.s b/asm/objectBlockingStairs.s index 99edc949..590f7e5c 100644 --- a/asm/objectBlockingStairs.s +++ b/asm/objectBlockingStairs.s @@ -182,7 +182,7 @@ _08092FF2: strb r0, [r6, #0xe] adds r0, r6, #0 movs r1, #0x50 - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _0809303C @ =0x0000010F bl EnqueueSFX adds r0, r6, #0 @@ -554,7 +554,7 @@ sub_080932D8: @ 0x080932D8 adds r4, r0, r1 ldr r0, [r4] ldrh r1, [r4, #4] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 beq _080932F4 movs r0, #1 @@ -564,7 +564,7 @@ _080932F0: .4byte gUnk_08122898 _080932F4: ldr r0, [r4] ldrh r1, [r4, #6] - bl CheckLocalFlagByOffset + bl CheckLocalFlagByBank cmp r0, #0 bne _08093304 movs r0, #0 @@ -585,7 +585,7 @@ sub_08093308: @ 0x08093308 bne _08093324 ldr r0, [r1] ldrh r1, [r1, #4] - bl SetLocalFlagByOffset + bl SetLocalFlagByBank b _08093330 .align 2, 0 _08093320: .4byte gUnk_08122898 @@ -594,7 +594,7 @@ _08093324: bne _08093330 ldr r0, [r1] ldrh r1, [r1, #6] - bl SetLocalFlagByOffset + bl SetLocalFlagByBank _08093330: pop {pc} .align 2, 0 diff --git a/asm/objectC1.s b/asm/objectC1.s index 88bd02ef..d66a016b 100644 --- a/asm/objectC1.s +++ b/asm/objectC1.s @@ -31,7 +31,7 @@ sub_080A2578: @ 0x080A2578 thumb_func_start sub_080A2584 sub_080A2584: @ 0x080A2584 push {lr} - bl UnfreezeTime + bl ResetPlayerEventPriority ldr r1, _080A2598 @ =gUnk_02034490 movs r0, #0 strb r0, [r1] @@ -132,7 +132,7 @@ _080A25E6: strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority ldr r0, _080A2670 @ =gPlayerState ldr r0, [r0, #0x30] movs r1, #8 diff --git a/asm/pushableFurniture.s b/asm/pushableFurniture.s index 2e0e74d0..263df8cd 100644 --- a/asm/pushableFurniture.s +++ b/asm/pushableFurniture.s @@ -310,7 +310,7 @@ sub_0808FB68: @ 0x0808FB68 orrs r0, r1 strb r0, [r4, #0x15] movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl adds r0, r4, #0 movs r1, #0 bl sub_0808FD44 @@ -343,7 +343,7 @@ _0808FBB0: orrs r0, r1 strb r0, [r4, #0x15] movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl adds r0, r4, #0 movs r1, #1 bl sub_0808FD44 @@ -378,7 +378,7 @@ sub_0808FBFC: @ 0x0808FBFC lsls r0, r0, #3 strb r0, [r4, #0x15] movs r0, #1 - bl sub_08078A90 + bl SetPlayerControl adds r0, r4, #0 movs r1, #0 bl sub_0808FD44 @@ -399,7 +399,7 @@ sub_0808FC3C: @ 0x0808FC3C movs r0, #1 strb r0, [r4, #0xc] movs r0, #0 - bl sub_08078A90 + bl SetPlayerControl _0808FC58: pop {r4, pc} .align 2, 0 diff --git a/asm/pushableGrave.s b/asm/pushableGrave.s index 780b29c7..8cf7c13b 100644 --- a/asm/pushableGrave.s +++ b/asm/pushableGrave.s @@ -218,7 +218,7 @@ sub_08097730: @ 0x08097730 beq _08097744 ldrb r1, [r4, #0xe] adds r0, r4, #0 - bl sub_0805E4E0 + bl RequestPriorityDuration _08097744: pop {r4, pc} .align 2, 0 @@ -262,7 +262,7 @@ _08097774: strb r0, [r2, #0xf] adds r0, r2, #0 movs r1, #0x60 - bl sub_0805E4E0 + bl RequestPriorityDuration ldr r0, _0809779C @ =0x0000010F bl SoundReq _0809779A: diff --git a/asm/pushableLever.s b/asm/pushableLever.s index cb21b55c..a3c4e401 100644 --- a/asm/pushableLever.s +++ b/asm/pushableLever.s @@ -65,7 +65,7 @@ sub_08098294: @ 0x08098294 bl EnqueueSFX adds r0, r4, #0 movs r1, #0x1e - bl sub_0805E4E0 + bl RequestPriorityDuration bl sub_08079F8C cmp r0, #0 beq _080982FA diff --git a/asm/specialFx.s b/asm/specialFx.s index 383cd385..76ae6dfc 100644 --- a/asm/specialFx.s +++ b/asm/specialFx.s @@ -39,7 +39,7 @@ sub_080844E0: @ 0x080844E0 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r5, #0 adds r0, #0x38 ldrb r0, [r0] diff --git a/asm/sub_080A276C.s b/asm/sub_080A276C.s index 00794d7b..3ba2ceab 100644 --- a/asm/sub_080A276C.s +++ b/asm/sub_080A276C.s @@ -37,7 +37,7 @@ sub_080A276C: @ 0x080A276C adds r0, r4, #0 adds r1, r6, #0 bl CopyPosition - ldr r0, _080A282C @ =gUnk_03003DC0 + ldr r0, _080A282C @ =gPriorityHandler mov r1, r8 strb r1, [r0] ldr r1, _080A2830 @ =gUnk_02034490 @@ -101,6 +101,6 @@ _080A2820: pop {r4, r5, r6, r7, pc} .align 2, 0 _080A2828: .4byte gPlayerEntity -_080A282C: .4byte gUnk_03003DC0 +_080A282C: .4byte gPriorityHandler _080A2830: .4byte gUnk_02034490 _080A2834: .4byte gPlayerState diff --git a/asm/windTribeTeleporter.s b/asm/windTribeTeleporter.s index e1919f76..15a1b7a2 100644 --- a/asm/windTribeTeleporter.s +++ b/asm/windTribeTeleporter.s @@ -44,7 +44,7 @@ sub_080A0F44: @ 0x080A0F44 str r0, [r5, #0x48] adds r0, r5, #0 movs r1, #6 - bl sub_0805E3A0 + bl SetDefaultPriority adds r0, r5, #0 bl sub_080A11C0 cmp r0, #0 @@ -56,9 +56,9 @@ sub_080A0F44: @ 0x080A0F44 ldrh r0, [r5, #0x32] strh r0, [r1, #0x32] movs r0, #3 - bl sub_08078A90 + bl SetPlayerControl bl sub_08078B48 - bl FreezeTime + bl SetPlayerEventPriority movs r0, #0x89 lsls r0, r0, #1 bl SoundReq @@ -94,9 +94,9 @@ sub_080A0FB0: @ 0x080A0FB0 ldrh r0, [r5, #0x32] strh r0, [r1, #0x32] movs r0, #3 - bl sub_08078A90 + bl SetPlayerControl bl sub_08078B48 - bl FreezeTime + bl SetPlayerEventPriority movs r0, #0x89 lsls r0, r0, #1 bl SoundReq @@ -693,7 +693,7 @@ _080A11A8: ldr r0, _080A11BC @ =gPlayerState adds r0, #0x8b strb r1, [r0] - bl UnfreezeTime + bl ResetPlayerEventPriority _080A11BA: pop {r4, pc} .align 2, 0 diff --git a/assets/assets.json b/assets/assets.json index 6320d5ab..3363aa4e 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -31160,21 +31160,6 @@ "start": 1034916, "size": 36 }, - { - "path": "data_080FC8A4/gUnk_080FCAC8.bin", - "start": 1034952, - "size": 14 - }, - { - "path": "data_080FC8A4/gUnk_080FCAD6.bin", - "start": 1034966, - "size": 34 - }, - { - "path": "data_080FC8A4/gUnk_080FCAF8.bin", - "start": 1035000, - "size": 32 - }, { "path": "data_080FC8A4/gUnk_080FCB38.bin", "start": 1035064, diff --git a/data/data_080FC8A4.s b/data/data_080FC8A4.s index 7832a903..db597a8d 100644 --- a/data/data_080FC8A4.s +++ b/data/data_080FC8A4.s @@ -102,1255 +102,3 @@ gUnk_080FCA8C:: @ 080FCA8C gUnk_080FCAA4:: @ 080FCAA4 .incbin "data_080FC8A4/gUnk_080FCAA4.bin" - -gUnk_080FCAC8:: @ 080FCAC8 - .incbin "data_080FC8A4/gUnk_080FCAC8.bin" - -gUnk_080FCAD6:: @ 080FCAD6 - .incbin "data_080FC8A4/gUnk_080FCAD6.bin" - -gUnk_080FCAF8:: @ 080FCAF8 - .incbin "data_080FC8A4/gUnk_080FCAF8.bin" - -gUnk_080FCB18:: @ 080FCB18 - .4byte sub_08053434 - .4byte nullsub_480 - .4byte sub_080534E4 - .4byte nullsub_480 - .4byte nullsub_480 - .4byte nullsub_480 - .4byte nullsub_480 - .4byte nullsub_480 - -gUnk_080FCB38:: @ 080FCB38 - .incbin "data_080FC8A4/gUnk_080FCB38.bin" - -gUnk_080FCB62:: @ 080FCB62 -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FCB62_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FCB62_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FCB62_2_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FCB62_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080FCB94:: @ 080FCB94 - .incbin "data_080FC8A4/gUnk_080FCB94.bin" - -gUnk_080FCBB4:: @ 080FCBB4 - .4byte sub_080535AC - .4byte sub_080535F4 - .4byte nullsub_481 - .4byte sub_08053618 - -gUnk_080FCBC4:: @ 080FCBC4 - .incbin "data_080FC8A4/gUnk_080FCBC4.bin" - .4byte script_08009A50 - .incbin "data_080FC8A4/gUnk_080FCBC4_1.bin" - .4byte script_08009A84 - .incbin "data_080FC8A4/gUnk_080FCBC4_2.bin" - .4byte script_08009AF8 - .incbin "data_080FC8A4/gUnk_080FCBC4_3.bin" - .4byte script_08009A34 - .incbin "data_080FC8A4/gUnk_080FCBC4_4.bin" - -gUnk_080FCC14:: @ 080FCC14 - .incbin "data_080FC8A4/gUnk_080FCC14.bin" - .4byte script_08009918 - .incbin "data_080FC8A4/gUnk_080FCC14_1.bin" - .4byte script_08009950 - .incbin "data_080FC8A4/gUnk_080FCC14_2.bin" - .4byte script_080099DC - .incbin "data_080FC8A4/gUnk_080FCC14_3.bin" - -gUnk_080FCC54:: @ 080FCC54 - .incbin "data_080FC8A4/gUnk_080FCC54.bin" - .4byte script_08009D6C - .incbin "data_080FC8A4/gUnk_080FCC54_1.bin" - -gUnk_080FCC84:: @ 080FCC84 - .incbin "data_080FC8A4/gUnk_080FCC84.bin" - -gUnk_080FCC9C:: @ 080FCC9C - .incbin "data_080FC8A4/gUnk_080FCC9C.bin" - -gUnk_080FCCB4:: @ 080FCCB4 - .4byte gUnk_080FCC84 - .incbin "data_080FC8A4/gUnk_080FCCB4.bin" - .4byte gUnk_080FCC84 - .incbin "data_080FC8A4/gUnk_080FCCB4_1.bin" - .4byte gUnk_080FCC9C - .incbin "data_080FC8A4/gUnk_080FCCB4_2.bin" - .4byte gUnk_080FCC9C - .incbin "data_080FC8A4/gUnk_080FCCB4_3.bin" - .4byte gUnk_080FCC84 - .incbin "data_080FC8A4/gUnk_080FCCB4_4.bin" - .4byte gUnk_080FCC84 - .incbin "data_080FC8A4/gUnk_080FCCB4_5.bin" - -gUnk_080FCCFC:: @ 080FCCFC - .4byte sub_08053758 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053904 - .4byte sub_08053974 - .4byte nullsub_482 - .4byte sub_080539BC - .4byte nullsub_482 - -gUnk_080FCD38:: @ 080FCD38 - .4byte sub_0805370C - .4byte nullsub_482 - -gUnk_080FCD40:: @ 080FCD40 - .4byte sub_08053758 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_08053800 - .4byte sub_08053894 - .4byte sub_080539F4 - .4byte sub_08053A1C - .4byte sub_08053A5C - .4byte sub_08053A90 - -gUnk_080FCD84:: @ 080FCD84 - .incbin "data_080FC8A4/gUnk_080FCD84.bin" - .4byte script_080153EC - .incbin "data_080FC8A4/gUnk_080FCD84_1.bin" - .4byte script_0801550C - .incbin "data_080FC8A4/gUnk_080FCD84_2.bin" - .4byte script_08015618 - .incbin "data_080FC8A4/gUnk_080FCD84_3.bin" - .4byte script_08015684 - .incbin "data_080FC8A4/gUnk_080FCD84_4.bin" - -gUnk_080FCDD4:: @ 080FCDD4 - .4byte sub_08053ACC - .4byte sub_08053B00 - .4byte sub_08053B10 - -gUnk_080FCDE0:: @ 080FCDE0 - .incbin "data_080FC8A4/gUnk_080FCDE0.bin" - .4byte script_08015CD4 - .incbin "data_080FC8A4/gUnk_080FCDE0_1.bin" - .4byte script_08015DF0 - .incbin "data_080FC8A4/gUnk_080FCDE0_2.bin" - .4byte script_08015E58 - .incbin "data_080FC8A4/gUnk_080FCDE0_3.bin" - .4byte script_08015FA4 - .incbin "data_080FC8A4/gUnk_080FCDE0_4.bin" - -gUnk_080FCE30:: @ 080FCE30 - .incbin "data_080FC8A4/gUnk_080FCE30.bin" - .4byte script_08015F08 - .incbin "data_080FC8A4/gUnk_080FCE30_1.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_2.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_3.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_4.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_5.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_6.bin" - .4byte script_08015F3C - .incbin "data_080FC8A4/gUnk_080FCE30_7.bin" - -gUnk_080FCEB0:: @ 080FCEB0 - .4byte sub_08053B74 - .4byte sub_08053BAC - .4byte sub_08053BBC - -gUnk_080FCEBC:: @ 080FCEBC - .incbin "data_080FC8A4/gUnk_080FCEBC.bin" - .4byte script_0800DB18 - .incbin "data_080FC8A4/gUnk_080FCEBC_1.bin" - .4byte script_0800E58C - .incbin "data_080FC8A4/gUnk_080FCEBC_2.bin" - -gUnk_080FCEEC:: @ 080FCEEC - .4byte sub_08053C20 - .4byte nullsub_483 - .4byte sub_08053C60 - -gUnk_080FCEF8:: @ 080FCEF8 - .4byte sub_08053CAC - .4byte sub_08053CAC - .4byte sub_08053E58 - -gUnk_080FCF04:: @ 080FCF04 - .4byte gUnk_080FCF24 - .4byte 0x00001c58 - .4byte gUnk_080FCF44 - .4byte 0x00002058 - .4byte gUnk_080FCF64 - .4byte 0x00001d58 - .4byte gUnk_080FCF84 - .4byte 0x00002258 - -gUnk_080FCF24:: @ 080FCF24 - .incbin "data_080FC8A4/gUnk_080FCF24.bin" - -gUnk_080FCF44:: @ 080FCF44 - .incbin "data_080FC8A4/gUnk_080FCF44.bin" - -gUnk_080FCF64:: @ 080FCF64 - .incbin "data_080FC8A4/gUnk_080FCF64.bin" - -gUnk_080FCF84:: @ 080FCF84 - .incbin "data_080FC8A4/gUnk_080FCF84.bin" - -gUnk_080FCFA4:: @ 080FCFA4 - .4byte sub_08053CC8 - .4byte sub_08053D34 - .4byte sub_08053D90 - .4byte sub_08053DB4 - .4byte sub_08053E30 - -gUnk_080FCFB8:: @ 080FCFB8 - .4byte gUnk_080FCFE8 - .4byte gUnk_080FD008 - .4byte 0x10100e88 - .4byte gUnk_080FD028 - .4byte gUnk_080FD048 - .4byte 0x10101088 - .4byte gUnk_080FD078 - .4byte gUnk_080FD098 - .4byte 0x10101388 - .4byte gUnk_080FD0C8 - .4byte gUnk_080FD0E8 - .4byte 0x10101588 - -gUnk_080FCFE8:: @ 080FCFE8 - .incbin "data_080FC8A4/gUnk_080FCFE8.bin" - -gUnk_080FD008:: @ 080FD008 - .incbin "data_080FC8A4/gUnk_080FD008.bin" - -gUnk_080FD028:: @ 080FD028 - .incbin "data_080FC8A4/gUnk_080FD028.bin" - -gUnk_080FD048:: @ 080FD048 - .incbin "data_080FC8A4/gUnk_080FD048.bin" - -gUnk_080FD078:: @ 080FD078 - .incbin "data_080FC8A4/gUnk_080FD078.bin" - -gUnk_080FD098:: @ 080FD098 - .incbin "data_080FC8A4/gUnk_080FD098.bin" - -gUnk_080FD0C8:: @ 080FD0C8 - .incbin "data_080FC8A4/gUnk_080FD0C8.bin" - -gUnk_080FD0E8:: @ 080FD0E8 - .incbin "data_080FC8A4/gUnk_080FD0E8.bin" - -gUnk_080FD108:: @ 080FD108 - .4byte sub_08053E74 - .4byte sub_08053EC4 - .4byte sub_08053EFC - .4byte sub_08053F20 - .4byte sub_08053EC4 - .4byte sub_08053EFC - .4byte sub_08053F20 - .4byte sub_08053EC4 - .4byte sub_08053EFC - .4byte sub_08053F20 - .4byte sub_08053EC4 - .4byte sub_08053F88 - -gUnk_080FD138:: @ 080FD138 - .4byte sub_080536D4 - .4byte sub_08053B58 - .4byte sub_0805373C - .4byte sub_08053AB0 - .4byte sub_080536F0 - .4byte sub_08053C04 - -gHitbox_0:: @ 080FD150 - .incbin "data_080FC8A4/gHitbox_0.bin" - -gHitbox_30:: @ 080FD158 - .incbin "data_080FC8A4/gHitbox_30.bin" - -gHitbox_31:: @ 080FD160 - .incbin "data_080FC8A4/gHitbox_31.bin" - -gHitbox_1:: @ 080FD168 - .incbin "data_080FC8A4/gHitbox_1.bin" - -gHitbox_2:: @ 080FD170 - .incbin "data_080FC8A4/gHitbox_2.bin" - -gUnk_080FD178:: @ 080FD178 - .incbin "data_080FC8A4/gUnk_080FD178.bin" - -gHitbox_3:: @ 080FD180 - .incbin "data_080FC8A4/gHitbox_3.bin" - -gHitbox_4:: @ 080FD188 - .incbin "data_080FC8A4/gHitbox_4.bin" - -gUnk_080FD190:: @ 080FD190 - .incbin "data_080FC8A4/gUnk_080FD190.bin" - -gHitbox_5:: @ 080FD198 - .incbin "data_080FC8A4/gHitbox_5.bin" - -gHitbox_6:: @ 080FD1A0 - .incbin "data_080FC8A4/gHitbox_6.bin" - -gUnk_080FD1A8:: @ 080FD1A8 - .incbin "data_080FC8A4/gUnk_080FD1A8.bin" - -gUnk_080FD1B4:: @ 080FD1B4 - .incbin "data_080FC8A4/gUnk_080FD1B4.bin" - -gHitbox_7:: @ 080FD1C4 - .incbin "data_080FC8A4/gHitbox_7.bin" - -gHitbox_8:: @ 080FD1CC - .incbin "data_080FC8A4/gHitbox_8.bin" - -gUnk_080FD1D4:: @ 080FD1D4 - .incbin "data_080FC8A4/gUnk_080FD1D4.bin" - -gUnk_080FD1DC:: @ 080FD1DC - .incbin "data_080FC8A4/gUnk_080FD1DC.bin" - -gUnk_080FD1E4:: @ 080FD1E4 - .incbin "data_080FC8A4/gUnk_080FD1E4.bin" - -gUnk_080FD1EC:: @ 080FD1EC - .incbin "data_080FC8A4/gUnk_080FD1EC.bin" - -gUnk_080FD1F4:: @ 080FD1F4 - .incbin "data_080FC8A4/gUnk_080FD1F4.bin" - -gUnk_080FD1FC:: @ 080FD1FC - .incbin "data_080FC8A4/gUnk_080FD1FC.bin" - -gUnk_080FD204:: @ 080FD204 - .incbin "data_080FC8A4/gUnk_080FD204.bin" - -gUnk_080FD20C:: @ 080FD20C - .incbin "data_080FC8A4/gUnk_080FD20C.bin" - -gUnk_080FD214:: @ 080FD214 - .incbin "data_080FC8A4/gUnk_080FD214.bin" - -gUnk_080FD21C:: @ 080FD21C - .incbin "data_080FC8A4/gUnk_080FD21C.bin" - -gUnk_080FD224:: @ 080FD224 - .incbin "data_080FC8A4/gUnk_080FD224.bin" - -gUnk_080FD22C:: @ 080FD22C - .incbin "data_080FC8A4/gUnk_080FD22C.bin" - -gUnk_080FD238:: @ 080FD238 - .incbin "data_080FC8A4/gUnk_080FD238.bin" - -gUnk_080FD240:: @ 080FD240 - .incbin "data_080FC8A4/gUnk_080FD240.bin" - -gUnk_080FD248:: @ 080FD248 - .incbin "data_080FC8A4/gUnk_080FD248.bin" - -gHitbox_9:: @ 080FD250 - .incbin "data_080FC8A4/gHitbox_9.bin" - -gUnk_080FD258:: @ 080FD258 - .incbin "data_080FC8A4/gUnk_080FD258.bin" - -gUnk_080FD260:: @ 080FD260 - .incbin "data_080FC8A4/gUnk_080FD260.bin" - -gHitbox_10:: @ 080FD268 - .incbin "data_080FC8A4/gHitbox_10.bin" - -gUnk_080FD270:: @ 080FD270 - .incbin "data_080FC8A4/gUnk_080FD270.bin" - -gUnk_080FD278:: @ 080FD278 - .incbin "data_080FC8A4/gUnk_080FD278.bin" - -gUnk_080FD280:: @ 080FD280 - .incbin "data_080FC8A4/gUnk_080FD280.bin" - -gUnk_080FD288:: @ 080FD288 - .incbin "data_080FC8A4/gUnk_080FD288.bin" - -gUnk_080FD290:: @ 080FD290 - .incbin "data_080FC8A4/gUnk_080FD290.bin" - -gUnk_080FD298:: @ 080FD298 - .incbin "data_080FC8A4/gUnk_080FD298.bin" - -gUnk_080FD2A0:: @ 080FD2A0 - .incbin "data_080FC8A4/gUnk_080FD2A0.bin" - -gUnk_080FD2A8:: @ 080FD2A8 - .incbin "data_080FC8A4/gUnk_080FD2A8.bin" - -gHitbox_11:: @ 080FD2B0 - .incbin "data_080FC8A4/gHitbox_11.bin" - -gHitbox_12:: @ 080FD2B8 - .incbin "data_080FC8A4/gHitbox_12.bin" - -gHitbox_13:: @ 080FD2C0 - .incbin "data_080FC8A4/gHitbox_13.bin" - -gHitbox_14:: @ 080FD2C8 - .incbin "data_080FC8A4/gHitbox_14.bin" - -gUnk_080FD2D0:: @ 080FD2D0 - .incbin "data_080FC8A4/gUnk_080FD2D0.bin" - -gUnk_080FD2D8:: @ 080FD2D8 - .incbin "data_080FC8A4/gUnk_080FD2D8.bin" - -gUnk_080FD2E0:: @ 080FD2E0 - .incbin "data_080FC8A4/gUnk_080FD2E0.bin" - -gUnk_080FD2E8:: @ 080FD2E8 - .incbin "data_080FC8A4/gUnk_080FD2E8.bin" - -gUnk_080FD2F0:: @ 080FD2F0 - .incbin "data_080FC8A4/gUnk_080FD2F0.bin" - -gHitbox_15:: @ 080FD2F8 - .incbin "data_080FC8A4/gHitbox_15.bin" - -gHitbox_16:: @ 080FD300 - .incbin "data_080FC8A4/gHitbox_16.bin" - -gUnk_080FD308:: @ 080FD308 - .incbin "data_080FC8A4/gUnk_080FD308.bin" - -gUnk_080FD310:: @ 080FD310 - .incbin "data_080FC8A4/gUnk_080FD310.bin" - -gHitbox_17:: @ 080FD318 - .incbin "data_080FC8A4/gHitbox_17.bin" - -gUnk_080FD320:: @ 080FD320 - .incbin "data_080FC8A4/gUnk_080FD320.bin" - -gUnk_080FD328:: @ 080FD328 - .incbin "data_080FC8A4/gUnk_080FD328.bin" - -gUnk_080FD330:: @ 080FD330 - .incbin "data_080FC8A4/gUnk_080FD330.bin" - -gHitbox_18:: @ 080FD338 - .incbin "data_080FC8A4/gHitbox_18.bin" - -gUnk_080FD340:: @ 080FD340 - .incbin "data_080FC8A4/gUnk_080FD340.bin" - -gUnk_080FD34C:: @ 080FD34C - .incbin "data_080FC8A4/gUnk_080FD34C.bin" - -gUnk_080FD354:: @ 080FD354 - .incbin "data_080FC8A4/gUnk_080FD354.bin" - -gUnk_080FD35C:: @ 080FD35C - .incbin "data_080FC8A4/gUnk_080FD35C.bin" - -gUnk_080FD364:: @ 080FD364 - .incbin "data_080FC8A4/gUnk_080FD364.bin" - -gUnk_080FD36C:: @ 080FD36C - .incbin "data_080FC8A4/gUnk_080FD36C.bin" - -gUnk_080FD374:: @ 080FD374 - .incbin "data_080FC8A4/gUnk_080FD374.bin" - -gUnk_080FD37C:: @ 080FD37C - .incbin "data_080FC8A4/gUnk_080FD37C.bin" - -gUnk_080FD384:: @ 080FD384 - .incbin "data_080FC8A4/gUnk_080FD384.bin" - -gUnk_080FD38C:: @ 080FD38C - .incbin "data_080FC8A4/gUnk_080FD38C.bin" - -gUnk_080FD394:: @ 080FD394 - .incbin "data_080FC8A4/gUnk_080FD394.bin" - -gUnk_080FD39C:: @ 080FD39C - .incbin "data_080FC8A4/gUnk_080FD39C.bin" - -gUnk_080FD3A4:: @ 080FD3A4 - .incbin "data_080FC8A4/gUnk_080FD3A4.bin" - -gUnk_080FD3AC:: @ 080FD3AC - .incbin "data_080FC8A4/gUnk_080FD3AC.bin" - -gUnk_080FD3B4:: @ 080FD3B4 - .incbin "data_080FC8A4/gUnk_080FD3B4.bin" - -gUnk_080FD3BC:: @ 080FD3BC - .incbin "data_080FC8A4/gUnk_080FD3BC.bin" - -gUnk_080FD3C4:: @ 080FD3C4 - .incbin "data_080FC8A4/gUnk_080FD3C4.bin" - -gUnk_080FD3CC:: @ 080FD3CC - .incbin "data_080FC8A4/gUnk_080FD3CC.bin" - -gUnk_080FD3DC:: @ 080FD3DC - .incbin "data_080FC8A4/gUnk_080FD3DC.bin" - -gUnk_080FD3E4:: @ 080FD3E4 - .incbin "data_080FC8A4/gUnk_080FD3E4.bin" - -gUnk_080FD3EC:: @ 080FD3EC - .incbin "data_080FC8A4/gUnk_080FD3EC.bin" - -gUnk_080FD3F4:: @ 080FD3F4 - .incbin "data_080FC8A4/gUnk_080FD3F4.bin" - -gUnk_080FD3FC:: @ 080FD3FC - .incbin "data_080FC8A4/gUnk_080FD3FC.bin" - -gUnk_080FD408:: @ 080FD408 - .incbin "data_080FC8A4/gUnk_080FD408.bin" - -gHitbox_19:: @ 080FD410 - .incbin "data_080FC8A4/gHitbox_19.bin" - -gUnk_080FD41C:: @ 080FD41C - .incbin "data_080FC8A4/gUnk_080FD41C.bin" - -gUnk_080FD424:: @ 080FD424 - .incbin "data_080FC8A4/gUnk_080FD424.bin" - -gUnk_080FD42C:: @ 080FD42C - .incbin "data_080FC8A4/gUnk_080FD42C.bin" - -gUnk_080FD434:: @ 080FD434 - .incbin "data_080FC8A4/gUnk_080FD434.bin" - -gUnk_080FD43C:: @ 080FD43C - .incbin "data_080FC8A4/gUnk_080FD43C.bin" - -gHitbox_20:: @ 080FD448 - .incbin "data_080FC8A4/gHitbox_20.bin" - -gUnk_080FD450:: @ 080FD450 - .incbin "data_080FC8A4/gUnk_080FD450.bin" - -gHitbox_21:: @ 080FD458 - .incbin "data_080FC8A4/gHitbox_21.bin" - -gHitbox_22:: @ 080FD460 - .incbin "data_080FC8A4/gHitbox_22.bin" - -gHitbox_23:: @ 080FD468 - .incbin "data_080FC8A4/gHitbox_23.bin" - -gHitbox_32:: @ 080FD470 - .incbin "data_080FC8A4/gHitbox_32.bin" - -gHitbox_24:: @ 080FD480 - .incbin "data_080FC8A4/gHitbox_24.bin" - -gUnk_080FD488:: @ 080FD488 - .incbin "data_080FC8A4/gUnk_080FD488.bin" - -gUnk_080FD490:: @ 080FD490 - .incbin "data_080FC8A4/gUnk_080FD490.bin" - -gHitbox_25:: @ 080FD498 - .incbin "data_080FC8A4/gHitbox_25.bin" - -gHitbox_26:: @ 080FD4A4 - .incbin "data_080FC8A4/gHitbox_26.bin" - -gUnk_080FD4B8:: @ 080FD4B8 - .incbin "data_080FC8A4/gUnk_080FD4B8.bin" - -gUnk_080FD4C0:: @ 080FD4C0 - .incbin "data_080FC8A4/gUnk_080FD4C0.bin" - -gUnk_080FD4C8:: @ 080FD4C8 - .incbin "data_080FC8A4/gUnk_080FD4C8.bin" - -gUnk_080FD4D0:: @ 080FD4D0 - .incbin "data_080FC8A4/gUnk_080FD4D0.bin" - -gUnk_080FD4D8:: @ 080FD4D8 - .incbin "data_080FC8A4/gUnk_080FD4D8.bin" - -gUnk_080FD4E0:: @ 080FD4E0 - .incbin "data_080FC8A4/gUnk_080FD4E0.bin" - -gUnk_080FD4E8:: @ 080FD4E8 - .incbin "data_080FC8A4/gUnk_080FD4E8.bin" - -gUnk_080FD4F0:: @ 080FD4F0 - .incbin "data_080FC8A4/gUnk_080FD4F0.bin" - -gUnk_080FD4F8:: @ 080FD4F8 - .incbin "data_080FC8A4/gUnk_080FD4F8.bin" - -gUnk_080FD500:: @ 080FD500 - .incbin "data_080FC8A4/gUnk_080FD500.bin" - -gUnk_080FD508:: @ 080FD508 - .incbin "data_080FC8A4/gUnk_080FD508.bin" - -gUnk_080FD510:: @ 080FD510 - .incbin "data_080FC8A4/gUnk_080FD510.bin" - -gUnk_080FD518:: @ 080FD518 - .incbin "data_080FC8A4/gUnk_080FD518.bin" - -gUnk_080FD520:: @ 080FD520 - .incbin "data_080FC8A4/gUnk_080FD520.bin" - -gHitbox_27:: @ 080FD528 - .incbin "data_080FC8A4/gHitbox_27.bin" - -gUnk_080FD530:: @ 080FD530 - .incbin "data_080FC8A4/gUnk_080FD530.bin" - -gUnk_080FD538:: @ 080FD538 - .incbin "data_080FC8A4/gUnk_080FD538.bin" - -gUnk_080FD544:: @ 080FD544 - .incbin "data_080FC8A4/gUnk_080FD544.bin" - -gHitbox_28:: @ 080FD54C - .incbin "data_080FC8A4/gHitbox_28.bin" - -gUnk_080FD558:: @ 080FD558 - .incbin "data_080FC8A4/gUnk_080FD558.bin" - -gUnk_080FD560:: @ 080FD560 - .incbin "data_080FC8A4/gUnk_080FD560.bin" - -gHitbox_29:: @ 080FD568 - .incbin "data_080FC8A4/gHitbox_29.bin" - -gUnk_080FD570:: @ 080FD570 - .incbin "data_080FC8A4/gUnk_080FD570.bin" - -gUnk_080FD578:: @ 080FD578 - .incbin "data_080FC8A4/gUnk_080FD578.bin" - -gUnk_080FD580:: @ 080FD580 - .incbin "data_080FC8A4/gUnk_080FD580.bin" - -gUnk_080FD588:: @ 080FD588 - .incbin "data_080FC8A4/gUnk_080FD588.bin" - -gWalletSizes:: @ 080FD590 - .incbin "data_080FC8A4/gWalletSizes.bin" - -gBombBagSizes:: @ 080FD5A0 - .incbin "data_080FC8A4/gBombBagSizes.bin" - -gQuiverSizes:: @ 080FD5A4 - .incbin "data_080FC8A4/gQuiverSizes.bin" - -gUnk_080FD5A8:: @ 080FD5A8 - .incbin "data_080FC8A4/gUnk_080FD5A8.bin" - -gUnk_080FD5B4:: @ 080FD5B4 - .incbin "data_080FC8A4/gUnk_080FD5B4.bin" - -gUnk_080FD964:: @ 080FD964 -.ifdef EU - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FD964_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FD964_1_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif - -gSpriteAnimations_322_0:: @ 080FDD14 - .include "animations/gSpriteAnimations_322_0.s" - -gSpriteAnimations_322_1:: @ 080FDD19 - .include "animations/gSpriteAnimations_322_1.s" - -gSpriteAnimations_322_2:: @ 080FDD1E - .include "animations/gSpriteAnimations_322_2.s" - -gSpriteAnimations_322_3:: @ 080FDD23 - .include "animations/gSpriteAnimations_322_3.s" - -gSpriteAnimations_322_4:: @ 080FDD28 - .include "animations/gSpriteAnimations_322_4.s" - -gSpriteAnimations_322_6:: @ 080FDD2D - .include "animations/gSpriteAnimations_322_6.s" - -gSpriteAnimations_322_7:: @ 080FDD32 - .include "animations/gSpriteAnimations_322_7.s" - -gSpriteAnimations_322_8:: @ 080FDD37 - .include "animations/gSpriteAnimations_322_8.s" - -gSpriteAnimations_322_9:: @ 080FDD48 - .include "animations/gSpriteAnimations_322_9.s" - -gSpriteAnimations_322_10:: @ 080FDD4D - .include "animations/gSpriteAnimations_322_10.s" - -gSpriteAnimations_322_11:: @ 080FDD52 - .include "animations/gSpriteAnimations_322_11.s" - -gSpriteAnimations_322_12:: @ 080FDD57 - .include "animations/gSpriteAnimations_322_12.s" - -gSpriteAnimations_322_13:: @ 080FDD5C - .include "animations/gSpriteAnimations_322_13.s" - -gSpriteAnimations_322_14:: @ 080FDD61 - .include "animations/gSpriteAnimations_322_14.s" - -gSpriteAnimations_322_15:: @ 080FDD92 - .include "animations/gSpriteAnimations_322_15.s" - -gSpriteAnimations_322_5:: @ 080FDD97 - .include "animations/gSpriteAnimations_322_5.s" - -gSpriteAnimations_322_17:: @ 080FDDA8 - .include "animations/gSpriteAnimations_322_17.s" - -gSpriteAnimations_322_18:: @ 080FDDAD - .include "animations/gSpriteAnimations_322_18.s" - -gSpriteAnimations_322_19:: @ 080FDDB2 - .include "animations/gSpriteAnimations_322_19.s" - -gSpriteAnimations_322_20:: @ 080FDDB7 - .include "animations/gSpriteAnimations_322_20.s" - -gSpriteAnimations_322_21:: @ 080FDDBC - .include "animations/gSpriteAnimations_322_21.s" - -gSpriteAnimations_322_22:: @ 080FDDC1 - .include "animations/gSpriteAnimations_322_22.s" - -gSpriteAnimations_322_23:: @ 080FDDC6 - .include "animations/gSpriteAnimations_322_23.s" - -gSpriteAnimations_322_28:: @ 080FDDCB - .include "animations/gSpriteAnimations_322_28.s" - -gSpriteAnimations_322_38:: @ 080FDDD0 - .include "animations/gSpriteAnimations_322_38.s" - -gSpriteAnimations_322_39:: @ 080FDDD5 - .include "animations/gSpriteAnimations_322_39.s" - -gSpriteAnimations_322_34:: @ 080FDDDA - .include "animations/gSpriteAnimations_322_34.s" - -gSpriteAnimations_322_35:: @ 080FDDDF - .include "animations/gSpriteAnimations_322_35.s" - -gSpriteAnimations_322_40:: @ 080FDDE4 - .include "animations/gSpriteAnimations_322_40.s" - -gSpriteAnimations_322_41:: @ 080FDDF5 - .include "animations/gSpriteAnimations_322_41.s" - -gSpriteAnimations_322_42:: @ 080FDE0E - .include "animations/gSpriteAnimations_322_42.s" - -gSpriteAnimations_322_43:: @ 080FDE27 - .include "animations/gSpriteAnimations_322_43.s" - -gSpriteAnimations_322_44:: @ 080FDE40 - .include "animations/gSpriteAnimations_322_44.s" - -gSpriteAnimations_322_45:: @ 080FDE59 - .include "animations/gSpriteAnimations_322_45.s" - -gSpriteAnimations_322_46:: @ 080FDE72 - .include "animations/gSpriteAnimations_322_46.s" - -gSpriteAnimations_322_36:: @ 080FDE8B - .include "animations/gSpriteAnimations_322_36.s" - -gSpriteAnimations_322_37:: @ 080FDE90 - .include "animations/gSpriteAnimations_322_37.s" - -gSpriteAnimations_322_54:: @ 080FDE95 - .include "animations/gSpriteAnimations_322_54.s" - -gSpriteAnimations_322_33:: @ 080FDE9A - .include "animations/gSpriteAnimations_322_33.s" - -gSpriteAnimations_322_47:: @ 080FDE9F - .include "animations/gSpriteAnimations_322_47.s" - -gSpriteAnimations_322_48:: @ 080FDEA4 - .include "animations/gSpriteAnimations_322_48.s" - -gSpriteAnimations_322_49:: @ 080FDEA9 - .include "animations/gSpriteAnimations_322_49.s" - -gSpriteAnimations_322_52:: @ 080FDEAE - .include "animations/gSpriteAnimations_322_52.s" - -gSpriteAnimations_322_53:: @ 080FDEB3 - .include "animations/gSpriteAnimations_322_53.s" - -gSpriteAnimations_322_24:: @ 080FDEB8 - .include "animations/gSpriteAnimations_322_24.s" - -gSpriteAnimations_322_58:: @ 080FDEBD - .include "animations/gSpriteAnimations_322_58.s" - -gSpriteAnimations_322_59:: @ 080FDEC2 - .include "animations/gSpriteAnimations_322_59.s" - -gSpriteAnimations_322_25:: @ 080FDEC7 - .include "animations/gSpriteAnimations_322_25.s" - -gSpriteAnimations_322_60:: @ 080FDECC - .include "animations/gSpriteAnimations_322_60.s" - -gSpriteAnimations_322_55:: @ 080FDED1 - .include "animations/gSpriteAnimations_322_55.s" - -gSpriteAnimations_322_68:: @ 080FDED6 - .include "animations/gSpriteAnimations_322_68.s" - -gSpriteAnimations_322_69:: @ 080FDEDB - .include "animations/gSpriteAnimations_322_69.s" - -gSpriteAnimations_322_26:: @ 080FDEE0 - .include "animations/gSpriteAnimations_322_26.s" - -gSpriteAnimations_322_64:: @ 080FDEE5 - .include "animations/gSpriteAnimations_322_64.s" - -gSpriteAnimations_322_65:: @ 080FDEEA - .include "animations/gSpriteAnimations_322_65.s" - -gSpriteAnimations_322_66:: @ 080FDEEF - .include "animations/gSpriteAnimations_322_66.s" - -gSpriteAnimations_322_67:: @ 080FDEF4 - .include "animations/gSpriteAnimations_322_67.s" - -gSpriteAnimations_322_71:: @ 080FDEF9 - .include "animations/gSpriteAnimations_322_71.s" - -gSpriteAnimations_322_81:: @ 080FDEFE - .include "animations/gSpriteAnimations_322_81.s" - -gSpriteAnimations_322_82:: @ 080FDF03 - .include "animations/gSpriteAnimations_322_82.s" - -gSpriteAnimations_322_83:: @ 080FDF08 - .include "animations/gSpriteAnimations_322_83.s" - -gSpriteAnimations_322_84:: @ 080FDF0D - .include "animations/gSpriteAnimations_322_84.s" - -gSpriteAnimations_322_95:: @ 080FDF12 - .include "animations/gSpriteAnimations_322_95.s" - -gSpriteAnimations_322_96:: @ 080FDF17 - .include "animations/gSpriteAnimations_322_96.s" - -gSpriteAnimations_322_98:: @ 080FDF28 - .include "animations/gSpriteAnimations_322_98.s" - -gSpriteAnimations_322_99:: @ 080FDF45 - .include "animations/gSpriteAnimations_322_99.s" - -gSpriteAnimations_322_87:: @ 080FDF4A - .include "animations/gSpriteAnimations_322_87.s" - -gSpriteAnimations_322_104:: @ 080FDF4F - .include "animations/gSpriteAnimations_322_104.s" - -gSpriteAnimations_322_105:: @ 080FDF54 - .include "animations/gSpriteAnimations_322_105.s" - -gSpriteAnimations_322_106:: @ 080FDF59 - .include "animations/gSpriteAnimations_322_106.s" - -gSpriteAnimations_322_107:: @ 080FDF5E - .include "animations/gSpriteAnimations_322_107.s" - -gSpriteAnimations_322_93:: @ 080FDF63 - .include "animations/gSpriteAnimations_322_93.s" - -gSpriteAnimations_322_94:: @ 080FDF68 - .include "animations/gSpriteAnimations_322_94.s" - -gSpriteAnimations_322_63:: @ 080FDF6D - .include "animations/gSpriteAnimations_322_63.s" - -gSpriteAnimations_322_100:: @ 080FDF72 - .include "animations/gSpriteAnimations_322_100.s" - -gSpriteAnimations_322_101:: @ 080FDF77 - .include "animations/gSpriteAnimations_322_101.s" - -gSpriteAnimations_322_102:: @ 080FDF7C - .include "animations/gSpriteAnimations_322_102.s" - -gSpriteAnimations_322_103:: @ 080FDF81 - .include "animations/gSpriteAnimations_322_103.s" - -gSpriteAnimations_322_91:: @ 080FDF86 - .include "animations/gSpriteAnimations_322_91.s" - -gSpriteAnimations_322_92:: @ 080FDF8F - .include "animations/gSpriteAnimations_322_92.s" - -gSpriteAnimations_322_108:: @ 080FDF94 - .include "animations/gSpriteAnimations_322_108.s" - -gSpriteAnimations_322_109:: @ 080FDF99 - .include "animations/gSpriteAnimations_322_109.s" - -gSpriteAnimations_322_110:: @ 080FDF9E - .include "animations/gSpriteAnimations_322_110.s" - -gSpriteAnimations_322_111:: @ 080FDFA3 - .include "animations/gSpriteAnimations_322_111.s" - -gSpriteAnimations_322_112:: @ 080FDFA8 - .include "animations/gSpriteAnimations_322_112.s" - -gSpriteAnimations_322_72:: @ 080FDFC1 - .include "animations/gSpriteAnimations_322_72.s" - -gSpriteAnimations_322_97:: @ 080FDFC6 - .include "animations/gSpriteAnimations_322_97.s" - -gSpriteAnimations_322_61:: @ 080FDFCB - .include "animations/gSpriteAnimations_322_61.s" - -gSpriteAnimations_322_62:: @ 080FDFD0 - .include "animations/gSpriteAnimations_322_62.s" - -gSpriteAnimations_322:: @ 080FDFD8 - .4byte gSpriteAnimations_322_0 - .4byte gSpriteAnimations_322_1 - .4byte gSpriteAnimations_322_2 - .4byte gSpriteAnimations_322_3 - .4byte gSpriteAnimations_322_4 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_6 - .4byte gSpriteAnimations_322_7 - .4byte gSpriteAnimations_322_8 - .4byte gSpriteAnimations_322_9 - .4byte gSpriteAnimations_322_10 - .4byte gSpriteAnimations_322_11 - .4byte gSpriteAnimations_322_12 - .4byte gSpriteAnimations_322_13 - .4byte gSpriteAnimations_322_14 - .4byte gSpriteAnimations_322_15 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_17 - .4byte gSpriteAnimations_322_18 - .4byte gSpriteAnimations_322_19 - .4byte gSpriteAnimations_322_20 - .4byte gSpriteAnimations_322_21 - .4byte gSpriteAnimations_322_22 - .4byte gSpriteAnimations_322_23 - .4byte gSpriteAnimations_322_24 - .4byte gSpriteAnimations_322_25 - .4byte gSpriteAnimations_322_26 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_28 - .4byte gSpriteAnimations_322_28 - .4byte gSpriteAnimations_322_28 - .4byte gSpriteAnimations_322_28 - .4byte gSpriteAnimations_322_28 - .4byte gSpriteAnimations_322_33 - .4byte gSpriteAnimations_322_34 - .4byte gSpriteAnimations_322_35 - .4byte gSpriteAnimations_322_36 - .4byte gSpriteAnimations_322_37 - .4byte gSpriteAnimations_322_38 - .4byte gSpriteAnimations_322_39 - .4byte gSpriteAnimations_322_40 - .4byte gSpriteAnimations_322_41 - .4byte gSpriteAnimations_322_42 - .4byte gSpriteAnimations_322_43 - .4byte gSpriteAnimations_322_44 - .4byte gSpriteAnimations_322_45 - .4byte gSpriteAnimations_322_46 - .4byte gSpriteAnimations_322_47 - .4byte gSpriteAnimations_322_48 - .4byte gSpriteAnimations_322_49 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_52 - .4byte gSpriteAnimations_322_53 - .4byte gSpriteAnimations_322_54 - .4byte gSpriteAnimations_322_55 - .4byte gSpriteAnimations_322_25 - .4byte gSpriteAnimations_322_24 - .4byte gSpriteAnimations_322_58 - .4byte gSpriteAnimations_322_59 - .4byte gSpriteAnimations_322_60 - .4byte gSpriteAnimations_322_61 - .4byte gSpriteAnimations_322_62 - .4byte gSpriteAnimations_322_63 - .4byte gSpriteAnimations_322_64 - .4byte gSpriteAnimations_322_65 - .4byte gSpriteAnimations_322_66 - .4byte gSpriteAnimations_322_67 - .4byte gSpriteAnimations_322_68 - .4byte gSpriteAnimations_322_69 - .4byte gSpriteAnimations_322_26 - .4byte gSpriteAnimations_322_71 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_72 - .4byte gSpriteAnimations_322_71 - .4byte gSpriteAnimations_322_81 - .4byte gSpriteAnimations_322_82 - .4byte gSpriteAnimations_322_83 - .4byte gSpriteAnimations_322_84 - .4byte gSpriteAnimations_322_84 - .4byte gSpriteAnimations_322_84 - .4byte gSpriteAnimations_322_87 - .4byte gSpriteAnimations_322_87 - .4byte gSpriteAnimations_322_87 - .4byte gSpriteAnimations_322_5 - .4byte gSpriteAnimations_322_91 - .4byte gSpriteAnimations_322_92 - .4byte gSpriteAnimations_322_93 - .4byte gSpriteAnimations_322_94 - .4byte gSpriteAnimations_322_95 - .4byte gSpriteAnimations_322_96 - .4byte gSpriteAnimations_322_97 - .4byte gSpriteAnimations_322_98 - .4byte gSpriteAnimations_322_99 - .4byte gSpriteAnimations_322_100 - .4byte gSpriteAnimations_322_101 - .4byte gSpriteAnimations_322_102 - .4byte gSpriteAnimations_322_103 - .4byte gSpriteAnimations_322_104 - .4byte gSpriteAnimations_322_105 - .4byte gSpriteAnimations_322_106 - .4byte gSpriteAnimations_322_107 - .4byte gSpriteAnimations_322_108 - .4byte gSpriteAnimations_322_109 - .4byte gSpriteAnimations_322_110 - .4byte gSpriteAnimations_322_111 - .4byte gSpriteAnimations_322_112 - .4byte gSpriteAnimations_322_112 - .4byte gSpriteAnimations_322_112 - .4byte gSpriteAnimations_322_0 - .4byte gSpriteAnimations_322_0 - .4byte gSpriteAnimations_322_0 - .4byte 00000000 - -gUnk_080FE1B4:: @ 080FE1B4 - .incbin "data_080FC8A4/gUnk_080FE1B4.bin" - -gUnk_080FE1C6:: @ 080FE1C6 - .incbin "data_080FC8A4/gUnk_080FE1C6.bin" - -gUnk_080FE1DD:: @ 080FE1DD - .incbin "data_080FC8A4/gUnk_080FE1DD.bin" - -gUnk_080FE2A0:: @ 080FE2A0 - .4byte sub_0805488C - .4byte sub_080548E8 - .4byte sub_08054920 - -gUnk_080FE2AC:: @ 080FE2AC - .4byte sub_08055D80 - .4byte sub_08054E00 - .4byte sub_080558EC - .4byte sub_08054CE8 - .4byte sub_08054C04 - .4byte sub_08055168 - .4byte sub_080552FC - .4byte sub_08055BB0 - .4byte sub_08055414 - .4byte sub_080559E0 - .4byte sub_0805559C - .4byte sub_080554FC - .4byte sub_08055818 - .4byte sub_08055094 - .4byte sub_080550F8 - .4byte sub_080556F4 - .4byte sub_08055038 - .4byte sub_08054F90 - .4byte sub_08054F90 - .4byte sub_08054D90 - .4byte sub_08055888 - .4byte sub_08055690 - .4byte sub_08055E08 - .4byte sub_080557B4 - .4byte sub_08055CD8 - .4byte sub_08055AD0 - .4byte sub_08055D80 - .4byte sub_08055D80 - .4byte sub_08055D80 - -gUnk_080FE320:: @ 080FE320 -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FE320_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FE320_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FE320_2_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FE320_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FE320_4_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FE320_5_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FE320_6_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FE320_7_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080FEAC8:: @ 080FEAC8 - .incbin "data_080FC8A4/gUnk_080FEAC8.bin" -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEAC8_1_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEAC8_2_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FEAC8_3_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FEAC8_4_USA-DEMO_USA.bin" -.endif -.endif -.endif - -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEAC8_5_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEAC8_6_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FEAC8_7_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FEAC8_8_USA-DEMO_USA.bin" -.endif -.endif -.endif - - .incbin "data_080FC8A4/gUnk_080FEAC8_9.bin" - -gUnk_080FEBE8:: @ 080FEBE8 - .incbin "data_080FC8A4/gUnk_080FEBE8.bin" - -gUnk_080FEC28:: @ 080FEC28 - .incbin "data_080FC8A4/gUnk_080FEC28.bin" - -gUnk_080FECC8:: @ 080FECC8 - .incbin "data_080FC8A4/gUnk_080FECC8.bin" - -gUnk_080FED18:: @ 080FED18 - .incbin "data_080FC8A4/gUnk_080FED18.bin" - -gUnk_080FED58:: @ 080FED58 - .incbin "data_080FC8A4/gUnk_080FED58.bin" - -gUnk_080FED98:: @ 080FED98 - .4byte gUnk_080FEDA4 - .4byte gUnk_080FEDDA - .4byte gUnk_080FEDF8 - -gUnk_080FEDA4:: @ 080FEDA4 - .incbin "data_080FC8A4/gUnk_080FEDA4.bin" - -gUnk_080FEDDA:: @ 080FEDDA - .incbin "data_080FC8A4/gUnk_080FEDDA.bin" - -gUnk_080FEDF8:: @ 080FEDF8 - .incbin "data_080FC8A4/gUnk_080FEDF8.bin" - -gUnk_080FEE18:: @ 080FEE18 - .incbin "data_080FC8A4/gUnk_080FEE18.bin" - -gUnk_080FEE38:: @ 080FEE38 - .incbin "data_080FC8A4/gUnk_080FEE38.bin" - -gUnk_080FEE48:: @ 080FEE48 - .incbin "data_080FC8A4/gUnk_080FEE48.bin" - -gUnk_080FEE58:: @ 080FEE58 -.ifdef JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEE58_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "data_080FC8A4/gUnk_080FEE58_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "data_080FC8A4/gUnk_080FEE58_2_EU.bin" -.else - .incbin "data_080FC8A4/gUnk_080FEE58_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080FEE78:: @ 080FEE78 - .incbin "data_080FC8A4/gUnk_080FEE78.bin" diff --git a/data/data_080FCAC8.s b/data/data_080FCAC8.s new file mode 100644 index 00000000..888bf0ca --- /dev/null +++ b/data/data_080FCAC8.s @@ -0,0 +1,1218 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gUnk_080FCB94:: @ 080FCB94 + .incbin "data_080FC8A4/gUnk_080FCB94.bin" + +gUnk_080FCBB4:: @ 080FCBB4 + .4byte sub_080535AC + .4byte sub_080535F4 + .4byte nullsub_481 + .4byte sub_08053618 + +gUnk_080FCBC4:: @ 080FCBC4 + .incbin "data_080FC8A4/gUnk_080FCBC4.bin" + .4byte script_08009A50 + .incbin "data_080FC8A4/gUnk_080FCBC4_1.bin" + .4byte script_08009A84 + .incbin "data_080FC8A4/gUnk_080FCBC4_2.bin" + .4byte script_08009AF8 + .incbin "data_080FC8A4/gUnk_080FCBC4_3.bin" + .4byte script_08009A34 + .incbin "data_080FC8A4/gUnk_080FCBC4_4.bin" + +gUnk_080FCC14:: @ 080FCC14 + .incbin "data_080FC8A4/gUnk_080FCC14.bin" + .4byte script_08009918 + .incbin "data_080FC8A4/gUnk_080FCC14_1.bin" + .4byte script_08009950 + .incbin "data_080FC8A4/gUnk_080FCC14_2.bin" + .4byte script_080099DC + .incbin "data_080FC8A4/gUnk_080FCC14_3.bin" + +gUnk_080FCC54:: @ 080FCC54 + .incbin "data_080FC8A4/gUnk_080FCC54.bin" + .4byte script_08009D6C + .incbin "data_080FC8A4/gUnk_080FCC54_1.bin" + +gUnk_080FCC84:: @ 080FCC84 + .incbin "data_080FC8A4/gUnk_080FCC84.bin" + +gUnk_080FCC9C:: @ 080FCC9C + .incbin "data_080FC8A4/gUnk_080FCC9C.bin" + +gUnk_080FCCB4:: @ 080FCCB4 + .4byte gUnk_080FCC84 + .incbin "data_080FC8A4/gUnk_080FCCB4.bin" + .4byte gUnk_080FCC84 + .incbin "data_080FC8A4/gUnk_080FCCB4_1.bin" + .4byte gUnk_080FCC9C + .incbin "data_080FC8A4/gUnk_080FCCB4_2.bin" + .4byte gUnk_080FCC9C + .incbin "data_080FC8A4/gUnk_080FCCB4_3.bin" + .4byte gUnk_080FCC84 + .incbin "data_080FC8A4/gUnk_080FCCB4_4.bin" + .4byte gUnk_080FCC84 + .incbin "data_080FC8A4/gUnk_080FCCB4_5.bin" + +gUnk_080FCCFC:: @ 080FCCFC + .4byte sub_08053758 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053904 + .4byte sub_08053974 + .4byte nullsub_482 + .4byte sub_080539BC + .4byte nullsub_482 + +gUnk_080FCD38:: @ 080FCD38 + .4byte sub_0805370C + .4byte nullsub_482 + +gUnk_080FCD40:: @ 080FCD40 + .4byte sub_08053758 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_08053800 + .4byte sub_08053894 + .4byte sub_080539F4 + .4byte sub_08053A1C + .4byte sub_08053A5C + .4byte sub_08053A90 + +gUnk_080FCD84:: @ 080FCD84 + .incbin "data_080FC8A4/gUnk_080FCD84.bin" + .4byte script_080153EC + .incbin "data_080FC8A4/gUnk_080FCD84_1.bin" + .4byte script_0801550C + .incbin "data_080FC8A4/gUnk_080FCD84_2.bin" + .4byte script_08015618 + .incbin "data_080FC8A4/gUnk_080FCD84_3.bin" + .4byte script_08015684 + .incbin "data_080FC8A4/gUnk_080FCD84_4.bin" + +gUnk_080FCDD4:: @ 080FCDD4 + .4byte sub_08053ACC + .4byte sub_08053B00 + .4byte sub_08053B10 + +gUnk_080FCDE0:: @ 080FCDE0 + .incbin "data_080FC8A4/gUnk_080FCDE0.bin" + .4byte script_08015CD4 + .incbin "data_080FC8A4/gUnk_080FCDE0_1.bin" + .4byte script_08015DF0 + .incbin "data_080FC8A4/gUnk_080FCDE0_2.bin" + .4byte script_08015E58 + .incbin "data_080FC8A4/gUnk_080FCDE0_3.bin" + .4byte script_08015FA4 + .incbin "data_080FC8A4/gUnk_080FCDE0_4.bin" + +gUnk_080FCE30:: @ 080FCE30 + .incbin "data_080FC8A4/gUnk_080FCE30.bin" + .4byte script_08015F08 + .incbin "data_080FC8A4/gUnk_080FCE30_1.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_2.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_3.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_4.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_5.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_6.bin" + .4byte script_08015F3C + .incbin "data_080FC8A4/gUnk_080FCE30_7.bin" + +gUnk_080FCEB0:: @ 080FCEB0 + .4byte sub_08053B74 + .4byte sub_08053BAC + .4byte sub_08053BBC + +gUnk_080FCEBC:: @ 080FCEBC + .incbin "data_080FC8A4/gUnk_080FCEBC.bin" + .4byte script_0800DB18 + .incbin "data_080FC8A4/gUnk_080FCEBC_1.bin" + .4byte script_0800E58C + .incbin "data_080FC8A4/gUnk_080FCEBC_2.bin" + +gUnk_080FCEEC:: @ 080FCEEC + .4byte sub_08053C20 + .4byte nullsub_483 + .4byte sub_08053C60 + +gUnk_080FCEF8:: @ 080FCEF8 + .4byte sub_08053CAC + .4byte sub_08053CAC + .4byte sub_08053E58 + +gUnk_080FCF04:: @ 080FCF04 + .4byte gUnk_080FCF24 + .4byte 0x00001c58 + .4byte gUnk_080FCF44 + .4byte 0x00002058 + .4byte gUnk_080FCF64 + .4byte 0x00001d58 + .4byte gUnk_080FCF84 + .4byte 0x00002258 + +gUnk_080FCF24:: @ 080FCF24 + .incbin "data_080FC8A4/gUnk_080FCF24.bin" + +gUnk_080FCF44:: @ 080FCF44 + .incbin "data_080FC8A4/gUnk_080FCF44.bin" + +gUnk_080FCF64:: @ 080FCF64 + .incbin "data_080FC8A4/gUnk_080FCF64.bin" + +gUnk_080FCF84:: @ 080FCF84 + .incbin "data_080FC8A4/gUnk_080FCF84.bin" + +gUnk_080FCFA4:: @ 080FCFA4 + .4byte sub_08053CC8 + .4byte sub_08053D34 + .4byte sub_08053D90 + .4byte sub_08053DB4 + .4byte sub_08053E30 + +gUnk_080FCFB8:: @ 080FCFB8 + .4byte gUnk_080FCFE8 + .4byte gUnk_080FD008 + .4byte 0x10100e88 + .4byte gUnk_080FD028 + .4byte gUnk_080FD048 + .4byte 0x10101088 + .4byte gUnk_080FD078 + .4byte gUnk_080FD098 + .4byte 0x10101388 + .4byte gUnk_080FD0C8 + .4byte gUnk_080FD0E8 + .4byte 0x10101588 + +gUnk_080FCFE8:: @ 080FCFE8 + .incbin "data_080FC8A4/gUnk_080FCFE8.bin" + +gUnk_080FD008:: @ 080FD008 + .incbin "data_080FC8A4/gUnk_080FD008.bin" + +gUnk_080FD028:: @ 080FD028 + .incbin "data_080FC8A4/gUnk_080FD028.bin" + +gUnk_080FD048:: @ 080FD048 + .incbin "data_080FC8A4/gUnk_080FD048.bin" + +gUnk_080FD078:: @ 080FD078 + .incbin "data_080FC8A4/gUnk_080FD078.bin" + +gUnk_080FD098:: @ 080FD098 + .incbin "data_080FC8A4/gUnk_080FD098.bin" + +gUnk_080FD0C8:: @ 080FD0C8 + .incbin "data_080FC8A4/gUnk_080FD0C8.bin" + +gUnk_080FD0E8:: @ 080FD0E8 + .incbin "data_080FC8A4/gUnk_080FD0E8.bin" + +gUnk_080FD108:: @ 080FD108 + .4byte sub_08053E74 + .4byte sub_08053EC4 + .4byte sub_08053EFC + .4byte sub_08053F20 + .4byte sub_08053EC4 + .4byte sub_08053EFC + .4byte sub_08053F20 + .4byte sub_08053EC4 + .4byte sub_08053EFC + .4byte sub_08053F20 + .4byte sub_08053EC4 + .4byte sub_08053F88 + +gUnk_080FD138:: @ 080FD138 + .4byte sub_080536D4 + .4byte sub_08053B58 + .4byte sub_0805373C + .4byte sub_08053AB0 + .4byte sub_080536F0 + .4byte sub_08053C04 + +gHitbox_0:: @ 080FD150 + .incbin "data_080FC8A4/gHitbox_0.bin" + +gHitbox_30:: @ 080FD158 + .incbin "data_080FC8A4/gHitbox_30.bin" + +gHitbox_31:: @ 080FD160 + .incbin "data_080FC8A4/gHitbox_31.bin" + +gHitbox_1:: @ 080FD168 + .incbin "data_080FC8A4/gHitbox_1.bin" + +gHitbox_2:: @ 080FD170 + .incbin "data_080FC8A4/gHitbox_2.bin" + +gUnk_080FD178:: @ 080FD178 + .incbin "data_080FC8A4/gUnk_080FD178.bin" + +gHitbox_3:: @ 080FD180 + .incbin "data_080FC8A4/gHitbox_3.bin" + +gHitbox_4:: @ 080FD188 + .incbin "data_080FC8A4/gHitbox_4.bin" + +gUnk_080FD190:: @ 080FD190 + .incbin "data_080FC8A4/gUnk_080FD190.bin" + +gHitbox_5:: @ 080FD198 + .incbin "data_080FC8A4/gHitbox_5.bin" + +gHitbox_6:: @ 080FD1A0 + .incbin "data_080FC8A4/gHitbox_6.bin" + +gUnk_080FD1A8:: @ 080FD1A8 + .incbin "data_080FC8A4/gUnk_080FD1A8.bin" + +gUnk_080FD1B4:: @ 080FD1B4 + .incbin "data_080FC8A4/gUnk_080FD1B4.bin" + +gHitbox_7:: @ 080FD1C4 + .incbin "data_080FC8A4/gHitbox_7.bin" + +gHitbox_8:: @ 080FD1CC + .incbin "data_080FC8A4/gHitbox_8.bin" + +gUnk_080FD1D4:: @ 080FD1D4 + .incbin "data_080FC8A4/gUnk_080FD1D4.bin" + +gUnk_080FD1DC:: @ 080FD1DC + .incbin "data_080FC8A4/gUnk_080FD1DC.bin" + +gUnk_080FD1E4:: @ 080FD1E4 + .incbin "data_080FC8A4/gUnk_080FD1E4.bin" + +gUnk_080FD1EC:: @ 080FD1EC + .incbin "data_080FC8A4/gUnk_080FD1EC.bin" + +gUnk_080FD1F4:: @ 080FD1F4 + .incbin "data_080FC8A4/gUnk_080FD1F4.bin" + +gUnk_080FD1FC:: @ 080FD1FC + .incbin "data_080FC8A4/gUnk_080FD1FC.bin" + +gUnk_080FD204:: @ 080FD204 + .incbin "data_080FC8A4/gUnk_080FD204.bin" + +gUnk_080FD20C:: @ 080FD20C + .incbin "data_080FC8A4/gUnk_080FD20C.bin" + +gUnk_080FD214:: @ 080FD214 + .incbin "data_080FC8A4/gUnk_080FD214.bin" + +gUnk_080FD21C:: @ 080FD21C + .incbin "data_080FC8A4/gUnk_080FD21C.bin" + +gUnk_080FD224:: @ 080FD224 + .incbin "data_080FC8A4/gUnk_080FD224.bin" + +gUnk_080FD22C:: @ 080FD22C + .incbin "data_080FC8A4/gUnk_080FD22C.bin" + +gUnk_080FD238:: @ 080FD238 + .incbin "data_080FC8A4/gUnk_080FD238.bin" + +gUnk_080FD240:: @ 080FD240 + .incbin "data_080FC8A4/gUnk_080FD240.bin" + +gUnk_080FD248:: @ 080FD248 + .incbin "data_080FC8A4/gUnk_080FD248.bin" + +gHitbox_9:: @ 080FD250 + .incbin "data_080FC8A4/gHitbox_9.bin" + +gUnk_080FD258:: @ 080FD258 + .incbin "data_080FC8A4/gUnk_080FD258.bin" + +gUnk_080FD260:: @ 080FD260 + .incbin "data_080FC8A4/gUnk_080FD260.bin" + +gHitbox_10:: @ 080FD268 + .incbin "data_080FC8A4/gHitbox_10.bin" + +gUnk_080FD270:: @ 080FD270 + .incbin "data_080FC8A4/gUnk_080FD270.bin" + +gUnk_080FD278:: @ 080FD278 + .incbin "data_080FC8A4/gUnk_080FD278.bin" + +gUnk_080FD280:: @ 080FD280 + .incbin "data_080FC8A4/gUnk_080FD280.bin" + +gUnk_080FD288:: @ 080FD288 + .incbin "data_080FC8A4/gUnk_080FD288.bin" + +gUnk_080FD290:: @ 080FD290 + .incbin "data_080FC8A4/gUnk_080FD290.bin" + +gUnk_080FD298:: @ 080FD298 + .incbin "data_080FC8A4/gUnk_080FD298.bin" + +gUnk_080FD2A0:: @ 080FD2A0 + .incbin "data_080FC8A4/gUnk_080FD2A0.bin" + +gUnk_080FD2A8:: @ 080FD2A8 + .incbin "data_080FC8A4/gUnk_080FD2A8.bin" + +gHitbox_11:: @ 080FD2B0 + .incbin "data_080FC8A4/gHitbox_11.bin" + +gHitbox_12:: @ 080FD2B8 + .incbin "data_080FC8A4/gHitbox_12.bin" + +gHitbox_13:: @ 080FD2C0 + .incbin "data_080FC8A4/gHitbox_13.bin" + +gHitbox_14:: @ 080FD2C8 + .incbin "data_080FC8A4/gHitbox_14.bin" + +gUnk_080FD2D0:: @ 080FD2D0 + .incbin "data_080FC8A4/gUnk_080FD2D0.bin" + +gUnk_080FD2D8:: @ 080FD2D8 + .incbin "data_080FC8A4/gUnk_080FD2D8.bin" + +gUnk_080FD2E0:: @ 080FD2E0 + .incbin "data_080FC8A4/gUnk_080FD2E0.bin" + +gUnk_080FD2E8:: @ 080FD2E8 + .incbin "data_080FC8A4/gUnk_080FD2E8.bin" + +gUnk_080FD2F0:: @ 080FD2F0 + .incbin "data_080FC8A4/gUnk_080FD2F0.bin" + +gHitbox_15:: @ 080FD2F8 + .incbin "data_080FC8A4/gHitbox_15.bin" + +gHitbox_16:: @ 080FD300 + .incbin "data_080FC8A4/gHitbox_16.bin" + +gUnk_080FD308:: @ 080FD308 + .incbin "data_080FC8A4/gUnk_080FD308.bin" + +gUnk_080FD310:: @ 080FD310 + .incbin "data_080FC8A4/gUnk_080FD310.bin" + +gHitbox_17:: @ 080FD318 + .incbin "data_080FC8A4/gHitbox_17.bin" + +gUnk_080FD320:: @ 080FD320 + .incbin "data_080FC8A4/gUnk_080FD320.bin" + +gUnk_080FD328:: @ 080FD328 + .incbin "data_080FC8A4/gUnk_080FD328.bin" + +gUnk_080FD330:: @ 080FD330 + .incbin "data_080FC8A4/gUnk_080FD330.bin" + +gHitbox_18:: @ 080FD338 + .incbin "data_080FC8A4/gHitbox_18.bin" + +gUnk_080FD340:: @ 080FD340 + .incbin "data_080FC8A4/gUnk_080FD340.bin" + +gUnk_080FD34C:: @ 080FD34C + .incbin "data_080FC8A4/gUnk_080FD34C.bin" + +gUnk_080FD354:: @ 080FD354 + .incbin "data_080FC8A4/gUnk_080FD354.bin" + +gUnk_080FD35C:: @ 080FD35C + .incbin "data_080FC8A4/gUnk_080FD35C.bin" + +gUnk_080FD364:: @ 080FD364 + .incbin "data_080FC8A4/gUnk_080FD364.bin" + +gUnk_080FD36C:: @ 080FD36C + .incbin "data_080FC8A4/gUnk_080FD36C.bin" + +gUnk_080FD374:: @ 080FD374 + .incbin "data_080FC8A4/gUnk_080FD374.bin" + +gUnk_080FD37C:: @ 080FD37C + .incbin "data_080FC8A4/gUnk_080FD37C.bin" + +gUnk_080FD384:: @ 080FD384 + .incbin "data_080FC8A4/gUnk_080FD384.bin" + +gUnk_080FD38C:: @ 080FD38C + .incbin "data_080FC8A4/gUnk_080FD38C.bin" + +gUnk_080FD394:: @ 080FD394 + .incbin "data_080FC8A4/gUnk_080FD394.bin" + +gUnk_080FD39C:: @ 080FD39C + .incbin "data_080FC8A4/gUnk_080FD39C.bin" + +gUnk_080FD3A4:: @ 080FD3A4 + .incbin "data_080FC8A4/gUnk_080FD3A4.bin" + +gUnk_080FD3AC:: @ 080FD3AC + .incbin "data_080FC8A4/gUnk_080FD3AC.bin" + +gUnk_080FD3B4:: @ 080FD3B4 + .incbin "data_080FC8A4/gUnk_080FD3B4.bin" + +gUnk_080FD3BC:: @ 080FD3BC + .incbin "data_080FC8A4/gUnk_080FD3BC.bin" + +gUnk_080FD3C4:: @ 080FD3C4 + .incbin "data_080FC8A4/gUnk_080FD3C4.bin" + +gUnk_080FD3CC:: @ 080FD3CC + .incbin "data_080FC8A4/gUnk_080FD3CC.bin" + +gUnk_080FD3DC:: @ 080FD3DC + .incbin "data_080FC8A4/gUnk_080FD3DC.bin" + +gUnk_080FD3E4:: @ 080FD3E4 + .incbin "data_080FC8A4/gUnk_080FD3E4.bin" + +gUnk_080FD3EC:: @ 080FD3EC + .incbin "data_080FC8A4/gUnk_080FD3EC.bin" + +gUnk_080FD3F4:: @ 080FD3F4 + .incbin "data_080FC8A4/gUnk_080FD3F4.bin" + +gUnk_080FD3FC:: @ 080FD3FC + .incbin "data_080FC8A4/gUnk_080FD3FC.bin" + +gUnk_080FD408:: @ 080FD408 + .incbin "data_080FC8A4/gUnk_080FD408.bin" + +gHitbox_19:: @ 080FD410 + .incbin "data_080FC8A4/gHitbox_19.bin" + +gUnk_080FD41C:: @ 080FD41C + .incbin "data_080FC8A4/gUnk_080FD41C.bin" + +gUnk_080FD424:: @ 080FD424 + .incbin "data_080FC8A4/gUnk_080FD424.bin" + +gUnk_080FD42C:: @ 080FD42C + .incbin "data_080FC8A4/gUnk_080FD42C.bin" + +gUnk_080FD434:: @ 080FD434 + .incbin "data_080FC8A4/gUnk_080FD434.bin" + +gUnk_080FD43C:: @ 080FD43C + .incbin "data_080FC8A4/gUnk_080FD43C.bin" + +gHitbox_20:: @ 080FD448 + .incbin "data_080FC8A4/gHitbox_20.bin" + +gUnk_080FD450:: @ 080FD450 + .incbin "data_080FC8A4/gUnk_080FD450.bin" + +gHitbox_21:: @ 080FD458 + .incbin "data_080FC8A4/gHitbox_21.bin" + +gHitbox_22:: @ 080FD460 + .incbin "data_080FC8A4/gHitbox_22.bin" + +gHitbox_23:: @ 080FD468 + .incbin "data_080FC8A4/gHitbox_23.bin" + +gHitbox_32:: @ 080FD470 + .incbin "data_080FC8A4/gHitbox_32.bin" + +gHitbox_24:: @ 080FD480 + .incbin "data_080FC8A4/gHitbox_24.bin" + +gUnk_080FD488:: @ 080FD488 + .incbin "data_080FC8A4/gUnk_080FD488.bin" + +gUnk_080FD490:: @ 080FD490 + .incbin "data_080FC8A4/gUnk_080FD490.bin" + +gHitbox_25:: @ 080FD498 + .incbin "data_080FC8A4/gHitbox_25.bin" + +gHitbox_26:: @ 080FD4A4 + .incbin "data_080FC8A4/gHitbox_26.bin" + +gUnk_080FD4B8:: @ 080FD4B8 + .incbin "data_080FC8A4/gUnk_080FD4B8.bin" + +gUnk_080FD4C0:: @ 080FD4C0 + .incbin "data_080FC8A4/gUnk_080FD4C0.bin" + +gUnk_080FD4C8:: @ 080FD4C8 + .incbin "data_080FC8A4/gUnk_080FD4C8.bin" + +gUnk_080FD4D0:: @ 080FD4D0 + .incbin "data_080FC8A4/gUnk_080FD4D0.bin" + +gUnk_080FD4D8:: @ 080FD4D8 + .incbin "data_080FC8A4/gUnk_080FD4D8.bin" + +gUnk_080FD4E0:: @ 080FD4E0 + .incbin "data_080FC8A4/gUnk_080FD4E0.bin" + +gUnk_080FD4E8:: @ 080FD4E8 + .incbin "data_080FC8A4/gUnk_080FD4E8.bin" + +gUnk_080FD4F0:: @ 080FD4F0 + .incbin "data_080FC8A4/gUnk_080FD4F0.bin" + +gUnk_080FD4F8:: @ 080FD4F8 + .incbin "data_080FC8A4/gUnk_080FD4F8.bin" + +gUnk_080FD500:: @ 080FD500 + .incbin "data_080FC8A4/gUnk_080FD500.bin" + +gUnk_080FD508:: @ 080FD508 + .incbin "data_080FC8A4/gUnk_080FD508.bin" + +gUnk_080FD510:: @ 080FD510 + .incbin "data_080FC8A4/gUnk_080FD510.bin" + +gUnk_080FD518:: @ 080FD518 + .incbin "data_080FC8A4/gUnk_080FD518.bin" + +gUnk_080FD520:: @ 080FD520 + .incbin "data_080FC8A4/gUnk_080FD520.bin" + +gHitbox_27:: @ 080FD528 + .incbin "data_080FC8A4/gHitbox_27.bin" + +gUnk_080FD530:: @ 080FD530 + .incbin "data_080FC8A4/gUnk_080FD530.bin" + +gUnk_080FD538:: @ 080FD538 + .incbin "data_080FC8A4/gUnk_080FD538.bin" + +gUnk_080FD544:: @ 080FD544 + .incbin "data_080FC8A4/gUnk_080FD544.bin" + +gHitbox_28:: @ 080FD54C + .incbin "data_080FC8A4/gHitbox_28.bin" + +gUnk_080FD558:: @ 080FD558 + .incbin "data_080FC8A4/gUnk_080FD558.bin" + +gUnk_080FD560:: @ 080FD560 + .incbin "data_080FC8A4/gUnk_080FD560.bin" + +gHitbox_29:: @ 080FD568 + .incbin "data_080FC8A4/gHitbox_29.bin" + +gUnk_080FD570:: @ 080FD570 + .incbin "data_080FC8A4/gUnk_080FD570.bin" + +gUnk_080FD578:: @ 080FD578 + .incbin "data_080FC8A4/gUnk_080FD578.bin" + +gUnk_080FD580:: @ 080FD580 + .incbin "data_080FC8A4/gUnk_080FD580.bin" + +gUnk_080FD588:: @ 080FD588 + .incbin "data_080FC8A4/gUnk_080FD588.bin" + +gWalletSizes:: @ 080FD590 + .incbin "data_080FC8A4/gWalletSizes.bin" + +gBombBagSizes:: @ 080FD5A0 + .incbin "data_080FC8A4/gBombBagSizes.bin" + +gQuiverSizes:: @ 080FD5A4 + .incbin "data_080FC8A4/gQuiverSizes.bin" + +gUnk_080FD5A8:: @ 080FD5A8 + .incbin "data_080FC8A4/gUnk_080FD5A8.bin" + +gUnk_080FD5B4:: @ 080FD5B4 + .incbin "data_080FC8A4/gUnk_080FD5B4.bin" + +gUnk_080FD964:: @ 080FD964 +.ifdef EU + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FD964_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FD964_1_USA-JP-DEMO_USA-DEMO_JP.bin" +.endif + +gSpriteAnimations_322_0:: @ 080FDD14 + .include "animations/gSpriteAnimations_322_0.s" + +gSpriteAnimations_322_1:: @ 080FDD19 + .include "animations/gSpriteAnimations_322_1.s" + +gSpriteAnimations_322_2:: @ 080FDD1E + .include "animations/gSpriteAnimations_322_2.s" + +gSpriteAnimations_322_3:: @ 080FDD23 + .include "animations/gSpriteAnimations_322_3.s" + +gSpriteAnimations_322_4:: @ 080FDD28 + .include "animations/gSpriteAnimations_322_4.s" + +gSpriteAnimations_322_6:: @ 080FDD2D + .include "animations/gSpriteAnimations_322_6.s" + +gSpriteAnimations_322_7:: @ 080FDD32 + .include "animations/gSpriteAnimations_322_7.s" + +gSpriteAnimations_322_8:: @ 080FDD37 + .include "animations/gSpriteAnimations_322_8.s" + +gSpriteAnimations_322_9:: @ 080FDD48 + .include "animations/gSpriteAnimations_322_9.s" + +gSpriteAnimations_322_10:: @ 080FDD4D + .include "animations/gSpriteAnimations_322_10.s" + +gSpriteAnimations_322_11:: @ 080FDD52 + .include "animations/gSpriteAnimations_322_11.s" + +gSpriteAnimations_322_12:: @ 080FDD57 + .include "animations/gSpriteAnimations_322_12.s" + +gSpriteAnimations_322_13:: @ 080FDD5C + .include "animations/gSpriteAnimations_322_13.s" + +gSpriteAnimations_322_14:: @ 080FDD61 + .include "animations/gSpriteAnimations_322_14.s" + +gSpriteAnimations_322_15:: @ 080FDD92 + .include "animations/gSpriteAnimations_322_15.s" + +gSpriteAnimations_322_5:: @ 080FDD97 + .include "animations/gSpriteAnimations_322_5.s" + +gSpriteAnimations_322_17:: @ 080FDDA8 + .include "animations/gSpriteAnimations_322_17.s" + +gSpriteAnimations_322_18:: @ 080FDDAD + .include "animations/gSpriteAnimations_322_18.s" + +gSpriteAnimations_322_19:: @ 080FDDB2 + .include "animations/gSpriteAnimations_322_19.s" + +gSpriteAnimations_322_20:: @ 080FDDB7 + .include "animations/gSpriteAnimations_322_20.s" + +gSpriteAnimations_322_21:: @ 080FDDBC + .include "animations/gSpriteAnimations_322_21.s" + +gSpriteAnimations_322_22:: @ 080FDDC1 + .include "animations/gSpriteAnimations_322_22.s" + +gSpriteAnimations_322_23:: @ 080FDDC6 + .include "animations/gSpriteAnimations_322_23.s" + +gSpriteAnimations_322_28:: @ 080FDDCB + .include "animations/gSpriteAnimations_322_28.s" + +gSpriteAnimations_322_38:: @ 080FDDD0 + .include "animations/gSpriteAnimations_322_38.s" + +gSpriteAnimations_322_39:: @ 080FDDD5 + .include "animations/gSpriteAnimations_322_39.s" + +gSpriteAnimations_322_34:: @ 080FDDDA + .include "animations/gSpriteAnimations_322_34.s" + +gSpriteAnimations_322_35:: @ 080FDDDF + .include "animations/gSpriteAnimations_322_35.s" + +gSpriteAnimations_322_40:: @ 080FDDE4 + .include "animations/gSpriteAnimations_322_40.s" + +gSpriteAnimations_322_41:: @ 080FDDF5 + .include "animations/gSpriteAnimations_322_41.s" + +gSpriteAnimations_322_42:: @ 080FDE0E + .include "animations/gSpriteAnimations_322_42.s" + +gSpriteAnimations_322_43:: @ 080FDE27 + .include "animations/gSpriteAnimations_322_43.s" + +gSpriteAnimations_322_44:: @ 080FDE40 + .include "animations/gSpriteAnimations_322_44.s" + +gSpriteAnimations_322_45:: @ 080FDE59 + .include "animations/gSpriteAnimations_322_45.s" + +gSpriteAnimations_322_46:: @ 080FDE72 + .include "animations/gSpriteAnimations_322_46.s" + +gSpriteAnimations_322_36:: @ 080FDE8B + .include "animations/gSpriteAnimations_322_36.s" + +gSpriteAnimations_322_37:: @ 080FDE90 + .include "animations/gSpriteAnimations_322_37.s" + +gSpriteAnimations_322_54:: @ 080FDE95 + .include "animations/gSpriteAnimations_322_54.s" + +gSpriteAnimations_322_33:: @ 080FDE9A + .include "animations/gSpriteAnimations_322_33.s" + +gSpriteAnimations_322_47:: @ 080FDE9F + .include "animations/gSpriteAnimations_322_47.s" + +gSpriteAnimations_322_48:: @ 080FDEA4 + .include "animations/gSpriteAnimations_322_48.s" + +gSpriteAnimations_322_49:: @ 080FDEA9 + .include "animations/gSpriteAnimations_322_49.s" + +gSpriteAnimations_322_52:: @ 080FDEAE + .include "animations/gSpriteAnimations_322_52.s" + +gSpriteAnimations_322_53:: @ 080FDEB3 + .include "animations/gSpriteAnimations_322_53.s" + +gSpriteAnimations_322_24:: @ 080FDEB8 + .include "animations/gSpriteAnimations_322_24.s" + +gSpriteAnimations_322_58:: @ 080FDEBD + .include "animations/gSpriteAnimations_322_58.s" + +gSpriteAnimations_322_59:: @ 080FDEC2 + .include "animations/gSpriteAnimations_322_59.s" + +gSpriteAnimations_322_25:: @ 080FDEC7 + .include "animations/gSpriteAnimations_322_25.s" + +gSpriteAnimations_322_60:: @ 080FDECC + .include "animations/gSpriteAnimations_322_60.s" + +gSpriteAnimations_322_55:: @ 080FDED1 + .include "animations/gSpriteAnimations_322_55.s" + +gSpriteAnimations_322_68:: @ 080FDED6 + .include "animations/gSpriteAnimations_322_68.s" + +gSpriteAnimations_322_69:: @ 080FDEDB + .include "animations/gSpriteAnimations_322_69.s" + +gSpriteAnimations_322_26:: @ 080FDEE0 + .include "animations/gSpriteAnimations_322_26.s" + +gSpriteAnimations_322_64:: @ 080FDEE5 + .include "animations/gSpriteAnimations_322_64.s" + +gSpriteAnimations_322_65:: @ 080FDEEA + .include "animations/gSpriteAnimations_322_65.s" + +gSpriteAnimations_322_66:: @ 080FDEEF + .include "animations/gSpriteAnimations_322_66.s" + +gSpriteAnimations_322_67:: @ 080FDEF4 + .include "animations/gSpriteAnimations_322_67.s" + +gSpriteAnimations_322_71:: @ 080FDEF9 + .include "animations/gSpriteAnimations_322_71.s" + +gSpriteAnimations_322_81:: @ 080FDEFE + .include "animations/gSpriteAnimations_322_81.s" + +gSpriteAnimations_322_82:: @ 080FDF03 + .include "animations/gSpriteAnimations_322_82.s" + +gSpriteAnimations_322_83:: @ 080FDF08 + .include "animations/gSpriteAnimations_322_83.s" + +gSpriteAnimations_322_84:: @ 080FDF0D + .include "animations/gSpriteAnimations_322_84.s" + +gSpriteAnimations_322_95:: @ 080FDF12 + .include "animations/gSpriteAnimations_322_95.s" + +gSpriteAnimations_322_96:: @ 080FDF17 + .include "animations/gSpriteAnimations_322_96.s" + +gSpriteAnimations_322_98:: @ 080FDF28 + .include "animations/gSpriteAnimations_322_98.s" + +gSpriteAnimations_322_99:: @ 080FDF45 + .include "animations/gSpriteAnimations_322_99.s" + +gSpriteAnimations_322_87:: @ 080FDF4A + .include "animations/gSpriteAnimations_322_87.s" + +gSpriteAnimations_322_104:: @ 080FDF4F + .include "animations/gSpriteAnimations_322_104.s" + +gSpriteAnimations_322_105:: @ 080FDF54 + .include "animations/gSpriteAnimations_322_105.s" + +gSpriteAnimations_322_106:: @ 080FDF59 + .include "animations/gSpriteAnimations_322_106.s" + +gSpriteAnimations_322_107:: @ 080FDF5E + .include "animations/gSpriteAnimations_322_107.s" + +gSpriteAnimations_322_93:: @ 080FDF63 + .include "animations/gSpriteAnimations_322_93.s" + +gSpriteAnimations_322_94:: @ 080FDF68 + .include "animations/gSpriteAnimations_322_94.s" + +gSpriteAnimations_322_63:: @ 080FDF6D + .include "animations/gSpriteAnimations_322_63.s" + +gSpriteAnimations_322_100:: @ 080FDF72 + .include "animations/gSpriteAnimations_322_100.s" + +gSpriteAnimations_322_101:: @ 080FDF77 + .include "animations/gSpriteAnimations_322_101.s" + +gSpriteAnimations_322_102:: @ 080FDF7C + .include "animations/gSpriteAnimations_322_102.s" + +gSpriteAnimations_322_103:: @ 080FDF81 + .include "animations/gSpriteAnimations_322_103.s" + +gSpriteAnimations_322_91:: @ 080FDF86 + .include "animations/gSpriteAnimations_322_91.s" + +gSpriteAnimations_322_92:: @ 080FDF8F + .include "animations/gSpriteAnimations_322_92.s" + +gSpriteAnimations_322_108:: @ 080FDF94 + .include "animations/gSpriteAnimations_322_108.s" + +gSpriteAnimations_322_109:: @ 080FDF99 + .include "animations/gSpriteAnimations_322_109.s" + +gSpriteAnimations_322_110:: @ 080FDF9E + .include "animations/gSpriteAnimations_322_110.s" + +gSpriteAnimations_322_111:: @ 080FDFA3 + .include "animations/gSpriteAnimations_322_111.s" + +gSpriteAnimations_322_112:: @ 080FDFA8 + .include "animations/gSpriteAnimations_322_112.s" + +gSpriteAnimations_322_72:: @ 080FDFC1 + .include "animations/gSpriteAnimations_322_72.s" + +gSpriteAnimations_322_97:: @ 080FDFC6 + .include "animations/gSpriteAnimations_322_97.s" + +gSpriteAnimations_322_61:: @ 080FDFCB + .include "animations/gSpriteAnimations_322_61.s" + +gSpriteAnimations_322_62:: @ 080FDFD0 + .include "animations/gSpriteAnimations_322_62.s" + +gSpriteAnimations_322:: @ 080FDFD8 + .4byte gSpriteAnimations_322_0 + .4byte gSpriteAnimations_322_1 + .4byte gSpriteAnimations_322_2 + .4byte gSpriteAnimations_322_3 + .4byte gSpriteAnimations_322_4 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_6 + .4byte gSpriteAnimations_322_7 + .4byte gSpriteAnimations_322_8 + .4byte gSpriteAnimations_322_9 + .4byte gSpriteAnimations_322_10 + .4byte gSpriteAnimations_322_11 + .4byte gSpriteAnimations_322_12 + .4byte gSpriteAnimations_322_13 + .4byte gSpriteAnimations_322_14 + .4byte gSpriteAnimations_322_15 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_17 + .4byte gSpriteAnimations_322_18 + .4byte gSpriteAnimations_322_19 + .4byte gSpriteAnimations_322_20 + .4byte gSpriteAnimations_322_21 + .4byte gSpriteAnimations_322_22 + .4byte gSpriteAnimations_322_23 + .4byte gSpriteAnimations_322_24 + .4byte gSpriteAnimations_322_25 + .4byte gSpriteAnimations_322_26 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_28 + .4byte gSpriteAnimations_322_28 + .4byte gSpriteAnimations_322_28 + .4byte gSpriteAnimations_322_28 + .4byte gSpriteAnimations_322_28 + .4byte gSpriteAnimations_322_33 + .4byte gSpriteAnimations_322_34 + .4byte gSpriteAnimations_322_35 + .4byte gSpriteAnimations_322_36 + .4byte gSpriteAnimations_322_37 + .4byte gSpriteAnimations_322_38 + .4byte gSpriteAnimations_322_39 + .4byte gSpriteAnimations_322_40 + .4byte gSpriteAnimations_322_41 + .4byte gSpriteAnimations_322_42 + .4byte gSpriteAnimations_322_43 + .4byte gSpriteAnimations_322_44 + .4byte gSpriteAnimations_322_45 + .4byte gSpriteAnimations_322_46 + .4byte gSpriteAnimations_322_47 + .4byte gSpriteAnimations_322_48 + .4byte gSpriteAnimations_322_49 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_52 + .4byte gSpriteAnimations_322_53 + .4byte gSpriteAnimations_322_54 + .4byte gSpriteAnimations_322_55 + .4byte gSpriteAnimations_322_25 + .4byte gSpriteAnimations_322_24 + .4byte gSpriteAnimations_322_58 + .4byte gSpriteAnimations_322_59 + .4byte gSpriteAnimations_322_60 + .4byte gSpriteAnimations_322_61 + .4byte gSpriteAnimations_322_62 + .4byte gSpriteAnimations_322_63 + .4byte gSpriteAnimations_322_64 + .4byte gSpriteAnimations_322_65 + .4byte gSpriteAnimations_322_66 + .4byte gSpriteAnimations_322_67 + .4byte gSpriteAnimations_322_68 + .4byte gSpriteAnimations_322_69 + .4byte gSpriteAnimations_322_26 + .4byte gSpriteAnimations_322_71 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_72 + .4byte gSpriteAnimations_322_71 + .4byte gSpriteAnimations_322_81 + .4byte gSpriteAnimations_322_82 + .4byte gSpriteAnimations_322_83 + .4byte gSpriteAnimations_322_84 + .4byte gSpriteAnimations_322_84 + .4byte gSpriteAnimations_322_84 + .4byte gSpriteAnimations_322_87 + .4byte gSpriteAnimations_322_87 + .4byte gSpriteAnimations_322_87 + .4byte gSpriteAnimations_322_5 + .4byte gSpriteAnimations_322_91 + .4byte gSpriteAnimations_322_92 + .4byte gSpriteAnimations_322_93 + .4byte gSpriteAnimations_322_94 + .4byte gSpriteAnimations_322_95 + .4byte gSpriteAnimations_322_96 + .4byte gSpriteAnimations_322_97 + .4byte gSpriteAnimations_322_98 + .4byte gSpriteAnimations_322_99 + .4byte gSpriteAnimations_322_100 + .4byte gSpriteAnimations_322_101 + .4byte gSpriteAnimations_322_102 + .4byte gSpriteAnimations_322_103 + .4byte gSpriteAnimations_322_104 + .4byte gSpriteAnimations_322_105 + .4byte gSpriteAnimations_322_106 + .4byte gSpriteAnimations_322_107 + .4byte gSpriteAnimations_322_108 + .4byte gSpriteAnimations_322_109 + .4byte gSpriteAnimations_322_110 + .4byte gSpriteAnimations_322_111 + .4byte gSpriteAnimations_322_112 + .4byte gSpriteAnimations_322_112 + .4byte gSpriteAnimations_322_112 + .4byte gSpriteAnimations_322_0 + .4byte gSpriteAnimations_322_0 + .4byte gSpriteAnimations_322_0 + .4byte 00000000 + +gUnk_080FE1B4:: @ 080FE1B4 + .incbin "data_080FC8A4/gUnk_080FE1B4.bin" + +gUnk_080FE1C6:: @ 080FE1C6 + .incbin "data_080FC8A4/gUnk_080FE1C6.bin" + +gUnk_080FE1DD:: @ 080FE1DD + .incbin "data_080FC8A4/gUnk_080FE1DD.bin" + +gUnk_080FE2A0:: @ 080FE2A0 + .4byte sub_0805488C + .4byte sub_080548E8 + .4byte sub_08054920 + +gUnk_080FE2AC:: @ 080FE2AC + .4byte sub_08055D80 + .4byte sub_08054E00 + .4byte sub_080558EC + .4byte sub_08054CE8 + .4byte sub_08054C04 + .4byte sub_08055168 + .4byte sub_080552FC + .4byte sub_08055BB0 + .4byte sub_08055414 + .4byte sub_080559E0 + .4byte sub_0805559C + .4byte sub_080554FC + .4byte sub_08055818 + .4byte sub_08055094 + .4byte sub_080550F8 + .4byte sub_080556F4 + .4byte sub_08055038 + .4byte sub_08054F90 + .4byte sub_08054F90 + .4byte sub_08054D90 + .4byte sub_08055888 + .4byte sub_08055690 + .4byte sub_08055E08 + .4byte sub_080557B4 + .4byte sub_08055CD8 + .4byte sub_08055AD0 + .4byte sub_08055D80 + .4byte sub_08055D80 + .4byte sub_08055D80 + +gUnk_080FE320:: @ 080FE320 +.ifdef JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FE320_JP.bin" +.else +.ifdef DEMO_JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FE320_1_DEMO_JP.bin" +.else +.ifdef EU + .incbin "data_080FC8A4/gUnk_080FE320_2_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FE320_3_USA-DEMO_USA.bin" +.endif +.endif +.endif + +.ifdef JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FE320_4_JP.bin" +.else +.ifdef DEMO_JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FE320_5_DEMO_JP.bin" +.else +.ifdef EU + .incbin "data_080FC8A4/gUnk_080FE320_6_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FE320_7_USA-DEMO_USA.bin" +.endif +.endif +.endif + +gUnk_080FEAC8:: @ 080FEAC8 + .incbin "data_080FC8A4/gUnk_080FEAC8.bin" +.ifdef JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEAC8_1_JP.bin" +.else +.ifdef DEMO_JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEAC8_2_DEMO_JP.bin" +.else +.ifdef EU + .incbin "data_080FC8A4/gUnk_080FEAC8_3_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FEAC8_4_USA-DEMO_USA.bin" +.endif +.endif +.endif + +.ifdef JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEAC8_5_JP.bin" +.else +.ifdef DEMO_JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEAC8_6_DEMO_JP.bin" +.else +.ifdef EU + .incbin "data_080FC8A4/gUnk_080FEAC8_7_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FEAC8_8_USA-DEMO_USA.bin" +.endif +.endif +.endif + + .incbin "data_080FC8A4/gUnk_080FEAC8_9.bin" + +gUnk_080FEBE8:: @ 080FEBE8 + .incbin "data_080FC8A4/gUnk_080FEBE8.bin" + +gUnk_080FEC28:: @ 080FEC28 + .incbin "data_080FC8A4/gUnk_080FEC28.bin" + +gUnk_080FECC8:: @ 080FECC8 + .incbin "data_080FC8A4/gUnk_080FECC8.bin" + +gUnk_080FED18:: @ 080FED18 + .incbin "data_080FC8A4/gUnk_080FED18.bin" + +gUnk_080FED58:: @ 080FED58 + .incbin "data_080FC8A4/gUnk_080FED58.bin" + +gUnk_080FED98:: @ 080FED98 + .4byte gUnk_080FEDA4 + .4byte gUnk_080FEDDA + .4byte gUnk_080FEDF8 + +gUnk_080FEDA4:: @ 080FEDA4 + .incbin "data_080FC8A4/gUnk_080FEDA4.bin" + +gUnk_080FEDDA:: @ 080FEDDA + .incbin "data_080FC8A4/gUnk_080FEDDA.bin" + +gUnk_080FEDF8:: @ 080FEDF8 + .incbin "data_080FC8A4/gUnk_080FEDF8.bin" + +gUnk_080FEE18:: @ 080FEE18 + .incbin "data_080FC8A4/gUnk_080FEE18.bin" + +gUnk_080FEE38:: @ 080FEE38 + .incbin "data_080FC8A4/gUnk_080FEE38.bin" + +gUnk_080FEE48:: @ 080FEE48 + .incbin "data_080FC8A4/gUnk_080FEE48.bin" + +gUnk_080FEE58:: @ 080FEE58 +.ifdef JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEE58_JP.bin" +.else +.ifdef DEMO_JP + @ TODO only small differences + .incbin "data_080FC8A4/gUnk_080FEE58_1_DEMO_JP.bin" +.else +.ifdef EU + .incbin "data_080FC8A4/gUnk_080FEE58_2_EU.bin" +.else + .incbin "data_080FC8A4/gUnk_080FEE58_3_USA-DEMO_USA.bin" +.endif +.endif +.endif + +gUnk_080FEE78:: @ 080FEE78 + .incbin "data_080FC8A4/gUnk_080FEE78.bin" diff --git a/data/scripts/script_0800AF44.inc b/data/scripts/script_0800AF44.inc index ccadf635..8ff3f94a 100644 --- a/data/scripts/script_0800AF44.inc +++ b/data/scripts/script_0800AF44.inc @@ -3,7 +3,7 @@ SCRIPT_START script_0800AF44 Call sub_0807DF28 _0807EB28 0x1c01 WaitUntilTextboxCloses - SetLocalFlagByOffset 0x0100, 0x0001 + SetLocalFlagByBank 0x0100, 0x0001 Call sub_0807DF50 _0807E878 DoPostScriptAction 0x0006 diff --git a/data/scripts/script_0800AF68.inc b/data/scripts/script_0800AF68.inc index 471cbc59..e9ae8510 100644 --- a/data/scripts/script_0800AF68.inc +++ b/data/scripts/script_0800AF68.inc @@ -3,7 +3,7 @@ SCRIPT_START script_0800AF68 Call sub_0807DF28 _0807EB28 0x1c02 WaitUntilTextboxCloses - SetLocalFlagByOffset 0x0100, 0x0002 + SetLocalFlagByBank 0x0100, 0x0002 Call sub_0807DF50 _0807E878 DoPostScriptAction 0x0006 diff --git a/data/scripts/script_0800AF8C.inc b/data/scripts/script_0800AF8C.inc index f7842a73..b4477b56 100644 --- a/data/scripts/script_0800AF8C.inc +++ b/data/scripts/script_0800AF8C.inc @@ -3,7 +3,7 @@ SCRIPT_START script_0800AF8C Call sub_0807DF28 _0807EB28 0x1c03 WaitUntilTextboxCloses - SetLocalFlagByOffset 0x0100, 0x0003 + SetLocalFlagByBank 0x0100, 0x0003 Call sub_0807DF50 _0807E878 DoPostScriptAction 0x0006 diff --git a/data/scripts/script_0800AFB0.inc b/data/scripts/script_0800AFB0.inc index 2cd141c9..88878bca 100644 --- a/data/scripts/script_0800AFB0.inc +++ b/data/scripts/script_0800AFB0.inc @@ -10,7 +10,7 @@ script_0800AFB2: Call sub_0807DF28 _0807EB28 0x1c04 WaitUntilTextboxCloses - SetLocalFlagByOffset 0x0100, 0x0004 + SetLocalFlagByBank 0x0100, 0x0004 Call sub_0807DF50 _0807E878 DoPostScriptAction 0x0006 diff --git a/data/scripts/script_0800AFE8.inc b/data/scripts/script_0800AFE8.inc index b9558c53..9dc089b6 100644 --- a/data/scripts/script_0800AFE8.inc +++ b/data/scripts/script_0800AFE8.inc @@ -3,7 +3,7 @@ SCRIPT_START script_0800AFE8 Call sub_0807DF28 _0807EB28 0x1c05 WaitUntilTextboxCloses - SetLocalFlagByOffset 0x0100, 0x0005 + SetLocalFlagByBank 0x0100, 0x0005 Call sub_0807DF50 _0807E878 DoPostScriptAction 0x0006 diff --git a/data/scripts/script_0800E0BC.inc b/data/scripts/script_0800E0BC.inc index df275e25..dadd18a9 100644 --- a/data/scripts/script_0800E0BC.inc +++ b/data/scripts/script_0800E0BC.inc @@ -317,11 +317,11 @@ script_0800E4B6: _0807E864 .ifdef JP .ifndef DEMO_JP - Call FreezeTime + Call SetPlayerEventPriority .endif .else .ifdef EU - Call FreezeTime + Call SetPlayerEventPriority .endif .endif EndBlock @@ -341,11 +341,11 @@ script_0800E4B6: SetLocalFlag 0x007c .ifdef JP .ifndef DEMO_JP - Call UnfreezeTime + Call ResetPlayerEventPriority .endif .else .ifdef EU - Call UnfreezeTime + Call ResetPlayerEventPriority .endif .endif script_0800E4FA: diff --git a/data/scripts/script_0800EF40.inc b/data/scripts/script_0800EF40.inc index 920a220f..f10aba5e 100644 --- a/data/scripts/script_0800EF40.inc +++ b/data/scripts/script_0800EF40.inc @@ -8,7 +8,7 @@ script_0800EF50: Call sub_080869A4 JumpIfNot script_0800EF50 _0807E864 - CheckLocalFlagByOffset 0x0200, 0x006d + CheckLocalFlagByBank 0x0200, 0x006d JumpIf script_0800EF82 MessageFromTarget 0x4d01 WaitUntilTextboxCloses diff --git a/data/scripts/script_08012D18.inc b/data/scripts/script_08012D18.inc index da5129bb..206fd304 100644 --- a/data/scripts/script_08012D18.inc +++ b/data/scripts/script_08012D18.inc @@ -3,7 +3,7 @@ SCRIPT_START script_08012D18 BeginBlock CheckGlobalFlag 0x0014 JumpIfNot script_08012D18 - CheckLocalFlagByOffset 0x0200, 0x008d + CheckLocalFlagByBank 0x0200, 0x008d JumpIf script_08012D68 CheckPlayerInRegion 0x0000, 0x01a8, 0x2010 JumpIfNot script_08012D18 diff --git a/data/scripts/script_08016384.inc b/data/scripts/script_08016384.inc index 6f6aaa07..34c36c59 100644 --- a/data/scripts/script_08016384.inc +++ b/data/scripts/script_08016384.inc @@ -18,15 +18,15 @@ SCRIPT_START script_08016384 HasRoomItemForSale CheckLocalFlag 0x0067 .ifdef JP - CheckLocalFlagByOffset 0x0100, 0x0069 + CheckLocalFlagByBank 0x0100, 0x0069 .else .ifdef EU - CheckLocalFlagByOffset 0x0100, 0x0069 + CheckLocalFlagByBank 0x0100, 0x0069 .else .ifdef DEMO_JP - CheckLocalFlagByOffset 0x0100, 0x0069 @ TODO deduplicate + CheckLocalFlagByBank 0x0100, 0x0069 @ TODO deduplicate .else - CheckLocalFlagByOffset 0x0100, 0x006b + CheckLocalFlagByBank 0x0100, 0x006b .endif .endif .endif @@ -52,7 +52,7 @@ SCRIPT_START script_08016384 _0807E5F8 0x00000001 _0807E610 0x00000002 SetLocalFlag 0x0067 - SetLocalFlagByOffset 0x0100, 0x0001 + SetLocalFlagByBank 0x0100, 0x0001 ClearLocalFlag 0x0067 SetGlobalFlag 0x0013 ClearGlobalFlag 0x0013 diff --git a/include/area.h b/include/area.h index 1b2e0d53..c8d10a53 100644 --- a/include/area.h +++ b/include/area.h @@ -3,11 +3,27 @@ #include "global.h" +#define MAX_ROOMS 64 + +typedef struct { + u16 pixel_width; + u16 pixel_height; + u16 map_x; + u16 map_y; + void* tileset; + void* map; + void* metatiles; + void* bg_anim; + void* exits; + void** properties; +} RoomResInfo; +static_assert(sizeof(RoomResInfo) == 0x20); + typedef struct { u8 areaMetadata; u8 locationIndex; u8 unk; - u8 regret; + u8 dungeon_idx; /* same index as global flags for dungeons */ u16 localFlagOffset; u8 filler[4]; u16 unk_0a; @@ -23,17 +39,183 @@ typedef struct { u8 unk1A; u8 filler2[13]; u8 field_0x28; - u8 filler4[0x833]; - void*** field_0x85c; + u8 filler4[0x13]; + RoomResInfo roomResInfos[MAX_ROOMS]; + RoomResInfo currentRoomInfo; + RoomResInfo* pCurrentRoomInfo; u32 musicIndex; u32 pMusicIndex; u8 filler5[0x20]; - u32 unk2; - u32 unk3; - u32 unk4; + void* transitionManager; + void (*onEnter)(); + void (*onExit)(); } Area; static_assert(sizeof(Area) == 0x894); - extern Area gArea; +typedef struct { + u16 map_x; + u16 map_y; + u16 pixel_width; + u16 pixel_height; + u16 tileset_id; +} FORCE_WORD_ALIGNED RoomHeader; +static_assert(sizeof(RoomHeader) == 0xa); +extern RoomHeader* gAreaRoomHeaders[]; + +typedef struct { + u8 flags; + u8 location; + u8 flag_bank; + u8 _3; +} AreaHeader; +extern AreaHeader gAreaMetadata[]; + +typedef enum { + AREA_MINISH_WOODS, + AREA_MINISH_VILLAGE, + AREA_HYRULE_TOWN, + AREA_HYRULE_FIELD, + AREA_CASTOR_WILDS, + AREA_RUINS, + AREA_MT_CRENEL, + AREA_CASTLE_GARDEN, + AREA_CLOUD_TOPS, + AREA_ROYAL_VALLEY, + AREA_VEIL_FALLS, + AREA_LAKE_HYLIA, + AREA_LAKE_WOODS_CAVE, + AREA_BEANSTALKS, + AREA_EMPTY, + AREA_HYRULE_DIG_CAVES, + AREA_MELARIS_MINE, + AREA_MINISH_PATHS_1, + AREA_CRENEL_MINISH_PATHS, + AREA_DIG_CAVES_1, + AREA_CRENEL_DIG_CAVE, + AREA_FESTIVAL_TOWN, + AREA_VEIL_FALLS_DIG_CAVE, + AREA_CASTOR_WILDS_DIG_CAVE, + AREA_OUTER_FORTRESS_OF_WINDS, + AREA_HYLIA_DIG_CAVES, + AREA_VEIL_FALLS_TOP, + AREA_NULL_1B, + AREA_NULL_1C, + AREA_NULL_1D, + AREA_NULL_1E, + AREA_NULL_1F, + AREA_MINISH_HOUSE_INTERIORS, + AREA_HOUSE_INTERIORS_1, + AREA_HOUSE_INTERIORS_2, + AREA_HOUSE_INTERIORS_3, + AREA_TREE_INTERIORS, + AREA_DOJOS, + AREA_CRENEL_CAVES, + AREA_MINISH_CRACKS, + AREA_HOUSE_INTERIORS_4, + AREA_GREAT_FAIRIES, + AREA_CASTOR_CAVES, + AREA_CASTOR_DARKNUT, + AREA_ARMOS_INTERIORS, + AREA_TOWN_MINISH_HOLES, + AREA_MINISH_RAFTERS, + AREA_GORON_CAVE, + AREA_WIND_TRIBE_TOWER, + AREA_WIND_TRIBE_TOWER_ROOF, + AREA_CAVES, + AREA_VEIL_FALLS_CAVES, + AREA_ROYAL_VALLEY_GRAVES, + AREA_MINISH_CAVES, + AREA_CASTLE_GARDEN_MINISH_HOLES, + AREA_37, + AREA_EZLO_CUTSCENE, + AREA_NULL_39, + AREA_NULL_3A, + AREA_NULL_3B, + AREA_NULL_3C, + AREA_NULL_3D, + AREA_NULL_3E, + AREA_NULL_3F, + AREA_40, + AREA_HYRULE_TOWN_UNDERGROUND, + AREA_GARDEN_FOUNTAINS, + AREA_HYRULE_CASTLE_CELLAR, + AREA_SIMONS_SIMULATION, + AREA_45, + AREA_NULL_46, + AREA_47, + AREA_DEEPWOOD_SHRINE, + AREA_DEEPWOOD_SHRINE_BOSS, + AREA_DEEPWOOD_SHRINE_ENTRY, + AREA_NULL_4B, + AREA_NULL_4C, + AREA_4D, + AREA_NULL_4E, + AREA_NULL_4F, + AREA_CAVE_OF_FLAMES, + AREA_CAVE_OF_FLAMES_BOSS, + AREA_NULL_52, + AREA_NULL_53, + AREA_NULL_54, + AREA_NULL_55, + AREA_NULL_56, + AREA_57, + AREA_FORTRESS_OF_WINDS, + AREA_FORTRESS_OF_WINDS_TOP, + AREA_INNER_MAZAAL, + AREA_NULL_5B, + AREA_NULL_5C, + AREA_NULL_5D, + AREA_NULL_5E, + AREA_5F, + AREA_TEMPLE_OF_DROPLETS, + AREA_NULL_61, + AREA_HYRULE_TOWN_MINISH_CAVES, + AREA_NULL_63, + AREA_NULL_64, + AREA_NULL_65, + AREA_NULL_66, + AREA_67, + AREA_ROYAL_CRYPT, + AREA_NULL_69, + AREA_NULL_6A, + AREA_NULL_6B, + AREA_NULL_6C, + AREA_NULL_6D, + AREA_NULL_6E, + AREA_6F, + AREA_PALACE_OF_WINDS, + AREA_PALACE_OF_WINDS_BOSS, + AREA_NULL_72, + AREA_NULL_73, + AREA_NULL_74, + AREA_NULL_75, + AREA_NULL_76, + AREA_77, + AREA_SANCTUARY, + AREA_NULL_79, + AREA_NULL_7A, + AREA_NULL_7B, + AREA_NULL_7C, + AREA_NULL_7D, + AREA_NULL_7E, + AREA_7F, + AREA_HYRULE_CASTLE, + AREA_SANCTUARY_ENTRANCE, + AREA_NULL_82, + AREA_NULL_83, + AREA_NULL_84, + AREA_NULL_85, + AREA_NULL_86, + AREA_87, + AREA_DARK_HYRULE_CASTLE, + AREA_DARK_HYRULE_CASTLE_OUTSIDE, + AREA_VAATIS_ARMS, + AREA_VAATI_3, + AREA_VAATI_2, + AREA_DARK_HYRULE_CASTLE_BRIDGE, + AREA_NULL_8E, + AREA_8F, +} AreaID; + #endif diff --git a/include/entity.h b/include/entity.h index 432cea17..8c54edf0 100644 --- a/include/entity.h +++ b/include/entity.h @@ -51,8 +51,8 @@ typedef struct Entity { /*0x0e*/ u8 actionDelay; /*0x0f*/ u8 field_0xf; /*0x10*/ u8 flags; - /*0x11*/ u8 updateConditions : 4; // should we update this sprite during pause - /* */ u8 updateConditions2 : 4; + /*0x11*/ u8 updatePriority : 4; // Current priority -- See RequestPriority + /* */ u8 updatePriorityPrev : 4; // Priority to restore after request is over /*0x12*/ s16 spriteIndex; /*0x14*/ u8 animationState; /*0x15*/ u8 direction; @@ -195,7 +195,7 @@ enum { #define Direction8RoundUp(expr) Direction8Round((expr) + 2) #define Direction8TurnAround(expr) (Direction8RoundUp(expr) ^ 0x10) #define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2) -#define Direction8FromAnimationState(expr) (((expr) << 2) +#define Direction8FromAnimationState(expr) ((expr) << 2) Entity* GetEmptyEntity(void); void DrawEntity(Entity*); @@ -217,11 +217,6 @@ void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); u32 GetFacingDirection(Entity*, Entity*); -/** - * @brief Check if entity should sleep this frame. - */ -bool32 CheckDontUpdate(Entity* this); - /** * @brief Delete the entity currently in execution. */ @@ -232,14 +227,7 @@ void DeleteThisEntity(void); */ void DeleteEntity(Entity*); -/** - * @brief Append entity to linked list. - */ void AppendEntityToList(Entity* entity, u32 listIndex); - -/** - * @brief Prepend entity to linked list. - */ void PrependEntityToList(Entity* entity, u32 listIndex); /** @@ -274,4 +262,63 @@ Entity* FindEntity(u32 kind, u32 id, u32 listIndex, u32 type, u32 type2); void DeleteEntityAny(Entity* ent); +void UpdateEntities(void); +void UpdateManagers(void); + +void EraseAllEntities(void); + +enum { + PRIO_MIN = 0, + PRIO_PLAYER = 1, + PRIO_REQUESTED = 2, + PRIO_MESSAGE = 2, + PRIO_OVERRIDE_MESSAGE = 3, + PRIO_PLAYER_EVENT = 6, + PRIO_INITIALIZING = 7, +}; + +/** + * @brief Set the default priority for entity. + */ +void SetDefaultPriority(Entity* ent, u32 prio); + +/** + * @brief Check if entity should sleep this frame (according to priority). + */ +bool32 CheckDontUpdate(Entity* this); + +/** + * @brief Check if system or entity is blocking updates. + */ +bool32 AnyPrioritySet(void); + + +/// Entity Priority: Update blocking events requested by an entity. + +s32 SetMinPriority(u32 prio); + +void RequestPriority(Entity* this); +void RevokePriority(Entity* e); + +void RequestPriorityDuration(Entity* this, u32 time); +void SetPriorityTimer(u32 time); + +void RequestPriorityOverPlayer(Entity* this); +void RevokePriorityOverPlayer(Entity* this); + +void ResetEntityPriority(void); + + +/// System Priority: Update blocking events sent by the engine. + +void SetPlayerEventPriority(void); +void ResetPlayerEventPriority(void); +void SetRoomReloadPriority(void); +void SetInitializationPriority(void); + +void ResetSystemPriority(void); + +extern u8 gEntCount; +extern u8 gManagerCount; + #endif diff --git a/include/fileScreen.h b/include/fileScreen.h index ef528333..fd4b7c7e 100644 --- a/include/fileScreen.h +++ b/include/fileScreen.h @@ -33,10 +33,11 @@ typedef struct { } struct_080FC844; typedef struct { - union SplitWord _0[8]; + union SplitWord _0; + union SplitWord _4; } struct_020227E8; -extern struct_020227E8 gUnk_020227E8; +extern struct_020227E8 gUnk_020227E8[]; typedef struct { /*0x00*/ u8 isTransitioning; diff --git a/include/flags.h b/include/flags.h index 8e0a5809..e7219f3a 100644 --- a/include/flags.h +++ b/include/flags.h @@ -7,28 +7,52 @@ u32 CheckFlags(u32); u32 CheckGlobalFlag(u32); u32 CheckGlobalFlags(u32, u32); extern u32 CheckLocalFlag(u32); -extern u32 CheckLocalFlagByOffset(u32, u32); +extern u32 CheckLocalFlagByBank(u32, u32); u32 CheckLocalFlags(u32, u32); -u32 CheckLocalFlagsByOffset(u32, u32, u32); +u32 CheckLocalFlagsByBank(u32, u32, u32); u32 CheckRoomFlag(u32); u32 CheckRoomFlags(u32, u32); void ClearFlag(u32); void ClearGlobalFlag(u32); void ClearLocalFlag(u32); -void ClearLocalFlagByOffset(u32, u32); +void ClearLocalFlagByBank(u32, u32); void ClearRoomFlag(u32); void SetFlag(u32); void SetGlobalFlag(u32); void SetLocalFlag(u32); -void SetLocalFlagByOffset(u32, u32); +void SetLocalFlagByBank(u32, u32); void SetRoomFlag(u32); +extern u32 ReadBit(u32*, u32); +extern u32 CheckBits(u32*, u32, u32); +extern void WriteBit(u32*, u32); +extern void ClearBit(u32*, u32); + extern u32 gGlobalFlags; extern u32 gRoomFlags; -typedef enum _Flag { +extern const u16 gLocalFlagBanks[]; + +enum LocalFlagOffsets { + FLAG_BANK_G = 0, + FLAG_BANK_0 = 0, + FLAG_BANK_1 = 0x100, + FLAG_BANK_2 = 0x200, + FLAG_BANK_3 = 0x300, + FLAG_BANK_4 = 0x400, + FLAG_BANK_5 = 0x500, + FLAG_BANK_6 = 0x5C0, + FLAG_BANK_7 = 0x680, + FLAG_BANK_8 = 0x740, + FLAG_BANK_9 = 0x800, + FLAG_BANK_10 = 0x8C0, + FLAG_BANK_11 = 0x9C0, + FLAG_BANK_12 = 0xA80, +}; + +typedef enum { BEGIN, /*0x01*/ LV0_CLEAR, /* */ /*0x02*/ LV1_CLEAR, /* */ diff --git a/include/functions.h b/include/functions.h index b4316733..58e54500 100644 --- a/include/functions.h +++ b/include/functions.h @@ -22,7 +22,6 @@ extern void SetChildOffset(Entity*, s32, s32, s32); extern Entity* CreatePlayerItem(u32, u32, u32, u32); extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer); extern u32 GetTileType(u32 pos, u32 layer); -extern void EraseAllEntities(void); extern void SetTile(u32, u32, u32); extern void SetDirtTile(u32); extern void LoadRoomTileEntities(); // tba @@ -73,15 +72,12 @@ extern void sub_0805EC9C(); extern void sub_0805EC60(Entity*); extern u32 sub_080045D4(s16, s16, u32, u32); extern void sub_0806F69C(Entity*); -extern void sub_0805E3A0(void*, u32); extern void sub_0806D0B0(Entity*); extern void sub_0806D02C(Entity*); extern u32 sub_0806F5A4(u32); extern void sub_08078784(Entity*, u32); extern s32 sub_0806ED9C(Entity*, u32, u32); extern void sub_0807000C(Entity*); -extern void sub_0805E47C(Entity*); -extern void sub_0805E584(Entity*); extern void sub_08068BEC(Entity*, u32); extern s32 sub_0806F078(Entity*, s32); extern void sub_0801D2B4(Entity*, u32); @@ -104,8 +100,6 @@ extern void sub_08077F50(ItemBehavior* beh, u32 arg1); extern void sub_0807AA80(Entity*); extern s32 sub_0807887C(Entity*, u32, u32); extern s32 sub_08078904(); -extern void sub_0805E5A8(void); -extern void UpdateEntities(void); extern void sub_080AD9B0(void); extern void sub_080AD918(void); extern void sub_0801E104(void); @@ -133,11 +127,10 @@ extern void sub_0809F814(u32); extern void sub_080300E8(void); extern void sub_08058D34(void); extern void sub_0807AABC(Entity*); -extern void sub_08078A90(u32); -extern void sub_080530C8(void); +extern void UpdateGlobalProgress(void); extern void sub_0805B4D0(u32); extern void sub_0804D0B4(void); -extern void sub_0805308C(u32); +extern void sub_0805308C(s32); extern void sub_080534AC(); extern void sub_0807BA8C(u32, u32); extern void sub_0804D9B0(); @@ -222,12 +215,12 @@ extern void sub_08080CB4(Entity*); extern u32 sub_0800442E(Entity*); extern void sub_08081404(Entity*, u32); extern void sub_0807B7D8(u32, u32, u32); -extern void sub_08052D74(void*, void (*)(), void (*)()); +extern void RegisterTransitionManager(void*, void (*)(), void (*)()); extern void sub_0800451C(Entity*); extern u32 sub_080002F0(u32, u32, u32); extern u32 sub_080040D8(Entity*, u8*, s32, s32); extern void sub_08053320(); -extern void sub_0801D79C(u32, u32); +extern void SetColor(u32, u32); extern u32 sub_0805F8F8(u32); extern void sub_08002724(void*, u8*); extern void sub_080026C4(u8*, u8*, u8*, u32); @@ -277,8 +270,6 @@ extern void sub_080787B4(Entity*); extern void sub_0808C650(Entity*, u32); extern u32 sub_0808C67C(void); extern void sub_0808C688(void); -extern void sub_0805E4A0(Entity*); -extern void sub_0805E4CC(Entity*); extern Entity* sub_08077C94(ItemBehavior*, u32); extern Entity* sub_08077C0C(ItemBehavior*, u32); @@ -301,6 +292,5 @@ extern void sub_0801855C(void); extern u32 sub_0807CAEC(u32); extern void sub_0807CAC8(u32); -extern void sub_0805E4E0(Entity*, u32); extern void LoadObjPalette(Entity*, u32); #endif diff --git a/include/global.h b/include/global.h index 489f276d..669d2557 100644 --- a/include/global.h +++ b/include/global.h @@ -97,4 +97,6 @@ union SplitHWord { } PACKED HALF; } PACKED; +#define FORCE_WORD_ALIGNED __attribute__((packed, aligned(2))) + #endif // GUARD_GLOBAL_H diff --git a/include/main.h b/include/main.h index 3225f2ed..5721b22d 100644 --- a/include/main.h +++ b/include/main.h @@ -3,6 +3,11 @@ #include "global.h" +#define SIGNATURE 'MCZ3' +#define MAX_MSG_SPEED 3 +#define NUM_SAVE_SLOTS 3 +#define MAX_BRIGHTNESS 3 + typedef struct { // 0x03001000 u8 field_0x0; u8 field_0x1; @@ -17,11 +22,6 @@ typedef struct { // 0x03001000 u32 spritePriority; } MainStruct; -#define SIGNATURE 'MCZ3' -#define MAX_MSG_SPEED 3 -#define NUM_SAVE_SLOTS 3 -#define MAX_BRIGHTNESS 3 - typedef enum { LANGUAGE_JP, LANGUAGE_EN, @@ -79,6 +79,9 @@ static_assert(sizeof(UI) == 0x3b4); extern Main gMain; extern UI gUnk_02032EC0; +/** + * @brief Begin a subroutine. + */ void InitScreen(u32 screen); extern void sub_08056208(void); @@ -99,6 +102,4 @@ extern void DisableInterruptsAndDMA(void); extern void EnableVBlankIntr(void); extern void sub_08056250(void); -static void sub_08055F70(void); -static bool32 SoftResetKeysPressed(void); #endif diff --git a/include/player.h b/include/player.h index 816cea1f..e1ef7001 100644 --- a/include/player.h +++ b/include/player.h @@ -1,12 +1,10 @@ -// clang-format off - #ifndef PLAYER_H #define PLAYER_H #include "global.h" #include "entity.h" -enum { +enum PlayerActions { PLAYER_INIT, PLAYER_NORMAL, PLAYER_DUMMY, @@ -41,8 +39,32 @@ enum { PLAYER_PARACHUTE, }; -enum { - PL_IS_MINISH = (1 << 7), +enum PlayerSpawnType { + PL_SPAWN_DEFAULT, + PL_SPAWN_MINISH, + PL_SPAWN_DROP, + PL_SPAWN_WALKING, + PL_SPAWN_STEP_IN, + PL_SPAWN_SPECIAL, + PL_SPAWN_DROP_MINISH, + PL_SPAWN_STAIRS_ASCEND, + PL_SPAWN_STAIRS_DESCEND, + PL_SPAWN_9, + PL_SPAWN_PARACHUTE_FORWARD, + PL_SPAWN_PARACHUTE_UP, + PL_SPAWN_FAST_TRAVEL, +}; + +typedef enum { + CONTROL_ENABLED, + CONTROL_1, + CONTROL_2, + CONTROL_DISABLED, +} PlayerControlMode; + +enum PlayerFlags { + PL_NO_CAP = (1 << 3), + PL_MINISH = (1 << 7), }; typedef struct { @@ -115,7 +137,6 @@ typedef struct { /*0xae*/ u16 field_0xae; } PlayerState; - typedef struct { /*0x00*/ u8 walletType; /*0x01*/ u8 heartPieces; @@ -156,19 +177,18 @@ extern void (*const gPlayerItemFunctions[])(Entity*); extern u8 gBombBagSizes[]; extern u8 gQuiverSizes[]; +extern u16 gWalletSizes[]; extern PlayerState gPlayerState; extern Stats gStats; extern Entity gPlayerEntity; - extern u32 GetInventoryValue(u32); extern s32 ModHealth(s32); extern void ModRupees(s32); +extern void SetPlayerControl(PlayerControlMode); + #define COPY_FLAG_FROM_TO(base, src, dest) (base) = ((base) & ~(dest)) | (((dest) * ((base) & (src))) / src) - #endif - -// clang-format on diff --git a/include/room.h b/include/room.h index 04cc36e0..8561da49 100644 --- a/include/room.h +++ b/include/room.h @@ -11,6 +11,19 @@ typedef struct { } RoomID; */ +enum RoomTransition { + TRANSITION_DEFAULT, + TRANSITION_CUT, + TRANSITION_FADE_WHITE_SLOW, + TRANSITION_3, + TRANSITION_FADE_BLACK_SLOW, + TRANSITION_FADE_BLACK, + TRANSITION_FADE_BLACK_FAST, + TRANSITION_7, + TRANSITION_FADE_WHITE_FAST, + TRANSITION_CUT_FAST, +}; + typedef struct { /*0x00*/ u16 unk2; /*0x02*/ u8 unk3; @@ -38,6 +51,7 @@ typedef struct { /*0x2C*/ union SplitWord bg3OffsetY; /*0x30*/ Entity* cameraTarget; } RoomControls; +extern RoomControls gRoomControls; typedef struct { u8 field_0x0; @@ -52,16 +66,18 @@ typedef struct { u8 field_0x9; u8 unk2; u8 filler2; - u16 field_0xc; + s16 field_0xc; u8 filler3[2]; u8 unk_10[4]; u32 roomFlags; u32 unk3; u8 filler4[48]; u8 filler5[28]; - u32 greatFairyState; - void* field_0x6c[8]; + u32 animFlags; + void* field_0x6c[24]; } RoomVars; +static_assert(sizeof(RoomVars) == 0xCC); +extern RoomVars gRoomVars; // Packets used to store which entities to load in a room typedef struct { @@ -75,8 +91,56 @@ typedef struct { u32 spritePtr; } EntityData; -extern RoomControls gRoomControls; -extern RoomVars gRoomVars; +// Status of the player's positioning within the scene. +typedef struct { + u8 area_next; + u8 room_next; + u8 start_anim; + u8 spawn_type; + Coords start_pos; + u8 layer; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + s16 field_0x18; + s16 field_0x1a; + s16 field_0x1c; + s16 field_0x1e; + s16 field_0x20; + s16 field_0x22; + u8 field_0x24[0x8]; +} PlayerWorldStatus; +static_assert(sizeof(PlayerWorldStatus) == 0x20); + +typedef struct { + s32 frameCount; // regular frame count? does anything reset it? + u8 field_0x4[0x2]; + u16 field_0x6; + bool8 transitioningOut; + u8 transitionType; // transition when changing areas + u16 stairs_idx; // seems to be a tile type + PlayerWorldStatus player_status; + u8 field_0x2c[0xa]; + u16 field_0x36; + u8 field_0x38; + u8 field_0x39; + u8 field_0x3a; + u8 field_0x3b; + u8 field_0x3c; + u8 field_0x3d; + u16 field_0x3e; + u16 hurtType; + u16 field_0x42; + u16 field_0x44; + u16 field_0x46; + u16 field_0x48; + u16 field_0x4a; + u8 minecart_data[0x20]; + u8 field_0x6c[0x40]; + u16 field_0xac; + u16 field_0xae; +} ScreenTransition; +extern ScreenTransition gScreenTransition; extern void SetTileType(u32, u32, u32); extern void sub_08080964(u32 time, u32 magnitude); // shake screen diff --git a/include/save.h b/include/save.h index adfb7f45..56e953a1 100644 --- a/include/save.h +++ b/include/save.h @@ -4,6 +4,7 @@ #include "global.h" #include "player.h" #include "structures.h" +#include "room.h" #define FILENAME_LENGTH 6 @@ -29,30 +30,22 @@ typedef struct { /*0x004*/ u8 filler4[0x2]; /*0x006*/ u8 unk6; /*0x007*/ u8 unk7; - /*0x008*/ u8 unk8; + /*0x008*/ u8 global_progress; /*0x009*/ u8 field_0x9[0x34]; /*0x040*/ u32 windcrests; /*0x044*/ u8 filler44[0xC]; /*0x050*/ u32 unk50; - /*0x054*/ u8 filler54[0x2C]; + /*0x054*/ u8 filler54[0xC]; + /*0x060*/ u32 areaVisitFlags[8]; /*0x080*/ u8 playerName[FILENAME_LENGTH]; /*0x086*/ u8 filler86[0x2]; - /*0x088*/ u8 unk_88; - /*0x089*/ u8 unk_89; - /*0x08A*/ u8 unk_8A; - /*0x08B*/ u8 unk_8B; - /*0x08C*/ u16 unk_8C; - /*0x08E*/ u16 unk_8E; - /*0x08F*/ u8 unk_8F; - /*0x090*/ u8 filler91[0x15]; + /*0x088*/ PlayerWorldStatus saved_status; /*0x0A8*/ Stats stats; /*0x0D0*/ u8 fillerD0[0x71]; - /*0x141*/ u8 unk141[0x34f]; - /*0x490*/ u32 unk490; - /*0x494*/ u32 unk494; - /*0x498*/ u32 unk498; - /*0x49C*/ u8 filler49C[0xC]; - /*0x4a8*/ u32 unk_4a8; + /*0x141*/ u8 unk141[0x45c - 0x141]; + /*0x45c*/ u8 unk45C[0x10]; + /*0x46c*/ u8 unk46C[0x20]; + /*0x48c*/ u32 unk48C[8]; /*0x4ac*/ u8 filler4ac[0x8]; } SaveFile; diff --git a/include/screen.h b/include/screen.h index 12c30c57..aaca4ef6 100644 --- a/include/screen.h +++ b/include/screen.h @@ -7,7 +7,7 @@ typedef struct { u16 displayControl; u8 filler2[0x2]; u16 unk4; - u16 unk6; + u16 displayControlMask; } LcdControls; typedef struct { diff --git a/include/structures.h b/include/structures.h index 3ad3e06b..671e41ea 100644 --- a/include/structures.h +++ b/include/structures.h @@ -36,44 +36,6 @@ typedef struct { extern struct_02000010 gUnk_02000010; -typedef struct { - s32 frameCount; // regular frame count? does anything reset it? - u8 field_0x4[0x2]; - u16 field_0x6; - bool8 transitioningOut; - u8 transitionType; // transition when changing areas - u16 field_0xa; // seems to be a tile type - u8 areaID; - u8 roomID; - u8 playerState; - u8 field_0xf; - Coords playerStartPos; - u8 playerLayer; - u8 field_0x13; - u8 field_0x14[0xa]; - u16 field_0x20; - u16 field_0x22; - u8 field_0x24[0x14]; - u8 field_0x38; - u8 field_0x39; - u8 field_0x3a; - u8 field_0x3b; - u8 field_0x3c; - u8 field_0x3d; - u16 field_0x3e; - u16 hurtType; - u16 field_0x42; - u16 field_0x44; - u16 field_0x46; - u16 field_0x48; - u16 field_0x4a; - u8 field_0x4c[0x60]; - u16 field_0xac; - u16 field_0xae; -} ScreenTransition; - -extern ScreenTransition gScreenTransition; - typedef struct { u16 transitionType; u8 field_0x2[4]; @@ -112,7 +74,6 @@ typedef struct { u8 unk1; u16 unk2; } struct_020354C0; - extern struct_020354C0 gUnk_020354C0[0x20]; typedef struct { @@ -124,13 +85,11 @@ typedef struct { u8 ezloNagFuncIndex; u8 filler25[0x30F]; } struct_0200AF00; - extern struct_0200AF00 gUnk_0200AF00; typedef struct { u8 unk0; } struct_02024490; - extern struct_02024490 gGFXSlots; typedef struct { @@ -140,7 +99,6 @@ typedef struct { u8 flags; u8 unk_08; } struct_02033280; - extern struct_02033280 gActiveScriptInfo; typedef struct { @@ -175,15 +133,14 @@ struct { static_assert(sizeof(gUnk_03000B80) == 0x70); typedef struct { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - Entity* unk4; - u16 unk_0xc; -} EntityHandler; - -extern EntityHandler gUnk_03003DC0; + u8 sys_priority; // system requested priority + u8 ent_priority; // entity requested priority + u8 queued_priority; + u8 queued_priority_reset; + Entity* requester; + u16 priority_timer; +} PriorityHandler; +extern PriorityHandler gPriorityHandler; extern u8 gUnk_02022740[]; extern u8 gUnk_02034490[]; diff --git a/include/textbox.h b/include/textbox.h index b2603fbf..894c5d9d 100644 --- a/include/textbox.h +++ b/include/textbox.h @@ -118,6 +118,14 @@ void MessageNoOverlap(u32 index, Entity* entity); */ void MessageFromTarget(u32 index); +/** + * @brief Display message at y position. + * + * @param index u32 Message index + * @param y u32 Screen y + */ +void MessageAtHeight(u32 index, u32 y); + void DispMessageFrame(u16*, u32, u32, u32); #endif diff --git a/include/utils.h b/include/utils.h index 004a5ada..19c57f14 100644 --- a/include/utils.h +++ b/include/utils.h @@ -40,8 +40,8 @@ void ReadKeyInput(void); void LoadPalettes(const u8*, int, int); void LoadPaletteGroup(u32 group); -void sub_0801D79C(u32 colorIndex, u32 color); -void sub_0801D7BC(u32 color, u32 arg1); +void SetColor(u32 colorIndex, u32 color); +void SetFillColor(u32 color, u32 arg1); /** * Allocate memory on heap. diff --git a/linker.ld b/linker.ld index 052e3042..2013d083 100644 --- a/linker.ld +++ b/linker.ld @@ -214,8 +214,8 @@ SECTIONS { . = 0x00003DB0; gUnk_03003DB0 = .; . = 0x00003DB8; gCollidableCount = .; . = 0x00003DBC; gEntCount = .; - . = 0x00003DC0; gUnk_03003DC0 = .; - . = 0x00003DD0; gUnk_03003DD0 = .; + . = 0x00003DC0; gPriorityHandler = .; + . = 0x00003DD0; gUpdateContext = .; . = 0x00003DE0; gUnk_03003DE0 = .; . = 0x00003DE4; gUnk_03003DE4 = .; . = 0x00003DF0; gUnk_03003DF0 = .; @@ -490,7 +490,7 @@ SECTIONS { asm/code_08050038.o(.text); src/fileScreen.o(.text); asm/fileScreen.o(.text); - src/game.o(.text); + src/overworld.o(.text); asm/code_080526F8.o(.text); asm/modBombs.o(.text); asm/modArrows.o(.text); @@ -1182,6 +1182,8 @@ SECTIONS { data/data_080FC3C4.o(.rodata); src/fileScreen.o(.rodata); data/data_080FC8A4.o(.rodata); + src/overworld.o(.rodata); + data/data_080FCAC8.o(.rodata); data/const/playerItem/playerItemLantern.o(.rodata); data/data_080FEEB8.o(.rodata); data/gfx/palette_groups.o(.rodata); @@ -1405,6 +1407,7 @@ SECTIONS { data/const/item/itemJarEmpty.o(.rodata); data/data_0811BE38.o(.rodata); data/map/room_headers.o(.rodata); + src/flags.o(.rodata); src/save.o(.rodata); data/data_0811E454.o(.rodata); src/script.o(.rodata); diff --git a/src/code_080300AC.c b/src/code_080300AC.c index 993de6ee..612df34a 100644 --- a/src/code_080300AC.c +++ b/src/code_080300AC.c @@ -18,6 +18,6 @@ void sub_080300AC(void) { void sub_080300C4(void) { if (gScreenTransition.field_0xae == 0xff) { gScreenTransition.field_0xac = 0; - MemClear(&gScreenTransition.field_0x4c[32], 0x40); + MemClear(gScreenTransition.field_0x6c, sizeof gScreenTransition.field_0x6c); } } diff --git a/src/code_0804AA84.c b/src/code_0804AA84.c index e3839d74..c9f70c55 100644 --- a/src/code_0804AA84.c +++ b/src/code_0804AA84.c @@ -23,7 +23,7 @@ u32 sub_0804AA84(void) { gArea.filler[8] = 0; gArea.filler[9] = 0; *(u16*)&gArea.filler[10] = 0; - sub_0805E5A8(); + SetInitializationPriority(); return 1; } else { gArea.filler[18] = gArea.playShrinkSeq; diff --git a/src/code_0805436C.c b/src/code_0805436C.c index 8eb7df11..a2352185 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -152,7 +152,7 @@ NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) { bVar1 = gArea.locationIndex; if (gArea.locationIndex == 0) { - bVar1 = gScreenTransition.field_0x24[0xa]; + bVar1 = gScreenTransition.player_status.field_0x24[0xa]; } if (bVar1 > 0x16) { bVar1 = 0; diff --git a/src/code_0808091C.c b/src/code_0808091C.c index 49c654d7..4e9d7561 100644 --- a/src/code_0808091C.c +++ b/src/code_0808091C.c @@ -11,24 +11,23 @@ extern u32 gUnk_02025EB0; extern u8 gUpdateVisibleTiles; void sub_080808D8(void) { - gScreenTransition.transitionType = 0; + gScreenTransition.transitionType = TRANSITION_DEFAULT; } void sub_080808E4(void) { - - if (sub_08052638(gScreenTransition.areaID)) { - gScreenTransition.transitionType = 0; + if (sub_08052638(gScreenTransition.player_status.area_next)) { + gScreenTransition.transitionType = TRANSITION_DEFAULT; } else { - gScreenTransition.transitionType = 5; + gScreenTransition.transitionType = TRANSITION_FADE_BLACK; } } void sub_08080904(void) { - gScreenTransition.transitionType = 1; + gScreenTransition.transitionType = TRANSITION_CUT; } void sub_08080910(void) { - gScreenTransition.transitionType = 1; + gScreenTransition.transitionType = TRANSITION_CUT; } void sub_0808091C(ScreenTransitionData* param_1, u32 param_2) { @@ -43,7 +42,7 @@ void sub_08080930(void) gRoomControls.unk4 = 0; gRoomControls.unk2 = 2; gRoomControls.unk_10 = 0; - sub_0805E5A8(); + SetInitializationPriority(); } u32* GetLayerByIndex(u32 param_1) { diff --git a/src/collision.c b/src/collision.c index 4e0995e2..026724ed 100644 --- a/src/collision.c +++ b/src/collision.c @@ -52,12 +52,15 @@ void ClearHitboxList(void) { void CollisionMain(void) { void (*doCollision)(void); - u32 temp; + u32 prio; - temp = gUnk_03003DC0.unk0; - if (gUnk_03003DC0.unk0 <= gUnk_03003DC0.unk1) - temp = gUnk_03003DC0.unk1; - if (temp != 0) + // pick highest priority + prio = gPriorityHandler.sys_priority; + if (gPriorityHandler.sys_priority <= gPriorityHandler.ent_priority) + prio = gPriorityHandler.ent_priority; + + // if any min priority is set, dont do collision + if (prio) return; doCollision = &gDoCollision; @@ -476,7 +479,7 @@ int sub_08017DD4(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) tgt->damage = 4; gPlayerEntity.health = sub_08017874(&gPlayerEntity, tgt); tgt->iframes = -12; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { sub_08079D84(); org->iframes = 90; } else { @@ -532,7 +535,7 @@ s32 sub_08017F40(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) #ifdef EU (gPlayerState.flags & 0x81) == 0 && #else - (gPlayerState.flags & PL_IS_MINISH) == 0 && + (gPlayerState.flags & PL_MINISH) == 0 && #endif !gPlayerState.swimState) { gPlayerState.field_0x1a[0] |= 0x80u; diff --git a/src/debugScreen.c b/src/debugScreen.c index c34abe12..a12ec0a1 100644 --- a/src/debugScreen.c +++ b/src/debugScreen.c @@ -29,7 +29,7 @@ void sub_0805FA04(void) { MemClear((void*)&gMenu, sizeof(Menu)); gMenu.unk16 = gSaveHeader->gameLanguage; sub_08053320(); - sub_0801D79C(0, 0x1144); + SetColor(0, 0x1144); gMain.funcIndex = 1; InitSoundPlayingInfo(); sub_08050008(); diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index a9c7bbd4..a0c18290 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -210,7 +210,7 @@ void sub_08028BC4(Entity* this) { if (iVar1 != NULL) { iVar1->spritePriority.b0 = 3; iVar1->z.HALF.HI -= 12; - sub_0805E3A0(iVar1, 2); + SetDefaultPriority(iVar1, 2); } SetFlag(this->field_0x86.HWORD); sub_0802925C(this); @@ -251,7 +251,7 @@ void sub_08028CE8(Entity* this) { if (sub_080291DC(this)) { /* Bag full. */ MessageFromTarget(0x2904); - sub_08078A90(0); + SetPlayerControl(0); } else { ModRupees(-offer->price); switch (offer->field_0x0 >> 2) { @@ -286,7 +286,7 @@ void sub_08028CE8(Entity* this) { } else { /* Not enough money. */ MessageFromTarget(0x2903); - sub_08078A90(0); + SetPlayerControl(0); } } @@ -299,7 +299,7 @@ void sub_08028CE8(Entity* this) { void sub_08028DE8(Entity* this) { if (gPlayerEntity.action == 8) { if (this->field_0x80.HALF.HI == 0) { - sub_08078A90(1); + SetPlayerControl(1); this->field_0x80.HALF.HI = 1; } } else { @@ -308,7 +308,7 @@ void sub_08028DE8(Entity* this) { this->field_0x80.HALF.HI = 0; this->actionDelay = 1; sub_08028EDC(this); - sub_08078A90(0); + SetPlayerControl(0); sub_0800445C(this); GetNextFrame(this); } @@ -324,7 +324,7 @@ void sub_08028E40(Entity* this) { if (CheckLocalFlag(offer->field_0xa) == 0) { SetLocalFlag(offer->field_0xa); } - sub_08078A90(0); + SetPlayerControl(0); } sub_0800445C(this); GetNextFrame(this); @@ -381,7 +381,7 @@ void sub_08028F0C(Entity* this) { this->action = 7; } dialog = offer->field_0x4; - sub_08078A90(1); + SetPlayerControl(1); } MessageFromTarget(dialog); gMessage.field_0x10 = offer->price; diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index 0eadf657..6dce5fba 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -58,7 +58,7 @@ void sub_08027DA4(Entity* this) { void sub_08027E40(Entity* this) { if (this->actionDelay == 2 && this->field_0x80.HALF.LO != 0xff) { - sub_0805E3A0(this, 3); + SetDefaultPriority(this, 3); sub_08028224(this->field_0x80.HALF.LO); } sub_0804A7D4(this); diff --git a/src/enemy/mazaalHead.c b/src/enemy/mazaalHead.c index c450170f..ce77d2c4 100644 --- a/src/enemy/mazaalHead.c +++ b/src/enemy/mazaalHead.c @@ -816,7 +816,7 @@ void sub_08034BC8(Entity* this) { } void sub_08034C00(Entity* this) { - if (((gPlayerState.flags & PL_IS_MINISH) != 0) && + if (((gPlayerState.flags & PL_MINISH) != 0) && CheckPlayerInRegion(this->x.HALF.HI - gRoomControls.roomOriginX, this->y.HALF.HI - gRoomControls.roomOriginY + 0xd, 3, 3) != 0) { if (gScreenTransition.field_0x39 >= 0x3d) { diff --git a/src/enemy/mazaalMacro.c b/src/enemy/mazaalMacro.c index fbb030b8..89eed0d1 100644 --- a/src/enemy/mazaalMacro.c +++ b/src/enemy/mazaalMacro.c @@ -10,7 +10,6 @@ extern void sub_0807B600(u32); extern const u16 script_08012E20[]; -extern const u8 gEntCount; void sub_08034E18(Entity*); void sub_08034FA0(Entity*); diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c index c660bda9..139b1fe0 100644 --- a/src/enemy/vaatiArm.c +++ b/src/enemy/vaatiArm.c @@ -1352,13 +1352,13 @@ void sub_08043DB0(Entity* this) { Entity* pEVar3; Entity* pEVar4; - if (((gPlayerState.flags & PL_IS_MINISH) != 0)) { + if (((gPlayerState.flags & PL_MINISH) != 0)) { pEVar3 = ((VaatiArm_HeapStruct*)this->myHeap)->entities[3]; if (CheckPlayerInRegion(pEVar3->x.HALF.HI - gRoomControls.roomOriginX, pEVar3->y.HALF.HI - gRoomControls.roomOriginY + 2, 3, 3)) { DoExitTransition((ScreenTransitionData*)&gUnk_080D13EC); if ((gScreenTransition.field_0x39 & 3) != 3) { - gScreenTransition.roomID = 1; + gScreenTransition.player_status.room_next = 1; } cVar1 = this->field_0x7a.HWORD; gScreenTransition.field_0x3d = 0x1e - (cVar1 / 0x3c); diff --git a/src/enemy/vaatiProjectile.c b/src/enemy/vaatiProjectile.c index c1cf9435..c8c85e44 100644 --- a/src/enemy/vaatiProjectile.c +++ b/src/enemy/vaatiProjectile.c @@ -68,7 +68,7 @@ void VaatiProjectileFunction1(Entity* this) { gPlayerEntity.spriteRendering.b3 = this->spriteRendering.b3; sub_0803E444(this); #ifndef EU - sub_08078A90(2); + SetPlayerControl(2); entity = this->parent; if (entity != NULL) { entity->flags = entity->flags & 0x7f; @@ -196,7 +196,7 @@ void VaatiProjectileFunction0Action7(Entity* this) { sub_0806F69C(this); sub_0803E4D8(this); if ((gRoomControls.roomOriginY + gRoomControls.height + -0x10) <= this->y.HALF.HI) { - sub_0805E5A8(); + SetInitializationPriority(); DoExitTransition((ScreenTransitionData*)&gUnk_0813AB94); } } diff --git a/src/enemy/vaatiWrath.c b/src/enemy/vaatiWrath.c index 87acecc2..43d870c1 100644 --- a/src/enemy/vaatiWrath.c +++ b/src/enemy/vaatiWrath.c @@ -567,7 +567,7 @@ void sub_08041BE8(Entity* this) { if (sub_08079F8C() != 0) { this->subAction = 1; this->actionDelay = 120; - this->updateConditions = 3; + this->updatePriority = 3; InitAnimationForceUpdate(this, 10); entity = ((VaatiWrathHeapStruct*)this->myHeap)->type1; @@ -576,7 +576,7 @@ void sub_08041BE8(Entity* this) { ((VaatiWrathHeapStruct*)this->myHeap)->type1 = NULL; entity = ((VaatiWrathHeapStruct*)this->myHeap)->type2; - entity->updateConditions = 3; + entity->updatePriority = 3; sub_080AE068(entity); LoadFixedGFX(entity, 0x1f5); sub_0801D2B4(entity, 0x16b); @@ -614,7 +614,7 @@ void sub_08041BE8(Entity* this) { DeleteEntity(entity); ((VaatiWrathHeapStruct*)this->myHeap)->eyes[3] = NULL; - sub_08078A90(2); + SetPlayerControl(2); } } @@ -1001,8 +1001,8 @@ void sub_0804235C(Entity* this) { void VaatiWrathType0PreAction(Entity* this) { int temp; if ((gScreenTransition.field_0x38 & 2) == 0) { - if (gSave.unk498 != 0) { - gSave.unk498--; + if (gSave.unk48C[3] != 0) { + gSave.unk48C[3]--; } else { temp = gPlayerState.field_0xa9; if (temp < 2) { diff --git a/src/enemy/wallMaster.c b/src/enemy/wallMaster.c index fdc73c5b..a0d612f7 100644 --- a/src/enemy/wallMaster.c +++ b/src/enemy/wallMaster.c @@ -165,8 +165,8 @@ void sub_0802A69C(Entity* this) { void sub_0802A734(Entity* this) { sub_0802A7D0(this); if (--this->actionDelay == 0) { - sub_0805E5A8(); - DoExitTransition(gUnk_0813AB1C[gArea.regret]); + SetInitializationPriority(); + DoExitTransition(gUnk_0813AB1C[gArea.dungeon_idx]); } else { this->z.WORD -= 0x20000; gPlayerState.field_0xa |= 0x80; diff --git a/src/enemy/wallMaster2.c b/src/enemy/wallMaster2.c index cde62fa1..03d35e80 100644 --- a/src/enemy/wallMaster2.c +++ b/src/enemy/wallMaster2.c @@ -138,8 +138,8 @@ void sub_0802CE68(Entity* this) { void sub_0802CEF4(Entity* this) { sub_0802CFD8(this); if (--this->actionDelay == 0) { - sub_0805E5A8(); - DoExitTransition(gUnk_0813AB1C[gArea.regret]); + SetInitializationPriority(); + DoExitTransition(gUnk_0813AB1C[gArea.dungeon_idx]); } else { this->z.WORD -= 0x20000; if (this->z.HALF.HI < -0x30) { diff --git a/src/entity.c b/src/entity.c index 8914c1e0..c308b2b6 100644 --- a/src/entity.c +++ b/src/entity.c @@ -7,30 +7,48 @@ #include "script.h" #include "textbox.h" -extern void sub_0805E3A0(void*, u32); extern u8 gUnk_081091F8[]; extern u8 gUnk_081091EE[]; extern u8 gUpdateVisibleTiles; -extern u8 gEntCount; -extern u8 gManagerCount; extern Manager gUnk_02033290; - -void sub_0805E524(void); -void sub_0805E510(u32); void sub_0805ED30(void); void ClearHitboxList(void); void sub_0806F0A4(void); -void UpdateEntities_arm(u32); void sub_0805EE88(void); void ClearAllDeletedEntities(void); void DeleteAllEntities(void); void sub_0805E98C(void); +extern void sub_080AE068(); +extern void UnloadOBJPalette(); +extern void sub_0806FE84(); +extern void sub_080788E0(); +extern void sub_08078954(); +extern void sub_0805EC60(); +extern void sub_08017744(Entity*); +extern void UnloadHitbox(); +extern void sub_0804AA1C(); + +extern void _ClearAndUpdateEntities(); +extern void UpdateEntities_arm(u32); + +void SetPriorityTimer(u32); +static void UpdatePriorityTimer(void); +static void ReleaseTransitionManager(); +static void UnlinkEntity(); + +typedef struct { + void* table; + void* list_top; + Entity* current_entity; + void* restore_sp; +} UpdateContext; +extern UpdateContext gUpdateContext; void sub_0805E248(void) { s32 v0; v0 = gUnk_03004030.unk_00->unk_06; - if (gRoomControls.areaID == 10 || gRoomControls.areaID == 22) { + if (gRoomControls.areaID == AREA_VEIL_FALLS || gRoomControls.areaID == AREA_VEIL_FALLS_DIG_CAVE) { SetTileType(636, v0 - 65, 1); SetTileType(643, v0 - 65, 2); SetTileType(637, v0 - 64, 1); @@ -54,20 +72,19 @@ void sub_0805E248(void) { gUpdateVisibleTiles = 0; } -void sub_0805E374(Entity* param_1) { - u8 r3 = gScreenTransition.field_0x24[8]; +void sub_0805E374(Entity* e) { + u8 r3 = gScreenTransition.player_status.field_0x24[8]; u8* array = gUnk_081091F8; if (r3 != 2) { array = gUnk_081091EE; } - sub_0805E3A0(param_1, array[param_1->kind]); + SetDefaultPriority(e, array[e->kind]); } -void sub_0805E3A0(void* ent, u32 param) { - Entity* e = (Entity*)ent; - e->updateConditions2 = param; - e->updateConditions = param; +void SetDefaultPriority(Entity* ent, u32 prio) { + ent->updatePriorityPrev = prio; + ent->updatePriority = prio; } bool32 CheckDontUpdate(Entity* this) { @@ -78,118 +95,113 @@ bool32 CheckDontUpdate(Entity* this) { if (this->action == 0) return FALSE; - if (gUnk_03003DC0.unk0 > gUnk_03003DC0.unk1) - value = gUnk_03003DC0.unk0; + // pick highest + if (gPriorityHandler.sys_priority > gPriorityHandler.ent_priority) + value = gPriorityHandler.sys_priority; else - value = gUnk_03003DC0.unk1; + value = gPriorityHandler.ent_priority; if (gMessage.doTextBox & 0x7F) - value = value < 2 ? 2 : value; - return value > this->updateConditions; + value = max(value, PRIO_MESSAGE); + return value > this->updatePriority; } -bool32 sub_0805E40C(void) { - u32 v0 = gUnk_03003DC0.unk0; - if (gUnk_03003DC0.unk0 <= gUnk_03003DC0.unk1) - v0 = gUnk_03003DC0.unk1; - return v0 != 0; +bool32 AnyPrioritySet(void) { + u32 prio = gPriorityHandler.sys_priority; + if (gPriorityHandler.sys_priority <= gPriorityHandler.ent_priority) + prio = gPriorityHandler.ent_priority; + return prio != PRIO_MIN; } -s32 sub_0805E428() { - s32 result; - - sub_0805E524(); - if (gUnk_03003DC0.unk2) { - result = 0; - gUnk_03003DC0.unk1 = gUnk_03003DC0.unk2; - gUnk_03003DC0.unk2 = 0; - } else { - result = gUnk_03003DC0.unk3; - if (gUnk_03003DC0.unk3) { - gUnk_03003DC0.unk1 = gUnk_03003DC0.unk3 = 0; - } +static void UpdatePriority() { + UpdatePriorityTimer(); + if (gPriorityHandler.queued_priority) { + gPriorityHandler.ent_priority = gPriorityHandler.queued_priority; + gPriorityHandler.queued_priority = PRIO_MIN; + } else if (gPriorityHandler.queued_priority_reset) { + gPriorityHandler.ent_priority = gPriorityHandler.queued_priority_reset = PRIO_MIN; } - return result; } -s32 sub_0805E450(u32 a1) { - if (a1 < gUnk_03003DC0.unk2 || a1 < gUnk_03003DC0.unk1) +s32 SetMinPriority(u32 prio) { + if (prio < gPriorityHandler.queued_priority || prio < gPriorityHandler.ent_priority) return 0; - gUnk_03003DC0.unk2 = a1; + gPriorityHandler.queued_priority = prio; return 1; } -void sub_0805E470(void) { - gUnk_03003DC0.unk3 = 1; +void ResetEntityPriority(void) { + gPriorityHandler.queued_priority_reset = 1; } -void sub_0805E47C(Entity* this) { - this->updateConditions2 = this->updateConditions; - this->updateConditions = 2; - if (sub_0805E450(2)) - gUnk_03003DC0.unk4 = this; +void RequestPriority(Entity* this) { + this->updatePriorityPrev = this->updatePriority; + this->updatePriority = PRIO_REQUESTED; + if (SetMinPriority(PRIO_REQUESTED)) + gPriorityHandler.requester = this; } -void sub_0805E4A0(Entity* this) { - sub_08078A90(1); - this->updateConditions2 = this->updateConditions; - this->updateConditions = 3; - if (sub_0805E450(1)) - gUnk_03003DC0.unk4 = this; +void RequestPriorityOverPlayer(Entity* this) { + SetPlayerControl(1); + this->updatePriorityPrev = this->updatePriority; + this->updatePriority = PRIO_OVERRIDE_MESSAGE; + if (SetMinPriority(PRIO_PLAYER)) + gPriorityHandler.requester = this; } -void sub_0805E4CC(Entity* this) { - sub_08078A90(0); - sub_0805E584(this); +void RevokePriorityOverPlayer(Entity* this) { + SetPlayerControl(0); + RevokePriority(this); } -void sub_0805E4E0(Entity* a1, u32 a2) { - if (a1 != NULL) { - a1->updateConditions2 = a1->updateConditions; - a1->updateConditions = 3; +void RequestPriorityDuration(Entity* this, u32 time) { + if (this != NULL) { + this->updatePriorityPrev = this->updatePriority; + this->updatePriority = PRIO_OVERRIDE_MESSAGE; } - if (sub_0805E450(1u)) - gUnk_03003DC0.unk4 = a1; - sub_0805E510(a2); + if (SetMinPriority(PRIO_PLAYER)) + gPriorityHandler.requester = this; + SetPriorityTimer(time); } -void sub_0805E510(u32 a1) { - if (gUnk_03003DC0.unk_0xc < a1) - gUnk_03003DC0.unk_0xc = a1; +void SetPriorityTimer(u32 time) { + if (gPriorityHandler.priority_timer < time) + gPriorityHandler.priority_timer = time; } -void sub_0805E524(void) { - if (gUnk_03003DC0.unk_0xc != 0) { - if (--gUnk_03003DC0.unk_0xc << 16 == 0) - sub_0805E470(); +static void UpdatePriorityTimer(void) { + // if timer initialized to zero, priority is indeterminate + if (gPriorityHandler.priority_timer != 0) { + if (--gPriorityHandler.priority_timer == 0) + ResetEntityPriority(); } } -void FreezeTime(void) { - gUnk_03003DC0.unk0 = 6; - gPlayerEntity.updateConditions = 6; +void SetPlayerEventPriority(void) { + gPriorityHandler.sys_priority = PRIO_PLAYER_EVENT; + gPlayerEntity.updatePriority = PRIO_PLAYER_EVENT; } -void UnfreezeTime() { - gUnk_03003DC0.unk0 = 0; - gPlayerEntity.updateConditions = 1; +void ResetPlayerEventPriority() { + gPriorityHandler.sys_priority = PRIO_MIN; + gPlayerEntity.updatePriority = PRIO_PLAYER; } -void sub_0805E584(Entity* e) { - e->updateConditions = e->updateConditions2; - sub_0805E470(); +void RevokePriority(Entity* e) { + e->updatePriority = e->updatePriorityPrev; + ResetEntityPriority(); } -void sub_0805E59C() { - gUnk_03003DC0.unk0 = 6; +void SetRoomReloadPriority() { + gPriorityHandler.sys_priority = PRIO_PLAYER_EVENT; } -void sub_0805E5A8() { - gUnk_03003DC0.unk0 = 7; +void SetInitializationPriority() { + gPriorityHandler.sys_priority = PRIO_INITIALIZING; } -void sub_0805E5B4() { - gUnk_03003DC0.unk0 = 0; +void ResetSystemPriority() { + gPriorityHandler.sys_priority = PRIO_MIN; } void UpdateEntities() { @@ -198,7 +210,7 @@ void UpdateEntities() { gRoomVars.filler1[0] = gRoomVars.field_0x4; gRoomVars.field_0x4 = 0; sub_0805ED30(); - sub_0805E428(); + UpdatePriority(); ClearHitboxList(); sub_0806F0A4(); f = UpdateEntities_arm; @@ -217,7 +229,7 @@ void UpdateManagers() { void EraseAllEntities() { extern u8 gUnk_03000000[]; DeleteAllEntities(); - MemClear(&gUnk_03003DC0, 12); + MemClear(&gPriorityHandler, 12); MemClear(&gPlayerEntity, 10880); MemClear(&gUnk_02033290, 2048); sub_0805E98C(); @@ -258,20 +270,11 @@ void* GetEmptyEntityByKind(u32 kind) { return getter(); } -typedef struct { - int field_0x0; - int field_0x4; - Entity* field_0x8; - int field_0xc; -} struct_03003DD0; - -extern struct_03003DD0 gUnk_03003DD0; -extern u32 _call_via_r0(u32*); -extern u32 _ClearAndUpdateEntities; - void DeleteThisEntity(void) { - DeleteEntityAny(gUnk_03003DD0.field_0x8); - _call_via_r0((u32*)&_ClearAndUpdateEntities); + void (*f)(void); + DeleteEntityAny(gUpdateContext.current_entity); + f = _ClearAndUpdateEntities; + f(); } void DeleteManager(Manager*); @@ -288,18 +291,6 @@ void DeleteEntityAny(Entity* ent) { deleter(ent); } -extern void sub_080AE068(); -extern void UnloadOBJPalette(); -extern void sub_0806FE84(); -extern void sub_080788E0(); -extern void sub_08078954(); -extern void sub_0805EC60(); -extern void sub_08017744(Entity*); -extern void sub_0805E92C(); -extern void UnloadHitbox(); -extern void sub_0804AA1C(); -void UnlinkEntity(); - void DeleteEntity(Entity* ent) { if (ent->next) { sub_080AE068(ent); @@ -309,7 +300,7 @@ void DeleteEntity(Entity* ent) { sub_08078954(ent); sub_0805EC60(ent); sub_08017744(ent); - sub_0805E92C(ent); + ReleaseTransitionManager(ent); UnloadCutsceneData(ent); UnloadHitbox(ent); zFree(ent->myHeap); @@ -335,6 +326,7 @@ void ClearDeletedEntity(Entity*); void ClearAllDeletedEntities(void) { Entity* ent = &gPlayerEntity; do { + //! @bug if prev pointed to a VALID location higher than a signed int, would still be deleted if ((int)ent->prev < 0) { ClearDeletedEntity(ent); } @@ -390,17 +382,18 @@ void DeleteManager(Manager* ent) { if (!ent->next) return; - sub_0805E92C(ent); + ReleaseTransitionManager(ent); UnlinkEntity(ent); MemClear(ent, sizeof(Temp)); gManagerCount--; } -void sub_0805E92C(u32 param_1) { - if (param_1 == gArea.unk2) { - gArea.unk2 = 0; - gArea.unk3 = 0; - gArea.unk4 = 0; +// Removes the entity from the transition manager duty, if applicable +void ReleaseTransitionManager(void* mgr) { + if (mgr == gArea.transitionManager) { + gArea.transitionManager = NULL; + gArea.onEnter = NULL; + gArea.onExit = NULL; } } @@ -485,9 +478,9 @@ void PrependEntityToList(Entity* entity, u32 listIndex) { list->first = entity; } -void UnlinkEntity(Entity* ent) { - if (ent == gUnk_03003DD0.field_0x8) { - gUnk_03003DD0.field_0x8 = ent->prev; +static void UnlinkEntity(Entity* ent) { + if (ent == gUpdateContext.current_entity) { + gUpdateContext.current_entity = ent->prev; } ent->prev->next = ent->next; ent->next->prev = ent->prev; diff --git a/src/fileScreen.c b/src/fileScreen.c index 6f13939d..8a7fe482 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -102,7 +102,7 @@ void CreateDialogBox(u32 arg0, u32 arg1) { sub_08050384(); MemCopy(&gUnk_080FC844, &var0, sizeof(gUnk_080FC844)); - sub_08056FEC(arg1, &gUnk_020227E8); + sub_08056FEC(arg1, gUnk_020227E8); var0.unk10 |= gUnk_080FC85C[arg0][0] << 0xC; sub_0805F46C(gUnk_080FC85C[arg0][1], &var0); sfx = gUnk_080FC85C[arg0][2]; @@ -1098,7 +1098,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void) for (i = 0; i < 3; i++) { if (gUnk_02019EE0.saveStatus[i] == 1) { temp = gUnk_02019EE0.unk6 ^ i; - uVar3 = BOOLCAST(temp) & 4; + uVar3 = !!temp & 4; } else { uVar3++; } diff --git a/src/flags.c b/src/flags.c index f1080cde..8efa3d5b 100644 --- a/src/flags.c +++ b/src/flags.c @@ -3,13 +3,13 @@ #include "flags.h" #include "area.h" -extern u32 ReadBit(u32*, u32); -extern u32 CheckBits(u32*, u32, u32); -extern void WriteBit(u32*, u32); -extern void ClearBit(u32*, u32); +const u16 gLocalFlagBanks[] = { + FLAG_BANK_G, FLAG_BANK_0, FLAG_BANK_1, FLAG_BANK_2, FLAG_BANK_3, FLAG_BANK_4, FLAG_BANK_5, + FLAG_BANK_6, FLAG_BANK_7, FLAG_BANK_8, FLAG_BANK_9, FLAG_BANK_10, FLAG_BANK_11, FLAG_BANK_12, +}; u32 CheckLocalFlag(u32 flag) { - return CheckLocalFlagByOffset(gArea.localFlagOffset, flag); + return CheckLocalFlagByBank(gArea.localFlagOffset, flag); } u32 CheckFlags(u32 flags) { @@ -32,38 +32,38 @@ u32 CheckFlags(u32 flags) { } u32 CheckGlobalFlag(u32 flag) { - return CheckLocalFlagByOffset(0, flag); + return CheckLocalFlagByBank(0, flag); } u32 CheckRoomFlag(u32 flag) { return ReadBit(&gRoomVars.roomFlags, flag); } -u32 CheckLocalFlagsByOffset(u32 flag, u32 offset, u32 length) { +u32 CheckLocalFlagsByBank(u32 flag, u32 offset, u32 length) { return CheckBits(&gGlobalFlags, flag + offset, length); } u32 CheckLocalFlags(u32 flag, u32 length) { - return CheckLocalFlagsByOffset(gArea.localFlagOffset, flag, length); + return CheckLocalFlagsByBank(gArea.localFlagOffset, flag, length); } u32 CheckGlobalFlags(u32 flag, u32 length) { - return CheckLocalFlagsByOffset(0, flag, length); + return CheckLocalFlagsByBank(0, flag, length); } u32 CheckRoomFlags(u32 flag, u32 length) { return CheckBits(&gRoomVars.roomFlags, flag, length); } -void SetLocalFlagByOffset(u32 offset, u32 flag) { +void SetLocalFlagByBank(u32 offset, u32 flag) { if (flag != 0) { WriteBit(&gGlobalFlags, offset + flag); } } void SetLocalFlag(u32 flag) { - SetLocalFlagByOffset(gArea.localFlagOffset, flag); + SetLocalFlagByBank(gArea.localFlagOffset, flag); } void SetFlag(u32 flag) { @@ -88,19 +88,19 @@ void SetFlag(u32 flag) { } void SetGlobalFlag(u32 flag) { - SetLocalFlagByOffset(0, flag); + SetLocalFlagByBank(0, flag); } void SetRoomFlag(u32 flag) { WriteBit(&gRoomFlags, flag); } -void ClearLocalFlagByOffset(u32 offset, u32 flag) { +void ClearLocalFlagByBank(u32 offset, u32 flag) { ClearBit(&gGlobalFlags, offset + flag); } void ClearLocalFlag(u32 flag) { - ClearLocalFlagByOffset(gArea.localFlagOffset, flag); + ClearLocalFlagByBank(gArea.localFlagOffset, flag); } void ClearFlag(u32 flag) { @@ -123,7 +123,7 @@ void ClearFlag(u32 flag) { } void ClearGlobalFlag(u32 flag) { - ClearLocalFlagByOffset(0, flag); + ClearLocalFlagByBank(0, flag); } void ClearRoomFlag(u32 flag) { diff --git a/src/game.c b/src/game.c deleted file mode 100644 index 410ccf38..00000000 --- a/src/game.c +++ /dev/null @@ -1,374 +0,0 @@ -#include "global.h" -#include "screen.h" -#include "screen.h" -#include "entity.h" -#include "player.h" -#include "room.h" -#include "main.h" -#include "flags.h" -#include "save.h" -#include "utils.h" -#include "fileScreen.h" -#include "menu.h" -#include "functions.h" -#include "structures.h" - -extern u8 gArea; -extern Entity gPlayerEntity; -extern u32 gUnk_03003FC0; - -extern u16 gWalletSizes[4]; -extern u8 gUnk_080FCA84[]; -extern u8 gUnk_080FCAC8[]; -extern u8 gAreaMetadata[]; - -void sub_080520C4(); -void sub_08052418(); - -typedef struct { - u8 _0[8]; - u8 _8[2]; - u16 _a[13]; -} struct_080FCAA4; -static_assert(sizeof(struct_080FCAA4) == 0x24); - -typedef struct { - void* _0; - void* _4; - void* _8; - u32 _c; - u8 _10; - u8 _11; - u8 _12; - u8 _13; - u32 _14; -} struct_080FCA8C; -static_assert(sizeof(struct_080FCA8C) == 0x18); - -extern struct_080FCA8C gUnk_080FCA8C; -extern struct_080FCAA4 gUnk_080FCAA4; - -extern void CreateDialogBox(); - -void sub_0805212C(void) { - if (gFadeControl.active) - return; - - if (gMain.field_0x5 == 0) { - if (gMenu.focusCoords[0] >= 0x26) { - gMenu.focusCoords[0]--; - } else { - gMenu.transitionTimer--; - if (gMenu.transitionTimer == 0) { - sub_080520C4(2); -#if defined(DEMO_USA) || defined(DEMO_JP) - SoundReq(0x80080000); - DoFade(7, 4); -#else - sub_08052418(0, 0); - gScreen.lcd.displayControl |= 0x600; - gFadeControl.mask = 0x0000ffff; - DoFade(4, 0x10); -#endif - } - } - } else { - gMain.field_0x5--; - } -} - -#if defined(DEMO_USA) || defined(DEMO_JP) -void sub_080521A0(void) { - if (gFadeControl.active == 0) { - DoSoftReset(); - } -} -#else -void sub_080521A0(void) { - s32 temp3; - u32 temp2; - - if (gFadeControl.active) - return; - - switch (gMenu.menuType) { - case 0: - gMenu.transitionTimer = 0x1e; - gMenu.field_0x3 = 0; - sub_080A7114(1); - sub_08052418(0, 0); - gFadeControl.mask = 0xffffffff; - break; - case 1: - if (gMenu.transitionTimer == 0) { - u32 temp = gMenu.field_0x3; - switch (gInput.newKeys) { - case 0x40: - temp = 0; - break; - case 0x80: - temp = 1; - break; - case 0x1: - if (gMenu.field_0x3 != 0) { - temp2 = 4; - } else { - CreateDialogBox(8, 0); - temp2 = 2; - } - gMenu.transitionTimer = 0x3c; - sub_080A7114(temp2); - SoundReq(SFX_TEXTBOX_SELECT); - break; - } - if (gMenu.field_0x3 != temp) { - gMenu.field_0x3 = temp; - sub_08052418(0, temp); - SoundReq(SFX_TEXTBOX_CHOICE); - } - break; - } - gMenu.transitionTimer--; - break; - case 2: - temp3 = HandleSave(0); - gMenu.field_0x0 = temp3; - switch (temp3) { - case 1: - sub_080A7114(4); - break; - case -1: - gMenu.transitionTimer = 0x3c; - CreateDialogBox(9, 0); - sub_080A7114(3); - break; - } - break; - case 3: - if (gMenu.transitionTimer != 0) { - gMenu.transitionTimer--; - } else if ((gInput.newKeys & 0xb) != 0) { - sub_080A7114(0); - } - break; - case 4: - default: - gScreen.lcd.displayControl = gScreen.lcd.displayControl & 0xfdff; - sub_08050384(); - sub_080520C4(3); - break; - } -} -#endif - -void sub_080522F4(void) { - switch (gMenu.menuType) { - case 0x0: - gMenu.transitionTimer = 0x1e; - gMenu.field_0x3 = 0; - sub_080A7114(1); - sub_08052418(1, 0); - break; - case 0x1: - gScreen.lcd.displayControl |= 0x200; - if (gMenu.transitionTimer != 0) { - gMenu.transitionTimer--; - } else { - u32 temp = gMenu.field_0x3; - switch (gInput.newKeys) { - case 0x40: - temp = 0; - break; - case 0x80: - temp = 1; - break; - case 0x1: - sub_080A7114(2); - SoundReq(SFX_TEXTBOX_SELECT); - if (temp == 0) { - DoFade(5, 8); - } else { - DoFade(7, 8); - } - break; - } - if (gMenu.field_0x3 != temp) { - gMenu.field_0x3 = temp; - sub_08052418(1, temp); - SoundReq(SFX_TEXTBOX_CHOICE); - } - } - break; - case 0x2: - default: - if (gFadeControl.active == 0) { - if (gMenu.field_0x3 == 0) { - InitScreen(2); - } else { - DoSoftReset(); - } - } - break; - } -} - -void nullsub_107(void) { -} - -void sub_080523D4(void) { - u32 i; - - gOamCmd._4 = 0; - gOamCmd._6 = 0; - gOamCmd._8 = 0x8600; - gOamCmd.y = gMenu.focusCoords[0]; - for (i = 0; i < 8; ++i) { - gOamCmd.x = gUnk_080FCA84[i]; -#ifdef EU - sub_080ADA14(0x1fc, i); -#else - sub_080ADA14(0x1fd, i); -#endif - } -} - -// not sure how to approach this! -NONMATCH("asm/non_matching/game/sub_08052418.inc", void sub_08052418(int param_1, int param_2)) { - int i; - struct_080FCA8C temp; - - MemClear(&gBG1Buffer, 0x800); - gUnk_020227E8._0[0].WORD = 0xf; - gUnk_020227E8._0[2].WORD = 0xf; - gUnk_020227E8._0[4].WORD = 0xf; - gUnk_020227E8._0[6].WORD = 0xf; - gUnk_020227E8._0[param_2 * 2].BYTES.byte1 = 1; - MemCopy(&gUnk_080FCA8C, &temp, sizeof(temp)); - i = param_1 * 0xc; - // temp._0 = gBG1Buffer[gUnk_080FCAA4._8[param_1]][gUnk_080FCAA4._0[gSaveHeader->gameLanguage + i]] * 2; - temp._13 = ((temp._13 & 0xfe) | gUnk_080FCAA4._8[i + 1]) & 1; - sub_0805F46C(gUnk_080FCAA4._a[param_1], &temp); - gScreen.bg1.xOffset = 1; -} -END_NONMATCH - -void InitializePlayer(void) { - Entity* pl; - - sub_080784C8(); - MemClear((void*)&gUnk_03000B80, sizeof(gUnk_03000B80)); - MemClear((void*)&gPlayerState, 0xb0); - - MemFill32(0xffffffff, &gPlayerState.hurtType, 0x40); - pl = &gPlayerEntity; - MemClear((void*)pl, 0x88); - gRoomControls.cameraTarget = pl; - gPlayerState.playerAction = gUnk_080FCAC8[gScreenTransition.field_0xf]; - if (!CheckGlobalFlag(EZERO_1ST)) { - gPlayerState.flags |= 8; - } - switch (gScreenTransition.field_0xf) { - case 0x2: - case 0x6: - pl->z.HALF.HI = -0xc0; - break; - case 0x4: - gPlayerState.field_0x34[4] = 0x10; - pl->direction = gScreenTransition.playerState << 2; - case 0x3: - pl->speed = 0xe0; - break; - case 0x7: - case 0x8: - gPlayerState.field_0x34[4] = 1; - gPlayerState.field_0x34[5] = gScreenTransition.field_0xf; - break; - case 0xa: - gPlayerState.field_0x34[4] = 1; - break; - case 0xb: - gPlayerState.field_0x34[4] = 3; - break; - case 0xc: - gPlayerState.field_0x34[4] = 4; - } - pl->kind = 1; - pl->flags |= 0xa0; - pl->spritePriority.b0 = 4; - pl->health = gSave.stats.health; - pl->x.HALF.HI = gScreenTransition.playerStartPos.HALF.x; - pl->y.HALF.HI = gScreenTransition.playerStartPos.HALF.y; - pl->animationState = gScreenTransition.playerState; - pl->collisionLayer = gScreenTransition.playerLayer; - UpdateSpriteForCollisionLayer(pl); - AppendEntityToList(pl, 1); - RegisterPlayerHitbox(); -} - -bool32 sub_08052620(u32 r0) { -#ifdef EU - return gArea == 0x01; -#else - return gArea == 0x81; -#endif -} - -bool32 sub_08052638(u32 r0) { -#if EU - return gAreaMetadata[r0 * 4] == 0x01; -#else - return gAreaMetadata[r0 * 4] == 0x81; -#endif -} - -#ifndef EU -u32 sub_08052654() { - return (gArea >> 7) & 1; -} -#endif - -u32 CheckIsDungeon(void) { - return (gArea >> 2) & 1; -} - -u32 sub_08052670() { - return (gArea >> 4) & 1; -} - -u32 sub_08052680() { - return (gArea >> 6) & 1; -} - -u32 sub_08052690() { - return (gArea >> 3) & 1; -} - -s32 ModHealth(s32 deltaHealth) { - s32 newHealth; - - newHealth = gStats.health + deltaHealth; - if (newHealth < 0) { - newHealth = 0; - } - if (gStats.maxHealth < newHealth) { - newHealth = (u32)gStats.maxHealth; - } - gStats.health = newHealth; - gPlayerEntity.health = newHealth; - return newHealth; -} - -void ModRupees(s32 rupeeDelta) { - s32 newRupeeCount; - Stats* s = &gStats; - - newRupeeCount = s->rupees + rupeeDelta; - if (newRupeeCount < 0) { - newRupeeCount = 0; - } else { - if (newRupeeCount > gWalletSizes[s->walletType * 2]) { - newRupeeCount = gWalletSizes[s->walletType * 2]; - } - } - s->rupees = newRupeeCount; -} diff --git a/src/item/itemLantern.c b/src/item/itemLantern.c index 0f49cec6..acb3a728 100644 --- a/src/item/itemLantern.c +++ b/src/item/itemLantern.c @@ -21,7 +21,7 @@ void sub_08075A0C(ItemBehavior* this, u32 arg1) { s8* tmp; itemSlot = IsItemEquipped(this->behaviorID); if (gPlayerState.heldObject != 0 || gPlayerState.playerAction == 0x18 || gPlayerState.jumpStatus != 0 || - gPlayerState.field_0x2c != NULL || (gPlayerState.flags & PL_IS_MINISH) != 0) { + gPlayerState.field_0x2c != NULL || (gPlayerState.flags & PL_MINISH) != 0) { ForceEquipItem(0xf, itemSlot); gPlayerState.flags &= 0xff7fffff; ForceEquipItem(0xf, itemSlot); diff --git a/src/item/itemOcarina.c b/src/item/itemOcarina.c index bd5e044e..7b705446 100644 --- a/src/item/itemOcarina.c +++ b/src/item/itemOcarina.c @@ -5,10 +5,10 @@ extern void (*const gOcarinaStates[4])(ItemBehavior*, u32); extern void sub_08078F60(void); -extern void FreezeTime(void); +extern void SetPlayerEventPriority(void); extern void CreateBird(void); -extern void UnfreezeTime(void); +extern void ResetPlayerEventPriority(void); void ItemOcarina(ItemBehavior* this, u32 arg1) { gOcarinaStates[this->stateID](this, arg1); @@ -32,7 +32,7 @@ void OcarinaUse(ItemBehavior* this, u32 arg1) { sub_08078F60(); sub_08077D38(this, arg1); SoundReq(SFX_216); - FreezeTime(); + SetPlayerEventPriority(); } } @@ -45,7 +45,7 @@ NONMATCH("asm/non_matching/ocarina/OcarinaUpdate.inc", void OcarinaUpdate(ItemBe gPlayerState.field_0x27[0] = 0; gUnk_02034490[0] = 0; CreateBird(); - UnfreezeTime(); + ResetPlayerEventPriority(); sub_08077E78(this, arg1); } } diff --git a/src/item/itemPegasusBoots.c b/src/item/itemPegasusBoots.c index 07b78a94..6804c425 100644 --- a/src/item/itemPegasusBoots.c +++ b/src/item/itemPegasusBoots.c @@ -23,7 +23,7 @@ void ItemPegasusBoots(ItemBehavior* this, u32 arg1) { if ((bVar1 & 7) == 0) { SoundReq(SFX_PLY_LAND); } - if (((gPlayerState.flags & PL_IS_MINISH) == 0) && ((this->field_0x5[2] & 7) == 0)) { + if (((gPlayerState.flags & PL_MINISH) == 0) && ((this->field_0x5[2] & 7) == 0)) { if (gPlayerState.field_0x10[2] == 0x11) { if (gPlayerEntity.spriteOffsetY == 0) { CreateFx(&gPlayerEntity, FX_GREEN_SPLASH, 0); @@ -58,7 +58,7 @@ void sub_080768F8(ItemBehavior* this, u32 arg1) { if (bVar1 == 0) { gPlayerState.field_0x1d[1] = 1; gPlayerState.field_0x1d[4] = bVar1; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { this->field_0x5[2] = 0x10; } else { gPlayerState.field_0x8 = 0xc14; diff --git a/src/item/itemSword.c b/src/item/itemSword.c index ea6789bb..50abf71a 100644 --- a/src/item/itemSword.c +++ b/src/item/itemSword.c @@ -121,7 +121,7 @@ void sub_080758B0(ItemBehavior* this, u32 arg1) { ASM_FUNC("asm/non_matching/itemSword/sub_08075900.inc", void sub_08075900(ItemBehavior* this, u32 arg1)) void sub_080759B8(ItemBehavior* this, u32 arg1) { - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { gPlayerEntity.hurtType = 0; } gPlayerState.flags &= 0xf7ffffff; diff --git a/src/loadRoom.c b/src/loadRoom.c index b7bccd3a..4ca4aa43 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -114,7 +114,7 @@ void sub_0804AF0C(Entity* ent, EntityData* dat) { } void sub_0804AF90(void) { - sub_0804AFB0(gArea.field_0x85c[7]); + sub_0804AFB0(gArea.pCurrentRoomInfo->properties); sub_080A7C7C(); } diff --git a/src/main.c b/src/main.c index a3735224..820b5560 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,9 @@ extern void HandleGameOverScreen(void); extern void HandleCreditsScreen(void); extern void HandleDebugTextScreen(void); +static void sub_08055F70(void); +static bool32 SoftResetKeysPressed(void); + void (*const sScreenHandlers[])(void) = { [SCREEN_INTRO] = HandleIntroScreen, #ifdef DEMO_USA @@ -197,7 +200,7 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) { } temp = gUnk_02000010.signature ^ SIGNATURE; - b = BOOLCAST(temp); + b = !!temp; if ((gUnk_02000010.field_0x4 != 0) && (gUnk_02000010.field_0x4 != 0xc1)) { b = TRUE; @@ -210,15 +213,15 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) { END_NONMATCH u32 sub_08056134(void) { + + if ((gSaveHeader->signature != SIGNATURE) || (gSaveHeader->saveFileId >= NUM_SAVE_SLOTS) || + (gSaveHeader->messageSpeed >= MAX_MSG_SPEED) || (gSaveHeader->brightnessPref >= MAX_BRIGHTNESS) #ifdef EU - if ((gSaveHeader->signature != SIGNATURE) || (gSaveHeader->saveFileId >= NUM_SAVE_SLOTS) || - (gSaveHeader->messageSpeed >= MAX_MSG_SPEED) || (gSaveHeader->brightnessPref >= MAX_BRIGHTNESS) || - (gSaveHeader->gameLanguage <= GAME_LANGUAGE) || (gSaveHeader->gameLanguage >= 7) || (gSaveHeader->_e != 0)) + || (gSaveHeader->gameLanguage <= GAME_LANGUAGE) || (gSaveHeader->gameLanguage > NUM_LANGUAGES) #else - if ((gSaveHeader->signature != SIGNATURE) || (gSaveHeader->saveFileId >= NUM_SAVE_SLOTS) || - (gSaveHeader->messageSpeed >= MAX_MSG_SPEED) || (gSaveHeader->brightnessPref >= MAX_BRIGHTNESS) || - (gSaveHeader->gameLanguage != GAME_LANGUAGE) || (gSaveHeader->_e != 0)) + || (gSaveHeader->gameLanguage != GAME_LANGUAGE) #endif + || (gSaveHeader->_e != 0)) return FALSE; return TRUE; diff --git a/src/manager/manager1.c b/src/manager/manager1.c index 037d5182..bbc743ce 100644 --- a/src/manager/manager1.c +++ b/src/manager/manager1.c @@ -54,7 +54,7 @@ void sub_08057118(Entity* this) { gScreen.lcd.displayControl |= 0x800; gScreen.controls.layerFXControl = 0x3648; gScreen.controls.alphaBlend = 0x1000; - sub_08052D74(this, sub_080570B8, sub_080570F8); + RegisterTransitionManager(this, sub_080570B8, sub_080570F8); } ASM_FUNC("asm/non_matching/manager1/sub_08057174.inc", void sub_08057174()) diff --git a/src/manager/manager10.c b/src/manager/manager10.c index 2207a7eb..04e78cd5 100644 --- a/src/manager/manager10.c +++ b/src/manager/manager10.c @@ -44,7 +44,7 @@ void Manager10_Main(Manager10* this) { this->unk_22 = 5; } gRoomVars.unk_10[0] = 0xFF; - sub_08052D74(this, sub_080595E4, 0); + RegisterTransitionManager(this, sub_080595E4, 0); } sub_08059608(this); sub_08059690(this); diff --git a/src/manager/manager12.c b/src/manager/manager12.c index 7ab89be8..36a044d4 100644 --- a/src/manager/manager12.c +++ b/src/manager/manager12.c @@ -1,3 +1,4 @@ +#include "area.h" #include "manager.h" #include "room.h" #include "functions.h" @@ -46,8 +47,8 @@ void Manager12_Main(Manager12* this) { this->field_0x22 = 0xff; this->field_0x21 = 0xff; this->field_0x20 = 0xff; - sub_08052D74(this, sub_08059A2C, NULL); - sub_0805E3A0(this, 6); + RegisterTransitionManager(this, sub_08059A2C, NULL); + SetDefaultPriority((Entity*)this, 6); } sub_08059A58(this); } @@ -63,7 +64,7 @@ void sub_08059A2C(Manager12* this) { } void sub_08059A58(Manager12* this) { - if (gRoomControls.areaID != 0x15) { + if (gRoomControls.areaID != AREA_FESTIVAL_TOWN) { if (sub_08059C8C(this, 0, &this->field_0x20, &gUnk_08108398) != 0) { sub_08059CC0(0, (u32)this->field_0x20); } @@ -140,7 +141,7 @@ void sub_08059CC0(u32 param_1, u32 param_2) { Unknown* unknown; gRoomVars.unk_10[param_1] = param_2; - if (gRoomControls.areaID != 0x15) { + if (gRoomControls.areaID != AREA_FESTIVAL_TOWN) { unknown = &gUnk_08108408[param_2]; } else { unknown = &gUnk_08108468[param_2]; @@ -152,7 +153,7 @@ void sub_08059CC0(u32 param_1, u32 param_2) { void TryLoadPrologueHyruleTown(void) { u32 tmp; - if (gRoomControls.areaID != 0x15) { + if (gRoomControls.areaID != AREA_FESTIVAL_TOWN) { tmp = sub_08056300(&gUnk_08108398); if (tmp != 0xff) { sub_08059CC0(0, tmp); diff --git a/src/manager/manager13.c b/src/manager/manager13.c index 36598b1e..409fdbb7 100644 --- a/src/manager/manager13.c +++ b/src/manager/manager13.c @@ -1,3 +1,4 @@ +#include "area.h" #include "manager.h" #include "room.h" #include "object.h" @@ -32,7 +33,7 @@ void Manager13_Main(Manager13* this) { if (this->manager.action == 0) { this->manager.action = 1; } - if (gRoomControls.areaID == 0x15) { + if (gRoomControls.areaID == AREA_FESTIVAL_TOWN) { spawnData = gUnk_08108530; } else { spawnData = gUnk_081084C8; diff --git a/src/manager/manager14.c b/src/manager/manager14.c index 0b98f542..31f827c0 100644 --- a/src/manager/manager14.c +++ b/src/manager/manager14.c @@ -61,7 +61,7 @@ void sub_08059E80(Manager14* this) { gScreen.controls.alphaBlend = 0x1000; gScreen.bg3.xOffset = 0x80; gScreen.bg3.yOffset = 0; - sub_08052D74(this, nullsub_495, sub_0805A25C); + RegisterTransitionManager(this, nullsub_495, sub_0805A25C); } void sub_08059EF8(Manager14* this) { diff --git a/src/manager/manager15.c b/src/manager/manager15.c index a326116b..27a5e825 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -304,8 +304,8 @@ void sub_0805A76C(Manager15* this) { this->manager.action++; sub_08004168(&gPlayerEntity); gPlayerEntity.animationState = 4; - sub_0805E4E0((Entity*)this, 0x258); - sub_08078A90(0xFF); + RequestPriorityDuration((Entity*)this, 0x258); + SetPlayerControl(0xFF); gUnk_02034490[0] = 1; gRoomControls.cameraTarget = 0; sub_08077B20(); @@ -332,7 +332,7 @@ void sub_0805A804(Manager15* this) { } this->manager.unk_0d = 1; this->manager.unk_10 |= 0x20; - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); break; case 1: if (CheckLocalFlag(this->unk_3e)) @@ -364,7 +364,7 @@ void sub_0805A804(Manager15* this) { void sub_0805AAC8(Manager15*); void sub_0805A89C(Manager15* this) { - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); this->manager.action = 1; this->manager.unk_10 |= 0x20; this->manager.unk_0e = 8; @@ -374,7 +374,7 @@ void sub_0805A89C(Manager15* this) { this->unk_20 = gRoomControls.roomID; this->unk_24 = gRoomControls.roomOriginX; this->unk_26 = gRoomControls.roomOriginY; - sub_08052D74(this, sub_0805AAC8, 0); + RegisterTransitionManager(this, sub_0805AAC8, 0); } void sub_0805A94C(Manager15* this); diff --git a/src/manager/manager18.c b/src/manager/manager18.c index dd7d553e..1d797c5c 100644 --- a/src/manager/manager18.c +++ b/src/manager/manager18.c @@ -14,7 +14,7 @@ extern u16 gUnk_0810865C[]; void Manager18_Main(Manager18* this) { if (this == NULL) { - if (gArea.unk3 != (u32)sub_0805AEDC) { + if (gArea.onEnter != sub_0805AEDC) { sub_0805AEDC(NULL); } } else { @@ -24,9 +24,9 @@ void Manager18_Main(Manager18* this) { this->manager.unk_0e = 0; this->manager.unk_0f = 8; this->field_0x20 = gUnk_0810865C[0]; - sub_0805E3A0(this, 6); - if (gArea.unk3 == 0) { - sub_08052D74(this, sub_0805AEDC, sub_0805AF3C); + SetDefaultPriority((Entity*)this, 6); + if (gArea.onEnter == NULL) { + RegisterTransitionManager(this, sub_0805AEDC, sub_0805AF3C); } else { DeleteThisEntity(); } diff --git a/src/manager/manager19.c b/src/manager/manager19.c index 6c03287a..a6118c5c 100644 --- a/src/manager/manager19.c +++ b/src/manager/manager19.c @@ -8,16 +8,16 @@ void sub_0805AFFC(Manager*); void Manager19_Main(Manager* this) { if (this == NULL) { - if ((void*)gArea.unk3 != sub_0805AFFC) { + if ((void*)gArea.onEnter != sub_0805AFFC) { sub_0805AFFC(this); } } else { if (this->action == 0) { this->action = 1; this->unk_10 |= 0x20; - sub_0805E3A0(this, 6); - if (gArea.unk3 == 0) { - sub_08052D74(this, sub_0805AFFC, NULL); + SetDefaultPriority((Entity*)this, 6); + if (gArea.onEnter == NULL) { + RegisterTransitionManager(this, sub_0805AFFC, NULL); } else { DeleteThisEntity(); } diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index d828bff5..cc5ab45e 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -68,7 +68,7 @@ void sub_0805B328(Manager1A*); void sub_0805B048(Manager1A* this) { struct_08108764* tmp; Entity* obj; - sub_0805E3A0(&this->manager, 6); + SetDefaultPriority((Entity*)&this->manager, 6); MemClear(&this->unk_20, 0x20); this->manager.action = 1; this->unk_3f = gRoomControls.roomID; @@ -94,7 +94,7 @@ void sub_0805B048(Manager1A* this) { sub_0805BC4C(); sub_0805B2B0(this); sub_0805B328(this); - sub_08052D74(this, sub_0805B328, 0); + RegisterTransitionManager(this, sub_0805B328, 0); } if (!tmp->unk_10) return; @@ -149,30 +149,32 @@ u32 sub_0805B1CC(Manager1A* this) { void sub_0805B210(Manager1A* this) { struct_08108764* tmp; gScreenTransition.transitioningOut = 1; - gScreenTransition.transitionType = 1; - gScreenTransition.playerState = 4; + gScreenTransition.transitionType = TRANSITION_CUT; + gScreenTransition.player_status.start_anim = 4; tmp = &gUnk_08108764[this->manager.unk_0a]; - gScreenTransition.areaID = tmp->unk_01; - gScreenTransition.roomID = tmp->unk_02; - gScreenTransition.playerLayer = tmp->unk_03; - if (gPlayerState.flags & PL_IS_MINISH) { - gScreenTransition.field_0xf = 6; + gScreenTransition.player_status.area_next = tmp->unk_01; + gScreenTransition.player_status.room_next = tmp->unk_02; + gScreenTransition.player_status.layer = tmp->unk_03; + if (gPlayerState.flags & PL_MINISH) { + gScreenTransition.player_status.spawn_type = 6; } else { - gScreenTransition.field_0xf = 2; + gScreenTransition.player_status.spawn_type = 2; } switch (tmp->unk_00) { case 0: - gScreenTransition.playerStartPos.HALF.x = tmp->unk_04; - gScreenTransition.playerStartPos.HALF.y = tmp->unk_06; + gScreenTransition.player_status.start_pos.HALF.x = tmp->unk_04; + gScreenTransition.player_status.start_pos.HALF.y = tmp->unk_06; break; case 1: - gScreenTransition.playerStartPos.HALF.x = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX + tmp->unk_04; - gScreenTransition.playerStartPos.HALF.y = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY + tmp->unk_06; + gScreenTransition.player_status.start_pos.HALF.x = + gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX + tmp->unk_04; + gScreenTransition.player_status.start_pos.HALF.y = + gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY + tmp->unk_06; break; case 2: - gScreenTransition.playerStartPos.HALF.x = tmp->unk_04; - gScreenTransition.playerStartPos.HALF.y = tmp->unk_06; - gScreenTransition.field_0xf = 6; + gScreenTransition.player_status.start_pos.HALF.x = tmp->unk_04; + gScreenTransition.player_status.start_pos.HALF.y = tmp->unk_06; + gScreenTransition.player_status.spawn_type = 6; break; } } diff --git a/src/manager/manager1B.c b/src/manager/manager1B.c index 47fd8714..c2392fdc 100644 --- a/src/manager/manager1B.c +++ b/src/manager/manager1B.c @@ -29,9 +29,9 @@ void Manager1B_Main(Manager1B* this) { if (this->manager.action == 0) { this->manager.action = 1; this->manager.unk_10 |= 0x20; - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); if (this->manager.unk_0a != 0) { - sub_08052D74(this, sub_0805B4B4, NULL); + RegisterTransitionManager(this, sub_0805B4B4, NULL); } iVar3 = 0x100 - (u32)gRoomControls.height; if (iVar3 < 0) { diff --git a/src/manager/manager2.c b/src/manager/manager2.c index 05fe08f7..9dcb74f2 100644 --- a/src/manager/manager2.c +++ b/src/manager/manager2.c @@ -23,7 +23,7 @@ void Manager2_Main(Manager2* this) { this->manager.action = 1; gScreen.bg3.updated = 0; gScreen.bg1.updated = 0; - sub_08052D74(this, sub_080576A0, 0); + RegisterTransitionManager(this, sub_080576A0, 0); } sub_0805754C(this); } diff --git a/src/manager/manager24.c b/src/manager/manager24.c index 88a5a8e9..df298020 100644 --- a/src/manager/manager24.c +++ b/src/manager/manager24.c @@ -28,7 +28,7 @@ extern u32 sub_080002C8(u16, u8); extern void (*const gUnk_08108CE8[])(u32, u32); u32 sub_0805C608(void); -extern u32 sub_08052670(void); +extern u32 CheckIsInteriorWithEnemies(void); extern u8 gUnk_08108CFC[]; @@ -103,7 +103,7 @@ void sub_0805C050(u32 pos, u32 layer) { SetTileType(0xb4, pos - 1, layer); SetTileType(0xb7, pos + 1, layer); if (layer == 1) { - if (sub_08052670() != 0) { + if (CheckIsInteriorWithEnemies() != 0) { Entity* object = CreateObject(ARCHWAY, 0xe, 0); if (object != NULL) { object->x.HALF.HI = ((pos & 0x3f) << 4) + 8 + gRoomControls.roomOriginX; @@ -147,7 +147,7 @@ void sub_0805C178(u32 pos, u32 layer) { SetTileType(0xf7, pos + 0x41, layer); if (layer == 1) { - if (sub_08052670() != 0) { + if (CheckIsInteriorWithEnemies() != 0) { object = CreateObject(ARCHWAY, 0xe, 1); if (object != NULL) { @@ -189,7 +189,7 @@ void sub_0805C294(u32 pos, u32 layer) { SetTileType(0xd6, pos + 0x40, layer); SetTileType(0xd7, pos + 0x41, layer); if (layer == 1) { - if (sub_08052670() != 0) { + if (CheckIsInteriorWithEnemies() != 0) { object = CreateObject(0x4f, 0xe, 2); if (object != NULL) { object->x.HALF.HI = ((pos & 0x3f) << 4) + 8 + gRoomControls.roomOriginX; @@ -230,7 +230,7 @@ void sub_0805C3B4(u32 pos, u32 layer) { SetTileType(0xe3, pos + 0x3f, layer); SetTileType(0xe7, pos + 0x40, layer); if (layer == 1) { - if (sub_08052670() != 0) { + if (CheckIsInteriorWithEnemies() != 0) { object = CreateObject(ARCHWAY, 0xe, 3); if (object != NULL) { object->x.HALF.HI = ((pos & 0x3f) << 4) + -0x10 + gRoomControls.roomOriginX; @@ -272,7 +272,7 @@ void sub_0805C4E0(u32 pos, u32 layer) { SetTileType(0xc4, pos - 1, layer); SetTileType(0xc7, pos + 1, layer); if (layer == 1) { - if (sub_08052670() != 0) { + if (CheckIsInteriorWithEnemies() != 0) { object = CreateObject(ARCHWAY, 0xe, 0); if (object != NULL) { object->x.HALF.HI = ((pos & 0x3f) << 4) + 8 + gRoomControls.roomOriginX; @@ -306,5 +306,5 @@ void sub_0805C4E0(u32 pos, u32 layer) { } u32 sub_0805C608(void) { - return gUnk_08108CFC[gArea.regret]; + return gUnk_08108CFC[gArea.dungeon_idx]; } diff --git a/src/manager/manager26.c b/src/manager/manager26.c index 3eb4329e..3a143e21 100644 --- a/src/manager/manager26.c +++ b/src/manager/manager26.c @@ -76,7 +76,7 @@ void sub_0805C7C4(Manager26* this) { } void sub_0805C7CC(Manager26* this) { - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { if (gPlayerEntity.y.HALF.HI < this->unk_2a + 0x10) { this->manager.unk_0d = 1; } else { diff --git a/src/manager/manager27.c b/src/manager/manager27.c index 89964893..1addc549 100644 --- a/src/manager/manager27.c +++ b/src/manager/manager27.c @@ -18,7 +18,7 @@ const u8 gUnk_08108D20[] = { 0x6F, 0x70, 0x71, 0x72, 0x71, 0x70 }; void Manager27_Main(Entity* this) { gUnk_08108D10[this->action](this); - if (CheckLocalFlagByOffset(0x300, this->type + 0x67)) { + if (CheckLocalFlagByBank(0x300, this->type + 0x67)) { gScreenTransition.field_0xac |= (1 << this->type); } else { gScreenTransition.field_0xac &= ~(1 << this->type); @@ -75,5 +75,5 @@ void sub_0805C908(Entity* this) { } u32 sub_0805C920(Entity* this) { - return CheckLocalFlagByOffset(0x300, this->type + 0x67); + return CheckLocalFlagByBank(0x300, this->type + 0x67); } diff --git a/src/manager/manager2C.c b/src/manager/manager2C.c index 08865658..1ff17776 100644 --- a/src/manager/manager2C.c +++ b/src/manager/manager2C.c @@ -21,15 +21,15 @@ void Manager2C_Main(Manager2C* manager) { if (((CheckPlayerInRegion(manager->field_0x38, manager->field_0x3a, 0x14, 0x40) != 0) && (((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) + gPlayerEntity.z.HALF.HI) < 0)) && (gRoomControls.roomScrollY == gRoomControls.roomOriginY)) { - MemClear(&gScreenTransition.areaID, 0x20); + MemClear(&gScreenTransition.player_status, 0x20); gScreenTransition.transitioningOut = 1; - gScreenTransition.transitionType = 0; - gScreenTransition.field_0xf = 0xb; - gScreenTransition.areaID = manager->manager.unk_0b; - gScreenTransition.roomID = manager->manager.unk_0e; - gScreenTransition.playerState = manager->field_0x37; - gScreenTransition.playerStartPos.HALF.x = manager->field_0x3c; - gScreenTransition.playerStartPos.HALF.y = manager->field_0x3e; - gScreenTransition.playerLayer = manager->field_0x36; + gScreenTransition.transitionType = TRANSITION_DEFAULT; + gScreenTransition.player_status.spawn_type = 0xb; + gScreenTransition.player_status.area_next = manager->manager.unk_0b; + gScreenTransition.player_status.room_next = manager->manager.unk_0e; + gScreenTransition.player_status.start_anim = manager->field_0x37; + gScreenTransition.player_status.start_pos.HALF.x = manager->field_0x3c; + gScreenTransition.player_status.start_pos.HALF.y = manager->field_0x3e; + gScreenTransition.player_status.layer = manager->field_0x36; } } diff --git a/src/manager/manager2E.c b/src/manager/manager2E.c index f52c185e..19205a28 100644 --- a/src/manager/manager2E.c +++ b/src/manager/manager2E.c @@ -42,21 +42,21 @@ void sub_0805D280(Manager2E* this) { if (this->manager.unk_0e == 0) { this->manager.unk_0e = 0x1e; } - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); } void sub_0805D2C0(Manager2E* this) { - if ((CheckFlags(this->field_0x3e) != 0) && (gUnk_03003DC0.unk_0xc < 2)) { + if ((CheckFlags(this->field_0x3e) != 0) && (gPriorityHandler.priority_timer < 2)) { this->manager.action = 2; if (this->manager.unk_0e == 1) { sub_0805D2F4(this); } - sub_0805E4E0((Entity*)this, this->manager.unk_0e); + RequestPriorityDuration((Entity*)this, this->manager.unk_0e); } } void sub_0805D2F4(Manager2E* this) { - if (gUnk_03003DC0.unk_0xc == 0) { + if (gPriorityHandler.priority_timer == 0) { if (this->field_0x38 != SFX_NONE) { SoundReq(this->field_0x38); } else { @@ -80,7 +80,7 @@ void sub_0805D344(Manager2E* this) { this->manager.unk_0e = 0x1e; } this->manager.unk_0f = this->manager.unk_0e; - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); } void sub_0805D36C(Manager2E* this) { diff --git a/src/manager/manager2F.c b/src/manager/manager2F.c index a86073ae..84619e66 100644 --- a/src/manager/manager2F.c +++ b/src/manager/manager2F.c @@ -9,16 +9,16 @@ void sub_0805D470(Manager*); void Manager2F_Main(Manager* this) { if (this == NULL) { - if ((void*)gArea.unk3 != sub_0805D470) { + if (gArea.onEnter != sub_0805D470) { sub_0805D470(NULL); } } else { if (this->action == 0) { this->action = 1; this->unk_10 |= 0x20; - sub_0805E3A0(this, 6); - if (gArea.unk3 == 0) { - sub_08052D74(this, sub_0805D470, NULL); + SetDefaultPriority((Entity*)this, 6); + if (gArea.onEnter == NULL) { + RegisterTransitionManager(this, sub_0805D470, NULL); } else { DeleteThisEntity(); } diff --git a/src/manager/manager3.c b/src/manager/manager3.c index 42b20e75..b71d8a51 100644 --- a/src/manager/manager3.c +++ b/src/manager/manager3.c @@ -94,7 +94,7 @@ void CreateMagicSparkles(u32 baseX, u32 baseY, u32 layer) { } u32 sub_08057810(void) { - if ((gPlayerState.flags & PL_IS_MINISH) && !gPlayerState.field_0xaa && (gArea.curPortalType != 0x6) && + if ((gPlayerState.flags & PL_MINISH) && !gPlayerState.field_0xaa && (gArea.curPortalType != 0x6) && (gPlayerState.heldObject == 0)) { switch (gPlayerState.field_0xa8) { case 0: diff --git a/src/manager/manager32.c b/src/manager/manager32.c index 8360492e..409840de 100644 --- a/src/manager/manager32.c +++ b/src/manager/manager32.c @@ -18,7 +18,7 @@ extern void (*const gUnk_08108D7C[])(Manager32*); void sub_0805D9D8(Manager32*); void sub_0805DA08(u32, u32, u32); -extern void sub_080528F0(); +extern void RoomExitCallback(); extern u8 gUnk_08108D74[]; @@ -176,9 +176,10 @@ void sub_0805DA90(Manager32* this, u32 param_2) { manager->parent = &this->manager; AppendEntityToList((Entity*)manager, 8); } - if (gArea.unk3 != 0) { + if (gArea.onEnter != NULL) { gScreen.lcd.displayControl &= 0xf7ff; - sub_080528F0(); - DeleteManager((Manager*)gArea.unk3); + RoomExitCallback(); + //! @bug: this always variable points to ROM, not a Manager* + DeleteManager((Manager*)gArea.onEnter); } } diff --git a/src/manager/manager34.c b/src/manager/manager34.c index 1fb2b9ef..6ca4773c 100644 --- a/src/manager/manager34.c +++ b/src/manager/manager34.c @@ -63,6 +63,6 @@ void sub_0805DBF0(Manager34* this) { } void sub_0805DC70(void) { - sub_0805E5A8(); + SetInitializationPriority(); DoExitTransition(&gUnk_0813AC48); } diff --git a/src/manager/manager35.c b/src/manager/manager35.c index 0afd3b02..cc9090d0 100644 --- a/src/manager/manager35.c +++ b/src/manager/manager35.c @@ -17,7 +17,7 @@ typedef struct { extern void (*const gUnk_08108D98[])(Manager35*); -extern void sub_0805E4E0(Entity*, u32); +extern void RequestPriorityDuration(Entity*, u32); void Manager35_Main(Manager35* this) { gUnk_08108D98[this->manager.action](this); @@ -50,13 +50,13 @@ void sub_0805DCC8(Manager35* this) { object->y.HALF.HI = this->field_0x3a + gRoomControls.roomOriginY; *(Entity**)this->manager.unk_18 = object; gRoomControls.cameraTarget = object; - sub_0805E4E0(object, 0x1e); + RequestPriorityDuration(object, 0x1e); } } } void sub_0805DD24(Manager35* this) { - sub_0805E4E0(0, 8); + RequestPriorityDuration(0, 8); if ((gRoomControls.unk6 & 4) == 0 && --this->manager.unk_0e == 0) { this->manager.action = 3; SetFlag(this->field_0x3c); @@ -67,7 +67,7 @@ void sub_0805DD24(Manager35* this) { } void sub_0805DD68(Manager35* this) { - sub_0805E4E0(0, 8); + RequestPriorityDuration(0, 8); if (this->field_0x36 != 0) { if (--this->field_0x36 == 0) { gRoomControls.cameraTarget = (Entity*)this->manager.parent; diff --git a/src/manager/manager36.c b/src/manager/manager36.c index e7251db2..c955425f 100644 --- a/src/manager/manager36.c +++ b/src/manager/manager36.c @@ -32,7 +32,7 @@ void CreateManager36(Entity* entity, ScriptExecutionContext* context) { manager->subtype = 0x36; manager->unk_0a = context->intVariable; AppendEntityToList((Entity*)manager, 6); - sub_0805E3A0(manager, 6); + SetDefaultPriority((Entity*)manager, 6); } } diff --git a/src/manager/manager37.c b/src/manager/manager37.c index 270b8162..c1af96f2 100644 --- a/src/manager/manager37.c +++ b/src/manager/manager37.c @@ -39,7 +39,7 @@ void sub_0805DE68(Manager* this) { *(u8*)&gScreenTransition.field_0x3a = 0x20; *((u8*)&gScreenTransition.field_0x3a + 1) = 0x20; #if !defined(EU) && !defined(JP) - gSave.unk498 = 0x1194; + gSave.unk48C[3] = 0x1194; #endif } @@ -54,7 +54,7 @@ void sub_0805DEB8(Manager* this) { this->action = 2; this->unk_0d = 0; this->unk_0e = 0x78; - sub_08078A90(2); + SetPlayerControl(2); sub_08078B48(); object = CreateObject(OBJECT_64, 0, 0); if (object != NULL) { @@ -119,7 +119,7 @@ void sub_0805E000(Manager* this) { } *(Entity**)this->unk_18 = enemy; this->action = 1; - sub_08078A90(3); + SetPlayerControl(3); gArea.pMusicIndex = 0x80010000; DoFade(6, 4); SoundReq(SFX_APPARATE); @@ -134,6 +134,6 @@ void sub_0805E078(Manager* this) { } void sub_0805E094(void) { - sub_0805E5A8(); + SetInitializationPriority(); sub_0808091C((ScreenTransitionData*)&gUnk_0813AC34, 7); } diff --git a/src/manager/manager39.c b/src/manager/manager39.c index 567a38dd..1e51d22e 100644 --- a/src/manager/manager39.c +++ b/src/manager/manager39.c @@ -28,7 +28,7 @@ extern const u8 gUnk_08108E48[0x18]; extern const u8 gUnk_08108E60[]; extern void sub_0805F46C(void*, const void*); -extern void sub_0805E5B4(void); +extern void ResetSystemPriority(void); void sub_0805E140(Manager39*); void sub_0805E18C(Manager39*); // unused? @@ -48,7 +48,7 @@ void sub_0805E140(Manager39* this) { this->unk_20 = gRoomControls.roomID; this->manager.unk_0e = 0x78; this->manager.unk_0f = 0x3c; - sub_0805E3A0((Entity*)this, 7); + SetDefaultPriority((Entity*)this, 7); sub_0805E1F8(gUnk_08108DE8[gArea.locationIndex], CheckIsDungeon()); } @@ -59,7 +59,7 @@ void sub_0805E18C(Manager39* this) { if (!--this->manager.unk_0f) { this->manager.unk_0b = 0; gPlayerState.field_0x8b = 1; - sub_0805E5B4(); + ResetSystemPriority(); } } if (!--this->manager.unk_0e) { diff --git a/src/manager/manager4.c b/src/manager/manager4.c index 50c497b5..42eb1ad6 100644 --- a/src/manager/manager4.c +++ b/src/manager/manager4.c @@ -95,11 +95,11 @@ ASM_FUNC("asm/non_matching/eu/sub_08057A18.inc", void sub_08057A18(Manager* this #else void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { u16 tmp; - sub_0805E5A8(); + SetInitializationPriority(); gUnk_03004030.unk_0a = gUnk_03004030.unk_09; gUnk_03004030.unk_09 = gRoomControls.areaID; - gScreenTransition.areaID = entr->target_areaID; - gScreenTransition.roomID = entr->target_roomID; + gScreenTransition.player_status.area_next = entr->target_areaID; + gScreenTransition.player_status.room_next = entr->target_roomID; gRoomControls.areaID = entr->target_areaID; gRoomControls.roomID = entr->target_roomID; gUnk_03004030.unk_00 = entr; diff --git a/src/manager/manager6.c b/src/manager/manager6.c index 79d0a0bf..dfacaf3a 100644 --- a/src/manager/manager6.c +++ b/src/manager/manager6.c @@ -18,7 +18,7 @@ void Manager6_Main(Manager6* this) { for (i = this->warpList; i->posX != 0xFFFF; i++) { tmp = (i->unk_07.all & 0x3); if (((tmp & (gPlayerEntity.collisionLayer)) != 0) && - (((gPlayerState.flags & PL_IS_MINISH) != 0) || ((i->unk_07.b.unk2) != 0)) && + (((gPlayerState.flags & PL_MINISH) != 0) || ((i->unk_07.b.unk2) != 0)) && (CheckPlayerInRegion(i->posX, i->posY, i->width, i->height) != 0) && (gPlayerEntity.z.HALF.HI == 0)) { DoExitTransition(GetCurrentRoomProperty(i->unk_06)); } diff --git a/src/manager/manager7.c b/src/manager/manager7.c index 8c7ce57f..b081b4ff 100644 --- a/src/manager/manager7.c +++ b/src/manager/manager7.c @@ -66,8 +66,8 @@ void Manager7_Main(Manager7* this) { this->manager.unk_0e = 8; this->unk_20 = 0xFF; - sub_0805E3A0(this, 6); - sub_08052D74(this, sub_08057E30, 0); + SetDefaultPriority((Entity*)this, 6); + RegisterTransitionManager(this, sub_08057E30, 0); } if (sub_08057E40(this)) { tmp = (u32)gRoomVars.unk_10[0]; diff --git a/src/manager/manager8.c b/src/manager/manager8.c index 4debcb08..20298d1f 100644 --- a/src/manager/manager8.c +++ b/src/manager/manager8.c @@ -25,7 +25,7 @@ void Manager8_Main(Manager8* this) { this->manager.action = 1; gScreen.bg1.updated = 0; gScreen.bg3.updated = 0; - sub_08052D74(this, sub_08057EFC, 0); + RegisterTransitionManager(this, sub_08057EFC, 0); } } diff --git a/src/manager/manager9.c b/src/manager/manager9.c index 7cc81df0..c16fefa0 100644 --- a/src/manager/manager9.c +++ b/src/manager/manager9.c @@ -25,7 +25,7 @@ void Manager9_Main(Manager9* this) { if (!this->manager.action) { this->manager.action = 1; gScreen.bg1.updated = 0; - sub_08052D74(this, sub_08058204, NULL); + RegisterTransitionManager(this, sub_08058204, NULL); } } diff --git a/src/manager/managerA.c b/src/manager/managerA.c index 88a3f42f..76cab147 100644 --- a/src/manager/managerA.c +++ b/src/manager/managerA.c @@ -27,7 +27,7 @@ void sub_08058398(ManagerA* this) { this->unk_26 = this->unk_3b << 3; this->unk_20 = this->unk_24 + (this->unk_38 << 4); this->unk_22 = this->unk_26 + (this->unk_39 << 4); - sub_0805E3A0(&this->manager, 0x06); + SetDefaultPriority((Entity*)&this->manager, 0x06); if (this->unk_3e == 0) { this->manager.action = 2; } else { @@ -42,7 +42,7 @@ void sub_080583EC(ManagerA* this) { } } -extern void FreezeTime(void); +extern void SetPlayerEventPriority(void); u32 sub_0805848C(ManagerA*); void sub_080585DC(ManagerA*); @@ -59,16 +59,16 @@ void sub_08058408(ManagerA* this) { return; case 2: sub_080585DC(this); - if ((gPlayerState.flags & PL_IS_MINISH) == 0) + if ((gPlayerState.flags & PL_MINISH) == 0) return; case 0: default: sub_080585DC(this); if (sub_0805848C(this) == 0) return; - sub_08078A90(3); + SetPlayerControl(3); sub_08078B48(); - FreezeTime(); + SetPlayerEventPriority(); this->manager.action = 3; this->manager.unk_0d = 0; this->manager.unk_0e = 0x1e; @@ -113,7 +113,7 @@ u32 sub_0805848C(ManagerA* this) { } } -extern void UnfreezeTime(void); +extern void ResetPlayerEventPriority(void); void sub_08058514(ManagerA* this) { switch (this->manager.unk_0d) { @@ -137,7 +137,7 @@ void sub_08058514(ManagerA* this) { if (gPlayerEntity.action != 1 && gPlayerEntity.action != 9) return; gPlayerState.field_0x8b = 1; - UnfreezeTime(); + ResetPlayerEventPriority(); SetFlag(this->unk_3c); DeleteThisEntity(); return; diff --git a/src/manager/managerB.c b/src/manager/managerB.c index 0de51aae..f52c4138 100644 --- a/src/manager/managerB.c +++ b/src/manager/managerB.c @@ -42,7 +42,7 @@ void ManagerB_Init(ManagerB* this) { if (!this->unk_3c) { ManagerB_LoadFight(&this->manager); } - sub_0805E3A0(this, 3); + SetDefaultPriority((Entity*)this, 3); } else { DeleteThisEntity(); } @@ -148,7 +148,7 @@ void ManagerBHelper_Main(Manager* this) { Entity* current; if (this->action == 0) { this->action = 1; - sub_0805E3A0(this, 3); + SetDefaultPriority((Entity*)this, 3); } // go through and check all monitored enemies. anyRemaining = 0; diff --git a/src/manager/managerC.c b/src/manager/managerC.c index 126186e3..d4a83f64 100644 --- a/src/manager/managerC.c +++ b/src/manager/managerC.c @@ -71,7 +71,7 @@ void sub_08058894(ManagerC* this) { this->unk_28 = 0x1234; this->manager.unk_0e = CheckLocalFlags(0x15, 0x2) != 0; sub_08058CB0(this); - sub_08052D74(this, sub_08058D34, 0); + RegisterTransitionManager(this, sub_08058D34, 0); } void sub_080588CC(ManagerC* this) { @@ -204,13 +204,13 @@ const u16 gUnk_081082E8[0xC] = { 0xB8, 0x80, 0x0, 0xB8, 0x110, 0x2, 0x118, 0x80, void sub_08058B5C(ManagerC* this, u32 unk1) { gScreenTransition.transitioningOut = 1; - gScreenTransition.transitionType = 0; - gScreenTransition.field_0xf = 4; - gScreenTransition.areaID = gRoomControls.areaID; - gScreenTransition.roomID = 6; - gScreenTransition.playerState = unk1 & 1 ? 4 : 0; - gScreenTransition.playerStartPos.HALF.x = gUnk_081082E8[unk1 * 3]; - gScreenTransition.playerStartPos.HALF.y = gUnk_081082E8[unk1 * 3 + 1]; + gScreenTransition.transitionType = TRANSITION_DEFAULT; + gScreenTransition.player_status.spawn_type = 4; + gScreenTransition.player_status.area_next = gRoomControls.areaID; + gScreenTransition.player_status.room_next = 6; + gScreenTransition.player_status.start_anim = unk1 & 1 ? 4 : 0; + gScreenTransition.player_status.start_pos.HALF.x = gUnk_081082E8[unk1 * 3]; + gScreenTransition.player_status.start_pos.HALF.y = gUnk_081082E8[unk1 * 3 + 1]; gSave.unk7 = gUnk_081082E8[unk1 * 3 + 2]; SoundReq(SFX_STAIRS); } diff --git a/src/manager/managerE.c b/src/manager/managerE.c index 261e5c00..1cdb8ab8 100644 --- a/src/manager/managerE.c +++ b/src/manager/managerE.c @@ -18,7 +18,7 @@ void ManagerE_Main(ManagerE* this) { return; if (this->manager.unk_0b != 0) { this->manager.unk_0b = 0; - sub_08078A90(0xff); + SetPlayerControl(0xff); sub_08078B48(); } if (this->unk_3a == 0) { diff --git a/src/manager/managerF.c b/src/manager/managerF.c index a736bfa4..432ec49f 100644 --- a/src/manager/managerF.c +++ b/src/manager/managerF.c @@ -151,13 +151,13 @@ void sub_08058FB0(ManagerF* this) { if (CheckFlags(this->unk_3e)) { this->manager.action = 2; this->manager.unk_0e = 120; - sub_0805E4E0((Entity*)this, 0xF0); + RequestPriorityDuration((Entity*)this, 0xF0); sub_08059064(this); } break; case 2: if (this->manager.unk_0e == 90) { - sub_08078A90(2); + SetPlayerControl(2); sub_08077B20(); } if (this->manager.unk_0e == 60) { @@ -170,7 +170,7 @@ void sub_08058FB0(ManagerF* this) { break; default: SetFlag(this->unk_3e); - sub_08078A90(1); + SetPlayerControl(1); DeleteThisEntity(); } } @@ -209,7 +209,7 @@ void sub_08059094(ManagerF* this) { void sub_080590E0(ManagerF* this) { if (!this->manager.action) { this->manager.action = 1; - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); } if (CheckLocalFlag(0x6c)) { if (CheckLocalFlag(0x4b)) { @@ -241,7 +241,7 @@ void sub_08059124(ManagerF* this) { break; case 1: if (CheckFlags(this->unk_3e)) { - sub_0805E4E0((Entity*)this, 0x4b); + RequestPriorityDuration((Entity*)this, 0x4b); this->manager.unk_0e = 0x2d; this->manager.action++; } @@ -360,7 +360,7 @@ void sub_0805938C(ManagerF* this) { } u32 sub_080593CC(ManagerF* this) { - if (!(gPlayerState.flags & PL_IS_MINISH) && gPlayerState.swimState != 0 && gPlayerEntity.animationState == 0 && + if (!(gPlayerState.flags & PL_MINISH) && gPlayerState.swimState != 0 && gPlayerEntity.animationState == 0 && (gPlayerState.field_0x90.HALF.LO & 0xF00) == 0x400) { return sub_0806FCB8(&gPlayerEntity, this->unk_38, this->unk_3a + 0xC, 6); } @@ -386,7 +386,7 @@ void sub_08059424(ManagerF* this) { void sub_0805947C(ManagerF* this) { if (!CheckFlags(this->unk_3e)) { - sub_08078A90(3); + SetPlayerControl(3); if (gRoomControls.unk2) return; if (gRoomVars.field_0x0) { @@ -407,7 +407,7 @@ void sub_080594DC(ManagerF* this) { case 1: if (!GetInventoryValue(6)) return; - if (CheckLocalFlagByOffset(0x8c0, 0x85)) + if (CheckLocalFlagByBank(0x8c0, 0x85)) return; this->manager.action = 2; sub_080186C0(0xB0F); @@ -417,7 +417,7 @@ void sub_080594DC(ManagerF* this) { if (gArea.field_0x28 != 0xFF) { DeleteThisEntity(); } - if (CheckLocalFlagByOffset(0x8c0, 0x85)) { + if (CheckLocalFlagByBank(0x8c0, 0x85)) { sub_0801855C(); DeleteThisEntity(); } @@ -427,7 +427,7 @@ void sub_080594DC(ManagerF* this) { #if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) void sub_08059548(ManagerF* this) { - sub_0805E3A0(this, 6); + SetDefaultPriority((Entity*)this, 6); if (gPlayerEntity.action == 0x16) { DeleteThisEntity(); } diff --git a/src/npc/beedle.c b/src/npc/beedle.c index 73f14f41..ce9c7722 100644 --- a/src/npc/beedle.c +++ b/src/npc/beedle.c @@ -157,8 +157,5 @@ void sub_080634EC(Entity* this) { } void sub_08063504(Entity* this, ScriptExecutionContext* context) { - u32 uVar1; - - uVar1 = GetBottleContaining(gUnk_0810C88C[this->type2]); - context->condition = BOOLCAST(uVar1); + context->condition = !!GetBottleContaining(gUnk_0810C88C[this->type2]); } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 8aacc772..797c9f6f 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -44,7 +44,7 @@ void sub_0806CF30(Entity* this) { this->action = 1; this->subAction = 1; this->field_0x68.HWORD = this->x.HALF.HI; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0806D0B0(this); sub_0807DD64(this); } else { @@ -133,7 +133,7 @@ void sub_0806D1D0(Entity* this) { this->spriteSettings.draw = 3; this->frameIndex = 0; this->actionDelay = 0x1e; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } switch (this->subAction) { @@ -174,7 +174,7 @@ void sub_0806D274(Entity* this) { this->spritePriority.b0 = 7; this->frameIndex = 2; this->actionDelay = 8; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); npc = CreateNPC(0x4c, 3, 0); if (npc != NULL) { npc->child = this; @@ -221,7 +221,7 @@ void sub_0806D348(Entity* this) { this->spritePriority.b0 = 6; this->spriteSettings.draw = 0; this->frameIndex = 5; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } if (this->child->frameIndex == 4) { this->spriteSettings.draw = 3; @@ -239,7 +239,7 @@ void sub_0806D3C0(Entity* this) { } this->action = 1; this->hitbox = &gHitbox_3; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD64(this); } else { this->x.HALF.HI = this->parent->x.HALF.HI; @@ -262,7 +262,7 @@ void sub_0806D41C(Entity* this) { sub_0806D4C0(this, 1); sub_0806D4C0(this, 2); sub_0806D4C0(this, 3); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } else { ExecuteScriptForEntity(this, NULL); HandleEntity0x82Actions(this); @@ -286,7 +286,7 @@ void sub_0806D4C0(Entity* this, u32 param) { npc->parent = this; CopyPosition(this, npc); ResolveEntityOnTop(this, npc); - sub_0805E3A0(npc, 2); + SetDefaultPriority(npc, 2); } } @@ -322,7 +322,7 @@ NONMATCH("asm/non_matching/bigGoron/sub_0806D5D4.inc", void sub_0806D5D4(void)) END_NONMATCH void sub_0806D600(Entity* this, ScriptExecutionContext* context) { - context->condition = gSave.unk494 == 0; + context->condition = gSave.unk48C[2] == 0; } void sub_0806D620(void) { diff --git a/src/npc/bladeBrothers.c b/src/npc/bladeBrothers.c index c4e2b4ab..95c447f0 100644 --- a/src/npc/bladeBrothers.c +++ b/src/npc/bladeBrothers.c @@ -52,7 +52,7 @@ void sub_08068A1C(Entity* this) { int offset; this->type2 = this->type; - if (gScreenTransition.field_0x24[8] != 0) { + if (gScreenTransition.player_status.field_0x24[8] != 0) { offset = 6; bVar1 = 3; @@ -106,7 +106,7 @@ void sub_08068AA4(Entity* this) { } void sub_08068ADC(Entity* this) { - if (gScreenTransition.field_0x24[8] == 2) { + if (gScreenTransition.player_status.field_0x24[8] == 2) { GetNextFrame(this); } sub_0806FD3C(this); diff --git a/src/npc/brocco.c b/src/npc/brocco.c index bf00088d..ee03fa3a 100644 --- a/src/npc/brocco.c +++ b/src/npc/brocco.c @@ -73,7 +73,7 @@ void sub_0806362C(Entity* this) { } void sub_080636D8(Entity* this) { - ShowNPCDialogue(this, &gUnk_0810CAAC[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_0810CAAC[gSave.global_progress]); } void sub_080636F4(Entity* this) { diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index 5369ca96..f489ad72 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -24,7 +24,7 @@ void Carpenter(Entity* this) { break; this->action = 1; this->field_0x68.HALF.HI = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD64(this); case 1: @@ -94,7 +94,7 @@ void Carpenter_Fusion(Entity* this) { if (LoadExtraSpriteData(this, &gUnk_08110CA8[this->type * 4]) != 0) { this->action = this->action + 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, (u32)this->type * 8 + 2); } } else { diff --git a/src/npc/castleMaid.c b/src/npc/castleMaid.c index f9cc2c81..af001b63 100644 --- a/src/npc/castleMaid.c +++ b/src/npc/castleMaid.c @@ -107,7 +107,7 @@ void sub_0806464C(Entity* this) { } void sub_08064688(Entity* this) { - ShowNPCDialogue(this, &gUnk_0810F894[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_0810F894[gSave.global_progress]); } ASM_FUNC("asm/non_matching/castleMaid/sub_080646A4.inc", diff --git a/src/npc/castorWildsStatue.c b/src/npc/castorWildsStatue.c index 5bbeb15b..366e568d 100644 --- a/src/npc/castorWildsStatue.c +++ b/src/npc/castorWildsStatue.c @@ -23,7 +23,7 @@ void CastorWildsStatue(Entity* this) { } void sub_080673C0(Entity* this) { - if (gScreenTransition.field_0x24[8] != 0) { + if (gScreenTransition.player_status.field_0x24[8] != 0) { this->action = 3; } else { this->action = 1; diff --git a/src/npc/cat.c b/src/npc/cat.c index f7cb833f..3371284c 100644 --- a/src/npc/cat.c +++ b/src/npc/cat.c @@ -46,7 +46,7 @@ extern u32 sub_0806FCA0(Entity*, Entity*); extern Entity* sub_08049DF4(u32); void sub_08067790(Entity* this) { - ShowNPCDialogue(this, &gUnk_08110EF8 + this->type * 10 + gSave.unk8); + ShowNPCDialogue(this, &gUnk_08110EF8 + this->type * 10 + gSave.global_progress); } // Main @@ -153,7 +153,7 @@ void sub_0806799C(Entity* this) { UpdateAnimationSingleFrame(this); if ((gMessage.doTextBox & 0x7f) == 0) { sub_08067B08(this); - sub_0805E3A0(this, 1); + SetDefaultPriority(this, 1); } } @@ -272,7 +272,7 @@ void sub_08067C44(Entity* this) { s32 iVar4; u32 uVar5; - uVar5 = -((s32) - (gPlayerState.flags & PL_IS_MINISH) >> 0x1f); + uVar5 = -((s32) - (gPlayerState.flags & PL_MINISH) >> 0x1f); if (uVar5 != this->field_0x68.HALF.HI) { if (uVar5 == 0) { sub_08078778(this); @@ -319,7 +319,7 @@ void sub_08067C44(Entity* this) { } else { this->action = 4; sub_08067790(this); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } this->interactType = 0; SoundReq(SFX_VO_CAT); diff --git a/src/npc/cow.c b/src/npc/cow.c index 1f7ca1c0..fa57d88c 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -181,7 +181,7 @@ void Cow_ShowDialogue(Entity* ent) { void sub_0806920C(Entity* ent) { // TODO: figure out what bitfield flag this is - u32 var0 = gPlayerState.flags & PL_IS_MINISH; + u32 var0 = gPlayerState.flags & PL_MINISH; u32 var1 = -var0 >> 0x1F; if (var1 != ent->field_0x6c.HALF.HI) { @@ -200,7 +200,7 @@ void sub_0806924C(Entity* ent) { s8 itype = ent->interactType; if (itype != 0) { // TODO: figure out what bitfield flag this is - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { if (itype == 2) { ent->action = 4; sub_0806F118(ent); diff --git a/src/npc/cucco.c b/src/npc/cucco.c index f2e608b8..8bd30005 100644 --- a/src/npc/cucco.c +++ b/src/npc/cucco.c @@ -21,7 +21,7 @@ void sub_0806E4B8(Entity* this) { this->action += 1; this->field_0x68.HALF.LO = sub_0801E99C(this); sub_080787A8(this, this->field_0x68.HALF.LO); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); this->subAction = 0; sub_0806E4EC(this); } @@ -59,7 +59,7 @@ void sub_0806E648(Entity* this) { void sub_0806E65C(Entity* this) { if (this->interactType != 0) { - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { if (this->interactType == 2) { this->action = 4; sub_0806F118(this); diff --git a/src/npc/cuccoChick.c b/src/npc/cuccoChick.c index 34c00503..0cb4b76c 100644 --- a/src/npc/cuccoChick.c +++ b/src/npc/cuccoChick.c @@ -22,7 +22,7 @@ void sub_0806E730(Entity* this) { this->action += 1; this->field_0x68.HALF.LO = sub_0801E99C(this); sub_080787A8(this, this->field_0x68.HALF.LO); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); this->subAction = 0; sub_0806E764(this); } @@ -53,7 +53,7 @@ void sub_0806E824(Entity* this) { void sub_0806E838(Entity* this) { if (this->interactType != 0) { - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { if (this->interactType == 2) { this->action = 3; sub_0806F118(this); diff --git a/src/npc/dampe.c b/src/npc/dampe.c index 1a62e10a..096ac1e8 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -16,7 +16,7 @@ void Dampe(Entity* this) { case 0: this->action = 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); return; case 1: diff --git a/src/npc/din.c b/src/npc/din.c index 4a2d5e5f..51026a2e 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -34,7 +34,7 @@ void Din(Entity* this) { void sub_08064828(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/dog.c b/src/npc/dog.c index f17adad8..3dc8641e 100644 --- a/src/npc/dog.c +++ b/src/npc/dog.c @@ -66,12 +66,12 @@ void sub_08069B44(Entity* this) { this->animationState = 2; this->field_0x6a.HALF.LO = 0xff; this->field_0x74.HALF.LO = sub_0801E99C(this); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 10); if ((this->flags & 2) != 0) { sub_0807DD50(this); } - if (((this->type == 0) && ((gPlayerState.flags & PL_IS_MINISH) == 0)) && (GetInventoryValue(0x36) != 2)) { + if (((this->type == 0) && ((gPlayerState.flags & PL_MINISH) == 0)) && (GetInventoryValue(0x36) != 2)) { this->action = 4; } #if defined(JP) || defined(EU) || defined(DEMO_JP) @@ -87,7 +87,7 @@ void sub_08069B44(Entity* this) { void sub_08069C40(Entity* this) { UpdateAnimationSingleFrame(this); if (sub_08069F90(this) != 0) { - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { sub_08069CB8(this); } else { this->animationState = GetAnimationState(this); @@ -278,14 +278,14 @@ u32 sub_08069F90(Entity* this) { } void sub_08069FBC(Entity* this) { - u32 tmp = (gPlayerState.flags & PL_IS_MINISH) != 0 ? 0x24 : 0x20; + u32 tmp = (gPlayerState.flags & PL_MINISH) != 0 ? 0x24 : 0x20; if ((this->animationState == 1) || (this->animationState == 3)) { this->field_0x6a.HALF.HI = tmp; } } void sub_08069FE8(Entity* this) { - u32 tmp = -((s32) - (gPlayerState.flags & PL_IS_MINISH) >> 0x1f); + u32 tmp = -((s32) - (gPlayerState.flags & PL_MINISH) >> 0x1f); if (tmp != this->field_0x6a.HALF.LO) { if (tmp == 0) { sub_08078778(this); @@ -298,7 +298,7 @@ void sub_08069FE8(Entity* this) { void sub_0806A028(Entity* this) { if (this->interactType != 0) { - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { if (this->interactType == 2) { this->action = 6; sub_0806F118(this); @@ -316,13 +316,13 @@ void sub_0806A028(Entity* this) { } void sub_0806A080(Entity* this) { - ShowNPCDialogue(this, (Dialog*)&gUnk_08111E34 + this->type2 * 10 + gSave.unk8); + ShowNPCDialogue(this, (Dialog*)&gUnk_08111E34 + this->type2 * 10 + gSave.global_progress); } void sub_0806A0A4(Entity* this) { s32 dialog; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { dialog = 4; if (CheckLocalFlag(MACHI_02_DOG) == 0) { dialog = 3; @@ -339,12 +339,12 @@ void sub_0806A0A4(Entity* this) { } } } - MessageNoOverlap(gUnk_08111F74[(u32)gSave.unk8 * 5 + dialog], this); + MessageNoOverlap(gUnk_08111F74[(u32)gSave.global_progress * 5 + dialog], this); } void sub_0806A144(Entity* this) { s32 dialog = 4; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { dialog = 3; if (GetInventoryValue(0x46) == 0 && CheckGlobalFlag(MIZUKAKI_START)) { if (CheckLocalFlag(0x85) == 0) { @@ -362,7 +362,7 @@ void Dog_Fusion(Entity* this) { if (sub_08069EF0(this) != 0) { this->action += 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, 0x23); } } else { diff --git a/src/npc/drLeft.c b/src/npc/drLeft.c index 1ee1b863..cdc05551 100644 --- a/src/npc/drLeft.c +++ b/src/npc/drLeft.c @@ -17,7 +17,7 @@ void DrLeft(Entity* this) { if (this->type == 0) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } ExecuteScriptForEntity(this, NULL); @@ -59,7 +59,7 @@ void sub_0806C028(Entity* this, ScriptExecutionContext* context) { void sub_0806C038(Entity* this) { s32 index; - index = gSave.unk8 - 5; + index = gSave.global_progress - 5; if (index != 0) { index = 0; } diff --git a/src/npc/emma.c b/src/npc/emma.c index cdbfe8e3..fa75eea0 100644 --- a/src/npc/emma.c +++ b/src/npc/emma.c @@ -10,7 +10,7 @@ extern ScreenTransitionData gUnk_0813AD38; void Emma(Entity* this) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } else { sub_0807DD94(this, 0); diff --git a/src/npc/epona.c b/src/npc/epona.c index 4648f004..540184c2 100644 --- a/src/npc/epona.c +++ b/src/npc/epona.c @@ -58,7 +58,7 @@ void sub_08065A50(Entity* this) { void sub_08065A64(Entity* this) { u32 uVar2; - uVar2 = -(gPlayerState.flags & PL_IS_MINISH) >> 0x1f; + uVar2 = -(gPlayerState.flags & PL_MINISH) >> 0x1f; if (uVar2 != this->field_0x68.HALF.HI) { if (uVar2 == 0) { sub_08078778(this); @@ -71,13 +71,13 @@ void sub_08065A64(Entity* this) { void sub_08065AA4(Entity* this) { if (this->interactType != 0) { - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { if (this->interactType == 2) { this->action = 4; sub_0806F118(this); } else { this->action = 3; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_08065A50(this); } InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); diff --git a/src/npc/ezloCap.c b/src/npc/ezloCap.c index 4eca8f35..6860455b 100644 --- a/src/npc/ezloCap.c +++ b/src/npc/ezloCap.c @@ -12,7 +12,7 @@ const u8 gUnk_08114144[]; void EzloCap(Entity* this) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } ExecuteScriptForEntity(this, NULL); diff --git a/src/npc/farmers.c b/src/npc/farmers.c index 88ea6005..c2f633fe 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -12,7 +12,7 @@ void sub_0806BC58(Entity* this); ASM_FUNC("asm/non_matching/farmers/Farmers.inc", void Farmers(Entity* this)) void sub_0806BC58(Entity* this) { - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } void Farmers_Head(Entity* this) { diff --git a/src/npc/farore.c b/src/npc/farore.c index a19d1599..0249171d 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -36,7 +36,7 @@ void Farore(Entity* this) { void sub_08064A28(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/festari.c b/src/npc/festari.c index 4a1a6492..114ac046 100644 --- a/src/npc/festari.c +++ b/src/npc/festari.c @@ -18,7 +18,7 @@ void Festari(Entity* this) { void sub_0805FE10(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); this->field_0x68.HALF.LO = sub_0801E99C(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); @@ -113,7 +113,7 @@ void Festari_Fusion(Entity* this) { if (this->action == 0) { this->action += 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 8); } else { UpdateAnimationSingleFrame(this); diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 366132c5..c0a9f88d 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -32,7 +32,7 @@ void ForestMinish(Entity* this) { this->spriteSettings.draw = TRUE; this->field_0x68.HALF.HI = this->animationState = this->actionDelay << 1; this->actionDelay = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); StartCutscene(this, (u16*)gUnk_08109D18[this->type2]); sub_0807DD50(this); } @@ -234,14 +234,14 @@ void sub_08060318(void) { } void sub_08060340(void) { - gSave.unk490 = gSave.unk50; + gSave.unk48C[1] = gSave.unk50; } u32 sub_08060354(void) { u32 iVar1; s32 iVar2; - iVar2 = gSave.unk50 - gSave.unk490; + iVar2 = gSave.unk50 - gSave.unk48C[1]; if (CheckGlobalFlag(DRUG_1) == 0) { if (4 < iVar2) { return 0x8444; @@ -267,7 +267,7 @@ void ForestMinish_Fusion(Entity* this) { if (LoadExtraSpriteData(this, &gUnk_0810A348)) { this->action++; this->spriteSettings.draw = TRUE; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, 6); } } else { diff --git a/src/npc/gentari.c b/src/npc/gentari.c index ed79f153..46b8500f 100644 --- a/src/npc/gentari.c +++ b/src/npc/gentari.c @@ -10,7 +10,7 @@ void Gentari(Entity* this) { case 0: this->action = 1; this->spriteSettings.draw = TRUE; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); this->field_0x68.HALF.LO = sub_0801E99C(this); sub_08078784(this, this->field_0x68.HALF.LO); sub_0807DD50(this); @@ -36,7 +36,7 @@ void Gentari_Fusion(Entity* this) { if (this->action == 0) { this->action++; this->spriteSettings.draw = TRUE; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 10); } else { UpdateAnimationSingleFrame(this); diff --git a/src/npc/ghostBrothers.c b/src/npc/ghostBrothers.c index adebaf68..1cdbdd8a 100644 --- a/src/npc/ghostBrothers.c +++ b/src/npc/ghostBrothers.c @@ -94,7 +94,7 @@ void sub_08065D18(Entity* this) { this->spriteSettings.draw = 1; this->spriteRendering.alphaBlend = 1; *(u32**)&this->field_0x6c = &gUnk_08110188; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 2); gScreen.controls.layerFXControl = 0x3f40; gScreen.controls.alphaBlend = 0x1000; @@ -125,7 +125,7 @@ void sub_08065F20(Entity* this) { } void sub_08065F64(Entity* this) { - s32 tmp = gSave.unk8 - 2; + s32 tmp = gSave.global_progress - 2; if (tmp < 0) { tmp = 0; } diff --git a/src/npc/goron.c b/src/npc/goron.c index 2cdc3051..c7e70d29 100644 --- a/src/npc/goron.c +++ b/src/npc/goron.c @@ -39,7 +39,7 @@ void sub_08069328(Entity* this) { } if (this->interactType != 0) { this->action = 2; - sub_0805E47C(this); + RequestPriority(this); InitAnimationForceUpdate(this, 8); MessageFromTarget(this->actionDelay + (0x90 << 5)); } @@ -50,7 +50,7 @@ void sub_08069390(Entity* this) { if ((gMessage.doTextBox & 0x7F) == 0) { this->action = 1; this->interactType = 0; - sub_0805E584(this); + RevokePriority(this); InitAnimationForceUpdate(this, this->animationState); } } diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index 1c1dbf6f..28962706 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -27,7 +27,7 @@ void GoronMerchant(Entity* this) { } void sub_08069584(Entity* this) { - if (gScreenTransition.field_0x24[8] != 0) { + if (gScreenTransition.player_status.field_0x24[8] != 0) { this->action = 3; } else { this->action = 1; @@ -55,13 +55,13 @@ void sub_080695E8(Entity* this) { if ((gMessage.doTextBox & 0x7f) == 0) { this->action = 1; this->interactType = gMessage.doTextBox & 0x7f; - sub_0805E584(this); + RevokePriority(this); InitAnimationForceUpdate(this, this->animationState); } } void sub_0806961C(Entity* this) { - if (gScreenTransition.field_0x24[8] == 2) { + if (gScreenTransition.player_status.field_0x24[8] == 2) { UpdateAnimationSingleFrame(this); } sub_0806FD3C(this); diff --git a/src/npc/gregal.c b/src/npc/gregal.c index 8f7ce5ed..db60132d 100644 --- a/src/npc/gregal.c +++ b/src/npc/gregal.c @@ -19,7 +19,7 @@ void sub_0806CAF4(Entity* this) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); npc = CreateNPC(0x4a, 1, 0); if (npc != NULL) { npc->parent = this; @@ -46,7 +46,7 @@ void sub_0806CB80(Entity* this) { this->action += 1; this->animationState = 2; this->frameIndex = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } if (this->parent != NULL) { this->frameIndex = (this->parent->frame & 3) + 0x21; @@ -57,7 +57,7 @@ void sub_0806CBB4(Entity* this) { if (this->action == 0) { this->action += 1; this->animationState = 2; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, 0x11); } GetNextFrame(this); @@ -74,7 +74,7 @@ void sub_0806CC08(Entity* this) { case 0: this->action = 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD64(this); case 1: if (this->interactType == 2) { @@ -154,7 +154,7 @@ void Gregal_Fusion(Entity* this) { if (this->action == 0) { this->action += 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 6); } else { UpdateAnimationSingleFrame(this); diff --git a/src/npc/guard.c b/src/npc/guard.c index 843219fa..aa2d95bd 100644 --- a/src/npc/guard.c +++ b/src/npc/guard.c @@ -204,7 +204,7 @@ void Guard_Head(Entity* this) { } void sub_08064030(Entity* arg0, Entity* arg1) { - *(u32*)&arg1->animationState = (-gRoomVars.greatFairyState | gRoomVars.greatFairyState) >> 0x1f; + *(u32*)&arg1->animationState = !!gRoomVars.animFlags; } void sub_08064044(void) { diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c index 6bc1e0a2..8fbd8b0d 100644 --- a/src/npc/hurdyGurdyMan.c +++ b/src/npc/hurdyGurdyMan.c @@ -20,7 +20,7 @@ void HurdyGurdyMan(Entity* this) { if (LoadExtraSpriteData(this, &gUnk_081144F0) != 0) { this->action = 1; this->field_0x68.HALF.HI = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } break; @@ -59,7 +59,7 @@ void HurdyGurdyMan_Head(Entity* this) { } void sub_0806E418(Entity* this) { - s32 tmp = gSave.unk8 - 2; + s32 tmp = gSave.global_progress - 2; if (tmp < 0) { tmp = 0; } @@ -79,7 +79,7 @@ void HurdyGurdyMan_Fusion(Entity* this) { if (uVar1 != 0) { this->action += 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, 10); } } else { diff --git a/src/npc/kid.c b/src/npc/kid.c index b98341f1..03ebf3b8 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -208,10 +208,10 @@ NONMATCH("asm/non_matching/kid/sub_08062634.inc", void sub_08062634(Entity* this END_NONMATCH NONMATCH("asm/non_matching/kid/sub_0806265C.inc", void sub_0806265C(Entity* this, ScriptExecutionContext* context)) { - if (gSave.unk8 == 0) { + if (gSave.global_progress == 0) { MessageNoOverlap(0, this); } else { - ShowNPCDialogue(this, &gUnk_0810BE10[this->type * 9 + gSave.unk8]); + ShowNPCDialogue(this, &gUnk_0810BE10[this->type * 9 + gSave.global_progress]); } } END_NONMATCH diff --git a/src/npc/kingGustaf.c b/src/npc/kingGustaf.c index ef5b7971..596e0b90 100644 --- a/src/npc/kingGustaf.c +++ b/src/npc/kingGustaf.c @@ -11,7 +11,7 @@ void KingGustaf(Entity* this) { this->action += 1; this->spriteRendering.alphaBlend = 1; this->collisionLayer = 2; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); gScreen.controls.layerFXControl = 0x3f40; gScreen.controls.alphaBlend = 0x1000; diff --git a/src/npc/librari.c b/src/npc/librari.c index 3e961f65..0d484d2a 100644 --- a/src/npc/librari.c +++ b/src/npc/librari.c @@ -16,7 +16,7 @@ void Librari(Entity* this) { this->animationState = this->actionDelay; this->field_0x68.HALF.LO = sub_0801E99C(this); sub_08078784(this, this->field_0x68.HALF.LO); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); break; case 1: diff --git a/src/npc/mama.c b/src/npc/mama.c index 50bd99fe..5c85f121 100644 --- a/src/npc/mama.c +++ b/src/npc/mama.c @@ -48,7 +48,7 @@ bool32 sub_0806C454(Entity* this) { if (LoadExtraSpriteData(this, &gUnk_08113754) == 0) { return FALSE; } else { - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); return TRUE; } } @@ -76,7 +76,7 @@ void sub_0806C4A8(Entity* this, ScriptExecutionContext* context) { } void sub_0806C4DC(Entity* this) { - ShowNPCDialogue(this, &gUnk_08113760[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_08113760[gSave.global_progress]); } void sub_0806C4F8(Entity* this) { diff --git a/src/npc/marcy.c b/src/npc/marcy.c index 89937936..0b6d0dcc 100644 --- a/src/npc/marcy.c +++ b/src/npc/marcy.c @@ -9,7 +9,7 @@ extern u16 gUnk_0810C34C[]; void Marcy(Entity* this) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD64(this); } sub_0807DD94(this, NULL); diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index d5fffd9a..a9353164 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -19,7 +19,7 @@ void MayorHagen(Entity* this) { this->action = 1; this->field_0x68.HALF.HI = 0; this->field_0x68.HALF.LO = sub_0801E99C(this); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); break; case 1: @@ -52,7 +52,7 @@ void sub_0806CE5C(Entity* this) { void sub_0806CE80(Entity* this) { u32 v; u32 v2; - v = gSave.unk8; + v = gSave.global_progress; if (v == 5) { // flippers if (GetInventoryValue(0x46) == 0) { diff --git a/src/npc/melari.c b/src/npc/melari.c index 91f803b5..e0879f3b 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -65,7 +65,7 @@ void sub_08068780(Entity* this) { this->action = 1; this->spriteSettings.draw = TRUE; this->animationState = this->type; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); break; case 1: diff --git a/src/npc/minishEzlo.c b/src/npc/minishEzlo.c index 2ab3ac16..a6824c50 100644 --- a/src/npc/minishEzlo.c +++ b/src/npc/minishEzlo.c @@ -12,7 +12,7 @@ void MinishEzlo(Entity* this) { } this->action += 1; this->animationState = this->actionDelay * 2; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } ExecuteScriptForEntity(this, NULL); diff --git a/src/npc/mutoh.c b/src/npc/mutoh.c index 8cae57cd..b1263127 100644 --- a/src/npc/mutoh.c +++ b/src/npc/mutoh.c @@ -23,7 +23,7 @@ void Mutoh(Entity* this) { if (LoadExtraSpriteData(this, &gUnk_08110C00)) { this->action = 1; this->spriteSettings.draw = TRUE; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } break; @@ -64,7 +64,7 @@ void sub_080670B4(Entity* this) { } void sub_080670E4(Entity* this) { - ShowNPCDialogue(this, &gUnk_08110C10[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_08110C10[gSave.global_progress]); } void sub_08067100(Entity* this) { diff --git a/src/npc/nayru.c b/src/npc/nayru.c index f6e799d8..bfc4a3a3 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -36,7 +36,7 @@ void Nayru(Entity* this) { void sub_08064928(Entity* this) { u32 tmp = sub_0801E99C(this); - if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.global_progress < 7)) { tmp = 0; } sub_08078784(this, tmp); diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c index 3041da84..f4a87161 100644 --- a/src/npc/npc4E.c +++ b/src/npc/npc4E.c @@ -205,8 +205,8 @@ void sub_0806DCA0() { } void sub_0806DCC0() { - gScreenTransition.field_0x20 = 0x7c8; - gScreenTransition.field_0x22 = 0xf8; + gScreenTransition.player_status.field_0x20 = 0x7c8; + gScreenTransition.player_status.field_0x22 = 0xf8; } void NPC4E_Fusion(Entity* this) { diff --git a/src/npc/npc5.c b/src/npc/npc5.c index 8808e81e..f6b04a24 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -878,7 +878,7 @@ void sub_08061B58(Entity* this) { this->action = 1; InitAnimationForceUpdate(this, 2); } - if (gScreenTransition.field_0x24[8] == 2) { + if (gScreenTransition.player_status.field_0x24[8] == 2) { UpdateAnimationSingleFrame(this); } sub_0806FD3C(this); diff --git a/src/npc/npc9.c b/src/npc/npc9.c index deab57c0..97b32871 100644 --- a/src/npc/npc9.c +++ b/src/npc/npc9.c @@ -22,7 +22,7 @@ void sub_08062B14(Entity* this) { this->interactType = 0; this->action++; InitializeAnimation(this, 1); - sub_0805E47C(this); + RequestPriority(this); } sub_0806ED78(this); } @@ -39,6 +39,6 @@ void sub_08062B70(Entity* this) { if ((gMessage.doTextBox & 0x7f) == 0) { InitializeAnimation(this, 2); this->action = 1; - sub_0805E584(this); + RevokePriority(this); } } diff --git a/src/npc/phonograph.c b/src/npc/phonograph.c index 2e047f35..38aa8569 100644 --- a/src/npc/phonograph.c +++ b/src/npc/phonograph.c @@ -30,7 +30,7 @@ ASM_FUNC("asm/non_matching/eu/sub_0806EABC.inc", void sub_0806EABC(Entity* this, #else void sub_0806EABC(Entity* this, u32 param) { sub_08050384(); - sub_08057044(param, &gUnk_020227E8, 0x202020); + sub_08057044(param, &gUnk_020227E8[0], 0x202020); sub_0805F46C(0x3302, &gUnk_081146B8); gScreen.bg0.updated = 1; } diff --git a/src/npc/pina.c b/src/npc/pina.c index 0d286049..11a2b55b 100644 --- a/src/npc/pina.c +++ b/src/npc/pina.c @@ -110,7 +110,7 @@ void sub_08063C74(void) { } void sub_08063C90(Entity* this) { - ShowNPCDialogue(this, &gUnk_0810CE04[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_0810CE04[gSave.global_progress]); } void sub_08063CAC(Entity* this) { diff --git a/src/npc/pita.c b/src/npc/pita.c index 37090104..b379ba8f 100644 --- a/src/npc/pita.c +++ b/src/npc/pita.c @@ -15,7 +15,7 @@ extern u32 sub_080028F4(const u8*); void Pita(Entity* this) { if (this->action == 0) { this->action += 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); ResolveEntityOnTop(this, this); this->hitbox = &gUnk_0810C428; sub_0807DD64(this); diff --git a/src/npc/postman.c b/src/npc/postman.c index 2a78d066..0ea13635 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -103,7 +103,7 @@ void sub_080604DC(Entity* this) { ent = CreateFx(this, 17, 0x40); if (ent != NULL) { ent->y.HALF.HI++; - sub_0805E3A0(ent, 3); + SetDefaultPriority(ent, 3); } } } @@ -184,7 +184,7 @@ void sub_080606C0(Entity* this) { void sub_080606D8(Entity* this) { s32 index; - index = gSave.unk8 - 2; + index = gSave.global_progress - 2; if (index < 0) { index = 0; } diff --git a/src/npc/rem.c b/src/npc/rem.c index 27aec22b..7298b531 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -55,7 +55,7 @@ void sub_0806A3D8(Entity* this) { this->action = 1; this->actionDelay = 0xb4; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0806A8C8(this); uVar1 = StartCutscene(this, &script_08012F0C); *(ScriptExecutionContext**)&this->cutsceneBeh = uVar1; @@ -196,7 +196,7 @@ void sub_0806A830(Entity* this) { if (this->action == 0) { this->action = 1; InitializeAnimation(this, 0x14); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } if ((gActiveScriptInfo.unk_00 & 0x200) != 0) { DeleteThisEntity(); @@ -215,7 +215,7 @@ void sub_0806A890(Entity* this) { if (this->action == 0) { this->action = 1; InitializeAnimation(this, 0x15); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } GetNextFrame(this); if ((this->frame & 0x80) != 0) { diff --git a/src/npc/simon.c b/src/npc/simon.c index 740ffa7e..09f4b40c 100644 --- a/src/npc/simon.c +++ b/src/npc/simon.c @@ -26,7 +26,7 @@ void Simon(Entity* this) { void sub_0806C224(void) { DoExitTransition(&gUnk_0813AD60); - gScreenTransition.transitionType = 6; + gScreenTransition.transitionType = TRANSITION_FADE_BLACK_FAST; } void Simon_CreateChest(Entity* this) { @@ -38,7 +38,7 @@ void Simon_CreateChest(Entity* this) { void sub_0806C280(void) { SetGlobalFlag(MAROYA_WAKEUP); DoExitTransition(&gUnk_0813AD74); - gScreenTransition.transitionType = 6; + gScreenTransition.transitionType = TRANSITION_FADE_BLACK_FAST; } void sub_0806C2A0(Entity* this, ScriptExecutionContext* context) { diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c index 5a7d7d7a..8a9a7e0d 100644 --- a/src/npc/sittingPerson.c +++ b/src/npc/sittingPerson.c @@ -63,7 +63,7 @@ void sub_08063944(Entity* this, ScriptExecutionContext* context) { s32 tmp; context->condition = 0; - tmp = gSave.unk8 - 2; + tmp = gSave.global_progress - 2; if (tmp < 0) { tmp = 0; } diff --git a/src/npc/smallTownMinish.c b/src/npc/smallTownMinish.c index ead7605f..f34ecd7d 100644 --- a/src/npc/smallTownMinish.c +++ b/src/npc/smallTownMinish.c @@ -20,7 +20,7 @@ void SmallTownMinish(Entity* this) { } else { sub_0807DD94(this, NULL); } - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { this->spriteSettings.draw = 1; } else { this->spriteSettings.draw = 0; @@ -28,7 +28,7 @@ void SmallTownMinish(Entity* this) { } void sub_0806E2DC(Entity* this) { - s32 dialog = gSave.unk8 - 2; + s32 dialog = gSave.global_progress - 2; if (dialog < 0) { dialog = 0; } diff --git a/src/npc/smith.c b/src/npc/smith.c index 4bbe2f84..3f187b73 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -141,10 +141,10 @@ void sub_08066218(Entity* this) { void sub_0806622C(Entity* this) { u32 index; - if (gSave.unk8 - 2 < 0) { + if (gSave.global_progress - 2 < 0) { index = 0; } else { - index = gSave.unk8 - 2; + index = gSave.global_progress - 2; } ShowNPCDialogue(this, &gUnk_08110390[index]); } diff --git a/src/npc/stamp.c b/src/npc/stamp.c index 293e16b1..7c71744e 100644 --- a/src/npc/stamp.c +++ b/src/npc/stamp.c @@ -32,7 +32,7 @@ void sub_08062BF8(Entity* ent) { if (ent->interactType != 0) { ent->interactType = 0; ent->action++; - sub_0805E47C(ent); + RequestPriority(ent); } sub_0806ED78(ent); } @@ -50,7 +50,7 @@ void sub_08062C54(Entity* ent) { if ((gMessage.doTextBox & 127) == 0) { ent->action = 1; InitializeAnimation(ent, 0); - sub_0805E584(ent); + RevokePriority(ent); } } diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c index c324c681..dc38b634 100644 --- a/src/npc/stockwell.c +++ b/src/npc/stockwell.c @@ -28,7 +28,7 @@ void sub_08065080(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitializeAnimation(this, 4); sub_08078778(this); #ifndef EU @@ -60,7 +60,7 @@ void sub_080651F8(Entity* this) { this->actionDelay = 0x3c; InitializeAnimation(this, 1); CreateSpeechBubbleExclamationMark(this, 8, 0xffffffe8); - sub_08078A90(1); + SetPlayerControl(1); } } @@ -98,7 +98,7 @@ void sub_080652B0(Entity* this) { if ((gMessage.doTextBox & 0x7f) == 0) { this->subAction += 1; this->actionDelay = 10; - gRoomVars.greatFairyState = this->field_0xf; + gRoomVars.animFlags = this->field_0xf; CreateItemEntity(0x36, 0, 0); } } @@ -125,7 +125,7 @@ void sub_08065338(Entity* this) { if ((gMessage.doTextBox & 0x7f) == 0) { this->action = 1; this->subAction = gMessage.doTextBox & 0x7f; - gRoomVars.greatFairyState = this->field_0xf; + gRoomVars.animFlags = this->field_0xf; InitializeAnimation(this, 4); } } @@ -154,5 +154,5 @@ void sub_080654FC(Entity* this) { } void sub_08065528(Entity* this, ScriptExecutionContext* context) { - gRoomVars.greatFairyState = context->intVariable; + gRoomVars.animFlags = context->intVariable; } diff --git a/src/npc/syrup.c b/src/npc/syrup.c index f201422c..92b4c8b5 100644 --- a/src/npc/syrup.c +++ b/src/npc/syrup.c @@ -27,7 +27,7 @@ void sub_0806A1F8(Entity* this) { iVar1 = LoadExtraSpriteData(this, paVar2); if (iVar1) { this->action = 1; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); InitializeAnimation(this, 0); } diff --git a/src/npc/teachers.c b/src/npc/teachers.c index 9e411a7a..dc811ab9 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -18,7 +18,7 @@ void Teachers(Entity* this) { this->spriteSettings.draw = TRUE; this->animationState = this->actionDelay; this->field_0x68.HALF.HI = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } break; @@ -73,7 +73,7 @@ void Teachers_Head(Entity* this) { void sub_0806C70C(Entity* this) { int offset; - offset = gSave.unk8 - 2; + offset = gSave.global_progress - 2; if (offset < 0) offset = 0; diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 97304d65..5f97093c 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -241,7 +241,7 @@ void sub_0806AFA0(Entity* this) { } void sub_0806AFBC(Entity* this) { - int idx = gSave.unk8 - 2; + int idx = gSave.global_progress - 2; if (idx < 0) idx = 0; @@ -326,7 +326,7 @@ void sub_0806B134(Entity* this) { idx = 0; SetGlobalFlag(POWERGLOVE_HINT); } - if (5 < gSave.unk8) { + if (5 < gSave.global_progress) { idx = 3; } MessageNoOverlap(gUnk_08112C60[idx], this); diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 0ad55311..2a9033a5 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -276,7 +276,7 @@ void sub_08062048(Entity* this) { int iVar1; if (this->id == 6) { - iVar1 = gSave.unk8 - 2; + iVar1 = gSave.global_progress - 2; if (iVar1 < 0) { iVar1 = 0; } diff --git a/src/npc/vaati.c b/src/npc/vaati.c index 065b81ff..bae2bdac 100644 --- a/src/npc/vaati.c +++ b/src/npc/vaati.c @@ -27,7 +27,7 @@ void VaatiAction0(Entity* this) { this->spriteSettings.draw = 1; this->field_0x68.HALF.LO = 0; this->field_0x68.HALF.HI = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD64(this); VaatiAction1(this); } diff --git a/src/npc/wheaton.c b/src/npc/wheaton.c index 1d2170a8..338ff377 100644 --- a/src/npc/wheaton.c +++ b/src/npc/wheaton.c @@ -9,7 +9,7 @@ void Wheaton(Entity* this) { if (this->action == 0) { this->action++; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); ResolveEntityOnTop(this, this); diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index c88c32f5..80da0d08 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -123,7 +123,7 @@ void sub_0806C90C(Entity* this, ScriptExecutionContext* context) { } void sub_0806C928(Entity* this) { - ShowNPCDialogue(this, &gUnk_08113ABC[gSave.unk8]); + ShowNPCDialogue(this, &gUnk_08113ABC[gSave.global_progress]); } void sub_0806C944(Entity* this) { diff --git a/src/npc/zelda.c b/src/npc/zelda.c index e9e16171..f1da1c47 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -23,7 +23,7 @@ void sub_08066CCC(Entity* this) { this->action = 1; this->spriteSettings.draw = 1; PrependEntityToList(this, 7); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); sub_0807DD50(this); } diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index be6d633c..72e650ff 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -16,7 +16,7 @@ void ZeldaFollower(Entity* this) { this->animationState = 4; this->field_0x68.HALF.LO = 0; this->field_0x68.HALF.HI = 0; - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); InitAnimationForceUpdate(this, 0); sub_0806854C(this, NULL); } diff --git a/src/object/bigVortex.c b/src/object/bigVortex.c index f6864d37..f2743031 100644 --- a/src/object/bigVortex.c +++ b/src/object/bigVortex.c @@ -34,7 +34,7 @@ void sub_08098D1C(Entity* this) { this->spriteSettings.draw = TRUE; sub_08098E88(this); } - sub_0805E3A0(this, 6); + SetDefaultPriority(this, 6); InitAnimationForceUpdate(this, 0); } diff --git a/src/object/bird.c b/src/object/bird.c index bf0a0f14..12bf1815 100644 --- a/src/object/bird.c +++ b/src/object/bird.c @@ -119,7 +119,7 @@ void sub_0809D10C(Entity* this) { } void sub_0809D130(Entity* this) { - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { sub_0800445C(this); } else if (sub_08017850(this) != 0) { CreateItemEntity(0x17, 0, 0); diff --git a/src/object/book.c b/src/object/book.c index d2ce8c6e..d069a149 100644 --- a/src/object/book.c +++ b/src/object/book.c @@ -143,7 +143,7 @@ void sub_0809B56C(Entity* this) { } void sub_0809B5B4(Entity* this) { - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { sub_0800445C(this); } else if (sub_08017850(this)) { CreateItemEntity(this->type + 0x39, 0, 0); diff --git a/src/object/button.c b/src/object/button.c index 7a00b5bb..c1efa9ae 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -16,7 +16,7 @@ extern u32 sub_08081E3C(Entity*); void sub_08081AE0(Entity* this) { COLLISION_OFF(this); - this->updateConditions = 3; + this->updatePriority = 3; this->y.HALF.HI++; if (this->cutsceneBeh.HWORD != 0) { this->collisionLayer = this->cutsceneBeh.HWORD; @@ -44,14 +44,14 @@ void sub_08081B84(Entity* this) { } u32 sub_08081CB0(Entity*); -void sub_0805E4E0(Entity*, u32); +void RequestPriorityDuration(Entity*, u32); void sub_08081FF8(Entity*); void sub_08081BAC(Entity* this) { if (sub_08081CB0(this)) { this->subAction = 0; this->actionDelay = 0xA; - sub_0805E4E0(this, 0xA); + RequestPriorityDuration(this, 0xA); sub_08081FF8(this); if (this->type == 1) { this->action = 3; @@ -153,7 +153,7 @@ Entity* sub_08081D74(Entity* this) { } ent = 0; if (sub_08081E0C(this)) { - if (!(gPlayerState.flags & 0x10) && !(gPlayerState.flags & PL_IS_MINISH)) { + if (!(gPlayerState.flags & 0x10) && !(gPlayerState.flags & PL_MINISH)) { ent = &gPlayerEntity; } } else { @@ -234,13 +234,13 @@ u32 sub_08081F00(u32* unk1, u32* unk2) { void sub_08081F24(Entity* this) { Entity* fx = CreateFx(this, FX_DASH, 0x40); if (fx) { - fx->updateConditions = 3; + fx->updatePriority = 3; fx->x.HALF.HI += 7; fx->y.HALF.HI += 5; } fx = CreateFx(this, FX_DASH, 0x40); if (fx) { - fx->updateConditions = 3; + fx->updatePriority = 3; fx->x.HALF.HI -= 7; fx->y.HALF.HI += 5; } diff --git a/src/object/cloud.c b/src/object/cloud.c index 75fc7be6..8b53e550 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -80,7 +80,7 @@ void sub_0809F5F0(Entity* this) { if (iVar1 != 0) { this->action = 2; this->actionDelay = 120; - sub_08078A90(3); + SetPlayerControl(3); sub_08078B48(); gRoomControls.cameraTarget = this; } diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 8eb5513f..0aca5575 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -101,7 +101,7 @@ void GreatFairy_SpawningUpdate(Entity* this) { Entity* mini; u32 var; - if (gRoomVars.greatFairyState & 1) { + if (gRoomVars.animFlags & 1) { mini = GreatFairy_CreateForm(this, WAKE, 0); //??? if (mini != NULL) { CopyPosition(this, mini); @@ -167,7 +167,7 @@ void GreatFairy_WingsUpdate(Entity* this) { if (this->speed == 256) { this->action = 2; sub_0805EC60(this); - gRoomVars.greatFairyState |= 32; + gRoomVars.animFlags |= 32; gActiveScriptInfo.unk_00 |= 4; } else { sub_0805EC9C(this, this->speed, 256, 0); @@ -232,7 +232,7 @@ void GreatFairy_MiniRisingUpdate(Entity* this) { void GreatFairy_MiniRemoveMe(Entity* this) { GetNextFrame(this); sub_080873D0(this); - if (gRoomVars.greatFairyState & 1) { + if (gRoomVars.animFlags & 1) { DeleteEntity(this); } } @@ -266,7 +266,7 @@ void GreatFairy_MiniAffineInit2(Entity* this) { // Mini great fairy stretch void GreatFairy_MiniAffineUpdate(Entity* this) { if (--this->actionDelay == 0) { - gRoomVars.greatFairyState |= 1; + gRoomVars.animFlags |= 1; this->action = 3; sub_0805EC60(this); } else { @@ -307,7 +307,7 @@ void GreatFairy_RippleInit(Entity* this) { } void GreatFairy_RippleUpdate(Entity* this) { - if (gRoomVars.greatFairyState & 2) { + if (gRoomVars.animFlags & 2) { DeleteEntity(this); } else { GetNextFrame(this); @@ -337,7 +337,7 @@ void GreatFairy_BigRippleUpdate(Entity* this) { target = GreatFairy_CreateForm(this, MINI, 0); if (target != NULL) { PositionRelative(this, target, 0, -0x80000); - gRoomVars.greatFairyState |= 2; + gRoomVars.animFlags |= 2; DeleteEntity(this); } } @@ -389,13 +389,13 @@ void sub_080871A8(Entity* this) { if (--this->actionDelay == 0) { this->action = 3; this->actionDelay = 60; - gRoomVars.greatFairyState |= 4; + gRoomVars.animFlags |= 4; } } void sub_080871D0(Entity* this) { if (--this->actionDelay == 0) { - gRoomVars.greatFairyState |= 8; + gRoomVars.animFlags |= 8; DeleteEntity(this); } } @@ -412,7 +412,7 @@ void sub_080871F8(Entity* this) { } void sub_08087240(Entity* this) { - if (gRoomVars.greatFairyState & 4) { + if (gRoomVars.animFlags & 4) { this->action = 3; this->actionDelay = 20; this->direction = 16; @@ -469,7 +469,7 @@ void GreatFairy_InitializeAnimation(Entity* this) { this->type2 = this->type % temp; this->collisionLayer = 2; InitializeAnimation(this, this->type2); - sub_0805E3A0(this, 2); + SetDefaultPriority(this, 2); } Entity* GreatFairy_CreateForm(Entity* this, u32 curForm, u32 parameter) { @@ -516,7 +516,7 @@ void sub_08087424(Entity* this, ScriptExecutionContext* context) { if (ent != NULL) { ent->parent = &gPlayerEntity; CopyPosition(&gPlayerEntity, ent); - sub_0805E3A0(ent, 2); + SetDefaultPriority(ent, 2); } switch (context->intVariable) { diff --git a/src/object/heartContainer.c b/src/object/heartContainer.c index cbaff954..7664546c 100644 --- a/src/object/heartContainer.c +++ b/src/object/heartContainer.c @@ -31,7 +31,7 @@ static void sub_0808E6A0(Entity* this) { this->spriteSettings.draw = 0; this->hitbox = &gUnk_08121C58; this->collisionLayer = 3; - this->updateConditions = 3; + this->updatePriority = 3; } static void sub_0808E6E4(Entity* this) { @@ -59,7 +59,7 @@ static void sub_0808E714(Entity* this) { static void sub_0808E764(Entity* this) { sub_08080CB4(this); - if (!(gPlayerState.flags & PL_IS_MINISH) && sub_08017850(this)) { + if (!(gPlayerState.flags & PL_MINISH) && sub_08017850(this)) { SetFlag(this->cutsceneBeh.HWORD); CreateItemEntity(0x62, 0, 0); DeleteThisEntity(); diff --git a/src/object/houseDoorExterior.c b/src/object/houseDoorExterior.c index 41a3ee77..ae4f133d 100644 --- a/src/object/houseDoorExterior.c +++ b/src/object/houseDoorExterior.c @@ -46,7 +46,7 @@ void sub_080866D8(Entity* this) { this->action = 1; *((u32*)(&this->field_0x68)) = 0; this->field_0x6c.HALF.LO = this->actionDelay; - sub_0805E3A0(this, 6); + SetDefaultPriority(this, 6); } prop = GetCurrentRoomProperty(this->field_0x6c.HALF.LO); diff --git a/src/object/itemOnGround.c b/src/object/itemOnGround.c index a5c1770b..de9e52a0 100644 --- a/src/object/itemOnGround.c +++ b/src/object/itemOnGround.c @@ -20,7 +20,6 @@ bool32 CheckShouldPlayItemGetCutscene(Entity*); extern u32 sub_080002D0(Entity*); extern u32 sub_080177A0(Entity*, Entity*); extern void GiveItem(u32, u32); -extern u32 sub_0805E40C(Entity*); extern void (*const gUnk_0811E7D4[])(Entity*); extern void (*const gUnk_0811E7E8[])(Entity*); @@ -121,7 +120,7 @@ void sub_08080F20(Entity* this) { this->field_0x6c.HWORD = 0; this->field_0x68.HALF.LO = 0; this->actionDelay = 0; - sub_0805E3A0(this, 3); + SetDefaultPriority(this, 3); this->field_0x1c = sub_0808147C(this->type); gUnk_0811E7E8[this->field_0x68.HALF.HI](this); } else { @@ -339,7 +338,7 @@ void sub_08081404(Entity* this, u32 arg1) { bool32 sub_08081420(Entity* this) { if (CheckShouldPlayItemGetCutscene(this)) { - sub_0805E3A0(this, 6); + SetDefaultPriority(this, 6); CreateItemEntity(this->type, this->type2, 0); return TRUE; } else { @@ -377,7 +376,7 @@ void sub_080814A4(Entity* this) { } u32 sub_080814C0(Entity* this) { - if (!sub_0805E40C(this)) { + if (!AnyPrioritySet()) { if (--this->field_0x6c.HWORD == 0) { return TRUE; } diff --git a/src/object/lilypadSmall.c b/src/object/lilypadSmall.c index 8df6197f..b98ff330 100644 --- a/src/object/lilypadSmall.c +++ b/src/object/lilypadSmall.c @@ -32,7 +32,7 @@ void LilypadSmall(Entity* this) { } u32 sub_08097ADC(Entity* this) { - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { return 0; } else if (sub_080041A0(this, &gPlayerEntity, 8, 8) == 0) { return 0; diff --git a/src/object/lockedDoor.c b/src/object/lockedDoor.c index 1e15867e..c7f3c437 100644 --- a/src/object/lockedDoor.c +++ b/src/object/lockedDoor.c @@ -37,7 +37,7 @@ extern Hitbox gHitbox_2; extern u32 sub_080001DA(u32, u32); extern void sub_08078850(Entity*, u32, u32, u32); -extern void sub_0805E4E0(Entity*, u32); +extern void RequestPriorityDuration(Entity*, u32); typedef struct PACKED { s8 x; @@ -238,7 +238,7 @@ void sub_08083658(Entity* this) { tmp = &gUnk_0811F680[this->field_0x7c.BYTES.byte2]; this->x.HALF.HI += tmp->x; this->y.HALF.HI += tmp->y; - sub_0805E4E0(this, 0x3c); + RequestPriorityDuration(this, 0x3c); SoundReq(0x10b); } diff --git a/src/object/mask.c b/src/object/mask.c index c5e0c12d..837614bd 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -27,7 +27,7 @@ void sub_080929A4(Entity* this) { switch (this->type2 & 0xC0) { case 0x40: - field_0x0a = gScreenTransition.field_0xa; + field_0x0a = gScreenTransition.stairs_idx; switch (field_0x0a) { case 0x44D ... 0x44F: diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index 9d409f39..4d7bc406 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -31,7 +31,7 @@ void sub_08090F00(Entity* this) { DeleteThisEntity(); } } - if ((gPlayerState.flags & PL_IS_MINISH) && sub_080041A0(this, &gPlayerEntity, 4, 4) && + if ((gPlayerState.flags & PL_MINISH) && sub_080041A0(this, &gPlayerEntity, 4, 4) && (gPlayerEntity.z.HALF.HI == 0) && (((u16)gPlayerState.field_0x90.HALF.LO) & gUnk_0812225C[this->type2])) { DoExitTransition(GetCurrentRoomProperty(this->actionDelay)); } diff --git a/src/object/object86.c b/src/object/object86.c index a9bf512d..6829c813 100644 --- a/src/object/object86.c +++ b/src/object/object86.c @@ -6,7 +6,7 @@ #include "functions.h" void sub_08099ECC(Entity*); -extern void sub_0805E4E0(Entity*, u32); +extern void RequestPriorityDuration(Entity*, u32); extern void sub_0805B390(u32); extern void (*const gUnk_081237F8[])(Entity*); @@ -59,7 +59,7 @@ void sub_08099E8C(Entity* this) { if (sub_080041A0(this, &gPlayerEntity, 0xc, 0xc)) { if (this->subAction == 0) { sub_08099ECC(this); - sub_0805E4E0(this, 0x1e); + RequestPriorityDuration(this, 0x1e); } if (CheckLocalFlag(0x75)) { sub_0805B390(0x7); diff --git a/src/object/objectA2.c b/src/object/objectA2.c index 09a698a9..de21a664 100644 --- a/src/object/objectA2.c +++ b/src/object/objectA2.c @@ -40,7 +40,7 @@ void sub_0809F318(Entity* this) { this->spriteOrientation.flipY = 2; this->action = 1; sub_0801D2B4(this, gUnk_08124704[this->type]); - sub_0805E3A0(this, 7); + SetDefaultPriority(this, 7); } void sub_0809F374(Entity* this) { diff --git a/src/object/pot.c b/src/object/pot.c index 382fec40..110c1eb8 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -85,7 +85,7 @@ void sub_08082310(Entity* this) { this->direction = (tileType - 0x4001) * 8; this->actionDelay = 32; this->action = 4; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { this->speed >>= 1; this->actionDelay = 64; } @@ -184,7 +184,7 @@ void sub_08082614(Entity* this) { } this->action = 1; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { this->speed <<= 1; } diff --git a/src/object/treeHidingPortal.c b/src/object/treeHidingPortal.c index 94ba273a..69db7173 100644 --- a/src/object/treeHidingPortal.c +++ b/src/object/treeHidingPortal.c @@ -44,7 +44,7 @@ void sub_0809E86C(Entity* this) { if (sub_0809E9A0() == 0x54) { this->action = 2; this->actionDelay = 0xf; - sub_08078A90(1); + SetPlayerControl(1); } } @@ -61,7 +61,7 @@ void sub_0809E8BC(Entity* this) { void sub_0809E8EC(Entity* this) { if (--this->actionDelay == 0) { SetFlag(this->field_0x86.HWORD); - sub_08078A90(0); + SetPlayerControl(0); SoundReq(SFX_SECRET_BIG); DeleteThisEntity(); } diff --git a/src/object/warpPoint.c b/src/object/warpPoint.c index 43ee32d2..a43d9552 100644 --- a/src/object/warpPoint.c +++ b/src/object/warpPoint.c @@ -41,7 +41,7 @@ void sub_0808B474(Entity* this) { this->palette.b.b0 = tmp; this->spritePriority.b0 = 6; this->hitbox = &gHitbox_1; - this->updateConditions = 3; + this->updatePriority = 3; InitializeAnimation(this, 0); if (CheckFlags(this->field_0x86.HWORD)) { sub_0808B830(this); @@ -58,7 +58,7 @@ void sub_0808B474(Entity* this) { gPlayerEntity.y.HALF.HI = this->y.HALF.HI; gPlayerEntity.animationState = 4; EnqueueSFX(0x112); - sub_0805E4E0(this, this->field_0xf + 0x10); + RequestPriorityDuration(this, this->field_0xf + 0x10); } void sub_0808B530(Entity* this) { @@ -93,7 +93,7 @@ void sub_0808B590(Entity* this) { gPlayerEntity.y.HALF.HI = this->y.HALF.HI; gPlayerEntity.animationState = 4; gPlayerEntity.flags &= ~0x80; - sub_0805E4E0(this, this->field_0xf + 0x10); + RequestPriorityDuration(this, this->field_0xf + 0x10); SoundReq(0x113); } else { this->actionDelay = 0; @@ -146,16 +146,16 @@ void sub_0808B684(Entity* this) { u32 tmp; if (!--this->field_0xf) { gScreenTransition.transitioningOut = 1; - gScreenTransition.transitionType = 0; - gScreenTransition.areaID = this->field_0x7c.BYTES.byte0; - gScreenTransition.roomID = this->field_0x7c.BYTES.byte1; - gScreenTransition.playerStartPos.HALF.x = ((this->cutsceneBeh.HWORD & 0x3f) << 4) + 8; - gScreenTransition.playerStartPos.HALF.y = ((this->cutsceneBeh.HWORD & 0xfc0) >> 2) + 8; - gScreenTransition.playerLayer = 0; - gScreenTransition.playerState = 4; - gScreenTransition.field_0xf = 0; + gScreenTransition.transitionType = TRANSITION_DEFAULT; + gScreenTransition.player_status.area_next = this->field_0x7c.BYTES.byte0; + gScreenTransition.player_status.room_next = this->field_0x7c.BYTES.byte1; + gScreenTransition.player_status.start_pos.HALF.x = ((this->cutsceneBeh.HWORD & 0x3f) << 4) + 8; + gScreenTransition.player_status.start_pos.HALF.y = ((this->cutsceneBeh.HWORD & 0xfc0) >> 2) + 8; + gScreenTransition.player_status.layer = 0; + gScreenTransition.player_status.start_anim = 4; + gScreenTransition.player_status.spawn_type = 0; if (this->type == 2) { - gScreenTransition.transitionType = 2; + gScreenTransition.transitionType = TRANSITION_FADE_WHITE_SLOW; } return; } @@ -206,7 +206,7 @@ void sub_0808B73C(Entity* this) { } u32 sub_0808B7C8(Entity* this) { - if (!(gPlayerState.flags & PL_IS_MINISH) && gPlayerState.field_0xa8 != 0x12 && gPlayerEntity.health != 0 && + if (!(gPlayerState.flags & PL_MINISH) && gPlayerState.field_0xa8 != 0x12 && gPlayerEntity.health != 0 && sub_08079F8C() && sub_080041A0(this, &gPlayerEntity, 5, 5) && gPlayerEntity.z.HALF.HI == 0) { if (this->actionDelay == 0 && gPlayerEntity.action == 0x1b) { sub_080791D0(); diff --git a/src/overworld.c b/src/overworld.c new file mode 100644 index 00000000..c529f530 --- /dev/null +++ b/src/overworld.c @@ -0,0 +1,1131 @@ +#include "global.h" +#include "audio.h" +#include "screen.h" +#include "entity.h" +#include "player.h" +#include "room.h" +#include "main.h" +#include "flags.h" +#include "save.h" +#include "utils.h" +#include "fileScreen.h" +#include "menu.h" +#include "functions.h" +#include "structures.h" +#include "area.h" +#include "textbox.h" + +extern u32 gUnk_03003FC0; + +extern u8 gUnk_080FCA84[]; +extern u8 gUnk_080FCAC8[]; +extern u32 gUsedPalettes; +extern u8 gUnk_02024090[]; +extern u16 gUnk_080FCAD6[]; + +extern void** gAreaTilesets[]; +extern void** gAreaRoomMaps[]; +extern void* gAreaMetatiles[]; +extern void* gUnk_080B755C[]; +extern void** gExitLists[]; +extern void** gAreaTable[]; + +extern u8 gUnk_080FCAF8[]; +extern u16 gUnk_020178E0[]; + +void sub_080520C4(); +void SetPopupState(); +u32 sub_08052724(); +void CleanUpGFXSlots(); +void sub_080ADE24(); +void sub_0801C370(u32); +void sub_0801AE44(u32); +void sub_0801862C(void); +void sub_08078160(u32); +void SetPlayerEventPriority(void); +void InitAllRoomResInfo(void); +void InitRoomResInfo(RoomResInfo* info, RoomHeader* hdr, u32 area, u32 room); +RoomResInfo* GetCurrentRoomInfo(void); +void sub_08049D30(void); +void InitScriptData(void); +void sub_08054524(void); +void sub_080186D4(void); +void sub_0806F364(void); +void sub_08052FF4(u32 area, u32 room); +void sub_0807C860(void); +void sub_0807C740(void); +void sub_080197AC(void); +void sub_080532E4(void); +void sub_08053460(void); +void sub_08053390(void); + +static u32 StairsAreValid(); +static void ClearFlagArray(const u16*); +static void DummyHandler(u32* a1); +static void sub_08053434(u32* a1); +static void sub_080534E4(u32* a1); + +typedef struct { + u16* dest; + void* gfx_dest; + void* buffer_loc; + u32 _c; + u16 gfx_src; + u8 width; + u8 right_align : 1; + u8 sm_border : 1; + u8 unused : 1; + u8 draw_border : 1; + u8 border_type : 4; + u8 fill_type; + u8 _15; + u8 _16; + u8 stylized; +} Font; + +typedef struct { + u8 dest_off[8]; + u8 _8; + u8 right_align; + u16 _a; +} PopupOption; + +extern Font gUnk_080FCA8C; +extern PopupOption gUnk_080FCAA4[4]; + +extern void CreateDialogBox(); + +void sub_0805212C(void) { + if (gFadeControl.active) + return; + + if (gMain.field_0x5 == 0) { + if (gMenu.focusCoords[0] >= 38) { + gMenu.focusCoords[0]--; + } else { + gMenu.transitionTimer--; + if (gMenu.transitionTimer == 0) { + sub_080520C4(2); +#if defined(DEMO_USA) || defined(DEMO_JP) + SoundReq(SONG_VOL_FADE_OUT); + DoFade(7, 4); +#else + SetPopupState(0, 0); + gScreen.lcd.displayControl |= DISPCNT_BG1_ON | DISPCNT_BG2_ON; + gFadeControl.mask = 0x0000ffff; + DoFade(4, 0x10); +#endif + } + } + } else { + gMain.field_0x5--; + } +} + +#if defined(DEMO_USA) || defined(DEMO_JP) +void sub_080521A0(void) { + if (gFadeControl.active == 0) { + DoSoftReset(); + } +} +#else +void sub_080521A0(void) { + s32 temp3; + u32 temp2; + + if (gFadeControl.active) + return; + + switch (gMenu.menuType) { + case 0: + gMenu.transitionTimer = 30; + gMenu.field_0x3 = 0; + sub_080A7114(1); + SetPopupState(0, 0); + gFadeControl.mask = 0xffffffff; + return; + case 1: + if (gMenu.transitionTimer == 0) { + u32 temp = gMenu.field_0x3; + switch (gInput.newKeys) { + case DPAD_UP: + temp = 0; + break; + case DPAD_DOWN: + temp = 1; + break; + case A_BUTTON: + if (gMenu.field_0x3 != 0) { + temp2 = 4; + } else { + CreateDialogBox(8, 0); + temp2 = 2; + } + gMenu.transitionTimer = 60; + sub_080A7114(temp2); + SoundReq(SFX_TEXTBOX_SELECT); + break; + } + if (gMenu.field_0x3 != temp) { + gMenu.field_0x3 = temp; + SetPopupState(0, temp); + SoundReq(SFX_TEXTBOX_CHOICE); + } + return; + } + gMenu.transitionTimer--; + return; + case 2: + temp3 = HandleSave(0); + gMenu.field_0x0 = temp3; + switch (temp3) { + case 1: + sub_080A7114(4); + break; + case -1: + gMenu.transitionTimer = 60; + CreateDialogBox(9, 0); + sub_080A7114(3); + break; + } + return; + case 3: + if (gMenu.transitionTimer != 0) { + gMenu.transitionTimer--; + } else if (gInput.newKeys & (A_BUTTON | B_BUTTON | START_BUTTON)) { + sub_080A7114(0); + } + return; + case 4: + default: + gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON; + sub_08050384(); + sub_080520C4(3); + return; + } +} +#endif + +void sub_080522F4(void) { + switch (gMenu.menuType) { + case 0x0: + gMenu.transitionTimer = 0x1e; + gMenu.field_0x3 = 0; + sub_080A7114(1); + SetPopupState(1, 0); + return; + case 0x1: + gScreen.lcd.displayControl |= DISPCNT_BG1_ON; + if (gMenu.transitionTimer != 0) { + gMenu.transitionTimer--; + return; + } else { + u32 temp = gMenu.field_0x3; + switch (gInput.newKeys) { + case DPAD_UP: + temp = 0; + break; + case DPAD_DOWN: + temp = 1; + break; + case A_BUTTON: + sub_080A7114(2); + SoundReq(SFX_TEXTBOX_SELECT); + if (temp == 0) { + DoFade(5, 8); + } else { + DoFade(7, 8); + } + break; + } + if (gMenu.field_0x3 != temp) { + gMenu.field_0x3 = temp; + SetPopupState(1, temp); + SoundReq(SFX_TEXTBOX_CHOICE); + } + } + return; + case 0x2: + default: + if (gFadeControl.active == 0) { + if (gMenu.field_0x3 == 0) { + InitScreen(2); + } else { + DoSoftReset(); + } + } + return; + } +} + +void nullsub_107(void) { +} + +void sub_080523D4(void) { + u32 i; + + gOamCmd._4 = 0; + gOamCmd._6 = 0; + gOamCmd._8 = 0x8600; + gOamCmd.y = gMenu.focusCoords[0]; + for (i = 0; i < 8; ++i) { + gOamCmd.x = gUnk_080FCA84[i]; +#ifdef EU + sub_080ADA14(0x1fc, i); +#else + sub_080ADA14(0x1fd, i); +#endif + } +} + +void SetPopupState(u32 type, u32 choice_idx) { + Font font; + PopupOption* opt; + u32 fakematch; + + MemClear(gBG1Buffer, sizeof gBG1Buffer); + gUnk_020227E8[0]._0.WORD = 0xf; + gUnk_020227E8[1]._0.WORD = 0xf; + gUnk_020227E8[2]._0.WORD = 0xf; + gUnk_020227E8[3]._0.WORD = 0xf; + *(&gUnk_020227E8[choice_idx]._0.BYTES.byte0 + 1) = fakematch = 1; + + MemCopy(&gUnk_080FCA8C, &font, sizeof font); + opt = &gUnk_080FCAA4[type]; + font.dest = gUnk_080FCA8C.dest + (opt->dest_off[gSaveHeader->gameLanguage] + opt->_8 * 32); + font.right_align = opt->right_align; + sub_0805F46C(opt->_a, &font); + gScreen.bg1.updated = fakematch; +} + +void InitializePlayer(void) { + static const u8 sPlayerSpawnStates[] = { + [PL_SPAWN_DEFAULT] = PLAYER_INIT, + [PL_SPAWN_MINISH] = PLAYER_MINISH, + [PL_SPAWN_DROP] = PLAYER_INIT, + [PL_SPAWN_WALKING] = PLAYER_ROOMTRANSITION, + [PL_SPAWN_STEP_IN] = PLAYER_080720DC, + [PL_SPAWN_SPECIAL] = PLAYER_08074C44, + [PL_SPAWN_DROP_MINISH] = PLAYER_MINISH, + [PL_SPAWN_STAIRS_ASCEND] = PLAYER_USEENTRANCE, + [PL_SPAWN_STAIRS_DESCEND] = PLAYER_USEENTRANCE, + [PL_SPAWN_9] = PLAYER_MINISH, + [PL_SPAWN_PARACHUTE_FORWARD] = PLAYER_WARP, + [PL_SPAWN_PARACHUTE_UP] = PLAYER_WARP, + [PL_SPAWN_FAST_TRAVEL] = PLAYER_WARP, + }; + + Entity* pl; + + sub_080784C8(); + MemClear(&gUnk_03000B80, sizeof gUnk_03000B80); + MemClear(&gPlayerState, sizeof gPlayerState); + MemFill32(0xffffffff, &gPlayerState.hurtType, sizeof gPlayerState.hurtType); + MemClear(&gPlayerEntity, sizeof gPlayerEntity); + + pl = &gPlayerEntity; + + gRoomControls.cameraTarget = pl; + gPlayerState.playerAction = sPlayerSpawnStates[gScreenTransition.player_status.spawn_type]; + if (!CheckGlobalFlag(EZERO_1ST)) { + gPlayerState.flags |= PL_NO_CAP; + } + switch (gScreenTransition.player_status.spawn_type) { + case PL_SPAWN_DROP: + case PL_SPAWN_DROP_MINISH: + pl->z.HALF.HI = -0xc0; + break; + case PL_SPAWN_STEP_IN: + gPlayerState.field_0x34[4] = 16; + pl->direction = Direction8FromAnimationState(gScreenTransition.player_status.start_anim); + case PL_SPAWN_WALKING: + pl->speed = 224; + break; + case PL_SPAWN_STAIRS_ASCEND: + case PL_SPAWN_STAIRS_DESCEND: + gPlayerState.field_0x34[4] = 1; + gPlayerState.field_0x34[5] = gScreenTransition.player_status.spawn_type; + break; + case PL_SPAWN_PARACHUTE_FORWARD: + gPlayerState.field_0x34[4] = 1; + break; + case PL_SPAWN_PARACHUTE_UP: + gPlayerState.field_0x34[4] = 3; + break; + case PL_SPAWN_FAST_TRAVEL: + gPlayerState.field_0x34[4] = 4; + } + + pl->kind = PLAYER; + pl->flags |= ENT_COLLIDE | ENT_20; + pl->spritePriority.b0 = 4; + pl->health = gSave.stats.health; + pl->x.HALF.HI = gScreenTransition.player_status.start_pos.HALF.x; + pl->y.HALF.HI = gScreenTransition.player_status.start_pos.HALF.y; + pl->animationState = gScreenTransition.player_status.start_anim; + pl->collisionLayer = gScreenTransition.player_status.layer; + UpdateSpriteForCollisionLayer(pl); + AppendEntityToList(pl, 1); + RegisterPlayerHitbox(); +} + +bool32 CheckIsOverworld(void) { +#ifdef EU + return gArea.areaMetadata == 0x01; +#else + return gArea.areaMetadata == 0x81; +#endif +} + +bool32 sub_08052638(u32 r0) { +#if EU + return gAreaMetadata[r0].flags == 0x01; +#else + return gAreaMetadata[r0].flags == 0x81; +#endif +} + +#ifndef EU +u32 sub_08052654(void) { + return (gArea.areaMetadata >> 7) & 1; +} +#endif + +u32 CheckIsDungeon(void) { + return (gArea.areaMetadata >> 2) & 1; +} + +u32 CheckIsInteriorWithEnemies(void) { + return (gArea.areaMetadata >> 4) & 1; +} + +u32 CheckIsInteriorNoEnemies(void) { + return (gArea.areaMetadata >> 6) & 1; +} + +u32 CheckHasMap(void) { + return (gArea.areaMetadata >> 3) & 1; +} + +s32 ModHealth(s32 deltaHealth) { + s32 newHealth; + + newHealth = gStats.health + deltaHealth; + if (newHealth < 0) { + newHealth = 0; + } + if (gStats.maxHealth < newHealth) { + newHealth = (u32)gStats.maxHealth; + } + gStats.health = newHealth; + gPlayerEntity.health = newHealth; + return newHealth; +} + +void ModRupees(s32 rupeeDelta) { + s32 newRupeeCount; + Stats* s = &gStats; + + newRupeeCount = s->rupees + rupeeDelta; + if (newRupeeCount < 0) { + newRupeeCount = 0; + } else { + if (newRupeeCount > gWalletSizes[s->walletType * 2]) { + newRupeeCount = gWalletSizes[s->walletType * 2]; + } + } + s->rupees = newRupeeCount; +} + +void sub_080526F8(int a1) { + if (sub_08052724()) { + u8* p = &gSave.unk45C[gArea.dungeon_idx]; + if (*p + a1 < 0) + *p = 0; + else + *p += a1; + } +} + +u32 sub_08052724(void) { + return (gArea.areaMetadata >> 1) & 1; +} + +u32 sub_08052734(u32 x, u32 y) { + u32 tmp; + + if (sub_08052724()) + tmp = gSave.unk45C[gArea.dungeon_idx]; + return tmp ? 1 : 0; +} + +u32 sub_08052764(u32 x, u32 y) { + u32 tmp; + + if (sub_08052724()) + tmp = gSave.unk46C[gArea.dungeon_idx] & 4; + return tmp ? 1 : 0; +} + +u32 sub_0805279C(u32 x, u32 y) { + if (!sub_08052724()) + return 0; + return (gSave.unk46C[gArea.dungeon_idx] >> 1) & 1; +} + +u32 sub_080527CC(u32 x, u32 y) { + u32 tmp; + + if (!sub_08052724()) + return 0; + return gSave.unk46C[gArea.dungeon_idx] & 1; +} + +void sub_080527FC(u32 a1, u32 a2) { + sub_08053320(a1, a2); +#ifndef EU + CleanUpGFXSlots(); +#endif + sub_080ADE24(); + sub_0801C370(1); + sub_0801AE44(a1); + MemCopy(gUnk_02024090, gPaletteBuffer, 1024); + gUsedPalettes = -1; +} + +void sub_0805283C(void) { + gArea.pMusicIndex = gAreaMetadata[gRoomControls.areaID]._3; + if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START)) { + gArea.pMusicIndex = BGM_FIGHT_THEME2; + } +} + +#ifndef EU +void sub_08052878(void) { + gArea.musicIndex = gArea.pMusicIndex; + SoundReq(SONG_STOP_ALL); +} + +void sub_0805289C(void) { + gArea.pMusicIndex = gArea.musicIndex; +} +#endif + +u32 sub_080528B4(void) { + if (gScreenTransition.field_0x4[1]) { + sub_0804FFE4(); + gMain.funcIndex = 3; + gMain.transition = 0; + DoFade(5, 8); + SoundReq(SONG_STOP_BGM); + return 1; + } + return 0; +} + +void RoomExitCallback(void) { + if (gArea.transitionManager != NULL && gArea.onExit != NULL) + gArea.onExit(gArea.transitionManager); +} + +u32 HandleRoomExit(void) { + if (gScreenTransition.transitioningOut && gSave.stats.health != 0 && gPlayerState.field_0xa8 != 18) { + if (StairsAreValid()) { + gScreenTransition.transitioningOut = 0; + return 0; + } + + switch (gScreenTransition.transitionType) { + case TRANSITION_CUT: + DoFade(13, 8); + break; + case TRANSITION_CUT_FAST: + DoFade(13, 3); + break; + case TRANSITION_FADE_WHITE_SLOW: + DoFade(7, 4); + break; + case TRANSITION_FADE_BLACK_SLOW: + DoFade(5, 4); + break; + case TRANSITION_FADE_BLACK: + DoFade(5, 16); + break; + case TRANSITION_FADE_BLACK_FAST: + DoFade(5, 256); + break; + case TRANSITION_7: + case TRANSITION_FADE_WHITE_FAST: + DoFade(7, 256); + break; + default: + DoFade(7, 16); + break; + } + RoomExitCallback(); + gMain.transition = 3; + *(&gMain.field_0xa + 1) = 1; + return 1; + } + return 0; +} + +static u32 StairsAreValid(void) { + static const u16 sStairTypes[] = { 0x91, PL_SPAWN_STAIRS_ASCEND, 0x92, PL_SPAWN_STAIRS_DESCEND, + 0x93, PL_SPAWN_STAIRS_ASCEND, 0x94, PL_SPAWN_STAIRS_DESCEND, + 0x95, PL_SPAWN_STAIRS_ASCEND, 0x96, PL_SPAWN_STAIRS_DESCEND, + 0x97, PL_SPAWN_STAIRS_ASCEND, 0x98, PL_SPAWN_STAIRS_DESCEND, + 0 }; + + const u16* i; + u32 tgt = gScreenTransition.stairs_idx; + + for (i = sStairTypes; i[0] != 0; i += 2) { + if (tgt == i[0]) { + gPlayerState.playerAction = 30; + gPlayerState.field_0x38 = 0; + gPlayerState.field_0x39 = i[1]; + if (!gScreenTransition.player_status.spawn_type) + gScreenTransition.player_status.spawn_type = i[1]; + return 1; + } + } + return 0; +} + +void InitParachuteRoom(void) { + gScreenTransition.transitioningOut = 1; + gScreenTransition.player_status.start_pos.HALF.x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX) & 0x3F8; + gScreenTransition.player_status.start_pos.HALF.y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) & 0x3F8; + gScreenTransition.player_status.start_anim = 4; + gScreenTransition.player_status.spawn_type = PL_SPAWN_PARACHUTE_FORWARD; + gScreenTransition.player_status.area_next = gRoomControls.areaID; + gScreenTransition.player_status.room_next = gRoomControls.roomID - 1; +} + +static void HandleRoomEnter(void) { + switch (gScreenTransition.transitionType) { + case TRANSITION_CUT: + DoFade(12, 8); + break; + case TRANSITION_CUT_FAST: + DoFade(12, 3); + break; + case TRANSITION_FADE_WHITE_SLOW: + DoFade(6, 4); + break; + case TRANSITION_3: + break; + case TRANSITION_FADE_BLACK_FAST: + DoFade(5, 256); + break; + case TRANSITION_7: + DoFade(7, 256); + break; + case TRANSITION_FADE_BLACK: + DoFade(4, 16); + break; + case TRANSITION_FADE_WHITE_FAST: + DoFade(6, 8); + break; + default: + sub_080500F4(16); + break; + } +} + +u32 sub_08052B24(void) { + s32 tmp = 1; + + if (!(gInput.heldKeys & SELECT_BUTTON) || gPlayerState.field_0x8b || gUnk_02034490[0] || gUnk_0200AF00.filler0[1]) + return 0; + + if ((gPlayerState.flags & 0x118) || (gPlayerState.field_0xa9 > tmp) || gPlayerState.field_0x2c || + gPlayerEntity.field_0x7a.HWORD) + return 0; + + if ((gPlayerEntity.z.HALF.HI & 0x8000) && !gPlayerState.field_0xa) + return 0; + + sub_0801862C(); + sub_08078160(19); + SetPlayerEventPriority(); + return 1; +} + +void DisplayEzloMessage(void) { + u32 height; + u32 idx; +#if defined(JP) || defined(EU) + idx = 0x10; +#else + idx = 0x11; +#endif + + if (gScreenTransition.player_status.field_0x24[idx] == 0) { + height = gPlayerEntity.y.HALF.HI - gRoomControls.roomScrollY > 96 ? 1 : 13; + } else { + height = gScreenTransition.player_status.field_0x24[idx]; + } + MessageAtHeight(gScreenTransition.field_0x36, height); +} + +#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) +void sub_08052BF8(void) { + Entity* e = NULL; + + if (gScreenTransition.player_status.field_0x24[13]) + return; + gScreenTransition.player_status.field_0x24[13] = 1; +#ifndef DEMO_JP + gScreenTransition.player_status.field_0x24[10] = gArea.locationIndex; +#endif + e = (Entity*)GetEmptyManager(); + if (e == NULL) + return; + e->kind = MANAGER; + e->id = 15; + e->type = 15; + AppendEntityToList(e, 0); +} +#endif + +void sub_08052C3C(void) { + if (gArea.field_0x18 == 0) + gArea.unk1A = gArea.field_0x18; + if (gArea.unk1A) { + gArea.unk1A--; + gArea.field_0x18 = 0; + } +} + +void sub_08052C5C(void) { + if (!CheckIsInteriorNoEnemies()) { + if (CheckIsOverworld()) { + gScreenTransition.player_status.field_0x20 = gPlayerEntity.x.HALF_U.HI; + gScreenTransition.player_status.field_0x22 = gPlayerEntity.y.HALF_U.HI; + } else if (CheckIsDungeon()) { + gScreenTransition.player_status.field_0x1c = gPlayerEntity.x.HALF.HI; + gScreenTransition.player_status.field_0x1e = gPlayerEntity.y.HALF.HI; + } + } +} + +void sub_08052CA4(u32 area, u32 room, u32 x, u32 y) { + RoomHeader* hdr = gAreaRoomHeaders[area] + room; + gScreenTransition.player_status.field_0x20 = hdr->map_x + x; + gScreenTransition.player_status.field_0x22 = hdr->map_y + y; +} + +void sub_08052CD0(u32 area, u32 room, u32 x, u32 y) { + RoomHeader* hdr = gAreaRoomHeaders[area] + room; + gScreenTransition.player_status.field_0x1c = hdr->map_x + x; + gScreenTransition.player_status.field_0x1e = hdr->map_y + y; +} + +void sub_08052CFC() { + AreaHeader* a_hdr = NULL; + + MemClear(&gArea, sizeof gArea); + a_hdr = &gAreaMetadata[gRoomControls.areaID]; + gArea.areaMetadata = a_hdr->flags; + gArea.locationIndex = a_hdr->location; + gArea.dungeon_idx = a_hdr->location - 23; + gArea.localFlagOffset = gLocalFlagBanks[a_hdr->flag_bank]; + gArea.filler[0] = a_hdr->flag_bank; + gArea.unk1A = 180; + gArea.unk_0a = 256; + HandleRoomEnter(); + InitAllRoomResInfo(); +} + +u32 GetFlagBankOffset(u32 idx) { + AreaHeader* a_hdr = &gAreaMetadata[idx]; + return gLocalFlagBanks[a_hdr->flag_bank]; +} + +void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)()) { + if (gMain.transition != 7) { + gArea.transitionManager = mgr; + gArea.onEnter = onEnter; + gArea.onExit = onExit; + } +} + +void InitAllRoomResInfo(void) { + RoomHeader* r_hdr = gAreaRoomHeaders[gRoomControls.areaID]; + RoomResInfo* info = gArea.roomResInfos; + u32 i; + for (i = 0; i < MAX_ROOMS && *(u16*)r_hdr != 0xFFFF; i++, r_hdr++) { + if (r_hdr->tileset_id != 0xFFFF) + InitRoomResInfo(info, r_hdr, gRoomControls.areaID, i); + info++; + } + gArea.pCurrentRoomInfo = GetCurrentRoomInfo(); +} + +void InitRoomResInfo(RoomResInfo* info, RoomHeader* r_hdr, u32 area, u32 room) { + info->map_x = r_hdr->map_x; + info->map_y = r_hdr->map_y; + info->pixel_width = r_hdr->pixel_width; + info->pixel_height = r_hdr->pixel_height; + info->tileset = *(gAreaTilesets[area] + r_hdr->tileset_id); + info->map = *(gAreaRoomMaps[area] + room); + info->metatiles = gAreaMetatiles[area]; + info->bg_anim = gUnk_080B755C[area]; + info->exits = *(gExitLists[area] + room); + if (gAreaTable[area] != NULL) { + info->properties = *(gAreaTable[area] + room); + } +} + +RoomResInfo* GetCurrentRoomInfo(void) { + return &gArea.roomResInfos[gRoomControls.roomID]; +} + +void sub_08052EA0(void) { + MemClear(&gRoomVars, sizeof gRoomVars); + gRoomVars.unk_10[0] = -1; + gRoomVars.unk_10[1] = gRoomVars.unk_10[0]; + gRoomVars.unk_10[2] = gRoomVars.unk_10[0]; + gRoomVars.unk_10[3] = gRoomVars.unk_10[0]; + gRoomVars.field_0xc = 256; + gArea.locationIndex = gAreaMetadata[gRoomControls.areaID].location; + sub_08049D30(); + InitScriptData(); + sub_08054524(); + sub_080186D4(); + sub_0806F364(); + UpdateGlobalProgress(); +} + +u32 sub_08052EF4(s32 idx) { + AreaHeader* a_hdr = NULL; + u32 i = idx < 0 ? gRoomControls.areaID : idx; + a_hdr = &gAreaMetadata[i]; + return gLocalFlagBanks[a_hdr->flag_bank]; +} + +void sub_08052F1C(void) { + u32 x, y; + LinkedList* ll; + Entity* e; + + if ((gArea.filler3[1] & 1) == 0 || !gRoomVars.field_0x0) + return; + + y = 0; + x = 0; + + // WTF? + switch (gRoomControls.unk_10) { + case 0: + y = gArea.pCurrentRoomInfo->pixel_height; + case 1: + y = gArea.pCurrentRoomInfo->pixel_height; + case 2: + y = gArea.pCurrentRoomInfo->pixel_height; + case 3: + x = gArea.pCurrentRoomInfo->pixel_width; + } + + gArea.pCurrentRoomInfo->map_x += x; + gArea.pCurrentRoomInfo->map_y += y; + gRoomControls.roomOriginX += x; + gRoomControls.roomOriginY += y; + gRoomControls.roomScrollX += x; + gRoomControls.roomScrollY += y; + + ll = gEntityLists; + do { + for (e = ll->first; e != (Entity*)ll; e = e->next) { + if (e->kind != MANAGER) { + e->x.HALF.HI += x; + e->y.HALF.HI += y; + } + } + } while (++ll < gEntityLists + 9); +} + +void sub_08052FD8(u32 area, u32 room) { + sub_08052FF4(area, room); + gRoomControls.cameraTarget = NULL; + sub_0807C860(); + sub_0807C740(); +} + +void sub_08052FF4(u32 area, u32 room) { + RoomHeader* r_hdr = NULL; + + sub_08080668(); + sub_080197AC(); + gRoomControls.areaID = area; + gRoomControls.roomID = room; + gScreen.lcd.displayControl = 0x1740; + MemClear(&gArea.currentRoomInfo, sizeof gArea.currentRoomInfo); + gArea.pCurrentRoomInfo = &gArea.currentRoomInfo; + r_hdr = gAreaRoomHeaders[area] + room; + gArea.currentRoomInfo.map_x = r_hdr->map_x; + gArea.currentRoomInfo.map_y = r_hdr->map_y; + gArea.currentRoomInfo.pixel_width = r_hdr->pixel_width; + gArea.currentRoomInfo.pixel_height = r_hdr->pixel_height; + gArea.currentRoomInfo.tileset = *(gAreaTilesets[area] + r_hdr->tileset_id); + gArea.currentRoomInfo.map = *(gAreaRoomMaps[area] + room); + gArea.currentRoomInfo.metatiles = gAreaMetatiles[area]; + gArea.currentRoomInfo.bg_anim = gUnk_080B755C[area]; +} + +void sub_0805308C(s32 a1) { + a1 += gRoomVars.field_0xc; + if (a1 < 0) + a1 = 0; + if (a1 > 256) + a1 = 256; + gRoomVars.field_0xc = a1; +} + +void sub_080530B0(void) { + static const u16 sMinecartData[] = { 0x189, 0x0, 0x102, 0x4, 0x1af, 0x0, 0x204, 0x0, + 0x1cf, 0x0, 0x10, 0x4, 0x0, 0x0, 0x0, 0x0 }; + + MemCopy(sMinecartData, gScreenTransition.minecart_data, sizeof sMinecartData); +} + +void UpdateGlobalProgress(void) { + u8 pcnt = 1; + if (CheckLocalFlagByBank(FLAG_BANK_3, SEIIKI_STAINED_GLASS)) { + pcnt = 9; + } else if (CheckGlobalFlag(LV5_CLEAR)) { + pcnt = 8; + } else if (CheckLocalFlagByBank(FLAG_BANK_3, OUBO_KAKERA)) { + pcnt = 7; + } else if (CheckGlobalFlag(LV4_CLEAR)) { + pcnt = 6; + } else if (CheckGlobalFlag(LV3_CLEAR)) { + pcnt = 5; + } else if (CheckLocalFlagByBank(FLAG_BANK_1, SOUGEN_08_TORITSUKI)) { + pcnt = 4; + } else if (CheckGlobalFlag(LV1_CLEAR)) { + pcnt = 2; + } + gSave.global_progress = pcnt; +} + +u32 sub_08053144(void) { + u32 ret; + + if (CheckGlobalFlag(ENDING)) + return 0; + ret = 0; + if (gArea.locationIndex != 0) + ret = !!(gScreenTransition.player_status.field_0x24[10] ^ gArea.locationIndex); + return ret; +} + +void sub_08053178(void) { + if (!sub_08053144()) + return; + + gScreenTransition.player_status.field_0x24[10] = gArea.locationIndex; + + if (!CheckGlobalFlag(TABIDACHI)) + return; + + if (!CheckGlobalFlag(ENDING)) { + Entity* e = (Entity*)GetEmptyManager(); + if (e != NULL) { + e->kind = MANAGER; + e->id = 0x39; + AppendEntityToList(e, 8); + if (!gRoomVars.field_0x0 && !ReadBit(gSave.areaVisitFlags, gArea.locationIndex)) { + e->type2 = 1; + SetPlayerControl(3); + SetInitializationPriority(); + } + } + } + WriteBit(gSave.areaVisitFlags, gArea.locationIndex); +} + +void sub_080531F8(void) { + gPlayerState.startPosX = gPlayerEntity.x.HALF.HI; + gPlayerState.startPosY = gPlayerEntity.y.HALF.HI; + if (sub_08053144()) { + MemCopy(&gScreenTransition.player_status, &gSave.saved_status, sizeof gScreenTransition.player_status); + if (CheckIsDungeon()) { + gScreenTransition.player_status.field_0x16 = gRoomControls.areaID; + gScreenTransition.player_status.field_0x17 = gRoomControls.roomID; + gScreenTransition.player_status.field_0x18 = gPlayerEntity.x.HALF.HI; + gScreenTransition.player_status.field_0x1a = gPlayerEntity.y.HALF.HI; + } + } +} + +void sub_08053250(void) { + gScreenTransition.player_status.spawn_type = PL_SPAWN_DEFAULT; + gScreenTransition.player_status.start_pos.HALF.x = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX; + gScreenTransition.player_status.start_pos.HALF.y = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY; + gScreenTransition.player_status.start_anim = gPlayerEntity.animationState; + gScreenTransition.player_status.layer = gPlayerEntity.collisionLayer; + gScreenTransition.player_status.area_next = gRoomControls.areaID; + gScreenTransition.player_status.room_next = gRoomControls.roomID; + MemCopy(&gScreenTransition.player_status, &gSave.saved_status, sizeof gScreenTransition.player_status); +} + +void sub_0805329C(void) { + if (sub_08053144()) { + switch (gRoomControls.areaID) { + case AREA_DEEPWOOD_SHRINE: + gSave.unk7 = 0; + break; + case AREA_CAVE_OF_FLAMES: + sub_080530B0(); + break; + case AREA_OUTER_FORTRESS_OF_WINDS: + sub_080532E4(); + break; + default: + sub_08053460(); + break; + } + } +} + +void sub_080532E4(void) { + s32 x, y; + + RoomHeader* r_hdr = gAreaRoomHeaders[AREA_FORTRESS_OF_WINDS] + 33; + + gScreenTransition.player_status.field_0x16 = AREA_FORTRESS_OF_WINDS; + gScreenTransition.player_status.field_0x17 = 33; + + gScreenTransition.player_status.field_0x18 = r_hdr->map_x + r_hdr->pixel_width / 2; + gScreenTransition.player_status.field_0x1c = gScreenTransition.player_status.field_0x18; + gScreenTransition.player_status.field_0x1a = r_hdr->map_y + r_hdr->pixel_height + 0xa0; + gScreenTransition.player_status.field_0x1e = gScreenTransition.player_status.field_0x1a; +} + +void sub_08053320(void) { + MemClear(&gBG0Buffer, sizeof gBG0Buffer); + MemClear(&gBG1Buffer, sizeof gBG1Buffer); + MemClear(&gBG2Buffer, sizeof gBG2Buffer); + MemClear(&gBG3Buffer, sizeof gBG3Buffer); + LoadGfxGroup(16); + LoadGfxGroup(23); + if (gRoomControls.areaID == AREA_CASTOR_WILDS) + LoadGfxGroup(26); + sub_08053390(); + LoadPaletteGroup(11); + LoadPaletteGroup(12); + SetColor(0, 0); +} + +void sub_08053390(void) { + LoadGfxGroup(GetInventoryValue(8) ? 24 : 25); + if (GetInventoryValue(0xAu)) + LoadGfxGroup(29); + LoadGfxGroup(GetInventoryValue(12) ? 28 : 27); +} + +void sub_080533CC(void) { + u16* p1 = gUnk_020178E0; + u16* p2 = gUnk_020178E0 - 0x100; + *p2++ = *p1++; + *p2++ = *p1++; + *p2++ = *p1++; + *p2++ = *p1++; + *p2++ = *p1++; + gUsedPalettes |= 8; +} + +void sub_0805340C(void) { + static void (*const sHandlers[])(u32*) = { + sub_08053434, DummyHandler, sub_080534E4, DummyHandler, DummyHandler, DummyHandler, DummyHandler, DummyHandler, + }; + + u32* p; + u32 i; + + p = gSave.unk48C; + for (i = 0; i < 8; i++, p++) { + (sHandlers[i])(p); + } +} + +static void DummyHandler(u32* a1) { +} + +static void sub_08053434(u32* a1) { + if (gArea.locationIndex == 29 && *a1) { + if (!--*a1) { + sub_08053460(); + MenuFadeIn(5, 6); + } + } +} + +void sub_08053460(void) { + static const u16 sClearFlags[] = { FLAG_BANK_10, LV6_GUFUU1_GISHIKI, FLAG_BANK_10, LV6_GUFUU1_DEMO, + FLAG_BANK_10, LV6_ZELDA_DISCURSE, FLAG_BANK_10, LV6_00_ESCAPE, + FLAG_BANK_10, LV6_GUFUU2_DEAD, FLAG_BANK_G, ENDING, + FLAG_BANK_10, LV6_KANE_START, FLAG_BANK_10, LV6_KANE_1ST, + FLAG_BANK_10, LV6_KANE_2ND, FLAG_BANK_10, LV6_SOTO_ENDING, + 0xFFFF }; + + gSave.unk48C[0] = 0; + if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_ZELDA_DISCURSE)) + ClearGlobalFlag(ZELDA_CHASE); + ClearFlagArray(sClearFlags); +} + +void sub_08053494(void) { + gSave.unk48C[0] = 10800; +} + +void sub_080534AC(void) { + if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START)) { + ClearLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START); + gSave.unk48C[0] = 0; + SoundReq(SONG_STOP_BGM); + } +} + +static void sub_080534E4(u32* a1) { + if (gRoomControls.areaID != AREA_VEIL_FALLS_TOP) { + if (*a1) + --*a1; + } +} + +void sub_08053500(void) { + gSave.unk48C[2] = 36000; +} + +void sub_08053518(void) { + static const u16 sClearFlags[] = { FLAG_BANK_2, BILL00_SHICHOU_00, FLAG_BANK_2, BILL0A_YADO_TAKARA_00, + FLAG_BANK_2, BILL0C_SCHOOLR_00, FLAG_BANK_1, MACHI00_00, + FLAG_BANK_1, MACHI00_02, FLAG_BANK_2, MHOUSE06_00, + FLAG_BANK_2, MHOUSE14_00, FLAG_BANK_2, MHOUSE2_00_02, + FLAG_BANK_2, MHOUSE2_01_T0, FLAG_BANK_2, MHOUSE2_02_KAME, + FLAG_BANK_2, SHOP00_ITEM_01, FLAG_BANK_2, SHOP01_CAFE_01, + 0xFFFF }; + + sub_08053460(); + ClearFlagArray(sClearFlags); + + if (!CheckGlobalFlag(WATERBEAN_PUT)) + ClearGlobalFlag(WATERBEAN_OUT); + if (!GetInventoryValue(0x40u)) + ClearGlobalFlag(LV1_CLEAR); + if (!GetInventoryValue(0x41u)) + ClearGlobalFlag(LV2_CLEAR); + if (!GetInventoryValue(0x42u)) + ClearGlobalFlag(LV4_CLEAR); +} + +static void ClearFlagArray(const u16* p) { + const u16* i; + + for (i = p; i[0] != 0xFFFF; i += 2) + ClearLocalFlagByBank(i[0], i[1]); +} diff --git a/src/player.c b/src/player.c index 907be6ec..78b22379 100644 --- a/src/player.c +++ b/src/player.c @@ -30,11 +30,11 @@ extern void sub_08079E08(); extern void sub_08078F60(); extern void sub_0806F948(); extern void sub_08077698(); -extern void FreezeTime(); +extern void SetPlayerEventPriority(); extern void sub_080717F8(); -extern void UnfreezeTime(); +extern void ResetPlayerEventPriority(); extern void sub_08071A6C(); -extern void sub_08052BB8(); +extern void DisplayEzloMessage(); extern void sub_08079258(); extern void sub_08071AF0(); extern void sub_080728AC(); @@ -61,13 +61,13 @@ extern void sub_0807B068(); extern u32 sub_080001DA(); extern void sub_08072A60(); extern u32 sub_0807A2F8(); -extern u32 sub_08052620(); +extern u32 CheckIsOverworld(); extern u32 sub_0806F730(); extern u32 sub_08007DD6(); -extern u32 sub_0807A1E8(); +extern u32 GetSurfaceCalcType(); extern void sub_08073094(); extern void sub_08074808(); -extern void sub_0805E4E0(); +extern void RequestPriorityDuration(); typedef struct { u8 frame; @@ -160,7 +160,7 @@ void sub_08070C3C(Entity* this) { gPlayerState.jumpStatus = 0; - if ((gPlayerState.flags & PL_IS_MINISH) != 0) + if ((gPlayerState.flags & PL_MINISH) != 0) gPlayerState.field_0x8 = 0x1ba; else if ((gPlayerState.flags & 8) != 0) gPlayerState.field_0x8 = 0x458; @@ -205,7 +205,7 @@ void sub_08070D38(Entity* this) { this->actionDelay = gPlayerState.field_0x38; this->spriteIndex = 1; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { this->zVelocity = 0x20000; gPlayerState.field_0x8 = 0x114; sub_08080964(16, 0); @@ -259,7 +259,7 @@ NONMATCH("asm/non_matching/player/sub_08070DC4.inc", void sub_08070DC4(Entity* t this->actionDelay = 8; this->subAction++; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) + if ((gPlayerState.flags & PL_MINISH) == 0) gPlayerState.field_0x8 = 0x100; } END_NONMATCH @@ -285,12 +285,12 @@ void sub_08070E9C(Entity* this) { } void sub_08070EDC(Entity* this) { - this->updateConditions = 2; + this->updatePriority = 2; if ((gMessage.doTextBox & 0x7f) != 0) this->subAction = 1; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) + if ((gPlayerState.flags & PL_MINISH) == 0) sub_08079938(); else gPlayerState.field_0x8 = 0xc18; @@ -299,7 +299,7 @@ void sub_08070EDC(Entity* this) { void sub_08070f24(Entity* this) { UpdateAnimationSingleFrame(this); if ((gMessage.doTextBox & 0x7f) == 0) { - this->updateConditions = this->updateConditions2; + this->updatePriority = this->updatePriorityPrev; sub_080791D0(); } } @@ -330,7 +330,7 @@ void sub_08070FA4(Entity* this) { gPlayerState.flags |= 1; gPlayerState.jumpStatus = 0; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { if (gPlayerState.flags & 0x8) { if (sub_080542AC(gPlayerState.field_0x38)) { temp = 0x45e; @@ -390,7 +390,7 @@ void sub_080710A8(Entity* this) { gPlayerState.playerAction = 0; if ((gPlayerState.heldObject | gPlayerState.field_0x1a[1]) == 0) { - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { ResetPlayer(); if ((gPlayerState.flags & 0x8) != 0) { @@ -455,7 +455,7 @@ void sub_08071130(Entity* this) { this->actionDelay = 6; - if (((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) && ((gPlayerState.flags & PL_IS_MINISH) == 0)) { + if (((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) && ((gPlayerState.flags & PL_MINISH) == 0)) { if (gPlayerState.flags & 0x8) { gPlayerState.field_0x8 = 0x424; } else { @@ -472,7 +472,7 @@ void sub_08071130(Entity* this) { void sub_08071208(Entity* this) { if ((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) { - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { UpdateAnimationSingleFrame(this); } } @@ -494,7 +494,7 @@ void sub_0807127C(Entity* this) { this->subAction = 1; this->spritePriority.b1 = 0; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { this->actionDelay = 0x3c; gPlayerState.field_0x8 = 0xc19; SoundReq(SFX_WATER_SPLASH); @@ -519,7 +519,7 @@ void sub_080712F0(Entity* this) { temp = FALSE; - if ((gPlayerState.flags & PL_IS_MINISH) != 0) { + if ((gPlayerState.flags & PL_MINISH) != 0) { if (--this->actionDelay == 0) temp = TRUE; } else if ((this->frame & 0x80) != 0) { @@ -648,7 +648,7 @@ void PortalActivateInit(Entity* this) { gPlayerState.field_0x8 = 0x738; CreateObjectWithParent(this, OBJECT_6, 1, 0); sub_08077B20(); - FreezeTime(); + SetPlayerEventPriority(); } void PortalActivateUpdate(Entity* this) { @@ -657,7 +657,7 @@ void PortalActivateUpdate(Entity* this) { UpdateAnimationSingleFrame(this); - if (gPlayerState.flags & PL_IS_MINISH) + if (gPlayerState.flags & PL_MINISH) this->subAction = 4; } @@ -726,7 +726,7 @@ void sub_080717F8(Entity* this) { this->subAction = 0; gPlayerState.flags = (gPlayerState.flags & ~0x20) | 0x80; sub_0805EC60(this); - UnfreezeTime(); + ResetPlayerEventPriority(); } void PlayerTalkEzlo(Entity* this) { @@ -744,13 +744,13 @@ void sub_080718A0(Entity* this) { ResetPlayer(); gUnk_03000B80.filler[0x63] = 0; this->iframes = 0; - gUnk_03003DC0.unk0 = 6; - this->updateConditions = 6; + gPriorityHandler.sys_priority = 6; + this->updatePriority = 6; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { this->subAction = 2; this->spritePriority.b1 = 0; - sub_08052BB8(); + DisplayEzloMessage(); return; } @@ -783,7 +783,7 @@ void sub_0807193C(Entity* this) { gPlayerState.field_0x8 = 0x3cc; else gPlayerState.field_0x8 = 0x3c7; - sub_08052BB8(); + DisplayEzloMessage(); } } } @@ -794,7 +794,7 @@ void sub_08071990(Entity* this) { if ((gMessage.doTextBox & 0x7f) == 0) { this->subAction++; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { if (this->animationState == 2) gPlayerState.field_0x8 = 0x3cd; else @@ -806,7 +806,7 @@ void sub_08071990(Entity* this) { return; } - if (gPlayerState.flags & PL_IS_MINISH) + if (gPlayerState.flags & PL_MINISH) return; if (this->animationState == 2) @@ -837,8 +837,8 @@ void sub_08071A4C(Entity* this) { } void sub_08071A6C(void) { - gUnk_03003DC0.unk0 = 0; - gPlayerEntity.updateConditions = gPlayerEntity.updateConditions2; + gPriorityHandler.sys_priority = 0; + gPlayerEntity.updatePriority = gPlayerEntity.updatePriorityPrev; } void PlayerPush(Entity* this) { @@ -856,7 +856,7 @@ void sub_08071AB0(Entity* this) { this->actionDelay = 0; this->field_0xf = 1; } else { - this->speed = (gPlayerState.flags & PL_IS_MINISH) ? 64 : 128; + this->speed = (gPlayerState.flags & PL_MINISH) ? 64 : 128; } sub_08071AF0(this); } @@ -891,7 +891,7 @@ void sub_08071B60(Entity* this) { this->knockbackDuration = 0; sub_080728AC(this); this->field_0xf = 6; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((gPlayerState.flags & PL_MINISH) == 0) { gPlayerState.field_0x8 = 0x104; this->spriteIndex = 3; InitAnimationForceUpdate(this, (this->animationState >> 1) + 0x3c); @@ -921,7 +921,7 @@ void sub_08071BDC(Entity* this) { } gPlayerState.playerAction = 0; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { if ((u8)(gPlayerState.field_0x10[2] - 8) < 3) { sub_0807A298(this); RespawnPlayer(); @@ -949,7 +949,7 @@ void sub_08071CAC(Entity* this) { UpdateAnimationSingleFrame(this); if (this->frame & 0x80) { u32 temp; - if ((gPlayerState.flags & PL_IS_MINISH) == 0) + if ((gPlayerState.flags & PL_MINISH) == 0) temp = (gPlayerState.flags & 8) ? 0x45a : 0x2bd; else temp = 0xc1b; @@ -999,7 +999,7 @@ void sub_08071D80(Entity* this) { if ((gPlayerState.jumpStatus & 7) == 3) { gPlayerState.jumpStatus = 0; this->iframes = 226; - UnfreezeTime(); + ResetPlayerEventPriority(); sub_080791D0(); } } @@ -1273,7 +1273,7 @@ void sub_080722DC(Entity* this) { Entity* ent; COLLISION_OFF(this); - if (!(gPlayerState.flags & PL_IS_MINISH)) { + if (!(gPlayerState.flags & PL_MINISH)) { this->subAction = 1; this->zVelocity = 0x28000; ent = CreateObject(OBJECT_42, 0x80, 0); @@ -1368,7 +1368,7 @@ void sub_080724DC(Entity* this) { sub_0807AE20(this); } if (gRoomControls.unk2 == 0) { - this->updateConditions = this->updateConditions2; + this->updatePriority = this->updatePriorityPrev; sub_080728AC(this); } else if (gPlayerState.field_0x1c == 0) { UpdateAnimationSingleFrame(this); @@ -1377,7 +1377,7 @@ void sub_080724DC(Entity* this) { this->spriteSettings.draw = 3; this->subAction = 1; if (gRoomVars.field_0x0 == 0) { - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { gPlayerState.field_0x8 = 0xc18; } else { gPlayerState.field_0x8 = 0x104; @@ -1394,7 +1394,7 @@ void sub_0807258C(Entity* this) { if (sub_080797C4() != 0) { gPlayerState.startPosX = gPlayerEntity.x.HALF.HI; gPlayerState.startPosY = gPlayerEntity.y.HALF.HI; - this->updateConditions = this->updateConditions2; + this->updatePriority = this->updatePriorityPrev; sub_080728AC(this); } else { UpdateAnimationSingleFrame(this); @@ -1402,7 +1402,7 @@ void sub_0807258C(Entity* this) { } else { gPlayerState.startPosX = gPlayerEntity.x.HALF.HI; gPlayerState.startPosY = gPlayerEntity.y.HALF.HI; - this->updateConditions = this->updateConditions2; + this->updatePriority = this->updatePriorityPrev; sub_080728AC(this); } } @@ -1423,17 +1423,17 @@ void sub_08072650(Entity* this) { if ((gPlayerState.flags & 0x200000) == 0) { sub_0806F948(&gPlayerEntity); - this->direction = this->animationState << 2; + this->direction = Direction8FromAnimationState(this->animationState); } this->subAction = 1; this->actionDelay = 0; ResetPlayer(); temp = gPlayerState.flags; - if (gPlayerState.flags & PL_IS_MINISH) { + if (gPlayerState.flags & PL_MINISH) { this->spritePriority.b1 = 0; gPlayerState.field_0x8 = 0xc08; } else { - *(u8*)&this->hurtType = 0x1e; + this->hurtType = 0x1e; if (temp & 8) { gPlayerState.field_0x8 = 0x438; } else { @@ -1459,7 +1459,7 @@ void sub_080726F4(Entity* this) { } this->direction = (this->animationState & 6) << 2; - if (((gPlayerState.flags & PL_IS_MINISH) == 0) && (--this->actionDelay == 0xff)) { + if (((gPlayerState.flags & PL_MINISH) == 0) && (--this->actionDelay == 0xff)) { CreateFx(&gPlayerEntity, FX_DASH, 0x40); this->actionDelay = 4; } @@ -1508,7 +1508,7 @@ void sub_080726F4(Entity* this) { sub_08078F24(); sub_08079E08(); } - if (((this->frame & 0x10) == 0) && ((gPlayerState.flags & PL_IS_MINISH) == 0)) { + if (((this->frame & 0x10) == 0) && ((gPlayerState.flags & PL_MINISH) == 0)) { *(u8*)&this->hurtType = 0; } if ((this->frame & 0x40) != 0) { @@ -1525,7 +1525,7 @@ void sub_080726F4(Entity* this) { void sub_080728AC(Entity* this) { sub_08079938(); - if (gPlayerState.flags & PL_IS_MINISH) + if (gPlayerState.flags & PL_MINISH) sub_0807B068(this); else sub_08078F60(); @@ -1534,7 +1534,7 @@ void sub_080728AC(Entity* this) { this->speed = 0; if (!(gPlayerState.flags & 0x40)) gPlayerEntity.spriteSettings.draw = 3; - if (!(gPlayerState.flags & PL_IS_MINISH)) + if (!(gPlayerState.flags & PL_MINISH)) gPlayerEntity.spritePriority.b1 = 1; if (!(gRoomControls.unk6 & 4)) { @@ -1644,7 +1644,7 @@ void sub_08072B5C(Entity* this) { return; } - if (!sub_08052620()) { + if (!CheckIsOverworld()) { sub_08004542(this); } this->subAction++; @@ -1667,7 +1667,7 @@ void sub_08072C48(Entity* this) { if (gPlayerState.field_0x14) { if (sub_08008B22()) { gPlayerState.field_0x10[1] = 7; - if (!(gPlayerState.flags & PL_IS_MINISH)) { + if (!(gPlayerState.flags & PL_MINISH)) { sub_080791BC(); } } @@ -1783,7 +1783,7 @@ NONMATCH("asm/non_matching/player/sub_08072D54.inc", void sub_08072D54(Entity* t if (gPlayerState.field_0x14 != 0) { if (sub_08008B22() == 0) { gPlayerState.field_0x10[1] = 7; - if (!(gPlayerState.flags & PL_IS_MINISH)) { + if (!(gPlayerState.flags & PL_MINISH)) { sub_080791BC(); } } @@ -1815,7 +1815,7 @@ extern void (*const gUnk_0811BBE4[])(Entity*); void sub_08072F34(Entity* this) { if (!sub_08078EFC()) { gPlayerState.field_0xa8 = 0x18; - gPlayerState.field_0x10[2] = sub_0807A1E8(this, 0, 0); + gPlayerState.field_0x10[2] = GetSurfaceCalcType(this, 0, 0); gUnk_0811BBE4[this->subAction](this); if (this->knockbackDuration != 0) { sub_080792D8(); @@ -1934,7 +1934,7 @@ extern void (*const gUnk_0811BBF8[])(Entity*); void PlayerUseEntrance(Entity* this) { gPlayerState.field_0xa8 = 0x1c; - sub_0805E4E0(NULL, 8); + RequestPriorityDuration(NULL, 8); gUnk_0811BBF8[this->subAction](this); } diff --git a/src/playerItem/playerItemLantern.c b/src/playerItem/playerItemLantern.c index 1adf8859..9bfdc127 100644 --- a/src/playerItem/playerItemLantern.c +++ b/src/playerItem/playerItemLantern.c @@ -18,7 +18,7 @@ NONMATCH("asm/non_matching/playerItemLantern/sub_08054A60.inc", void sub_08054A6 this->actionDelay = 0x04; this->frameIndex = -1; // TODO regalloc and mov 6 too early - this->updateConditions = (this->updateConditions & 0xf0) | 6; + this->updatePriority = (this->updatePriority & 0xf0) | 6; this->field_0x3c = 7; this->flags2 = -0x80; this->animationState = gPlayerEntity.animationState & 0xe; diff --git a/src/room.c b/src/room.c index e23f8de4..aad169d9 100644 --- a/src/room.c +++ b/src/room.c @@ -239,7 +239,7 @@ extern EntityData Entities_HouseInteriors1_Mayor_080D6210; void sub_StateChange_HouseInteriors1_Mayor(void) { - if ((u16)gScreenTransition.playerStartPos.HALF.y > 0x40) + if ((u16)gScreenTransition.player_status.start_pos.HALF.y > 0x40) LoadRoomEntityList(&Entities_HouseInteriors1_Mayor_080D6210); } @@ -351,7 +351,7 @@ extern EntityData gUnk_additional_9_HouseInteriors1_Library1F; extern EntityData gUnk_additional_8_HouseInteriors1_Library1F; void sub_StateChange_HouseInteriors1_Library1F(void) { - if (gSave.unk8 > 4) { + if (gSave.global_progress > 4) { LoadRoomEntityList(&gUnk_080D6714); } // flippers @@ -369,7 +369,7 @@ u32 sub_unk3_HouseInteriors1_Inn1F() { extern EntityData gUnk_080D6924; void sub_StateChange_HouseInteriors1_Inn1F(void) { - if (gSave.unk8 > 7) { + if (gSave.global_progress > 7) { LoadRoomEntityList(&gUnk_080D6924); } } @@ -469,7 +469,7 @@ extern EntityData UpperInn_Din; void sub_StateChange_HouseInteriors1_InnWest2F(void) { int iVar1; - if (gSave.unk8 < 4) + if (gSave.global_progress < 4) return; if (CheckGlobalFlag(RENTED_HOUSE_DIN)) { @@ -519,7 +519,7 @@ u32 sub_unk3_HouseInteriors1_SchoolWest() { extern EntityData gUnk_080D7038; void sub_StateChange_HouseInteriors1_SchoolWest(void) { - if (gSave.unk8 < 8) { + if (gSave.global_progress < 8) { LoadRoomEntityList(&gUnk_080D7038); } if (gRoomVars.field_0x0 == 0) { @@ -539,13 +539,13 @@ extern EntityData gUnk_080D71F0; void sub_StateChange_HouseInteriors1_SchoolEast(void) { - if (gSave.unk8 == 6) + if (gSave.global_progress == 6) LoadRoomEntityList(&gUnk_080D7140); - if (gSave.unk8 == 7) + if (gSave.global_progress == 7) LoadRoomEntityList(&gUnk_080D7170); - if ((gSave.unk8 < 8) || (LoadRoomEntityList(&gUnk_080D71A0), gSave.unk8 < 8)) + if ((gSave.global_progress < 8) || (LoadRoomEntityList(&gUnk_080D71A0), gSave.global_progress < 8)) LoadRoomEntityList(&gUnk_080D71D0); else LoadRoomEntityList(&gUnk_080D71F0); @@ -676,7 +676,7 @@ u32 sub_unk3_HyruleCastle_4(void) { #else if (!CheckLocalFlag(0x9f)) { #endif - gScreenTransition.field_0xf = 5; + gScreenTransition.player_status.spawn_type = 5; ClearGlobalFlag(ZELDA_CHASE); } return 1; @@ -1077,7 +1077,7 @@ void sub_StateChange_RoyalValley_Main(void) { SetTile(0x4072, 0xc47, 1); if (CheckGlobalFlag(MAZE_CLEAR)) - if (gScreenTransition.playerStartPos.WORD == 0x2780078) // todo: wtf + if (gScreenTransition.player_status.start_pos.WORD == 0x2780078) // todo: wtf SoundReq(SFX_SECRET); ClearGlobalFlag(MAZE_CLEAR); @@ -1494,7 +1494,7 @@ extern EntityData gUnk_080DB238; void sub_StateChange_MinishHouseInteriors_Librari(void) { - if (gSave.unk8 > 8) + if (gSave.global_progress > 8) LoadRoomEntityList(&gUnk_080DB238); sub_0801AFE4(); @@ -1748,7 +1748,7 @@ void sub_StateChange_MinishVillage_Main(void) { // jabber nut if (!GetInventoryValue(0x5b)) { LoadRoomEntityList(&gUnk_080DC390); - if (!CheckLocalFlagByOffset(0x200, 0x80)) { + if (!CheckLocalFlagByBank(0x200, 0x80)) { LoadRoomEntityList(&gUnk_080DC3F0); } } else { @@ -1758,7 +1758,7 @@ void sub_StateChange_MinishVillage_Main(void) { LoadRoomEntityList(&gUnk_080DC530); } } - if ((!CheckLocalFlagByOffset(0x200, 0x83)) && GetInventoryValue(0x11)) { + if ((!CheckLocalFlagByBank(0x200, 0x83)) && GetInventoryValue(0x11)) { LoadRoomEntityList(&gUnk_080DC470); } if (!CheckLocalFlag(0x8d)) { @@ -2061,9 +2061,9 @@ void sub_StateChange_Ruins_TripleTektites(void) { void sub_unk1_Ruins_TripleTektites(void) { #if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlagByOffset(0x100, 0x28)) { + if (CheckLocalFlagByBank(0x100, 0x28)) { #else - if (CheckLocalFlagByOffset(0x100, 0x27)) { + if (CheckLocalFlagByBank(0x100, 0x27)) { #endif SetDirtTile(0x85); } @@ -2351,7 +2351,7 @@ u32 sub_unk3_DeepwoodShrineEntry_Main() { extern EntityData gUnk_080DFB78; void sub_StateChange_DeepwoodShrineEntry_Main(void) { - if (CheckGlobalFlag(LV1_CLEAR) && !CheckLocalFlagByOffset(0x100, 1)) { + if (CheckGlobalFlag(LV1_CLEAR) && !CheckLocalFlagByBank(0x100, 1)) { LoadRoomEntityList(&gUnk_080DFB78); } } @@ -2618,7 +2618,7 @@ void sub_StateChange_FortressOfWinds_Mazaal(void) { } else { if (gScreenTransition.field_0x39 == 0) { SoundReq(SONG_STOP); - sub_08078A90(3); + SetPlayerControl(3); } } gArea.musicIndex = gArea.pMusicIndex; @@ -2725,7 +2725,7 @@ extern EntityData gUnk_080E3850; void sub_StateChange_FortressOfWindsTop_Main(void) { SetGlobalFlag(LV3_CLEAR); - sub_080530C8(); + UpdateGlobalProgress(); sub_0805B4D0(3); // wind ocarina if (!GetInventoryValue(0x17) && CheckLocalFlag(0x45)) { @@ -3178,7 +3178,7 @@ void sub_StateChange_PalaceOfWinds_0(void) { SetGlobalFlag(LV5_CLEAR); // wind element if (!GetInventoryValue(0x43)) { - sub_08078A90(3); + SetPlayerControl(3); LoadRoomEntityList(&gUnk_additional_8_PalaceOfWinds_0); gArea.musicIndex = gArea.pMusicIndex; SoundReq(SONG_STOP_BGM); @@ -4324,14 +4324,14 @@ void sub_StateChange_HyruleTown_0(void) { #if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP) SetTileType(0x176, 0x66b, 1); #endif - if (gSave.unk8 == 1) { + if (gSave.global_progress == 1) { sub_0801D000(0); } else { sub_08018C58(0xdb4); - if (!CheckLocalFlagByOffset(0x200, 0x84)) { + if (!CheckLocalFlagByBank(0x200, 0x84)) { LoadRoomEntityList(&gUnk_080EEB6C); } - if (!CheckLocalFlagByOffset(0x200, 0x85)) { + if (!CheckLocalFlagByBank(0x200, 0x85)) { LoadRoomEntityList(&gUnk_080EEB8C); } // kinstone bag @@ -4349,7 +4349,7 @@ void sub_StateChange_HyruleTown_0(void) { } else { LoadRoomEntityList(&gUnk_080EECBC); } - if (CheckKinstoneFused(0x1b) && (gSave.unk8 > 3)) { + if (CheckKinstoneFused(0x1b) && (gSave.global_progress > 3)) { if (!CheckGlobalFlag(NEW_HOUSE_DIN) && !CheckGlobalFlag(NEW_HOUSE_NAYRU) && !CheckGlobalFlag(NEW_HOUSE_FARORE)) { if (!CheckGlobalFlag(RENTED_HOUSE_DIN) && !CheckGlobalFlag(RENTED_HOUSE_NAYRU) && @@ -4375,7 +4375,7 @@ void sub_StateChange_HyruleTown_0(void) { } else { LoadRoomEntityList(&gUnk_080EE9DC); } - if ((gSave.unk8 > 4) && !CheckKinstoneFused(0xb) && + if ((gSave.global_progress > 4) && !CheckKinstoneFused(0xb) && (CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) || CheckGlobalFlag(RENTED_HOUSE_FARORE))) { LoadRoomEntityList(&gUnk_080EEA5C); @@ -4388,10 +4388,10 @@ void sub_StateChange_HyruleTown_0(void) { #endif LoadRoomEntityList(&gUnk_080EEABC); } - if ((gSave.unk8 > 3) && CheckGlobalFlag(INLOCK)) { + if ((gSave.global_progress > 3) && CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080EEA7C); } - if ((gSave.unk8 < 6) && !CheckGlobalFlag(MIZUKAKI_START)) { + if ((gSave.global_progress < 6) && !CheckGlobalFlag(MIZUKAKI_START)) { LoadRoomEntityList(&gUnk_080EEA9C); } if ((gSave.windcrests & 0x8000000) == 0) { @@ -4682,7 +4682,7 @@ void sub_StateChange_HouseInteriors2_DrLeft(void) { if (!GetInventoryValue(0x3a) && CheckGlobalFlag(MIZUKAKI_HARIFALL)) { LoadRoomEntityList(&gUnk_080F2194); } - if (gScreenTransition.field_0xf == 1) { + if (gScreenTransition.player_status.spawn_type == 1) { LoadRoomEntityList(&gUnk_080F21B4); } } @@ -4697,7 +4697,7 @@ extern EntityData gUnk_additional_c_HouseInteriors2_Romio; void sub_StateChange_HouseInteriors2_Romio(void) { - if (gSave.unk8 > 7) { + if (gSave.global_progress > 7) { LoadRoomEntityList(&gUnk_080F23BC); } // flippers @@ -4718,7 +4718,7 @@ extern EntityData gUnk_080F25C0; extern EntityData gUnk_080F2600; void sub_StateChange_HouseInteriors2_Julietta(void) { - switch (gSave.unk8) { + switch (gSave.global_progress) { case 0: case 2: case 4: @@ -4872,7 +4872,7 @@ extern EntityData gUnk_080F30CC; void sub_StateChange_HouseInteriors2_Stockwell(void) { // dog food - if ((GetInventoryValue(0x36) == 1) && !CheckGlobalFlag(BIN_DOGFOOD) && (gPlayerState.flags & PL_IS_MINISH) == 0) { + if ((GetInventoryValue(0x36) == 1) && !CheckGlobalFlag(BIN_DOGFOOD) && (gPlayerState.flags & PL_MINISH) == 0) { LoadRoomEntityList(&gUnk_080F30CC); } } @@ -4945,7 +4945,7 @@ extern EntityData gUnk_080F3604; void sub_StateChange_HouseInteriors4_RanchHouseWest(void) { if (!CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080F36FC); - } else if (gSave.unk8 < 4) { + } else if (gSave.global_progress < 4) { LoadRoomEntityList(&gUnk_080F3604); } } @@ -4980,8 +4980,8 @@ void sub_StateChange_HouseInteriors4_Mayor(void) { if (!GetInventoryValue(0x46) && CheckGlobalFlag(MIZUKAKI_START) && !GetInventoryValue(0x3b)) { LoadRoomEntityList(&gUnk_080F3A48); } - gScreenTransition.field_0x20 = 0xf28; - gScreenTransition.field_0x22 = 0x82d; + gScreenTransition.player_status.field_0x20 = 0xf28; + gScreenTransition.player_status.field_0x22 = 0x82d; } extern u32 Enemies_LakeHylia_Main; @@ -5007,7 +5007,7 @@ void sub_StateChange_LakeHylia_Main(void) { if (CheckKinstoneFused(0x12)) { LoadRoomEntityList(&gUnk_080F3C94); } - if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F3C44); } SetTile(0x4091, 0x590, 1); @@ -5328,7 +5328,7 @@ extern EntityData gUnk_080F5788; void sub_StateChange_HouseInteriors3_StockwellShop(void) { LoadRoomEntityList(&gUnk_080F5758); - if (!GetInventoryValue(0x36) && CheckLocalFlagByOffset(0x200, 0x8f)) { + if (!GetInventoryValue(0x36) && CheckLocalFlagByBank(0x200, 0x8f)) { LoadRoomEntityList(&gUnk_080F57E8); } if (!CheckLocalFlag(0x55)) { @@ -5389,7 +5389,7 @@ void sub_StateChange_HouseInteriors3_Bakery() { u32 sub_unk3_HouseInteriors3_Simon(void) { if (CheckGlobalFlag(MAROYA_WAKEUP)) { - gScreenTransition.field_0xf = 5; + gScreenTransition.player_status.spawn_type = 5; } return 1; } @@ -5398,7 +5398,7 @@ extern EntityData gUnk_080F5DD0; extern u32 script_08011C50; void sub_StateChange_HouseInteriors3_Simon(void) { - if (gSave.unk8 > 7) { + if (gSave.global_progress > 7) { LoadRoomEntityList(&gUnk_080F5DD0); } if (CheckGlobalFlag(MAROYA_WAKEUP)) { @@ -5414,9 +5414,9 @@ extern EntityData gUnk_080F5E68; void sub_StateChange_HouseInteriors3_FigurineHouse(void) { #if defined(JP) || defined(EU) || defined(DEMO_JP) - if (!CheckLocalFlagByOffset(0x100, 0xce)) { + if (!CheckLocalFlagByBank(0x100, 0xce)) { #else - if (!CheckLocalFlagByOffset(0x100, 0xd1)) { + if (!CheckLocalFlagByBank(0x100, 0xd1)) { #endif LoadRoomEntityList(&gUnk_080F5E68); } @@ -5432,7 +5432,7 @@ extern EntityData gUnk_additional_a_HouseInteriors3_BorlovEntrance; void sub_StateChange_HouseInteriors3_BorlovEntrance(void) { - if (gSave.unk8 > 4) { + if (gSave.global_progress > 4) { LoadRoomEntityList(&gUnk_additional_8_HouseInteriors3_BorlovEntrance); } if (!CheckLocalFlag(0x92)) { @@ -5458,9 +5458,9 @@ void sub_StateChange_HouseInteriors3_Borlov() { u32 sub_unk3_WindTribeTower_Entrance(void) { #if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByOffset(0x100, 0xd9)) { + if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xd9)) { #else - if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByOffset(0x100, 0xdc)) { + if (CheckGlobalFlag(KUMOTATSUMAKI) && CheckLocalFlagByBank(0x100, 0xdc)) { #endif SetGlobalFlag(WARP_EVENT_END); } @@ -5471,9 +5471,9 @@ extern EntityData gUnk_080F61BC; void sub_StateChange_WindTribeTower_Entrance(void) { #if defined(JP) || defined(EU) || defined(DEMO_JP) - if (CheckLocalFlagByOffset(0x100, 0xd9)) { + if (CheckLocalFlagByBank(0x100, 0xd9)) { #else - if (CheckLocalFlagByOffset(0x100, 0xdc)) { + if (CheckLocalFlagByBank(0x100, 0xdc)) { #endif SetLocalFlag(0x90); } @@ -5535,7 +5535,7 @@ extern EntityData gUnk_080F66AC; void sub_StateChange_WindTribeTowerRoof_Main(void) { sub_0805B4D0(5); - if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByOffset(0x100, 5)) { + if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(0x100, 5)) { LoadRoomEntityList(&gUnk_080F66AC); } sub_08052CA4(8, 0, 0x1e8, 0x158); @@ -5654,7 +5654,7 @@ void sub_StateChange_HyruleField_LinksHouseExterior(void) { if ((gSave.windcrests & 0x40000000) == 0) { LoadRoomEntityList(&gUnk_080F70D8); } - if (gSave.unk8 > 3) { + if (gSave.global_progress > 3) { LoadRoomEntityList(&gUnk_080F7088); } } @@ -5695,7 +5695,7 @@ extern EntityData gUnk_080F7550; void sub_StateChange_HyruleField_Farmers(void) { Manager18_Main(0); - if (gSave.unk8 > 3) { + if (gSave.global_progress > 3) { LoadRoomEntityList(&gUnk_080F7500); } if (GetInventoryValue(0x11) && !GetInventoryValue(0x12)) { @@ -5720,7 +5720,7 @@ extern EntityData gUnk_080F78A0; void sub_StateChange_HyruleField_LonLonRanch(void) { Manager18_Main(0); - if (CheckLocalFlagByOffset(0x200, 0x8f)) { + if (CheckLocalFlagByBank(0x200, 0x8f)) { if (!CheckGlobalFlag(INLOCK)) { LoadRoomEntityList(&gUnk_080F77C0); } @@ -5735,7 +5735,7 @@ void sub_StateChange_HyruleField_LonLonRanch(void) { SetTile(0x4072, 0xd88, 1); SetTile(0x4096, 0xdc8, 1); } - if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F78A0); } } @@ -5958,7 +5958,7 @@ extern EntityData gUnk_080F806C; void sub_StateChange_HyruleField_OutsideCastleWest(void) { Manager18_Main(0); - if ((gSave.unk8 > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { + if ((gSave.global_progress > 3) && CheckGlobalFlag(TINGLE_TALK1ST)) { LoadRoomEntityList(&gUnk_080F806C); } } @@ -5989,7 +5989,7 @@ extern EntityData gUnk_080F8430; void sub_StateChange_HyruleField_PercysHouse(void) { Manager18_Main(0); - if (CheckKinstoneFused(0x21) && !CheckLocalFlagByOffset(0x200, 0x42)) { + if (CheckKinstoneFused(0x21) && !CheckLocalFlagByBank(0x200, 0x42)) { LoadRoomEntityList(&gUnk_080F8430); } } diff --git a/src/save.c b/src/save.c index 71657e58..36727c41 100644 --- a/src/save.c +++ b/src/save.c @@ -38,9 +38,6 @@ u32 DataRead(u32 address, void* data, u32 size); u32 DataWrite(u32 address, const void* data, u32 size); u32 DataCompare(u32 address, const void* data, u32 size); -const u16 gUnk_0811E454[] = { 0x0, 0x0, 0x100, 0x200, 0x300, 0x400, 0x500, - 0x5C0, 0x680, 0x740, 0x800, 0x8C0, 0x9C0, 0xA80 }; - const char gUnk_0811E470[4] = "LINK"; #if defined(DEMO_USA) || defined(DEMO_JP) @@ -92,7 +89,7 @@ const SaveFileEEPROMAddresses gSaveFileEEPROMAddresses[] = { { 0x500, 0x30, 0x10 { 0x8, 0xfa0, 0x1fa0, 0xfa0, 0x1fa0 } }; #endif void sub_0807CD9C() { - sub_080530C8(); + UpdateGlobalProgress(); } SaveResult HandleSave(u32 arg0) { diff --git a/src/script.c b/src/script.c index 3cb3aac1..34da5deb 100644 --- a/src/script.c +++ b/src/script.c @@ -36,7 +36,7 @@ void ScriptCommand_TestBit(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckInventory1(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckInventory2(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckLocalFlag(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_CheckLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_CheckLocalFlagByBank(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckGlobalFlag(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckRoomFlag(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_CheckPlayerInRegion(Entity* entity, ScriptExecutionContext* context); @@ -61,7 +61,7 @@ void ScriptCommand_ComparePlayerAnimationState(Entity* entity, ScriptExecutionCo void ScriptCommand_0807E5F8(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_0807E610(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_SetLocalFlag(Entity* entity, ScriptExecutionContext* context); -void ScriptCommand_SetLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context); +void ScriptCommand_SetLocalFlagByBank(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_ClearLocalFlag(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_SetGlobalFlag(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_ClearGlobalFlag(Entity* entity, ScriptExecutionContext* context); @@ -182,7 +182,7 @@ const ScriptCommand gScriptCommands[] = { ScriptCommandNop, ScriptCommand_CheckInventory2, ScriptCommand_HasRoomItemForSale, ScriptCommand_CheckLocalFlag, - ScriptCommand_CheckLocalFlagByOffset, + ScriptCommand_CheckLocalFlagByBank, ScriptCommand_CheckGlobalFlag, ScriptCommand_CheckRoomFlag, ScriptCommand_CheckPlayerInRegion, @@ -206,7 +206,7 @@ const ScriptCommand gScriptCommands[] = { ScriptCommandNop, ScriptCommand_0807E5F8, ScriptCommand_0807E610, ScriptCommand_SetLocalFlag, - ScriptCommand_SetLocalFlagByOffset, + ScriptCommand_SetLocalFlagByBank, ScriptCommand_ClearLocalFlag, ScriptCommand_SetGlobalFlag, ScriptCommand_ClearGlobalFlag, @@ -757,9 +757,9 @@ void ScriptCommand_CheckLocalFlag(Entity* entity, ScriptExecutionContext* contex gActiveScriptInfo.flags |= 1; } -void ScriptCommand_CheckLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context) { +void ScriptCommand_CheckLocalFlagByBank(Entity* entity, ScriptExecutionContext* context) { context->condition = - CheckLocalFlagByOffset(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]); + CheckLocalFlagByBank(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]); gActiveScriptInfo.flags |= 1; } @@ -806,7 +806,7 @@ void ScriptCommand_CheckEntityInteractType(Entity* entity, ScriptExecutionContex } void ScriptCommand_0807E30C(Entity* entity, ScriptExecutionContext* context) { - if ((context->unk_1A & 0xF) == 0 && (gPlayerState.flags & PL_IS_MINISH) == 0 && + if ((context->unk_1A & 0xF) == 0 && (gPlayerState.flags & PL_MINISH) == 0 && sub_080041A0(entity, &gPlayerEntity, 0x28, 0x28)) { entity->animationState = sub_0806F5B0(GetFacingDirection(entity, &gPlayerEntity)); } @@ -926,8 +926,8 @@ void ScriptCommand_SetLocalFlag(Entity* entity, ScriptExecutionContext* context) SetLocalFlag(context->scriptInstructionPointer[1]); } -void ScriptCommand_SetLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context) { - SetLocalFlagByOffset(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]); +void ScriptCommand_SetLocalFlagByBank(Entity* entity, ScriptExecutionContext* context) { + SetLocalFlagByBank(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]); } void ScriptCommand_ClearLocalFlag(Entity* entity, ScriptExecutionContext* context) { @@ -1535,7 +1535,7 @@ extern u8 gUnk_0811E758[]; extern u8 gUnk_0811E760[]; void sub_0807F0D8(Entity* entity, ScriptExecutionContext* context) { - context->condition = (-(u32)gInput.newKeys | ((u32)gInput.newKeys)) >> 0x1f; + context->condition = !!gInput.newKeys; } void sub_0807F0EC(Entity* entity, ScriptExecutionContext* context) { @@ -1672,15 +1672,15 @@ void sub_0807F338(Entity* entity, ScriptExecutionContext* context) { } void sub_0807F348(Entity* entity, ScriptExecutionContext* context) { - sub_0805E3A0(entity, 2); + SetDefaultPriority(entity, 2); } void sub_0807F354(Entity* entity, ScriptExecutionContext* context) { - sub_0805E3A0(entity, 6); + SetDefaultPriority(entity, 6); } void sub_0807F360(Entity* entity, ScriptExecutionContext* context) { - sub_0805E3A0(entity, 3); + SetDefaultPriority(entity, 3); } void sub_0807F36C(Entity* entity, ScriptExecutionContext* context) { @@ -2087,11 +2087,11 @@ void sub_0807FADC(Entity* entity, ScriptExecutionContext* context) { void sub_0807FB28(Entity* entity, ScriptExecutionContext* context) { if (!context->unk_18) - sub_0801D7BC(0x7fff, 1); + SetFillColor(0x7fff, 1); context->unk_18++; if (context->unk_18 >= context->intVariable) - sub_0801D7BC(0, 0); + SetFillColor(0, 0); else gActiveScriptInfo.commandSize = 0; } @@ -2119,11 +2119,11 @@ void sub_0807FBB4(Entity* entity, ScriptExecutionContext* context) { } void sub_0807FBC4(Entity* entity, ScriptExecutionContext* context) { - sub_0805E4A0(entity); + RequestPriorityOverPlayer(entity); } void sub_0807FBCC(Entity* entity, ScriptExecutionContext* context) { - sub_0805E4CC(entity); + RevokePriorityOverPlayer(entity); } void sub_0807FBD4(Entity* entity, ScriptExecutionContext* context) { diff --git a/src/sub_0807CA18.c b/src/sub_0807CA18.c index 7dd5603a..3e99e52b 100644 --- a/src/sub_0807CA18.c +++ b/src/sub_0807CA18.c @@ -7,19 +7,19 @@ u8 sub_0807CA18() { if (gSave.unk_00 != 0x00 || gSave.unk_01 != 1) { gSave.unk_00 = 0; gSave.unk_01 = 1; - gSave.unk8 = 1; - gSave.stats.health = 0x18; - gSave.stats.maxHealth = 0x18; - gSave.unk_88 = 0x22; - gSave.unk_89 = 0x15; - gSave.unk_8A = 0; - gSave.unk_8B = 0; - gSave.unk_8F = 1; - gSave.unk_8C = 0x90; - gSave.unk_8E = 0x38; + gSave.global_progress = 1; + gSave.stats.health = 24; + gSave.stats.maxHealth = 24; + gSave.saved_status.area_next = 0x22; + gSave.saved_status.room_next = 0x15; // links room + gSave.saved_status.start_anim = 0; + gSave.saved_status.spawn_type = 0; + gSave.saved_status.layer = 1; + gSave.saved_status.start_pos.HALF.x = 0x90; + gSave.saved_status.start_pos.HALF.y = 0x38; } - if (gSave.playerName[0] == 0) { - MemCopy(gUnk_0811E470, &gSave.playerName, 5); + if (gSave.playerName[0] == '\0') { + MemCopy(gUnk_0811E470, &gSave.playerName, FILENAME_LENGTH - 1); } #ifdef DEMO_USA { @@ -34,7 +34,7 @@ u8 sub_0807CA18() { ModHealth(0xA0); ModRupees(-9999); tmp = demoUnknown1 + gUnk_02000010.field_0x7 * 3; - gSave.unk_4a8 = tmp[gSaveHeader->saveFileId] * 3600; + gSave.unk48C[7] = tmp[gSaveHeader->saveFileId] * 3600; } #endif return 1; diff --git a/src/sub_080A3B84.c b/src/sub_080A3B84.c index d3bf3363..e796dff0 100644 --- a/src/sub_080A3B84.c +++ b/src/sub_080A3B84.c @@ -8,7 +8,7 @@ extern void (*const gUnk_081280C4[])(); void DrawKinstoneMenu(void) { #if !(defined(DEMO_USA) || defined(DEMO_JP)) - gScreenTransition.field_0x24[8] = 2; + gScreenTransition.player_status.field_0x24[8] = 2; FlushSprites(); gUnk_081280C4[gMenu.menuType](); sub_080A3B74(); @@ -18,7 +18,7 @@ void DrawKinstoneMenu(void) { UpdateEntities(); sub_080AD9B0(); sub_080AD918(); - gScreenTransition.field_0x24[8] = 0; + gScreenTransition.player_status.field_0x24[8] = 0; #endif } diff --git a/src/utils.c b/src/utils.c index 76feb455..feb31265 100644 --- a/src/utils.c +++ b/src/utils.c @@ -40,7 +40,8 @@ void MemFill32(u32 value, void* dest, u32 size) { void MemClear(void* dest, u32 size) { u32 zero = 0; - switch (((u32)dest | size) & 3) { + // alignment check + switch (((intptr_t)dest | size) % 4) { case 0: MemFill32(0, dest, size); break; @@ -57,7 +58,7 @@ void MemClear(void* dest, u32 size) { } void MemCopy(const void* src, void* dest, u32 size) { - switch (((u32)src | (u32)dest | size) & 3) { + switch (((intptr_t)src | (intptr_t)dest | size) % 4) { case 0: DmaCopy32(3, src, dest, size); break; @@ -90,7 +91,7 @@ static void StoreKeyInput(Input* input, u32 keyInput) { input->unk4 = 0; } } else { - input->unk7 = 0x14; + input->unk7 = 20; input->unk4 = difference; } input->heldKeys = keyInput; @@ -124,18 +125,18 @@ void LoadPalettes(const u8* src, int destPaletteNum, int numPalettes) { DmaCopy32(3, src, dest, size); } -void sub_0801D79C(u32 colorIndex, u32 color) { +void SetColor(u32 colorIndex, u32 color) { gPaletteBuffer[colorIndex] = color; gUsedPalettes |= 1 << (colorIndex / 16); } -void sub_0801D7BC(u32 color, u32 arg1) { - if (arg1) { - gScreen.lcd.unk6 = 0xE0FF; +void SetFillColor(u32 color, u32 disable_layers) { + if (disable_layers) { + gScreen.lcd.displayControlMask = ~(DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON); } else { - gScreen.lcd.unk6 = 0xFFFF; + gScreen.lcd.displayControlMask = ~0; } - sub_0801D79C(0, color); + SetColor(0, color); } void LoadGfxGroup(u32 group) {