diff options
86 files changed, 1071 insertions, 1584 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s index 5fe4672d9..44d0b245f 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1358,7 +1358,7 @@ _0800E148: ldrsh r0, [r1, r5] cmp r0, 0 beq _0800E154 - bl sub_800DC24 + bl PrintLinkBattleWinLossTie _0800E154: movs r0, 0x78 bl PlaySE diff --git a/asm/battle_4.s b/asm/battle_4.s index c1a6513be..0581d1e7d 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -15879,7 +15879,7 @@ _08023C3E: subs r2, 0x1 lsls r2, 24 lsrs r2, 24 - ldr r3, _08023C78 @ =sub_807AD58 + ldr r3, _08023C78 @ =ReshowBattleScreenAfterMenu ldr r4, _08023C7C @ =word_2024E82 ldrh r4, [r4] str r4, [sp] @@ -15894,7 +15894,7 @@ _08023C68: .4byte gPaletteFade _08023C6C: .4byte gPlayerParty _08023C70: .4byte 0x00016018 _08023C74: .4byte gPlayerPartyCount -_08023C78: .4byte sub_807AD58 +_08023C78: .4byte ReshowBattleScreenAfterMenu _08023C7C: .4byte word_2024E82 _08023C80: .4byte 0x0001601a _08023C84: diff --git a/asm/battle_5.s b/asm/battle_5.s index ec95d76db..01541c120 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -4487,23 +4487,23 @@ nullsub_8: @ 802E410 thumb_func_start sub_802E414 sub_802E414: @ 802E414 push {lr} - ldr r0, _0802E420 @ =sub_807AD58 + ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_0802E420: .4byte sub_807AD58 +_0802E420: .4byte ReshowBattleScreenAfterMenu thumb_func_end sub_802E414 thumb_func_start sub_802E424 sub_802E424: @ 802E424 push {lr} - ldr r0, _0802E430 @ =sub_807AD58 + ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_0802E430: .4byte sub_807AD58 +_0802E430: .4byte ReshowBattleScreenAfterMenu thumb_func_end sub_802E424 thumb_func_start sub_802E434 diff --git a/asm/cable_club.s b/asm/cable_club.s index 4c9dca6af..bd7a2bd5c 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -464,413 +464,15 @@ _08083034: .4byte gTasks _08083038: .4byte sub_808303C thumb_func_end sub_8082FEC - thumb_func_start sub_808303C -sub_808303C: @ 808303C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - mov r8, r0 - ldr r0, _080830D0 @ =gTasks + 0x8 - mov r9, r0 - mov r7, r8 - add r7, r9 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl sub_8082E28 - cmp r0, 0x1 - beq _080830C2 - adds r0, r4, 0 - bl sub_8082EB8 - cmp r0, 0x1 - beq _080830C2 - adds r0, r4, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _080830C2 - adds r6, r5, 0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8082D60 - ldr r0, _080830D4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080830C2 - movs r1, 0x2 - ldrsh r0, [r7, r1] - cmp r5, r0 - blt _080830C2 - adds r0, r6, 0 - bl sub_80081C8 - bl sub_8082D4C - ldr r0, _080830D8 @ =gStringVar1 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, _080830DC @ =gUnknown_081A4975 - bl ShowFieldAutoScrollMessage - mov r0, r9 - subs r0, 0x8 - add r0, r8 - ldr r1, _080830E0 @ =sub_80830E4 - str r1, [r0] -_080830C2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080830D0: .4byte gTasks + 0x8 -_080830D4: .4byte gMain -_080830D8: .4byte gStringVar1 -_080830DC: .4byte gUnknown_081A4975 -_080830E0: .4byte sub_80830E4 - thumb_func_end sub_808303C +.section .text_80830E4 + + + - thumb_func_start sub_80830E4 -sub_80830E4: @ 80830E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - adds r0, r5, 0 - bl sub_8082E28 - cmp r0, 0x1 - beq _08083178 - adds r0, r5, 0 - bl sub_8082EB8 - cmp r0, 0x1 - beq _08083178 - adds r0, r5, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _08083178 - bl GetFieldMessageBoxMode - lsls r0, 24 - cmp r0, 0 - bne _08083178 - bl sub_800820C - adds r4, r0, 0 - bl GetLinkPlayerCount_2 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _08083132 - ldr r0, _08083148 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08083158 -_08083132: - ldr r0, _0808314C @ =gUnknown_081A4932 - bl ShowFieldAutoScrollMessage - ldr r1, _08083150 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08083154 @ =sub_8082FEC - str r1, [r0] - b _08083178 - .align 2, 0 -_08083148: .4byte gMain -_0808314C: .4byte gUnknown_081A4932 -_08083150: .4byte gTasks -_08083154: .4byte sub_8082FEC -_08083158: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08083178 - movs r0, 0x5 - bl PlaySE - bl sub_8007F4C - ldr r0, _08083180 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08083184 @ =sub_8083188 - str r0, [r1] -_08083178: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08083180: .4byte gTasks -_08083184: .4byte sub_8083188 - thumb_func_end sub_80830E4 - thumb_func_start sub_8083188 -sub_8083188: @ 8083188 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080831CC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrb r7, [r5, 0xA] - ldrb r6, [r5, 0xC] - adds r0, r4, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _080831EA - adds r0, r4, 0 - bl sub_8083444 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080831EA - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl sub_800820C - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080831D4 - ldr r0, _080831D0 @ =sub_8083418 - b _080831E8 - .align 2, 0 -_080831CC: .4byte gTasks -_080831D0: .4byte sub_8083418 -_080831D4: - ldr r4, _080831F0 @ =gScriptResult - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8082D9C - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - beq _080831EA - ldr r0, _080831F4 @ =sub_8083288 -_080831E8: - str r0, [r5] -_080831EA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080831F0: .4byte gScriptResult -_080831F4: .4byte sub_8083288 - thumb_func_end sub_8083188 - thumb_func_start sub_80831F8 -sub_80831F8: @ 80831F8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08083244 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrb r7, [r5, 0xA] - ldrb r6, [r5, 0xC] - adds r0, r4, 0 - bl sub_8082E28 - cmp r0, 0x1 - beq _08083270 - adds r0, r4, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _08083270 - ldr r4, _08083248 @ =gScriptResult - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8082D9C - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08083270 - cmp r0, 0x3 - bne _08083250 - bl sub_800832C - bl HideFieldMessageBox - ldr r0, _0808324C @ =sub_80833C4 - b _0808326E - .align 2, 0 -_08083244: .4byte gTasks -_08083248: .4byte gScriptResult -_0808324C: .4byte sub_80833C4 -_08083250: - bl GetLinkPlayerCount_2 - ldr r4, _08083278 @ =gFieldLinkPlayerCount - strb r0, [r4] - bl GetMultiplayerId - ldr r1, _0808327C @ =gUnknown_03004860 - strb r0, [r1] - ldrb r0, [r4] - bl sub_80081C8 - ldr r0, _08083280 @ =gBlockSendBuffer - bl sub_8093390 - ldr r0, _08083284 @ =sub_8083314 -_0808326E: - str r0, [r5] -_08083270: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08083278: .4byte gFieldLinkPlayerCount -_0808327C: .4byte gUnknown_03004860 -_08083280: .4byte gBlockSendBuffer -_08083284: .4byte sub_8083314 - thumb_func_end sub_80831F8 - thumb_func_start sub_8083288 -sub_8083288: @ 8083288 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - adds r0, r4, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _080832F8 - ldr r0, _080832BC @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0x3 - bne _080832C8 - bl sub_800832C - bl HideFieldMessageBox - ldr r0, _080832C0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080832C4 @ =sub_80833C4 - str r0, [r1] - b _080832F8 - .align 2, 0 -_080832BC: .4byte gScriptResult -_080832C0: .4byte gTasks -_080832C4: .4byte sub_80833C4 -_080832C8: - bl GetLinkPlayerCount_2 - ldr r4, _08083300 @ =gFieldLinkPlayerCount - strb r0, [r4] - bl GetMultiplayerId - ldr r1, _08083304 @ =gUnknown_03004860 - strb r0, [r1] - ldrb r0, [r4] - bl sub_80081C8 - ldr r0, _08083308 @ =gBlockSendBuffer - bl sub_8093390 - ldr r1, _0808330C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08083310 @ =sub_8083314 - str r1, [r0] - movs r0, 0x2 - bl sub_8007E9C -_080832F8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08083300: .4byte gFieldLinkPlayerCount -_08083304: .4byte gUnknown_03004860 -_08083308: .4byte gBlockSendBuffer -_0808330C: .4byte gTasks -_08083310: .4byte sub_8083314 - thumb_func_end sub_8083288 - thumb_func_start sub_8083314 -sub_8083314: @ 8083314 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_8082DF4 - cmp r0, 0x1 - beq _080833B6 - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080833B6 - movs r4, 0 - ldr r6, _0808333C @ =gTrainerCards - b _0808335A - .align 2, 0 -_0808333C: .4byte gTrainerCards -_08083340: - lsls r1, r4, 8 - ldr r0, _08083394 @ =gBlockRecvBuffer - adds r1, r0 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 3 - adds r0, r6 - movs r2, 0x38 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0808335A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08083340 - movs r0, 0 - bl SetSuppressLinkErrorMessage - bl ResetBlockReceivedFlags - bl HideFieldMessageBox - ldr r0, _08083398 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - bne _080833A4 - ldr r0, _0808339C @ =gLinkType - ldrh r1, [r0] - ldr r0, _080833A0 @ =0x00004411 - bl sub_8082D4C - bl EnableBothScriptContexts - adds r0, r5, 0 - bl DestroyTask - b _080833B6 - .align 2, 0 -_08083394: .4byte gBlockRecvBuffer -_08083398: .4byte gScriptResult -_0808339C: .4byte gLinkType -_080833A0: .4byte 0x00004411 -_080833A4: - bl sub_800832C - ldr r0, _080833BC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080833C0 @ =sub_80833C4 - str r0, [r1] -_080833B6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080833BC: .4byte gTasks -_080833C0: .4byte sub_80833C4 - thumb_func_end sub_8083314 thumb_func_start sub_80833C4 sub_80833C4: @ 80833C4 diff --git a/asm/contest.s b/asm/contest.s index 3f53a31e9..214935952 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -11,15 +11,15 @@ nullsub_89: @ 80AB1AC bx lr thumb_func_end nullsub_89 - thumb_func_start sub_80AB1B0 -sub_80AB1B0: @ 80AB1B0 + thumb_func_start ResetLinkContestBoolean +ResetLinkContestBoolean: @ 80AB1B0 ldr r1, _080AB1B8 @ =gIsLinkContest movs r0, 0 strb r0, [r1] bx lr .align 2, 0 _080AB1B8: .4byte gIsLinkContest - thumb_func_end sub_80AB1B0 + thumb_func_end ResetLinkContestBoolean thumb_func_start sub_80AB1BC sub_80AB1BC: @ 80AB1BC diff --git a/asm/daycare.s b/asm/daycare.s index 0e8a796d9..47a84e8e0 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -111,7 +111,7 @@ sub_80413C8: @ 80413C8 lsrs r4, r0, 24 mov r9, r4 adds r0, r7, 0 - bl sub_80A2B94 + bl MonHasMail lsls r0, 24 cmp r0, 0 beq _0804144A @@ -156,7 +156,7 @@ sub_80413C8: @ 80413C8 ldm r1!, {r0,r2,r3} stm r4!, {r0,r2,r3} adds r0, r7, 0 - bl sub_80A2DF8 + bl TakeMailFromMon _0804144A: mov r2, r9 lsls r4, r2, 24 @@ -372,7 +372,7 @@ _080415D8: adds r4, r5, r4 mov r0, r8 adds r1, r4, 0 - bl sub_80A2D88 + bl GiveMailToMon2 adds r0, r4, 0 bl sub_80417F4 _08041610: @@ -644,7 +644,7 @@ _08041812: subs r1, 0x1 cmp r1, r2 bge _08041812 - bl sub_80A2B40 + bl ClearMailStruct pop {r0} bx r0 thumb_func_end sub_80417F4 diff --git a/asm/decoration_inventory.s b/asm/decoration_inventory.s index e44c1abf2..953d770ae 100644 --- a/asm/decoration_inventory.s +++ b/asm/decoration_inventory.s @@ -6,8 +6,8 @@ .text - thumb_func_start sub_8133F4C -sub_8133F4C: @ 8133F4C + thumb_func_start ClearDecorationInventory +ClearDecorationInventory: @ 8133F4C push {r4,r5,lr} lsls r0, 24 movs r3, 0 @@ -36,15 +36,15 @@ _08133F76: bx r0 .align 2, 0 _08133F7C: .4byte gDecorationInventories - thumb_func_end sub_8133F4C + thumb_func_end ClearDecorationInventory - thumb_func_start sub_8133F80 -sub_8133F80: @ 8133F80 + thumb_func_start ClearDecorationInventories +ClearDecorationInventories: @ 8133F80 push {r4,lr} movs r4, 0 _08133F84: adds r0, r4, 0 - bl sub_8133F4C + bl ClearDecorationInventory adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 @@ -53,7 +53,7 @@ _08133F84: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8133F80 + thumb_func_end ClearDecorationInventories thumb_func_start sub_8133F9C sub_8133F9C: @ 8133F9C diff --git a/asm/easy_chat.s b/asm/easy_chat.s index b8bfaac18..b9f27b895 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -825,8 +825,8 @@ _080E675C: .4byte 0x00009da4 _080E6760: .4byte 0x00009f6e thumb_func_end sub_80E6690 - thumb_func_start sub_80E6764 -sub_80E6764: @ 80E6764 + thumb_func_start InitEasyChatPhrases +InitEasyChatPhrases: @ 80E6764 push {r4-r6,lr} movs r3, 0 ldr r4, _080E680C @ =gSaveBlock1 + 0x2B1C @@ -926,7 +926,7 @@ _080E681C: .4byte gSaveBlock1 + 0x2B34 _080E6820: .4byte 0x0000ffff _080E6824: .4byte gSaveBlock1 + 0x2B4C _080E6828: .4byte gSaveBlock1 + 0x2D8C - thumb_func_end sub_80E6764 + thumb_func_end InitEasyChatPhrases thumb_func_start sub_80E682C sub_80E682C: @ 80E682C diff --git a/asm/rom_8080874.s b/asm/field_screen_effect.s index 4fbfae1a2..4fbfae1a2 100644 --- a/asm/rom_8080874.s +++ b/asm/field_screen_effect.s diff --git a/asm/field_specials.s b/asm/field_specials.s index 684ab248b..63677b6a0 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -33,8 +33,8 @@ ResetSSTidalFlag: @ 810D9A0 _0810D9AC: .4byte 0x0000082d thumb_func_end ResetSSTidalFlag - thumb_func_start sub_810D9B0 -sub_810D9B0: @ 810D9B0 + thumb_func_start CountSSTidalStep +CountSSTidalStep: @ 810D9B0 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -64,10 +64,10 @@ _0810D9E6: pop {r4} pop {r1} bx r1 - thumb_func_end sub_810D9B0 + thumb_func_end CountSSTidalStep - thumb_func_start sub_810D9EC -sub_810D9EC: @ 810D9EC + thumb_func_start GetSSTidalLocation +GetSSTidalLocation: @ 810D9EC push {r4-r7,lr} mov r7, r8 push {r7} @@ -179,7 +179,7 @@ _0810DABE: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_810D9EC + thumb_func_end GetSSTidalLocation thumb_func_start GetLinkPartnerNames GetLinkPartnerNames: @ 810DAC8 @@ -231,8 +231,8 @@ _0810DB20: .4byte gUnknown_083D1464 _0810DB24: .4byte gLinkPlayers + 0x8 thumb_func_end GetLinkPartnerNames - thumb_func_start sub_810DB28 -sub_810DB28: @ 810DB28 + thumb_func_start SpawnBerryBlenderLinkPlayerSprites +SpawnBerryBlenderLinkPlayerSprites: @ 810DB28 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -403,10 +403,10 @@ _0810DC5C: .align 2, 0 _0810DC74: .4byte gLinkPlayers _0810DC78: .4byte gSpecialVar_0x8004 - thumb_func_end sub_810DB28 + thumb_func_end SpawnBerryBlenderLinkPlayerSprites - thumb_func_start sub_810DC7C -sub_810DC7C: @ 810DC7C + thumb_func_start MauvilleGymSpecial1 +MauvilleGymSpecial1: @ 810DC7C push {r4,r5,lr} movs r4, 0 ldr r5, _0810DC9C @ =gUnknown_083F8364 @@ -444,10 +444,10 @@ _0810DCB6: bx r0 .align 2, 0 _0810DCC8: .4byte 0x00000205 - thumb_func_end sub_810DC7C + thumb_func_end MauvilleGymSpecial1 - thumb_func_start sub_810DCCC -sub_810DCCC: @ 810DCCC + thumb_func_start MauvilleGymSpecial2 +MauvilleGymSpecial2: @ 810DCCC push {r4-r6,lr} movs r5, 0xC _0810DCD0: @@ -681,10 +681,10 @@ _0810DED0: bx r0 .align 2, 0 _0810DED8: .4byte 0x00000251 - thumb_func_end sub_810DCCC + thumb_func_end MauvilleGymSpecial2 - thumb_func_start sub_810DEDC -sub_810DEDC: @ 810DEDC + thumb_func_start MauvilleGymSpecial3 +MauvilleGymSpecial3: @ 810DEDC push {r4-r6,lr} ldr r4, _0810DF18 @ =gUnknown_083F8364 movs r5, 0x2 @@ -850,10 +850,10 @@ _0810E066: bx r0 .align 2, 0 _0810E06C: .4byte 0x00000251 - thumb_func_end sub_810DEDC + thumb_func_end MauvilleGymSpecial3 - thumb_func_start sub_810E070 -sub_810E070: @ 810E070 + thumb_func_start PetalburgGymSpecial1 +PetalburgGymSpecial1: @ 810E070 push {lr} ldr r0, _0810E090 @ =gUnknown_02039258 movs r1, 0 @@ -862,7 +862,7 @@ sub_810E070: @ 810E070 strb r1, [r0] movs r0, 0x2C bl PlaySE - ldr r0, _0810E098 @ =sub_810E09C + ldr r0, _0810E098 @ =Task_PetalburgGym movs r1, 0x8 bl CreateTask pop {r0} @@ -870,11 +870,11 @@ sub_810E070: @ 810E070 .align 2, 0 _0810E090: .4byte gUnknown_02039258 _0810E094: .4byte gUnknown_02039259 -_0810E098: .4byte sub_810E09C - thumb_func_end sub_810E070 +_0810E098: .4byte Task_PetalburgGym + thumb_func_end PetalburgGymSpecial1 - thumb_func_start sub_810E09C -sub_810E09C: @ 810E09C + thumb_func_start Task_PetalburgGym +Task_PetalburgGym: @ 810E09C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -893,7 +893,7 @@ sub_810E09C: @ 810E09C lsls r1, 1 adds r1, r2 ldrh r1, [r1] - bl sub_810E104 + bl PetalburgGymFunc movs r0, 0 strb r0, [r4] ldrb r0, [r5] @@ -920,10 +920,10 @@ _0810E0FC: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_810E09C + thumb_func_end Task_PetalburgGym - thumb_func_start sub_810E104 -sub_810E104: @ 810E104 + thumb_func_start PetalburgGymFunc +PetalburgGymFunc: @ 810E104 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -1078,22 +1078,22 @@ _0810E21E: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_810E104 + thumb_func_end PetalburgGymFunc - thumb_func_start sub_810E230 -sub_810E230: @ 810E230 + thumb_func_start PetalburgGymSpecial2 +PetalburgGymSpecial2: @ 810E230 push {lr} ldr r0, _0810E244 @ =gSpecialVar_0x8004 ldrb r0, [r0] ldr r1, _0810E248 @ =gUnknown_083F8376 ldrh r1, [r1, 0x8] - bl sub_810E104 + bl PetalburgGymFunc pop {r0} bx r0 .align 2, 0 _0810E244: .4byte gSpecialVar_0x8004 _0810E248: .4byte gUnknown_083F8376 - thumb_func_end sub_810E230 + thumb_func_end PetalburgGymSpecial2 thumb_func_start ShowFieldMessageStringVar4 ShowFieldMessageStringVar4: @ 810E24C @@ -3695,8 +3695,8 @@ _0810F612: bx r1 thumb_func_end sub_810F5BC - thumb_func_start sub_810F618 -sub_810F618: @ 810F618 + thumb_func_start SetShoalItemFlag +SetShoalItemFlag: @ 810F618 push {lr} ldr r0, _0810F624 @ =0x0000085f bl FlagSet @@ -3704,7 +3704,7 @@ sub_810F618: @ 810F618 bx r0 .align 2, 0 _0810F624: .4byte 0x0000085f - thumb_func_end sub_810F618 + thumb_func_end SetShoalItemFlag thumb_func_start PutZigzagoonInPlayerParty PutZigzagoonInPlayerParty: @ 810F628 @@ -4270,8 +4270,8 @@ _0810FA4A: _0810FA50: .4byte gStringVar1 thumb_func_end sub_810F9AC - thumb_func_start sub_810FA54 -sub_810FA54: @ 810FA54 + thumb_func_start ResetFanClub +ResetFanClub: @ 810FA54 ldr r0, _0810FA68 @ =gSaveBlock1 ldr r2, _0810FA6C @ =0x000013c2 adds r1, r0, r2 @@ -4285,7 +4285,7 @@ sub_810FA54: @ 810FA54 _0810FA68: .4byte gSaveBlock1 _0810FA6C: .4byte 0x000013c2 _0810FA70: .4byte 0x000013c4 - thumb_func_end sub_810FA54 + thumb_func_end ResetFanClub thumb_func_start sub_810FA74 sub_810FA74: @ 810FA74 diff --git a/asm/field_screeneffect.s b/asm/field_weather.s index 01190c75e..92d2ffab2 100644 --- a/asm/field_screeneffect.s +++ b/asm/field_weather.s @@ -7537,8 +7537,8 @@ _0808082E: bx r1 thumb_func_end TranslateWeatherNum - thumb_func_start sub_8080834 -sub_8080834: @ 8080834 + thumb_func_start UpdateWeatherPerDay +UpdateWeatherPerDay: @ 8080834 lsls r0, 16 ldr r2, _08080850 @ =gSaveBlock1 adds r2, 0x2F @@ -7554,7 +7554,7 @@ sub_8080834: @ 8080834 bx lr .align 2, 0 _08080850: .4byte gSaveBlock1 - thumb_func_end sub_8080834 + thumb_func_end UpdateWeatherPerDay thumb_func_start UpdateRainCounter UpdateRainCounter: @ 8080854 diff --git a/asm/item_menu.s b/asm/item_menu.s index 29109f3d9..7463663d8 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -709,8 +709,8 @@ _080A370A: bx r0 thumb_func_end sub_80A36B8 - thumb_func_start sub_80A3714 -sub_80A3714: @ 80A3714 + thumb_func_start ClearBag +ClearBag: @ 80A3714 push {r4,r5,lr} movs r4, 0 ldr r5, _080A373C @ =gBagPockets @@ -731,7 +731,7 @@ _080A371A: bx r0 .align 2, 0 _080A373C: .4byte gBagPockets - thumb_func_end sub_80A3714 + thumb_func_end ClearBag thumb_func_start sub_80A3740 sub_80A3740: @ 80A3740 @@ -3413,7 +3413,7 @@ _080A4BB4: .4byte 0x00000103 _080A4BB8: .4byte gOtherText_Walk _080A4BBC: adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/mail_data.s b/asm/mail_data.s deleted file mode 100644 index 23425c0cf..000000000 --- a/asm/mail_data.s +++ /dev/null @@ -1,266 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A2D64 -sub_80A2D64: @ 80A2D64 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _080A2D7C @ =0xffff8ad0 - adds r2, r3, r0 - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0x1B - bhi _080A2D80 - movs r0, 0xC9 - strh r2, [r1] - b _080A2D82 - .align 2, 0 -_080A2D7C: .4byte 0xffff8ad0 -_080A2D80: - adds r0, r3, 0 -_080A2D82: - pop {r1} - bx r1 - thumb_func_end sub_80A2D64 - - thumb_func_start sub_80A2D88 -sub_80A2D88: @ 80A2D88 - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - adds r7, r1, 0 - ldrh r5, [r7, 0x20] - adds r1, r5, 0 - bl sub_80A2BC4 - add r4, sp, 0x4 - strb r0, [r4] - ldrb r2, [r4] - cmp r2, 0xFF - beq _080A2DE8 - ldr r0, _080A2DE0 @ =gSaveBlock1 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r0, _080A2DE4 @ =0x00002b4c - adds r1, r0 - adds r0, r7, 0 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0 - movs r1, 0x40 - adds r2, r4, 0 - bl SetMonData - mov r0, sp - strb r5, [r0] - mov r1, sp - lsrs r0, r5, 8 - strb r0, [r1, 0x1] - adds r0, r6, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - ldrb r0, [r4] - b _080A2DEA - .align 2, 0 -_080A2DE0: .4byte gSaveBlock1 -_080A2DE4: .4byte 0x00002b4c -_080A2DE8: - movs r0, 0xFF -_080A2DEA: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A2D88 - - thumb_func_start unref_sub_80A2DF4 -unref_sub_80A2DF4: @ 80A2DF4 - movs r0, 0 - bx lr - thumb_func_end unref_sub_80A2DF4 - - thumb_func_start sub_80A2DF8 -sub_80A2DF8: @ 80A2DF8 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - bl sub_80A2B94 - lsls r0, 24 - cmp r0, 0 - beq _080A2E46 - adds r0, r4, 0 - movs r1, 0x40 - bl GetMonData - add r2, sp, 0x4 - strb r0, [r2] - ldr r3, _080A2E50 @ =gSaveBlock1 - ldrb r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _080A2E54 @ =0x00002b6c - adds r0, r1 - movs r3, 0 - movs r1, 0 - strh r1, [r0] - movs r0, 0xFF - strb r0, [r2] - mov r0, sp - strb r3, [r0] - strb r3, [r0, 0x1] - adds r0, r4, 0 - movs r1, 0x40 - bl SetMonData - adds r0, r4, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData -_080A2E46: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2E50: .4byte gSaveBlock1 -_080A2E54: .4byte 0x00002b6c - thumb_func_end sub_80A2DF8 - - thumb_func_start unref_sub_80A2E58 -unref_sub_80A2E58: @ 80A2E58 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A2E70 @ =gSaveBlock1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, _080A2E74 @ =0x00002b6c - adds r1, r0 - movs r0, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_080A2E70: .4byte gSaveBlock1 -_080A2E74: .4byte 0x00002b6c - thumb_func_end unref_sub_80A2E58 - - thumb_func_start sub_80A2E78 -sub_80A2E78: @ 80A2E78 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r5, r0, 0 - mov r0, sp - movs r1, 0 - strb r1, [r0] - strb r1, [r0, 0x1] - add r1, sp, 0x4 - movs r0, 0xFF - strb r0, [r1] - movs r7, 0x6 - mov r9, r1 - ldr r0, _080A2F04 @ =gSaveBlock1 - mov r8, r0 - ldr r2, _080A2F08 @ =0x00002b4c - add r2, r8 -_080A2E9E: - lsls r0, r7, 3 - adds r0, r7 - lsls r4, r0, 2 - mov r1, r8 - adds r0, r4, r1 - ldr r3, _080A2F0C @ =0x00002b6c - adds r0, r3 - ldrh r6, [r0] - cmp r6, 0 - bne _080A2F10 - adds r4, r2 - adds r0, r5, 0 - movs r1, 0x40 - str r2, [sp, 0x8] - bl GetMonData - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r2, [sp, 0x8] - adds r1, r2 - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldr r0, _080A2F0C @ =0x00002b6c - adds r1, r0 - strh r6, [r1] - adds r0, r5, 0 - movs r1, 0x40 - mov r2, r9 - bl SetMonData - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r7, 0 - b _080A2F1C - .align 2, 0 -_080A2F04: .4byte gSaveBlock1 -_080A2F08: .4byte 0x00002b4c -_080A2F0C: .4byte 0x00002b6c -_080A2F10: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xF - bls _080A2E9E - movs r0, 0xFF -_080A2F1C: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A2E78 - - thumb_func_start itemid_is_mail -itemid_is_mail: @ 80A2F2C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x84 - bgt _080A2F3E - cmp r0, 0x79 - blt _080A2F3E - movs r0, 0x1 - b _080A2F40 -_080A2F3E: - movs r0, 0 -_080A2F40: - pop {r1} - bx r1 - thumb_func_end itemid_is_mail - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 0b95b553e..f10070110 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -420,7 +420,7 @@ sub_80F931C: @ 80F931C cmp r0, 0x1 bne _080F933C adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s index f0e842626..93abd97bc 100644 --- a/asm/mystery_event_script.s +++ b/asm/mystery_event_script.s @@ -677,13 +677,13 @@ _081266C6: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081266E4 adds r0, r7, 0 mov r1, sp - bl sub_80A2D88 + bl GiveMailToMon2 _081266E4: bl party_compaction bl CalculatePlayerPartyCount diff --git a/asm/party_menu.s b/asm/party_menu.s index f405d174a..534d4aaa4 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5808,7 +5808,7 @@ _0806DBAC: adds r0, r7, r5 ldrb r4, [r0] adds r0, r1, 0 - bl itemid_is_mail + bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -5841,7 +5841,7 @@ _0806DBF0: adds r0, r5, r7 ldrb r4, [r0, 0x6] adds r0, r1, 0 - bl itemid_is_mail + bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -5991,7 +5991,7 @@ _0806DD2C: .4byte gSpriteTemplate_837660C _0806DD30: .4byte gSprites _0806DD34: adds r0, r7, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806DD46 @@ -6321,7 +6321,7 @@ _0806DFAC: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806DFD8 @@ -7486,14 +7486,14 @@ PartyMenuUpdateMonHeldItem: @ 806E904 lsls r1, 16 lsrs r4, r1, 16 adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806E93C adds r0, r5, 0 adds r1, r4, 0 - bl sub_80A2BC4 + bl GiveMailToMon lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF @@ -7571,7 +7571,7 @@ PartyMenuTryGiveMonHeldItem: @ 806E964 cmp r2, 0 beq _0806EA44 adds r0, r2, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -7609,7 +7609,7 @@ _0806E9F0: movs r1, 0x5 bl CreateTask adds r0, r5, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -7631,7 +7631,7 @@ _0806EA44: movs r1, 0x1 bl RemoveBagItem adds r0, r5, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806EA66 @@ -7726,7 +7726,7 @@ PartyMenuTryGiveMonHeldItem_806EACC: @ 806EACC ldrh r1, [r4, 0x6] bl PartyMenuUpdateMonHeldItem ldrh r0, [r4, 0x6] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0806EB34 @@ -7923,9 +7923,9 @@ _0806ECB8: .4byte party_menu_link_mon_held_item_object _0806ECBC: ldr r0, [r5] adds r1, r4, 0 - bl sub_80A2D88 + bl GiveMailToMon2 adds r0, r4, 0 - bl sub_80A2B40 + bl ClearMailStruct ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox movs r1, 0x1 bl sub_806E834 @@ -7997,13 +7997,13 @@ _0806ED50: cmp r0, 0x1 bne _0806ED92 adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0806ED7C ldr r0, [r5] - bl sub_80A2DF8 + bl TakeMailFromMon _0806ED7C: ldrb r0, [r5, 0x5] adds r1, r6, 0 @@ -8126,7 +8126,7 @@ Task_LoseMailMessage: @ 806EE5C cmp r0, 0x1 bne _0806EE98 ldr r0, [r5] - bl sub_80A2DF8 + bl TakeMailFromMon ldr r0, _0806EE94 @ =gOtherText_MailTaken movs r1, 0 bl sub_806E834 @@ -8235,7 +8235,7 @@ Task_TakeHeldMail: @ 806EF38 bl MenuZeroFillWindowRect ldr r0, _0806EF70 @ =0x0201c000 ldr r0, [r0] - bl sub_80A2E78 + bl TakeMailFromMon2 lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF diff --git a/asm/player_pc.s b/asm/player_pc.s index 42edeba49..5e2adb775 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -1076,7 +1076,7 @@ _0813B5CC: movs r3, 0 bl DisplayItemMessageOnField adds r0, r6, 0 - bl sub_80A2B40 + bl ClearMailStruct bl sub_813AF78 ldrb r0, [r4, 0x3] subs r0, 0x1 diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 55bc29dc5..44ac16b7e 100644 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -2320,8 +2320,8 @@ _0810C944: _0810C94C: .4byte SpriteCallbackDummy thumb_func_end sub_810C8D4 - thumb_func_start sub_810C950 -sub_810C950: @ 810C950 + thumb_func_start ClearPokeblock +ClearPokeblock: @ 810C950 lsls r0, 24 ldr r1, _0810C988 @ =gSaveBlock1 lsrs r0, 21 @@ -2354,15 +2354,15 @@ sub_810C950: @ 810C950 _0810C988: .4byte gSaveBlock1 _0810C98C: .4byte 0x000007f9 _0810C990: .4byte 0x000007fe - thumb_func_end sub_810C950 + thumb_func_end ClearPokeblock - thumb_func_start sub_810C994 -sub_810C994: @ 810C994 + thumb_func_start ClearPokeblocks +ClearPokeblocks: @ 810C994 push {r4,lr} movs r4, 0 _0810C998: adds r0, r4, 0 - bl sub_810C950 + bl ClearPokeblock adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 @@ -2371,7 +2371,7 @@ _0810C998: pop {r4} pop {r0} bx r0 - thumb_func_end sub_810C994 + thumb_func_end ClearPokeblocks thumb_func_start sub_810C9B0 sub_810C9B0: @ 810C9B0 @@ -2499,7 +2499,7 @@ sub_810CA6C: @ 810CA6C cmp r0, 0 beq _0810CA94 adds r0, r2, 0 - bl sub_810C950 + bl ClearPokeblock movs r0, 0x1 b _0810CA96 .align 2, 0 diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s index a63779b28..5aa8b5901 100644 --- a/asm/pokemon_icon.s +++ b/asm/pokemon_icon.s @@ -228,7 +228,7 @@ mon_icon_convert_unown_species_id: @ 809D434 cmp r2, SPECIES_UNOWN bne _0809D45E adds r0, r1, 0 - bl sub_809D474 + bl GetUnownLetterByPersonality lsls r0, 16 lsrs r0, 16 cmp r0, 0 @@ -258,8 +258,8 @@ _0809D46C: bx r1 thumb_func_end mon_icon_convert_unown_species_id - thumb_func_start sub_809D474 -sub_809D474: @ 809D474 + thumb_func_start GetUnownLetterByPersonality +GetUnownLetterByPersonality: @ 809D474 push {lr} adds r2, r0, 0 movs r0, 0xC0 @@ -285,7 +285,7 @@ sub_809D474: @ 809D474 lsrs r0, 16 pop {r1} bx r1 - thumb_func_end sub_809D474 + thumb_func_end GetUnownLetterByPersonality thumb_func_start sub_809D4A8 sub_809D4A8: @ 809D4A8 @@ -295,7 +295,7 @@ sub_809D4A8: @ 809D4A8 lsrs r4, r0, 16 adds r0, r4, 0 mov r1, sp - bl sub_80A2D64 + bl MailSpeciesToSpecies lsls r0, 16 lsrs r0, 16 cmp r0, SPECIES_UNOWN diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s index 2f1c16f8c..57bcd4904 100644 --- a/asm/pokemon_menu.s +++ b/asm/pokemon_menu.s @@ -143,7 +143,7 @@ _08089B76: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08089BB4 @@ -964,7 +964,7 @@ sub_808A228: @ 808A228 lsrs r4, r0, 24 ldr r0, _0808A268 @ =gScriptItemId ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0808A278 @@ -1188,7 +1188,7 @@ sub_808A3F8: @ 808A3F8 push {r4,lr} ldr r0, _0808A460 @ =gScriptItemId ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0808A47E @@ -1349,7 +1349,7 @@ _0808A542: ldrb r0, [r6] muls r0, r5 adds r0, r4 - bl sub_80A2DF8 + bl TakeMailFromMon ldrb r0, [r6] muls r0, r5 adds r0, r4 @@ -3202,7 +3202,7 @@ _0808B416: ldrb r0, [r6] muls r0, r5 adds r0, r4 - bl sub_80A2DF8 + bl TakeMailFromMon ldrb r0, [r6] muls r0, r5 adds r0, r4 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 89f0e2865..176a42124 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1186,8 +1186,8 @@ _080961D0: .4byte sub_8096130 _080961D4: .4byte c2_exit_to_overworld_2_switch thumb_func_end sub_80961A8 - thumb_func_start sub_80961D8 -sub_80961D8: @ 80961D8 + thumb_func_start ResetPokemonStorageSystem +ResetPokemonStorageSystem: @ 80961D8 push {r4-r7,lr} ldr r1, _08096258 @ =gPokemonStorage movs r0, 0 @@ -1256,7 +1256,7 @@ _0809623E: _08096258: .4byte gPokemonStorage _0809625C: .4byte gPokemonStorage + 0x8344 _08096260: .4byte gPCText_BOX - thumb_func_end sub_80961D8 + thumb_func_end ResetPokemonStorageSystem thumb_func_start sub_8096264 sub_8096264: @ 8096264 @@ -2620,7 +2620,7 @@ _08096D66: ldr r1, _08096D8C @ =0x000011f2 adds r0, r4, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _08096E4C @@ -2712,7 +2712,7 @@ _08096E30: ldr r1, _08096E58 @ =0x000011f2 adds r0, r4, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08096E5C @@ -3102,7 +3102,7 @@ _08097190: ldr r1, _080971C4 @ =0x000011f2 adds r0, r4, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _08097210 @@ -3145,7 +3145,7 @@ _08097200: ldr r1, _08097218 @ =0x000011f2 adds r0, r4, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0809721C @@ -5891,196 +5891,7 @@ _08098892: bx r1 thumb_func_end sub_8098830 - thumb_func_start sub_8098898 -sub_8098898: @ 8098898 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0xA - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _080988C4 @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bls _080988B8 - b _080989F4 -_080988B8: - lsls r0, 2 - ldr r1, _080988C8 @ =_080988CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080988C4: .4byte gUnknown_083B6DF4 -_080988C8: .4byte _080988CC - .align 2, 0 -_080988CC: - .4byte _080989F4 - .4byte _08098930 - .4byte _080988E8 - .4byte _08098974 - .4byte _08098954 - .4byte _08098910 - .4byte _080989B8 -_080988E8: - ldr r4, _08098904 @ =0x02002694 - ldr r1, _08098908 @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, _0809890C @ =0xffffeb66 - adds r4, r0 - adds r0, r2, 0 - adds r1, r4, 0 - b _080989FE - .align 2, 0 -_08098904: .4byte 0x02002694 -_08098908: .4byte gUnknown_083B6DF4 -_0809890C: .4byte 0xffffeb66 -_08098910: - ldr r4, _08098928 @ =0x02002694 - ldr r1, _0809892C @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - adds r2, r0, 0 - adds r4, 0x50 - adds r1, r4, 0 - b _080989FE - .align 2, 0 -_08098928: .4byte 0x02002694 -_0809892C: .4byte gUnknown_083B6DF4 -_08098930: - ldr r0, _08098948 @ =0x02002694 - ldr r2, _0809894C @ =0xffffeb66 - adds r1, r0, r2 - bl StringCopy - adds r2, r0, 0 - ldr r1, _08098950 @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - b _080989FE - .align 2, 0 -_08098948: .4byte 0x02002694 -_0809894C: .4byte 0xffffeb66 -_08098950: .4byte gUnknown_083B6DF4 -_08098954: - ldr r0, _0809896C @ =0x02002694 - adds r1, r0, 0 - adds r1, 0x50 - bl StringCopy - adds r2, r0, 0 - ldr r1, _08098970 @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - b _080989FE - .align 2, 0 -_0809896C: .4byte 0x02002694 -_08098970: .4byte gUnknown_083B6DF4 -_08098974: - ldr r1, _080989AC @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r6, [r0] - adds r0, r6, 0 - bl StringLength - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r4, r6, r4 - adds r4, 0x1 - ldr r5, _080989B0 @ =0x02002694 - adds r0, r5, 0 - adds r1, r6, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, _080989B4 @ =0xffffeb66 - adds r5, r0 - adds r0, r2, 0 - adds r1, r5, 0 - bl StringCopy - adds r2, r0, 0 - adds r1, r4, 0 - b _080989FE - .align 2, 0 -_080989AC: .4byte gUnknown_083B6DF4 -_080989B0: .4byte 0x02002694 -_080989B4: .4byte 0xffffeb66 -_080989B8: - ldr r1, _080989EC @ =gUnknown_083B6DF4 - lsls r0, r5, 3 - adds r0, r1 - ldr r6, [r0] - adds r0, r6, 0 - bl StringLength - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r4, r6, r4 - subs r4, 0x1 - ldr r5, _080989F0 @ =0x02002694 - adds r0, r5, 0 - adds r1, r6, 0 - bl StringCopy - adds r2, r0, 0 - subs r0, r2, 0x1 - adds r5, 0x50 - adds r1, r5, 0 - bl StringCopy - adds r2, r0, 0 - adds r1, r4, 0 - b _080989FE - .align 2, 0 -_080989EC: .4byte gUnknown_083B6DF4 -_080989F0: .4byte 0x02002694 -_080989F4: - ldr r0, _08098A2C @ =0x02002694 - ldr r2, _08098A30 @ =gUnknown_083B6DF4 - lsls r1, r5, 3 - adds r1, r2 - ldr r1, [r1] -_080989FE: - bl StringCopy - adds r2, r0, 0 - ldr r0, _08098A34 @ =0x020026a6 - adds r3, r0, 0 - subs r3, 0x12 - cmp r2, r0 - bcs _08098A18 - movs r1, 0 -_08098A10: - strb r1, [r2] - adds r2, 0x1 - cmp r2, r0 - bcc _08098A10 -_08098A18: - movs r0, 0xFF - strb r0, [r2] - adds r0, r3, 0 - movs r1, 0xB - movs r2, 0x11 - bl MenuPrint - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08098A2C: .4byte 0x02002694 -_08098A30: .4byte gUnknown_083B6DF4 -_08098A34: .4byte 0x020026a6 - thumb_func_end sub_8098898 +.section .text_8098A38 thumb_func_start sub_8098A38 sub_8098A38: @ 8098A38 diff --git a/asm/pokenav.s b/asm/pokenav.s index 966285ab3..757a2a5a2 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -22849,67 +22849,7 @@ sub_80F6FFC: @ 80F6FFC _080F7008: .4byte REG_BLDCNT thumb_func_end sub_80F6FFC - thumb_func_start sub_80F700C -sub_80F700C: @ 80F700C - push {r4,r5,lr} - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080F7078 @ =gUnknown_083DFEC4 - ldr r4, [r2] - lsls r2, r1, 3 - adds r2, r4, r2 - ldr r3, _080F707C @ =0x0000cee8 - adds r2, r3 - ldrh r3, [r2] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 3 - ldr r3, _080F7080 @ =gTrainers - adds r5, r2, r3 - adds r3, r0, 0 - ldr r0, _080F7084 @ =0x0000d158 - adds r4, r0 - ldrh r4, [r4] - cmp r1, r4 - bcs _080F7060 - ldrb r1, [r5, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _080F7088 @ =gTrainerClassNames - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x13 - strb r0, [r3, 0x1] - movs r0, 0x4B - strb r0, [r3, 0x2] - adds r3, 0x3 - adds r1, r5, 0x4 - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 -_080F7060: - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x13 - strb r0, [r3, 0x1] - movs r0, 0x80 - strb r0, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F7078: .4byte gUnknown_083DFEC4 -_080F707C: .4byte 0x0000cee8 -_080F7080: .4byte gTrainers -_080F7084: .4byte 0x0000d158 -_080F7088: .4byte gTrainerClassNames - thumb_func_end sub_80F700C +.section .text_80F708C thumb_func_start sub_80F708C sub_80F708C: @ 80F708C diff --git a/asm/region_map.s b/asm/region_map.s index 8113afe64..44d6a4e91 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -1759,7 +1759,7 @@ sub_80FB600: @ 80FB600 adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl sub_810D9EC + bl GetSSTidalLocation lsls r0, 24 lsrs r0, 24 mov r10, r5 diff --git a/asm/rom5.s b/asm/reshow_battle_screen.s index 93f73dca8..88fa5dbde 100644 --- a/asm/rom5.s +++ b/asm/reshow_battle_screen.s @@ -11,8 +11,8 @@ nullsub_14: @ 807AD54 bx lr thumb_func_end nullsub_14 - thumb_func_start sub_807AD58 -sub_807AD58: @ 807AD58 + thumb_func_start ReshowBattleScreenAfterMenu +ReshowBattleScreenAfterMenu: @ 807AD58 push {lr} ldr r2, _0807AD90 @ =gPaletteFade ldrb r0, [r2, 0x8] @@ -33,7 +33,7 @@ sub_807AD58: @ 807AD58 ldr r1, _0807ADA0 @ =0x0001fffe adds r0, r1 strb r2, [r0] - ldr r0, _0807ADA4 @ =sub_807ADA8 + ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 @@ -43,11 +43,11 @@ _0807AD94: .4byte REG_MOSAIC _0807AD98: .4byte 0x02000000 _0807AD9C: .4byte 0x0001ffff _0807ADA0: .4byte 0x0001fffe -_0807ADA4: .4byte sub_807ADA8 - thumb_func_end sub_807AD58 +_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu + thumb_func_end ReshowBattleScreenAfterMenu - thumb_func_start sub_807ADA8 -sub_807ADA8: @ 807ADA8 + thumb_func_start CB2_ReshowBattleScreenAfterMenu +CB2_ReshowBattleScreenAfterMenu: @ 807ADA8 push {r4-r7,lr} sub sp, 0x8 ldr r0, _0807ADC4 @ =0x02000000 @@ -352,7 +352,7 @@ _0807B05C: .4byte gPaletteFade _0807B060: .4byte sub_800F808 _0807B064: .4byte 0x02000000 _0807B068: .4byte 0x0001ffff - thumb_func_end sub_807ADA8 + thumb_func_end CB2_ReshowBattleScreenAfterMenu thumb_func_start sub_807B06C sub_807B06C: @ 807B06C diff --git a/asm/secret_base.s b/asm/secret_base.s index bfa0e573d..81225ba4b 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -131,8 +131,8 @@ _080BB54C: bx r0 thumb_func_end sub_80BB4AC - thumb_func_start sub_80BB594 -sub_80BB594: @ 80BB594 + thumb_func_start ResetSecretBase +ResetSecretBase: @ 80BB594 push {lr} adds r1, r0, 0 lsls r1, 24 @@ -147,16 +147,16 @@ sub_80BB594: @ 80BB594 bx r0 .align 2, 0 _080BB5B0: .4byte gSaveBlock1 + 0x1A08 - thumb_func_end sub_80BB594 + thumb_func_end ResetSecretBase - thumb_func_start sub_80BB5B4 -sub_80BB5B4: @ 80BB5B4 + thumb_func_start ResetSecretBases +ResetSecretBases: @ 80BB5B4 push {r4,lr} movs r4, 0 _080BB5B8: lsls r0, r4, 24 lsrs r0, 24 - bl sub_80BB594 + bl ResetSecretBase adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 @@ -165,7 +165,7 @@ _080BB5B8: pop {r4} pop {r0} bx r0 - thumb_func_end sub_80BB5B4 + thumb_func_end ResetSecretBases thumb_func_start sub_80BB5D0 sub_80BB5D0: @ 80BB5D0 @@ -1701,37 +1701,7 @@ _080BC18A: bx r1 thumb_func_end sub_80BC14C - thumb_func_start sub_80BC190 -sub_80BC190: @ 80BC190 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 5 - ldr r0, _080BC1C8 @ =gSaveBlock1 + 0x1A0A - adds r4, r0 - adds r0, r4, 0 - bl sub_80BB8A8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringCopyN - movs r1, 0xFF - strb r1, [r0] - ldr r1, _080BC1CC @ =gOtherText_PlayersBase - adds r0, r5, 0 - bl StringAppend - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080BC1C8: .4byte gSaveBlock1 + 0x1A0A -_080BC1CC: .4byte gOtherText_PlayersBase - thumb_func_end sub_80BC190 +.section .text_80BC1D0 thumb_func_start GetSecretBaseMapName GetSecretBaseMapName: @ 80BC1D0 @@ -2043,7 +2013,7 @@ sub_80BC440: @ 80BC440 adds r4, r0 ldrh r5, [r4] movs r0, 0 - bl sub_80BB594 + bl ResetSecretBase strh r5, [r4] bl sub_80BC0F8 pop {r4,r5} @@ -2155,7 +2125,7 @@ sub_80BC50C: @ 80BC50C adds r4, r0 ldrh r5, [r4] movs r0, 0 - bl sub_80BB594 + bl ResetSecretBase strh r5, [r4] pop {r4,r5} pop {r0} diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 32abb287d..46af5bc0f 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -7048,72 +7048,7 @@ _08104CA4: .4byte gTasks _08104CA8: .4byte 0x0000ffff thumb_func_end sub_8104C5C - thumb_func_start sub_8104CAC -sub_8104CAC: @ 8104CAC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8104DA4 - ldr r0, _08104D24 @ =0x02000000 - adds r0, 0x3D - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _08104D28 @ =gTasks - adds r7, r0, r1 - strh r4, [r7, 0xA] - movs r6, 0 - ldr r1, _08104D2C @ =gUnknown_083ED048 - lsls r5, r4, 2 - adds r0, r5, r1 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xFF - beq _08104D18 - mov r8, r1 -_08104CE0: - mov r0, r8 - adds r4, r5, r0 - ldr r0, [r4] - lsls r2, r6, 2 - adds r2, r0 - ldrb r0, [r2] - ldrb r1, [r2, 0x1] - movs r3, 0x2 - ldrsh r2, [r2, r3] - bl sub_8105BB4 - lsls r0, 24 - lsrs r0, 24 - adds r2, r6, 0x4 - lsls r2, 1 - adds r1, r7, 0 - adds r1, 0x8 - adds r1, r2 - strh r0, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, [r4] - lsls r0, r6, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08104CE0 -_08104D18: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08104D24: .4byte 0x02000000 -_08104D28: .4byte gTasks -_08104D2C: .4byte gUnknown_083ED048 - thumb_func_end sub_8104CAC +.section .text_8104D30 thumb_func_start sub_8104D30 sub_8104D30: @ 8104D30 @@ -10221,249 +10156,4 @@ _08106440: .4byte gUnknown_083EDCDC _08106444: .4byte gUnknown_083EDCE4 thumb_func_end sub_8106404 - thumb_func_start sub_8106448 -sub_8106448: @ 8106448 - push {r4-r7,lr} - ldr r0, _081064A0 @ =gSlotMachine_Gfx - ldr r4, _081064A4 @ =0x02010000 - adds r1, r4, 0 - bl sub_800D238 - movs r3, 0xC0 - lsls r3, 19 - movs r5, 0xE9 - lsls r5, 5 - ldr r1, _081064A8 @ =0x040000d4 - ldr r6, _081064AC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08106468: - str r4, [r1] - str r3, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r4, r2 - adds r3, r2 - subs r5, r2 - cmp r5, r2 - bhi _08106468 - str r4, [r1] - str r3, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _081064B0 @ =gUnknown_08E95A18 - movs r1, 0 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _081064B4 @ =gPalette_83EDE24 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081064A0: .4byte gSlotMachine_Gfx -_081064A4: .4byte 0x02010000 -_081064A8: .4byte 0x040000d4 -_081064AC: .4byte 0x80000800 -_081064B0: .4byte gUnknown_08E95A18 -_081064B4: .4byte gPalette_83EDE24 - thumb_func_end sub_8106448 - - thumb_func_start sub_81064B8 -sub_81064B8: @ 81064B8 - push {lr} - ldr r0, _081064D0 @ =gUnknown_08E95AB8 - ldr r1, _081064D4 @ =0x0600e800 - movs r2, 0xA0 - lsls r2, 2 - bl CpuSet - bl sub_81064D8 - pop {r0} - bx r0 - .align 2, 0 -_081064D0: .4byte gUnknown_08E95AB8 -_081064D4: .4byte 0x0600e800 - thumb_func_end sub_81064B8 - - thumb_func_start sub_81064D8 -sub_81064D8: @ 81064D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r6, _0810658C @ =0x0600f000 - movs r3, 0x4 - movs r0, 0xC0 - lsls r0, 1 - mov r12, r0 - movs r1, 0xC0 - lsls r1, 2 - mov r9, r1 - movs r2, 0xA0 - lsls r2, 1 - mov r8, r2 -_081064F6: - movs r0, 0 - lsls r4, r3, 16 - asrs r5, r4, 16 -_081064FC: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r5, r2 - lsls r1, 1 - adds r1, r6 - mov r7, r8 - adds r3, r1, r7 - ldr r7, _08106590 @ =0x00002051 - adds r0, r7, 0 - strh r0, [r3] - movs r0, 0xD0 - lsls r0, 2 - adds r3, r1, r0 - ldr r7, _08106594 @ =0x00002851 - adds r0, r7, 0 - strh r0, [r3] - mov r0, r12 - adds r3, r1, r0 - ldr r7, _08106598 @ =0x00002061 - adds r0, r7, 0 - strh r0, [r3] - add r1, r9 - ldr r3, _0810659C @ =0x00002861 - adds r0, r3, 0 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x3 - ble _081064FC - asrs r3, r4, 16 - lsls r1, r3, 1 - adds r1, r6 - mov r5, r12 - adds r2, r1, r5 - adds r7, 0x5D - adds r0, r7, 0 - strh r0, [r2] - add r1, r9 - ldr r2, _081065A0 @ =0x000028be - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x7 - ldr r5, _081065A4 @ =0x000020bf - adds r2, r5, 0 -_08106558: - lsls r1, r0, 16 - asrs r1, 16 - lsls r0, r1, 5 - adds r0, r3 - lsls r0, 1 - adds r0, r6 - strh r2, [r0] - adds r1, 0x1 - lsls r1, 16 - lsrs r0, r1, 16 - asrs r1, 16 - cmp r1, 0xB - ble _08106558 - movs r7, 0xA0 - lsls r7, 11 - adds r0, r4, r7 - lsrs r3, r0, 16 - asrs r0, 16 - cmp r0, 0x11 - ble _081064F6 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810658C: .4byte 0x0600f000 -_08106590: .4byte 0x00002051 -_08106594: .4byte 0x00002851 -_08106598: .4byte 0x00002061 -_0810659C: .4byte 0x00002861 -_081065A0: .4byte 0x000028be -_081065A4: .4byte 0x000020bf - thumb_func_end sub_81064D8 - - thumb_func_start sub_81065A8 -sub_81065A8: @ 81065A8 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - lsls r0, 16 - asrs r0, 15 - ldr r6, _081065D0 @ =0x0600ebc0 - adds r4, r0, r6 - strh r1, [r4] - ldr r4, _081065D4 @ =0x0600ebc2 - adds r1, r0, r4 - strh r2, [r1] - adds r6, 0x40 - adds r1, r0, r6 - strh r3, [r1] - ldr r1, _081065D8 @ =0x0600ec02 - adds r0, r1 - strh r5, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081065D0: .4byte 0x0600ebc0 -_081065D4: .4byte 0x0600ebc2 -_081065D8: .4byte 0x0600ec02 - thumb_func_end sub_81065A8 - - thumb_func_start sub_81065DC -sub_81065DC: @ 81065DC - push {r4,r5,lr} - ldr r0, _08106624 @ =gUnknown_08E95FB8 - ldr r1, _08106628 @ =0x0600e800 - movs r2, 0xA0 - lsls r2, 2 - bl CpuSet - ldr r5, _0810662C @ =0x0600f000 - movs r1, 0 - movs r4, 0 -_081065F0: - movs r0, 0 - lsls r3, r1, 16 - asrs r2, r3, 11 -_081065F6: - lsls r1, r0, 16 - asrs r1, 16 - adds r0, r2, r1 - lsls r0, 1 - adds r0, r5 - strh r4, [r0] - adds r1, 0x1 - lsls r1, 16 - lsrs r0, r1, 16 - asrs r1, 16 - cmp r1, 0x1D - ble _081065F6 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _081065F0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08106624: .4byte gUnknown_08E95FB8 -_08106628: .4byte 0x0600e800 -_0810662C: .4byte 0x0600f000 - thumb_func_end sub_81065DC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trade.s b/asm/trade.s index d1fe82d6c..756423ee7 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -7639,7 +7639,7 @@ sub_804BA94: @ 804BA94 lsls r0, 2 ldr r1, _0804BB68 @ =gSaveBlock1 + 0x2B4C adds r0, r1 - bl sub_80A2B40 + bl ClearMailStruct _0804BAE8: ldr r4, _0804BB6C @ =gUnknown_03004828 ldr r0, [r4] @@ -7678,7 +7678,7 @@ _0804BB28: ldr r0, _0804BB70 @ =gUnknown_02029700 adds r1, r0 adds r0, r7, 0 - bl sub_80A2D88 + bl GiveMailToMon2 _0804BB3E: mov r0, r9 bl sub_804BA18 @@ -11262,7 +11262,7 @@ sub_804D948: @ 804D948 ldrh r0, [r5, 0x28] cmp r0, 0 beq _0804DAC0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0804DAB4 @@ -7,8 +7,8 @@ .text - thumb_func_start sub_80BD7A8 -sub_80BD7A8: @ 80BD7A8 + thumb_func_start ClearTVShowData +ClearTVShowData: @ 80BD7A8 push {r4-r7,lr} movs r3, 0 ldr r6, _080BD7F0 @ =gSaveBlock1 @@ -50,7 +50,7 @@ _080BD7F0: .4byte gSaveBlock1 _080BD7F4: .4byte 0x0000273a _080BD7F8: .4byte 0x00002738 _080BD7FC: .4byte 0x00002739 - thumb_func_end sub_80BD7A8 + thumb_func_end ClearTVShowData thumb_func_start special_0x44 special_0x44: @ 80BD800 @@ -417,8 +417,8 @@ _080BDAAE: bx r1 thumb_func_end special_0x4a - thumb_func_start sub_80BDAB4 -sub_80BDAB4: @ 80BDAB4 + thumb_func_start ResetGabbyAndTy +ResetGabbyAndTy: @ 80BDAB4 push {r4,lr} ldr r2, _080BDAF8 @ =gSaveBlock1 ldr r1, _080BDAFC @ =0x00002b10 @@ -461,7 +461,7 @@ _080BDB04: .4byte 0x00002b16 _080BDB08: .4byte 0x0000ffff _080BDB0C: .4byte 0x00002b1b _080BDB10: .4byte 0x00002b18 - thumb_func_end sub_80BDAB4 + thumb_func_end ResetGabbyAndTy thumb_func_start GabbyAndTyBeforeInterview GabbyAndTyBeforeInterview: @ 80BDB14 diff --git a/data/field_screeneffect.s b/data/field_weather.s index 836bfbe99..836bfbe99 100644 --- a/data/field_screeneffect.s +++ b/data/field_weather.s diff --git a/data/specials.inc b/data/specials.inc index 941fd12a8..bac45b91b 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -38,7 +38,7 @@ gSpecials:: .4byte sub_8083820 .4byte sub_8083614 .4byte GetLinkPartnerNames - .4byte sub_810DB28 + .4byte SpawnBerryBlenderLinkPlayerSprites .4byte SavePlayerParty .4byte LoadPlayerParty .4byte sub_80C5568 @@ -139,14 +139,14 @@ gSpecials:: .4byte sub_80C4C78 .4byte sub_80C4D50 .4byte ShowContestWinner - .4byte sub_810DCCC - .4byte sub_810DC7C + .4byte MauvilleGymSpecial2 + .4byte MauvilleGymSpecial1 .4byte ShowFieldMessageStringVar4 .4byte DrawWholeMapView .4byte StorePlayerCoordsInVars - .4byte sub_810DEDC - .4byte sub_810E070 - .4byte sub_810E230 + .4byte MauvilleGymSpecial3 + .4byte PetalburgGymSpecial1 + .4byte PetalburgGymSpecial2 .4byte GetPlayerTrainerIdOnesDigit .4byte GetPlayerBigGuyGirlString .4byte GetRivalSonDaughterString diff --git a/include/asm.inc.h b/include/asm.inc.h index eb3cec985..0c111a991 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -166,7 +166,7 @@ u8 battle_get_per_side_status(u8); u8 battle_get_side_with_given_state(u8); bool8 IsDoubleBattle(); -// asm/field_screeneffect.o +// asm/field_weather.o void SetWeather(u32); // src/field_fadetransition.o @@ -218,7 +218,7 @@ void sub_808AB90(void); u8 pokemon_order_func(u8); // asm/pokemon_storage_system.o -void sub_80961D8(void); +void ResetPokemonStorageSystem(void); // asm/pokemon_icon.o u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4); @@ -236,8 +236,8 @@ bool8 sub_80A212C(u8, u8, u8); void sub_80A2178(void); // asm/mail_data.o -void sub_80A2B18(void); -u16 sub_80A2D64(u16, u8 *); +void ClearMailData(void); +u16 MailSpeciesToSpecies(u16, u8 *); // src/map_name_popup.o void ShowMapNamePopup(void); @@ -245,7 +245,7 @@ void HideMapNamePopup(); // asm/item_menu.o void sub_80A3684(void); -void sub_80A3714(void); +void ClearBag(void); void sub_80A53F8(void); void sub_80A5B40(void); void sub_80A68CC(); @@ -254,7 +254,7 @@ void sub_80A7DD4(void); u8 sub_80A7E5C(u8); // asm/contest.o -void sub_80AB1B0(void); +void ResetLinkContestBoolean(void); void sub_80AE098(u8); void sub_80AE398(u8, u8); u32 sub_80AE770(u8, u8); @@ -269,16 +269,16 @@ void CreateDecorationShop1Menu(void *); void CreateDecorationShop2Menu(void *); // asm/secret_base.o -void sub_80BB5B4(void); +void ResetSecretBases(void); u8 sub_80BBB24(void); void sub_80BBCCC(u8); u8 *sub_80BCCE8(void); void sub_80BD674(void *, u32, u8); // asm/tv.o -void sub_80BD7A8(void); +void ClearTVShowData(void); void UpdateTVScreensOnMap(u32, u32); -void sub_80BDAB4(void); +void ResetGabbyAndTy(void); u8 sub_80BDEAC(u8 *); void sub_80BE160(TVShow *); void sub_80BE8EC(u16); @@ -326,7 +326,7 @@ void sub_80C8EBC(u8); void sub_80C8F34(u8); // asm/easy_chat.o -void sub_80E6764(void); +void InitEasyChatPhrases(void); u8* sub_80EB3FC(u8 *, u16); u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); @@ -353,7 +353,7 @@ u8 *CopyLocationName(u8 *dest, u8 location); void PlaySlotMachine(u8, void *); // asm/pokeblock.o -void sub_810C994(void); +void ClearPokeblocks(void); void sub_810CA6C(s32); s16 sub_810CAE4(u8, struct Pokeblock *); @@ -365,12 +365,12 @@ u8 IsMirageIslandPresent(void); // asm/field_specials.o void ResetCyclingRoadChallengeData(void); -bool32 sub_810D9B0(u16); -u8 sub_810D9EC(s8 *, s8 *, s16 *, s16 *); +bool32 CountSSTidalStep(u16); +u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); void ScriptAddElevatorMenuItem(u8, u8, u8, u8); void ScriptShowElevatorMenu(void); u8 GetLeadMonIndex(void); -void sub_810FA54(void); +void ResetFanClub(void); // asm/battle_records.o void InitLinkBattleRecords(void); @@ -410,7 +410,7 @@ u8 sub_8128124(u8 id); void sub_8132670(void); // asm/decoration_inventory.o -void sub_8133F80(void); +void ClearDecorationInventories(void); u8 sub_8133FE4(u8); u8 IsThereStorageSpaceForDecoration(u8); u8 sub_8134074(u8); diff --git a/include/berry.h b/include/berry.h index 0013b4dba..f0acbe0ad 100644 --- a/include/berry.h +++ b/include/berry.h @@ -22,7 +22,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void); bool8 TryToWaterBerryTree(void); void ClearBerryTrees(void); bool32 BerryTreeGrow(struct BerryTree *tree); -void BerryTreeTimeUpdate(int time); +void BerryTreeTimeUpdate(s32 minutes); void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle); void RemoveBerryTree(u8 id); u8 GetBerryTypeByBerryTreeId(u8 id); diff --git a/include/dewford_trend.h b/include/dewford_trend.h index 713d491b6..a37de3389 100644 --- a/include/dewford_trend.h +++ b/include/dewford_trend.h @@ -4,7 +4,7 @@ #define ARRAY_2007800 ((struct EasyChatPair *)(unk_2000000 + 0x7800)) #define ARRAY_2007900 ((struct EasyChatPair *)(unk_2000000 + 0x7900)) -void sub_80FA17C(void); +void InitDewfordTrend(void); void sub_80FA4E4(void *, u32, u8); #endif diff --git a/include/field_screeneffect.h b/include/field_weather.h index af07c970d..af07c970d 100644 --- a/include/field_screeneffect.h +++ b/include/field_weather.h diff --git a/include/flags.h b/include/flags.h index 0c0cebc5f..56325dea6 100644 --- a/include/flags.h +++ b/include/flags.h @@ -51,6 +51,7 @@ #define SYS_BRAILLE_WAIT 0x851 #define SYS_BRAILLE_FLY 0x852 +#define SYS_SHOAL_ITEM 0x85F #define SYS_B_DASH 0x860 // got Running Shoes #define SYS_CTRL_OBJ_DELETE 0x861 #define SYS_RESET_RTC_ENABLE 0x862 diff --git a/include/global.berry.h b/include/global.berry.h index 3f835f075..6632e55e2 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -45,7 +45,7 @@ struct BerryTree u8 berry; u8 stage:7; u8 growthSparkle:1; - u16 secondsUntilNextStage; + u16 minutesUntilNextStage; u8 berryYield; u8 regrowthCount:4; u8 watered1:1; diff --git a/include/link.h b/include/link.h index f88cf8f5a..eb6f642bc 100644 --- a/include/link.h +++ b/include/link.h @@ -124,8 +124,10 @@ struct Link extern struct Link gLink; extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; +extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gLinkType; extern u32 gLinkStatus; +extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; extern struct LinkPlayer gLinkPlayers[]; diff --git a/include/new_game.h b/include/new_game.h index 62e83f8f0..f59154af4 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -3,7 +3,7 @@ void write_word_to_mem(u32 var, u8 *dataPtr); void copy_word_to_mem(u8 *copyTo, u8 *copyFrom); -void set_player_trainer_id(void); +void InitPlayerTrainerId(void); void SetDefaultOptions(void); void ClearPokedexFlags(void); void sub_8052DA8(void); diff --git a/include/pokedex.h b/include/pokedex.h index fded1ec65..5dd44cd2f 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -55,7 +55,7 @@ struct PokedexView u8 unk65E[8]; }; -void sub_808C02C(void); +void ResetPokedex(void); void sub_808C0A0(void); void sub_808C0B8(void); void ClearPokedexView(struct PokedexView *pokedexView); diff --git a/include/pokemon.h b/include/pokemon.h index 8e216e04a..ae02de8ca 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -117,6 +117,7 @@ #define PARTY_SIZE 6 #define MAX_TOTAL_EVS 510 #define NUM_STATS 6 +#define UNOWN_FORM_COUNT 28 enum { NATURE_HARDY, diff --git a/include/vars.h b/include/vars.h index 5477ba98a..55df0a5e3 100644 --- a/include/vars.h +++ b/include/vars.h @@ -3,7 +3,7 @@ #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 - +#define VAR_ICE_STEP_COUNT 0x4022 #define VAR_FIRST_POKE 0x4023 #define VAR_MIRAGE_RND_H 0x4024 #define VAR_MIRAGE_RND_L 0x4025 @@ -18,9 +18,9 @@ #define VAR_POKELOT_PRIZE 0x4045 #define VAR_NATIONAL_DEX 0x4046 #define VAR_SHROOMISH_SIZE_RECORD 0x4047 - +#define VAR_ASH_GATHER_COUNT 0x4048 #define VAR_BIRCH_STATE 0x4049 - +#define VAR_CRUISE_STEP_COUNT 0x404A #define VAR_POKELOT_RND1 0x404B #define VAR_POKELOT_RND2 0x404C diff --git a/ld_script.txt b/ld_script.txt index d43c8886b..0cc6ef0f0 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -76,7 +76,7 @@ SECTIONS { asm/daycare.o(.text); src/egg_hatch.o(.text); asm/egg_hatch.o(.text); - src/battle_interface.o(.text); + src/battle_interface.o(.text); src/smokescreen.o(.text); asm/pokeball.o(.text); src/load_save.o(.text); @@ -121,16 +121,18 @@ SECTIONS { src/battle_anim.o(.text); src/rom_8077ABC.o(.text); src/task.o(.text); - asm/rom5.o(.text); + asm/reshow_battle_screen.o(.text); asm/battle_anim_807B69C.o(.text); src/title_screen.o(.text); - src/field_screeneffect.o(.text); - asm/field_screeneffect.o(.text); + src/field_weather.o(.text); + asm/field_weather.o(.text); src/field_fadetransition.o(.text); asm/field_fadetransition.o(.text); - asm/rom_8080874.o(.text); + asm/field_screen_effect.o(.text); src/battle_setup.o(.text); asm/cable_club.o(.text); + src/cable_club.o(.text); + asm/cable_club.o(.text_80830E4); src/mori_debug_menu.o(.text); src/trainer_see.o(.text); src/wild_encounter.o(.text); @@ -147,6 +149,8 @@ SECTIONS { asm/rom_8094928.o(.text); src/battle_party_menu.o(.text); asm/pokemon_storage_system.o(.text); + src/pokemon_storage_system.o(.text); + asm/pokemon_storage_system.o(.text_8098A38); asm/pokemon_icon.o(.text); asm/pokemon_summary_screen.o(.text); src/pokemon_summary_screen.o(.text); @@ -154,7 +158,6 @@ SECTIONS { src/script_movement.o(.text); src/fldeff_cut.o(.text); src/mail_data.o(.text); - asm/mail_data.o(.text); src/map_name_popup.o(.text); asm/item_menu.o(.text); src/battle_anim_80A7E7C.o(.text); @@ -172,6 +175,8 @@ SECTIONS { asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); asm/secret_base.o(.text); + src/secret_base.o(.text); + asm/secret_base.o(.text_80BC1D0); asm/tv.o(.text); src/tv.o(.text); asm/tv.o(.text_80BE8EC); @@ -195,6 +200,8 @@ SECTIONS { asm/easy_chat.o(.text); src/easy_chat.o(.text); asm/pokenav.o(.text); + src/pokenav.o(.text); + asm/pokenav.o(.text_80F708C); asm/mon_markings.o(.text); src/mauville_old_man.o(.text); asm/mauville_old_man.o(.text); @@ -209,6 +216,9 @@ SECTIONS { src/decoration.o(.text); asm/decoration.o(.text_80FE868); asm/slot_machine.o(.text); + src/slot_machine.o(.text); + asm/slot_machine.o(.text_8104D30) + src/slot_machine.o(.text_b); src/contest_painting.o(.text); src/battle_ai.o(.text); asm/trader.o(.text); @@ -385,7 +395,7 @@ SECTIONS { data/task.o(.rodata); data/battle_anim_807B69C.o(.rodata); src/title_screen.o(.rodata); - data/field_screeneffect.o(.rodata); + data/field_weather.o(.rodata); data/rom_8080874.o(.rodata); src/battle_setup.o(.rodata); data/cable_club.o(.rodata); diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 4d66910ba..328b45f49 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -69,7 +69,6 @@ extern void c3_0802FDF4(u8); extern void sub_8031F88(); extern void sub_8141828(); extern void c2_8011A1C(void); -extern void sub_800832C(); extern void dp01_prepare_buffer_wireless_probably(); extern void dp01_build_cmdbuf_x1D_1D_numargs_varargs(int, u16, void *); diff --git a/src/battle_anim.c b/src/battle_anim.c index b9aa5b898..bdb34365f 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -65,7 +65,6 @@ extern u8 sub_8078874(u8); extern void sub_8078914(); extern u8 sub_80AEB1C(); extern void sub_80E4EF8(int, int, int, int, u16, u8, int); -extern void sub_800D238(); extern u8 sub_80789BC(); extern void sub_80AB2AC(void); extern void sub_800D7B8(void); diff --git a/src/battle_setup.c b/src/battle_setup.c index abc0b978d..0753fba70 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -7,7 +7,7 @@ #include "field_map_obj_helpers.h" #include "field_message_box.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "main.h" #include "map_constants.h" #include "metatile_behavior.h" diff --git a/src/berry.c b/src/berry.c index 6c12af053..257248e5c 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1130,7 +1130,7 @@ bool32 BerryTreeGrow(struct BerryTree *tree) return TRUE; } -void BerryTreeTimeUpdate(int time) +void BerryTreeTimeUpdate(s32 minutes) { int i; struct BerryTree *tree; @@ -1141,27 +1141,27 @@ void BerryTreeTimeUpdate(int time) if (tree->berry && tree->stage && !tree->growthSparkle) { - if (time >= GetStageDurationByBerryType(tree->berry) * 71) + if (minutes >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { - int time2 = time; + s32 time = minutes; - while (time2 != 0) + while (time != 0) { - if (tree->secondsUntilNextStage > time2) + if (tree->minutesUntilNextStage > time) { - tree->secondsUntilNextStage -= time2; + tree->minutesUntilNextStage -= time; break; } - time2 -= tree->secondsUntilNextStage; - tree->secondsUntilNextStage = GetStageDurationByBerryType(tree->berry); + time -= tree->minutesUntilNextStage; + tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); if (!BerryTreeGrow(tree)) break; if (tree->stage == 5) - tree->secondsUntilNextStage *= 4; + tree->minutesUntilNextStage *= 4; } } } @@ -1174,12 +1174,12 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) *tree = gBlankBerryTree; tree->berry = berry; - tree->secondsUntilNextStage = GetStageDurationByBerryType(berry); + tree->minutesUntilNextStage = GetStageDurationByBerryType(berry); tree->stage = stage; if (stage == 5) { tree->berryYield = CalcBerryYield(tree); - tree->secondsUntilNextStage *= 4; + tree->minutesUntilNextStage *= 4; } if (!sparkle) { diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 103f0a85e..511b88c5a 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -178,9 +178,9 @@ void BerryTagScreen_814625C(u8 taskId) static void sub_8146288(void) { - REG_BG1CNT = 0x502; - REG_BG2CNT = 0x600; - REG_BG3CNT = 0x703; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; gUnknown_030041B4 = 0; } diff --git a/src/cable_club.c b/src/cable_club.c new file mode 100644 index 000000000..45fb347f3 --- /dev/null +++ b/src/cable_club.c @@ -0,0 +1,304 @@ +#include "global.h" +#include "asm.h" +#include "field_message_box.h" +#include "link.h" +#include "main.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "trainer_card.h" + +extern u16 gScriptResult; +extern struct TrainerCard gTrainerCards[4]; + +extern u8 gUnknown_03004860; +extern u8 gFieldLinkPlayerCount; + +extern u8 gUnknown_081A4932[]; +extern const u8 gUnknown_081A4975[]; + +void sub_8082D4C(); +void sub_8082D60(u8, u8); +u16 sub_8082D9C(u8, u8); +u32 sub_8082DF4(u8); +u32 sub_8082E28(u8); +u32 sub_8082EB8(u8); +void sub_8082FEC(u8 taskId); +static void sub_80830E4(u8 taskId); +void sub_8083188(u8 taskId); +static void sub_8083288(u8 taskId); +static void sub_8083314(u8 taskId); +void sub_80833C4(u8 taskId); +void sub_8083418(u8 taskId); +u8 sub_8083444(u8 taskId); + +void sub_808303C(u8 taskId) { + s32 linkPlayerCount; + s16 *taskData; + + taskData = gTasks[taskId].data; + + linkPlayerCount = GetLinkPlayerCount_2(); + + if (sub_8082E28(taskId) == 1 || + sub_8082EB8(taskId) == 1 || + sub_8082DF4(taskId) == 1) + { + return; + } + + sub_8082D60(taskId, linkPlayerCount); + + if (!(gMain.newKeys & A_BUTTON)) + { + return; + } + + if (linkPlayerCount < taskData[1]) + { + return; + } + + sub_80081C8(linkPlayerCount); + sub_8082D4C(); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5 + ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975); + gTasks[taskId].func = sub_80830E4; +} + +#ifdef NONMATCHING +static void sub_80830E4(u8 taskId) { + if (sub_8082E28(taskId) == 1 || + sub_8082EB8(taskId) == 1 || + sub_8082DF4(taskId) == 1 || + GetFieldMessageBoxMode()) + { + return; + } + + if (sub_800820C() == GetLinkPlayerCount_2() && + !(gMain.heldKeys & B_BUTTON)) + { + ShowFieldAutoScrollMessage(gUnknown_081A4932); + gTasks[taskId].func = sub_8082FEC; + return; + } + + if (gMain.heldKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + gTasks[(u32) taskId].func = sub_8083188; + } +} +#else +__attribute__((naked)) +static void sub_80830E4(u8 taskId) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + adds r6, r5, 0\n\ + adds r0, r5, 0\n\ + bl sub_8082E28\n\ + cmp r0, 0x1\n\ + beq _08083178\n\ + adds r0, r5, 0\n\ + bl sub_8082EB8\n\ + cmp r0, 0x1\n\ + beq _08083178\n\ + adds r0, r5, 0\n\ + bl sub_8082DF4\n\ + cmp r0, 0x1\n\ + beq _08083178\n\ + bl GetFieldMessageBoxMode\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08083178\n\ + bl sub_800820C\n\ + adds r4, r0, 0\n\ + bl GetLinkPlayerCount_2\n\ + lsls r4, 24\n\ + lsls r0, 24\n\ + cmp r4, r0\n\ + bne _08083132\n\ + ldr r0, _08083148 @ =gMain\n\ + ldrh r1, [r0, 0x2C]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08083158\n\ +_08083132:\n\ + ldr r0, _0808314C @ =gUnknown_081A4932\n\ + bl ShowFieldAutoScrollMessage\n\ + ldr r1, _08083150 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _08083154 @ =sub_8082FEC\n\ + str r1, [r0]\n\ + b _08083178\n\ + .align 2, 0\n\ +_08083148: .4byte gMain\n\ +_0808314C: .4byte gUnknown_081A4932\n\ +_08083150: .4byte gTasks\n\ +_08083154: .4byte sub_8082FEC\n\ +_08083158:\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08083178\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + bl sub_8007F4C\n\ + ldr r0, _08083180 @ =gTasks\n\ + lsls r1, r6, 2\n\ + adds r1, r6\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _08083184 @ =sub_8083188\n\ + str r0, [r1]\n\ +_08083178:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08083180: .4byte gTasks\n\ +_08083184: .4byte sub_8083188\n\ + .syntax divided\n"); +} +#endif + +void sub_8083188(u8 taskId) { + u8 local1, local2; + u16 *result; + + local1 = gTasks[taskId].data[1]; + local2 = gTasks[taskId].data[2]; + + + if (sub_8082DF4(taskId) == 1 || + sub_8083444(taskId) == 1) + { + return; + } + + if (GetLinkPlayerCount_2() != sub_800820C()) + { + gTasks[taskId].func = sub_8083418; + return; + } + + result = &gScriptResult; + *result = sub_8082D9C(local1, local2); + if (*result) + { + gTasks[taskId].func = sub_8083288; + } +} + +void sub_80831F8(u8 taskId) { + u8 local1, local2; + u16 *result; + + local1 = gTasks[taskId].data[1]; + local2 = gTasks[taskId].data[2]; + + if (sub_8082E28(taskId) == 1 || + sub_8082DF4(taskId) == 1) + { + return; + } + + result = &gScriptResult; + *result = sub_8082D9C(local1, local2); + if (*result == 0) + { + return; + } + + + if (*result == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *) gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + } +} + +static void sub_8083288(u8 taskId) { + if (sub_8082DF4(taskId) == 1) + { + return; + } + + if (gScriptResult == 3) + { + sub_800832C(); + HideFieldMessageBox(); + gTasks[taskId].func = sub_80833C4; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gUnknown_03004860 = GetMultiplayerId(); + sub_80081C8(gFieldLinkPlayerCount); + sub_8093390((struct TrainerCard *) gBlockSendBuffer); + gTasks[taskId].func = sub_8083314; + sub_8007E9C(2); + } +} + +static void sub_8083314(u8 taskId) { + u8 index; + + struct TrainerCard *trainerCards; + + if (sub_8082DF4(taskId) == 1) + { + return; + } + + if (GetBlockReceivedStatus() != sub_8008198()) + { + return; + } + + index = 0; + trainerCards = gTrainerCards; + for (index = 0; index < GetLinkPlayerCount(); index++) + { + void *src; + src = gBlockRecvBuffer[index]; + memcpy(&trainerCards[index], src, sizeof(struct TrainerCard)); + } + + SetSuppressLinkErrorMessage(FALSE); + ResetBlockReceivedFlags(); + HideFieldMessageBox(); + + if (gScriptResult == 1) + { + u16 linkType; + linkType = gLinkType; + sub_8082D4C(0x00004411, linkType); + EnableBothScriptContexts(); + DestroyTask(taskId); + return; + } + + sub_800832C(); + gTasks[taskId].func = sub_80833C4; +} diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 6b0cc821a..21cd643ef 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -41,7 +41,7 @@ static void Task_InitMenu(u8 taskId) { ResetSpriteData(); - REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; SetVBlankCallback(VBlankCB_ClearSaveDataScreen); MenuDrawTextWindow(2, 14, 27, 19); @@ -148,8 +148,8 @@ static u8 InitClearSaveDataScreen(void) SetVBlankCallback(VBlankCB_InitClearSaveDataScreen); - REG_BG3CNT = 0x0703; - REG_DISPCNT = 0x0900; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON; gMain.state = 1; return 0; case 1: diff --git a/src/clock.c b/src/clock.c index 4ec49807c..b263e99ae 100644 --- a/src/clock.c +++ b/src/clock.c @@ -8,17 +8,17 @@ #include "rtc.h" #include "wallclock.h" -extern void sub_80FA220(u16); -extern void sub_80BE8C4(u16); -extern void sub_8080834(u16); +extern void UpdateDewfordTrendPerDay(u16); +extern void UpdateTVShowsPerDay(u16); +extern void UpdateWeatherPerDay(u16); extern void UpdatePartyPokerusTime(u16); extern void UpdateMirageRnd(u16); extern void UpdateBirchState(u16); -extern void sub_810F618(u16); +extern void SetShoalItemFlag(u16); static void InitTimeBasedEvents(void); static void UpdatePerDay(struct Time *time); -static void UpdatePerSecond(struct Time *time); +static void UpdatePerMinute(struct Time *time); static void ReturnFromStartWallClock(void); static void InitTimeBasedEvents(void) @@ -35,7 +35,7 @@ void DoTimeBasedEvents(void) { RtcCalcLocalTime(); UpdatePerDay(&gLocalTime); - UpdatePerSecond(&gLocalTime); + UpdatePerMinute(&gLocalTime); } } @@ -49,32 +49,32 @@ static void UpdatePerDay(struct Time *time) { newDays = time->days - days; ClearUpperFlags(); - sub_80FA220(newDays); - sub_80BE8C4(newDays); - sub_8080834(newDays); + UpdateDewfordTrendPerDay(newDays); + UpdateTVShowsPerDay(newDays); + UpdateWeatherPerDay(newDays); UpdatePartyPokerusTime(newDays); UpdateMirageRnd(newDays); UpdateBirchState(newDays); - sub_810F618(newDays); + SetShoalItemFlag(newDays); SetRandomLotteryNumber(newDays); *varPtr = time->days; } } -static void UpdatePerSecond(struct Time *time) +static void UpdatePerMinute(struct Time *time) { struct Time newTime; - s32 totalSeconds; + s32 minutes; CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - totalSeconds = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; + minutes = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; // there's no way to get the correct assembly other than with this nested if check. so dumb. - if (totalSeconds != 0) + if (minutes != 0) { - if (totalSeconds >= 0) + if (minutes >= 0) { - BerryTreeTimeUpdate(totalSeconds); + BerryTreeTimeUpdate(minutes); gSaveBlock2.lastBerryTreeUpdate = *time; } } diff --git a/src/contest_painting.c b/src/contest_painting.c index 08244597e..2ef50ee17 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -336,8 +336,8 @@ static void ContestPaintingInitBG(void) { REG_DISPCNT = 0; REG_IE |= INTR_FLAG_VBLANK; - REG_BG0CNT = 0x0C42; - REG_BG1CNT = 0x0A45; + REG_BG0CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256; REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; @@ -367,7 +367,7 @@ static void ContestPaintingMosaic(void) return; } - REG_BG1CNT = 0xA45; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256; gUnknown_03000752 = gUnknown_03000754 / 2; REG_MOSAIC = (gUnknown_03000752 << 12) | (gUnknown_03000752 << 8) | (gUnknown_03000752 << 4) | (gUnknown_03000752 << 0); diff --git a/src/credits.c b/src/credits.c index 17d3507aa..01af78bce 100644 --- a/src/credits.c +++ b/src/credits.c @@ -474,8 +474,8 @@ void task_a_8143D04(u8 taskIdA) BeginNormalPaletteFade(-1, 0, 16, 0, 0); REG_BG3HOFS = 0; REG_BG3VOFS = 32; - REG_BG3CNT = 0x703; - REG_DISPCNT = 0x1940; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gMain.state = 0; gUnknown_0203935C = 0; @@ -518,13 +518,13 @@ static void task_a_8143F3C(u8 taskIdA) FreeAllSpritePalettes(); BeginNormalPaletteFade(-1, 8, 16, 0, 0); - REG_BG0CNT = 0x700; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; backup = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = backup; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - REG_DISPCNT = 0x140; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; gTasks[taskIdA].data[TDA_0] = 0x100; gTasks[taskIdA].func = task_a_8143FDC; diff --git a/src/dewford_trend.c b/src/dewford_trend.c index b90100d90..d69baef7f 100644 --- a/src/dewford_trend.c +++ b/src/dewford_trend.c @@ -19,7 +19,7 @@ static bool8 SB1ContainsWords(u16 *a); static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2); static s16 sub_80FA828(struct EasyChatPair *a, u16 b); -void sub_80FA17C(void) +void InitDewfordTrend(void) { u16 i; @@ -39,7 +39,7 @@ void sub_80FA17C(void) } #ifdef NONMATCHING -void sub_80FA220(u16 a) +void UpdateDewfordTrendPerDay(u16 a) { u16 i; u32 sp0; @@ -103,7 +103,7 @@ void sub_80FA220(u16 a) #else __attribute__((naked)) -void sub_80FA220(u16 a) +void UpdateDewfordTrendPerDay(u16 a) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/diploma.c b/src/diploma.c index 112647956..c32b72a70 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -87,7 +87,7 @@ void sub_8145D88(void) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG3CNT = 0x4603; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT512x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; CreateTask(Task_DiplomaFadeIn, 0); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 1f049c0bd..c5f2c08e7 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -517,7 +517,7 @@ bool8 sub_8068894(void) } if (SafariZoneTakeStep() == TRUE) return TRUE; - if (sub_810D9B0(1) == TRUE) + if (CountSSTidalStep(1) == TRUE) { ScriptContext1_SetupScript(gUnknown_0815FD0D); return TRUE; diff --git a/src/field_effect.c b/src/field_effect.c index 1b2346a00..bbc1144c1 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1,6 +1,6 @@ #include "global.h" #include "field_effect.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "sprite.h" #include "text.h" diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index f7d591c69..b5e6c1039 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -1,6 +1,6 @@ #include "global.h" #include "gba/syscall.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "global.fieldmap.h" #include "script.h" #include "task.h" diff --git a/src/field_region_map.c b/src/field_region_map.c index db12eb6a5..ec630ad00 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -64,7 +64,7 @@ void CB2_FieldInitRegionMap(void) SetUpWindowConfig(&gWindowConfig_81E709C); InitMenuWindow(&gWindowConfig_81E709C); MenuZeroFillScreen(); - REG_BG0CNT = 7936; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; MenuDrawTextWindow(21, 0, 29, 3); sub_8072BD8(gOtherText_Hoenn, 0x16, 1, 0x38); MenuDrawTextWindow(16, 16, 29, 19); @@ -94,7 +94,7 @@ void sub_813EFDC(void) switch (unk_2000000.unk888) { case 0: - REG_DISPCNT = 5441; + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; unk_2000000.unk888++; break; case 1: diff --git a/src/field_special_scene.c b/src/field_special_scene.c index fc4d96e18..59280b743 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -239,7 +239,7 @@ bool8 sub_80C7754(void) s8 mapGroup, mapNum; s16 x, y; - if (sub_810D9EC(&mapGroup, &mapNum, &x, &y)) + if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y)) { return FALSE; } @@ -270,7 +270,7 @@ void Task_HandlePorthole(u8 taskId) data[1] = 1; if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup)) return; - if (sub_810D9B0(1) == TRUE) + if (CountSSTidalStep(1) == TRUE) { if (*var == 2) *var = 9; diff --git a/src/field_screeneffect.c b/src/field_weather.c index 6cae0c18a..ff5d5b507 100644 --- a/src/field_screeneffect.c +++ b/src/field_weather.c @@ -1,5 +1,5 @@ #include "global.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "asm.h" #include "palette.h" #include "sprite.h" diff --git a/src/item_use.c b/src/item_use.c index 762bb70f2..4047ade5c 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -6,7 +6,7 @@ #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "fieldmap.h" #include "item.h" #include "items.h" diff --git a/src/link.c b/src/link.c index 336616f1a..224c0ae1c 100644 --- a/src/link.c +++ b/src/link.c @@ -207,13 +207,13 @@ static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charB switch (bgNum) { case 1: - REG_BG1CNT = 1 | (screenBaseBlock << 8) | (charBaseBlock << 2); + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock); break; case 2: - REG_BG2CNT = 1 | (screenBaseBlock << 8) | (charBaseBlock << 2); + REG_BG2CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock); break; case 3: - REG_BG3CNT = 1 | (screenBaseBlock << 8) | (charBaseBlock << 2); + REG_BG3CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock); break; } } @@ -255,7 +255,7 @@ void LinkTestScreen(void) } InitLinkTestBG(0, 2, 4, 0); - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP; CreateTask(Task_DestroySelf, 0); RunTasks(); AnimateSprites(); diff --git a/src/mail.c b/src/mail.c index 1bd4e73dc..807864332 100644 --- a/src/mail.c +++ b/src/mail.c @@ -116,7 +116,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) break; } - if (((sub_80A2D64(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16)) + if (((MailSpeciesToSpecies(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16)) { switch (ewram0.varFA) { @@ -273,11 +273,11 @@ static u8 sub_80F8A28(void) RETURN_SKIP_STATE; case 18: - REG_BG0CNT = 0x9F08; - REG_BG1CNT = 0x0801; - REG_BG2CNT = 0x0902; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x512; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_BLDCNT = 0; - REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; BeginNormalPaletteFade(-1, 0, 16, 0, 0); gPaletteFade.bufferTransferDisabled = 0; ewram0.varF0 = sub_80F8F58; diff --git a/src/mail_data.c b/src/mail_data.c index 0794d268d..23d22e21f 100644 --- a/src/mail_data.c +++ b/src/mail_data.c @@ -1,23 +1,24 @@ #include "global.h" +#include "items.h" #include "name_string_util.h" #include "pokemon.h" #include "species.h" #include "text.h" -void sub_80A2B40(struct MailStruct *); -u16 sub_80A2D44(u16, u32); -bool8 itemid_is_mail(u16); -u16 sub_809D474(u32); +void ClearMailStruct(struct MailStruct *); +u16 SpeciesToMailSpecies(u16, u32); +bool8 ItemIsMail(u16); +u16 GetUnownLetterByPersonality(u32); -void sub_80A2B18(void) +void ClearMailData(void) { u8 i; for (i = 0; i < 16; i++) - sub_80A2B40(&gSaveBlock1.mail[i]); + ClearMailStruct(&gSaveBlock1.mail[i]); } -void sub_80A2B40(struct MailStruct *mail) +void ClearMailStruct(struct MailStruct *mail) { int i; @@ -34,16 +35,16 @@ void sub_80A2B40(struct MailStruct *mail) mail->itemId = 0; } -bool8 sub_80A2B94(struct Pokemon *mon) +bool8 MonHasMail(struct Pokemon *mon) { u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); - if (itemid_is_mail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF) + if (ItemIsMail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF) return TRUE; else return FALSE; } -u8 sub_80A2BC4(struct Pokemon *mon, u16 itemId) +u8 GiveMailToMon(struct Pokemon *mon, u16 itemId) { u16 _itemId; u8 heldItem[2]; @@ -72,9 +73,9 @@ u8 sub_80A2BC4(struct Pokemon *mon, u16 itemId) for (i = 0; i < 4; i++) gSaveBlock1.mail[id].trainerId[i] = gSaveBlock2.playerTrainerId[i]; - species = GetBoxMonData(mon, MON_DATA_SPECIES); - personality = GetBoxMonData(mon, MON_DATA_PERSONALITY); - gSaveBlock1.mail[id].species = sub_80A2D44(species, personality); + species = GetBoxMonData(&mon->box, MON_DATA_SPECIES); + personality = GetBoxMonData(&mon->box, MON_DATA_PERSONALITY); + gSaveBlock1.mail[id].species = SpeciesToMailSpecies(species, personality); gSaveBlock1.mail[id].itemId = _itemId; SetMonData(mon, MON_DATA_MAIL, &id); SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); @@ -86,9 +87,125 @@ u8 sub_80A2BC4(struct Pokemon *mon, u16 itemId) return -1; } -u16 sub_80A2D44(u16 species, u32 personality) +u16 SpeciesToMailSpecies(u16 species, u32 personality) { - if (species != SPECIES_UNOWN) - return species; - return ((sub_809D474(personality) << 16) + (30000 << 16)) >> 16; + if (species == SPECIES_UNOWN) + { + int mailSpecies = GetUnownLetterByPersonality(personality) + 30000; + return mailSpecies; + } + + return species; +} + +u16 MailSpeciesToSpecies(u16 a1, u16 *a2) +{ + u16 result; + + if (a1 >= 30000 && a1 < (30000 + UNOWN_FORM_COUNT)) + { + result = SPECIES_UNOWN; + *a2 = a1 - 30000; + } + else + { + result = a1; + } + + return result; +} + +u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail) +{ + u8 heldItem[2]; + u16 itemId = mail->itemId; + u8 mailId = GiveMailToMon(mon, itemId); + + if (mailId == 0xFF) + return 0xFF; + + gSaveBlock1.mail[mailId] = *mail; + + SetMonData(mon, MON_DATA_MAIL, &mailId); + + heldItem[0] = itemId; + heldItem[1] = itemId >> 8; + + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + + return mailId; +} + +int unref_sub_80A2DF4(void) +{ + return 0; +} + +void TakeMailFromMon(struct Pokemon *mon) +{ + u8 heldItem[2]; + u8 mailId; + + if (MonHasMail(mon)) + { + mailId = GetMonData(mon, MON_DATA_MAIL); + gSaveBlock1.mail[mailId].itemId = 0; + mailId = 0xFF; + heldItem[0] = 0; + heldItem[1] = 0; + SetMonData(mon, MON_DATA_MAIL, &mailId); + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + } +} + +void DeleteMail(u8 mailId) +{ + gSaveBlock1.mail[mailId].itemId = 0; +} + +u8 TakeMailFromMon2(struct Pokemon *mon) +{ + u8 i; + u8 newHeldItem[2]; + u8 newMailId; + + newHeldItem[0] = 0; + newHeldItem[1] = 0; + newMailId = 0xFF; + + for (i = 6; i < 16; i++) + { + if (gSaveBlock1.mail[i].itemId == 0) + { + memcpy(&gSaveBlock1.mail[i], &gSaveBlock1.mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct)); + gSaveBlock1.mail[GetMonData(mon, MON_DATA_MAIL)].itemId = 0; + SetMonData(mon, MON_DATA_MAIL, &newMailId); + SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem); + return i; + } + } + + return 0xFF; +} + +bool8 ItemIsMail(u16 itemId) +{ + switch (itemId) + { + case ITEM_ORANGE_MAIL: + case ITEM_HARBOR_MAIL: + case ITEM_GLITTER_MAIL: + case ITEM_MECH_MAIL: + case ITEM_WOOD_MAIL: + case ITEM_WAVE_MAIL: + case ITEM_BEAD_MAIL: + case ITEM_SHADOW_MAIL: + case ITEM_TROPIC_MAIL: + case ITEM_DREAM_MAIL: + case ITEM_FAB_MAIL: + case ITEM_RETRO_MAIL: + return TRUE; + default: + return FALSE; + } } diff --git a/src/main_menu.c b/src/main_menu.c index 294d33620..50fefc471 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -250,7 +250,8 @@ u32 InitMainMenu(u8 a1) SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - REG_DISPCNT = DISPCNT_OBJ_1D_MAP + REG_DISPCNT = DISPCNT_MODE_0 + | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; @@ -747,8 +748,8 @@ static void Task_NewGameSpeech1(u8 taskId) FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - REG_BG1CNT = 0x00000703; - REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP; + REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP; gTasks[taskId].data[TD_BGHOFS] = 0; gTasks[taskId].func = Task_NewGameSpeech2; gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = 0xFF; @@ -1391,7 +1392,7 @@ void CB_ContinueNewGameSpeechPart2() SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - REG_BG1CNT = 1795; + REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON; } diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index 39c338658..d2ca754bb 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -64,7 +64,6 @@ extern u8* gMatsudaDebugMenuTextList3[]; extern u8 gMatsudaDebugMenuContestTopLeft[][2]; extern bool8 gReceivedRemoteLinkPlayers; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern struct MenuAction gMatsudaDebugMenuActions[]; @@ -290,7 +289,7 @@ static void sub_80A9F10(u8 taskId) static void sub_80A9F50(void) { - REG_DISPCNT = DISPCNT_OBJ_1D_MAP; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; SetUpWindowConfig(&gWindowConfig_81E6C3C); InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6C3C); @@ -1073,7 +1072,7 @@ void unref_sub_80AB084(u8 *text) REG_WIN0V = 0; REG_WIN1H = 0; REG_WIN1V = 0; - REG_DISPCNT = 0x1F40; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; savedIme = REG_IME; REG_IME = 0; diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 693b28948..97deb348c 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -54,7 +54,7 @@ void CB2_InitMysteryEventMenu(void) SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); MenuZeroFillScreen(); - REG_DISPCNT = 320; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; CreateTask(Task_DestroySelf, 0); StopMapMusic(); diff --git a/src/naming_screen.c b/src/naming_screen.c index f00a9bd3e..b14c690e2 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -298,10 +298,10 @@ static void NamingScreen_SetUpVideoRegs(void) REG_BG2VOFS = 0; REG_BG3HOFS = 0; REG_BG3VOFS = 0; - REG_BG0CNT = 0x1F00; - REG_BG1CNT = 0x1C01; - REG_BG2CNT = 0x1D0A; - REG_BG3CNT = 0x1E03; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(28) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(29) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(30) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_BLDCNT = 0x640; REG_BLDALPHA = 0x80C; } diff --git a/src/new_game.c b/src/new_game.c index 3b93d37cc..12e04a4ef 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -47,7 +47,7 @@ void copy_word_to_mem(u8 *copyTo, u8 *copyFrom) copyTo[i] = copyFrom[i]; } -void set_player_trainer_id(void) +void InitPlayerTrainerId(void) { write_word_to_mem((Random() << 16) | Random(), gSaveBlock2.playerTrainerId); } @@ -113,21 +113,21 @@ void NewGameInitData(void) gDifferentSaveFile = 1; ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - sub_808C02C(); + ResetPokedex(); sub_8052DE4(); memset(&gSaveBlock1, 0, sizeof(gSaveBlock1)); - sub_80A2B18(); + ClearMailData(); gSaveBlock2.specialSaveWarp = 0; - set_player_trainer_id(); + InitPlayerTrainerId(); PlayTimeCounter_Reset(); ClearPokedexFlags(); InitEventData(); - sub_80BD7A8(); - sub_80BDAB4(); - sub_80BB5B4(); + ClearTVShowData(); + ResetGabbyAndTy(); + ResetSecretBases(); ClearBerryTrees(); gSaveBlock1.money = 3000; - sub_80AB1B0(); + ResetLinkContestBoolean(); ResetGameStats(); sub_8052DA8(); InitLinkBattleRecords(); @@ -135,18 +135,18 @@ void NewGameInitData(void) InitBarboachSizeRecord(); gPlayerPartyCount = 0; ZeroPlayerPartyMons(); - sub_80961D8(); + ResetPokemonStorageSystem(); ClearRoamerData(); ClearRoamerLocationData(); gSaveBlock1.registeredItem = 0; - sub_80A3714(); + ClearBag(); NewGameInitPCItems(); - sub_810C994(); - sub_8133F80(); - sub_80E6764(); + ClearPokeblocks(); + ClearDecorationInventories(); + InitEasyChatPhrases(); SetMauvilleOldMan(); - sub_80FA17C(); - sub_810FA54(); + InitDewfordTrend(); + ResetFanClub(); ResetLotteryCorner(); WarpToTruck(); ScriptContext2_RunNewScript(gUnknown_0819FA81); diff --git a/src/player_pc.c b/src/player_pc.c index 02a2dc1a2..f0f0709b1 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -1,6 +1,6 @@ #include "global.h" #include "asm.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "item.h" #include "items.h" #include "main.h" diff --git a/src/pokedex.c b/src/pokedex.c index 3ef1de51e..5ea1f9938 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -115,7 +115,7 @@ u16 NationalPokedexNumToSpecies(u16); // asm/pokedex_area_screen void ShowPokedexAreaScreen(u16 species, u8 *string); -void sub_808C02C(void) +void ResetPokedex(void) { u16 i; @@ -789,10 +789,10 @@ bool8 sub_808D344(u8 a) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG3CNT = 0xF03; - REG_BG1CNT = 0xD01; - REG_BG0CNT = 0xC00; - REG_DISPCNT = 0x9F40; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON; gMain.state++; break; case 6: @@ -2296,8 +2296,8 @@ void Task_InitPageScreenMultistep(u8 taskId) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG3CNT = 0xF03; - REG_BG1CNT = 0xD00; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gMain.state++; break; @@ -2422,7 +2422,7 @@ void Task_InitAreaScreenMultistep(u8 taskId) sub_8090540(0xD); sub_8090644(1, 0xD); sub_808D640(); - REG_BG1CNT = 0xD00; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; gMain.state++; break; case 2: @@ -2544,10 +2544,10 @@ void Task_InitCryScreenMultistep(u8 taskId) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG2CNT = 0xE02; - REG_BG0CNT = 0x1F07; - REG_BG1CNT = 0xD00; - REG_DISPCNT = 0x1F07 + 0x39; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; gMain.state++; break; case 10: @@ -2715,8 +2715,8 @@ void Task_InitSizeScreenMultistep(u8 taskId) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG2CNT = 0xE03; - REG_DISPCNT = 0x1E40; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gMain.state++; break; case 9: @@ -3156,8 +3156,8 @@ void sub_8090750(u8 taskId) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG3CNT = 0xF07; - REG_DISPCNT = 0x1C40; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gTasks[taskId].data[0]++; break; case 6: diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c new file mode 100644 index 000000000..679ec0bc4 --- /dev/null +++ b/src/pokemon_storage_system.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "menu.h" +#include "string_util.h" + +struct StorageAction { + u8 *text; + u8 format; +}; + +extern const struct StorageAction gUnknown_083B6DF4[]; + +extern const u8 unk_2000000[]; + +#define gUnk2002694 (u8 *)(&unk_2000000[0x2694]) +#define gUnk20026A6 (u8 *)(&unk_2000000[0x26a6]) +#define gUnk20011fa (u8 *)(&unk_2000000[0x11fa]) +#define gUnk20026e4 (u8 *)(&unk_2000000[0x26e4]) + +void sub_8098898(u8 index) { + u8 *ptr; + + MenuDrawTextWindow(10, 16, 29, 19); + + switch (gUnknown_083B6DF4[index].format) + { + + case 2: + ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ptr, gUnk20011fa); + break; + + case 5: + ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ptr, gUnk20026e4); + break; + + case 1: + // {var} + " is selected." + ptr = StringCopy(gUnk2002694, gUnk20011fa); + ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text); + break; + + case 4: + // TODO: fix for German + // {var} + " was released." + ptr = StringCopy(gUnk2002694, gUnk20026e4); + ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text); + break; + + case 3: + { + u8 *stringLength; + u8 *text; + + text = gUnknown_083B6DF4[index].text; + stringLength = &text[StringLength(text)] + 1; + + ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ptr, gUnk20011fa); + ptr = StringCopy(ptr, stringLength); + } + break; + + case 6: + // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1) + { + u8 *stringLength; + u8 *text; + + text = gUnknown_083B6DF4[index].text; + stringLength = &text[StringLength(text)] - 1; + + ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ptr - 1, gUnk20026e4); + ptr = StringCopy(ptr, stringLength); + } + break; + + case 0: + default: + ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + break; + } + + while (ptr < gUnk20026A6) + { + ptr[0] = CHAR_SPACE; + ptr++; + } + + ptr[0] = EOS; + MenuPrint(gUnk2002694, 11, 17); +} diff --git a/src/pokenav.c b/src/pokenav.c new file mode 100644 index 000000000..60e7c73e1 --- /dev/null +++ b/src/pokenav.c @@ -0,0 +1,45 @@ +#include "global.h" +#include "battle.h" +#include "string_util.h" + +struct UnkPokenavStruct_Sub { + /*0x0*/ u16 unk0; + /*0x2*/ u8 filler2[6]; +}; + + +struct UnkPokenavStruct { + /*0x0000*/ u8 filler0000[0xCEE8]; + /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; + /*0xD158*/ u16 unkD158; + +}; + +extern struct UnkPokenavStruct *gUnknown_083DFEC4; + +extern const struct Trainer gTrainers[]; +extern const u8 gTrainerClassNames[][13]; + +void sub_80F700C(u8 *arg0, u16 arg1) { + struct Trainer *trainer; + u8 *ptr; + + trainer = (struct Trainer *) &gTrainers[gUnknown_083DFEC4->unkCEE8[arg1].unk0]; + + ptr = arg0; + if (arg1 < gUnknown_083DFEC4->unkD158) + { + ptr = StringCopy(ptr, gTrainerClassNames[trainer->trainerClass]); + + ptr[0] = 0xFC; + ptr[1] = 0x13; + ptr[2] = 0x4B; + ptr += 3; + ptr = StringCopy(ptr, trainer->trainerName); + } + + ptr[0] = 0xFC; + ptr[1] = 0x13; + ptr[2] = 0x80; + ptr[3] = 0xFF; +} diff --git a/src/record_mixing.c b/src/record_mixing.c index c08128637..76fe13059 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -31,8 +31,6 @@ extern u8 gUnknown_0300071C[]; extern u8 gOtherText_MixingComplete[]; extern u8 gOtherText_MixingRecordsWithFriend[]; extern bool8 gReceivedRemoteLinkPlayers; -extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; #define BUFFER_CHUNK_SIZE 200 diff --git a/src/rom3.c b/src/rom3.c index b0ef7f088..126248705 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -13,7 +13,6 @@ extern u8 unk_2000000[]; #define EWRAM_15000 ((u8 *)(unk_2000000 + 0x15000)) extern u16 gBattleTypeFlags; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern const u32 gBitTable[]; extern u16 gBattleWeather; extern const struct BattleMove gBattleMoves[]; diff --git a/src/rom4.c b/src/rom4.c index 5beb698ab..79ac6d769 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -13,7 +13,7 @@ #include "field_map_obj_helpers.h" #include "field_message_box.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "field_special_scene.h" #include "heal_location.h" #include "link.h" diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c index 93fbce556..ac564eddd 100644 --- a/src/rom_800D42C.c +++ b/src/rom_800D42C.c @@ -34,7 +34,7 @@ extern u8 BattleText_Tie[]; #define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X) #define PRINT_MESSAGE_RIGHT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, RIGHT_MESSAGE_X) -void sub_800DC24(void) +void PrintLinkBattleWinLossTie(void) { if (gUnknown_02024D26 == 3) diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 102909779..d46abc74d 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -150,9 +150,9 @@ static void CB2_SaveFailedScreen(void) REG_IME = ime; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; SetVBlankCallback(VBlankCB); - REG_BG3CNT = 0x703; - REG_BG2CNT = 0x602; - REG_BG0CNT = 0x1f08; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; gMain.state++; break; diff --git a/src/scrcmd.c b/src/scrcmd.c index 7569462e6..136181bd3 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -13,7 +13,7 @@ #include "field_map_obj_helpers.h" #include "field_message_box.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "item.h" #include "main.h" #include "map_obj_lock.h" diff --git a/src/secret_base.c b/src/secret_base.c new file mode 100644 index 000000000..572dfaa1d --- /dev/null +++ b/src/secret_base.c @@ -0,0 +1,18 @@ +#include "global.h" +#include "string_util.h" +#include "strings.h" +#include "text.h" + +u8 sub_80BB8A8(void *); + +u8 *sub_80BC190(u8 *dest, u8 arg1) { + u8 local1; + u8 *str; + + local1 = sub_80BB8A8(gSaveBlock1.secretBases[arg1].sbr_field_2); + + str = StringCopyN(dest, gSaveBlock1.secretBases[arg1].sbr_field_2, local1); + str[0] = EOS; + + return StringAppend(dest, gOtherText_PlayersBase); +} diff --git a/src/shop.c b/src/shop.c index c78771be7..780dff02a 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1,7 +1,7 @@ #include "global.h" #include "asm.h" #include "decompress.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "main.h" #include "menu.h" #include "money.h" diff --git a/src/slot_machine.c b/src/slot_machine.c new file mode 100644 index 000000000..c087bf6b4 --- /dev/null +++ b/src/slot_machine.c @@ -0,0 +1,154 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "task.h" + +struct UnkStruct2000000 { + /*0x00*/ u8 filler00[61]; + /*0x3D*/ u8 unk3D; +}; + +struct UnkStruct1 { + /*0x00*/ u8 unk00; + /*0x01*/ u8 unk01; + /*0x02*/ s16 unk02; +}; + +extern struct UnkStruct2000000 unk_2000000; + +extern struct UnkStruct1 *gUnknown_083ED048[]; +extern const u16 gPalette_83EDE24[]; + +extern const u8 gSlotMachine_Gfx[]; +#if ENGLISH +#define SLOTMACHINE_GFX_TILES 233 +#elif GERMAN +#define SLOTMACHINE_GFX_TILES 236 +#endif + +extern const u16 gUnknown_08E95A18[]; + +extern u16 gUnknown_08E95AB8[]; +extern u16 gUnknown_08E95FB8[]; + + +void sub_8104DA4(void); + +u8 sub_8105BB4(u8, u8, s16); + +static void LoadSlotMachineWheelOverlay(void); + +void sub_8104CAC(u8 arg0) { + u8 i; + struct Task *task; + + sub_8104DA4(); + + task = &gTasks[unk_2000000.unk3D]; + task->data[1] = arg0; + + i = 0; + while (gUnknown_083ED048[arg0][i].unk00 != 0xFF) + { + u8 spriteId; + spriteId = sub_8105BB4( + gUnknown_083ED048[arg0][i].unk00, + gUnknown_083ED048[arg0][i].unk01, + gUnknown_083ED048[arg0][i].unk02 + ); + task->data[4 + i] = spriteId; + +#ifdef GERMAN + if (arg0 == 5 && i <= 2) + { + gSprites[spriteId].invisible = TRUE; + } +#endif + + i += 1; + } +} + +asm(".section .text_b"); + +void sub_8106448(void) { + u32 offsetRead, offsetWrite; + u32 size; + + sub_800D238(gSlotMachine_Gfx, (void *) 0x02010000); + + offsetRead = 0x02010000; + offsetWrite = BG_VRAM; + size = SLOTMACHINE_GFX_TILES * 32; + while (TRUE) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); + break; + } + } + + LoadPalette(gUnknown_08E95A18, 0, 160); + LoadPalette(gPalette_83EDE24, 208, 32); +} + +void sub_81064B8(void) { + CpuCopy16(gUnknown_08E95AB8, (void *) BG_SCREEN_ADDR(29), 20 * 32 * 2); + LoadSlotMachineWheelOverlay(); +} + +static void LoadSlotMachineWheelOverlay(void) { + s16 x, y, dx; + u16 *screen; + + screen = (u16 *) BG_SCREEN_ADDR(30); + + for (x = 4; x < 18; x += 5) + { + for (dx = 0; dx < 4; dx++) + { + screen[5 * 32 + dx + x] = 0x2051; + screen[13 * 32 + dx + x] = 0x2851; + screen[6 * 32 + dx + x] = 0x2061; + screen[12 * 32 + dx + x] = 0x2861; + } + + screen[6 * 32 + x] = 0x20BE; + screen[12 * 32 + x] = 0x28BE; + + for (y = 7; y <= 11; y++) + { + screen[y * 32 + x] = 0x20BF; + } + } +} + +void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { + u16 *vram = (u16 *) BG_SCREEN_ADDR(29); + + vram[15 * 32 + arg0] = arg1; + vram[15 * 32 + 1 + arg0] = arg2; + vram[16 * 32 + arg0] = arg3; + vram[16 * 32 + 1 + arg0] = arg4; +} + +void sub_81065DC(void) { + s16 y, x; + u16 *screen; + + CpuCopy16(gUnknown_08E95FB8, (void *) BG_SCREEN_ADDR(29), 20 * 32 * 2); + + screen = (u16 *) BG_SCREEN_ADDR(30); + for (y = 0; y < 20; y++) + { + for (x = 0; x < 30; x++) + { + screen[x + y * 32] = 0; + } + } +} diff --git a/src/start_menu.c b/src/start_menu.c index 48217219d..37d361c0b 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -4,7 +4,7 @@ #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "load_save.h" #include "main.h" #include "map_obj_lock.h" @@ -782,7 +782,7 @@ static bool32 sub_80719FC(u8 *step) case 2: SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - REG_DISPCNT = 0x100; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; case 3: { diff --git a/src/starter_choose.c b/src/starter_choose.c index 63d153ebd..6ef410d21 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -325,9 +325,9 @@ void CB2_ChooseStarter(void) REG_BLDCNT = 0xFE; REG_BLDALPHA = 0; REG_BLDY = 0x7; - REG_BG3CNT = 0x703; - REG_BG2CNT = 0x602; - REG_BG0CNT = 0x1F08; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; taskId = CreateTask(Task_StarterChoose1, 0); @@ -256,7 +256,7 @@ void EndMassOutbreak(void) gSaveBlock1.outbreakUnk5 = 0; } -void sub_80BE8C4(u16 arg0) +void UpdateTVShowsPerDay(u16 arg0) { sub_80BE8EC(arg0); UpdateMassOutbreakTimeLeft(arg0); diff --git a/src/wallclock.c b/src/wallclock.c index 2f4d694a6..0f3665c65 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -256,8 +256,8 @@ static void WallClockInit(void) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_BG3CNT = 0x701; - REG_BG0CNT = 0x1F08; + REG_BG3CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; } |