From bba94787f73662b21703d105603da6d1f40a442c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 31 Jul 2017 16:11:41 +0200 Subject: battle message decompiled --- asm/battle_message.s | 2403 ---------------------------------------------- include/battle.h | 11 +- include/battle_message.h | 5 +- include/data2.h | 2 + ld_script.txt | 2 +- src/battle_4.c | 9 - src/battle_message.c | 1064 ++++++++++++++++++++ 7 files changed, 1080 insertions(+), 2416 deletions(-) delete mode 100644 asm/battle_message.s create mode 100644 src/battle_message.c diff --git a/asm/battle_message.s b/asm/battle_message.s deleted file mode 100644 index badbf2b7d..000000000 --- a/asm/battle_message.s +++ /dev/null @@ -1,2403 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start BufferStringBattle -BufferStringBattle: @ 8120AA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - ldr r5, _08120B70 @ =gSelectedOrderFromParty - ldr r4, _08120B74 @ =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - ldr r0, _08120B78 @ =gUnknown_02023A64 - adds r1, r0 - str r1, [r5] - ldr r2, _08120B7C @ =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, _08120B80 @ =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r3, _08120B84 @ =0x02000000 - ldrb r0, [r1, 0x7] - mov r8, r0 - ldr r2, _08120B88 @ =0x00016003 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x8] - mov r8, r0 - ldr r2, _08120B8C @ =0x0001605e - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x9] - mov r8, r0 - ldr r2, _08120B90 @ =0x000160c1 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldr r2, _08120B94 @ =gStringBank - ldrb r0, [r1, 0xA] - strb r0, [r2] - ldrb r1, [r1, 0xB] - ldr r2, _08120B98 @ =0x000160a0 - adds r0, r3, r2 - strb r1, [r0] - movs r2, 0 - mov r9, r3 - ldr r3, _08120B9C @ =gBattleTextBuff1 - mov r10, r3 - ldr r3, _08120BA0 @ =gAbilitiesPerBank -_08120B10: - adds r0, r2, r3 - ldr r1, [r5] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08120B10 - movs r2, 0 - ldr r0, _08120B9C @ =gBattleTextBuff1 - mov r8, r0 - ldr r3, _08120B70 @ =gSelectedOrderFromParty - ldr r1, _08120BA4 @ =gBattleTextBuff2 - mov r12, r1 - ldr r5, _08120BA8 @ =gBattleTextBuff3 -_08120B30: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - mov r0, r12 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _08120B30 - cmp r7, 0x5 - bls _08120B64 - b _08120F50 -_08120B64: - lsls r0, r7, 2 - ldr r1, _08120BAC @ =_08120BB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08120B70: .4byte gSelectedOrderFromParty -_08120B74: .4byte gActiveBank -_08120B78: .4byte gUnknown_02023A64 -_08120B7C: .4byte gLastUsedItem -_08120B80: .4byte gLastUsedAbility -_08120B84: .4byte 0x02000000 -_08120B88: .4byte 0x00016003 -_08120B8C: .4byte 0x0001605e -_08120B90: .4byte 0x000160c1 -_08120B94: .4byte gStringBank -_08120B98: .4byte 0x000160a0 -_08120B9C: .4byte gBattleTextBuff1 -_08120BA0: .4byte gAbilitiesPerBank -_08120BA4: .4byte gBattleTextBuff2 -_08120BA8: .4byte gBattleTextBuff3 -_08120BAC: .4byte _08120BB0 - .align 2, 0 -_08120BB0: - .4byte _08120BC8 - .4byte _08120C40 - .4byte _08120CCC - .4byte _08120D5C - .4byte _08120DE8 - .4byte _08120E50 -_08120BC8: - ldr r0, _08120BEC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08120C00 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120BF8 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120BF0 @ =gUnknown_084005C7 - cmp r0, 0 - bne _08120BE8 - b _08120F70 -_08120BE8: - ldr r6, _08120BF4 @ =gUnknown_084005DB - b _08120F70 - .align 2, 0 -_08120BEC: .4byte gBattleTypeFlags -_08120BF0: .4byte gUnknown_084005C7 -_08120BF4: .4byte gUnknown_084005DB -_08120BF8: - ldr r6, _08120BFC @ =gUnknown_084005AA - b _08120F70 - .align 2, 0 -_08120BFC: .4byte gUnknown_084005AA -_08120C00: - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08120C14 - ldr r6, _08120C10 @ =gUnknown_08400568 - b _08120F70 - .align 2, 0 -_08120C10: .4byte gUnknown_08400568 -_08120C14: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C24 - ldr r6, _08120C20 @ =gUnknown_08400590 - b _08120F70 - .align 2, 0 -_08120C20: .4byte gUnknown_08400590 -_08120C24: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - ldr r6, _08120C38 @ =gUnknown_08400555 - cmp r0, 0 - bne _08120C32 - b _08120F70 -_08120C32: - ldr r6, _08120C3C @ =gUnknown_0840057B - b _08120F70 - .align 2, 0 -_08120C38: .4byte gUnknown_08400555 -_08120C3C: .4byte gUnknown_0840057B -_08120C40: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120C7C - ldr r0, _08120C68 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C74 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120C6C @ =gUnknown_084006A4 - cmp r0, 0 - bne _08120C64 - b _08120F70 -_08120C64: - ldr r6, _08120C70 @ =gUnknown_084006F1 - b _08120F70 - .align 2, 0 -_08120C68: .4byte gBattleTypeFlags -_08120C6C: .4byte gUnknown_084006A4 -_08120C70: .4byte gUnknown_084006F1 -_08120C74: - ldr r6, _08120C78 @ =gUnknown_0840069C - b _08120F70 - .align 2, 0 -_08120C78: .4byte gUnknown_0840069C -_08120C7C: - ldr r0, _08120C94 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120CB4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120C9C - ldr r6, _08120C98 @ =gUnknown_0840065C - b _08120F70 - .align 2, 0 -_08120C94: .4byte gBattleTypeFlags -_08120C98: .4byte gUnknown_0840065C -_08120C9C: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CAC @ =gUnknown_08400608 - cmp r0, 0 - bne _08120CA8 - b _08120F70 -_08120CA8: - ldr r6, _08120CB0 @ =gUnknown_08400645 - b _08120F70 - .align 2, 0 -_08120CAC: .4byte gUnknown_08400608 -_08120CB0: .4byte gUnknown_08400645 -_08120CB4: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CC4 @ =gUnknown_084005F5 - cmp r0, 0 - bne _08120CC0 - b _08120F70 -_08120CC0: - ldr r6, _08120CC8 @ =gUnknown_08400635 - b _08120F70 - .align 2, 0 -_08120CC4: .4byte gUnknown_084005F5 -_08120CC8: .4byte gUnknown_08400635 -_08120CCC: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120D24 - ldr r0, _08120CE8 @ =0x02000000 - ldr r1, _08120CEC @ =0x000160c1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _08120CF4 - ldr r6, _08120CF0 @ =gUnknown_08400709 - b _08120F70 - .align 2, 0 -_08120CE8: .4byte 0x02000000 -_08120CEC: .4byte 0x000160c1 -_08120CF0: .4byte gUnknown_08400709 -_08120CF4: - cmp r2, 0x1 - beq _08120D04 - ldr r0, _08120D08 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D10 -_08120D04: - ldr r6, _08120D0C @ =gUnknown_08400727 - b _08120F70 - .align 2, 0 -_08120D08: .4byte gBattleTypeFlags -_08120D0C: .4byte gUnknown_08400727 -_08120D10: - ldr r6, _08120D1C @ =gUnknown_08400749 - cmp r2, 0x2 - beq _08120D18 - b _08120F70 -_08120D18: - ldr r6, _08120D20 @ =gUnknown_08400736 - b _08120F70 - .align 2, 0 -_08120D1C: .4byte gUnknown_08400749 -_08120D20: .4byte gUnknown_08400736 -_08120D24: - ldr r0, _08120D44 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - cmp r1, r0 - bne _08120D54 - ldr r0, _08120D48 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120D4C @ =gUnknown_08400771 - cmp r0, 0 - bne _08120D40 - b _08120F70 -_08120D40: - ldr r6, _08120D50 @ =gUnknown_08400781 - b _08120F70 - .align 2, 0 -_08120D44: .4byte gTrainerBattleOpponent -_08120D48: .4byte gBattleTypeFlags -_08120D4C: .4byte gUnknown_08400771 -_08120D50: .4byte gUnknown_08400781 -_08120D54: - ldr r6, _08120D58 @ =gUnknown_0840075E - b _08120F70 - .align 2, 0 -_08120D58: .4byte gUnknown_0840075E -_08120D5C: - ldr r0, _08120D88 @ =0x00016003 - add r0, r9 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120DB8 - ldr r0, _08120D8C @ =0x000160c1 - add r0, r9 - ldrb r3, [r0] - cmp r3, 0 - beq _08120D82 - ldr r0, _08120D90 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D98 -_08120D82: - ldr r6, _08120D94 @ =gUnknown_084006B3 - b _08120F70 - .align 2, 0 -_08120D88: .4byte 0x00016003 -_08120D8C: .4byte 0x000160c1 -_08120D90: .4byte gBattleTypeFlags -_08120D94: .4byte gUnknown_084006B3 -_08120D98: - cmp r3, 0x1 - bne _08120DA4 - ldr r6, _08120DA0 @ =gUnknown_084006BB - b _08120F70 - .align 2, 0 -_08120DA0: .4byte gUnknown_084006BB -_08120DA4: - ldr r6, _08120DB0 @ =gUnknown_084006D5 - cmp r3, 0x2 - beq _08120DAC - b _08120F70 -_08120DAC: - ldr r6, _08120DB4 @ =gUnknown_084006C6 - b _08120F70 - .align 2, 0 -_08120DB0: .4byte gUnknown_084006D5 -_08120DB4: .4byte gUnknown_084006C6 -_08120DB8: - ldr r0, _08120DD4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120DE0 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120DD8 @ =gUnknown_0840067C - cmp r0, 0 - bne _08120DD0 - b _08120F70 -_08120DD0: - ldr r6, _08120DDC @ =gUnknown_0840068C - b _08120F70 - .align 2, 0 -_08120DD4: .4byte gBattleTypeFlags -_08120DD8: .4byte gUnknown_0840067C -_08120DDC: .4byte gUnknown_0840068C -_08120DE0: - ldr r6, _08120DE4 @ =gUnknown_08400622 - b _08120F70 - .align 2, 0 -_08120DE4: .4byte gUnknown_08400622 -_08120DE8: - mov r0, r10 - bl sub_8121D1C - ldr r0, _08120E14 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08120E28 - ldr r0, _08120E18 @ =gBattleTextBuff2 - ldr r2, _08120E1C @ =gUnknown_08401674 - ldr r1, _08120E20 @ =0x02000000 - ldr r3, _08120E24 @ =0x000160a0 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _08120E38 - .align 2, 0 -_08120E14: .4byte gSelectedOrderFromParty -_08120E18: .4byte gBattleTextBuff2 -_08120E1C: .4byte gUnknown_08401674 -_08120E20: .4byte 0x02000000 -_08120E24: .4byte 0x000160a0 -_08120E28: - ldr r0, _08120E44 @ =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, _08120E48 @ =gMoveNames - adds r1, r2 - bl StringCopy -_08120E38: - ldr r0, _08120E44 @ =gBattleTextBuff2 - bl sub_8121D74 - ldr r6, _08120E4C @ =gUnknown_084007BD - b _08120F70 - .align 2, 0 -_08120E44: .4byte gBattleTextBuff2 -_08120E48: .4byte gMoveNames -_08120E4C: .4byte gUnknown_084007BD -_08120E50: - ldr r5, _08120E90 @ =gBattleTextBuff1 - ldrb r1, [r5] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08120EB8 - movs r0, 0x7F - ands r0, r1 - strb r0, [r5] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120E7C - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120E7C - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120E7C: - ldr r0, _08120E90 @ =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120E98 - ldr r6, _08120E94 @ =gUnknown_083FFEFC - b _08120F70 - .align 2, 0 -_08120E90: .4byte gBattleTextBuff1 -_08120E94: .4byte gUnknown_083FFEFC -_08120E98: - ldr r0, _08120EAC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120EB0 @ =gUnknown_083FFFEA - cmp r0, 0 - beq _08120F70 - ldr r6, _08120EB4 @ =gUnknown_083FFFF7 - b _08120F70 - .align 2, 0 -_08120EAC: .4byte gBattleTypeFlags -_08120EB0: .4byte gUnknown_083FFFEA -_08120EB4: .4byte gUnknown_083FFFF7 -_08120EB8: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120ED2 - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120ED2 - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120ED2: - ldr r0, _08120EF0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120F18 - ldr r0, _08120EF4 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F08 - cmp r0, 0x2 - bgt _08120EF8 - cmp r0, 0x1 - beq _08120EFE - b _08120F70 - .align 2, 0 -_08120EF0: .4byte gBattleTypeFlags -_08120EF4: .4byte gBattleTextBuff1 -_08120EF8: - cmp r0, 0x3 - beq _08120F10 - b _08120F70 -_08120EFE: - ldr r6, _08120F04 @ =gUnknown_083FFF6A - b _08120F70 - .align 2, 0 -_08120F04: .4byte gUnknown_083FFF6A -_08120F08: - ldr r6, _08120F0C @ =gUnknown_083FFF99 - b _08120F70 - .align 2, 0 -_08120F0C: .4byte gUnknown_083FFF99 -_08120F10: - ldr r6, _08120F14 @ =gUnknown_083FFFCB - b _08120F70 - .align 2, 0 -_08120F14: .4byte gUnknown_083FFFCB -_08120F18: - ldr r0, _08120F2C @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F40 - cmp r0, 0x2 - bgt _08120F30 - cmp r0, 0x1 - beq _08120F36 - b _08120F70 - .align 2, 0 -_08120F2C: .4byte gBattleTextBuff1 -_08120F30: - cmp r0, 0x3 - beq _08120F48 - b _08120F70 -_08120F36: - ldr r6, _08120F3C @ =gUnknown_083FFF56 - b _08120F70 - .align 2, 0 -_08120F3C: .4byte gUnknown_083FFF56 -_08120F40: - ldr r6, _08120F44 @ =gUnknown_083FFF81 - b _08120F70 - .align 2, 0 -_08120F44: .4byte gUnknown_083FFF81 -_08120F48: - ldr r6, _08120F4C @ =gUnknown_083FFFB3 - b _08120F70 - .align 2, 0 -_08120F4C: .4byte gUnknown_083FFFB3 -_08120F50: - movs r0, 0xB5 - lsls r0, 1 - cmp r7, r0 - bls _08120F64 - ldr r1, _08120F60 @ =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _08120F76 - .align 2, 0 -_08120F60: .4byte gDisplayedStringBattle -_08120F64: - ldr r1, _08120F84 @ =gBattleStringsTable - adds r0, r7, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r6, [r0] -_08120F70: - adds r0, r6, 0 - bl StrCpyDecodeToDisplayedStringBattle -_08120F76: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08120F84: .4byte gBattleStringsTable - thumb_func_end BufferStringBattle - - thumb_func_start StrCpyDecodeToDisplayedStringBattle -StrCpyDecodeToDisplayedStringBattle: @ 8120F88 - push {lr} - ldr r1, _08120F94 @ =gDisplayedStringBattle - bl StrCpyDecodeBattle - pop {r1} - bx r1 - .align 2, 0 -_08120F94: .4byte gDisplayedStringBattle - thumb_func_end StrCpyDecodeToDisplayedStringBattle - - thumb_func_start sub_8120F98 -sub_8120F98: @ 8120F98 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _08120FB0 @ =gUnknown_084017A8 - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _08120FC0 - .align 2, 0 -_08120FB0: .4byte gUnknown_084017A8 -_08120FB4: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _08120FC8 -_08120FC0: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08120FB4 -_08120FC8: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, _08120FE4 @ =gUnknown_081FA6D4 -_08120FD0: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _08120FE8 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _08120FE8 - ldr r0, [r2, 0x4] - b _08120FF2 - .align 2, 0 -_08120FE4: .4byte gUnknown_081FA6D4 -_08120FE8: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _08120FD0 - movs r0, 0 -_08120FF2: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8120F98 - - thumb_func_start StrCpyDecodeBattle -StrCpyDecodeBattle: @ 8120FFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - ldrb r1, [r0] - bl _08121A40 -_0812101E: - cmp r1, 0xFD - beq _08121026 - bl _08121A30 -_08121026: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x2A - bls _08121036 - bl _081219E6 -_08121036: - lsls r0, 2 - ldr r1, _08121040 @ =_08121044 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121040: .4byte _08121044 - .align 2, 0 -_08121044: - .4byte _081210F0 - .4byte _0812111E - .4byte _0812115A - .4byte _08121180 - .4byte _081211A4 - .4byte _081211C8 - .4byte _081211EC - .4byte _08121218 - .4byte _08121248 - .4byte _08121278 - .4byte _081212A8 - .4byte _0812133C - .4byte _081213A8 - .4byte _0812141C - .4byte _08121490 - .4byte _08121504 - .4byte _08121578 - .4byte _081215F8 - .4byte _08121620 - .4byte _08121660 - .4byte _081216EC - .4byte _081216F4 - .4byte _08121704 - .4byte _08121714 - .4byte _0812172C - .4byte _0812174C - .4byte _081217C0 - .4byte _08121830 - .4byte _08121840 - .4byte _08121854 - .4byte _08121868 - .4byte _0812188C - .4byte _081218B0 - .4byte _081218B8 - .4byte _081218C0 - .4byte _0812195C - .4byte _081219A4 - .4byte _081219AC - .4byte _0812197C - .4byte _08121984 - .4byte _081219CC - .4byte _081219D4 - .4byte _08121134 -_081210F0: - ldr r5, _08121100 @ =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _08121108 - ldr r4, _08121104 @ =gStringVar1 - adds r0, r5, 0 - b _08121140 - .align 2, 0 -_08121100: .4byte gBattleTextBuff1 -_08121104: .4byte gStringVar1 -_08121108: - adds r0, r5, 0 - bl sub_8120F98 - adds r4, r0, 0 - cmp r4, 0 - beq _08121118 - bl _081219E6 -_08121118: - adds r4, r5, 0 - bl _081219E6 -_0812111E: - ldr r1, _0812112C @ =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121130 @ =gStringVar2 - b _0812113E - .align 2, 0 -_0812112C: .4byte gBattleTextBuff2 -_08121130: .4byte gStringVar2 -_08121134: - ldr r1, _0812114C @ =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121150 @ =gStringVar3 -_0812113E: - adds r0, r1, 0 -_08121140: - adds r1, r4, 0 - bl sub_8121A68 - bl _081219E6 - .align 2, 0 -_0812114C: .4byte gBattleTextBuff3 -_08121150: .4byte gStringVar3 -_08121154: - adds r4, r1, 0 - bl _081219E6 -_0812115A: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08121178 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0812117C @ =gPlayerParty - adds r0, r1 - bl _0812190E - .align 2, 0 -_08121178: .4byte gBattlePartyID -_0812117C: .4byte gPlayerParty -_08121180: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0812119C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211A0 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812119C: .4byte gBattlePartyID -_081211A0: .4byte gEnemyParty -_081211A4: - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, _081211C0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211C4 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_081211C0: .4byte gBattlePartyID -_081211C4: .4byte gPlayerParty -_081211C8: - movs r0, 0x3 - bl GetBankByPlayerAI - ldr r1, _081211E4 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211E8 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_081211E4: .4byte gBattlePartyID -_081211E8: .4byte gEnemyParty -_081211EC: - ldr r2, _0812120C @ =gBattlePartyID - ldr r1, _08121210 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121214 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812120C: .4byte gBattlePartyID -_08121210: .4byte gLinkPlayers -_08121214: .4byte gPlayerParty -_08121218: - ldr r2, _0812123C @ =gBattlePartyID - ldr r1, _08121240 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121244 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812123C: .4byte gBattlePartyID -_08121240: .4byte gLinkPlayers -_08121244: .4byte gEnemyParty -_08121248: - ldr r2, _0812126C @ =gBattlePartyID - ldr r1, _08121270 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121274 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812126C: .4byte gBattlePartyID -_08121270: .4byte gLinkPlayers -_08121274: .4byte gPlayerParty -_08121278: - ldr r2, _0812129C @ =gBattlePartyID - ldr r1, _081212A0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081212A4 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_0812129C: .4byte gBattlePartyID -_081212A0: .4byte gLinkPlayers -_081212A4: .4byte gEnemyParty -_081212A8: - ldr r4, _081212CC @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _0812131C - ldr r0, _081212D0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081212D4 @ =gUnknown_08400791 - cmp r0, 0 - beq _081212E6 - ldr r4, _081212D8 @ =gUnknown_08400797 - b _081212E6 - .align 2, 0 -_081212CC: .4byte gBankAttacker -_081212D0: .4byte gBattleTypeFlags -_081212D4: .4byte gUnknown_08400791 -_081212D8: .4byte gUnknown_08400797 -_081212DC: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_081212E6: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081212DC - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121314 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121318 @ =gEnemyParty - adds r0, r1 - b _0812190E - .align 2, 0 -_08121314: .4byte gBattlePartyID -_08121318: .4byte gEnemyParty -_0812131C: - ldrb r0, [r2] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121338 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121338: .4byte gBattlePartyID -_0812133C: - ldr r4, _08121370 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0812137C - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121374 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121378 @ =gPlayerParty - adds r0, r1 - b _0812190E - .align 2, 0 -_08121370: .4byte gBankAttacker -_08121374: .4byte gBattlePartyID -_08121378: .4byte gPlayerParty -_0812137C: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _081213A0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081213A4 @ =gEnemyParty - b _08121940 - .align 2, 0 -_081213A0: .4byte gBattlePartyID -_081213A4: .4byte gEnemyParty -_081213A8: - ldr r5, _081213F4 @ =gBankAttacker - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _0812140C - ldr r0, _081213F8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081213FC @ =gUnknown_08400791 - cmp r0, 0 - beq _081213C6 - ldr r4, _08121400 @ =gUnknown_08400797 -_081213C6: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121404 @ =gBattlePartyID - ldr r2, _08121408 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _081213E8 -_081213D6: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081213D6 -_081213E8: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081213F4: .4byte gBankAttacker -_081213F8: .4byte gBattleTypeFlags -_081213FC: .4byte gUnknown_08400791 -_08121400: .4byte gUnknown_08400797 -_08121404: .4byte gBattlePartyID -_08121408: .4byte gEnemyParty -_0812140C: - ldr r1, _08121418 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121418: .4byte gBattlePartyID -_0812141C: - ldr r5, _08121468 @ =gBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121480 - ldr r0, _0812146C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121470 @ =gUnknown_08400791 - cmp r0, 0 - beq _0812143A - ldr r4, _08121474 @ =gUnknown_08400797 -_0812143A: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121478 @ =gBattlePartyID - ldr r2, _0812147C @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _0812145C -_0812144A: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _0812144A -_0812145C: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_08121468: .4byte gBankTarget -_0812146C: .4byte gBattleTypeFlags -_08121470: .4byte gUnknown_08400791 -_08121474: .4byte gUnknown_08400797 -_08121478: .4byte gBattlePartyID -_0812147C: .4byte gEnemyParty -_08121480: - ldr r1, _0812148C @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812148C: .4byte gBattlePartyID -_08121490: - ldr r5, _081214DC @ =gEffectBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081214F4 - ldr r0, _081214E0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081214E4 @ =gUnknown_08400791 - cmp r0, 0 - beq _081214AE - ldr r4, _081214E8 @ =gUnknown_08400797 -_081214AE: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _081214EC @ =gBattlePartyID - ldr r2, _081214F0 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _081214D0 -_081214BE: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081214BE -_081214D0: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081214DC: .4byte gEffectBank -_081214E0: .4byte gBattleTypeFlags -_081214E4: .4byte gUnknown_08400791 -_081214E8: .4byte gUnknown_08400797 -_081214EC: .4byte gBattlePartyID -_081214F0: .4byte gEnemyParty -_081214F4: - ldr r1, _08121500 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121500: .4byte gBattlePartyID -_08121504: - ldr r5, _08121550 @ =gActiveBank - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121568 - ldr r0, _08121554 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121558 @ =gUnknown_08400791 - cmp r0, 0 - beq _08121522 - ldr r4, _0812155C @ =gUnknown_08400797 -_08121522: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _08121560 @ =gBattlePartyID - ldr r2, _08121564 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _08121544 -_08121532: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08121532 -_08121544: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_08121550: .4byte gActiveBank -_08121554: .4byte gBattleTypeFlags -_08121558: .4byte gUnknown_08400791 -_0812155C: .4byte gUnknown_08400797 -_08121560: .4byte gBattlePartyID -_08121564: .4byte gEnemyParty -_08121568: - ldr r1, _08121574 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121574: .4byte gBattlePartyID -_08121578: - ldr r4, _081215CC @ =0x02000000 - ldr r0, _081215D0 @ =0x00016003 - adds r5, r4, r0 - ldrb r0, [r5] - bl GetBankSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _081215E8 - ldr r0, _081215D4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _081215D8 @ =gUnknown_08400791 - cmp r0, 0 - beq _0812159C - ldr r4, _081215DC @ =gUnknown_08400797 -_0812159C: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _081215E0 @ =gBattlePartyID - ldr r5, _081215E4 @ =gEnemyParty - mov r12, r5 - cmp r0, 0xFF - beq _081215BC -_081215AA: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081215AA -_081215BC: - ldr r1, _081215D0 @ =0x00016003 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _08121908 - .align 2, 0 -_081215CC: .4byte 0x02000000 -_081215D0: .4byte 0x00016003 -_081215D4: .4byte gBattleTypeFlags -_081215D8: .4byte gUnknown_08400791 -_081215DC: .4byte gUnknown_08400797 -_081215E0: .4byte gBattlePartyID -_081215E4: .4byte gEnemyParty -_081215E8: - ldr r1, _081215F4 @ =gBattlePartyID - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081215F4: .4byte gBattlePartyID -_081215F8: - ldr r0, _08121610 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _0812161C - ldr r0, _08121614 @ =0x02000000 - ldr r2, _08121618 @ =0x000160a0 - adds r0, r2 - b _08121634 - .align 2, 0 -_08121610: .4byte gSelectedOrderFromParty -_08121614: .4byte 0x02000000 -_08121618: .4byte 0x000160a0 -_0812161C: - ldrh r1, [r2] - b _08121652 -_08121620: - ldr r0, _08121640 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08121650 - ldr r0, _08121644 @ =0x02000000 - ldr r3, _08121648 @ =0x000160a0 - adds r0, r3 -_08121634: - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _0812164C @ =gUnknown_08401674 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08121640: .4byte gSelectedOrderFromParty -_08121644: .4byte 0x02000000 -_08121648: .4byte 0x000160a0 -_0812164C: .4byte gUnknown_08401674 -_08121650: - ldrh r1, [r2, 0x2] -_08121652: - movs r0, 0xD - muls r1, r0 - ldr r0, _0812165C @ =gMoveNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_0812165C: .4byte gMoveNames -_08121660: - ldr r0, _081216AC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081216D8 - ldr r1, _081216B0 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0xAF - bne _081216D4 - ldr r2, _081216B4 @ =gLinkPlayers - ldr r0, _081216B8 @ =0x02000000 - ldr r5, _081216BC @ =0x000160cb - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _081216C0 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _081216CC - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _081216C4 @ =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, _081216C8 @ =gUnknown_08400A85 - mov r0, sp - bl StringAppend - mov r4, sp - b _081219E6 - .align 2, 0 -_081216AC: .4byte gBattleTypeFlags -_081216B0: .4byte gLastUsedItem -_081216B4: .4byte gLinkPlayers -_081216B8: .4byte 0x02000000 -_081216BC: .4byte 0x000160cb -_081216C0: .4byte gStringBank -_081216C4: .4byte gEnigmaBerries -_081216C8: .4byte gUnknown_08400A85 -_081216CC: - ldr r4, _081216D0 @ =gUnknown_08400A78 - b _081219E6 - .align 2, 0 -_081216D0: .4byte gUnknown_08400A78 -_081216D4: - ldrh r0, [r1] - b _081216DC -_081216D8: - ldr r0, _081216E8 @ =gLastUsedItem - ldrh r0, [r0] -_081216DC: - mov r1, sp - bl CopyItemName - mov r4, sp - b _081219E6 - .align 2, 0 -_081216E8: .4byte gLastUsedItem -_081216EC: - ldr r0, _081216F0 @ =gLastUsedAbility - b _08121734 - .align 2, 0 -_081216F0: .4byte gLastUsedAbility -_081216F4: - ldr r1, _081216FC @ =gAbilitiesPerBank - ldr r0, _08121700 @ =gBankAttacker - b _08121730 - .align 2, 0 -_081216FC: .4byte gAbilitiesPerBank -_08121700: .4byte gBankAttacker -_08121704: - ldr r1, _0812170C @ =gAbilitiesPerBank - ldr r0, _08121710 @ =gBankTarget - b _08121730 - .align 2, 0 -_0812170C: .4byte gAbilitiesPerBank -_08121710: .4byte gBankTarget -_08121714: - ldr r1, _08121720 @ =gAbilitiesPerBank - ldr r0, _08121724 @ =0x02000000 - ldr r2, _08121728 @ =0x00016003 - adds r0, r2 - b _08121730 - .align 2, 0 -_08121720: .4byte gAbilitiesPerBank -_08121724: .4byte 0x02000000 -_08121728: .4byte 0x00016003 -_0812172C: - ldr r1, _08121740 @ =gAbilitiesPerBank - ldr r0, _08121744 @ =gEffectBank -_08121730: - ldrb r0, [r0] - adds r0, r1 -_08121734: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121748 @ =gAbilityNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08121740: .4byte gAbilitiesPerBank -_08121744: .4byte gEffectBank -_08121748: .4byte gAbilityNames -_0812174C: - ldr r3, _08121764 @ =gTrainerBattleOpponent - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08121768 - bl GetSecretBaseTrainerNameIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE - .align 2, 0 -_08121764: .4byte gTrainerBattleOpponent -_08121768: - ldr r0, _08121784 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08121788 - bl get_trainer_class_name_index - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE - .align 2, 0 -_08121784: .4byte gBattleTypeFlags -_08121788: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _0812179E - bl sub_8135FD8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _081217AE -_0812179E: - ldr r2, _081217B8 @ =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r0, 0xD -_081217AE: - muls r1, r0 - ldr r0, _081217BC @ =gTrainerClassNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_081217B8: .4byte gTrainers -_081217BC: .4byte gTrainerClassNames -_081217C0: - ldr r2, _081217E4 @ =gTrainerBattleOpponent - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _081217EC - mov r0, sp - movs r1, 0xFF - movs r2, 0x8 - bl memset - ldr r1, _081217E8 @ =0x02017002 - mov r0, sp - movs r2, 0x7 - bl memcpy - mov r4, sp - b _081219E6 - .align 2, 0 -_081217E4: .4byte gTrainerBattleOpponent -_081217E8: .4byte 0x02017002 -_081217EC: - ldr r0, _08121804 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08121808 - mov r0, sp - bl get_trainer_name - mov r4, sp - b _081219E6 - .align 2, 0 -_08121804: .4byte gBattleTypeFlags -_08121808: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _0812181C - mov r0, sp - bl sub_8135FF4 - mov r4, sp - b _081219E6 -_0812181C: - ldrh r0, [r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0812182C @ =gTrainers + 0x4 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_0812182C: .4byte gTrainers + 0x4 -_08121830: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _0812183C @ =gLinkPlayers + 0x8 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_0812183C: .4byte gLinkPlayers + 0x8 -_08121840: - ldr r4, _08121850 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _08121876 - .align 2, 0 -_08121850: .4byte gLinkPlayers -_08121854: - ldr r4, _08121864 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _08121876 - .align 2, 0 -_08121864: .4byte gLinkPlayers -_08121868: - ldr r4, _08121888 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_08121876: - eors r0, r1 - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _081219E6 - .align 2, 0 -_08121888: .4byte gLinkPlayers -_0812188C: - ldr r0, _081218A4 @ =0x02000000 - ldr r3, _081218A8 @ =0x00016003 - adds r0, r3 - ldrb r0, [r0] - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _081218AC @ =gLinkPlayers + 0x8 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_081218A4: .4byte 0x02000000 -_081218A8: .4byte 0x00016003 -_081218AC: .4byte gLinkPlayers + 0x8 -_081218B0: - ldr r4, _081218B4 @ =gSaveBlock2 - b _081219E6 - .align 2, 0 -_081218B4: .4byte gSaveBlock2 -_081218B8: - bl sub_8082830 - adds r4, r0, 0 - b _081219E6 -_081218C0: - ldr r5, _08121918 @ =0x02000000 - ldr r1, _0812191C @ =0x00016003 - adds r0, r5, r1 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121934 - ldr r0, _08121920 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121924 @ =gUnknown_08400791 - cmp r0, 0 - beq _081218E2 - ldr r4, _08121928 @ =gUnknown_08400797 -_081218E2: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r2, _0812192C @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _08121902 -_081218F0: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081218F0 -_08121902: - ldr r5, _08121930 @ =0x0001605e - adds r0, r2, r5 - ldrb r1, [r0] -_08121908: - movs r0, 0x64 - muls r0, r1 - add r0, r12 -_0812190E: - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0812194A - .align 2, 0 -_08121918: .4byte 0x02000000 -_0812191C: .4byte 0x00016003 -_08121920: .4byte gBattleTypeFlags -_08121924: .4byte gUnknown_08400791 -_08121928: .4byte gUnknown_08400797 -_0812192C: .4byte gEnemyParty -_08121930: .4byte 0x0001605e -_08121934: - ldr r1, _08121954 @ =0x0001605e - adds r0, r5, r1 - ldrb r1, [r0] -_0812193A: - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121958 @ =gPlayerParty -_08121940: - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0812194A: - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _081219E6 - .align 2, 0 -_08121954: .4byte 0x0001605e -_08121958: .4byte gPlayerParty -_0812195C: - ldr r0, _08121970 @ =0x0000084b - bl FlagGet - lsls r0, 24 - ldr r4, _08121974 @ =gUnknown_084009ED - cmp r0, 0 - beq _081219E6 - ldr r4, _08121978 @ =gUnknown_084009F7 - b _081219E6 - .align 2, 0 -_08121970: .4byte 0x0000084b -_08121974: .4byte gUnknown_084009ED -_08121978: .4byte gUnknown_084009F7 -_0812197C: - ldr r0, _08121980 @ =gBankAttacker - b _08121986 - .align 2, 0 -_08121980: .4byte gBankAttacker -_08121984: - ldr r0, _08121998 @ =gBankTarget -_08121986: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _0812199C @ =gUnknown_084007A7 - cmp r0, 0 - bne _081219E6 - ldr r4, _081219A0 @ =gUnknown_084007AC - b _081219E6 - .align 2, 0 -_08121998: .4byte gBankTarget -_0812199C: .4byte gUnknown_084007A7 -_081219A0: .4byte gUnknown_084007AC -_081219A4: - ldr r0, _081219A8 @ =gBankAttacker - b _081219AE - .align 2, 0 -_081219A8: .4byte gBankAttacker -_081219AC: - ldr r0, _081219C0 @ =gBankTarget -_081219AE: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _081219C4 @ =gUnknown_0840079C - cmp r0, 0 - bne _081219E6 - ldr r4, _081219C8 @ =gUnknown_084007A1 - b _081219E6 - .align 2, 0 -_081219C0: .4byte gBankTarget -_081219C4: .4byte gUnknown_0840079C -_081219C8: .4byte gUnknown_084007A1 -_081219CC: - ldr r0, _081219D0 @ =gBankAttacker - b _081219D6 - .align 2, 0 -_081219D0: .4byte gBankAttacker -_081219D4: - ldr r0, _08121A24 @ =gBankTarget -_081219D6: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _08121A28 @ =gUnknown_084007B2 - cmp r0, 0 - bne _081219E6 - ldr r4, _08121A2C @ =gUnknown_084007B7 -_081219E6: - ldrb r1, [r4] - adds r0, r1, 0 - mov r3, r9 - ldrb r2, [r3] - adds r3, 0x1 - cmp r0, 0xFF - beq _08121A06 -_081219F4: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081219F4 -_08121A06: - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x21 - bne _08121A3C - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _08121A3C - .align 2, 0 -_08121A24: .4byte gBankTarget -_08121A28: .4byte gUnknown_084007B2 -_08121A2C: .4byte gUnknown_084007B7 -_08121A30: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_08121A3C: - mov r9, r3 - ldrb r1, [r3] -_08121A40: - adds r0, r1, 0 - cmp r0, 0xFF - beq _08121A4A - bl _0812101E -_08121A4A: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end StrCpyDecodeBattle - - thumb_func_start sub_8121A68 -sub_8121A68: @ 8121A68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _08121A86 - b _08121D0E -_08121A86: - adds r0, r7, r5 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xA - bls _08121A92 - b _08121D04 -_08121A92: - lsls r0, r1, 2 - ldr r1, _08121A9C @ =_08121AA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121A9C: .4byte _08121AA0 - .align 2, 0 -_08121AA0: - .4byte _08121ACC - .4byte _08121AE8 - .4byte _08121B3C - .4byte _08121B54 - .4byte _08121B64 - .4byte _08121BDC - .4byte _08121BF0 - .4byte _08121C02 - .4byte _08121C48 - .4byte _08121C5C - .4byte _08121C78 -_08121ACC: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, _08121AE4 @ =gBattleStringsTable - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08121CE2 - .align 2, 0 -_08121AE4: .4byte gBattleStringsTable -_08121AE8: - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _08121B04 - cmp r0, 0x2 - bgt _08121AF8 - cmp r0, 0x1 - beq _08121AFE - b _08121B26 -_08121AF8: - cmp r0, 0x4 - beq _08121B0C - b _08121B26 -_08121AFE: - ldrb r4, [r4, 0x3] - mov r8, r4 - b _08121B26 -_08121B04: - ldrb r1, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - b _08121B22 -_08121B0C: - ldrb r0, [r4, 0x3] - mov r8, r0 - ldrb r0, [r4, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 -_08121B22: - orrs r1, r0 - mov r8, r1 -_08121B26: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _08121D04 -_08121B3C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, _08121B50 @ =gMoveNames - adds r1, r0 - b _08121CE2 - .align 2, 0 -_08121B50: .4byte gMoveNames -_08121B54: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08121B60 @ =gTypeNames - b _08121C66 - .align 2, 0 -_08121B60: .4byte gTypeNames -_08121B64: - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121B88 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121B84 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _08121BC4 - .align 2, 0 -_08121B84: .4byte gPlayerParty -_08121B88: - ldr r0, _08121BA0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08121BA8 - ldr r1, _08121BA4 @ =gUnknown_08400797 - adds r0, r6, 0 - bl StringAppend - b _08121BB0 - .align 2, 0 -_08121BA0: .4byte gBattleTypeFlags -_08121BA4: .4byte gUnknown_08400797 -_08121BA8: - ldr r1, _08121BD4 @ =gUnknown_08400791 - adds r0, r6, 0 - bl StringAppend -_08121BB0: - adds r0, r5, r7 - ldrb r1, [r0, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121BD8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_08121BC4: - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _08121D02 - .align 2, 0 -_08121BD4: .4byte gUnknown_08400791 -_08121BD8: .4byte gEnemyParty -_08121BDC: - ldr r1, _08121BEC @ =gUnknown_08400F58 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121BEC: .4byte gUnknown_08400F58 -_08121BF0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _08121D02 -_08121C02: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121C28 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C24 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _08121C3A - .align 2, 0 -_08121C24: .4byte gPlayerParty -_08121C28: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C44 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_08121C3A: - adds r0, r6, 0 - bl StringGetEnd10 - b _08121D02 - .align 2, 0 -_08121C44: .4byte gEnemyParty -_08121C48: - ldr r1, _08121C58 @ =gUnknown_08400F78 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121C58: .4byte gUnknown_08400F78 -_08121C5C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121C74 @ =gAbilityNames -_08121C66: - adds r1, r0 -_08121C68: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _08121D04 - .align 2, 0 -_08121C74: .4byte gAbilityNames -_08121C78: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, _08121CC4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08121CFA - cmp r2, 0xAF - bne _08121CF0 - ldr r2, _08121CC8 @ =gLinkPlayers - ldr r0, _08121CCC @ =0x02000000 - ldr r1, _08121CD0 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08121CD4 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08121CE0 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08121CD8 @ =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, _08121CDC @ =gUnknown_08400A85 - b _08121CE2 - .align 2, 0 -_08121CC4: .4byte gBattleTypeFlags -_08121CC8: .4byte gLinkPlayers -_08121CCC: .4byte 0x02000000 -_08121CD0: .4byte 0x000160cb -_08121CD4: .4byte gStringBank -_08121CD8: .4byte gEnigmaBerries -_08121CDC: .4byte gUnknown_08400A85 -_08121CE0: - ldr r1, _08121CEC @ =gUnknown_08400A78 -_08121CE2: - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121CEC: .4byte gUnknown_08400A78 -_08121CF0: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _08121D02 -_08121CFA: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_08121D02: - adds r5, 0x3 -_08121D04: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08121D0E - b _08121A86 -_08121D0E: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8121A68 - - thumb_func_start sub_8121D1C -sub_8121D1C: @ 8121D1C - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _08121D50 @ =gSelectedOrderFromParty - ldr r3, _08121D54 @ =gUnknown_084016BC -_08121D26: - cmp r2, 0x4 - beq _08121D3C - ldrh r1, [r3] - cmp r1, 0 - bne _08121D32 - adds r2, 0x1 -_08121D32: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D26 -_08121D3C: - cmp r2, 0 - blt _08121D68 - cmp r2, 0x2 - bgt _08121D5C - ldr r1, _08121D58 @ =gUnknown_08400E5E - adds r0, r4, 0 - bl StringCopy - b _08121D68 - .align 2, 0 -_08121D50: .4byte gSelectedOrderFromParty -_08121D54: .4byte gUnknown_084016BC -_08121D58: .4byte gUnknown_08400E5E -_08121D5C: - cmp r2, 0x4 - bgt _08121D68 - ldr r1, _08121D70 @ =gUnknown_08400E62 - adds r0, r4, 0 - bl StringCopy -_08121D68: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121D70: .4byte gUnknown_08400E62 - thumb_func_end sub_8121D1C - - thumb_func_start sub_8121D74 -sub_8121D74: @ 8121D74 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _08121D7E -_08121D7C: - adds r3, 0x1 -_08121D7E: - ldrb r0, [r3] - cmp r0, 0xFF - bne _08121D7C - ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gSelectedOrderFromParty - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_08121D8E: - cmp r4, 0x4 - beq _08121DA8 - ldrh r1, [r2] - cmp r1, 0 - bne _08121D9A - adds r4, 0x1 -_08121D9A: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D8E - cmp r4, 0x4 - bhi _08121E04 -_08121DA8: - lsls r0, r4, 2 - ldr r1, _08121DBC @ =_08121DC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gSelectedOrderFromParty -_08121DBC: .4byte _08121DC0 - .align 2, 0 -_08121DC0: - .4byte _08121DD4 - .4byte _08121DDC - .4byte _08121DE4 - .4byte _08121DEC - .4byte _08121DFC -_08121DD4: - ldr r1, _08121DD8 @ =gUnknown_084007C8 - b _08121DEE - .align 2, 0 -_08121DD8: .4byte gUnknown_084007C8 -_08121DDC: - ldr r1, _08121DE0 @ =gUnknown_084007CA - b _08121DEE - .align 2, 0 -_08121DE0: .4byte gUnknown_084007CA -_08121DE4: - ldr r1, _08121DE8 @ =gUnknown_084007CC - b _08121DEE - .align 2, 0 -_08121DE8: .4byte gUnknown_084007CC -_08121DEC: - ldr r1, _08121DF8 @ =gUnknown_084007CE -_08121DEE: - adds r0, r3, 0 - bl StringCopy - b _08121E04 - .align 2, 0 -_08121DF8: .4byte gUnknown_084007CE -_08121DFC: - ldr r1, _08121E0C @ =gUnknown_084007D0 - adds r0, r3, 0 - bl StringCopy -_08121E04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121E0C: .4byte gUnknown_084007D0 - thumb_func_end sub_8121D74 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle.h b/include/battle.h index 4b2542017..9d8092197 100644 --- a/include/battle.h +++ b/include/battle.h @@ -19,6 +19,15 @@ #define BATTLE_TYPE_LEGENDARY 0x2000 #define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_WON 0x1 +#define BATTLE_LOST 0x2 +#define BATTLE_DREW 0x3 +#define BATTLE_RAN 0x4 +#define BATTLE_PLAYER_TELEPORTED 0x5 +#define BATTLE_POKE_FLED 0x6 +#define BATTLE_CAUGHT 0x7 +#define BATTLE_OPPONENT_TELEPORTED 0xA + #define AI_ACTION_DONE 0x0001 #define AI_ACTION_FLEE 0x0002 #define AI_ACTION_WATCH 0x0004 @@ -327,7 +336,7 @@ struct BattleStruct /* 0x2000000 */ /*0x1609D*/ u8 unk1609D; /*0x1609E*/ u8 unk1609E; /*0x1609F*/ u8 unk1609F; - /*0x160A0*/ u8 unk160a0; + /*0x160A0*/ u8 stringMoveType; /*0x160A1*/ u8 animTargetsHit; /*0x160A2*/ u8 expGetterBank; /*0x160A3*/ u8 unk160A3; diff --git a/include/battle_message.h b/include/battle_message.h index da57333a5..d115e5357 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,7 +1,8 @@ #ifndef GUARD_BATTLE_MESSAGE_H #define GUARD_BATTLE_MESSAGE_H -void StrCpyDecodeToDisplayedStringBattle(const u8 *); -void StrCpyDecodeBattle(const u8 *, u8 *); +void BufferStringBattle(u16 stringID); +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); +u32 StrCpyDecodeBattle(const u8* src, u8* dst); #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/data2.h b/include/data2.h index 9dd26fd5f..2837a4451 100644 --- a/include/data2.h +++ b/include/data2.h @@ -45,6 +45,8 @@ extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; extern u8 gSpeciesNames[][11]; extern u8 gMoveNames[][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTypeNames[][7]; extern const struct UnknownStructD2 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern struct CompressedSpriteSheet gUnknown_081FAEA4; diff --git a/ld_script.txt b/ld_script.txt index a0054668e..fe46e10b7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -229,7 +229,7 @@ SECTIONS { src/fldeff_strength.o(.text); asm/battle_transition.o(.text); src/battle_811DA74.o(.text); - asm/battle_message.o(.text); + src/battle_message.o(.text); src/choose_party.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); diff --git a/src/battle_4.c b/src/battle_4.c index 31d6c76dc..6dd5d7df6 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -246,15 +246,6 @@ extern u8 gUnknown_081D95DB[]; //bs payday money give #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 -#define BATTLE_WON 0x1 -#define BATTLE_LOST 0x2 -#define BATTLE_DREW 0x3 -#define BATTLE_RAN 0x4 -#define BATTLE_PLAYER_TELEPORTED 0x5 -#define BATTLE_POKE_FLED 0x6 -#define BATTLE_CAUGHT 0x7 -#define BATTLE_OPPONENT_TELEPORTED 0xA - #define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00))) #define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08))) diff --git a/src/battle_message.c b/src/battle_message.c new file mode 100644 index 000000000..d4b8f86c6 --- /dev/null +++ b/src/battle_message.c @@ -0,0 +1,1064 @@ +#include "global.h" +#include "battle_message.h" +#include "battle.h" +#include "item.h" +#include "items.h" +#include "pokemon.h" +#include "data2.h" +#include "text.h" +#include "string_util.h" +#include "link.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "flags.h" + +#define BATTLESTRING_TO_SUB 12 +#define BATTLESTRINGS_NO 351 +#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB + +extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO]; + +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gActiveBank; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gStringBank; +extern u8 gEffectBank; +extern u8 gAbilitiesPerBank[4]; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattleTypeFlags; +extern u16 gTrainerBattleOpponent; +extern u8 gDisplayedStringBattle[]; +extern u8 gStringVar1[]; +extern u8 gStringVar2[]; +extern u8 gStringVar3[]; +extern u16 gBattlePartyID[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gBattleBufferA[4][0x200]; + +extern const u8 gUnknown_084005DB[]; +extern const u8 gUnknown_084005C7[]; +extern const u8 gUnknown_084005AA[]; +extern const u8 gUnknown_08400568[]; +extern const u8 gUnknown_08400590[]; +extern const u8 gUnknown_0840057B[]; +extern const u8 gUnknown_08400555[]; +extern const u8 gUnknown_084006F1[]; +extern const u8 gUnknown_084006A4[]; +extern const u8 gUnknown_0840069C[]; +extern const u8 gUnknown_0840065C[]; +extern const u8 gUnknown_08400645[]; +extern const u8 gUnknown_08400608[]; +extern const u8 gUnknown_08400635[]; +extern const u8 gUnknown_084005F5[]; +extern const u8 gUnknown_08400709[]; +extern const u8 gUnknown_08400727[]; +extern const u8 gUnknown_08400736[]; +extern const u8 gUnknown_08400749[]; +extern const u8 gUnknown_08400781[]; +extern const u8 gUnknown_08400771[]; +extern const u8 gUnknown_0840075E[]; +extern const u8 gUnknown_084006B3[]; +extern const u8 gUnknown_084006BB[]; +extern const u8 gUnknown_084006C6[]; +extern const u8 gUnknown_084006D5[]; +extern const u8 gUnknown_0840068C[]; +extern const u8 gUnknown_0840067C[]; +extern const u8 gUnknown_08400622[]; +extern const u8 gUnknown_084007BD[]; +extern const u8 gUnknown_083FFEFC[]; +extern const u8 gUnknown_083FFFF7[]; +extern const u8 gUnknown_083FFFEA[]; +extern const u8 gUnknown_083FFF6A[]; +extern const u8 gUnknown_083FFF99[]; +extern const u8 gUnknown_083FFFCB[]; +extern const u8 gUnknown_083FFF56[]; +extern const u8 gUnknown_083FFF81[]; +extern const u8 gUnknown_083FFFB3[]; +extern const u8 gUnknown_08400A78[]; +extern const u8 gUnknown_08400A85[]; +extern const u8 gUnknown_08400797[]; +extern const u8 gUnknown_08400791[]; +extern const u8 gUnknown_084007B7[]; +extern const u8 gUnknown_084007B2[]; +extern const u8 gUnknown_0840079C[]; +extern const u8 gUnknown_084007A1[]; +extern const u8 gUnknown_084007A7[]; +extern const u8 gUnknown_084007AC[]; +extern const u8 gUnknown_084009ED[]; +extern const u8 gUnknown_084009F7[]; +extern const u8 gUnknown_084007C8[]; +extern const u8 gUnknown_084007CA[]; +extern const u8 gUnknown_084007CC[]; +extern const u8 gUnknown_084007CE[]; +extern const u8 gUnknown_084007D0[]; +extern const u8 gUnknown_08400E5E[]; +extern const u8 gUnknown_08400E62[]; + +extern const u16 gUnknown_084016BC[]; // a table of moves + +extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings +extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings +extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings + +struct StatusFlagString +{ + u8* flag; + u8* ptr; +}; + +extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text +extern const u8 gUnknown_084017A8[8]; // empty flags + +struct StringInfo +{ + u16 currentMove; + u16 lastMove; + u16 lastItem; + u8 lastAbility; + u8 scrActive; + u8 unk1605E; + u8 hpScale; + u8 StringBank; + u8 moveType; + u8 abilities[4]; + u8 textBuffs[3][0x10]; +}; + +extern struct StringInfo* gSelectedOrderFromParty; +#define gStringInfo gSelectedOrderFromParty + +static void sub_8121D1C(u8* textBuff); +static void sub_8121D74(u8* textBuff); +static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst); + +u8 GetBankSide(u8 bank); +s32 sub_803FC34(u16); +void get_trainer_name(u8* dst); +u8 get_trainer_class_name_index(void); +u8 sub_8135FD8(void); +u8 GetMultiplayerId(void); +u8 GetBankByPlayerAI(u8 ID); +u8 GetBankSide(u8 bank); +u8 GetBankIdentity(u8 bank); + +void BufferStringBattle(u16 stringID) +{ + int i; + const u8* stringPtr = NULL; + + gStringInfo = (struct StringInfo*)(&gBattleBufferA[gActiveBank][4]); + gLastUsedItem = gStringInfo->lastItem; + gLastUsedAbility = gStringInfo->lastAbility; + BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive; + BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E; + BATTLE_STRUCT->hpScale = gStringInfo->hpScale; + gStringBank = gStringInfo->StringBank; + BATTLE_STRUCT->stringMoveType = gStringInfo->moveType; + for (i = 0; i < 4; i++) + { + gAbilitiesPerBank[i] = gStringInfo->abilities[i]; + } + for (i = 0; i < 0x10; i++) + { + gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i]; + gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i]; + gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i]; + } + switch (stringID) + { + case 0: // first battle msg + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084005DB; + else + stringPtr = gUnknown_084005C7; + } + else + stringPtr = gUnknown_084005AA; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = gUnknown_08400568; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles + stringPtr = gUnknown_08400590; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + stringPtr = gUnknown_0840057B; + else + stringPtr = gUnknown_08400555; + } + break; + case 1: // poke first send-out + if (GetBankSide(gActiveBank) == 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_084006F1; + else + stringPtr = gUnknown_084006A4; + } + else + stringPtr = gUnknown_0840069C; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840065C; + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400645; + else + stringPtr = gUnknown_08400608; + } + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = gUnknown_08400635; + else + stringPtr = gUnknown_084005F5; + } + break; + case 2: // sending poke to ball msg + if (GetBankSide(gActiveBank) == 0) + { + if (BATTLE_STRUCT->hpScale == 0) + stringPtr = gUnknown_08400709; + else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_08400727; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_08400736; + else + stringPtr = gUnknown_08400749; + } + else + { + if (gTrainerBattleOpponent == 0x800) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_08400781; + else + stringPtr = gUnknown_08400771; + } + else + stringPtr = gUnknown_0840075E; + } + break; + case 3: // switch-in msg + if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0) + { + if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = gUnknown_084006B3; + else if (BATTLE_STRUCT->hpScale == 1) + stringPtr = gUnknown_084006BB; + else if (BATTLE_STRUCT->hpScale == 2) + stringPtr = gUnknown_084006C6; + else + stringPtr = gUnknown_084006D5; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_0840068C; + else + stringPtr = gUnknown_0840067C; + } + else + stringPtr = gUnknown_08400622; + } + break; + case 4: // pokemon used a move msg + sub_8121D1C(gBattleTextBuff1); + if (gStringInfo->currentMove > 0x162) + StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]); + else + StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]); + sub_8121D74(gBattleTextBuff2); + stringPtr = gUnknown_084007BD; + break; + case 5: // battle end + if (gBattleTextBuff1[0] & 0x80) + { + gBattleTextBuff1[0] &= ~(0x80); + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + stringPtr = gUnknown_083FFEFC; + else + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = gUnknown_083FFFF7; + else + stringPtr = gUnknown_083FFFEA; + } + } + else + { + if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3) + gBattleTextBuff1[0] ^= 3; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF6A; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF99; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFCB; + break; + } + } + else + { + switch (gBattleTextBuff1[0]) + { + case BATTLE_WON: + stringPtr = gUnknown_083FFF56; + break; + case BATTLE_LOST: + stringPtr = gUnknown_083FFF81; + break; + case BATTLE_DREW: + stringPtr = gUnknown_083FFFB3; + break; + } + } + } + break; + default: // load a string from the table + if (stringID >= BATTLESTRINGS_MAX) + { + gDisplayedStringBattle[0] = EOS; + return; + } + else + stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB]; + break; + } + StrCpyDecodeToDisplayedStringBattle(stringPtr); +} + +u32 StrCpyDecodeToDisplayedStringBattle(const u8* src) +{ + StrCpyDecodeBattle(src, gDisplayedStringBattle); +} + +static const u8* AppendStatusString(u8* src) +{ + u32 i; + u8 status[8]; + u32 flag1, flag2; + u8* statusPtr; + + memcpy(status, gUnknown_084017A8, 8); + + statusPtr = status; + for (i = 0; i < sizeof(struct StatusFlagString); i++) + { + if (*src == EOS) + break; + *statusPtr = *src; + src++; + statusPtr++; + } + flag1 = *(u32*)(&status[0]); + flag2 = *(u32*)(&status[4]); + for (i = 0; i < 7; i++) + { + if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4])) + return gUnknown_081FA6D4[i].ptr; + } + return NULL; +} + +u32 StrCpyDecodeBattle(const u8* src, u8* dst) +{ + u32 dstID = 0; // if they used dstID, why not use srcID as well? + const u8* toCpy = NULL; + u8 text[12]; + u8 multiplayerID = GetMultiplayerId(); + + while (*src != EOS) + { + if (*src == 0xFD) + { + src++; + switch (*src) + { + case 0: + if (gBattleTextBuff1[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1); + toCpy = gStringVar1; + } + else + { + toCpy = AppendStatusString(gBattleTextBuff1); + if (toCpy == 0) + toCpy = gBattleTextBuff1; + } + break; + case 1: + if (gBattleTextBuff2[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2); + toCpy = gStringVar2; + } + else + toCpy = gBattleTextBuff2; + break; + case 42: + if (gBattleTextBuff3[0] == 0xFD) + { + StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3); + toCpy = gStringVar3; + } + else + toCpy = gBattleTextBuff3; + break; + case 2: // first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 3: // first enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 4: // second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 5: // second enemy poke name + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 6: // link first player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 7: // link first opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 8: // link second player poke name + GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 9: // link second opponent poke name + GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case 10: // attacker name with prefix, only bank 0/1 + if (GetBankSide(gBankAttacker) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 11: // attacker partner name, only bank 0/1 + if (GetBankSide(gBankAttacker) == 0) + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + else + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 12: // attacker name with prefix + if (GetBankSide(gBankAttacker) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[gBankAttacker]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 13: // target name with prefix + if (GetBankSide(gBankTarget) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[gBankTarget]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 14: // effect bank name with prefix + if (GetBankSide(gEffectBank) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[gEffectBank]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[gEffectBank]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 15: // active bank name with prefix + if (GetBankSide(gActiveBank) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 16: // scripting active bank name with prefix + if (GetBankSide(BATTLE_STRUCT->scriptingActive) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattlePartyID[BATTLE_STRUCT->scriptingActive]], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[gBattlePartyID[BATTLE_STRUCT->scriptingActive]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 17: // current move name + if (gStringInfo->currentMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->currentMove]; + break; + case 18: // last used move name + if (gStringInfo->lastMove > 0x162) + toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + else + toCpy = gMoveNames[gStringInfo->lastMove]; + break; + case 19: // last used item + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(text, gEnigmaBerries[gStringBank].name); + StringAppend(text, gUnknown_08400A85); + toCpy = text; + } + else + toCpy = gUnknown_08400A78; + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + break; + case 20: // last used ability + toCpy = gAbilityNames[gLastUsedAbility]; + break; + case 21: // attacker ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]]; + break; + case 22: // target ability + toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]]; + break; + case 23: // scripting active ability + toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]]; + break; + case 24: // effect bank ability + toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; + break; + case 25: // trainer class name + if (gTrainerBattleOpponent == 0x400) + toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = gTrainerClassNames[get_trainer_class_name_index()]; + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = gTrainerClassNames[sub_8135FD8()]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass]; + break; + case 26: // trainer name + if (gTrainerBattleOpponent == 0x400) + { + memset(text, 0xFF, 8); + memcpy(text, &ewram[0x17002], 7); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + get_trainer_name(text); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + { + sub_8135FF4(text); + toCpy = text; + } + else + toCpy = gTrainers[gTrainerBattleOpponent].trainerName; + break; + case 27: // link player name? + toCpy = gLinkPlayers[multiplayerID].name; + break; + case 28: // link partner name? + toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 29: // link opponent 1 name? + toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 30: // link opponent 2 name? + toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; + break; + case 31: // link scripting active name + toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name; + break; + case 32: // player name + toCpy = gSaveBlock2.playerName; + break; + case 33: // ? + toCpy = sub_8082830(); + break; + case 34: // ? + if (GetBankSide(BATTLE_STRUCT->scriptingActive) != 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + toCpy = gUnknown_08400797; + else + toCpy = gUnknown_08400791; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[BATTLE_STRUCT->unk1605E], MON_DATA_NICKNAME, text); + } + else + GetMonData(&gPlayerParty[BATTLE_STRUCT->unk1605E], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case 35: // lanette pc + if (FlagGet(SYS_PC_LANETTE)) + toCpy = gUnknown_084009F7; + else + toCpy = gUnknown_084009ED; + break; + case 38: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 39: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007AC; + else + toCpy = gUnknown_084007A7; + break; + case 36: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 37: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007A1; + else + toCpy = gUnknown_0840079C; + break; + case 40: + if (GetBankSide(gBankAttacker) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + case 41: + if (GetBankSide(gBankTarget) == 0) + toCpy = gUnknown_084007B7; + else + toCpy = gUnknown_084007B2; + break; + } + //if (toCpy != NULL) really GF, why did you forgot about this + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + if (*src == 33) + { + dst[dstID] = 0xFC; + dstID++; + dst[dstID] = 9; + dstID++; + } + } + else + { + dst[dstID] = *src; + dstID++; + } + src++; + } + dst[dstID] = *src; + dstID++; + return dstID; +} + +#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) + +static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) +{ + u32 srcID = 1; + u32 value = 0; + u8 text[12]; + + *dst = EOS; + while (src[srcID] != EOS) + { + switch (src[srcID]) + { + case 0: // battlescript ptr + { + u16 BS_ID = ByteRead16(&src[srcID + 1]); + StringAppend(dst, gBattleStringsTable[BS_ID - BATTLESTRING_TO_SUB]); + srcID += 3; + } + break; + case 1: // int to string + switch (src[srcID + 1]) + { + case 1: + value = src[srcID + 3]; + break; + case 2: + value = ByteRead16(&src[srcID + 3]); + break; + case 4: + value = ByteRead32(&src[srcID + 3]); + break; + } + ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]); + srcID += src[srcID + 1] + 3; + break; + case 2: // move name + StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]); + srcID += 3; + break; + case 3: // type name + StringAppend(dst, gTypeNames[src[srcID + 1]]); + srcID += 2; + break; + case 4: // poke nick with prefix + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + StringGetEnd10(text); + StringAppend(dst, text); + srcID += 3; + break; + case 5: // stats + StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]); + srcID += 2; + break; + case 6: // species name + GetSpeciesName(dst, ByteRead16(&src[srcID + 1])); + srcID += 3; + break; + case 7: // poke nick without prefix + if (GetBankSide(src[srcID + 1]) == 0) + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + else + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + srcID += 3; + break; + case 8: // flavour table + StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]); + srcID += 2; + break; + case 9: // ability names + StringAppend(dst, gAbilityNames[src[srcID + 1]]); + srcID += 2; + break; + case 10: // item name + { + u16 item = ByteRead16(&src[srcID + 1]); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (item == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + { + StringCopy(dst, gEnigmaBerries[gStringBank].name); + StringAppend(dst, gUnknown_08400A85); + } + else + StringAppend(dst, gUnknown_08400A78); + } + else + CopyItemName(item, dst); + } + else + CopyItemName(item, dst); + srcID += 3; + } + break; + } + } +} + +static void sub_8121D1C(u8* textBuff) +{ + s32 counter = 0; + u32 i = 0; + + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + + if (counter >= 0) + { + if (counter <= 2) + StringCopy(textBuff, gUnknown_08400E5E); // is + else if (counter <= 4) + StringCopy(textBuff, gUnknown_08400E62); // 's + } +} + +#ifdef NONMATCHING + +static void sub_8121D74(u8* dst) +{ + s32 counter = 0; + s32 i; + + while (*dst != EOS) + dst++; + + i = 0; + while (counter != 4) + { + if (gUnknown_084016BC[i] == 0) + counter++; + if (gUnknown_084016BC[i++] == gStringInfo->currentMove) + break; + } + switch (counter) + { + case 0: + StringCopy(dst, gUnknown_084007C8); + break; + case 1: + StringCopy(dst, gUnknown_084007CA); + break; + case 2: + StringCopy(dst, gUnknown_084007CC); + break; + case 3: + StringCopy(dst, gUnknown_084007CE); + break; + case 4: + StringCopy(dst, gUnknown_084007D0); + break; + } +} + +#else +__attribute__((naked)) +static void sub_8121D74(u8* dst) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + adds r3, r0, 0\n\ + movs r4, 0\n\ + b _08121D7E\n\ +_08121D7C:\n\ + adds r3, 0x1\n\ +_08121D7E:\n\ + ldrb r0, [r3]\n\ + cmp r0, 0xFF\n\ + bne _08121D7C\n\ + ldr r1, _08121DB4 @ =gUnknown_084016BC\n\ + ldr r5, _08121DB8 @ =gSelectedOrderFromParty\n\ + movs r0, 0\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ +_08121D8E:\n\ + cmp r4, 0x4\n\ + beq _08121DA8\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + bne _08121D9A\n\ + adds r4, 0x1\n\ +_08121D9A:\n\ + ldr r0, [r5]\n\ + adds r2, 0x2\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08121D8E\n\ + cmp r4, 0x4\n\ + bhi _08121E04\n\ +_08121DA8:\n\ + lsls r0, r4, 2\n\ + ldr r1, _08121DBC @ =_08121DC0\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08121DB4: .4byte gUnknown_084016BC\n\ +_08121DB8: .4byte gSelectedOrderFromParty\n\ +_08121DBC: .4byte _08121DC0\n\ + .align 2, 0\n\ +_08121DC0:\n\ + .4byte _08121DD4\n\ + .4byte _08121DDC\n\ + .4byte _08121DE4\n\ + .4byte _08121DEC\n\ + .4byte _08121DFC\n\ +_08121DD4:\n\ + ldr r1, _08121DD8 @ =gUnknown_084007C8\n\ + b _08121DEE\n\ + .align 2, 0\n\ +_08121DD8: .4byte gUnknown_084007C8\n\ +_08121DDC:\n\ + ldr r1, _08121DE0 @ =gUnknown_084007CA\n\ + b _08121DEE\n\ + .align 2, 0\n\ +_08121DE0: .4byte gUnknown_084007CA\n\ +_08121DE4:\n\ + ldr r1, _08121DE8 @ =gUnknown_084007CC\n\ + b _08121DEE\n\ + .align 2, 0\n\ +_08121DE8: .4byte gUnknown_084007CC\n\ +_08121DEC:\n\ + ldr r1, _08121DF8 @ =gUnknown_084007CE\n\ +_08121DEE:\n\ + adds r0, r3, 0\n\ + bl StringCopy\n\ + b _08121E04\n\ + .align 2, 0\n\ +_08121DF8: .4byte gUnknown_084007CE\n\ +_08121DFC:\n\ + ldr r1, _08121E0C @ =gUnknown_084007D0\n\ + adds r0, r3, 0\n\ + bl StringCopy\n\ +_08121E04:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08121E0C: .4byte gUnknown_084007D0\n\ + .syntax divided"); +} + +#endif // NONMATCHING -- cgit v1.2.3 From d413187fa82e19ceea5ff1b2437891329781a814 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 Aug 2017 11:07:23 +0200 Subject: start decompiling egg hatch --- asm/egg_hatch.s | 1319 -------------------------------------------------- include/decompress.h | 2 +- include/pokemon.h | 2 +- include/sprite.h | 16 +- src/egg_hatch.c | 571 +++++++++++++++++++++- 5 files changed, 580 insertions(+), 1330 deletions(-) diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 7365f4da6..51e688998 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -6,1326 +6,7 @@ .text - thumb_func_start AddHatchedMonToParty -AddHatchedMonToParty: @ 80429EC - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r0, _08042A9C @ =gPlayerParty - adds r5, r0 - ldr r1, _08042AA0 @ =gEnemyParty - adds r0, r5, 0 - bl CreatedHatchedMon - add r2, sp, 0xC - movs r6, 0 - strb r6, [r2] - adds r0, r5, 0 - movs r1, 0x2D - bl SetMonData - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - adds r1, r4, 0 - bl GetSpeciesName - adds r0, r5, 0 - movs r1, 0x2 - mov r2, sp - bl SetMonData - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetNationalPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetNationalPokedexFlag - ldr r1, _08042AA4 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNick - mov r2, sp - adds r2, 0xE - movs r0, 0x4 - strh r0, [r2] - adds r0, r5, 0 - movs r1, 0x26 - bl SetMonData - add r2, sp, 0x10 - strh r6, [r2] - adds r0, r5, 0 - movs r1, 0x24 - bl SetMonData - bl sav1_map_get_name - mov r2, sp - adds r2, 0x12 - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0x23 - bl SetMonData - adds r0, r5, 0 - bl MonRestorePP - adds r0, r5, 0 - bl CalculateMonStats - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042A9C: .4byte gPlayerParty -_08042AA0: .4byte gEnemyParty -_08042AA4: .4byte gStringVar1 - thumb_func_end AddHatchedMonToParty - - thumb_func_start ScriptHatchMon -ScriptHatchMon: @ 8042AA8 - push {lr} - ldr r0, _08042AB8 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl AddHatchedMonToParty - pop {r0} - bx r0 - .align 2, 0 -_08042AB8: .4byte gSpecialVar_0x8004 - thumb_func_end ScriptHatchMon - - thumb_func_start sub_8042ABC -sub_8042ABC: @ 8042ABC - push {r4-r6,lr} - sub sp, 0x20 - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r5, r0 - mov r1, sp - bl GetBoxMonNick - lsls r0, r4, 3 - subs r0, r4 - lsls r1, r0, 3 - adds r0, r5, r1 - adds r0, 0xC0 - ldrh r0, [r0] - cmp r0, 0 - beq _08042B40 - adds r0, r1, 0 - adds r0, 0xA0 - adds r5, r0 - adds r6, r5, 0 - adds r6, 0x2C - mov r0, sp - adds r1, r6, 0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _08042B08 - ldr r0, _08042B30 @ =gSaveBlock2 - adds r1, r5, 0 - adds r1, 0x24 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - beq _08042B40 -_08042B08: - ldr r0, _08042B34 @ =gStringVar1 - mov r1, sp - bl StringCopy - ldr r4, _08042B38 @ =gStringVar2 - adds r1, r5, 0 - adds r1, 0x24 - adds r0, r4, 0 - bl StringCopy - ldr r0, _08042B3C @ =gStringVar3 - adds r1, r6, 0 - bl StringCopy - adds r0, r4, 0 - bl SanitizeNameString - movs r0, 0x1 - b _08042B42 - .align 2, 0 -_08042B30: .4byte gSaveBlock2 -_08042B34: .4byte gStringVar1 -_08042B38: .4byte gStringVar2 -_08042B3C: .4byte gStringVar3 -_08042B40: - movs r0, 0 -_08042B42: - add sp, 0x20 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8042ABC - - thumb_func_start sub_8042B4C -sub_8042B4C: @ 8042B4C - push {lr} - ldr r0, _08042B60 @ =gSaveBlock1 + 0x2F9C - ldr r1, _08042B64 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8042ABC - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08042B60: .4byte gSaveBlock1 + 0x2F9C -_08042B64: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8042B4C - - thumb_func_start EggHatchCreateMonSprite -EggHatchCreateMonSprite: @ 8042B68 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r1, r2, 24 - adds r2, r1, 0 - movs r5, 0 - mov r9, r5 - movs r7, 0 - cmp r3, 0 - bne _08042B96 - movs r0, 0x64 - muls r1, r0 - ldr r0, _08042BB0 @ =gPlayerParty - adds r7, r1, r0 - movs r5, 0x1 -_08042B96: - cmp r3, 0x1 - bne _08042BA6 - movs r0, 0x64 - adds r1, r2, 0 - muls r1, r0 - ldr r0, _08042BB0 @ =gPlayerParty - adds r7, r1, r0 - movs r5, 0x3 -_08042BA6: - cmp r6, 0 - beq _08042BB4 - cmp r6, 0x1 - beq _08042C14 - b _08042C50 - .align 2, 0 -_08042BB0: .4byte gPlayerParty -_08042BB4: - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r7, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - lsls r0, r5, 3 - ldr r1, _08042C04 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08042C08 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - ldr r3, _08042C0C @ =0x02000000 - ldr r6, _08042C10 @ =gUnknown_081FAF4C - lsls r4, 1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r6 - ldr r4, [r4] - str r4, [sp] - str r5, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic - adds r0, r7, 0 - bl sub_8040990 - bl LoadCompressedObjectPalette - b _08042C50 - .align 2, 0 -_08042C04: .4byte gMonFrontPicTable -_08042C08: .4byte gMonFrontPicCoords -_08042C0C: .4byte 0x02000000 -_08042C10: .4byte gUnknown_081FAF4C -_08042C14: - adds r0, r7, 0 - bl sub_8040990 - ldrh r0, [r0, 0x4] - adds r1, r5, 0 - bl GetMonSpriteTemplate_803C56C - ldr r0, _08042C60 @ =gUnknown_02024E8C - movs r1, 0x78 - movs r2, 0x46 - movs r3, 0x6 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _08042C64 @ =gSprites - lsls r1, r0, 4 - add r1, r9 - lsls r1, 2 - adds r2, r1, r4 - adds r2, 0x3E - ldrb r0, [r2] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r2] - adds r4, 0x1C - adds r1, r4 - ldr r0, _08042C68 @ =SpriteCallbackDummy - str r0, [r1] -_08042C50: - mov r0, r9 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08042C60: .4byte gUnknown_02024E8C -_08042C64: .4byte gSprites -_08042C68: .4byte SpriteCallbackDummy - thumb_func_end EggHatchCreateMonSprite - - thumb_func_start VBlankCB_EggHatch -VBlankCB_EggHatch: @ 8042C6C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_EggHatch - - thumb_func_start EggHatch -EggHatch: @ 8042C80 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08042CA8 @ =Task_EggHatch - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08042CA8: .4byte Task_EggHatch - thumb_func_end EggHatch - thumb_func_start Task_EggHatch -Task_EggHatch: @ 8042CAC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08042CD8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08042CD0 - ldr r0, _08042CDC @ =CB2_EggHatch_0 - bl SetMainCallback2 - ldr r1, _08042CE0 @ =gFieldCallback - ldr r0, _08042CE4 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_08042CD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08042CD8: .4byte gPaletteFade -_08042CDC: .4byte CB2_EggHatch_0 -_08042CE0: .4byte gFieldCallback -_08042CE4: .4byte sub_8080990 - thumb_func_end Task_EggHatch - - thumb_func_start CB2_EggHatch_0 -CB2_EggHatch_0: @ 8042CE8 - push {r4-r7,lr} - ldr r0, _08042D04 @ =gMain - ldr r1, _08042D08 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08042CF8 - b _08042F6E -_08042CF8: - lsls r0, 2 - ldr r1, _08042D0C @ =_08042D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08042D04: .4byte gMain -_08042D08: .4byte 0x0000043c -_08042D0C: .4byte _08042D10 - .align 2, 0 -_08042D10: - .4byte _08042D34 - .4byte _08042D90 - .4byte _08042DC4 - .4byte _08042E20 - .4byte _08042E40 - .4byte _08042E74 - .4byte _08042E88 - .4byte _08042EB0 - .4byte _08042F40 -_08042D34: - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r1, _08042D74 @ =gUnknown_0300481C - ldr r0, _08042D78 @ =0x02018000 - str r0, [r1] - ldr r1, _08042D7C @ =gSpecialVar_0x8004 - ldrh r1, [r1] - strb r1, [r0, 0x4] - adds r0, 0x3A - strb r2, [r0] - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _08042D80 @ =VBlankCB_EggHatch - bl SetVBlankCallback - ldr r1, _08042D84 @ =gMain - ldr r2, _08042D88 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl GetCurrentMapMusic - ldr r1, _08042D8C @ =gSpecialVar_0x8005 - strh r0, [r1] - b _08042F6E - .align 2, 0 -_08042D74: .4byte gUnknown_0300481C -_08042D78: .4byte 0x02018000 -_08042D7C: .4byte gSpecialVar_0x8004 -_08042D80: .4byte VBlankCB_EggHatch -_08042D84: .4byte gMain -_08042D88: .4byte 0x0000043c -_08042D8C: .4byte gSpecialVar_0x8005 -_08042D90: - ldr r5, _08042DBC @ =gWindowConfig_81E6F84 - adds r0, r5, 0 - bl SetUpWindowConfig - ldr r4, _08042DC0 @ =gUnknown_0300481C - ldr r0, [r4] - adds r0, 0x8 - adds r1, r5, 0 - bl InitWindowFromConfig - movs r0, 0x14 - bl SetTextWindowBaseTileNum - ldr r1, [r4] - adds r1, 0x38 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x8 - bl LoadTextWindowGraphics - b _08042F04 - .align 2, 0 -_08042DBC: .4byte gWindowConfig_81E6F84 -_08042DC0: .4byte gUnknown_0300481C -_08042DC4: - ldr r0, _08042DFC @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _08042E00 @ =gUnknown_08D00524 - ldr r4, _08042E04 @ =0x02000000 - movs r2, 0x80 - lsls r2, 4 - adds r1, r4, 0 - bl CpuSet - ldr r1, _08042E08 @ =0x040000d4 - str r4, [r1] - ldr r0, _08042E0C @ =0x06002800 - str r0, [r1, 0x4] - ldr r0, _08042E10 @ =0x80000280 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _08042E14 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _08042E18 @ =gMain - ldr r2, _08042E1C @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042DFC: .4byte gUnknown_08D00000 -_08042E00: .4byte gUnknown_08D00524 -_08042E04: .4byte 0x02000000 -_08042E08: .4byte 0x040000d4 -_08042E0C: .4byte 0x06002800 -_08042E10: .4byte 0x80000280 -_08042E14: .4byte gUnknown_08D004E0 -_08042E18: .4byte gMain -_08042E1C: .4byte 0x0000043c -_08042E20: - ldr r0, _08042E34 @ =gUnknown_0820A3B0 - bl LoadSpriteSheet - ldr r0, _08042E38 @ =gUnknown_0820A3B8 - bl LoadSpriteSheet - ldr r0, _08042E3C @ =gUnknown_0820A3C0 - bl LoadSpritePalette - b _08042F04 - .align 2, 0 -_08042E34: .4byte gUnknown_0820A3B0 -_08042E38: .4byte gUnknown_0820A3B8 -_08042E3C: .4byte gUnknown_0820A3C0 -_08042E40: - ldr r0, _08042E64 @ =gSpriteTemplate_820A3C8 - movs r1, 0x78 - movs r2, 0x4B - movs r3, 0x5 - bl CreateSprite - ldr r2, _08042E68 @ =gUnknown_0300481C - ldr r1, [r2] - strb r0, [r1] - ldr r0, [r2] - ldrb r0, [r0, 0x4] - bl AddHatchedMonToParty - ldr r1, _08042E6C @ =gMain - ldr r2, _08042E70 @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042E64: .4byte gSpriteTemplate_820A3C8 -_08042E68: .4byte gUnknown_0300481C -_08042E6C: .4byte gMain -_08042E70: .4byte 0x0000043c -_08042E74: - ldr r0, _08042E84 @ =gUnknown_0300481C - ldr r0, [r0] - ldrb r2, [r0, 0x4] - movs r0, 0 - movs r1, 0 - bl EggHatchCreateMonSprite - b _08042F04 - .align 2, 0 -_08042E84: .4byte gUnknown_0300481C -_08042E88: - ldr r4, _08042EA4 @ =gUnknown_0300481C - ldr r0, [r4] - ldrb r2, [r0, 0x4] - movs r0, 0 - movs r1, 0x1 - bl EggHatchCreateMonSprite - ldr r1, [r4] - strb r0, [r1, 0x1] - ldr r1, _08042EA8 @ =gMain - ldr r2, _08042EAC @ =0x0000043c - adds r1, r2 - b _08042F0A - .align 2, 0 -_08042EA4: .4byte gUnknown_0300481C -_08042EA8: .4byte gMain -_08042EAC: .4byte 0x0000043c -_08042EB0: - ldr r0, _08042F14 @ =REG_BG2CNT - ldr r2, _08042F18 @ =0x00004c06 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _08042F1C @ =gUnknown_0820C9F8 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r3, _08042F20 @ =gUnknown_0820CA98 - ldr r4, _08042F24 @ =0x06004000 - movs r5, 0x98 - lsls r5, 5 - ldr r1, _08042F28 @ =0x040000d4 - ldr r6, _08042F2C @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08042ED6: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08042ED6 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _08042F30 @ =gUnknown_0820F798 - ldr r2, _08042F34 @ =0x06006000 - ldr r0, _08042F28 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08042F2C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] -_08042F04: - ldr r1, _08042F38 @ =gMain - ldr r0, _08042F3C @ =0x0000043c - adds r1, r0 -_08042F0A: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08042F6E - .align 2, 0 -_08042F14: .4byte REG_BG2CNT -_08042F18: .4byte 0x00004c06 -_08042F1C: .4byte gUnknown_0820C9F8 -_08042F20: .4byte gUnknown_0820CA98 -_08042F24: .4byte 0x06004000 -_08042F28: .4byte 0x040000d4 -_08042F2C: .4byte 0x80000800 -_08042F30: .4byte gUnknown_0820F798 -_08042F34: .4byte 0x06006000 -_08042F38: .4byte gMain -_08042F3C: .4byte 0x0000043c -_08042F40: - ldr r1, _08042F74 @ =REG_BG1CNT - ldr r2, _08042F78 @ =0x00000501 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08042F7C @ =REG_BG0HOFS - movs r4, 0 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r0, _08042F80 @ =CB2_EggHatch_1 - bl SetMainCallback2 - ldr r0, _08042F84 @ =gUnknown_0300481C - ldr r0, [r0] - strb r4, [r0, 0x2] -_08042F6E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08042F74: .4byte REG_BG1CNT -_08042F78: .4byte 0x00000501 -_08042F7C: .4byte REG_BG0HOFS -_08042F80: .4byte CB2_EggHatch_1 -_08042F84: .4byte gUnknown_0300481C - thumb_func_end CB2_EggHatch_0 - - thumb_func_start EggHatchSetMonNickname -EggHatchSetMonNickname: @ 8042F88 - push {lr} - ldr r0, _08042FA8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08042FAC @ =gPlayerParty - adds r0, r1 - ldr r2, _08042FB0 @ =gStringVar3 - movs r1, 0x2 - bl SetMonData - ldr r0, _08042FB4 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08042FA8: .4byte gSpecialVar_0x8004 -_08042FAC: .4byte gPlayerParty -_08042FB0: .4byte gStringVar3 -_08042FB4: .4byte c2_exit_to_overworld_2_switch - thumb_func_end EggHatchSetMonNickname - - thumb_func_start Task_EggHatchPlayBGM -Task_EggHatchPlayBGM: @ 8042FB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08043004 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08042FD4 - bl StopMapMusic -_08042FD4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08042FE4 - movs r0, 0xBC - lsls r0, 1 - bl PlayBGM -_08042FE4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x3C - ble _08042FF8 - ldr r0, _08043008 @ =0x00000179 - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08042FF8: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08043004: .4byte gTasks -_08043008: .4byte 0x00000179 - thumb_func_end Task_EggHatchPlayBGM - - thumb_func_start CB2_EggHatch_1 -CB2_EggHatch_1: @ 804300C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r1, _08043030 @ =gUnknown_0300481C - ldr r0, [r1] - ldrb r0, [r0, 0x2] - adds r5, r1, 0 - cmp r0, 0xB - bls _08043026 - b _080432BA -_08043026: - lsls r0, 2 - ldr r1, _08043034 @ =_08043038 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08043030: .4byte gUnknown_0300481C -_08043034: .4byte _08043038 - .align 2, 0 -_08043038: - .4byte _08043068 - .4byte _080430A0 - .4byte _080430C0 - .4byte _080430F8 - .4byte _08043124 - .4byte _08043164 - .4byte _08043172 - .4byte _08043180 - .4byte _080431B8 - .4byte _080431DA - .4byte _08043288 - .4byte _080432A8 -_08043068: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08043098 @ =gUnknown_0300481C - ldr r1, [r0] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r0, _0804309C @ =Task_EggHatchPlayBGM - movs r1, 0x5 - bl CreateTask - b _080432BA - .align 2, 0 -_08043098: .4byte gUnknown_0300481C -_0804309C: .4byte Task_EggHatchPlayBGM -_080430A0: - ldr r0, _080430BC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080430B2 - b _080432BA -_080430B2: - ldr r0, [r5] - strb r1, [r0, 0x3] - ldr r1, [r5] - b _0804329C - .align 2, 0 -_080430BC: .4byte gPaletteFade -_080430C0: - ldr r1, [r5] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _080430D2 - b _080432BA -_080430D2: - ldr r1, [r5] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r2, _080430F0 @ =gSprites - ldr r0, [r5] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080430F4 @ =SpriteCB_Egg_0 - str r1, [r0] - b _080432BA - .align 2, 0 -_080430F0: .4byte gSprites -_080430F4: .4byte SpriteCB_Egg_0 -_080430F8: - ldr r2, _0804311C @ =gSprites - ldr r3, [r5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08043120 @ =SpriteCallbackDummy - cmp r1, r0 - beq _08043112 - b _080432BA -_08043112: - ldrb r0, [r3, 0x2] - adds r0, 0x1 - strb r0, [r3, 0x2] - b _080432BA - .align 2, 0 -_0804311C: .4byte gSprites -_08043120: .4byte SpriteCallbackDummy -_08043124: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08043150 @ =gPlayerParty - adds r0, r1 - ldr r1, _08043154 @ =gStringVar1 - bl GetMonNick - ldr r4, _08043158 @ =gStringVar4 - ldr r1, _0804315C @ =gOtherText_HatchedFromEgg - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - bl EggHatchPrintMessage2 - ldr r0, _08043160 @ =0x00000173 - bl PlayFanfare - ldr r1, [r5] - b _0804329C - .align 2, 0 -_08043150: .4byte gPlayerParty -_08043154: .4byte gStringVar1 -_08043158: .4byte gStringVar4 -_0804315C: .4byte gOtherText_HatchedFromEgg -_08043160: .4byte 0x00000173 -_08043164: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _08043170 - b _080432BA -_08043170: - b _08043298 -_08043172: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _0804317E - b _080432BA -_0804317E: - b _08043298 -_08043180: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080431A8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080431AC @ =gStringVar1 - bl GetMonNick - ldr r4, _080431B0 @ =gStringVar4 - ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - bl EggHatchPrintMessage1 - ldr r1, [r5] - b _0804329C - .align 2, 0 -_080431A8: .4byte gPlayerParty -_080431AC: .4byte gStringVar1 -_080431B0: .4byte gStringVar4 -_080431B4: .4byte gOtherText_NickHatchPrompt -_080431B8: - bl EggHatchUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _080432BA - movs r0, 0x16 - movs r1, 0x8 - movs r2, 0x1B - movs r3, 0xD - bl MenuDrawTextWindow - movs r0, 0x16 - movs r1, 0x8 - movs r2, 0x4 - bl InitYesNoMenu - b _08043298 -_080431DA: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - movs r1, 0x2 - negs r1, r1 - cmp r0, r1 - beq _080432BA - lsls r0, r2, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08043298 - cmp r1, 0x1 - beq _08043298 - ldr r0, _08043278 @ =gUnknown_0300481C - mov r9, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r6, _0804327C @ =gPlayerParty - adds r0, r6 - ldr r1, _08043280 @ =gStringVar3 - mov r10, r1 - bl GetMonNick - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r2, r9 - ldr r0, [r2] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _08043284 @ =EggHatchSetMonNickname - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - b _080432BA - .align 2, 0 -_08043278: .4byte gUnknown_0300481C -_0804327C: .4byte gPlayerParty -_08043280: .4byte gStringVar3 -_08043284: .4byte EggHatchSetMonNickname -_08043288: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08043298: - ldr r0, _080432A4 @ =gUnknown_0300481C - ldr r1, [r0] -_0804329C: - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - b _080432BA - .align 2, 0 -_080432A4: .4byte gUnknown_0300481C -_080432A8: - ldr r0, _080432DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080432BA - ldr r0, _080432E0 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 -_080432BA: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080432DC: .4byte gPaletteFade -_080432E0: .4byte c2_exit_to_overworld_2_switch - thumb_func_end CB2_EggHatch_1 - - thumb_func_start SpriteCB_Egg_0 -SpriteCB_Egg_0: @ 80432E4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08043304 - ldr r0, _08043300 @ =SpriteCB_Egg_1 - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - b _08043334 - .align 2, 0 -_08043300: .4byte SpriteCB_Egg_1 -_08043304: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08043334 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - bl CreateRandomEggShardSprite -_08043334: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_0 - - thumb_func_start SpriteCB_Egg_1 -SpriteCB_Egg_1: @ 804333C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _08043398 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0804336C - ldr r0, _08043368 @ =SpriteCB_Egg_2 - str r0, [r4, 0x1C] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x32] - b _08043398 - .align 2, 0 -_08043368: .4byte SpriteCB_Egg_2 -_0804336C: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08043398 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_08043398: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_1 - - thumb_func_start SpriteCB_Egg_2 -SpriteCB_Egg_2: @ 80433A0 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _0804345A - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x26 - ble _08043418 - ldr r0, _08043404 @ =SpriteCB_Egg_3 - str r0, [r4, 0x1C] - strh r6, [r4, 0x2E] - ldr r5, _08043408 @ =gUnknown_0300481C - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804340C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - ldr r4, _08043410 @ =gSprites - ldr r3, [r5] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r6, [r1, 0x24] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _08043414 @ =gMonFrontPicCoords - lsrs r0, 14 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - b _0804345A - .align 2, 0 -_08043404: .4byte SpriteCB_Egg_3 -_08043408: .4byte gUnknown_0300481C -_0804340C: .4byte gPlayerParty -_08043410: .4byte gSprites -_08043414: .4byte gMonFrontPicCoords -_08043418: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _0804344C - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - bl CreateRandomEggShardSprite - bl CreateRandomEggShardSprite -_0804344C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1E - bne _0804345A - movs r0, 0x17 - bl PlaySE -_0804345A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_2 - - thumb_func_start SpriteCB_Egg_3 -SpriteCB_Egg_3: @ 8043460 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _0804347A - ldr r0, _08043480 @ =SpriteCB_Egg_4 - str r0, [r1, 0x1C] - movs r0, 0 - strh r0, [r1, 0x2E] -_0804347A: - pop {r0} - bx r0 - .align 2, 0 -_08043480: .4byte SpriteCB_Egg_4 - thumb_func_end SpriteCB_Egg_3 - - thumb_func_start SpriteCB_Egg_4 -SpriteCB_Egg_4: @ 8043484 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080434A4 - movs r1, 0x1 - negs r1, r1 - ldr r0, _080434F8 @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080434A4: - ldrh r0, [r5, 0x2E] - cmp r0, 0x3 - bhi _080434C0 - movs r4, 0 -_080434AC: - bl CreateRandomEggShardSprite - lsls r0, r4, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080434AC -_080434C0: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - ldr r0, _080434FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080434EE - movs r0, 0x71 - bl PlaySE - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08043500 @ =SpriteCB_Egg_5 - str r0, [r5, 0x1C] - strh r4, [r5, 0x2E] -_080434EE: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080434F8: .4byte 0x0000ffff -_080434FC: .4byte gPaletteFade -_08043500: .4byte SpriteCB_Egg_5 - thumb_func_end SpriteCB_Egg_4 thumb_func_start SpriteCB_Egg_5 SpriteCB_Egg_5: @ 8043504 diff --git a/include/decompress.h b/include/decompress.h index 07d69301f..84c1f29c0 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -10,7 +10,7 @@ void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f); -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g); +void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid); void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h); void Unused_LZDecompressWramIndirect(const void **src, void *dest); diff --git a/include/pokemon.h b/include/pokemon.h index 21173d503..2cc8e9ac4 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -542,7 +542,7 @@ union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u32 GetMonData(); u32 GetBoxMonData(); -void SetMonData(struct Pokemon *mon, s32 field, const u8 *data); +void SetMonData(struct Pokemon *mon, s32 field, const void *data); void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); diff --git a/include/sprite.h b/include/sprite.h index 733231eb5..5682a7c1d 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -204,14 +204,14 @@ struct Sprite /*0x3A*/ s16 data6; /*0x3C*/ s16 data7; - /*0x3E*/ u16 inUse:1; - u16 coordOffsetEnabled:1; - u16 invisible:1; - u16 flags_3:1; - u16 flags_4:1; - u16 flags_5:1; - u16 flags_6:1; - u16 flags_7:1; + /*0x3E*/ u16 inUse:1; //1 + u16 coordOffsetEnabled:1; //2 + u16 invisible:1; //4 + u16 flags_3:1; //8 + u16 flags_4:1; //0x10 + u16 flags_5:1; //0x20 + u16 flags_6:1; //0x40 + u16 flags_7:1; //0x80 /*0x3F*/ u16 hFlip:1; u16 vFlip:1; u16 animBeginning:1; diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 32fbe1547..70d206a06 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -1,7 +1,38 @@ #include "global.h" #include "pokemon.h" +#include "items.h" +#include "decompress.h" +#include "data2.h" +#include "task.h" +#include "script.h" +#include "palette.h" +#include "rom4.h" +#include "main.h" +#include "event_data.h" +#include "sound.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings2.h" +#include "menu.h" +#include "naming_screen.h" +#include "trig.h" -void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { +extern u8 gStringVar1[]; +extern u8 ewram[]; +extern struct SpriteTemplate gUnknown_02024E8C; + +bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID); +u8* GetMonNick(struct Pokemon* mon, u8* dst); +u8 sav1_map_get_name(void); +const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address +void sub_8080990(void); + +void Task_EggHatch(u8 taskID); +void CB2_EggHatch_0(void); + +void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ u16 species; u32 personality, pokerus; u8 i, friendship, language, gameMet, markings; @@ -50,3 +81,541 @@ void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { *egg = *temp; } + +void AddHatchedMonToParty(u8 id) +{ + u8 isEgg; + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + isEgg = 0; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetNationalPokedexFlag(pokeNum, 2); + GetNationalPokedexFlag(pokeNum, 3); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); + + mapNameID = sav1_map_get_name(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +__attribute__((naked)) +bool8 sub_8042ABC(void* a, u8 b) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x20\n\ + adds r5, r0, 0\n\ + lsls r4, r1, 24\n\ + lsrs r4, 24\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 4\n\ + adds r0, r5, r0\n\ + mov r1, sp\n\ + bl GetBoxMonNick\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08042B40\n\ + adds r0, r1, 0\n\ + adds r0, 0xA0\n\ + adds r5, r0\n\ + adds r6, r5, 0\n\ + adds r6, 0x2C\n\ + mov r0, sp\n\ + adds r1, r6, 0\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + bne _08042B08\n\ + ldr r0, _08042B30 @ =gSaveBlock2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + bl StringCompareWithoutExtCtrlCodes\n\ + cmp r0, 0\n\ + beq _08042B40\n\ +_08042B08:\n\ + ldr r0, _08042B34 @ =gStringVar1\n\ + mov r1, sp\n\ + bl StringCopy\n\ + ldr r4, _08042B38 @ =gStringVar2\n\ + adds r1, r5, 0\n\ + adds r1, 0x24\n\ + adds r0, r4, 0\n\ + bl StringCopy\n\ + ldr r0, _08042B3C @ =gStringVar3\n\ + adds r1, r6, 0\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + bl SanitizeNameString\n\ + movs r0, 0x1\n\ + b _08042B42\n\ + .align 2, 0\n\ +_08042B30: .4byte gSaveBlock2\n\ +_08042B34: .4byte gStringVar1\n\ +_08042B38: .4byte gStringVar2\n\ +_08042B3C: .4byte gStringVar3\n\ +_08042B40:\n\ + movs r0, 0\n\ +_08042B42:\n\ + add sp, 0x20\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} + +bool8 sub_8042B4C(void) +{ + return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} + +u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) +{ + u8 r5 = 0; + u8 spriteID = 0; + struct Pokemon* mon = NULL; + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r5 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r5 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid); + LoadCompressedObjectPalette(sub_8040990(mon)); + } + break; + case 1: + GetMonSpriteTemplate_803C56C(sub_8040990(mon)->tag, r5); + spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6); + gSprites[spriteID].invisible = 1; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); +} + +void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = sub_8080990; + DestroyTask(taskID); + } +} + +void CB2_EggHatch_1(void); + +struct Struct_2018000 +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 field_2; + u8 field_3; + u8 eggPartyID; + u8 field_5; + u8 field_6; + u8 field_7; + struct Window window; + u8 field_38; + u8 field_39; + u8 field_3A; +}; + +extern struct Struct_2018000* gUnknown_0300481C; +extern const u32 gUnknown_08D00000[]; +extern const u32 gUnknown_08D00524[]; +extern const u32 gUnknown_0820CA98[]; +extern const u32 gUnknown_0820F798[]; +extern const u16 gUnknown_08D004E0[]; //palette + +extern const u16 gUnknown_0820C9F8[]; //palette + +extern const struct SpriteSheet gUnknown_0820A3B0; +extern const struct SpriteSheet gUnknown_0820A3B8; +extern const struct SpritePalette gUnknown_0820A3C0; + +extern const struct SpriteTemplate gSpriteTemplate_820A3C8; + +void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + REG_DISPCNT = 0; + gUnknown_0300481C = (struct Struct_2018000*)(&ewram[0x18000]); + gUnknown_0300481C->eggPartyID = gSpecialVar_0x8004; + gUnknown_0300481C->field_3A = 0; + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_EggHatch); + gMain.state++; + gSpecialVar_0x8005 = GetCurrentMapMusic(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6F84); + InitWindowFromConfig(&gUnknown_0300481C->window, &gWindowConfig_81E6F84); + gUnknown_0300481C->field_38 = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gUnknown_0300481C->window); + gMain.state++; + break; + case 2: + LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM)); + CpuSet(&gUnknown_08D00524, &ewram[0], 0x800); + DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500); + LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&gUnknown_0820A3B0); + LoadSpriteSheet(&gUnknown_0820A3B8); + LoadSpritePalette(&gUnknown_0820A3C0); + gMain.state++; + break; + case 4: + gUnknown_0300481C->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + AddHatchedMonToParty(gUnknown_0300481C->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, gUnknown_0300481C->eggPartyID); + gMain.state++; + break; + case 6: + gUnknown_0300481C->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gUnknown_0300481C->eggPartyID); + gMain.state++; + break; + case 7: + { + u32 offsetRead, offsetWrite; + u32 offsetRead2, offsetWrite2; + u32 size; + + REG_BG2CNT = 0x4C06; + LoadPalette(&gUnknown_0820C9F8, 0x10, 0xA0); + + offsetRead = (u32)(&gUnknown_0820CA98); + offsetWrite = (VRAM + 0x4000); + size = 0x1300; + while (TRUE) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); + break; + } + } + + offsetRead2 = (u32)(&gUnknown_0820F798); + offsetWrite2 = (u32)(VRAM + 0x6000); + DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000); + gMain.state++; + } + break; + case 8: + REG_BG1CNT = 0x501; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + + SetMainCallback2(CB2_EggHatch_1); + gUnknown_0300481C->field_2 = 0; + break; + } +} + +void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + StopMapMusic(); + if (gTasks[taskID].data[0] == 1) + PlayBGM(376); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(377); + DestroyTask(taskID); + //return; task is destroyed, yet you increment the value? + } + gTasks[taskID].data[0]++; +} + +void SpriteCB_Egg_0(struct Sprite* sprite); +void SpriteCB_Egg_1(struct Sprite* sprite); +void SpriteCB_Egg_2(struct Sprite* sprite); +void SpriteCB_Egg_3(struct Sprite* sprite); +void SpriteCB_Egg_4(struct Sprite* sprite); +void SpriteCB_Egg_5(struct Sprite* sprite); + +void EggHatchPrintMessage2(u8* src); +void EggHatchPrintMessage1(u8* src); +bool8 EggHatchUpdateWindowText(void); +void CreateRandomEggShardSprite(void); + +void CB2_EggHatch_1(void) +{ + switch (gUnknown_0300481C->field_2) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + REG_DISPCNT = 0x1740; + gUnknown_0300481C->field_2++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + gUnknown_0300481C->field_3 = 0; + gUnknown_0300481C->field_2++; + } + break; + case 2: + if (++gUnknown_0300481C->field_3 > 30) + { + gUnknown_0300481C->field_2++; + gSprites[gUnknown_0300481C->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[gUnknown_0300481C->eggSpriteID].callback == SpriteCallbackDummy) + gUnknown_0300481C->field_2++; + break; + case 4: + GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg); + EggHatchPrintMessage2(gStringVar4); + PlayFanfare(371); + gUnknown_0300481C->field_2++; + break; + case 5: + if (IsFanfareTaskInactive()) + gUnknown_0300481C->field_2++; + break; + case 6: + if (IsFanfareTaskInactive()) + gUnknown_0300481C->field_2++; + break; + case 7: + GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt); + EggHatchPrintMessage1(gStringVar4); + gUnknown_0300481C->field_2++; + break; + case 8: + if (EggHatchUpdateWindowText()) + { + MenuDrawTextWindow(22, 8, 27, 13); + InitYesNoMenu(22, 8, 4); + gUnknown_0300481C->field_2++; + } + break; + case 9: + { + s8 menuInput; + if ((menuInput = ProcessMenuInputNoWrap_()) != -2) + { + if (menuInput != -1 && menuInput != 1) + { + u16 species; + u8 gender; + u32 personality; + + GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[gUnknown_0300481C->eggPartyID]); + personality = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + } + else + gUnknown_0300481C->field_2++; + } + } + break; + case 10: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gUnknown_0300481C->field_2++; + break; + case 11: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data0 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 1); + if (sprite->data0 == 15) + { + PlaySE(23); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data0 = 0; + sprite->data2 = 0; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(23); + StartSpriteAnim(sprite, 2); + } + } + } +} + +void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data2 > 30) + { + if (++sprite->data0 > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data0 = 0; + species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES); + gSprites[gUnknown_0300481C->pokeSpriteID].pos2.x = 0; + gSprites[gUnknown_0300481C->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; + } + else + { + sprite->data1 = (sprite->data1 + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data1, 2); + if (sprite->data0 == 15) + { + PlaySE(23); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data0 == 30) + PlaySE(23); + } + } +} + +void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data0 > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data0 = 0; + } +} + +void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data0 == 0) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF); + if (sprite->data0 < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data0++; + if (!gPaletteFade.active) + { + PlaySE(113); + sprite->invisible = 1; + sprite->callback = SpriteCB_Egg_5; + sprite->data0 = 0; + } +} -- cgit v1.2.3 From f246b05d996dba1249393e9219f0c32337feac02 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 Aug 2017 12:47:03 +0200 Subject: finish up egg hatch, make it compile --- asm/egg_hatch.s | 300 ------------------------------------------------------ include/pokemon.h | 2 +- src/egg_hatch.c | 265 +++++++++++++++++++++++++++++------------------ sym_common.txt | 2 +- 4 files changed, 169 insertions(+), 400 deletions(-) diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 51e688998..1e7bffa77 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -8,304 +8,4 @@ - thumb_func_start SpriteCB_Egg_5 -SpriteCB_Egg_5: @ 8043504 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08043540 - ldr r4, _08043594 @ =gSprites - ldr r3, _08043598 @ =gUnknown_0300481C - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08043540: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x8 - bne _0804355A - movs r1, 0x1 - negs r1, r1 - ldr r0, _0804359C @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0804355A: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x9 - bgt _08043578 - ldr r2, _08043594 @ =gSprites - ldr r0, _08043598 @ =gUnknown_0300481C - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] -_08043578: - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x28 - ble _08043586 - ldr r0, _080435A0 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_08043586: - adds r0, r1, 0x1 - strh r0, [r5, 0x2E] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08043594: .4byte gSprites -_08043598: .4byte gUnknown_0300481C -_0804359C: .4byte 0x0000ffff -_080435A0: .4byte SpriteCallbackDummy - thumb_func_end SpriteCB_Egg_5 - - thumb_func_start SpriteCB_EggShard -SpriteCB_EggShard: @ 80435A4 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x38] - adds r0, r1, r3 - strh r0, [r2, 0x38] - movs r4, 0x36 - ldrsh r0, [r2, r4] - cmp r0, 0 - bge _080435C2 - adds r0, 0xFF -_080435C2: - asrs r0, 8 - strh r0, [r2, 0x24] - movs r3, 0x38 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080435D0 - adds r0, 0xFF -_080435D0: - asrs r0, 8 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r3, r1, r0 - strh r3, [r2, 0x32] - movs r4, 0x22 - ldrsh r1, [r2, r4] - movs r4, 0x26 - ldrsh r0, [r2, r4] - adds r0, r1, r0 - adds r1, 0x14 - cmp r0, r1 - ble _080435F6 - lsls r0, r3, 16 - cmp r0, 0 - ble _080435F6 - adds r0, r2, 0 - bl DestroySprite -_080435F6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_EggShard - - thumb_func_start CreateRandomEggShardSprite -CreateRandomEggShardSprite: @ 80435FC - push {r4-r6,lr} - sub sp, 0x8 - ldr r3, _0804364C @ =gEggShardVelocities - ldr r0, _08043650 @ =gUnknown_0300481C - ldr r4, [r0] - adds r4, 0x3A - ldrb r2, [r4] - lsls r0, r2, 2 - adds r1, r0, r3 - ldrh r6, [r1] - adds r3, 0x2 - adds r0, r3 - ldrh r5, [r0] - adds r2, 0x1 - strb r2, [r4] - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsls r6, 16 - asrs r6, 16 - lsls r5, 16 - asrs r5, 16 - movs r0, 0x64 - str r0, [sp] - lsrs r1, 16 - str r1, [sp, 0x4] - movs r0, 0x78 - movs r1, 0x3C - adds r2, r6, 0 - adds r3, r5, 0 - bl CreateEggShardSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804364C: .4byte gEggShardVelocities -_08043650: .4byte gUnknown_0300481C - thumb_func_end CreateRandomEggShardSprite - - thumb_func_start CreateEggShardSprite -CreateEggShardSprite: @ 8043654 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x1C] - mov r9, r0 - ldr r1, [sp, 0x20] - mov r10, r1 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r1, r9 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080436CC @ =gSpriteTemplate_820A418 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x4 - bl CreateSprite - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080436D0 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x30] - mov r1, r8 - strh r1, [r0, 0x32] - mov r1, r9 - strh r1, [r0, 0x34] - mov r1, r10 - bl StartSpriteAnim - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080436CC: .4byte gSpriteTemplate_820A418 -_080436D0: .4byte gSprites - thumb_func_end CreateEggShardSprite - - thumb_func_start EggHatchPrintMessage1 -EggHatchPrintMessage1: @ 80436D4 - push {lr} - sub sp, 0x4 - adds r1, r0, 0 - ldr r0, _080436F8 @ =gUnknown_0300481C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x8 - adds r2, 0x38 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x3 - bl sub_8002EB0 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080436F8: .4byte gUnknown_0300481C - thumb_func_end EggHatchPrintMessage1 - - thumb_func_start EggHatchPrintMessage2 -EggHatchPrintMessage2: @ 80436FC - push {lr} - sub sp, 0x4 - adds r1, r0, 0 - ldr r0, _08043720 @ =gUnknown_0300481C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x8 - adds r2, 0x38 - ldrb r2, [r2] - movs r3, 0xF - str r3, [sp] - movs r3, 0x3 - bl sub_8003460 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08043720: .4byte gUnknown_0300481C - thumb_func_end EggHatchPrintMessage2 - - thumb_func_start EggHatchUpdateWindowText -EggHatchUpdateWindowText: @ 8043724 - push {lr} - ldr r0, _08043738 @ =gUnknown_0300481C - ldr r0, [r0] - adds r0, 0x8 - bl sub_80035AC - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08043738: .4byte gUnknown_0300481C - thumb_func_end EggHatchUpdateWindowText - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokemon.h b/include/pokemon.h index 2cc8e9ac4..21173d503 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -542,7 +542,7 @@ union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u32 GetMonData(); u32 GetBoxMonData(); -void SetMonData(struct Pokemon *mon, s32 field, const void *data); +void SetMonData(struct Pokemon *mon, s32 field, const u8 *data); void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 70d206a06..f518fdb84 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -17,21 +17,61 @@ #include "menu.h" #include "naming_screen.h" #include "trig.h" +#include "rng.h" -extern u8 gStringVar1[]; extern u8 ewram[]; extern struct SpriteTemplate gUnknown_02024E8C; +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + struct Window window; + u8 tileDataStartOffset; + u8 unused_39; + u8 eggShardVelocityID; +}; + +extern struct EggHatchData* sEggHatchData; + +extern const u32 gUnknown_08D00000[]; +extern const u32 gUnknown_08D00524[]; +extern const u32 gUnknown_0820CA98[]; +extern const u32 gUnknown_0820F798[]; +extern const u16 gUnknown_08D004E0[]; //palette +extern const u16 gUnknown_0820C9F8[]; //palette +extern const struct SpriteSheet gUnknown_0820A3B0; +extern const struct SpriteSheet gUnknown_0820A3B8; +extern const struct SpritePalette gUnknown_0820A3C0; +extern const struct SpriteTemplate gSpriteTemplate_820A3C8; +extern const struct SpriteTemplate gSpriteTemplate_820A418; +extern const s16 gEggShardVelocities[][2]; + bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID); u8* GetMonNick(struct Pokemon* mon, u8* dst); u8 sav1_map_get_name(void); const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address void sub_8080990(void); -void Task_EggHatch(u8 taskID); -void CB2_EggHatch_0(void); - -void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void EggHatchPrintMessage2(u8* src); +static void EggHatchPrintMessage1(u8* src); +static bool8 EggHatchUpdateWindowText(void); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { u16 species; u32 personality, pokerus; @@ -82,7 +122,7 @@ void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) *egg = *temp; } -void AddHatchedMonToParty(u8 id) +static void AddHatchedMonToParty(u8 id) { u8 isEgg; u16 pokeNum; @@ -107,10 +147,10 @@ void AddHatchedMonToParty(u8 id) GetMonNick(mon, gStringVar1); ball = ITEM_POKE_BALL; - SetMonData(mon, MON_DATA_POKEBALL, &ball); + SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball); caughtLvl = 0; - SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); + SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl); mapNameID = sav1_map_get_name(); SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); @@ -124,8 +164,15 @@ void ScriptHatchMon(void) AddHatchedMonToParty(gSpecialVar_0x8004); } +#ifdef NONMATCHING +static bool8 sub_8042ABC(void* a, u8 b) +{ + +} + +#else __attribute__((naked)) -bool8 sub_8042ABC(void* a, u8 b) +static bool8 sub_8042ABC(void* a, u8 b) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ @@ -194,12 +241,14 @@ _08042B42:\n\ .syntax divided"); } +#endif // NONMATCHING + bool8 sub_8042B4C(void) { return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004); } -u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) { u8 r5 = 0; u8 spriteID = 0; @@ -235,7 +284,7 @@ u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) return spriteID; } -void VBlankCB_EggHatch(void) +static void VBlankCB_EggHatch(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -249,7 +298,7 @@ void EggHatch(void) BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); } -void Task_EggHatch(u8 taskID) +static void Task_EggHatch(u8 taskID) { if (!gPaletteFade.active) { @@ -259,48 +308,15 @@ void Task_EggHatch(u8 taskID) } } -void CB2_EggHatch_1(void); - -struct Struct_2018000 -{ - u8 eggSpriteID; - u8 pokeSpriteID; - u8 field_2; - u8 field_3; - u8 eggPartyID; - u8 field_5; - u8 field_6; - u8 field_7; - struct Window window; - u8 field_38; - u8 field_39; - u8 field_3A; -}; - -extern struct Struct_2018000* gUnknown_0300481C; -extern const u32 gUnknown_08D00000[]; -extern const u32 gUnknown_08D00524[]; -extern const u32 gUnknown_0820CA98[]; -extern const u32 gUnknown_0820F798[]; -extern const u16 gUnknown_08D004E0[]; //palette - -extern const u16 gUnknown_0820C9F8[]; //palette - -extern const struct SpriteSheet gUnknown_0820A3B0; -extern const struct SpriteSheet gUnknown_0820A3B8; -extern const struct SpritePalette gUnknown_0820A3C0; - -extern const struct SpriteTemplate gSpriteTemplate_820A3C8; - void CB2_EggHatch_0(void) { switch (gMain.state) { case 0: REG_DISPCNT = 0; - gUnknown_0300481C = (struct Struct_2018000*)(&ewram[0x18000]); - gUnknown_0300481C->eggPartyID = gSpecialVar_0x8004; - gUnknown_0300481C->field_3A = 0; + sEggHatchData = (struct EggHatchData*)(&ewram[0x18000]); + sEggHatchData->eggPartyID = gSpecialVar_0x8004; + sEggHatchData->eggShardVelocityID = 0; ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -310,9 +326,9 @@ void CB2_EggHatch_0(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_0300481C->window, &gWindowConfig_81E6F84); - gUnknown_0300481C->field_38 = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gUnknown_0300481C->window); + InitWindowFromConfig(&sEggHatchData->window, &gWindowConfig_81E6F84); + sEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&sEggHatchData->window); gMain.state++; break; case 2: @@ -329,16 +345,16 @@ void CB2_EggHatch_0(void) gMain.state++; break; case 4: - gUnknown_0300481C->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5); - AddHatchedMonToParty(gUnknown_0300481C->eggPartyID); + sEggHatchData->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + AddHatchedMonToParty(sEggHatchData->eggPartyID); gMain.state++; break; case 5: - EggHatchCreateMonSprite(0, 0, gUnknown_0300481C->eggPartyID); + EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID); gMain.state++; break; case 6: - gUnknown_0300481C->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gUnknown_0300481C->eggPartyID); + sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID); gMain.state++; break; case 7: @@ -385,7 +401,7 @@ void CB2_EggHatch_0(void) REG_BG2VOFS = 0; SetMainCallback2(CB2_EggHatch_1); - gUnknown_0300481C->field_2 = 0; + sEggHatchData->CB2_state = 0; break; } } @@ -411,73 +427,61 @@ void Task_EggHatchPlayBGM(u8 taskID) gTasks[taskID].data[0]++; } -void SpriteCB_Egg_0(struct Sprite* sprite); -void SpriteCB_Egg_1(struct Sprite* sprite); -void SpriteCB_Egg_2(struct Sprite* sprite); -void SpriteCB_Egg_3(struct Sprite* sprite); -void SpriteCB_Egg_4(struct Sprite* sprite); -void SpriteCB_Egg_5(struct Sprite* sprite); - -void EggHatchPrintMessage2(u8* src); -void EggHatchPrintMessage1(u8* src); -bool8 EggHatchUpdateWindowText(void); -void CreateRandomEggShardSprite(void); - void CB2_EggHatch_1(void) { - switch (gUnknown_0300481C->field_2) + switch (sEggHatchData->CB2_state) { case 0: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); REG_DISPCNT = 0x1740; - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; CreateTask(Task_EggHatchPlayBGM, 5); break; case 1: if (!gPaletteFade.active) { - gUnknown_0300481C->field_3 = 0; - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_PalCounter = 0; + sEggHatchData->CB2_state++; } break; case 2: - if (++gUnknown_0300481C->field_3 > 30) + if (++sEggHatchData->CB2_PalCounter > 30) { - gUnknown_0300481C->field_2++; - gSprites[gUnknown_0300481C->eggSpriteID].callback = SpriteCB_Egg_0; + sEggHatchData->CB2_state++; + gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; } break; case 3: - if (gSprites[gUnknown_0300481C->eggSpriteID].callback == SpriteCallbackDummy) - gUnknown_0300481C->field_2++; + if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + sEggHatchData->CB2_state++; break; case 4: - GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1); + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg); EggHatchPrintMessage2(gStringVar4); PlayFanfare(371); - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; break; case 5: if (IsFanfareTaskInactive()) - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; break; case 6: if (IsFanfareTaskInactive()) - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; break; case 7: - GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar1); + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt); EggHatchPrintMessage1(gStringVar4); - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; break; case 8: if (EggHatchUpdateWindowText()) { MenuDrawTextWindow(22, 8, 27, 13); InitYesNoMenu(22, 8, 4); - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; } break; case 9: @@ -491,20 +495,20 @@ void CB2_EggHatch_1(void) u8 gender; u32 personality; - GetMonNick(&gPlayerParty[gUnknown_0300481C->eggPartyID], gStringVar3); - species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES); - gender = GetMonGender(&gPlayerParty[gUnknown_0300481C->eggPartyID]); - personality = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_PERSONALITY, 0); + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); } else - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; } } break; case 10: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gUnknown_0300481C->field_2++; + sEggHatchData->CB2_state++; break; case 11: if (!gPaletteFade.active) @@ -517,7 +521,7 @@ void CB2_EggHatch_1(void) UpdatePaletteFade(); } -void SpriteCB_Egg_0(struct Sprite* sprite) +static void SpriteCB_Egg_0(struct Sprite* sprite) { if (++sprite->data0 > 20) { @@ -537,7 +541,7 @@ void SpriteCB_Egg_0(struct Sprite* sprite) } } -void SpriteCB_Egg_1(struct Sprite* sprite) +static void SpriteCB_Egg_1(struct Sprite* sprite) { if (++sprite->data2 > 30) { @@ -560,7 +564,7 @@ void SpriteCB_Egg_1(struct Sprite* sprite) } } -void SpriteCB_Egg_2(struct Sprite* sprite) +static void SpriteCB_Egg_2(struct Sprite* sprite) { if (++sprite->data2 > 30) { @@ -570,9 +574,9 @@ void SpriteCB_Egg_2(struct Sprite* sprite) sprite->callback = SpriteCB_Egg_3; sprite->data0 = 0; - species = GetMonData(&gPlayerParty[gUnknown_0300481C->eggPartyID], MON_DATA_SPECIES); - gSprites[gUnknown_0300481C->pokeSpriteID].pos2.x = 0; - gSprites[gUnknown_0300481C->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; } else { @@ -591,7 +595,7 @@ void SpriteCB_Egg_2(struct Sprite* sprite) } } -void SpriteCB_Egg_3(struct Sprite* sprite) +static void SpriteCB_Egg_3(struct Sprite* sprite) { if (++sprite->data0 > 50) { @@ -600,7 +604,7 @@ void SpriteCB_Egg_3(struct Sprite* sprite) } } -void SpriteCB_Egg_4(struct Sprite* sprite) +static void SpriteCB_Egg_4(struct Sprite* sprite) { s16 i; if (sprite->data0 == 0) @@ -619,3 +623,68 @@ void SpriteCB_Egg_4(struct Sprite* sprite) sprite->data0 = 0; } } + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + gSprites[sEggHatchData->pokeSpriteID].invisible = 0; + StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); + } + if (sprite->data0 == 8) + BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF); + if (sprite->data0 <= 9) + gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data0 > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data0++; +} + +void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data4 += sprite->data1; + sprite->data5 += sprite->data2; + + sprite->pos2.x = sprite->data4 / 256; + sprite->pos2.y = sprite->data5 / 256; + + sprite->data2 += sprite->data3; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0) + DestroySprite(sprite); +} + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; + sEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&gSpriteTemplate_820A418, x, y, 4); + gSprites[spriteID].data1 = data1; + gSprites[spriteID].data2 = data2; + gSprites[spriteID].data3 = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage1(u8* src) +{ + sub_8002EB0(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15); +} + +static void EggHatchPrintMessage2(u8* src) +{ + sub_8003460(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15); +} + +static bool8 EggHatchUpdateWindowText(void) +{ + return sub_80035AC(&sEggHatchData->window); +} diff --git a/sym_common.txt b/sym_common.txt index fc729a587..ec482a6d9 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -110,7 +110,7 @@ gUnknown_0300434C: @ 300434C @ egg_hatch .align 2 -gUnknown_0300481C: @ 300481C +sEggHatchData: @ 300481C .space 0x4 .include "load_save.o" -- cgit v1.2.3 From b14554c6ae23dfd1f1a8e1f3d3fc486fc9158a66 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 Aug 2017 15:21:54 +0200 Subject: move data to C --- asm/egg_hatch.s | 11 --- data/egg_hatch.s | 122 -------------------------------- ld_script.txt | 3 +- src/egg_hatch.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 192 insertions(+), 153 deletions(-) delete mode 100644 asm/egg_hatch.s delete mode 100644 data/egg_hatch.s diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s deleted file mode 100644 index 1e7bffa77..000000000 --- a/asm/egg_hatch.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - - - .align 2, 0 @ Don't pad with nop. diff --git a/data/egg_hatch.s b/data/egg_hatch.s deleted file mode 100644 index 1823409dd..000000000 --- a/data/egg_hatch.s +++ /dev/null @@ -1,122 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -EggPalette:: @ 8209AD8 - .incbin "graphics/pokemon/egg/palette.gbapal" - -EggHatchTiles:: @ 8209AF8 - .incbin "graphics/misc/egg_hatch.4bpp" - -EggShardTiles:: @ 820A2F8 - .incbin "graphics/misc/egg_shard.4bpp" - - .align 2 -gOamData_820A378:: @ 820A378 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_820A380:: @ 820A380 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A388:: @ 820A388 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A390:: @ 820A390 - obj_image_anim_frame 32, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A398:: @ 820A398 - obj_image_anim_frame 48, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A3A0:: @ 820A3A0 - .4byte gSpriteAnim_820A380 - .4byte gSpriteAnim_820A388 - .4byte gSpriteAnim_820A390 - .4byte gSpriteAnim_820A398 - - .align 2 -gUnknown_0820A3B0:: @ 820A3B0 - obj_tiles EggHatchTiles, 2048, 12345 - - .align 2 -gUnknown_0820A3B8:: @ 820A3B8 - obj_tiles EggShardTiles, 128, 23456 - - .align 2 -gUnknown_0820A3C0:: @ 820A3C0 - obj_pal EggPalette, 54321 - - .align 2 -gSpriteTemplate_820A3C8:: @ 820A3C8 - spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_820A3E0:: @ 820A3E0 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_820A3E8:: @ 820A3E8 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F0:: @ 820A3F0 - obj_image_anim_frame 1, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A3F8:: @ 820A3F8 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_820A400:: @ 820A400 - obj_image_anim_frame 3, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_820A408:: @ 820A408 - .4byte gSpriteAnim_820A3E8 - .4byte gSpriteAnim_820A3F0 - .4byte gSpriteAnim_820A3F8 - .4byte gSpriteAnim_820A400 - - .align 2 -gSpriteTemplate_820A418:: @ 820A418 - spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard - -@ The values are Q8.8 fixed-point numbers. - .align 1 -gEggShardVelocities:: @ 820A430 - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0xFB00, 0xFD00 @ (-5, -3) - .2byte 0x0380, 0xFD00 @ (3.5, -3) - .2byte 0xFC00, 0xFC40 @ (-4, -3.75) - .2byte 0x0200, 0xFE80 @ (2, -1.5) - .2byte 0xFF80, 0xF940 @ (-0.5, -6.75) - .2byte 0x0500, 0xFDC0 @ (5, -2.25) - .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75) - .2byte 0x0480, 0xFE80 @ (4.5, -1.5) - .2byte 0xFF00, 0xF940 @ (-1, -6.75) - .2byte 0x0400, 0xFDC0 @ (4, -2.25) - .2byte 0xFC80, 0xFC40 @ (-3.5, -3.75) - .2byte 0x0100, 0xFE80 @ (1, -1.5) - .2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75) - .2byte 0x0480, 0xFDC0 @ (4.5, -2.25) - .2byte 0xFF80, 0xF880 @ (-0.5, -7.5) - .2byte 0x0100, 0xFB80 @ (1, -4.5) - .2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25) - .2byte 0x0280, 0xF880 @ (2.5, -7.5) diff --git a/ld_script.txt b/ld_script.txt index a0054668e..d4a5b6eed 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -74,7 +74,6 @@ SECTIONS { src/daycare.o(.text); asm/daycare.o(.text); src/egg_hatch.o(.text); - asm/egg_hatch.o(.text); src/battle_interface.o(.text); src/smokescreen.o(.text); src/pokeball.o(.text); @@ -338,7 +337,7 @@ SECTIONS { src/trig.o(.rodata); src/util.o(.rodata); data/daycare.o(.rodata); - data/egg_hatch.o(.rodata); + src/egg_hatch.o(.rodata); data/battle_interface.o(.rodata); src/pokeball.o(.rodata); data/trade.o(.rodata); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index f518fdb84..45021d3e4 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -43,12 +43,9 @@ extern const u32 gUnknown_0820CA98[]; extern const u32 gUnknown_0820F798[]; extern const u16 gUnknown_08D004E0[]; //palette extern const u16 gUnknown_0820C9F8[]; //palette -extern const struct SpriteSheet gUnknown_0820A3B0; -extern const struct SpriteSheet gUnknown_0820A3B8; -extern const struct SpritePalette gUnknown_0820A3C0; -extern const struct SpriteTemplate gSpriteTemplate_820A3C8; -extern const struct SpriteTemplate gSpriteTemplate_820A418; -extern const s16 gEggShardVelocities[][2]; +extern const struct SpriteSheet sUnknown_0820A3B0; +extern const struct SpriteSheet sUnknown_0820A3B8; +extern const struct SpritePalette sUnknown_0820A3C0; bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID); u8* GetMonNick(struct Pokemon* mon, u8* dst); @@ -65,12 +62,162 @@ static void SpriteCB_Egg_2(struct Sprite* sprite); static void SpriteCB_Egg_3(struct Sprite* sprite); static void SpriteCB_Egg_4(struct Sprite* sprite); static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); static void EggHatchPrintMessage2(u8* src); static void EggHatchPrintMessage1(u8* src); static bool8 EggHatchUpdateWindowText(void); static void CreateRandomEggShardSprite(void); static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); +// graphics + +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_820A378 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A380[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A388[] = +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A390[] = +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A398[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A3A0[] = +{ + sSpriteAnim_820A380, + sSpriteAnim_820A388, + sSpriteAnim_820A390, + sSpriteAnim_820A398, +}; + +static const struct SpriteSheet sUnknown_0820A3B0 = +{ + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, +}; + +static const struct SpriteSheet sUnknown_0820A3B8 = +{ + .data = sEggShardTiles, + .size = 128, + .tag = 23456, +}; + +static const struct SpritePalette sUnknown_0820A3C0 = +{ + .data = sEggPalette, + .tag = 54321 +}; + +static const struct SpriteTemplate sSpriteTemplate_820A3C8 = +{ + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_820A378, + .anims = sSpriteAnimTable_820A3A0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + + +static const struct OamData sOamData_820A3E0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_820A3E8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F0[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A3F8[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_820A400[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_820A408[] = +{ + sSpriteAnim_820A3E8, + sSpriteAnim_820A3F0, + sSpriteAnim_820A3F8, + sSpriteAnim_820A400, +}; + +static const struct SpriteTemplate sSpriteTemplate_820A418 = +{ + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_820A3E0, + .anims = sSpriteAnimTable_820A408, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard +}; + +// actual code + static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { u16 species; @@ -308,7 +455,7 @@ static void Task_EggHatch(u8 taskID) } } -void CB2_EggHatch_0(void) +static void CB2_EggHatch_0(void) { switch (gMain.state) { @@ -339,13 +486,13 @@ void CB2_EggHatch_0(void) gMain.state++; break; case 3: - LoadSpriteSheet(&gUnknown_0820A3B0); - LoadSpriteSheet(&gUnknown_0820A3B8); - LoadSpritePalette(&gUnknown_0820A3C0); + LoadSpriteSheet(&sUnknown_0820A3B0); + LoadSpriteSheet(&sUnknown_0820A3B8); + LoadSpritePalette(&sUnknown_0820A3C0); gMain.state++; break; case 4: - sEggHatchData->eggSpriteID = CreateSprite(&gSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5); AddHatchedMonToParty(sEggHatchData->eggPartyID); gMain.state++; break; @@ -406,13 +553,13 @@ void CB2_EggHatch_0(void) } } -void EggHatchSetMonNickname(void) +static void EggHatchSetMonNickname(void) { SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); SetMainCallback2(c2_exit_to_overworld_2_switch); } -void Task_EggHatchPlayBGM(u8 taskID) +static void Task_EggHatchPlayBGM(u8 taskID) { if (gTasks[taskID].data[0] == 0) StopMapMusic(); @@ -427,7 +574,7 @@ void Task_EggHatchPlayBGM(u8 taskID) gTasks[taskID].data[0]++; } -void CB2_EggHatch_1(void) +static void CB2_EggHatch_1(void) { switch (sEggHatchData->CB2_state) { @@ -640,7 +787,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite) sprite->data0++; } -void SpriteCB_EggShard(struct Sprite* sprite) +static void SpriteCB_EggShard(struct Sprite* sprite) { sprite->data4 += sprite->data1; sprite->data5 += sprite->data2; @@ -654,12 +801,38 @@ void SpriteCB_EggShard(struct Sprite* sprite) DestroySprite(sprite); } +// Converts a number to Q8.8 fixed-point format +#define Q_8_8(n) ((s16)((n) * 256)) + +static const s16 sEggShardVelocities[][2] = +{ + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, +}; + static void CreateRandomEggShardSprite(void) { u16 spriteAnimIndex; - s16 velocity1 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; - s16 velocity2 = gEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; + s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; sEggHatchData->eggShardVelocityID++; spriteAnimIndex = Random() % 4; CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); @@ -667,7 +840,7 @@ static void CreateRandomEggShardSprite(void) static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) { - u8 spriteID = CreateSprite(&gSpriteTemplate_820A418, x, y, 4); + u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4); gSprites[spriteID].data1 = data1; gSprites[spriteID].data2 = data2; gSprites[spriteID].data3 = data3; -- cgit v1.2.3 From e67214db6c4b7a655726134cdbefa4da20a0c8a9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 5 Aug 2017 21:53:51 +0200 Subject: start decompiling berry blender --- asm/berry_blender.s | 1347 +++++++++----------------------------------------- data/berry_blender.s | 4 +- ld_script.txt | 1 + src/berry_blender.c | 903 +++++++++++++++++++++++++++++++++ sym_common.txt | 2 +- 5 files changed, 1135 insertions(+), 1122 deletions(-) create mode 100644 src/berry_blender.c diff --git a/asm/berry_blender.s b/asm/berry_blender.s index b6ee5f9f3..a6ef8fd38 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -6,899 +6,8 @@ .text - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x2 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 thumb_func_start sub_804E9F8 sub_804E9F8: @ 804E9F8 @@ -906,7 +15,7 @@ sub_804E9F8: @ 804E9F8 mov r7, r8 push {r7} sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 + ldr r1, _0804EA18 @ =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] mov r8, r1 @@ -920,7 +29,7 @@ _0804EA0E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 +_0804EA18: .4byte sBerryBlenderData _0804EA1C: .4byte _0804EA20 .align 2, 0 _0804EA20: @@ -1031,7 +140,7 @@ _0804EBBC: bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC + ldr r0, _0804EC60 @ =VBlankCB0_BerryBlender bl SetVBlankCallback ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 adds r0, r4, 0 @@ -1042,7 +151,7 @@ _0804EBBC: ldr r2, _0804EC6C @ =0x00004422 adds r0, r2, 0 strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 + ldr r3, _0804EC70 @ =sBerryBlenderData ldr r1, [r3] ldrb r0, [r1] adds r0, 0x1 @@ -1106,11 +215,11 @@ _0804EC2A: strb r2, [r3, 0x1] b _0804F0CE .align 2, 0 -_0804EC60: .4byte sub_804E2BC +_0804EC60: .4byte VBlankCB0_BerryBlender _0804EC64: .4byte gWindowConfig_81E6F68 _0804EC68: .4byte gLinkType _0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 +_0804EC70: .4byte sBerryBlenderData _0804EC74: bl sub_804E2EC lsls r0, 24 @@ -1118,7 +227,7 @@ _0804EC74: bne _0804EC80 b _0804F0CE _0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 + ldr r0, _0804EC90 @ =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -1126,15 +235,15 @@ _0804EC80: bl sub_8051474 b _0804F0CE .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 +_0804EC90: .4byte sBerryBlenderData _0804EC94: movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 + ldr r4, _0804ECD8 @ =sBlenderSyncArrowsPos + ldr r6, _0804ECDC @ =sBerryBlenderData _0804EC9A: ldrb r1, [r4] ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 + ldr r0, _0804ECE0 @ =sBlenderSyncArrow_SpriteTemplate movs r3, 0x1 bl CreateSprite ldr r1, [r6] @@ -1161,9 +270,9 @@ _0804EC9A: ble _0804EC9A b _0804F0AA .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 +_0804ECD8: .4byte sBlenderSyncArrowsPos +_0804ECDC: .4byte sBerryBlenderData +_0804ECE0: .4byte sBlenderSyncArrow_SpriteTemplate _0804ECE4: .4byte gSprites _0804ECE8: movs r0, 0x1 @@ -1197,7 +306,7 @@ _0804ED14: movs r1, 0x1 movs r2, 0xE bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 + ldr r2, _0804ED44 @ =sBerryBlenderData ldr r1, [r2] movs r3, 0 movs r0, 0x8 @@ -1210,7 +319,7 @@ _0804ED14: b _0804F0CE .align 2, 0 _0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 +_0804ED44: .4byte sBerryBlenderData _0804ED48: mov r2, r8 ldr r1, [r2] @@ -1229,7 +338,7 @@ _0804ED48: adds r0, r4 ldr r1, _0804ED8C @ =gScriptItemId ldrh r1, [r1] - bl sub_804E844 + bl Blender_CopyBerryData ldr r0, _0804ED90 @ =gBlockSendBuffer mov r2, r8 ldr r1, [r2] @@ -1334,7 +443,7 @@ _0804EE30: b _0804EE7A _0804EE46: bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 + ldr r2, _0804EE98 @ =sBerryBlenderData ldr r1, [r2] adds r1, 0x88 strb r0, [r1] @@ -1360,7 +469,7 @@ _0804EE6C: cmp r5, 0x3 ble _0804EE6C _0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 + ldr r3, _0804EE98 @ =sBerryBlenderData ldr r1, [r3] movs r4, 0x98 lsls r4, 1 @@ -1376,7 +485,7 @@ _0804EE7A: adds r1, r0 b _0804F0AE .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 +_0804EE98: .4byte sBerryBlenderData _0804EE9C: .4byte gUnknown_082162EC _0804EEA0: mov r1, r8 @@ -1446,7 +555,7 @@ _0804EF16: bne _0804EF22 b _0804F0CE _0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 + ldr r2, _0804EF30 @ =sBerryBlenderData ldr r1, [r2] ldrb r0, [r1] adds r0, 0x1 @@ -1454,7 +563,7 @@ _0804EF22: ldr r0, [r2] b _0804EFBC .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 +_0804EF30: .4byte sBerryBlenderData _0804EF34: movs r2, 0x80 lsls r2, 19 @@ -1539,7 +648,7 @@ _0804EFD8: lsls r0, 24 cmp r0, 0 beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 + ldr r0, _0804F008 @ =sBerryBlenderData ldr r1, [r0] movs r3, 0x98 lsls r3, 1 @@ -1550,7 +659,7 @@ _0804EFD8: adds r0, 0x1 strb r0, [r1] _0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 + ldr r0, _0804F008 @ =sBerryBlenderData ldr r0, [r0] movs r4, 0xB4 lsls r4, 1 @@ -1558,7 +667,7 @@ _0804EFF6: bl sub_8051414 b _0804F0CE .align 2, 0 -_0804F008: .4byte gUnknown_03004854 +_0804F008: .4byte sBerryBlenderData _0804F00C: ldr r0, _0804F01C @ =gSpriteTemplate_8216548 movs r2, 0x10 @@ -1635,7 +744,7 @@ _0804F0A0: cmp r0, 0 beq _0804F0CE _0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 + ldr r0, _0804F0B8 @ =sBerryBlenderData _0804F0AC: ldr r1, [r0] _0804F0AE: @@ -1644,7 +753,7 @@ _0804F0AE: strb r0, [r1] b _0804F0CE .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 +_0804F0B8: .4byte sBerryBlenderData _0804F0BC: ldr r0, _0804F0EC @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -1680,7 +789,7 @@ sub_804F0F4: @ 804F0F4 bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC + ldr r0, _0804F158 @ =VBlankCB0_BerryBlender bl SetVBlankCallback ldr r4, _0804F15C @ =gWindowConfig_81E6F68 adds r0, r4, 0 @@ -1691,7 +800,7 @@ sub_804F0F4: @ 804F0F4 ldr r2, _0804F164 @ =0x00004422 adds r0, r2, 0 strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 + ldr r0, _0804F168 @ =sBerryBlenderData ldr r2, [r0] adds r0, r2, 0 adds r0, 0x4E @@ -1717,11 +826,11 @@ sub_804F0F4: @ 804F0F4 pop {r0} bx r0 .align 2, 0 -_0804F158: .4byte sub_804E2BC +_0804F158: .4byte VBlankCB0_BerryBlender _0804F15C: .4byte gWindowConfig_81E6F68 _0804F160: .4byte gLinkType _0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 +_0804F168: .4byte sBerryBlenderData thumb_func_end sub_804F0F4 thumb_func_start task_tutorial_oak_boy_girl @@ -1732,7 +841,7 @@ task_tutorial_oak_boy_girl: @ 804F16C lsrs r0, 24 adds r2, r0, 0 adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 + ldr r0, _0804F1A8 @ =sBerryBlenderData ldr r0, [r0] lsrs r1, 23 adds r0, 0xA2 @@ -1756,7 +865,7 @@ task_tutorial_oak_boy_girl: @ 804F16C movs r0, 0x2 b _0804F1B6 .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 +_0804F1A8: .4byte sBerryBlenderData _0804F1AC: .4byte gUnknown_08216303 _0804F1B0: movs r0, 0x1 @@ -1843,7 +952,7 @@ _0804F234: .4byte gUnknown_082165BC sub_804F238: @ 804F238 push {r4-r7,lr} movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 + ldr r7, _0804F2A0 @ =sBerryBlenderData movs r6, 0xFF ldr r5, _0804F2A4 @ =gUnknown_082162EC _0804F242: @@ -1869,7 +978,7 @@ _0804F242: cmp r4, 0x3 ble _0804F242 movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 + ldr r7, _0804F2A0 @ =sBerryBlenderData _0804F270: movs r4, 0 adds r6, r3, 0x1 @@ -1898,7 +1007,7 @@ _0804F28E: pop {r0} bx r0 .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 +_0804F2A0: .4byte sBerryBlenderData _0804F2A4: .4byte gUnknown_082162EC thumb_func_end sub_804F238 @@ -1908,7 +1017,7 @@ BuyMenuDrawFieldObjects: @ 804F2A8 mov r7, r8 push {r7} movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 + ldr r7, _0804F360 @ =sBerryBlenderData ldr r0, _0804F364 @ =gUnknown_082162D4 mov r8, r0 _0804F2B6: @@ -1994,7 +1103,7 @@ _0804F34A: pop {r0} bx r0 .align 2, 0 -_0804F360: .4byte gUnknown_03004854 +_0804F360: .4byte sBerryBlenderData _0804F364: .4byte gUnknown_082162D4 _0804F368: .4byte gStringVar1 _0804F36C: .4byte gSprites @@ -2008,7 +1117,7 @@ sub_804F378: @ 804F378 mov r7, r8 push {r7} sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 + ldr r1, _0804F398 @ =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] mov r8, r1 @@ -2022,7 +1131,7 @@ _0804F38E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0804F398: .4byte gUnknown_03004854 +_0804F398: .4byte sBerryBlenderData _0804F39C: .4byte _0804F3A0 .align 2, 0 _0804F3A0: @@ -2054,13 +1163,13 @@ _0804F3F8: ldrh r1, [r4] movs r0, 0 bl sub_80516C4 - ldr r5, _0804F470 @ =gUnknown_03004854 + ldr r5, _0804F470 @ =sBerryBlenderData ldr r0, [r5] movs r6, 0xBE lsls r6, 1 adds r0, r6 ldrh r1, [r4] - bl sub_804E844 + bl Blender_CopyBerryData ldrh r0, [r4] ldr r2, [r5] adds r1, r2, 0 @@ -2106,7 +1215,7 @@ _0804F442: b _0804F7E6 .align 2, 0 _0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 +_0804F470: .4byte sBerryBlenderData _0804F474: bl sub_804E2EC lsls r0, 24 @@ -2114,7 +1223,7 @@ _0804F474: bne _0804F480 b _0804F7E6 _0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 + ldr r0, _0804F490 @ =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -2122,15 +1231,15 @@ _0804F480: bl sub_8051474 b _0804F7E6 .align 2, 0 -_0804F490: .4byte gUnknown_03004854 +_0804F490: .4byte sBerryBlenderData _0804F494: movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 + ldr r5, _0804F4DC @ =sBlenderSyncArrowsPos + ldr r6, _0804F4E0 @ =sBerryBlenderData _0804F49A: ldrb r1, [r5] ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 + ldr r0, _0804F4E4 @ =sBlenderSyncArrow_SpriteTemplate movs r3, 0x1 bl CreateSprite ldr r1, [r6] @@ -2155,13 +1264,13 @@ _0804F49A: adds r4, 0x1 cmp r4, 0x3 ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 + ldr r0, _0804F4E0 @ =sBerryBlenderData ldr r1, [r0] b _0804F74C .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 +_0804F4DC: .4byte sBlenderSyncArrowsPos +_0804F4E0: .4byte sBerryBlenderData +_0804F4E4: .4byte sBlenderSyncArrow_SpriteTemplate _0804F4E8: .4byte gSprites _0804F4EC: movs r0, 0x1 @@ -2172,7 +1281,7 @@ _0804F4EC: movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 + ldr r2, _0804F514 @ =sBerryBlenderData ldr r1, [r2] ldrb r0, [r1] adds r0, 0x1 @@ -2184,7 +1293,7 @@ _0804F4EC: str r4, [r0] b _0804F7E6 .align 2, 0 -_0804F514: .4byte gUnknown_03004854 +_0804F514: .4byte sBerryBlenderData _0804F518: mov r2, r8 ldr r1, [r2] @@ -2239,7 +1348,7 @@ _0804F564: _0804F578: movs r4, 0 ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 + ldr r0, _0804F5C4 @ =sBerryBlenderData ldr r3, [r0] adds r0, r3, 0 adds r0, 0x88 @@ -2260,7 +1369,7 @@ _0804F594: cmp r4, 0x3 ble _0804F594 _0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 + ldr r3, _0804F5C4 @ =sBerryBlenderData ldr r1, [r3] movs r5, 0x98 lsls r5, 1 @@ -2277,7 +1386,7 @@ _0804F5A2: b _0804F74C .align 2, 0 _0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 +_0804F5C4: .4byte sBerryBlenderData _0804F5C8: mov r1, r8 ldr r3, [r1] @@ -2431,13 +1540,13 @@ _0804F6F8: lsls r0, 24 cmp r0, 0 beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 + ldr r0, _0804F71C @ =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] _0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 + ldr r0, _0804F71C @ =sBerryBlenderData ldr r0, [r0] _0804F710: movs r3, 0xB4 @@ -2446,7 +1555,7 @@ _0804F710: bl sub_8051414 b _0804F7E6 .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 +_0804F71C: .4byte sBerryBlenderData _0804F720: ldr r0, _0804F734 @ =gSpriteTemplate_8216548 movs r2, 0x10 @@ -2454,12 +1563,12 @@ _0804F720: movs r1, 0x78 movs r3, 0x3 bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 + ldr r0, _0804F738 @ =sBerryBlenderData ldr r1, [r0] b _0804F74C .align 2, 0 _0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 +_0804F738: .4byte sBerryBlenderData _0804F73C: mov r5, r8 ldr r1, [r5] @@ -2478,7 +1587,7 @@ _0804F74C: b _0804F7E6 _0804F754: bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 + ldr r3, _0804F804 @ =sBerryBlenderData ldr r4, [r3] adds r5, r4, 0 adds r5, 0x56 @@ -2510,7 +1619,7 @@ _0804F792: ldm r6!, {r0} lsrs r1, r5, 24 bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 + ldr r1, _0804F804 @ =sBerryBlenderData ldr r1, [r1] movs r2, 0xA4 lsls r2, 1 @@ -2533,7 +1642,7 @@ _0804F7B8: cmp r0, r4 beq _0804F7D6 bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 + ldr r1, _0804F804 @ =sBerryBlenderData ldr r1, [r1] movs r5, 0xBC lsls r5, 1 @@ -2544,7 +1653,7 @@ _0804F7D6: bl PlayBGM movs r0, 0x35 bl PlaySE - bl sub_804E290 + bl Blender_ControlHitPitch _0804F7E6: bl RunTasks bl AnimateSprites @@ -2557,7 +1666,7 @@ _0804F7E6: pop {r0} bx r0 .align 2, 0 -_0804F804: .4byte gUnknown_03004854 +_0804F804: .4byte sBerryBlenderData _0804F808: .4byte 0x0000014b _0804F80C: .4byte sub_80501FC _0804F810: .4byte gSpecialVar_0x8004 @@ -2661,7 +1770,7 @@ sub_804F8C8: @ 804F8C8 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 + ldr r4, _0804F934 @ =sBerryBlenderData ldr r0, [r4] adds r0, 0x54 ldrh r0, [r0] @@ -2712,7 +1821,7 @@ _0804F8FC: ldr r0, _0804F94C @ =0x00004523 b _0804F954 .align 2, 0 -_0804F934: .4byte gUnknown_03004854 +_0804F934: .4byte sBerryBlenderData _0804F938: .4byte gTasks _0804F93C: .4byte 0x0000014b _0804F940: .4byte 0x0000028f @@ -2813,7 +1922,7 @@ sub_804F9F4: @ 804F9F4 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 + ldr r6, _0804FA78 @ =sBerryBlenderData ldr r3, [r6] adds r0, r3, 0 adds r0, 0x54 @@ -2874,7 +1983,7 @@ sub_804F9F4: @ 804F9F4 strh r0, [r1, 0x14] b _0804FAD4 .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 +_0804FA78: .4byte sBerryBlenderData _0804FA7C: .4byte 0x0000ffff _0804FA80: .4byte gUnknown_08216303 _0804FA84: .4byte gTasks @@ -2957,7 +2066,7 @@ sub_804FB1C: @ 804FB1C push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 + ldr r5, _0804FB9C @ =sBerryBlenderData ldr r3, [r5] adds r0, r3, 0 adds r0, 0x54 @@ -3017,7 +2126,7 @@ sub_804FB1C: @ 804FB1C strh r0, [r1, 0x16] b _0804FC02 .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 +_0804FB9C: .4byte sBerryBlenderData _0804FBA0: .4byte 0x0000ffff _0804FBA4: .4byte gUnknown_08216303 _0804FBA8: .4byte gTasks @@ -3108,7 +2217,7 @@ sub_804FC48: @ 804FC48 mov r8, r7 lsls r1, 24 ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 + ldr r4, _0804FCC0 @ =sBlenderSyncArrowsPos lsrs r1, 23 adds r2, r1, r4 ldrb r6, [r2] @@ -3156,7 +2265,7 @@ sub_804FC48: @ 804FC48 b _0804FD18 .align 2, 0 _0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 +_0804FCC0: .4byte sBlenderSyncArrowsPos _0804FCC4: .4byte gUnknown_082162CC _0804FCC8: .4byte 0x00004523 _0804FCCC: .4byte gSprites @@ -3209,7 +2318,7 @@ sub_804FD30: @ 804FD30 lsls r0, 16 lsrs r4, r0, 16 adds r5, r4, 0 - bl sub_804E290 + bl Blender_ControlHitPitch ldr r0, _0804FD50 @ =0x00004523 cmp r4, r0 beq _0804FD64 @@ -3230,7 +2339,7 @@ _0804FD58: .align 2, 0 _0804FD60: .4byte 0x00005432 _0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 + ldr r7, _0804FD94 @ =sBerryBlenderData ldr r4, [r7] adds r5, r4, 0 adds r5, 0x56 @@ -3253,7 +2362,7 @@ _0804FD64: strh r0, [r5] b _0804FE60 .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 +_0804FD94: .4byte sBerryBlenderData _0804FD98: .4byte 0x000005db _0804FD9C: .4byte gUnknown_082165DA _0804FDA0: @@ -3299,7 +2408,7 @@ _0804FDA0: .align 2, 0 _0804FDF8: .4byte gUnknown_082165DA _0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 + ldr r0, _0804FE28 @ =sBerryBlenderData ldr r2, [r0] adds r4, r2, 0 adds r4, 0x56 @@ -3321,11 +2430,11 @@ _0804FDFC: adds r0, r5, r0 b _0804FE5E .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 +_0804FE28: .4byte sBerryBlenderData _0804FE2C: .4byte 0x000005db _0804FE30: .4byte gUnknown_082165DA _0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 + ldr r0, _0804FE68 @ =sBerryBlenderData ldr r0, [r0] adds r4, r0, 0 adds r4, 0x56 @@ -3352,7 +2461,7 @@ _0804FE60: pop {r0} bx r0 .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 +_0804FE68: .4byte sBerryBlenderData _0804FE6C: .4byte gUnknown_082165DA thumb_func_end sub_804FD30 @@ -3398,7 +2507,7 @@ _0804FEAC: bge _0804FEA4 _0804FEB6: movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 + ldr r7, _0804FF50 @ =sBerryBlenderData adds r1, r7, 0 ldr r0, [r1] adds r0, 0x88 @@ -3472,7 +2581,7 @@ _0804FF40: .4byte gSpecialVar_0x8004 _0804FF44: .4byte gSendCmd _0804FF48: .4byte gRecvCmds _0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 +_0804FF50: .4byte sBerryBlenderData _0804FF54: .4byte 0x00005432 _0804FF58: .4byte 0x00004523 _0804FF5C: .4byte 0x03e70000 @@ -3543,7 +2652,7 @@ _0804FFD6: cmp r0, r10 bne _0805003E _0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 + ldr r0, _08050024 @ =sBerryBlenderData ldr r0, [r0] adds r2, r0, 0 adds r2, 0x56 @@ -3570,7 +2679,7 @@ _0804FFE4: _08050018: .4byte 0x00002345 _0805001C: .4byte 0x000003e6 _08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 +_08050024: .4byte sBerryBlenderData _08050028: .4byte 0x000005dc _0805002C: .4byte 0xfffffd12 _08050030: .4byte gMPlay_BGM @@ -3588,7 +2697,7 @@ _0805003E: movs r0, 0x2 add r8, r0 adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 + ldr r7, _0805009C @ =sBerryBlenderData ldr r0, [r7] adds r0, 0x88 ldrb r0, [r0] @@ -3601,7 +2710,7 @@ _0805005C: cmp r0, 0 beq _08050088 movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 + ldr r3, _0805009C @ =sBerryBlenderData ldr r0, [r3] adds r0, 0x88 ldrb r0, [r0] @@ -3630,7 +2739,7 @@ _08050088: bx r0 .align 2, 0 _08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 +_0805009C: .4byte sBerryBlenderData _080500A0: .4byte gSpecialVar_0x8004 _080500A4: .4byte gRecvCmds thumb_func_end sub_804FE70 @@ -3639,7 +2748,7 @@ _080500A4: .4byte gRecvCmds sub_80500A8: @ 80500A8 push {r4-r6,lr} movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 + ldr r5, _080500EC @ =sBerryBlenderData ldr r4, [r5] bl GetMultiplayerId lsls r0, 24 @@ -3670,7 +2779,7 @@ sub_80500A8: @ 80500A8 lsrs r6, r0, 31 b _0805010A .align 2, 0 -_080500EC: .4byte gUnknown_03004854 +_080500EC: .4byte sBerryBlenderData _080500F0: .4byte gSaveBlock2 _080500F4: .4byte gMain _080500F8: .4byte 0x00000201 @@ -3685,7 +2794,7 @@ _080500FC: _0805010A: cmp r6, 0 beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 + ldr r4, _08050160 @ =sBerryBlenderData ldr r1, [r4] lsls r2, r3, 1 adds r0, r1, 0 @@ -3722,7 +2831,7 @@ _0805010A: b _08050188 .align 2, 0 _0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 +_08050160: .4byte sBerryBlenderData _08050164: .4byte gSprites _08050168: .4byte gSendCmd _0805016C: .4byte 0x00004523 @@ -3741,7 +2850,7 @@ _08050184: _08050188: strh r0, [r1, 0x4] _0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 + ldr r2, _080501EC @ =sBerryBlenderData ldr r1, [r2] adds r1, 0x7E ldrb r0, [r1] @@ -3792,7 +2901,7 @@ _080501DE: .align 2, 0 _080501E4: .4byte gSendCmd _080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 +_080501EC: .4byte sBerryBlenderData _080501F0: .4byte gUnknown_020297ED _080501F4: .4byte gMain _080501F8: .4byte 0x0000014b @@ -3802,7 +2911,7 @@ _080501F8: .4byte 0x0000014b sub_80501FC: @ 80501FC push {r4-r6,lr} bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 + ldr r4, _08050294 @ =sBerryBlenderData ldr r0, [r4] movs r1, 0x96 lsls r1, 1 @@ -3866,7 +2975,7 @@ _0805027E: pop {r0} bx r0 .align 2, 0 -_08050294: .4byte gUnknown_03004854 +_08050294: .4byte sBerryBlenderData _08050298: .4byte 0x00057e03 _0805029C: .4byte 0x000003e7 _080502A0: .4byte sub_8050954 @@ -4552,7 +3661,7 @@ sub_8050744: @ 8050744 thumb_func_start sub_8050760 sub_8050760: @ 8050760 push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 + ldr r0, _08050780 @ =sBerryBlenderData ldr r0, [r0] movs r2, 0x96 lsls r2, 1 @@ -4567,7 +3676,7 @@ sub_8050760: @ 8050760 movs r2, 0x5 b _080507DA .align 2, 0 -_08050780: .4byte gUnknown_03004854 +_08050780: .4byte sBerryBlenderData _08050784: .4byte 0x00000383 _08050788: ldr r3, _0805079C @ =0xfffffc7c @@ -4743,7 +3852,7 @@ _080508D0: .4byte 0x0000fff6 thumb_func_start sub_80508D4 sub_80508D4: @ 80508D4 push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 + ldr r2, _080508F8 @ =sBerryBlenderData ldr r1, [r2] adds r1, 0xAA strb r0, [r1] @@ -4760,14 +3869,14 @@ sub_80508D4: @ 80508D4 pop {r0} bx r0 .align 2, 0 -_080508F8: .4byte gUnknown_03004854 +_080508F8: .4byte sBerryBlenderData thumb_func_end sub_80508D4 thumb_func_start sub_80508FC sub_80508FC: @ 80508FC push {r4,lr} sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 + ldr r4, _08050944 @ =sBerryBlenderData ldr r0, [r4] adds r0, 0xAA movs r1, 0 @@ -4797,7 +3906,7 @@ sub_80508FC: @ 80508FC pop {r0} bx r0 .align 2, 0 -_08050944: .4byte gUnknown_03004854 +_08050944: .4byte sBerryBlenderData _08050948: .4byte 0x0000ffff _0805094C: .4byte 0x00002d9f _08050950: .4byte gOtherText_YesNoTerminating @@ -4808,7 +3917,7 @@ sub_8050954: @ 8050954 push {r4-r7,lr} bl sub_8051474 bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 + ldr r0, _08050978 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0x6F ldrb r0, [r0] @@ -4823,7 +3932,7 @@ _0805096E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08050978: .4byte gUnknown_03004854 +_08050978: .4byte sBerryBlenderData _0805097C: .4byte _08050980 .align 2, 0 _08050980: @@ -4851,7 +3960,7 @@ _080509B4: .align 2, 0 _080509C8: .4byte gMPlay_BGM _080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 + ldr r0, _080509F0 @ =sBerryBlenderData ldr r0, [r0] movs r1, 0xA4 lsls r1, 1 @@ -4869,10 +3978,10 @@ _080509E4: bcc _080509CC b _08050C82 .align 2, 0 -_080509F0: .4byte gUnknown_03004854 +_080509F0: .4byte sBerryBlenderData _080509F4: .4byte gSpecialVar_0x8004 _080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 + ldr r1, _08050A24 @ =sBerryBlenderData ldr r3, [r1] adds r2, r3, 0 adds r2, 0x56 @@ -4895,7 +4004,7 @@ _080509F8: adds r0, 0x1 b _08050A32 .align 2, 0 -_08050A24: .4byte gUnknown_03004854 +_08050A24: .4byte sBerryBlenderData _08050A28: .4byte gReceivedRemoteLinkPlayers _08050A2C: adds r1, r3, 0 @@ -4909,7 +4018,7 @@ _08050A32: ldr r0, _08050A48 @ =gMPlay_SE2 bl m4aMPlayStop _08050A40: - bl sub_804E290 + bl Blender_ControlHitPitch b _08050CB6 .align 2, 0 _08050A48: .4byte gMPlay_SE2 @@ -4926,7 +4035,7 @@ _08050A58: bne _08050A64 b _08050CB6 _08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 + ldr r4, _08050A90 @ =sBerryBlenderData ldr r3, [r4] movs r2, 0xDE lsls r2, 1 @@ -4948,7 +4057,7 @@ _08050A64: ldr r1, [r4] b _08050C86 .align 2, 0 -_08050A90: .4byte gUnknown_03004854 +_08050A90: .4byte sBerryBlenderData _08050A94: bl GetBlockReceivedStatus lsls r0, 24 @@ -4957,7 +4066,7 @@ _08050A94: b _08050CB6 _08050AA0: ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 + ldr r0, _08050ACC @ =sBerryBlenderData ldr r3, [r0] ldrh r0, [r2, 0x4] adds r1, r3, 0 @@ -4977,7 +4086,7 @@ _08050AA0: b _08050CB6 .align 2, 0 _08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 +_08050ACC: .4byte sBerryBlenderData _08050AD0: bl sub_8052228 lsls r0, 24 @@ -5007,7 +4116,7 @@ _08050B00: bl IncrementGameStat b _08050C82 _08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 + ldr r0, _08050B2C @ =sBerryBlenderData ldr r1, [r0] adds r1, 0x6F ldrb r0, [r1] @@ -5024,7 +4133,7 @@ _08050B08: bl MenuPrintMessage b _08050CB6 .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 +_08050B2C: .4byte sBerryBlenderData _08050B30: .4byte gOtherText_BlendAnotherBerryPrompt _08050B34: bl MenuUpdateWindowText @@ -5035,7 +4144,7 @@ _08050B34: _08050B40: b _08050C82 _08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 + ldr r4, _08050B54 @ =sBerryBlenderData ldr r0, [r4] adds r0, 0xAA movs r1, 0 @@ -5044,7 +4153,7 @@ _08050B42: ldr r1, [r4] b _08050C86 .align 2, 0 -_08050B54: .4byte gUnknown_03004854 +_08050B54: .4byte sBerryBlenderData _08050B58: ldr r0, _08050B80 @ =gMain ldrh r1, [r0, 0x2E] @@ -5052,7 +4161,7 @@ _08050B58: ands r0, r1 cmp r0, 0 beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 + ldr r0, _08050B84 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0xAA ldrb r0, [r0] @@ -5066,13 +4175,13 @@ _08050B76: b _08050CB6 .align 2, 0 _08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 +_08050B84: .4byte sBerryBlenderData _08050B88: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 + ldr r0, _08050BA4 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0xAA ldrb r0, [r0] @@ -5082,7 +4191,7 @@ _08050B88: bl PlaySE b _08050BD4 .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 +_08050BA4: .4byte sBerryBlenderData _08050BA8: movs r0, 0x1 ands r0, r1 @@ -5100,7 +4209,7 @@ _08050BB8: _08050BC2: movs r0, 0x5 bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 + ldr r0, _08050BDC @ =sBerryBlenderData ldr r1, [r0] adds r1, 0x6F ldrb r0, [r1] @@ -5111,13 +4220,13 @@ _08050BD4: bl sub_80508D4 b _08050CB6 .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 +_08050BDC: .4byte sBerryBlenderData _08050BE0: ldr r6, _08050C10 @ =gSendCmd movs r7, 0 ldr r0, _08050C14 @ =0x00002fff strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 + ldr r4, _08050C18 @ =sBerryBlenderData ldr r2, [r4] adds r0, r2, 0 adds r0, 0xAA @@ -5138,7 +4247,7 @@ _08050BE0: .align 2, 0 _08050C10: .4byte gSendCmd _08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 +_08050C18: .4byte sBerryBlenderData _08050C1C: .4byte 0x00009999 _08050C20: bl sub_810CA00 @@ -5193,7 +4302,7 @@ _08050C78: movs r2, 0xF bl MenuPrintMessage _08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 + ldr r0, _08050C94 @ =sBerryBlenderData ldr r1, [r0] _08050C86: adds r1, 0x6F @@ -5204,7 +4313,7 @@ _08050C88: b _08050CB6 .align 2, 0 _08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 +_08050C94: .4byte sBerryBlenderData _08050C98: bl MenuUpdateWindowText lsls r0, 24 @@ -5213,7 +4322,7 @@ _08050C98: ldr r0, _08050CE0 @ =sub_8050E30 _08050CA4: bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 + ldr r2, _08050CE4 @ =sBerryBlenderData ldr r0, [r2] adds r0, 0x6F movs r1, 0 @@ -5222,7 +4331,7 @@ _08050CA4: strb r1, [r0] _08050CB6: bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 + ldr r0, _08050CE4 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0x56 ldrh r0, [r0] @@ -5237,13 +4346,13 @@ _08050CB6: bx r0 .align 2, 0 _08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 +_08050CE4: .4byte sBerryBlenderData thumb_func_end sub_8050954 thumb_func_start sub_8050CE8 sub_8050CE8: @ 8050CE8 push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 + ldr r1, _08050D08 @ =sBerryBlenderData ldr r0, [r1] movs r2, 0xE2 lsls r2, 1 @@ -5260,7 +4369,7 @@ _08050CFE: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08050D08: .4byte gUnknown_03004854 +_08050D08: .4byte sBerryBlenderData _08050D0C: .4byte _08050D10 .align 2, 0 _08050D10: @@ -5273,7 +4382,7 @@ _08050D10: .4byte _08050E06 _08050D2C: bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 + ldr r0, _08050D40 @ =sBerryBlenderData ldr r2, [r0] movs r3, 0xE2 lsls r3, 1 @@ -5281,13 +4390,13 @@ _08050D2C: movs r0, 0x1 b _08050DF8 .align 2, 0 -_08050D40: .4byte gUnknown_03004854 +_08050D40: .4byte sBerryBlenderData _08050D44: bl sub_8007ECC lsls r0, 24 cmp r0, 0 beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 + ldr r0, _08050D68 @ =sBerryBlenderData ldr r1, [r0] movs r2, 0xE2 lsls r2, 1 @@ -5300,15 +4409,15 @@ _08050D44: strb r0, [r1] b _08050E28 .align 2, 0 -_08050D68: .4byte gUnknown_03004854 +_08050D68: .4byte sBerryBlenderData _08050D6C: .4byte gSoftResetDisabled _08050D70: bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 + ldr r0, _08050D7C @ =sBerryBlenderData ldr r2, [r0] b _08050DEE .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 +_08050D7C: .4byte sBerryBlenderData _08050D80: ldr r1, [r4] movs r2, 0x98 @@ -5338,7 +4447,7 @@ _08050DA6: lsrs r2, r0, 24 cmp r2, 0 beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 + ldr r0, _08050DCC @ =sBerryBlenderData ldr r0, [r0] movs r1, 0xE2 lsls r1, 1 @@ -5347,9 +4456,9 @@ _08050DA6: str r1, [r0] b _08050E28 .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 +_08050DCC: .4byte sBerryBlenderData _08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 + ldr r0, _08050DE8 @ =sBerryBlenderData ldr r1, [r0] movs r3, 0x98 lsls r3, 1 @@ -5362,7 +4471,7 @@ _08050DD0: str r0, [r1] b _08050E28 .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 +_08050DE8: .4byte sBerryBlenderData _08050DEC: ldr r2, [r4] _08050DEE: @@ -5408,7 +4517,7 @@ _08050E2A: sub_8050E30: @ 8050E30 push {r4,r5,lr} sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 + ldr r1, _08050E50 @ =sBerryBlenderData ldr r0, [r1] adds r0, 0x6F ldrb r0, [r0] @@ -5423,7 +4532,7 @@ _08050E44: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08050E50: .4byte gUnknown_03004854 +_08050E50: .4byte sBerryBlenderData _08050E54: .4byte _08050E58 .align 2, 0 _08050E58: @@ -5550,7 +4659,7 @@ _08050F6C: bne _08050F78 b _080510C4 _08050F78: - ldr r0, _08050F88 @ =gUnknown_03004854 + ldr r0, _08050F88 @ =sBerryBlenderData ldr r1, [r0] movs r0, 0x98 lsls r0, 1 @@ -5559,7 +4668,7 @@ _08050F78: str r0, [r2] b _080510AC .align 2, 0 -_08050F88: .4byte gUnknown_03004854 +_08050F88: .4byte sBerryBlenderData _08050F8C: ldr r2, [r5] movs r0, 0x98 @@ -5589,18 +4698,18 @@ _08050FAA: movs r2, 0xF bl MenuPrint bl sub_80084A4 - ldr r0, _08050FD0 @ =gUnknown_03004854 + ldr r0, _08050FD0 @ =sBerryBlenderData ldr r1, [r0] b _080510AC .align 2, 0 _08050FCC: .4byte gMultiText_Saving -_08050FD0: .4byte gUnknown_03004854 +_08050FD0: .4byte sBerryBlenderData _08050FD4: bl sub_8007ECC lsls r0, 24 cmp r0, 0 beq _080510C4 - ldr r3, _08051000 @ =gUnknown_03004854 + ldr r3, _08051000 @ =sBerryBlenderData ldr r1, [r3] movs r2, 0x98 lsls r2, 1 @@ -5618,7 +4727,7 @@ _08050FD4: str r2, [r0] b _080510C4 .align 2, 0 -_08051000: .4byte gUnknown_03004854 +_08051000: .4byte sBerryBlenderData _08051004: bl sub_8050CE8 lsls r0, 24 @@ -5626,11 +4735,11 @@ _08051004: beq _080510C4 movs r0, 0x37 bl PlaySE - ldr r0, _0805101C @ =gUnknown_03004854 + ldr r0, _0805101C @ =sBerryBlenderData ldr r1, [r0] b _080510AC .align 2, 0 -_0805101C: .4byte gUnknown_03004854 +_0805101C: .4byte sBerryBlenderData _08051020: ldr r1, [r5] adds r1, 0x6F @@ -5651,11 +4760,11 @@ _08051030: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _08051050 @ =gUnknown_03004854 + ldr r0, _08051050 @ =sBerryBlenderData ldr r1, [r0] b _080510AC .align 2, 0 -_08051050: .4byte gUnknown_03004854 +_08051050: .4byte sBerryBlenderData _08051054: ldr r0, _0805107C @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -5729,7 +4838,7 @@ _080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_start sub_80510E8 sub_80510E8: @ 80510E8 push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 + ldr r1, _08051104 @ =sBerryBlenderData ldr r0, [r1] adds r0, 0x6F ldrb r0, [r0] @@ -5744,7 +4853,7 @@ _080510FA: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08051104: .4byte gUnknown_03004854 +_08051104: .4byte sBerryBlenderData _08051108: .4byte _0805110C .align 2, 0 _0805110C: @@ -5829,18 +4938,18 @@ _080511BC: lsls r0, 24 cmp r0, 0 beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 + ldr r0, _080511D4 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0x6F movs r1, 0x9 strb r1, [r0] b _0805121E .align 2, 0 -_080511D4: .4byte gUnknown_03004854 +_080511D4: .4byte sBerryBlenderData _080511D8: movs r0, 0x3 bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 + ldr r0, _080511EC @ =sBerryBlenderData ldr r1, [r0] adds r1, 0x6F ldrb r0, [r1] @@ -5848,7 +4957,7 @@ _080511D8: strb r0, [r1] b _0805121E .align 2, 0 -_080511EC: .4byte gUnknown_03004854 +_080511EC: .4byte sBerryBlenderData _080511F0: ldr r0, _08051210 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -5920,13 +5029,13 @@ _08051284: _08051286: cmp r3, r0 beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 + ldr r2, _08051294 @ =sBerryBlenderData b _080512A8 .align 2, 0 _08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 +_08051294: .4byte sBerryBlenderData _08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 + ldr r2, _080512B0 @ =sBerryBlenderData ldr r0, [r2] adds r1, r0, 0 adds r1, 0x78 @@ -5940,13 +5049,13 @@ _080512A8: ldr r1, _080512B4 @ =0x00001111 b _080512C4 .align 2, 0 -_080512B0: .4byte gUnknown_03004854 +_080512B0: .4byte sBerryBlenderData _080512B4: .4byte 0x00001111 _080512B8: ldr r0, _080512F4 @ =0x00002222 cmp r1, r0 bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 + ldr r0, _080512F8 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0x70 _080512C4: @@ -5958,7 +5067,7 @@ _080512C6: beq _080512D2 b _08051404 _080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 + ldr r2, _080512F8 @ =sBerryBlenderData ldr r0, [r2] adds r0, 0x70 ldrh r1, [r0] @@ -5978,7 +5087,7 @@ _080512EA: b _0805134E .align 2, 0 _080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 +_080512F8: .4byte sBerryBlenderData _080512FC: .4byte 0x00001111 _08051300: .4byte 0x00002fff _08051304: @@ -6041,7 +5150,7 @@ _0805136E: lsrs r0, 24 cmp r4, r0 bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 + ldr r0, _0805139C @ =sBerryBlenderData ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x70 @@ -6059,7 +5168,7 @@ _0805138A: ldr r5, _080513A0 @ =0x00007779 b _080513AA .align 2, 0 -_0805139C: .4byte gUnknown_03004854 +_0805139C: .4byte sBerryBlenderData _080513A0: .4byte 0x00007779 _080513A4: adds r0, r4, 0x1 @@ -6071,7 +5180,7 @@ _080513AA: lsrs r0, 24 cmp r4, r0 bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 + ldr r0, _080513E0 @ =sBerryBlenderData ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x70 @@ -6093,14 +5202,14 @@ _080513C6: strh r0, [r5, 0x2] b _08051404 .align 2, 0 -_080513E0: .4byte gUnknown_03004854 +_080513E0: .4byte sBerryBlenderData _080513E4: .4byte gSendCmd _080513E8: .4byte 0x00002fff _080513EC: .4byte 0x00002222 _080513F0: ldr r0, _0805140C @ =0x00001111 strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 + ldr r0, _08051410 @ =sBerryBlenderData ldr r0, [r0] lsls r1, r4, 1 adds r0, 0x70 @@ -6114,7 +5223,7 @@ _08051404: bx r0 .align 2, 0 _0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 +_08051410: .4byte sBerryBlenderData thumb_func_end sub_805123C thumb_func_start sub_8051414 @@ -6129,7 +5238,7 @@ sub_8051414: @ 8051414 lsls r0, 7 str r0, [sp, 0x4] mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 + ldr r0, _08051470 @ =sBerryBlenderData ldr r0, [r0] mov r12, r0 movs r0, 0xA2 @@ -6165,13 +5274,13 @@ sub_8051414: @ 8051414 pop {r0} bx r0 .align 2, 0 -_08051470: .4byte gUnknown_03004854 +_08051470: .4byte sBerryBlenderData thumb_func_end sub_8051414 thumb_func_start sub_8051474 sub_8051474: @ 8051474 push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 + ldr r0, _080514A0 @ =sBerryBlenderData ldr r3, [r0] adds r1, r3, 0 adds r1, 0x54 @@ -6191,13 +5300,13 @@ sub_8051474: @ 8051474 pop {r0} bx r0 .align 2, 0 -_080514A0: .4byte gUnknown_03004854 +_080514A0: .4byte sBerryBlenderData thumb_func_end sub_8051474 thumb_func_start sub_80514A4 sub_80514A4: @ 80514A4 ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 + ldr r0, _080514EC @ =sBerryBlenderData ldr r2, [r0] movs r3, 0xB4 lsls r3, 1 @@ -6232,13 +5341,13 @@ sub_80514A4: @ 80514A4 bx lr .align 2, 0 _080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 +_080514EC: .4byte sBerryBlenderData thumb_func_end sub_80514A4 thumb_func_start sub_80514F0 sub_80514F0: @ 80514F0 ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 + ldr r0, _08051520 @ =sBerryBlenderData ldr r3, [r0] movs r0, 0xA2 lsls r0, 1 @@ -6260,7 +5369,7 @@ sub_80514F0: @ 80514F0 bx lr .align 2, 0 _0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 +_08051520: .4byte sBerryBlenderData thumb_func_end sub_80514F0 thumb_func_start sub_8051524 @@ -6330,7 +5439,7 @@ sub_805156C: @ 805156C movs r7, 0x10 _08051598: bl Random - ldr r1, _08051640 @ =gUnknown_03004854 + ldr r1, _08051640 @ =sBerryBlenderData ldr r4, [r1] adds r4, 0x54 lsls r0, 16 @@ -6409,7 +5518,7 @@ _08051628: .align 2, 0 _08051638: .4byte gSineTable _0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 +_08051640: .4byte sBerryBlenderData _08051644: .4byte gSpriteTemplate_82164FC _08051648: .4byte gSprites + 0x1C _0805164C: .4byte sub_8051524 @@ -6487,7 +5596,7 @@ sub_80516C4: @ 80516C4 lsrs r0, 24 lsls r1, 16 lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 + ldr r2, _080516F4 @ =sBerryBlenderData ldr r3, [r2] lsls r4, r0, 1 adds r2, r3, 0 @@ -6500,12 +5609,12 @@ sub_80516C4: @ 80516C4 adds r0, r2 adds r3, r0 adds r0, r3, 0 - bl sub_804E844 + bl Blender_CopyBerryData pop {r4} pop {r0} bx r0 .align 2, 0 -_080516F4: .4byte gUnknown_03004854 +_080516F4: .4byte sBerryBlenderData thumb_func_end sub_80516C4 thumb_func_start unref_sub_80516F8 @@ -6542,7 +5651,7 @@ _08051730: ldrsh r0, [r4, r1] cmp r0, 0x64 bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 + ldr r0, _080517C0 @ =sBerryBlenderData ldr r0, [r0] adds r0, 0x4 movs r1, 0x14 @@ -6605,7 +5714,7 @@ _080517A0: .align 2, 0 _080517B8: .4byte gTasks _080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 +_080517C0: .4byte sBerryBlenderData _080517C4: .4byte gLinkPlayers + 0x4 _080517C8: .4byte gUnknown_08216284 _080517CC: .4byte gOtherText_PressAToStart @@ -6795,7 +5904,7 @@ _0805191E: asrs r0, 16 cmp r0, 0xB0 ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 + ldr r0, _08051948 @ =sBerryBlenderData ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -6809,7 +5918,7 @@ _0805193C: pop {r0} bx r0 .align 2, 0 -_08051948: .4byte gUnknown_03004854 +_08051948: .4byte sBerryBlenderData thumb_func_end sub_80518CC thumb_func_start sub_805194C @@ -6819,7 +5928,7 @@ sub_805194C: @ 805194C lsrs r0, 16 lsls r1, 16 lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 + ldr r1, _08051978 @ =sBerryBlenderData ldr r1, [r1] movs r2, 0xA0 lsls r2, 1 @@ -6836,7 +5945,7 @@ _08051972: pop {r0} bx r0 .align 2, 0 -_08051978: .4byte gUnknown_03004854 +_08051978: .4byte sBerryBlenderData thumb_func_end sub_805194C thumb_func_start sub_805197C @@ -6954,7 +6063,7 @@ sub_8051A3C: @ 8051A3C lsrs r0, 16 bl sub_8051A1C adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 + ldr r0, _08051ABC @ =sBerryBlenderData ldr r0, [r0] adds r1, r0, 0 adds r1, 0x5A @@ -7012,7 +6121,7 @@ _08051A5C: pop {r0} bx r0 .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 +_08051ABC: .4byte sBerryBlenderData _08051AC0: .4byte 0x06006458 _08051AC4: .4byte 0x00008172 thumb_func_end sub_8051A3C @@ -7068,7 +6177,7 @@ _08051B14: thumb_func_start sub_8051B18 sub_8051B18: @ 8051B18 push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 + ldr r4, _08051B3C @ =sBerryBlenderData ldr r0, [r4] movs r1, 0xA2 lsls r1, 1 @@ -7083,7 +6192,7 @@ sub_8051B18: @ 8051B18 pop {r0} bx r0 .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 +_08051B3C: .4byte sBerryBlenderData thumb_func_end sub_8051B18 thumb_func_start sub_8051B40 @@ -7133,7 +6242,7 @@ _08051B84: thumb_func_start sub_8051B8C sub_8051B8C: @ 8051B8C push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 + ldr r5, _08051BE4 @ =sBerryBlenderData ldr r2, [r5] movs r4, 0x98 lsls r4, 1 @@ -7175,7 +6284,7 @@ _08051BAC: movs r0, 0 b _08051BFC .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 +_08051BE4: .4byte sBerryBlenderData _08051BE8: movs r1, 0xA2 lsls r1, 1 @@ -7195,7 +6304,7 @@ _08051BFC: thumb_func_start sub_8051C04 sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 + ldr r1, _08051C20 @ =sBerryBlenderData ldr r2, [r1] movs r3, 0xA2 lsls r3, 1 @@ -7210,14 +6319,14 @@ sub_8051C04: @ 8051C04 strh r1, [r0, 0x26] bx lr .align 2, 0 -_08051C20: .4byte gUnknown_03004854 +_08051C20: .4byte sBerryBlenderData thumb_func_end sub_8051C04 thumb_func_start sub_8051C24 sub_8051C24: @ 8051C24 push {lr} ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 + ldr r0, _08051C50 @ =sBerryBlenderData ldr r1, [r0] adds r0, r1, 0 adds r0, 0x88 @@ -7238,7 +6347,7 @@ _08051C48: bx r0 .align 2, 0 _08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 +_08051C50: .4byte sBerryBlenderData _08051C54: .4byte 0x0000096c thumb_func_end sub_8051C24 @@ -7250,7 +6359,7 @@ sub_8051C58: @ 8051C58 mov r5, r8 push {r5-r7} sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 + ldr r1, _08051C7C @ =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] adds r2, r1, 0 @@ -7264,7 +6373,7 @@ _08051C72: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 +_08051C7C: .4byte sBerryBlenderData _08051C80: .4byte _08051C84 .align 2, 0 _08051C84: @@ -7316,7 +6425,7 @@ _08051CD0: _08051CE4: movs r6, 0 _08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 + ldr r4, _08051D18 @ =sBerryBlenderData ldr r0, [r4] adds r0, 0x50 adds r0, r6 @@ -7340,7 +6449,7 @@ _08051CE6: str r0, [r2] b _08051FE2 .align 2, 0 -_08051D18: .4byte gUnknown_03004854 +_08051D18: .4byte sBerryBlenderData _08051D1C: .4byte gSprites _08051D20: movs r0, 0x4 @@ -7354,7 +6463,7 @@ _08051D20: movs r3, 0xA0 bl sub_8072BD8 movs r6, 0 - ldr r1, _08051F18 @ =gUnknown_03004854 + ldr r1, _08051F18 @ =sBerryBlenderData ldr r0, [r1] adds r0, 0x88 add r2, sp, 0xC @@ -7450,7 +6559,7 @@ _08051D56: cmp r6, r0 bcc _08051D56 _08051E04: - ldr r6, _08051F18 @ =gUnknown_03004854 + ldr r6, _08051F18 @ =sBerryBlenderData ldr r0, [r6] adds r0, 0x5A ldrh r0, [r0] @@ -7569,7 +6678,7 @@ _08051E04: b _08051FE2 .align 2, 0 _08051F14: .4byte gOtherText_ResultsOfBlending -_08051F18: .4byte gUnknown_03004854 +_08051F18: .4byte sBerryBlenderData _08051F1C: .4byte gLinkPlayers _08051F20: .4byte gOtherText_Berry _08051F24: .4byte gLinkPlayers + 0x8 @@ -7600,7 +6709,7 @@ _08051F58: bl MenuDrawTextWindow movs r6, 0 add r5, sp, 0x28 - ldr r0, _08051FEC @ =gUnknown_03004854 + ldr r0, _08051FEC @ =sBerryBlenderData ldr r0, [r0] adds r3, r0, 0 adds r3, 0x80 @@ -7621,7 +6730,7 @@ _08051F86: cmp r6, 0x3 bls _08051F76 bl sub_8050760 - ldr r4, _08051FEC @ =gUnknown_03004854 + ldr r4, _08051FEC @ =sBerryBlenderData ldr r3, [r4] movs r1, 0xBE lsls r1, 1 @@ -7660,7 +6769,7 @@ _08051FE2: strb r0, [r1] b _0805200A .align 2, 0 -_08051FEC: .4byte gUnknown_03004854 +_08051FEC: .4byte sBerryBlenderData _08051FF0: .4byte sub_8052BD0 _08051FF4: .4byte gScriptItemId _08051FF8: @@ -7819,7 +6928,7 @@ sub_8052124: @ 8052124 push {r5-r7} sub sp, 0x18 movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 + ldr r1, _08052144 @ =sBerryBlenderData ldr r0, [r1] adds r0, 0x88 mov r10, r1 @@ -7828,7 +6937,7 @@ sub_8052124: @ 8052124 str r2, [sp, 0x14] b _08052158 .align 2, 0 -_08052144: .4byte gUnknown_03004854 +_08052144: .4byte sBerryBlenderData _08052148: mov r4, sp adds r0, r4, r5 @@ -7953,7 +7062,7 @@ sub_8052228: @ 8052228 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 + ldr r1, _08052248 @ =sBerryBlenderData ldr r0, [r1] ldrb r0, [r0] adds r2, r1, 0 @@ -7967,7 +7076,7 @@ _0805223C: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08052248: .4byte gUnknown_03004854 +_08052248: .4byte sBerryBlenderData _0805224C: .4byte _08052250 .align 2, 0 _08052250: @@ -8037,7 +7146,7 @@ _080522B6: movs r2, 0x34 movs r3, 0 bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 + ldr r7, _08052374 @ =sBerryBlenderData ldr r1, [r7] adds r1, 0x50 strb r0, [r1] @@ -8107,7 +7216,7 @@ _080522B6: .align 2, 0 _0805236C: .4byte gOtherText_Ranking _08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 +_08052374: .4byte sBerryBlenderData _08052378: .4byte gSprites _0805237C: .4byte SpriteCallbackDummy _08052380: @@ -8205,7 +7314,7 @@ _0805243C: ldrb r0, [r0] cmp r8, r0 bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 + ldr r0, _08052460 @ =sBerryBlenderData ldr r1, [r0] movs r0, 0x98 lsls r0, 1 @@ -8216,7 +7325,7 @@ _0805243C: .align 2, 0 _08052458: .4byte gLinkPlayers + 0x8 _0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 +_08052460: .4byte sBerryBlenderData _08052464: ldr r2, [r2] movs r0, 0x98 @@ -8240,7 +7349,7 @@ _0805247E: beq _080524AE movs r0, 0x5 bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 + ldr r0, _080524A0 @ =sBerryBlenderData ldr r1, [r0] _08052494: ldrb r0, [r1] @@ -8249,7 +7358,7 @@ _08052494: b _080524AE .align 2, 0 _0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 +_080524A0: .4byte sBerryBlenderData _080524A4: ldr r1, [r2] movs r0, 0 @@ -8272,7 +7381,7 @@ unref_sub_80524BC: @ 80524BC bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 + ldr r0, _0805251C @ =VBlankCB1_BerryBlender bl SetVBlankCallback ldr r4, _08052520 @ =gWindowConfig_81E6CE4 adds r0, r4, 0 @@ -8305,7 +7414,7 @@ unref_sub_80524BC: @ 80524BC pop {r0} bx r0 .align 2, 0 -_0805251C: .4byte sub_804E2D8 +_0805251C: .4byte VBlankCB1_BerryBlender _08052520: .4byte gWindowConfig_81E6CE4 _08052524: .4byte gMain _08052528: .4byte gUnknown_03000560 @@ -8945,7 +8054,7 @@ _08052A26: adds r1, 0x85 lsls r1, 16 lsrs r1, 16 - bl sub_804E844 + bl Blender_CopyBerryData adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 @@ -9144,7 +8253,7 @@ _08052BF6: lsls r0, 24 cmp r0, 0 beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 + ldr r0, _08052C24 @ =sBerryBlenderData ldr r0, [r0] movs r1, 0xBC lsls r1, 1 @@ -9160,5 +8269,5 @@ _08052C16: .align 2, 0 _08052C1C: .4byte gTasks _08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 +_08052C24: .4byte sBerryBlenderData thumb_func_end sub_8052BD0 diff --git a/data/berry_blender.s b/data/berry_blender.s index ff0f06473..4c097bc20 100644 --- a/data/berry_blender.s +++ b/data/berry_blender.s @@ -102,7 +102,7 @@ gUnknown_082162D4:: @ 82162D4 .byte 1, 12 .byte 22, 12 -gUnknown_082162E4:: @ 82162E4 +sBlenderSyncArrowsPos:: @ 82162E4 .byte 72, 32 .byte 168, 32 .byte 72, 128 @@ -241,7 +241,7 @@ gUnknown_082163EC:: @ 82163EC obj_pal gBerryBlenderArrowPalette, 12312 .align 2 -gSpriteTemplate_82163F4:: @ 82163F4 +sBlenderSyncArrow_SpriteTemplate:: @ 82163F4 spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04 .align 2 diff --git a/ld_script.txt b/ld_script.txt index a0054668e..b58196615 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -84,6 +84,7 @@ SECTIONS { asm/trade.o(.text.sub_804A9F4); src/trade.o(.text.sub_804DAD4); asm/trade.o(.text.sub_804DB2C); + src/berry_blender.o(.text); asm/berry_blender.o(.text); src/play_time.o(.text); src/new_game.o(.text); diff --git a/src/berry_blender.c b/src/berry_blender.c new file mode 100644 index 000000000..7e7f58db7 --- /dev/null +++ b/src/berry_blender.c @@ -0,0 +1,903 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" +#include "text_window.h" +#include "menu.h" +#include "strings2.h" +#include "sound.h" +#include "berry.h" +#include "string_util.h" +#include "link.h" +#include "task.h" + +//needed to match Blender_ControlHitPitch +struct MusicPlayerInfo +{ + struct SongHeader *songHeader; + u32 status; + u8 trackCount; + u8 priority; + u8 cmd; + u8 unk_B; + u32 clock; + u8 gap[8]; + u8 *memAccArea; + u16 tempoD; + u16 tempoU; + u16 tempoI; + u16 tempoC; + u16 fadeOI; + u16 fadeOC; + u16 fadeOV; + struct MusicPlayerTrack *tracks; + struct ToneData *tone; + u32 ident; + u32 func; + u32 intp; +}; + +// other files functions +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void sub_80A6978(void); +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); + +#define BLENDER_MAX_PLAYERS 4 + +struct BlenderBerry +{ + u16 field_0; + u8 name[7]; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 smoothness; +}; + +struct BerryBlenderData +{ + u8 field_0; + u8 field_1; + u8 field_2; + u8 field_3; + u8 field_4; + u8 field_5; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; + u8 field_A; + u8 field_B; + u8 field_C; + u8 field_D; + u8 field_E; + u8 field_F; + u8 field_10; + u8 field_11; + u8 field_12; + u8 field_13; + u8 field_14; + u8 field_15; + u8 field_16; + u8 field_17; + u8 field_18; + u8 field_19; + u8 field_1A; + u8 field_1B; + u8 field_1C; + u8 field_1D; + u8 field_1E; + u8 field_1F; + u8 field_20; + u8 field_21; + u8 field_22; + u8 field_23; + u8 field_24; + u8 field_25; + u8 field_26; + u8 field_27; + u8 field_28; + u8 field_29; + u8 field_2A; + u8 field_2B; + u8 field_2C; + u8 field_2D; + u8 field_2E; + u8 field_2F; + u8 field_30; + u8 field_31; + u8 field_32; + u8 field_33; + u8 field_34; + u8 field_35; + u8 field_36; + u8 field_37; + u8 field_38; + u8 field_39; + u8 field_3A; + u8 field_3B; + u8 field_3C; + u8 field_3D; + u8 field_3E; + u8 field_3F; + u8 field_40; + u8 field_41; + u8 field_42; + u8 field_43; + u8 field_44; + u8 field_45; + u8 field_46; + u8 field_47; + u8 field_48; + u8 field_49; + u8 field_4A; + u8 field_4B; + u8 field_4C; + u8 field_4D; + u16 field_4E; + u8 field_50; + u8 field_51; + u8 field_52; + u8 field_53; + u16 field_54; + s16 hitPitch; //56 + u8 field_58; + u8 field_59; + u16 field_5A; + u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; + u8 field_60; + u8 field_61; + u8 field_62; + u8 field_63; + u8 field_64; + u8 field_65; + u8 field_66; + u8 field_67; + u8 field_68; + u8 field_69; + u8 field_6A; + u8 field_6B; + u8 field_6C; + u8 field_6D; + u8 field_6E; + u8 field_6F; + u16 field_70[BLENDER_MAX_PLAYERS]; + u8 field_78; + u8 field_79; + u8 field_7A; + u8 field_7B; + u16 field_7C; + u8 field_7E; + u8 field_7F; + u16 field_80[BLENDER_MAX_PLAYERS]; + u8 field_88; + u8 field_89; + u8 field_8A; + u8 field_8B; + u8 field_8C; + u8 field_8D; + u8 field_8E; + u8 field_8F; + u8 field_90; + u8 field_91; + u8 field_92; + u8 field_93; + u8 field_94; + u8 field_95; + u8 field_96; + u8 field_97; + u8 field_98; + u8 field_99; + u8 field_9A; + u8 field_9B; + u8 field_9C; + u8 field_9D; + u8 field_9E; + u8 field_9F; + u8 field_A0; + u8 field_A1; + u8 field_A2; + u8 field_A3; + u8 field_A4; + u8 field_A5; + u8 field_A6; + u8 field_A7; + u8 field_A8; + u8 field_A9; + u8 field_AA; + u8 field_AB; + u8 field_AC; + u8 field_AD; + u8 field_AE; + u8 field_AF; + u8 field_B0; + u8 field_B1; + u8 field_B2; + u8 field_B3; + u8 field_B4; + u8 field_B5; + u8 field_B6; + u8 field_B7; + u8 field_B8; + u8 field_B9; + u8 field_BA; + u8 field_BB; + u8 field_BC; + u8 field_BD; + u8 field_BE; + u8 field_BF; + u8 field_C0; + u8 field_C1; + u8 field_C2; + u8 field_C3; + u8 field_C4; + u8 field_C5; + u8 field_C6; + u8 field_C7; + u8 field_C8; + u8 field_C9; + u8 field_CA; + u8 field_CB; + u8 field_CC; + u8 field_CD; + u8 field_CE; + u8 field_CF; + u8 field_D0; + u8 field_D1; + u8 field_D2; + u8 field_D3; + u8 field_D4; + u8 field_D5; + u8 field_D6; + u8 field_D7; + u8 field_D8; + u8 field_D9; + u8 field_DA; + u8 field_DB; + u8 field_DC; + u8 field_DD; + u8 field_DE; + u8 field_DF; + u8 field_E0; + u8 field_E1; + u8 field_E2; + u8 field_E3; + u8 field_E4; + u8 field_E5; + u8 field_E6; + u8 field_E7; + u8 field_E8; + u8 field_E9; + u8 field_EA; + u8 field_EB; + u8 field_EC; + u8 field_ED; + u8 field_EE; + u8 field_EF; + u8 field_F0; + u8 field_F1; + u8 field_F2; + u8 field_F3; + u8 field_F4; + u8 field_F5; + u8 field_F6; + u8 field_F7; + u8 field_F8; + u8 field_F9; + u8 field_FA; + u8 field_FB; + u8 field_FC; + u8 field_FD; + u8 field_FE; + u8 field_FF; + u8 field_100; + u8 field_101; + u8 field_102; + u8 field_103; + u8 field_104; + u8 field_105; + u8 field_106; + u8 field_107; + u8 field_108; + u8 field_109; + u8 field_10A; + u8 field_10B; + u8 field_10C; + u8 field_10D; + u8 field_10E; + u8 field_10F; + u8 field_110; + u8 field_111; + u8 field_112; + u8 field_113; + u8 field_114; + u8 field_115; + u8 field_116; + u8 field_117; + u8 field_118; + u8 field_119; + u8 field_11A; + u8 field_11B; + u8 field_11C; + u8 field_11D; + u8 field_11E; + u8 field_11F; + u8 field_120; + u8 field_121; + u8 field_122; + u8 field_123; + u8 field_124; + u8 field_125; + u8 field_126; + u8 field_127; + u8 field_128; + u8 field_129; + u8 field_12A; + u8 field_12B; + u8 field_12C; + u8 field_12D; + u8 field_12E; + u8 field_12F; + u32 field_130; + u32 field_134; + u8 field_138; + u8 field_139; + u8 field_13A; + u8 field_13B; + u8 field_13C; + u8 field_13D; + u16 field_13E; + u16 field_140; + u16 field_142; + u16 field_144; + u16 field_146; + u8 field_148; + u8 field_149; + u8 field_14A; + u8 field_14B; + u16 field_14C[BLENDER_MAX_PLAYERS][2]; + u8 field_15C; + u8 field_15D; + u8 field_15E; + u8 field_15F; + u8 field_160; + u8 field_161; + u8 field_162; + u8 field_163; + u8 field_164; + u8 field_165; + u8 field_166; + u8 field_167; + u8 field_168; + u8 field_169; + u8 field_16A; + u8 field_16B; + u8 field_16C; + u8 field_16D; + u8 field_16E; + u8 field_16F; + u8 field_170; + u8 field_171; + u8 field_172; + u8 field_173; + u8 field_174; + u8 field_175; + u8 field_176; + u8 field_177; + u8 field_178; + u8 field_179; + u8 field_17A; + u8 field_17B; + struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; +}; + +extern struct BerryBlenderData* sBerryBlenderData; + +extern struct MusicPlayerInfo gMPlay_SE2; +extern u8 ewram[]; + +// this file's functions: +void sub_80514A4(void); +void sub_80514F0(void); +void sub_804E56C(void); +void sub_804E884(u8 a0); +void sub_8051474(void); +void sub_804E9F8(void); +void sub_804F378(void); +void sub_8051414(void*); + +void Blender_ControlHitPitch(void) +{ + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (sBerryBlenderData->hitPitch - 128) * 2); +} + +void VBlankCB0_BerryBlender(void) +{ + sub_80514A4(); + sub_80514F0(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void VBlankCB1_BerryBlender(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +extern const u8 gUnknown_08E6C100[]; +extern const u8 gUnknown_08215C2C[]; +extern const u8 gUnknown_08E6C920[]; +extern const u8 gUnknown_08E6D354[]; +extern const u16 gUnknown_08215C0C[]; +extern const u16 gUnknown_0821602C[]; +extern const struct SpriteSheet gUnknown_082163DC; +extern const struct SpriteSheet gUnknown_082164F4; +extern const struct SpriteSheet gUnknown_08216454; +extern const struct SpriteSheet gUnknown_08216540; +extern const struct SpriteSheet gUnknown_08216574; +extern const struct SpritePalette gUnknown_082163EC; +extern const struct SpritePalette gUnknown_082163E4; + +bool8 sub_804E2EC(void) +{ + switch (sBerryBlenderData->field_1) + { + case 0: + sub_800D238(gUnknown_08E6C100, &ewram[0x10000]); + sBerryBlenderData->field_1++; + break; + case 1: + { + const void* offsetRead = gUnknown_08215C2C; + void* offsetWrite = (void*)(VRAM + 0x4000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x400); + LoadPalette(gUnknown_08215C0C, 0, 0x100); + sBerryBlenderData->field_1++; + } + break; + case 2: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM); + u32 size = 0x2000; + while (TRUE) + { + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + offsetRead += 0x1000; + offsetWrite += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, offsetRead, offsetWrite, size); + break; + } + } + sBerryBlenderData->field_1++; + } + break; + case 3: + sub_800D238(gUnknown_08E6C920, &ewram[0x10000]); + sBerryBlenderData->field_1++; + break; + case 4: + sub_800D238(gUnknown_08E6D354, &ewram[0x13000]); + sBerryBlenderData->field_1++; + break; + case 5: + { + void* offsetRead = &ewram[0x10000]; + void* offsetWrite = (void*)(VRAM + 0xE000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + sBerryBlenderData->field_1++; + } + break; + case 6: + { + void* offsetRead = &ewram[0x11000]; + void* offsetWrite = (void*)(VRAM + 0xF000); + + DmaCopy16(3, offsetRead, offsetWrite, 0x1000); + sBerryBlenderData->field_1++; + } + break; + case 7: + { + u16 i; + u16* palStore = (u16*)(&ewram[0x13000]); + void* offsetRead; + void* offsetWrite; + + for (i = 0; i < 640; i++) + { + *(palStore + i) |= 0x100; + } + offsetRead = &ewram[0x13000]; + offsetWrite = (void*)(VRAM + 0x6000); + DmaCopy16(3, offsetRead, offsetWrite, 0x500); + LoadPalette(gUnknown_0821602C, 0x80, 0x20); + sBerryBlenderData->field_1++; + } + break; + case 8: + LoadSpriteSheet(&gUnknown_082163DC); + LoadSpriteSheet(&gUnknown_082164F4); + LoadSpriteSheet(&gUnknown_08216454); + sBerryBlenderData->field_1++; + break; + case 9: + LoadSpriteSheet(&gUnknown_08216540); + LoadSpriteSheet(&gUnknown_08216574); + LoadSpritePalette(&gUnknown_082163EC); + LoadSpritePalette(&gUnknown_082163E4); + sBerryBlenderData->field_1 = 0; + return 1; + } + return 0; +} + +void sub_804E4FC(void) +{ + REG_DISPCNT = 0x1341; + REG_BG2CNT = 0x4880; + REG_BG1CNT = 0xC0D; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; +} + +void sub_804E538(void) +{ + u8* field6F; //this temp value is needed to match + + sBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + + field6F = &sBerryBlenderData->field_6F; + sBerryBlenderData->field_0 = 0; + *field6F = 0; + + sub_804E884(gSpecialVar_0x8004); + SetMainCallback2(sub_804E56C); +} + +extern const struct WindowConfig gWindowConfig_81E6F68; +extern const u8 sBlenderSyncArrowsPos[][2]; +extern const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate; + +void sub_804E56C(void) +{ + s32 i; + switch (sBerryBlenderData->field_0) + { + case 0: + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(NULL); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + sBerryBlenderData->field_0++; + sBerryBlenderData->field_140 = 0; + sBerryBlenderData->field_13E = 0; + sBerryBlenderData->field_142 = 0x50; + sBerryBlenderData->field_144 = 0; + sBerryBlenderData->field_146 = 0; + sBerryBlenderData->field_1 = 0; + sub_8051474(); + break; + case 1: + if (sub_804E2EC()) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + } + SetVBlankCallback(VBlankCB0_BerryBlender); + sBerryBlenderData->field_0++; + } + break; + case 2: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sub_8051474(); + sBerryBlenderData->field_0++; + break; + case 3: + sub_804E4FC(); + if (!gPaletteFade.active) + { + sBerryBlenderData->field_0++; + } + break; + case 4: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); + sBerryBlenderData->field_0++; + break; + case 5: + if (MenuUpdateWindowText()) + { + sBerryBlenderData->field_0++; + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80A6978(); + sBerryBlenderData->field_0 = 0; + } + break; + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804E738(struct Sprite* sprite) +{ + sprite->data1 += sprite->data6; + sprite->data2 -= sprite->data4; + sprite->data2 += sprite->data7; + sprite->data0 += sprite->data7; + sprite->data4--; + + if (sprite->data0 < sprite->data2) + { + sprite->data3 = sprite->data4 = sprite->data3 - 1; + if (++sprite->data5 > 3) + DestroySprite(sprite); + else + PlaySE(116); + } + sprite->pos1.x = sprite->data1; + sprite->pos1.y = sprite->data2; +} + +void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + sprite->data0 = a3; + sprite->data1 = a2; + sprite->data2 = a3; + sprite->data3 = a4; + sprite->data4 = 10; + sprite->data5 = 0; + sprite->data6 = a5; + sprite->data7 = a6; + sprite->callback = sub_804E738; +} + +extern const s16 gUnknown_08216594[][5]; + +void sub_804E7C0(u16 a0, u8 a1) +{ + u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1); + sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]); +} + +void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) +{ + const struct Berry *berryInfo = GetBerryInfo(itemID + 124); + berry->field_0 = itemID; + StringCopy(berry->name, berryInfo->name); + berry->spicy = berryInfo->spicy; + berry->dry = berryInfo->dry; + berry->sweet = berryInfo->sweet; + berry->bitter = berryInfo->bitter; + berry->sour = berryInfo->sour; + berry->smoothness = berryInfo->smoothness; +} + +extern u8 gUnknown_03004834; +extern const u8* const gUnknown_082162B8[]; + +void sub_804E884(u8 a0) +{ + int i; + if (a0) + { + for (i = 0; i < 4; i++) + gLinkPlayers[i].language = LANGUAGE_ENGLISH; + } + switch (a0) + { + case 0: + gUnknown_03004834 = 0; + break; + case 1: + gUnknown_03004834 = 1; + sBerryBlenderData->field_88 = 2; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); + break; + case 2: + gUnknown_03004834 = 2; + sBerryBlenderData->field_88 = 3; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); + StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); + break; + case 3: + gUnknown_03004834 = 3; + sBerryBlenderData->field_88 = 4; + StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); + StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); + StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); + StringCopy(gLinkPlayers[3].name, gUnknown_082162B8[2]); + break; + } +} + +void sub_804E990(void) +{ + s32 i; + + REG_DISPCNT = 0; + sBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + sBerryBlenderData->field_0 = 0; + sBerryBlenderData->field_134 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_80[i] = 0; + } + sub_804E884(gSpecialVar_0x8004); + if (gSpecialVar_0x8004 == 0) + SetMainCallback2(sub_804E9F8); + else + SetMainCallback2(sub_804F378); +} + +extern u16 gScriptItemId; + +extern const u8 gUnknown_082162EC[3][4]; +extern const u16 gUnknown_082162F8[]; +extern const u8 gUnknown_08216300[]; + +void sub_804E9F8(void) +{ + int i, j; + switch (sBerryBlenderData->field_0) + { + case 0: + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB0_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + gLinkType = 0x4422; + sBerryBlenderData->field_0++; + sBerryBlenderData->field_4E = 0; + sBerryBlenderData->field_7E = 0; + sBerryBlenderData->field_144 = 0; + sBerryBlenderData->field_146 = 0; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 2; j++) + { + sBerryBlenderData->field_14C[i][j] = 0; + } + } + sBerryBlenderData->field_7C = 0; + sBerryBlenderData->hitPitch = 0; + sBerryBlenderData->field_54 = 0; + sBerryBlenderData->field_5A = 0; + sBerryBlenderData->field_1 = 0; + break; + case 1: + if (!sub_804E2EC()) + { + sBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + } + sBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sBerryBlenderData->field_0++; + break; + case 4: + sub_804E4FC(); + if (!gPaletteFade.active) + { + sBerryBlenderData->field_0++; + } + break; + case 5: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrint(gOtherText_BlenderChooseBerry, 1, 15); + sBerryBlenderData->field_0 = 8; + sBerryBlenderData->field_130 = 0; + break; + case 8: + sBerryBlenderData->field_0++; + sBerryBlenderData->field_13C = 0; + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); + memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + sub_80084A4(); + sBerryBlenderData->field_130 = 0; + break; + case 9: + if (sub_8007ECC()) + { + ResetBlockReceivedFlags(); + if (GetMultiplayerId() == 0) + sub_8007E9C(4); + sBerryBlenderData->field_0++; + } + break; + case 10: + if (++sBerryBlenderData->field_130 > 20) + { + MenuZeroFillScreen(); + if (GetBlockReceivedStatus() == sub_8008198()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][256], sizeof(struct BlenderBerry)); + sBerryBlenderData->field_80[i] = sBerryBlenderData->blendedBerries[i].field_0; + } + ResetBlockReceivedFlags(); + sBerryBlenderData->field_0++; + } + } + break; + case 11: + sBerryBlenderData->field_88 = GetLinkPlayerCount(); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->field_88][i]) + { + sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_88], i); + break; + } + } + sBerryBlenderData->field_130 = 0; + sBerryBlenderData->field_0++; + sBerryBlenderData->field_13C++; + break; + case 12: + if (++sBerryBlenderData->field_130 > 60) + { + if (sBerryBlenderData->field_13C >= sBerryBlenderData->field_88) + { + sBerryBlenderData->field_0++; + sBerryBlenderData->field_54 = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; + } + else + sBerryBlenderData->field_0--; + sBerryBlenderData->field_130 = 0; + } + break; + case 13: + if (sub_8007ECC()) + { + sBerryBlenderData->field_0++; + sub_8051414(&sBerryBlenderData->field_168); + } + break; + case 14: + + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} diff --git a/sym_common.txt b/sym_common.txt index fc729a587..338d60d96 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -134,7 +134,7 @@ gUnknown_03004834: @ 3004834 gUnknown_03004840: @ 3004840 .space 0x14 -gUnknown_03004854: @ 3004854 +sBerryBlenderData: @ 3004854 .space 0x4 .include "rom4.o" -- cgit v1.2.3 From f7c33068ff9eafaf111985dc934e83d773183ba9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 6 Aug 2017 18:16:56 +0200 Subject: fake matching troubles --- asm-de/berry_blender.s | 20 +- asm/berry_blender.s | 2201 +----------------------------------------------- src/berry_blender.c | 594 +++++++++++-- 3 files changed, 544 insertions(+), 2271 deletions(-) diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s index 59aa1894a..3bdd8b073 100644 --- a/asm-de/berry_blender.s +++ b/asm-de/berry_blender.s @@ -1519,7 +1519,7 @@ _0804EF34: movs r0, 0 str r0, [r1] bl sub_804F238 - bl BuyMenuDrawFieldObjects + bl sub_804F2A8 _0804EFB8: mov r1, r8 ldr r0, [r1] @@ -1724,8 +1724,8 @@ _0804F164: .4byte 0x00004422 _0804F168: .4byte gUnknown_03004854 thumb_func_end sub_804F0F4 - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C + thumb_func_start sub_804F16C +sub_804F16C: @ 804F16C push {lr} lsls r0, 16 lsls r1, 24 @@ -1766,7 +1766,7 @@ _0804F1B4: _0804F1B6: pop {r1} bx r1 - thumb_func_end task_tutorial_oak_boy_girl + thumb_func_end sub_804F16C thumb_func_start sub_804F1BC sub_804F1BC: @ 804F1BC @@ -1902,8 +1902,8 @@ _0804F2A0: .4byte gUnknown_03004854 _0804F2A4: .4byte gUnknown_082162EC thumb_func_end sub_804F238 - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 + thumb_func_start sub_804F2A8 +sub_804F2A8: @ 804F2A8 push {r4-r7,lr} mov r7, r8 push {r7} @@ -2000,7 +2000,7 @@ _0804F368: .4byte gStringVar1 _0804F36C: .4byte gSprites _0804F370: .4byte gUnknown_082162C4 _0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects + thumb_func_end sub_804F2A8 thumb_func_start sub_804F378 sub_804F378: @ 804F378 @@ -2412,7 +2412,7 @@ _0804F650: str r0, [r1] movs r0, 0x34 bl PlaySE - bl BuyMenuDrawFieldObjects + bl sub_804F2A8 _0804F6D6: mov r1, r8 ldr r0, [r1] @@ -2666,7 +2666,7 @@ sub_804F8C8: @ 804F8C8 adds r0, 0x54 ldrh r0, [r0] movs r1, 0x1 - bl task_tutorial_oak_boy_girl + bl sub_804F16C lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -3712,7 +3712,7 @@ _0805010A: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl task_tutorial_oak_boy_girl + bl sub_804F16C lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index a6ef8fd38..f23057db6 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -8,2205 +8,6 @@ - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte sBerryBlenderData -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =VBlankCB0_BerryBlender - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =sBerryBlenderData - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte VBlankCB0_BerryBlender -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte sBerryBlenderData -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte sBerryBlenderData -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =sBlenderSyncArrowsPos - ldr r6, _0804ECDC @ =sBerryBlenderData -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =sBlenderSyncArrow_SpriteTemplate - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte sBlenderSyncArrowsPos -_0804ECDC: .4byte sBerryBlenderData -_0804ECE0: .4byte sBlenderSyncArrow_SpriteTemplate -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =sBerryBlenderData - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte sBerryBlenderData -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl Blender_CopyBerryData - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =sBerryBlenderData - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =sBerryBlenderData - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte sBerryBlenderData -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =sBerryBlenderData - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte sBerryBlenderData -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl BuyMenuDrawFieldObjects -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =sBerryBlenderData - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =sBerryBlenderData - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte sBerryBlenderData -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =sBerryBlenderData -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte sBerryBlenderData -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =VBlankCB0_BerryBlender - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =sBerryBlenderData - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte VBlankCB0_BerryBlender -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte sBerryBlenderData - thumb_func_end sub_804F0F4 - - thumb_func_start task_tutorial_oak_boy_girl -task_tutorial_oak_boy_girl: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =sBerryBlenderData - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte sBerryBlenderData -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end task_tutorial_oak_boy_girl - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl sub_80516C4 - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =sBerryBlenderData - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =sBerryBlenderData -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte sBerryBlenderData -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start BuyMenuDrawFieldObjects -BuyMenuDrawFieldObjects: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =sBerryBlenderData - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte sBerryBlenderData -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end BuyMenuDrawFieldObjects - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte sBerryBlenderData -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl sub_80516C4 - ldr r5, _0804F470 @ =sBerryBlenderData - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl Blender_CopyBerryData - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte sBerryBlenderData -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte sBerryBlenderData -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =sBlenderSyncArrowsPos - ldr r6, _0804F4E0 @ =sBerryBlenderData -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =sBlenderSyncArrow_SpriteTemplate - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =sBerryBlenderData - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte sBlenderSyncArrowsPos -_0804F4E0: .4byte sBerryBlenderData -_0804F4E4: .4byte sBlenderSyncArrow_SpriteTemplate -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =sBerryBlenderData - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte sBerryBlenderData -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =sBerryBlenderData - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =sBerryBlenderData - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte sBerryBlenderData -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl BuyMenuDrawFieldObjects -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =sBerryBlenderData - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte sBerryBlenderData -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =sBerryBlenderData - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte sBerryBlenderData -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =sBerryBlenderData - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =sBerryBlenderData - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =sBerryBlenderData - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl Blender_ControlHitPitch -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte sBerryBlenderData -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl task_tutorial_oak_boy_girl - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte sBerryBlenderData -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =sBerryBlenderData - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte sBerryBlenderData -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =sBerryBlenderData - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte sBerryBlenderData -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - thumb_func_start sub_804FC48 sub_804FC48: @ 804FC48 push {r4-r7,lr} @@ -2821,7 +622,7 @@ _0805010A: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl task_tutorial_oak_boy_girl + bl sub_804F16C lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/src/berry_blender.c b/src/berry_blender.c index 7e7f58db7..47aebf513 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -11,6 +11,9 @@ #include "string_util.h" #include "link.h" #include "task.h" +#include "rom4.h" +#include "items.h" +#include "rng.h" //needed to match Blender_ControlHitPitch struct MusicPlayerInfo @@ -45,15 +48,17 @@ u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); #define BLENDER_MAX_PLAYERS 4 +#define FLAVOUR_SPICY 0 +#define FLAVOUR_DRY 1 +#define FLAVOUR_SWEET 2 +#define FLAVOUR_BITTER 3 +#define FLAVOUR_SOUR 4 + struct BlenderBerry { u16 field_0; u8 name[7]; - u8 spicy; - u8 dry; - u8 sweet; - u8 bitter; - u8 sour; + u8 flavours[5]; u8 smoothness; }; @@ -142,16 +147,13 @@ struct BerryBlenderData u8 field_51; u8 field_52; u8 field_53; - u16 field_54; + u16 arrowPos; s16 hitPitch; //56 u8 field_58; u8 field_59; u16 field_5A; u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; - u8 field_60; - u8 field_61; - u8 field_62; - u8 field_63; + u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS]; u8 field_64; u8 field_65; u8 field_66; @@ -191,22 +193,8 @@ struct BerryBlenderData u8 field_97; u8 field_98; u8 field_99; - u8 field_9A; - u8 field_9B; - u8 field_9C; - u8 field_9D; - u8 field_9E; - u8 field_9F; - u8 field_A0; - u8 field_A1; - u8 field_A2; - u8 field_A3; - u8 field_A4; - u8 field_A5; - u8 field_A6; - u8 field_A7; - u8 field_A8; - u8 field_A9; + u16 field_9A[BLENDER_MAX_PLAYERS]; + u16 field_A2[BLENDER_MAX_PLAYERS]; u8 field_AA; u8 field_AB; u8 field_AC; @@ -337,11 +325,8 @@ struct BerryBlenderData u8 field_129; u8 field_12A; u8 field_12B; - u8 field_12C; - u8 field_12D; - u8 field_12E; - u8 field_12F; - u32 field_130; + u32 field_12C; + s32 field_130; u32 field_134; u8 field_138; u8 field_139; @@ -354,19 +339,9 @@ struct BerryBlenderData u16 field_142; u16 field_144; u16 field_146; - u8 field_148; - u8 field_149; - u8 field_14A; + u8 field_148[3]; u8 field_14B; - u16 field_14C[BLENDER_MAX_PLAYERS][2]; - u8 field_15C; - u8 field_15D; - u8 field_15E; - u8 field_15F; - u8 field_160; - u8 field_161; - u8 field_162; - u8 field_163; + u16 field_14C[BLENDER_MAX_PLAYERS][3]; u8 field_164; u8 field_165; u8 field_166; @@ -387,8 +362,7 @@ struct BerryBlenderData u8 field_175; u8 field_176; u8 field_177; - u8 field_178; - u8 field_179; + u16 field_178; u8 field_17A; u8 field_17B; struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; @@ -408,6 +382,12 @@ void sub_8051474(void); void sub_804E9F8(void); void sub_804F378(void); void sub_8051414(void*); +void sub_804F238(void); +void sub_80501FC(void); +bool8 sub_8051B8C(void); +void sub_80516C4(u8 a0, u16 itemID); +void sub_804F2A8(void); +void sub_804F81C(void); void Blender_ControlHitPitch(void) { @@ -688,11 +668,11 @@ void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) const struct Berry *berryInfo = GetBerryInfo(itemID + 124); berry->field_0 = itemID; StringCopy(berry->name, berryInfo->name); - berry->spicy = berryInfo->spicy; - berry->dry = berryInfo->dry; - berry->sweet = berryInfo->sweet; - berry->bitter = berryInfo->bitter; - berry->sour = berryInfo->sour; + berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; + berry->flavours[FLAVOUR_DRY] = berryInfo->dry; + berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet; + berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter; + berry->flavours[FLAVOUR_SOUR] = berryInfo->sour; berry->smoothness = berryInfo->smoothness; } @@ -760,6 +740,7 @@ extern u16 gScriptItemId; extern const u8 gUnknown_082162EC[3][4]; extern const u16 gUnknown_082162F8[]; extern const u8 gUnknown_08216300[]; +extern const struct SpriteTemplate gSpriteTemplate_8216548; void sub_804E9F8(void) { @@ -782,19 +763,19 @@ void sub_804E9F8(void) for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { sBerryBlenderData->field_70[i] = 0; - for (j = 0; j < 2; j++) + for (j = 0; j < 3; j++) { sBerryBlenderData->field_14C[i][j] = 0; } } sBerryBlenderData->field_7C = 0; sBerryBlenderData->hitPitch = 0; - sBerryBlenderData->field_54 = 0; + sBerryBlenderData->arrowPos = 0; sBerryBlenderData->field_5A = 0; sBerryBlenderData->field_1 = 0; break; case 1: - if (!sub_804E2EC()) + if (sub_804E2EC()) { sBerryBlenderData->field_0++; sub_8051474(); @@ -803,8 +784,8 @@ void sub_804E9F8(void) case 2: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + sBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); } sBerryBlenderData->field_0++; break; @@ -820,8 +801,8 @@ void sub_804E9F8(void) } break; case 5: - MenuDrawTextWindow(0, 14, 29, 19); - MenuPrint(gOtherText_BlenderChooseBerry, 1, 15); + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_LinkStandby3, 1, 14); sBerryBlenderData->field_0 = 8; sBerryBlenderData->field_130 = 0; break; @@ -850,7 +831,7 @@ void sub_804E9F8(void) { for (i = 0; i < GetLinkPlayerCount(); i++) { - memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][256], sizeof(struct BlenderBerry)); + memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); sBerryBlenderData->field_80[i] = sBerryBlenderData->blendedBerries[i].field_0; } ResetBlockReceivedFlags(); @@ -862,9 +843,9 @@ void sub_804E9F8(void) sBerryBlenderData->field_88 = GetLinkPlayerCount(); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->field_88][i]) + if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]) { - sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_88], i); + sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_13C], i); break; } } @@ -878,7 +859,7 @@ void sub_804E9F8(void) if (sBerryBlenderData->field_13C >= sBerryBlenderData->field_88) { sBerryBlenderData->field_0++; - sBerryBlenderData->field_54 = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; } else sBerryBlenderData->field_0--; @@ -893,7 +874,329 @@ void sub_804E9F8(void) } break; case 14: + REG_DISPCNT |= 0x400; + sBerryBlenderData->arrowPos += 0x200; + sBerryBlenderData->field_142 += 4; + if (sBerryBlenderData->field_142 > 255) + { + sBerryBlenderData->field_0++; + sBerryBlenderData->field_142 = 256; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]]; + REG_BG2CNT = 0x4882; + sBerryBlenderData->field_130 = 0; + sub_804F238(); + sub_804F2A8(); + } + sub_8051414(&sBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + sBerryBlenderData->field_130 = 0; + sBerryBlenderData->field_0++; + } + sub_8051414(&sBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); + sBerryBlenderData->field_0++; + break; + case 18: + sBerryBlenderData->field_0++; + break; + case 19: + sub_80084A4(); + sBerryBlenderData->field_0++; + break; + case 20: + if (sub_8007ECC()) + { + sub_8007E24(); + sBerryBlenderData->field_0++; + } + break; + case 21: + sBerryBlenderData->hitPitch = 128; + sBerryBlenderData->field_12C = 0; + SetMainCallback2(sub_80501FC); + if (GetCurrentMapMusic() != 403) + { + sBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(403); + break; + case 100: + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); + sBerryBlenderData->field_0++; + break; + case 101: + if (MenuUpdateWindowText()) + sBerryBlenderData->field_0++; + break; + case 102: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_804F0F4(void) +{ + REG_DISPCNT = 0; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + + SetVBlankCallback(VBlankCB0_BerryBlender); + + SetUpWindowConfig(&gWindowConfig_81E6F68); + InitMenuWindow(&gWindowConfig_81E6F68); + + gLinkType = 0x4422; + + sBerryBlenderData->field_4E = 0; + sBerryBlenderData->hitPitch = 0; + sBerryBlenderData->arrowPos = 0; + sBerryBlenderData->field_5A = 0; + sBerryBlenderData->field_144 = 0; + sBerryBlenderData->field_146 = 0; + sBerryBlenderData->field_0++; +} + +extern const u8 gUnknown_08216303[]; + +u8 sub_804F16C(u16 arrowPos, u8 a1) +{ + u32 var1 = (arrowPos / 256) + 24; + u8 arrID = sBerryBlenderData->field_A2[a1]; + u32 var2 = gUnknown_08216303[arrID]; + + if (var1 >= var2 && var1 < var2 + 48) + { + if (var1 >= var2 + 20 && var1 < var2 + 28) + return 2; + else + return 1; + } + else + return 0; +} + +extern const u8 gUnknown_082165BC[][3]; + +void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) +{ + u16 r4 = 0; + u16 i; + if (itemID == ITEM_ENIGMA_BERRY) + { + for (i = 0; i < 5; i++) + { + if (berry->flavours[r4] > berry->flavours[i]) + r4 = i; + } + r4 += 5; + } + else + { + r4 = itemID - 133; + if (r4 >= 5) + r4 = (r4 % 5) + 5; + } + for (i = 0; i < a1 - 1; i++) + { + sub_80516C4(i + 1, gUnknown_082165BC[r4][i] + 133); + } +} + +void sub_804F238(void) +{ + s32 i, j; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_A2[i] = 0xFF; + sBerryBlenderData->field_9A[i] = gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]; + } + for (j = 0; j < BLENDER_MAX_PLAYERS; j++) + { + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_9A[i] == j) + sBerryBlenderData->field_A2[j] = i; + } + } +} + +extern const u8 gUnknown_082162C4[]; +extern const u8 gUnknown_082162D4[][2]; + +void sub_804F2A8(void) +{ + int i; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->field_9A[i] != 0xFF) + { + u8* stringPtr = gStringVar1; + + sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[i]] = sBerryBlenderData->SyncArrowSprite2ID[i]; + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[i]]], i); + if (GetMultiplayerId() == sBerryBlenderData->field_9A[i]) + stringPtr = StringCopy(stringPtr, gUnknown_082162C4); + StringCopy(stringPtr, gLinkPlayers[sBerryBlenderData->field_9A[i]].name); + MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + } + } +} + +extern const TaskFunc gUnknown_08216308[]; + +void sub_804F378(void) +{ + s32 i, j; + switch (sBerryBlenderData->field_0) + { + case 0: + sub_804F0F4(); + sub_80516C4(0, gScriptItemId); + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); + sub_804F1BC(gScriptItemId, sBerryBlenderData->field_88, &sBerryBlenderData->blendedBerries[0]); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->field_70[i] = 0; + for (j = 0; j < 3; j++) + { + sBerryBlenderData->field_14C[i][j] = 0; + } + } + sBerryBlenderData->field_7C = 0; + sBerryBlenderData->field_1 = 0; + break; + case 1: + if (sub_804E2EC()) + { + sBerryBlenderData->field_0++; + sub_8051474(); + } + break; + case 2: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + sBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + } + sBerryBlenderData->field_0++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + sBerryBlenderData->field_0++; + sBerryBlenderData->field_130 = 0; + break; + case 4: + if (++sBerryBlenderData->field_130 == 2) + sub_804E4FC(); + if (!gPaletteFade.active) + sBerryBlenderData->field_0 = 8; + break; + case 8: + sBerryBlenderData->field_0 = 11; + sBerryBlenderData->field_13C = 0; + break; + case 11: + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + u32 var = gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]; + if (sBerryBlenderData->field_13C == var) + { + sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_13C], i); + break; + } + } + sBerryBlenderData->field_130 = 0; + sBerryBlenderData->field_0++; + sBerryBlenderData->field_13C++; + break; + case 12: + if (++sBerryBlenderData->field_130 > 60) + { + if (sBerryBlenderData->field_13C >= sBerryBlenderData->field_88) + { + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; + sBerryBlenderData->field_0++; + } + else + sBerryBlenderData->field_0--; + sBerryBlenderData->field_130 = 0; + } + break; + case 13: + sBerryBlenderData->field_0++; + sub_804F238(); + PlaySE(43); + sub_8051414(&sBerryBlenderData->field_168); + break; + case 14: + REG_DISPCNT |= 0x400; + sBerryBlenderData->arrowPos += 0x200; + sBerryBlenderData->field_142 += 4; + if (sBerryBlenderData->field_142 > 255) + { + sBerryBlenderData->field_0++; + sBerryBlenderData->field_142 = 256; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]]; + REG_BG2CNT = 0x4882; + sBerryBlenderData->field_130 = 0; + PlaySE(52); + sub_804F2A8(); + } + sub_8051414(&sBerryBlenderData->field_168); + break; + case 15: + if (sub_8051B8C()) + { + sBerryBlenderData->field_0++; + } + sub_8051414(&sBerryBlenderData->field_168); + break; + case 16: + CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); + sBerryBlenderData->field_0++; + break; + case 18: + sBerryBlenderData->field_0++; + break; + case 19: + sBerryBlenderData->field_0++; + break; + case 20: + sBerryBlenderData->field_0++; + break; + case 21: + sub_804F81C(); + sBerryBlenderData->hitPitch = 128; + sBerryBlenderData->field_12C = 0; + sBerryBlenderData->field_14B = 0; + sBerryBlenderData->field_7E = 0; + SetMainCallback2(sub_80501FC); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + sBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); + } + + if (GetCurrentMapMusic() != 403) + { + sBerryBlenderData->field_178 = GetCurrentMapMusic(); + } + PlayBGM(403); + PlaySE(53); + Blender_ControlHitPitch(); break; } RunTasks(); @@ -901,3 +1204,172 @@ void sub_804E9F8(void) BuildOamBuffer(); UpdatePaletteFade(); } + +void sub_804F81C(void) +{ + s32 i; + for (i = 0; i < 4; i++) + { + gSendCmd[0] = 0; + gSendCmd[2] = 0; + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } +} + +void sub_804F844(u8 taskID) +{ + if(++gTasks[taskID].data[0] > gTasks[taskID].data[1]) + { + gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345; + DestroyTask(taskID); + } +} + +void sub_804F890(u8 a0, u8 a1) +{ + u8 taskID = CreateTask(sub_804F844, 80); + gTasks[taskID].data[1] = a1; + gTasks[taskID].data[2] = a0; +} + +void sub_804F8C8(u8 taskID) +{ + if (sub_804F16C(sBerryBlenderData->arrowPos, 1) == 2) + { + if (gTasks[taskID].data[0] == 0) + { + if (sBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (sBerryBlenderData->hitPitch < 500) + { + if (rand > 75) + gRecvCmds[2][1] = 0x4523; + else + gRecvCmds[2][1] = 0x5432; + gRecvCmds[2][1] = 0x5432; // ??? + } + else if (sBerryBlenderData->hitPitch < 1500) + { + if (rand > 80) + gRecvCmds[2][1] = 0x4523; + else + { + u8 value = rand - 21; + if (value < 60) + gRecvCmds[2][1] = 0x5432; + else if (rand < 10) + sub_804F890(1, 5); + } + } + else if (rand <= 90) + { + u8 value = rand - 71; + if (value < 20) + gRecvCmds[2][1] = 0x5432; + else if (rand < 30) + sub_804F890(1, 5); + } + else + gRecvCmds[2][1] = 0x4523; + } + else + gRecvCmds[2][1] = 0x4523; + + gTasks[taskID].data[0] = 1; + } + } + else + gTasks[taskID].data[0] = 0; +} + +void sub_804F9F4(u8 taskID) +{ + u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = sBerryBlenderData->field_A2[2] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (sBerryBlenderData->field_14B == 0) + { + u8 rand = Random() / 655; + if (sBerryBlenderData->hitPitch < 500) + { + if (rand > 66) + gRecvCmds[2][2] = 0x4523; + else + gRecvCmds[2][2] = 0x5432; + } + else + { + u8 value; + if (rand > 65) + gRecvCmds[2][2] = 0x4523; + value = rand - 41; + if (value < 25) + gRecvCmds[2][2] = 0x5432; + if (rand < 10) + sub_804F890(2, 5); + } + + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][2] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} + +void sub_804FB1C(u8 taskID) +{ + u32 var1, var2; + + #ifndef FAKEMATCHING + asm("":::"r6"); + #endif // FAKEMATCHING + + var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = sBerryBlenderData->field_A2[3] & 0xFF; + if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) + { + if (gTasks[taskID].data[0] == 0) + { + if (sBerryBlenderData->field_14B == 0) + { + u8 rand = (Random() / 655); + if (sBerryBlenderData->hitPitch < 500) + { + if (rand > 88) + gRecvCmds[2][3] = 0x4523; + else + gRecvCmds[2][3] = 0x5432; + } + else + { + u8 value; + if (rand > 60) + gRecvCmds[2][3] = 0x4523; + else if ((value = rand - 56) < 5) + gRecvCmds[2][3] = 0x5432; + if (rand < 5) + sub_804F890(3, 5); + } + gTasks[taskID].data[0] = 1; + } + else + { + gRecvCmds[2][3] = 0x4523; + gTasks[taskID].data[0] = 1; + } + } + } + else + gTasks[taskID].data[0] = 0; +} -- cgit v1.2.3 From f72d61c18c8e1d476c305bee4fded8923ff1278e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 7 Aug 2017 17:39:49 +0200 Subject: more stuff done --- asm/berry_blender.s | 257 ---------------------------------------------------- src/berry_blender.c | 124 +++++++++++++++++++++---- 2 files changed, 105 insertions(+), 276 deletions(-) diff --git a/asm/berry_blender.s b/asm/berry_blender.s index f23057db6..2eff9bd94 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -8,263 +8,6 @@ - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =sBlenderSyncArrowsPos - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte sBlenderSyncArrowsPos -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl Blender_ControlHitPitch - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =sBerryBlenderData - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte sBerryBlenderData -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =sBerryBlenderData - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte sBerryBlenderData -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =sBerryBlenderData - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte sBerryBlenderData -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 thumb_func_start sub_804FE70 sub_804FE70: @ 804FE70 diff --git a/src/berry_blender.c b/src/berry_blender.c index 47aebf513..62264f76e 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -148,7 +148,7 @@ struct BerryBlenderData u8 field_52; u8 field_53; u16 arrowPos; - s16 hitPitch; //56 + s16 field_56; u8 field_58; u8 field_59; u16 field_5A; @@ -337,8 +337,8 @@ struct BerryBlenderData u16 field_13E; u16 field_140; u16 field_142; - u16 field_144; - u16 field_146; + s16 field_144; + s16 field_146; u8 field_148[3]; u8 field_14B; u16 field_14C[BLENDER_MAX_PLAYERS][3]; @@ -388,10 +388,13 @@ bool8 sub_8051B8C(void); void sub_80516C4(u8 a0, u16 itemID); void sub_804F2A8(void); void sub_804F81C(void); +void sub_805156C(void); +void sub_8051684(struct Sprite* sprite); +void sub_8051AC8(s16* a0, u16 a1); void Blender_ControlHitPitch(void) { - m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (sBerryBlenderData->hitPitch - 128) * 2); + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (sBerryBlenderData->field_56 - 128) * 2); } void VBlankCB0_BerryBlender(void) @@ -769,7 +772,7 @@ void sub_804E9F8(void) } } sBerryBlenderData->field_7C = 0; - sBerryBlenderData->hitPitch = 0; + sBerryBlenderData->field_56 = 0; sBerryBlenderData->arrowPos = 0; sBerryBlenderData->field_5A = 0; sBerryBlenderData->field_1 = 0; @@ -916,7 +919,7 @@ void sub_804E9F8(void) } break; case 21: - sBerryBlenderData->hitPitch = 128; + sBerryBlenderData->field_56 = 128; sBerryBlenderData->field_12C = 0; SetMainCallback2(sub_80501FC); if (GetCurrentMapMusic() != 403) @@ -961,7 +964,7 @@ void sub_804F0F4(void) gLinkType = 0x4422; sBerryBlenderData->field_4E = 0; - sBerryBlenderData->hitPitch = 0; + sBerryBlenderData->field_56 = 0; sBerryBlenderData->arrowPos = 0; sBerryBlenderData->field_5A = 0; sBerryBlenderData->field_144 = 0; @@ -1179,7 +1182,7 @@ void sub_804F378(void) break; case 21: sub_804F81C(); - sBerryBlenderData->hitPitch = 128; + sBerryBlenderData->field_56 = 128; sBerryBlenderData->field_12C = 0; sBerryBlenderData->field_14B = 0; sBerryBlenderData->field_7E = 0; @@ -1242,7 +1245,7 @@ void sub_804F8C8(u8 taskID) if (sBerryBlenderData->field_14B == 0) { u8 rand = Random() / 655; - if (sBerryBlenderData->hitPitch < 500) + if (sBerryBlenderData->field_56 < 500) { if (rand > 75) gRecvCmds[2][1] = 0x4523; @@ -1250,7 +1253,7 @@ void sub_804F8C8(u8 taskID) gRecvCmds[2][1] = 0x5432; gRecvCmds[2][1] = 0x5432; // ??? } - else if (sBerryBlenderData->hitPitch < 1500) + else if (sBerryBlenderData->field_56 < 1500) { if (rand > 80) gRecvCmds[2][1] = 0x4523; @@ -1295,7 +1298,7 @@ void sub_804F9F4(u8 taskID) if (sBerryBlenderData->field_14B == 0) { u8 rand = Random() / 655; - if (sBerryBlenderData->hitPitch < 500) + if (sBerryBlenderData->field_56 < 500) { if (rand > 66) gRecvCmds[2][2] = 0x4523; @@ -1331,10 +1334,6 @@ void sub_804FB1C(u8 taskID) { u32 var1, var2; - #ifndef FAKEMATCHING - asm("":::"r6"); - #endif // FAKEMATCHING - var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; var2 = sBerryBlenderData->field_A2[3] & 0xFF; if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) @@ -1344,7 +1343,7 @@ void sub_804FB1C(u8 taskID) if (sBerryBlenderData->field_14B == 0) { u8 rand = (Random() / 655); - if (sBerryBlenderData->hitPitch < 500) + if (sBerryBlenderData->field_56 < 500) { if (rand > 88) gRecvCmds[2][3] = 0x4523; @@ -1353,11 +1352,15 @@ void sub_804FB1C(u8 taskID) } else { - u8 value; if (rand > 60) gRecvCmds[2][3] = 0x4523; - else if ((value = rand - 56) < 5) - gRecvCmds[2][3] = 0x5432; + else + { + s8 value = rand - 56; // makes me wonder what the original code was + u8 value2 = value; + if (value2 < 5) + gRecvCmds[2][3] = 0x5432; + } if (rand < 5) sub_804F890(3, 5); } @@ -1373,3 +1376,86 @@ void sub_804FB1C(u8 taskID) else gTasks[taskID].data[0] = 0; } + +extern const s8 gUnknown_082162CC[][2]; +extern const struct SpriteTemplate gSpriteTemplate_821645C; + +void sub_804FC48(u16 a0, u8 a1) +{ + u8 spriteID; + + spriteID = CreateSprite(&gSpriteTemplate_821645C, + sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]), + sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]), + 1); + if (a0 == 0x4523) + { + StartSpriteAnim(&gSprites[spriteID], 2); + gSprites[spriteID].callback = sub_8051684; + PlaySE(40); + } + else if (a0 == 0x5432) + { + StartSpriteAnim(&gSprites[spriteID], 0); + PlaySE(31); + } + else if (a0 == 0x2345) + { + StartSpriteAnim(&gSprites[spriteID], 1); + PlaySE(32); + } + sub_805156C(); +} + +extern const u8 gUnknown_082165DA[]; + +void sub_804FD30(u16 a0) +{ + Blender_ControlHitPitch(); + switch (a0) + { + case 0x4523: + if (sBerryBlenderData->field_56 < 1500) + sBerryBlenderData->field_56 += (384 / gUnknown_082165DA[sBerryBlenderData->field_88]); + else + { + sBerryBlenderData->field_56 += (128 / gUnknown_082165DA[sBerryBlenderData->field_88]); + sub_8051AC8(&sBerryBlenderData->field_144, (sBerryBlenderData->field_56 / 100) - 10); + sub_8051AC8(&sBerryBlenderData->field_146, (sBerryBlenderData->field_56 / 100) - 10); + } + break; + case 0x5432: + if (sBerryBlenderData->field_56 < 1500) + sBerryBlenderData->field_56 += (256 / gUnknown_082165DA[sBerryBlenderData->field_88]); + break; + case 0x2345: + sBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[sBerryBlenderData->field_88]); + if (sBerryBlenderData->field_56 < 128) + sBerryBlenderData->field_56 = 128; + break; + } +} + +void sub_804FE70(void) +{ + s32 i; + + if (gSpecialVar_0x8004 != 0) + { + if (gSendCmd[2] != 0) + { + gRecvCmds[2][0] = 0; + gRecvCmds[0][0] = 0x4444; + gSendCmd[2] = 0; + } + for (i = 0; i < 3; i++) + { + if (gRecvCmds[2][i] != 0) + gRecvCmds[0][i] = 0x4444; + } + } + for (i = 0; i < gUnknown_082165DA[sBerryBlenderData->field_88]; i++) + { + if (gRecvCmds[0]) + } +} -- cgit v1.2.3 From acecf4fdb5bac6774c1bd5c77ee41a4269f023ef Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 7 Aug 2017 18:13:20 +0200 Subject: SE enums and egg hatch common sym --- common_syms/egg_hatch.txt | 1 + src/egg_hatch.c | 103 +++++++++++++++++++++++----------------------- sym_common.txt | 8 +--- 3 files changed, 54 insertions(+), 58 deletions(-) create mode 100644 common_syms/egg_hatch.txt diff --git a/common_syms/egg_hatch.txt b/common_syms/egg_hatch.txt new file mode 100644 index 000000000..f49202045 --- /dev/null +++ b/common_syms/egg_hatch.txt @@ -0,0 +1 @@ +gEggHatchData \ No newline at end of file diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 45021d3e4..2b68d83e8 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -10,6 +10,7 @@ #include "main.h" #include "event_data.h" #include "sound.h" +#include "songs.h" #include "text.h" #include "text_window.h" #include "string_util.h" @@ -35,7 +36,7 @@ struct EggHatchData u8 eggShardVelocityID; }; -extern struct EggHatchData* sEggHatchData; +struct EggHatchData* gEggHatchData; extern const u32 gUnknown_08D00000[]; extern const u32 gUnknown_08D00524[]; @@ -461,9 +462,9 @@ static void CB2_EggHatch_0(void) { case 0: REG_DISPCNT = 0; - sEggHatchData = (struct EggHatchData*)(&ewram[0x18000]); - sEggHatchData->eggPartyID = gSpecialVar_0x8004; - sEggHatchData->eggShardVelocityID = 0; + gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]); + gEggHatchData->eggPartyID = gSpecialVar_0x8004; + gEggHatchData->eggShardVelocityID = 0; ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -473,9 +474,9 @@ static void CB2_EggHatch_0(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&sEggHatchData->window, &gWindowConfig_81E6F84); - sEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&sEggHatchData->window); + InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84); + gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); + LoadTextWindowGraphics(&gEggHatchData->window); gMain.state++; break; case 2: @@ -492,16 +493,16 @@ static void CB2_EggHatch_0(void) gMain.state++; break; case 4: - sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5); - AddHatchedMonToParty(sEggHatchData->eggPartyID); + gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5); + AddHatchedMonToParty(gEggHatchData->eggPartyID); gMain.state++; break; case 5: - EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID); + EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID); gMain.state++; break; case 6: - sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID); + gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID); gMain.state++; break; case 7: @@ -548,7 +549,7 @@ static void CB2_EggHatch_0(void) REG_BG2VOFS = 0; SetMainCallback2(CB2_EggHatch_1); - sEggHatchData->CB2_state = 0; + gEggHatchData->CB2_state = 0; break; } } @@ -576,59 +577,59 @@ static void Task_EggHatchPlayBGM(u8 taskID) static void CB2_EggHatch_1(void) { - switch (sEggHatchData->CB2_state) + switch (gEggHatchData->CB2_state) { case 0: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); REG_DISPCNT = 0x1740; - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; CreateTask(Task_EggHatchPlayBGM, 5); break; case 1: if (!gPaletteFade.active) { - sEggHatchData->CB2_PalCounter = 0; - sEggHatchData->CB2_state++; + gEggHatchData->CB2_PalCounter = 0; + gEggHatchData->CB2_state++; } break; case 2: - if (++sEggHatchData->CB2_PalCounter > 30) + if (++gEggHatchData->CB2_PalCounter > 30) { - sEggHatchData->CB2_state++; - gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + gEggHatchData->CB2_state++; + gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; } break; case 3: - if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) - sEggHatchData->CB2_state++; + if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + gEggHatchData->CB2_state++; break; case 4: - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg); EggHatchPrintMessage2(gStringVar4); PlayFanfare(371); - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; break; case 5: if (IsFanfareTaskInactive()) - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; break; case 6: if (IsFanfareTaskInactive()) - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; break; case 7: - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt); EggHatchPrintMessage1(gStringVar4); - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; break; case 8: if (EggHatchUpdateWindowText()) { MenuDrawTextWindow(22, 8, 27, 13); InitYesNoMenu(22, 8, 4); - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; } break; case 9: @@ -642,20 +643,20 @@ static void CB2_EggHatch_1(void) u8 gender; u32 personality; - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); - species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); - gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); - personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); } else - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; } } break; case 10: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sEggHatchData->CB2_state++; + gEggHatchData->CB2_state++; break; case 11: if (!gPaletteFade.active) @@ -681,7 +682,7 @@ static void SpriteCB_Egg_0(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data1, 1); if (sprite->data0 == 15) { - PlaySE(23); + PlaySE(SE_BOWA); StartSpriteAnim(sprite, 1); CreateRandomEggShardSprite(); } @@ -704,7 +705,7 @@ static void SpriteCB_Egg_1(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data1, 2); if (sprite->data0 == 15) { - PlaySE(23); + PlaySE(SE_BOWA); StartSpriteAnim(sprite, 2); } } @@ -721,9 +722,9 @@ static void SpriteCB_Egg_2(struct Sprite* sprite) sprite->callback = SpriteCB_Egg_3; sprite->data0 = 0; - species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); - gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; - gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; + species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset; } else { @@ -731,13 +732,13 @@ static void SpriteCB_Egg_2(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data1, 2); if (sprite->data0 == 15) { - PlaySE(23); + PlaySE(SE_BOWA); StartSpriteAnim(sprite, 2); CreateRandomEggShardSprite(); CreateRandomEggShardSprite(); } if (sprite->data0 == 30) - PlaySE(23); + PlaySE(SE_BOWA); } } } @@ -764,7 +765,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite) sprite->data0++; if (!gPaletteFade.active) { - PlaySE(113); + PlaySE(SE_TAMAGO); sprite->invisible = 1; sprite->callback = SpriteCB_Egg_5; sprite->data0 = 0; @@ -775,13 +776,13 @@ static void SpriteCB_Egg_5(struct Sprite* sprite) { if (sprite->data0 == 0) { - gSprites[sEggHatchData->pokeSpriteID].invisible = 0; - StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); + gSprites[gEggHatchData->pokeSpriteID].invisible = 0; + StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1); } if (sprite->data0 == 8) BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF); if (sprite->data0 <= 9) - gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; + gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1; if (sprite->data0 > 40) sprite->callback = SpriteCallbackDummy; sprite->data0++; @@ -831,9 +832,9 @@ static void CreateRandomEggShardSprite(void) { u16 spriteAnimIndex; - s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; - s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; - sEggHatchData->eggShardVelocityID++; + s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1]; + gEggHatchData->eggShardVelocityID++; spriteAnimIndex = Random() % 4; CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); } @@ -849,15 +850,15 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 static void EggHatchPrintMessage1(u8* src) { - sub_8002EB0(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15); + sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static void EggHatchPrintMessage2(u8* src) { - sub_8003460(&sEggHatchData->window, src, sEggHatchData->tileDataStartOffset, 3, 15); + sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static bool8 EggHatchUpdateWindowText(void) { - return sub_80035AC(&sEggHatchData->window); + return sub_80035AC(&gEggHatchData->window); } diff --git a/sym_common.txt b/sym_common.txt index ec482a6d9..0e934ba05 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -106,13 +106,7 @@ gUnknown_0300434C: @ 300434C .include "pokemon_1.o" .include "rng.o" - -@ egg_hatch - - .align 2 -sEggHatchData: @ 300481C - .space 0x4 - + .include "egg_hatch.o" .include "load_save.o" @ trade -- cgit v1.2.3 From c1d160c31d1be9c756b6666b4dfc97d7b1845b0f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 9 Aug 2017 22:45:59 +0200 Subject: more stuff, a troublesome function --- asm-de/berry_blender.s | 8 +- asm/berry_blender.s | 893 ------------------------------------------------- src/berry_blender.c | 351 ++++++++++++++++++- 3 files changed, 348 insertions(+), 904 deletions(-) diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s index 3bdd8b073..6966ce04c 100644 --- a/asm-de/berry_blender.s +++ b/asm-de/berry_blender.s @@ -3872,8 +3872,8 @@ _0805029C: .4byte 0x000003e7 _080502A0: .4byte sub_8050954 thumb_func_end sub_80501FC - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 + thumb_func_start sub_80502A4 +sub_80502A4: @ 80502A4 push {r4,r5,lr} lsls r1, 24 lsls r2, 24 @@ -3916,7 +3916,7 @@ _080502F2: pop {r4,r5} pop {r1} bx r1 - thumb_func_end help_system_is_not_first_time + thumb_func_end sub_80502A4 thumb_func_start sub_80502F8 sub_80502F8: @ 80502F8 @@ -3990,7 +3990,7 @@ _0805035C: mov r7, r8 lsrs r1, r7, 24 str r3, [sp, 0xC] - bl help_system_is_not_first_time + bl sub_80502A4 lsls r0, 24 ldr r3, [sp, 0xC] cmp r0, 0 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 2eff9bd94..c9a2eb379 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -8,899 +8,6 @@ - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =sBerryBlenderData - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte sBerryBlenderData -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =sBerryBlenderData - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte sBerryBlenderData -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =sBerryBlenderData - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =sBerryBlenderData - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte sBerryBlenderData -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =sBerryBlenderData - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte sBerryBlenderData -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =sBerryBlenderData - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804F16C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte sBerryBlenderData -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =sBerryBlenderData - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte sBerryBlenderData -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =sBerryBlenderData - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte sBerryBlenderData -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start help_system_is_not_first_time -help_system_is_not_first_time: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end help_system_is_not_first_time - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl help_system_is_not_first_time - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - thumb_func_start sub_8050520 sub_8050520: @ 8050520 push {r4-r7,lr} diff --git a/src/berry_blender.c b/src/berry_blender.c index 62264f76e..ce2f3db20 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -43,6 +43,7 @@ struct MusicPlayerInfo // other files functions void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); void sub_80A6978(void); u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); @@ -56,7 +57,7 @@ u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); struct BlenderBerry { - u16 field_0; + u16 itemID; u8 name[7]; u8 flavours[5]; u8 smoothness; @@ -371,7 +372,9 @@ struct BerryBlenderData extern struct BerryBlenderData* sBerryBlenderData; extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; extern u8 ewram[]; +extern s16 gUnknown_03000520[]; // this file's functions: void sub_80514A4(void); @@ -391,6 +394,11 @@ void sub_804F81C(void); void sub_805156C(void); void sub_8051684(struct Sprite* sprite); void sub_8051AC8(s16* a0, u16 a1); +void sub_805194C(u16 a0, u16 a1); +void sub_8051A3C(u16 a0); +void sub_8051B18(void); +void sub_805123C(void); +void sub_8050954(void); void Blender_ControlHitPitch(void) { @@ -669,7 +677,7 @@ void sub_804E7C0(u16 a0, u8 a1) void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) { const struct Berry *berryInfo = GetBerryInfo(itemID + 124); - berry->field_0 = itemID; + berry->itemID = itemID; StringCopy(berry->name, berryInfo->name); berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy; berry->flavours[FLAVOUR_DRY] = berryInfo->dry; @@ -835,7 +843,7 @@ void sub_804E9F8(void) for (i = 0; i < GetLinkPlayerCount(); i++) { memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); - sBerryBlenderData->field_80[i] = sBerryBlenderData->blendedBerries[i].field_0; + sBerryBlenderData->field_80[i] = sBerryBlenderData->blendedBerries[i].itemID; } ResetBlockReceivedFlags(); sBerryBlenderData->field_0++; @@ -1444,18 +1452,347 @@ void sub_804FE70(void) { if (gSendCmd[2] != 0) { - gRecvCmds[2][0] = 0; + gRecvCmds[2][0] = gSendCmd[2]; gRecvCmds[0][0] = 0x4444; gSendCmd[2] = 0; } - for (i = 0; i < 3; i++) + for (i = 1; i < 4; i++) { if (gRecvCmds[2][i] != 0) gRecvCmds[0][i] = 0x4444; } } - for (i = 0; i < gUnknown_082165DA[sBerryBlenderData->field_88]; i++) + for (i = 0; i < sBerryBlenderData->field_88; i++) { - if (gRecvCmds[0]) + if (gRecvCmds[0][i] == 0x4444) + { + u32 var = sBerryBlenderData->field_A2[i]; + if (gRecvCmds[2][i] == 0x4523) + { + sub_804FD30(0x4523); + sBerryBlenderData->field_13E += (sBerryBlenderData->field_56 / 55); + if (sBerryBlenderData->field_13E >= 1000) + sBerryBlenderData->field_13E = 1000; + sub_804FC48(0x4523, var); + sBerryBlenderData->field_14C[i][0]++; + } + else if (gRecvCmds[2][i] == 0x5432) + { + sub_804FD30(0x5432); + sBerryBlenderData->field_13E += (sBerryBlenderData->field_56 / 70); + sub_804FC48(0x5432, var); + sBerryBlenderData->field_14C[i][1]++; + } + else if (gRecvCmds[2][i] == 0x2345) + { + sub_804FC48(0x2345, var); + sub_804FD30(0x2345); + if (sBerryBlenderData->field_15 > 1000) + sBerryBlenderData->field_13E = 1000; + if (sBerryBlenderData->field_14C[i][2] < 999) + sBerryBlenderData->field_14C[i][2]++; + } + if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) + { + if (sBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((sBerryBlenderData->field_56 - 750) / 20) + 256); + else + m4aMPlayTempoControl(&gMPlay_BGM, 256); + } + } + } + if (gSpecialVar_0x8004 != 0) + { + for (i = 0; i < sBerryBlenderData->field_88; i++) + { + gRecvCmds[0][i] = 0; + gRecvCmds[2][i] = 0; + } + } +} + +extern u8 gUnknown_020297ED; + +void sub_80500A8(void) +{ + bool8 A_pressed = 0; + u8 var2 = sBerryBlenderData->field_A2[GetMultiplayerId()]; + if (sBerryBlenderData->field_6F == 0) + { + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)); + else if (gMain.newKeys & A_BUTTON) + A_pressed = 1; + if (A_pressed) + { + u8 var3; + StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[var2]]], var2 + 4); + var3 = sub_804F16C(sBerryBlenderData->arrowPos, GetMultiplayerId()); + if (var3 == 2) + gSendCmd[2] = 0x4523; + else if (var3 == 1) + gSendCmd[2] = 0x5432; + else + gSendCmd[2] = 0x2345; + } + } + if (++sBerryBlenderData->field_7E > 5) + { + if (sBerryBlenderData->field_56 > 128) + sBerryBlenderData->field_56--; + sBerryBlenderData->field_7E = 0; + } + if (gUnknown_020297ED && gMain.newKeys & L_BUTTON) + sBerryBlenderData->field_14B ^= 1; +} + +void sub_80501FC(void) +{ + sub_8051474(); + if (sBerryBlenderData->field_12C < 359940) + sBerryBlenderData->field_12C++; + sub_80500A8(); + SetLinkDebugValues((u16)(sBerryBlenderData->field_56), sBerryBlenderData->field_13E); + sub_804FE70(); + sub_805194C(sBerryBlenderData->field_13E, 1000); + sub_8051A3C(sBerryBlenderData->field_56); + sub_8051B18(); + sub_805123C(); + if (sBerryBlenderData->field_6F == 0 && sBerryBlenderData->field_140 >= 1000) + { + sBerryBlenderData->field_13E = 1000; + sBerryBlenderData->field_6F = 1; + SetMainCallback2(sub_8050954); + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +#define ARE_FLAVOURS_SAME(flavours1, flavours2)(((*(u32*)(&flavours1[-1]) & 0xFFFFFF00) == (*(u32*)(&flavours2[-1]) & 0xFFFFFF00)&& (*(u32*)(&flavours1[3]) & 0xFFFFFF) == (*(u32*)(&flavours2[3]) & 0xFFFFFF))) + +bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) +{ + if (berries[index1].itemID != berries[index2].itemID + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && ARE_FLAVOURS_SAME(berries[index1].flavours, berries[index2].flavours))) + return 1; + else + return 0; +} + +#undef ARE_FLAVOURS_SAME + +u32 sub_80502F8(struct BlenderBerry* berries, s16* a1, u8 a2, u8 a3) +{ + s16 vars[5]; + s32 i; + s32 r6; + u8 r2; + + for (i = 0; i <= 5; i++) // bug, writing one index too far + vars[i] = a1[i]; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] == 0) + r6++; + } + if (r6 == 5 || a3 > 3) + return 12; + for (i = 0; i < a2; i++) + { + for (r6 = 0; r6 < a2; r6++) + { + if (berries[i].itemID == berries[r6].itemID && i != r6 + && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) + return 12; + } + } + r2 = 0; + for (r2 = 0, i = 0; i < 5; i++) + { + if (vars[i] > 0) + r2++; + } + if (r2 > 3) + return 13; + if (r2 == 3) + return 11; + for (i = 0; i < 5; i++) + { + if (vars[i] > 50) + return 14; + } + if (r2 == 1 && vars[0] > 0) + return 1; + if (r2 == 1 && vars[1] > 0) + return 2; + if (r2 == 1 && vars[2] > 0) + return 3; + if (r2 == 1 && vars[3] > 0) + return 4; + if (r2 == 1 && vars[4] > 0) + return 5; + if (r2 == 2) + { + s32 var = 0; + for (i = 0; i < 5; i++) + { + if (vars[i] > 0) + gUnknown_03000520[var++] = i; + } + if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]]) + { + if (gUnknown_03000520[0] == 0) + return (gUnknown_03000520[1] << 16) | 6; + if (gUnknown_03000520[0] == 1) + return (gUnknown_03000520[1] << 16) | 7; + if (gUnknown_03000520[0] == 2) + return (gUnknown_03000520[1] << 16) | 8; + if (gUnknown_03000520[0] == 3) + return (gUnknown_03000520[1] << 16) | 9; + if (gUnknown_03000520[0] == 4) + return (gUnknown_03000520[1] << 16) | 10; + } + else + { + if (gUnknown_03000520[1] == 0) + return (gUnknown_03000520[0] << 16) | 6; + if (gUnknown_03000520[1] == 1) + return (gUnknown_03000520[0] << 16) | 7; + if (gUnknown_03000520[1] == 2) + return (gUnknown_03000520[0] << 16) | 8; + if (gUnknown_03000520[1] == 3) + return (gUnknown_03000520[0] << 16) | 9; + if (gUnknown_03000520[1] == 4) + return (gUnknown_03000520[0] << 16) | 10; + } + } + return 0; +} + +extern s16 gUnknown_0300052C; +extern s16 gUnknown_0300052E; + +void sub_80504F0(s16 value) +{ + gUnknown_0300052C = value; +} + +s16 unref_sub_80504FC(void) +{ + return gUnknown_0300052C; +} + +void sub_8050508(s16 value) +{ + gUnknown_0300052E = value; +} + +s16 unref_sub_8050514(void) +{ + return gUnknown_0300052E; +} + +extern s16 gUnknown_03000510[6]; +extern s32 gUnknown_03000530[]; +extern s32 gUnknown_03000548[]; +extern u32 gUnknown_0300055C; + +extern const u8 gUnknown_082165DF[]; + +void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) +{ + s32 i, j; + + s32 var5, var6; + + for (i = 0; i < 6; i++) + gUnknown_03000510[i] = 0; + for (i = 0; i < a2; i++) + { + for (j = 0; j < 5; j++) + gUnknown_03000510[j] += berries[i].flavours[j]; + } + + var5 = gUnknown_03000510[0]; + gUnknown_03000510[0] -= gUnknown_03000510[1]; + gUnknown_03000510[1] -= gUnknown_03000510[2]; + gUnknown_03000510[2] -= gUnknown_03000510[3]; + gUnknown_03000510[3] -= gUnknown_03000510[4]; + gUnknown_03000510[4] -= var5; + + var6 = 0; + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] < 0) + { + gUnknown_03000510[i] = 0; + var6++; + } + } + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] > 0) + { + if (gUnknown_03000510[i] < var6) + gUnknown_03000510[i] = 0; + else + gUnknown_03000510[i] -= var6; + } + } + for (i = 0; i < 6; i++) + { + gUnknown_03000530[i] = gUnknown_03000510[i]; + } + + gUnknown_0300055C = ((a4 / 333) + 100); + + for (i = 0; i < 5; i++) + { + s32 var4; + s32 var3 = gUnknown_03000510[i]; + var3 = (((a4 / 333) + 100) * var3) / 10; + var4 = var3 % 10; + var3 /= 10; + if (var4 > 4) + var3++; + gUnknown_03000510[i] = var3; + } + for (i = 0; i < 5; i++) + { + gUnknown_03000548[i] = gUnknown_03000510[i]; + } + *a1 = sub_80502F8(berries, &gUnknown_03000510[0], a2, var6); + gUnknown_03000510[5] = (gUnknown_03000510[5] / a2) - a2; + if (gUnknown_03000510[5] > 0) + gUnknown_03000510[5] = 0; + if (*a1 == 12) + { + u16 rand = Random() % 10; + for (i = 0; i < 6; i++) + { + if ((gUnknown_082165DF[rand] >> i) & 1) + gUnknown_03000510[i] = 2; + else + gUnknown_03000510[i] = 0; + } + } + for (i = 0; i < 6; i++) + { + if (gUnknown_03000510[i] > 255) + gUnknown_03000510[i] = 255; + } + a1[1] = gUnknown_03000510[0]; + a1[2] = gUnknown_03000510[1]; + a1[3] = gUnknown_03000510[2]; + a1[4] = gUnknown_03000510[3]; + a1[5] = gUnknown_03000510[4]; + a1[6] = gUnknown_03000510[5]; + for (i = 0; i < 6; i++) + { + a3[i] = gUnknown_03000510[i]; } } -- cgit v1.2.3 From a50ec1ee05ff46ea8335b982ac501bc9917ec289 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 11 Aug 2017 16:06:12 -0500 Subject: decompile sub_813265C - sub_81330E8 --- asm/learn_move.s | 1274 ----------------------------------------------------- data/learn_move.s | 31 -- ld_script.txt | 2 + src/learn_move.c | 556 +++++++++++++++++++++++ 4 files changed, 558 insertions(+), 1305 deletions(-) create mode 100644 src/learn_move.c diff --git a/asm/learn_move.s b/asm/learn_move.s index 89cd2efb8..06b40e233 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -5,1280 +5,6 @@ .syntax unified .text - - thumb_func_start sub_813265C -sub_813265C: @ 813265C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813265C - - thumb_func_start sub_8132670 -sub_8132670: @ 8132670 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08132698 @ =sub_813269C - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08132698: .4byte sub_813269C - thumb_func_end sub_8132670 - - thumb_func_start sub_813269C -sub_813269C: @ 813269C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081326C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081326C0 - ldr r0, _081326CC @ =sub_81326D8 - bl SetMainCallback2 - ldr r1, _081326D0 @ =gFieldCallback - ldr r0, _081326D4 @ =sub_8080990 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_081326C0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081326C8: .4byte gPaletteFade -_081326CC: .4byte sub_81326D8 -_081326D0: .4byte gFieldCallback -_081326D4: .4byte sub_8080990 - thumb_func_end sub_813269C - - thumb_func_start sub_81326D8 -sub_81326D8: @ 81326D8 - push {r4,r5,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132778 @ =gUnknown_030007B0 - ldr r0, _0813277C @ =0x02017000 - str r0, [r4] - bl sub_81332A0 - ldr r1, [r4] - ldr r0, _08132780 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - ldr r2, _08132784 @ =0x000002c5 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8133558 - ldr r0, _08132788 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _0813278C @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _08132790 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r0, _08132794 @ =REG_BG0VOFS - strh r5, [r0] - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132798 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _0813279C @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _081327A0 @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132778: .4byte gUnknown_030007B0 -_0813277C: .4byte 0x02017000 -_08132780: .4byte gSpecialVar_0x8004 -_08132784: .4byte 0x000002c5 -_08132788: .4byte sub_813265C -_0813278C: .4byte gWindowConfig_81E7240 -_08132790: .4byte gWindowConfig_81E6CE4 -_08132794: .4byte REG_BG0VOFS -_08132798: .4byte gUnknown_08402D80 -_0813279C: .4byte gUnknown_08402D88 -_081327A0: .4byte sub_8132870 - thumb_func_end sub_81326D8 - - thumb_func_start sub_81327A4 -sub_81327A4: @ 81327A4 - push {r4,r5,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r4, _08132844 @ =gUnknown_030007B0 - ldr r0, _08132848 @ =0x02017000 - str r0, [r4] - bl sub_8133558 - ldr r1, [r4] - ldr r0, _0813284C @ =gSpecialVar_0x8005 - ldrh r0, [r0] - ldr r2, _08132850 @ =0x000002c6 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - ldr r0, _08132854 @ =sub_813265C - bl SetVBlankCallback - ldr r4, _08132858 @ =gWindowConfig_81E7240 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r4, _0813285C @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08132860 @ =REG_BG0VOFS - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x4 - strh r5, [r0] - strh r5, [r0] - ldr r0, _08132864 @ =gUnknown_08402D80 - bl LoadSpriteSheet - ldr r0, _08132868 @ =gUnknown_08402D88 - bl LoadSpritePalette - bl sub_8133358 - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _0813286C @ =sub_8132870 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132844: .4byte gUnknown_030007B0 -_08132848: .4byte 0x02017000 -_0813284C: .4byte gSpecialVar_0x8005 -_08132850: .4byte 0x000002c6 -_08132854: .4byte sub_813265C -_08132858: .4byte gWindowConfig_81E7240 -_0813285C: .4byte gWindowConfig_81E6CE4 -_08132860: .4byte REG_BG0VOFS -_08132864: .4byte gUnknown_08402D80 -_08132868: .4byte gUnknown_08402D88 -_0813286C: .4byte sub_8132870 - thumb_func_end sub_81327A4 - - thumb_func_start sub_8132870 -sub_8132870: @ 8132870 - push {r4,lr} - bl sub_8132908 - ldr r4, _081328E0 @ =gUnknown_030007B0 - ldr r1, [r4] - ldrb r0, [r1, 0x1D] - cmp r0, 0 - beq _08132896 - movs r0, 0 - strb r0, [r1, 0x1D] - ldr r0, [r4] - ldrb r1, [r0, 0x18] - lsls r1, 1 - adds r1, 0x1 - lsls r1, 27 - lsrs r1, 24 - movs r0, 0x58 - bl sub_814AD7C -_08132896: - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - cmp r0, 0 - beq _081328A6 - movs r0, 0 - strb r0, [r1, 0x1E] - bl sub_8133800 -_081328A6: - ldr r1, [r4] - ldr r2, _081328E4 @ =0x000002c3 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _081328C8 - adds r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - ldr r0, [r4] - ldr r1, _081328E4 @ =0x000002c3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_081328C8: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081328E0: .4byte gUnknown_030007B0 -_081328E4: .4byte 0x000002c3 - thumb_func_end sub_8132870 - - thumb_func_start sub_81328E8 -sub_81328E8: @ 81328E8 - push {r4,lr} - adds r1, r0, 0 - ldr r4, _08132904 @ =gStringVar4 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132904: .4byte gStringVar4 - thumb_func_end sub_81328E8 - - thumb_func_start sub_8132908 -sub_8132908: @ 8132908 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r1, _0813292C @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x21 - bls _08132920 - b _08132FD6 -_08132920: - lsls r0, 2 - ldr r1, _08132930 @ =_08132934 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813292C: .4byte gUnknown_030007B0 -_08132930: .4byte _08132934 - .align 2, 0 -_08132934: - .4byte _081329BC - .4byte _08132A0C - .4byte _08132A24 - .4byte _08132A2C - .4byte _08132A60 - .4byte _08132A66 - .4byte _08132A98 - .4byte _08132FD6 - .4byte _08132AAA - .4byte _08132AD0 - .4byte _08132FD6 - .4byte _08132FD6 - .4byte _08132B74 - .4byte _08132B98 - .4byte _08132DD8 - .4byte _08132DF8 - .4byte _08132BF0 - .4byte _08132C08 - .4byte _08132C2C - .4byte _08132D40 - .4byte _08132D68 - .4byte _08132DB8 - .4byte _08132DC6 - .4byte _08132FD6 - .4byte _08132C74 - .4byte _08132C8C - .4byte _08132CB0 - .4byte _08132D0C - .4byte _08132E18 - .4byte _08132E7C - .4byte _08132F58 - .4byte _08132F84 - .4byte _08132FA4 - .4byte _08132FBC -_081329BC: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - movs r4, 0 - strb r0, [r1] - bl sub_8132FEC - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r0, _08132A04 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r0, [r7] - ldr r1, _08132A08 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x80 - lsls r1, 19 - movs r2, 0x9A - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132A04: .4byte gSprites -_08132A08: .4byte 0x000002c3 -_08132A0C: - ldr r0, _08132A20 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132A1A - b _08132FD6 -_08132A1A: - ldr r1, [r7] - movs r0, 0x4 - b _08132FD4 - .align 2, 0 -_08132A20: .4byte gPaletteFade -_08132A24: - ldr r1, [r7] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 -_08132A2C: - movs r0, 0 - bl sub_8133030 - bl sub_8133800 - ldr r2, _08132A54 @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A58 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _08132A5C @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - b _08132FD6 - .align 2, 0 -_08132A54: .4byte gUnknown_030007B0 -_08132A58: .4byte 0x000002c3 -_08132A5C: .4byte gSprites -_08132A60: - bl sub_81330E8 - b _08132A9C -_08132A66: - movs r0, 0 - bl sub_8133140 - bl sub_8133800 - ldr r2, _08132A8C @ =gUnknown_030007B0 - ldr r0, [r2] - ldr r1, _08132A90 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08132A94 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132A8C: .4byte gUnknown_030007B0 -_08132A90: .4byte 0x000002c3 -_08132A94: .4byte gSprites -_08132A98: - bl sub_8133248 -_08132A9C: - lsls r0, 24 - cmp r0, 0 - beq _08132AA4 - b _08132FD6 -_08132AA4: - bl sub_813362C - b _08132FD6 -_08132AAA: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132AB6 - b _08132FD6 -_08132AB6: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132ACC @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132ACC: .4byte gUnknown_030007B0 -_08132AD0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132B3A - bl sub_8133CA4 - ldr r4, _08132B1C @ =gUnknown_030007B0 - ldr r2, [r4] - ldr r1, _08132B20 @ =0x000002c5 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08132B24 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x1B] - lsls r1, 1 - adds r2, 0x20 - adds r2, r1 - ldrh r1, [r2] - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _08132B28 @ =0xffff0000 - cmp r0, r1 - beq _08132B34 - ldr r0, _08132B2C @ =gOtherText_PokeLearnedMove - bl sub_81328E8 - ldr r1, _08132B30 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - ldr r1, [r4] - movs r0, 0x1F - b _08132FD4 - .align 2, 0 -_08132B1C: .4byte gUnknown_030007B0 -_08132B20: .4byte 0x000002c5 -_08132B24: .4byte gPlayerParty -_08132B28: .4byte 0xffff0000 -_08132B2C: .4byte gOtherText_PokeLearnedMove -_08132B30: .4byte gSpecialVar_0x8004 -_08132B34: - ldr r1, [r4] - movs r0, 0x10 - b _08132FD4 -_08132B3A: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132B48 - cmp r1, 0x1 - beq _08132B48 - b _08132FD6 -_08132B48: - bl sub_8133CA4 - ldr r3, _08132B70 @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132B60 - movs r0, 0x3 - strb r0, [r1] -_08132B60: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132B6C - b _08132FD6 -_08132B6C: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132B70: .4byte gUnknown_030007B0 -_08132B74: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132B80 - b _08132FD6 -_08132B80: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132B94 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132B94: .4byte gUnknown_030007B0 -_08132B98: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - bne _08132BB4 - bl sub_8133CA4 - ldr r0, _08132BB0 @ =gSpecialVar_0x8004 - strh r4, [r0] - b _08132FCE - .align 2, 0 -_08132BB0: .4byte gSpecialVar_0x8004 -_08132BB4: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08132BC2 - cmp r4, 0x1 - beq _08132BC2 - b _08132FD6 -_08132BC2: - bl sub_8133CA4 - ldr r3, _08132BEC @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132BDA - movs r0, 0x3 - strb r0, [r1] -_08132BDA: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132BE6 - b _08132FD6 -_08132BE6: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132BEC: .4byte gUnknown_030007B0 -_08132BF0: - ldr r0, _08132C00 @ =gOtherText_DeleteOlderMove - bl sub_81328E8 - ldr r0, _08132C04 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C00: .4byte gOtherText_DeleteOlderMove -_08132C04: .4byte gUnknown_030007B0 -_08132C08: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C14 - b _08132FD6 -_08132C14: - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _08132C28 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x12 - b _08132FD4 - .align 2, 0 -_08132C28: .4byte gUnknown_030007B0 -_08132C2C: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132C54 - bl sub_8133CA4 - ldr r0, _08132C4C @ =gOtherText_WhichMoveToForget - bl sub_81328E8 - ldr r0, _08132C50 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x13 - b _08132FD4 - .align 2, 0 -_08132C4C: .4byte gOtherText_WhichMoveToForget -_08132C50: .4byte gUnknown_030007B0 -_08132C54: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132C62 - cmp r1, 0x1 - beq _08132C62 - b _08132FD6 -_08132C62: - bl sub_8133CA4 - ldr r0, _08132C70 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132C70: .4byte gUnknown_030007B0 -_08132C74: - ldr r0, _08132C84 @ =gOtherText_StopLearningMove - bl sub_81328E8 - ldr r0, _08132C88 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132C84: .4byte gOtherText_StopLearningMove -_08132C88: .4byte gUnknown_030007B0 -_08132C8C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132C98 - b _08132FD6 -_08132C98: - ldr r0, _08132CAC @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1A - strb r0, [r1] - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1 - bl DisplayYesNoMenu - b _08132FD6 - .align 2, 0 -_08132CAC: .4byte gUnknown_030007B0 -_08132CB0: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _08132CCC - bl sub_8133CA4 - ldr r0, _08132CC8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1B - b _08132FD4 - .align 2, 0 -_08132CC8: .4byte gUnknown_030007B0 -_08132CCC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08132CDA - cmp r1, 0x1 - beq _08132CDA - b _08132FD6 -_08132CDA: - bl sub_8133CA4 - ldr r1, _08132D08 @ =gUnknown_030007B0 - ldr r2, [r1] - movs r3, 0xB1 - lsls r3, 2 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08132CF2 - movs r0, 0x3 - strb r0, [r2] -_08132CF2: - ldr r2, [r1] - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132D00 - movs r0, 0x5 - strb r0, [r2] -_08132D00: - ldr r1, [r1] - movs r0, 0x10 - b _08132FD4 - .align 2, 0 -_08132D08: .4byte gUnknown_030007B0 -_08132D0C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D18 - b _08132FD6 -_08132D18: - ldr r3, _08132D3C @ =gUnknown_030007B0 - ldr r1, [r3] - movs r2, 0xB1 - lsls r2, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08132D2C - movs r0, 0x3 - strb r0, [r1] -_08132D2C: - ldr r1, [r3] - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08132D38 - b _08132FD6 -_08132D38: - movs r0, 0x5 - b _08132FD4 - .align 2, 0 -_08132D3C: .4byte gUnknown_030007B0 -_08132D40: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132D4C - b _08132FD6 -_08132D4C: - ldr r0, _08132D64 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r2, 0 - movs r0, 0x14 - strb r0, [r1] - subs r0, 0x15 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08132FD6 - .align 2, 0 -_08132D64: .4byte gUnknown_030007B0 -_08132D68: - ldr r0, _08132DA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132D76 - b _08132FD6 -_08132D76: - ldr r0, _08132DA8 @ =gPlayerParty - ldr r5, [r7] - ldr r2, _08132DAC @ =0x000002c5 - adds r1, r5, r2 - ldrb r1, [r1] - ldr r2, _08132DB0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08132DB4 @ =sub_81327A4 - ldrb r4, [r5, 0x1B] - lsls r4, 1 - adds r5, 0x20 - adds r5, r4 - ldrh r4, [r5] - str r4, [sp] - bl sub_809D9F0 - ldr r1, [r7] - movs r0, 0x1C - b _08132FD4 - .align 2, 0 -_08132DA4: .4byte gPaletteFade -_08132DA8: .4byte gPlayerParty -_08132DAC: .4byte 0x000002c5 -_08132DB0: .4byte gPlayerPartyCount -_08132DB4: .4byte sub_81327A4 -_08132DB8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08132DC4 - b _08132FD6 -_08132DC4: - b _08132FCE -_08132DC6: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08132FD6 -_08132DD8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08132DF4 @ =gUnknown_030007B0 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _08132FD4 - .align 2, 0 -_08132DF4: .4byte gUnknown_030007B0 -_08132DF8: - ldr r0, _08132E10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E06 - b _08132FD6 -_08132E06: - ldr r0, _08132E14 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - b _08132FD6 - .align 2, 0 -_08132E10: .4byte gPaletteFade -_08132E14: .4byte c2_exit_to_overworld_2_switch -_08132E18: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _08132E74 @ =gUnknown_030007B0 - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8132FEC - bl sub_8133800 - ldr r0, [r5] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08132E4E - movs r0, 0x1 - bl sub_8133030 -_08132E4E: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08132E66 - ldr r0, _08132E78 @ =gSprites - adds r0, 0x64 - movs r1, 0x48 - strh r1, [r0] - movs r0, 0x1 - bl sub_8133140 -_08132E66: - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_8133AEC - b _08132FD6 - .align 2, 0 -_08132E74: .4byte gUnknown_030007B0 -_08132E78: .4byte gSprites -_08132E7C: - ldr r0, _08132E9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08132E8A - b _08132FD6 -_08132E8A: - ldr r1, [r7] - ldr r0, _08132EA0 @ =0x000002c6 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0x4 - bne _08132EA4 - movs r0, 0x18 - b _08132FD4 - .align 2, 0 -_08132E9C: .4byte gPaletteFade -_08132EA0: .4byte 0x000002c6 -_08132EA4: - ldr r4, _08132F38 @ =0x000002c5 - adds r0, r1, r4 - ldrb r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08132F3C @ =gPlayerParty - adds r0, r5 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08132F40 @ =gStringVar3 - movs r1, 0xD - mov r9, r1 - mov r1, r9 - muls r1, r0 - ldr r0, _08132F44 @ =gMoveNames - mov r8, r0 - add r1, r8 - adds r0, r2, 0 - bl StringCopy - ldr r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - muls r0, r6 - adds r0, r5 - ldr r2, _08132F48 @ =0x000002c6 - adds r1, r2 - ldrb r1, [r1] - bl RemoveMonPPBonus - ldr r3, [r7] - adds r4, r3, r4 - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - ldrb r2, [r3, 0x1B] - lsls r2, 1 - adds r1, r3, 0 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - ldr r2, _08132F48 @ =0x000002c6 - adds r3, r2 - ldrb r2, [r3] - bl SetMonMoveSlot - ldr r0, _08132F4C @ =gStringVar2 - ldr r1, [r7] - ldrb r2, [r1, 0x1B] - lsls r2, 1 - adds r1, 0x20 - adds r1, r2 - ldrh r1, [r1] - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - add r1, r8 - bl StringCopy - ldr r0, _08132F50 @ =gOtherText_ForgotMove123 - bl sub_81328E8 - ldr r1, [r7] - movs r0, 0x1E - strb r0, [r1] - ldr r1, _08132F54 @ =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - b _08132FD6 - .align 2, 0 -_08132F38: .4byte 0x000002c5 -_08132F3C: .4byte gPlayerParty -_08132F40: .4byte gStringVar3 -_08132F44: .4byte gMoveNames -_08132F48: .4byte 0x000002c6 -_08132F4C: .4byte gStringVar2 -_08132F50: .4byte gOtherText_ForgotMove123 -_08132F54: .4byte gSpecialVar_0x8004 -_08132F58: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F78 @ =gOtherText_ForgotOrDidNotLearnMove / deuOtherText_ForgotAndLearned - bl sub_81328E8 - ldr r0, _08132F7C @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x1F - strb r0, [r1] - ldr r0, _08132F80 @ =0x0000016f - bl PlayFanfare - b _08132FD6 - .align 2, 0 -.ifdef ENGLISH -_08132F78: .4byte gOtherText_ForgotOrDidNotLearnMove -.else -_08132F78: .4byte deuOtherText_ForgotAndLearned -.endif -_08132F7C: .4byte gUnknown_030007B0 -_08132F80: .4byte 0x0000016f -_08132F84: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132F9C @ =0x0000016f - bl PlayFanfare - ldr r0, _08132FA0 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x20 - b _08132FD4 - .align 2, 0 -_08132F9C: .4byte 0x0000016f -_08132FA0: .4byte gUnknown_030007B0 -_08132FA4: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08132FD6 - ldr r0, _08132FB8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0x21 - b _08132FD4 - .align 2, 0 -_08132FB8: .4byte gUnknown_030007B0 -_08132FBC: - ldr r0, _08132FE4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08132FD6 - movs r0, 0x5 - bl PlaySE -_08132FCE: - ldr r0, _08132FE8 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xE -_08132FD4: - strb r0, [r1] -_08132FD6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08132FE4: .4byte gMain -_08132FE8: .4byte gUnknown_030007B0 - thumb_func_end sub_8132908 - - thumb_func_start sub_8132FEC -sub_8132FEC: @ 8132FEC - push {r4-r6,lr} - ldr r0, _08133024 @ =gWindowConfig_81E7240 - bl BasicInitMenuWindow - movs r5, 0 - ldr r4, _08133028 @ =gUnknown_08402CF8 - adds r6, r4, 0 -_08132FFA: - lsls r3, r5, 2 - ldrb r0, [r4] - adds r1, r6, 0x1 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r6, 0x2 - adds r3, r2 - ldrb r2, [r3] - ldrb r3, [r4, 0x3] - bl MenuDrawTextWindow - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0x3 - bls _08132FFA - ldr r0, _0813302C @ =gWindowConfig_81E6CE4 - bl BasicInitMenuWindow - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08133024: .4byte gWindowConfig_81E7240 -_08133028: .4byte gUnknown_08402CF8 -_0813302C: .4byte gWindowConfig_81E6CE4 - thumb_func_end sub_8132FEC - - thumb_func_start sub_8133030 -sub_8133030: @ 8133030 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _081330D4 @ =gSprites - ldr r5, _081330D8 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - movs r2, 0 - ldr r6, _081330DC @ =gUnknown_08402D08 - movs r3, 0x4 -_08133070: - ldr r0, [r5] - adds r0, r2 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xF - ble _08133070 - ldr r0, [r6] - cmp r0, 0 - beq _081330B4 - ldr r5, _081330E0 @ =gTileBuffer - adds r4, r6, 0 -_08133096: - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - ldrb r1, [r4, 0x4] - ldrb r2, [r4, 0x5] - adds r0, r5, 0 - bl MenuPrint - adds r4, 0x8 - ldr r0, [r4] - cmp r0, 0 - bne _08133096 -_081330B4: - cmp r7, 0 - bne _081330CC - ldr r0, _081330E4 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_081330CC: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081330D4: .4byte gSprites -_081330D8: .4byte gUnknown_030007B0 -_081330DC: .4byte gUnknown_08402D08 -_081330E0: .4byte gTileBuffer -_081330E4: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133030 - - thumb_func_start sub_81330E8 -sub_81330E8: @ 81330E8 - push {r4,lr} - ldr r0, _08133134 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133138 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813310C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813310C - adds r4, 0x1 -_0813310C: - cmp r4, 0 - beq _0813312A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813313C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_0813312A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133134: .4byte gMain -_08133138: .4byte gSaveBlock2 -_0813313C: .4byte gUnknown_030007B0 - thumb_func_end sub_81330E8 thumb_func_start sub_8133140 sub_8133140: @ 8133140 diff --git a/data/learn_move.s b/data/learn_move.s index 369fbfdf0..252f47ac6 100644 --- a/data/learn_move.s +++ b/data/learn_move.s @@ -3,37 +3,6 @@ .section .rodata - .align 2 -gDexArrows_Pal:: - .incbin "graphics/pokedex/arrows.gbapal" - - .align 2 -gDexArrows_Gfx:: - .incbin "graphics/pokedex/arrows.4bpp" - -gUnknown_08402CF8:: @ 8402CF8 - .byte 0, 0, 9, 13 - .byte 10, 0, 29, 7 - .byte 2, 14, 27, 19 - .byte 10, 8, 29, 13 - -gUnknown_08402D08:: @ 8402D08 - .4byte OtherText_Battle - .byte 1, 1, 0, 0 - .4byte OtherText_Power - .byte 1, 4, 1, 0 - .4byte OtherText_Accuracy - .byte 1, 9, 2, 0 - .space 8 - - .4byte OtherText_Contest - .byte 1, 1, 0, 0 - .4byte OtherText_Appeal - .byte 1, 4, 1, 0 - .4byte OtherText_Jam - .byte 1, 9, 2, 0 - .space 8 - .4byte 0xFF00FFEF .4byte gTileBuffer diff --git a/ld_script.txt b/ld_script.txt index c895c4d06..142e7a421 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -244,6 +244,7 @@ SECTIONS { asm/battle_anim_81258BC.o(.text_812BBFC); src/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); + src/learn_move.o(.text); asm/learn_move.o(.text); src/fldeff_softboiled.o(.text); src/decoration_inventory.o(.text); @@ -453,6 +454,7 @@ SECTIONS { data/contest_ai.o(.rodata); data/battle_anim_81258BC.o(.rodata); data/battle_anim_812C144.o(.rodata); + src/learn_move.o(.rodata); data/learn_move.o(.rodata); src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); diff --git a/src/learn_move.c b/src/learn_move.c new file mode 100644 index 000000000..fe14cebf6 --- /dev/null +++ b/src/learn_move.c @@ -0,0 +1,556 @@ +#include "global.h" +#include "data2.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "rom4.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings2.h" +#include "task.h" + +struct UnknownStruct1 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +extern u8 ewram[]; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u8 gTileBuffer[]; + +extern const struct WindowConfig gWindowConfig_81E6CE4; +extern const struct WindowConfig gWindowConfig_81E7240; +extern const struct UnknownStruct1 gUnknown_08402D08[]; +extern const struct SpriteSheet gUnknown_08402D80; +extern const struct SpritePalette gUnknown_08402D88; + +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); + +struct Struct2017000 +{ + u8 unk0; + u8 filler1[2]; + u8 unk3; + u8 unk4; + u8 unk5[16]; + u8 filler15[3]; + u8 unk18; + u8 filler19[0x1B-0x19]; + u8 unk1B; + u8 filler1C; + u8 unk1D; + u8 unk1E; + u8 filler1F; + u16 unk20[4]; + u8 filler28[0x2C3-0x28]; + u8 unk2C3; + u8 unk2C4; + u8 unk2C5; + u8 unk2C6; +}; + +extern struct Struct2017000 *gUnknown_030007B0; + +const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); + +const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); + +const u8 gUnknown_08402CF8[][4] = +{ + { 0, 0, 9, 13}, + {10, 0, 29, 7}, + { 2, 14, 27, 19}, + {10, 8, 29, 13}, +}; + +const struct UnknownStruct1 gUnknown_08402D08[] = +{ + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, +}; + +void sub_813269C(u8); +void sub_81326D8(void); +void sub_8132870(void); +void sub_8132908(void); +void sub_8132FEC(void); +void sub_8133030(u8); +u8 sub_81330E8(void); +void sub_8133140(u8); +u8 sub_8133248(void); +void sub_81332A0(void); +void sub_8133358(void); +void sub_8133558(void); +void sub_813362C(void); +void sub_8133800(void); +void sub_8133AEC(); +void sub_8133CA4(void); + +void sub_813265C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8132670(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_813269C, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void sub_813269C(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_81326D8); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +void sub_81326D8(void) +{ + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + gUnknown_030007B0 = (struct Struct2017000 *)(ewram + 0x17000); + sub_81332A0(); + gUnknown_030007B0->unk2C5 = gSpecialVar_0x8004; + sub_8133558(); + SetVBlankCallback(sub_813265C); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_BG0VOFS = 0; + REG_BG0VOFS = 0; // huh? + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(sub_8132870); +} + +void sub_81327A4(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + gUnknown_030007B0 = (struct Struct2017000 *)(ewram + 0x17000); + sub_8133558(); + gUnknown_030007B0->unk2C6 = gSpecialVar_0x8005; + SetVBlankCallback(sub_813265C); + + SetUpWindowConfig(&gWindowConfig_81E7240); + InitMenuWindow(&gWindowConfig_81E7240); + MenuZeroFillScreen(); + + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuZeroFillScreen(); + + REG_DISPCNT = 0x1340; + REG_BG0VOFS = 0; + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; // huh? + + LoadSpriteSheet(&gUnknown_08402D80); + LoadSpritePalette(&gUnknown_08402D88); + sub_8133358(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(sub_8132870); +} + +void sub_8132870(void) +{ + sub_8132908(); + if (gUnknown_030007B0->unk1D != 0) + { + gUnknown_030007B0->unk1D = 0; + sub_814AD7C(0x58, (gUnknown_030007B0->unk18 * 2 + 1) * 8); + } + if (gUnknown_030007B0->unk1E != 0) + { + gUnknown_030007B0->unk1E = 0; + sub_8133800(); + } + if (gUnknown_030007B0->unk2C3 != 0) + { + sub_8133AEC(gUnknown_030007B0->unk2C4, 1); + gUnknown_030007B0->unk2C3 = 0; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_81328E8(const u8 *a) +{ + StringExpandPlaceholders(gStringVar4, a); + MenuPrintMessage(gStringVar4, 3, 15); +} + +void sub_8132908(void) +{ + switch (gUnknown_030007B0->unk0) + { + case 0: + gUnknown_030007B0->unk0++; + sub_8132FEC(); + sub_8133030(0); + sub_8133800(); + gSprites[1].pos1.x = 0x48; + gUnknown_030007B0->unk2C3 = 1; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_DISPCNT = 0x1340; + break; + case 1: + if (!gPaletteFade.active) + gUnknown_030007B0->unk0 = 4; + break; + case 2: + gUnknown_030007B0->unk0++; + break; + case 3: + sub_8133030(0); + sub_8133800(); + gUnknown_030007B0->unk2C3 = 1; + gUnknown_030007B0->unk0++; + gSprites[1].pos1.x = 0x48; + break; + case 4: + if (sub_81330E8() == 0) + sub_813362C(); + return; + case 5: + sub_8133140(0); + sub_8133800(); + gUnknown_030007B0->unk2C3 = 1; + gSprites[1].pos1.x = 0x48; + gUnknown_030007B0->unk0++; + break; + case 6: + if (sub_8133248() == 0) + sub_813362C(); + break; + case 8: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + gUnknown_030007B0->unk0++; + } + break; + case 9: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + if (GiveMoveToMon(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]) != 0xFFFF) + { + sub_81328E8(gOtherText_PokeLearnedMove); + gSpecialVar_0x8004 = 1; + gUnknown_030007B0->unk0 = 31; + } + else + { + gUnknown_030007B0->unk0 = 16; + } + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + if (gUnknown_030007B0->unk2C4 == 0) + gUnknown_030007B0->unk0 = 3; + if (gUnknown_030007B0->unk2C4 == 1) + gUnknown_030007B0->unk0 = 5; + } + } + break; + case 12: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + gUnknown_030007B0->unk0++; + } + break; + case 13: + { + s8 r4 = ProcessMenuInputNoWrap_(); + + if (r4 == 0) + { + sub_8133CA4(); + gSpecialVar_0x8004 = r4; + gUnknown_030007B0->unk0 = 14; + } + else if (r4 == -1 || r4 == 1) + { + sub_8133CA4(); + if (gUnknown_030007B0->unk2C4 == 0) + gUnknown_030007B0->unk0 = 3; + if (gUnknown_030007B0->unk2C4 == 1) + gUnknown_030007B0->unk0 = 5; + } + } + break; + case 16: + sub_81328E8(gOtherText_DeleteOlderMove); + gUnknown_030007B0->unk0++; + break; + case 17: + if (MenuUpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + gUnknown_030007B0->unk0 = 18; + } + break; + case 18: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + sub_81328E8(gOtherText_WhichMoveToForget); + gUnknown_030007B0->unk0 = 19; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + gUnknown_030007B0->unk0 = 24; + } + } + break; + case 24: + sub_81328E8(gOtherText_StopLearningMove); + gUnknown_030007B0->unk0++; + break; + case 25: + if (MenuUpdateWindowText()) + { + gUnknown_030007B0->unk0 = 26; + DisplayYesNoMenu(21, 7, 1); + } + break; + case 26: + { + s8 var = ProcessMenuInputNoWrap_(); + + if (var == 0) + { + sub_8133CA4(); + gUnknown_030007B0->unk0 = 27; + } + else if (var == -1 || var == 1) + { + sub_8133CA4(); + + // What's the point? It gets set to 16, anyway. + if (gUnknown_030007B0->unk2C4 == 0) + gUnknown_030007B0->unk0 = 3; + if (gUnknown_030007B0->unk2C4 == 1) + gUnknown_030007B0->unk0 = 5; + gUnknown_030007B0->unk0 = 16; + } + } + break; + case 27: + if (MenuUpdateWindowText()) + { + if (gUnknown_030007B0->unk2C4 == 0) + gUnknown_030007B0->unk0 = 3; + if (gUnknown_030007B0->unk2C4 == 1) + gUnknown_030007B0->unk0 = 5; + } + break; + case 19: + if (MenuUpdateWindowText()) + { + gUnknown_030007B0->unk0 = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + break; + case 20: + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, gUnknown_030007B0->unk2C5, gPlayerPartyCount - 1, sub_81327A4, gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]); + gUnknown_030007B0->unk0 = 28; + } + break; + case 21: + if (MenuUpdateWindowText()) + gUnknown_030007B0->unk0 = 14; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gUnknown_030007B0->unk0++; + break; + case 15: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gUnknown_030007B0->unk0++; + sub_8132FEC(); + sub_8133800(); + if (gUnknown_030007B0->unk2C4 == 0) + sub_8133030(1); + if (gUnknown_030007B0->unk2C4 == 1) + { + gSprites[1].pos1.x = 0x48; + sub_8133140(1); + } + sub_8133AEC(gUnknown_030007B0->unk2C4, 1); + break; + case 29: + if (!gPaletteFade.active) + { + if (gUnknown_030007B0->unk2C6 == 4) + { + gUnknown_030007B0->unk0 = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[gUnknown_030007B0->unk2C5], MON_DATA_MOVE1 + gUnknown_030007B0->unk2C6); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk2C6); + SetMonMoveSlot(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B], gUnknown_030007B0->unk2C6); + StringCopy(gStringVar2, gMoveNames[gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]]); + sub_81328E8(gOtherText_ForgotMove123); + gUnknown_030007B0->unk0 = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (MenuUpdateWindowText()) + { +#ifdef ENGLISH + sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); +#else + sub_81328E8(deuOtherText_ForgotAndLearned); +#endif + gUnknown_030007B0->unk0 = 31; + PlayFanfare(BGM_FANFA1); + } + break; + case 31: + if (MenuUpdateWindowText()) + { + PlayFanfare(BGM_FANFA1); + gUnknown_030007B0->unk0 = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + gUnknown_030007B0->unk0 = 33; + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk0 = 14; + } + break; + } +} + +void sub_8132FEC(void) +{ + u32 i; + + BasicInitMenuWindow(&gWindowConfig_81E7240); + for (i = 0; i < 4; i++) + { + MenuDrawTextWindow( + gUnknown_08402CF8[i][0], + gUnknown_08402CF8[i][1], + gUnknown_08402CF8[i][2], + gUnknown_08402CF8[i][3]); + } + BasicInitMenuWindow(&gWindowConfig_81E6CE4); +} + +void sub_8133030(bool8 a) +{ + s32 i; + + gSprites[gUnknown_030007B0->unk3].invisible = FALSE; + gSprites[gUnknown_030007B0->unk4].invisible = FALSE; + for (i = 0; i < 16; i++) + { + // Hmm... + gSprites[*((u8 *)gUnknown_030007B0 + i + 7)].invisible = TRUE; + } + for (i = 0; gUnknown_08402D08[i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[i].unk4, gUnknown_08402D08[i].unk5); + } + if (!a) + { + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); + } +} + +u8 sub_81330E8(void) +{ + u32 r4 = ((gMain.newKeys & 0x30) != 0); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && (gMain.newKeys & 0x300)) + r4++; + + if (r4 != 0) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk0 = 5; + gUnknown_030007B0->unk2C4 = 1; + } + + return r4; +} -- cgit v1.2.3 From f3b6f3c2738a9a1d7e1167b4078355c59cce8074 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 12 Aug 2017 12:39:45 -0500 Subject: finish decompiling learn_move --- asm/learn_move.s | 1465 ----------------------------------------------------- include/pokemon.h | 1 + ld_script.txt | 1 - src/learn_move.c | 460 ++++++++++++++++- 4 files changed, 438 insertions(+), 1489 deletions(-) delete mode 100644 asm/learn_move.s diff --git a/asm/learn_move.s b/asm/learn_move.s deleted file mode 100644 index 06b40e233..000000000 --- a/asm/learn_move.s +++ /dev/null @@ -1,1465 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8133140 -sub_8133140: @ 8133140 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - ldr r4, _08133234 @ =gSprites - ldr r5, _08133238 @ =gUnknown_030007B0 - ldr r0, [r5] - ldrb r0, [r0, 0x3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - adds r1, r3, 0 - ands r1, r2 - strb r1, [r0] - movs r6, 0 - ldr r7, _0813323C @ =gUnknown_08402D08 -_0813318A: - ldr r0, [r5] - adds r0, r6 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0xF - ble _0813318A - movs r6, 0 - ldr r0, [r7] - cmp r0, 0 - beq _08133208 - mov r9, r7 - mov r10, r6 - movs r0, 0x24 - add r0, r9 - mov r8, r0 -_081331BA: - mov r0, r9 - adds r0, 0x20 - add r0, r10 - ldr r1, [r0] - ldr r0, _08133240 @ =gTileBuffer - movs r2, 0x40 - movs r3, 0x2 - bl sub_8072C74 - mov r0, r8 - ldrb r5, [r0] - ldrb r4, [r0, 0x1] - ldr r0, _08133240 @ =gTileBuffer - adds r1, r5, 0 - adds r2, r4, 0 - bl MenuPrint - cmp r6, 0 - beq _081331F8 - adds r1, r4, 0x2 - lsls r1, 24 - lsrs r1, 24 - adds r2, r5, 0x7 - lsls r2, 24 - lsrs r2, 24 - adds r3, r4, 0x3 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - bl MenuZeroFillWindowRect -_081331F8: - movs r0, 0x8 - add r10, r0 - add r8, r0 - adds r7, 0x8 - adds r6, 0x1 - ldr r0, [r7] - cmp r0, 0 - bne _081331BA -_08133208: - ldr r0, [sp, 0x8] - cmp r0, 0 - bne _08133222 - ldr r0, _08133244 @ =gOtherText_TeachWhichMove - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x18 - movs r2, 0x78 - movs r3, 0xC0 - bl sub_8072AB0 -_08133222: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133234: .4byte gSprites -_08133238: .4byte gUnknown_030007B0 -_0813323C: .4byte gUnknown_08402D08 -_08133240: .4byte gTileBuffer -_08133244: .4byte gOtherText_TeachWhichMove - thumb_func_end sub_8133140 - - thumb_func_start sub_8133248 -sub_8133248: @ 8133248 - push {r4,lr} - ldr r0, _08133294 @ =gMain - ldrh r2, [r0, 0x2E] - movs r1, 0x30 - ands r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r4, r0, 31 - ldr r0, _08133298 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0813326C - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0813326C - adds r4, 0x1 -_0813326C: - cmp r4, 0 - beq _0813328A - movs r0, 0x5 - bl PlaySE - ldr r2, _0813329C @ =gUnknown_030007B0 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - strb r3, [r0] -_0813328A: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133294: .4byte gMain -_08133298: .4byte gSaveBlock2 -_0813329C: .4byte gUnknown_030007B0 - thumb_func_end sub_8133248 - - thumb_func_start sub_81332A0 -sub_81332A0: @ 81332A0 - push {r4,lr} - ldr r2, _081332F8 @ =gUnknown_030007B0 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x2] - ldr r0, [r2] - strb r1, [r0, 0x19] - ldr r0, [r2] - strb r1, [r0, 0x18] - ldr r0, [r2] - strb r1, [r0, 0x1C] - ldr r0, [r2] - strb r1, [r0, 0x1A] - ldr r0, [r2] - strb r1, [r0, 0x1B] - ldr r0, [r2] - strb r1, [r0, 0x1D] - ldr r0, [r2] - strb r1, [r0, 0x1E] - ldr r0, [r2] - ldr r3, _081332FC @ =0x000002c3 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r3, 0 - adds r4, r2, 0 - movs r2, 0 -_081332E0: - ldr r0, [r4] - lsls r1, r3, 1 - adds r0, 0x20 - adds r0, r1 - strh r2, [r0] - adds r3, 0x1 - cmp r3, 0x13 - ble _081332E0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081332F8: .4byte gUnknown_030007B0 -_081332FC: .4byte 0x000002c3 - thumb_func_end sub_81332A0 - - thumb_func_start sub_8133300 -sub_8133300: @ 8133300 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0xFF - ands r1, r0 - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x1 - beq _08133324 - cmp r0, 0x1 - ble _0813334A - cmp r0, 0x2 - beq _08133338 - b _0813334A -_08133324: - adds r0, r1, 0 - movs r1, 0x3 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x24] - b _0813334A -_08133338: - adds r0, r1, 0 - movs r1, 0x1 - bl Sin - ldrh r1, [r4, 0x32] - adds r2, r0, 0 - muls r2, r1 - adds r0, r2, 0 - strh r0, [r4, 0x26] -_0813334A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8133300 - - thumb_func_start sub_8133358 -sub_8133358: @ 8133358 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r6, _0813353C @ =gSpriteTemplate_8402D90 - adds r0, r6, 0 - movs r1, 0x8 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r4, _08133540 @ =gUnknown_030007B0 - ldr r1, [r4] - strb r0, [r1, 0x3] - ldr r5, _08133544 @ =gSprites - ldr r2, [r4] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - mov r8, r1 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08133548 @ =0x0000ffff - strh r1, [r0, 0x32] - adds r0, r6, 0 - movs r1, 0x48 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x4] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x2E] - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldr r0, _0813354C @ =gSpriteTemplate_8402DC0 - mov r9, r0 - movs r1, 0xA0 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x5] - ldr r0, [r4] - ldrb r1, [r0, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r4] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r6, 0x2 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x32] - mov r0, r9 - movs r1, 0xA0 - movs r2, 0x3C - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - strb r0, [r1, 0x6] - ldr r2, [r4] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r2, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - movs r5, 0 - ldr r6, _08133550 @ =gSpriteTemplate_8402E08 -_0813344E: - adds r2, r5, 0 - cmp r5, 0 - bge _08133456 - adds r2, r5, 0x3 -_08133456: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xD0 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - adds r0, r6, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r2, r5, 0x4 - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08133544 @ =gSprites - adds r0, r1 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _0813344E - movs r5, 0 - ldr r7, _08133550 @ =gSpriteTemplate_8402E08 - ldr r6, _08133540 @ =gUnknown_030007B0 -_081334A6: - adds r2, r5, 0 - cmp r5, 0 - bge _081334AE - adds r2, r5, 0x3 -_081334AE: - asrs r2, 2 - lsls r1, r2, 2 - subs r1, r5, r1 - lsls r1, 19 - movs r0, 0xE0 - lsls r0, 13 - adds r1, r0 - asrs r1, 16 - lsls r2, 19 - movs r0, 0xB8 - lsls r0, 15 - adds r2, r0 - asrs r2, 16 - adds r0, r7, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r2, r5, 0 - adds r2, 0xC - adds r1, 0x3 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x3 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08133544 @ =gSprites - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1 - cmp r5, 0x7 - ble _081334A6 - movs r5, 0 - ldr r3, _08133540 @ =gUnknown_030007B0 - movs r2, 0x4 -_08133500: - ldr r0, [r3] - adds r0, 0x3 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x13 - ble _08133500 - ldr r1, _08133548 @ =0x0000ffff - ldr r3, _08133554 @ =0x00002d9f - movs r0, 0x12 - str r0, [sp] - movs r0, 0x10 - movs r2, 0xC - bl CreateBlendedOutlineCursor - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813353C: .4byte gSpriteTemplate_8402D90 -_08133540: .4byte gUnknown_030007B0 -_08133544: .4byte gSprites -_08133548: .4byte 0x0000ffff -_0813354C: .4byte gSpriteTemplate_8402DC0 -_08133550: .4byte gSpriteTemplate_8402E08 -_08133554: .4byte 0x00002d9f - thumb_func_end sub_8133358 - - thumb_func_start sub_8133558 -sub_8133558: @ 8133558 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, _081335F4 @ =gUnknown_030007B0 - ldr r1, [r5] - ldr r2, _081335F8 @ =0x000002c5 - adds r0, r1, r2 - ldrb r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081335FC @ =gPlayerParty - adds r0, r2 - adds r1, 0x20 - bl GetMoveRelearnerMoves - ldr r1, [r5] - strb r0, [r1, 0x1A] - movs r4, 0 - ldr r0, [r5] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - bge _081335AA - adds r6, r5, 0 - movs r5, 0x52 -_08133586: - lsls r2, r4, 1 - ldr r1, [r6] - adds r0, r1, r5 - adds r1, 0x20 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08133600 @ =gMoveNames - adds r1, r2 - bl StringCopy - adds r5, 0x19 - adds r4, 0x1 - ldr r0, [r6] - ldrb r0, [r0, 0x1A] - cmp r4, r0 - blt _08133586 -_081335AA: - ldr r4, _081335F4 @ =gUnknown_030007B0 - ldr r0, [r4] - ldr r1, _081335F8 @ =0x000002c5 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081335FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08133604 @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, [r4] - ldrb r2, [r0, 0x1A] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r2 - adds r1, 0x52 - adds r0, r1 - ldr r1, _08133608 @ =gUnknownText_Exit - bl StringCopy - ldr r1, [r4] - ldrb r0, [r1, 0x1A] - adds r0, 0x1 - strb r0, [r1, 0x1A] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081335F4: .4byte gUnknown_030007B0 -_081335F8: .4byte 0x000002c5 -_081335FC: .4byte gPlayerParty -_08133600: .4byte gMoveNames -_08133604: .4byte gStringVar1 -_08133608: .4byte gUnknownText_Exit - thumb_func_end sub_8133558 - - thumb_func_start sub_813360C -sub_813360C: @ 813360C - lsls r0, 24 - ldr r3, _08133628 @ =gUnknown_030007B0 - ldr r2, [r3] - ldrb r1, [r2, 0x18] - strb r1, [r2, 0x1C] - ldr r1, [r3] - lsrs r0, 24 - ldrb r2, [r1, 0x18] - adds r0, r2 - strb r0, [r1, 0x18] - ldr r1, [r3] - movs r0, 0x1 - strb r0, [r1, 0x1D] - bx lr - .align 2, 0 -_08133628: .4byte gUnknown_030007B0 - thumb_func_end sub_813360C - - thumb_func_start sub_813362C -sub_813362C: @ 813362C - push {r4,r5,lr} - ldr r2, _08133670 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08133688 - ldr r4, _08133674 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08133646 - b _08133796 -_08133646: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r1, _08133678 @ =0x000002c3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0 - beq _0813367C - movs r0, 0x1 - negs r0, r0 - bl sub_813360C - b _08133796 - .align 2, 0 -_08133670: .4byte gMain -_08133674: .4byte gUnknown_030007B0 -_08133678: .4byte 0x000002c3 -_0813367C: - ldrb r0, [r1, 0x19] - cmp r0, 0 - bne _08133684 - b _08133796 -_08133684: - subs r0, 0x1 - b _081336DC -_08133688: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081336E8 - ldr r4, _081336C8 @ =gUnknown_030007B0 - ldr r0, [r4] - ldrb r1, [r0, 0x1B] - ldrb r0, [r0, 0x1A] - subs r0, 0x1 - cmp r1, r0 - blt _081336A0 - b _08133796 -_081336A0: - movs r0, 0x5 - bl PlaySE - ldr r1, [r4] - ldrb r0, [r1, 0x1B] - adds r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - ldr r3, _081336CC @ =0x000002c3 - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0x2 - beq _081336D0 - movs r0, 0x1 - bl sub_813360C - b _08133796 - .align 2, 0 -_081336C8: .4byte gUnknown_030007B0 -_081336CC: .4byte 0x000002c3 -_081336D0: - ldrb r2, [r1, 0x19] - ldrb r0, [r1, 0x1A] - subs r0, 0x3 - cmp r2, r0 - beq _08133796 - adds r0, r2, 0x1 -_081336DC: - strb r0, [r1, 0x19] - ldr r1, [r4] - ldrb r0, [r1, 0x1E] - adds r0, 0x1 - strb r0, [r1, 0x1E] - b _08133796 -_081336E8: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813376C - movs r0, 0x5 - bl PlaySE - ldr r5, _08133738 @ =gUnknown_030007B0 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - beq _08133748 - movs r0, 0x8 - strb r0, [r2] - ldr r0, _0813373C @ =gStringVar2 - ldr r1, [r5] - ldrb r3, [r1, 0x1B] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 3 - adds r2, r3 - adds r2, 0x52 - adds r1, r2 - bl StringCopy - ldr r4, _08133740 @ =gStringVar4 - ldr r1, _08133744 @ =gOtherText_TeachSpecificMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - b _08133796 - .align 2, 0 -_08133738: .4byte gUnknown_030007B0 -_0813373C: .4byte gStringVar2 -_08133740: .4byte gStringVar4 -_08133744: .4byte gOtherText_TeachSpecificMove -_08133748: - ldr r4, _08133764 @ =gStringVar4 - ldr r1, _08133768 @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage - ldr r1, [r5] - movs r0, 0xC - strb r0, [r1] - b _08133796 - .align 2, 0 -_08133764: .4byte gStringVar4 -_08133768: .4byte gOtherText_GiveUpTeachingMove -_0813376C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08133796 - movs r0, 0x5 - bl PlaySE - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r1, [r0] - movs r0, 0xC - strb r0, [r1] - ldr r4, _081337D8 @ =gStringVar4 - ldr r1, _081337DC @ =gOtherText_GiveUpTeachingMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0xF - bl MenuPrintMessage -_08133796: - ldr r0, _081337D4 @ =gUnknown_030007B0 - ldr r4, [r0] - ldrb r0, [r4, 0x1A] - cmp r0, 0x3 - bls _081337F8 - ldr r3, _081337E0 @ =gSprites - adds r5, r3, 0 - adds r5, 0xC6 - ldrb r0, [r5] - movs r1, 0x5 - negs r1, r1 - adds r2, r1, 0 - ands r2, r0 - strb r2, [r5] - movs r0, 0x85 - lsls r0, 1 - adds r0, r3 - mov r12, r0 - ldrb r0, [r0] - adds r3, r1, 0 - ands r3, r0 - mov r1, r12 - strb r3, [r1] - ldrb r0, [r4, 0x19] - cmp r0, 0 - bne _081337E4 - movs r1, 0x4 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r5] - b _081337F8 - .align 2, 0 -_081337D4: .4byte gUnknown_030007B0 -_081337D8: .4byte gStringVar4 -_081337DC: .4byte gOtherText_GiveUpTeachingMove -_081337E0: .4byte gSprites -_081337E4: - ldrb r1, [r4, 0x19] - ldrb r0, [r4, 0x1A] - subs r0, 0x3 - cmp r1, r0 - bne _081337F8 - movs r1, 0x4 - adds r0, r3, 0 - orrs r0, r1 - mov r3, r12 - strb r0, [r3] -_081337F8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813362C - - thumb_func_start sub_8133800 -sub_8133800: @ 8133800 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08133834 @ =gUnknown_030007B0 - ldr r0, [r1] - ldrb r6, [r0, 0x19] - ldr r3, _08133838 @ =gTileBuffer - mov r10, r1 - ldr r0, _0813383C @ =gBattleMoves - mov r9, r0 - movs r1, 0x2 - mov r8, r1 -_0813381C: - mov r4, r10 - ldr r2, [r4] - ldrb r0, [r2, 0x1A] - cmp r6, r0 - bcc _08133844 - adds r0, r3, 0 - ldr r1, _08133840 @ =gEmptyString_81E72B0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_08133834: .4byte gUnknown_030007B0 -_08133838: .4byte gTileBuffer -_0813383C: .4byte gBattleMoves -_08133840: .4byte gEmptyString_81E72B0 -_08133844: - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r6, r0 - bne _08133860 - adds r0, r3, 0 - ldr r1, _0813385C @ =gUnknownText_Exit - movs r2, 0x90 - movs r3, 0 - bl sub_8072C74 - b _081338FA - .align 2, 0 -_0813385C: .4byte gUnknownText_Exit -_08133860: - lsls r1, r6, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - movs r4, 0xB1 - lsls r4, 2 - adds r0, r2, r4 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _081338A4 - ldr r1, _0813389C @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 27 - ldr r1, _081338A0 @ =gUnknown_083CAF70 - adds r0, r1 - ldr r1, [r0] - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - lsls r4, r5, 1 - b _081338C2 - .align 2, 0 -_0813389C: .4byte gContestMoves -_081338A0: .4byte gUnknown_083CAF70 -_081338A4: - lsls r4, r5, 1 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08133938 @ =gTypeNames - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x27 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 -_081338C2: - adds r0, r7, r6 - lsls r0, 3 - adds r0, r6 - adds r0, 0x52 - mov r2, r10 - ldr r1, [r2] - adds r1, r0 - adds r0, r3, 0 - movs r2, 0x72 - movs r3, 0 - bl sub_8072C74 - adds r3, r0, 0 - movs r0, 0xCA - strb r0, [r3] - strb r0, [r3, 0x1] - movs r0, 0xBA - strb r0, [r3, 0x2] - adds r3, 0x3 - adds r0, r4, r5 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x4] - adds r0, r3, 0 - movs r2, 0x90 - movs r3, 0 - bl sub_8072C14 -_081338FA: - adds r3, r0, 0 - movs r0, 0xFE - strb r0, [r3] - adds r3, 0x1 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0x1 - negs r4, r4 - add r8, r4 - mov r0, r8 - cmp r0, 0 - blt _08133916 - b _0813381C -_08133916: - movs r0, 0xFF - strb r0, [r3] - ldr r0, _0813393C @ =gTileBuffer - movs r1, 0xB - movs r2, 0x1 - bl MenuPrint - movs r0, 0 - bl sub_813360C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133938: .4byte gTypeNames -_0813393C: .4byte gTileBuffer - thumb_func_end sub_8133800 - - thumb_func_start sub_8133940 -sub_8133940: @ 8133940 - push {r4-r7,lr} - sub sp, 0x34 - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _08133968 @ =gExpandedPlaceholder_Empty - mov r0, sp - bl StringCopy - ldrb r0, [r4, 0x2] - subs r0, 0x1 - cmp r0, 0x6 - bls _0813395C - b _08133AE2 -_0813395C: - lsls r0, 2 - ldr r1, _0813396C @ =_08133970 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08133968: .4byte gExpandedPlaceholder_Empty -_0813396C: .4byte _08133970 - .align 2, 0 -_08133970: - .4byte _08133AE2 - .4byte _0813398C - .4byte _08133AE2 - .4byte _081339A4 - .4byte _08133AE2 - .4byte _081339E4 - .4byte _08133A64 -_0813398C: - ldr r0, _081339A0 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - bls _081339B4 - ldrb r1, [r1, 0x1] - b _081339CE - .align 2, 0 -_081339A0: .4byte gBattleMoves -_081339A4: - ldr r0, _081339C4 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _081339CC -_081339B4: - ldr r1, _081339C8 @ =gOtherText_ThreeDashes2 - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C74 - b _081339D8 - .align 2, 0 -_081339C4: .4byte gBattleMoves -_081339C8: .4byte gOtherText_ThreeDashes2 -_081339CC: - ldrb r1, [r1, 0x3] -_081339CE: - mov r0, sp - movs r2, 0x20 - movs r3, 0x2 - bl sub_8072C14 -_081339D8: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - mov r0, sp - bl MenuPrint - b _08133AE2 -_081339E4: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133A34 @ =gContestEffects - ldr r1, _08133A38 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A14 - movs r5, 0 -_08133A14: - movs r4, 0 - ldr r7, _08133A3C @ =gUnknown_030007B0 - ldr r6, _08133A40 @ =gSprites -_08133A1A: - cmp r4, r5 - bcs _08133A44 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAnim - b _08133A58 - .align 2, 0 -_08133A34: .4byte gContestEffects -_08133A38: .4byte gContestMoves -_08133A3C: .4byte gUnknown_030007B0 -_08133A40: .4byte gSprites -_08133A44: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim -_08133A58: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A1A - b _08133AE2 -_08133A64: - ldrb r2, [r4] - ldrb r1, [r4, 0x1] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldr r2, _08133AB4 @ =gContestEffects - ldr r1, _08133AB8 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - bne _08133A94 - movs r5, 0 -_08133A94: - movs r4, 0 - ldr r7, _08133ABC @ =gUnknown_030007B0 - ldr r6, _08133AC0 @ =gSprites -_08133A9A: - cmp r4, r5 - bcs _08133AC4 - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x3 - bl StartSpriteAnim - b _08133AD8 - .align 2, 0 -_08133AB4: .4byte gContestEffects -_08133AB8: .4byte gContestMoves -_08133ABC: .4byte gUnknown_030007B0 -_08133AC0: .4byte gSprites -_08133AC4: - ldr r0, [r7] - adds r0, r4 - ldrb r1, [r0, 0xF] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - bl StartSpriteAnim -_08133AD8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133A9A -_08133AE2: - add sp, 0x34 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8133940 - - thumb_func_start sub_8133AEC -sub_8133AEC: @ 8133AEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r6, _08133B88 @ =gUnknown_030007B0 - ldr r2, [r6] - ldrb r1, [r2, 0x1B] - ldrb r0, [r2, 0x1A] - subs r0, 0x1 - cmp r1, r0 - bne _08133B08 - b _08133C04 -_08133B08: - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - ldrh r5, [r0] - cmp r3, 0 - beq _08133BA0 - movs r4, 0 - lsls r0, r5, 3 - mov r8, r0 - ldr r7, _08133B8C @ =gSprites - adds r3, r6, 0 - movs r6, 0x5 - negs r6, r6 -_08133B24: - ldr r0, [r3] - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133B24 - movs r4, 0 -_08133B48: - ldr r0, _08133B90 @ =gUnknown_08402E3D - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133B94 @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _08133B48 - ldr r1, _08133B98 @ =gUnknown_083CADD4 - ldr r0, _08133B9C @ =gContestMoves - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072AB0 - b _08133C92 - .align 2, 0 -_08133B88: .4byte gUnknown_030007B0 -_08133B8C: .4byte gSprites -_08133B90: .4byte gUnknown_08402E3D -_08133B94: .4byte gUnknown_08402E24 -_08133B98: .4byte gUnknown_083CADD4 -_08133B9C: .4byte gContestMoves -_08133BA0: - movs r4, 0 - subs r6, r5, 0x1 -_08133BA4: - ldr r0, _08133BF8 @ =gUnknown_08402E39 - adds r0, r4, r0 - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08133BFC @ =gUnknown_08402E24 - adds r1, r0 - adds r0, r5, 0 - bl sub_8133940 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08133BA4 - ldr r1, _08133C00 @ =gMoveDescriptions - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - str r1, [sp] - movs r1, 0x58 - movs r2, 0x48 - movs r3, 0x90 - bl sub_8072A18 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08133C92 - lsls r1, r0, 25 - movs r0, 0x90 - lsls r0, 20 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xB - movs r2, 0x1C - movs r3, 0xC - bl MenuFillWindowRectWithBlankTile - b _08133C92 - .align 2, 0 -_08133BF8: .4byte gUnknown_08402E39 -_08133BFC: .4byte gUnknown_08402E24 -_08133C00: .4byte gMoveDescriptions -_08133C04: - cmp r3, 0 - beq _08133C5C - ldr r4, _08133C54 @ =gUnknown_08402E24 - ldrb r2, [r4, 0xF] - ldrb r1, [r4, 0x10] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - ldrb r2, [r4, 0x12] - ldrb r1, [r4, 0x13] - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r2, 0 - bl MenuZeroFillWindowRect - movs r4, 0 - ldr r5, _08133C58 @ =gSprites - adds r3, r6, 0 - movs r2, 0x4 -_08133C32: - ldr r0, [r3] - adds r0, r4 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xF - bls _08133C32 - b _08133C86 - .align 2, 0 -_08133C54: .4byte gUnknown_08402E24 -_08133C58: .4byte gSprites -_08133C5C: - ldr r4, _08133CA0 @ =gUnknown_08402E24 - ldrb r0, [r4, 0x3] - ldrb r1, [r4, 0x4] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - ldrb r0, [r4, 0x9] - ldrb r1, [r4, 0xA] - adds r2, r0, 0x3 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect -_08133C86: - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect -_08133C92: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133CA0: .4byte gUnknown_08402E24 - thumb_func_end sub_8133AEC - - thumb_func_start sub_8133CA4 -sub_8133CA4: @ 8133CA4 - push {lr} - movs r0, 0x15 - movs r1, 0x7 - movs r2, 0x1B - movs r3, 0xC - bl MenuZeroFillWindowRect - ldr r0, _08133CC8 @ =gUnknown_030007B0 - ldr r0, [r0] - movs r1, 0xB1 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_8133AEC - pop {r0} - bx r0 - .align 2, 0 -_08133CC8: .4byte gUnknown_030007B0 - thumb_func_end sub_8133CA4 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokemon.h b/include/pokemon.h index be6ccfe74..739fbf0f9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -581,6 +581,7 @@ void AdjustFriendship(struct Pokemon *, u8); u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); void UpdatePartyPokerusTime(u16); u32 CanMonLearnTMHM(struct Pokemon *, u8); +u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); diff --git a/ld_script.txt b/ld_script.txt index 142e7a421..285d15fb5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -245,7 +245,6 @@ SECTIONS { src/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); src/learn_move.o(.text); - asm/learn_move.o(.text); src/fldeff_softboiled.o(.text); src/decoration_inventory.o(.text); src/roamer.o(.text); diff --git a/src/learn_move.c b/src/learn_move.c index fe14cebf6..01a37fe70 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -12,8 +12,10 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "strings2.h" #include "task.h" +#include "trig.h" struct UnknownStruct1 { @@ -30,7 +32,6 @@ extern u8 gTileBuffer[]; extern const struct WindowConfig gWindowConfig_81E6CE4; extern const struct WindowConfig gWindowConfig_81E7240; -extern const struct UnknownStruct1 gUnknown_08402D08[]; extern const struct SpriteSheet gUnknown_08402D80; extern const struct SpritePalette gUnknown_08402D88; @@ -39,20 +40,27 @@ extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); struct Struct2017000 { u8 unk0; - u8 filler1[2]; - u8 unk3; - u8 unk4; + u8 filler1; + u8 unk2; + u8 unk3[2]; + //u8 unk4; u8 unk5[16]; u8 filler15[3]; u8 unk18; - u8 filler19[0x1B-0x19]; + u8 unk19; + u8 unk1A; u8 unk1B; - u8 filler1C; + u8 unk1C; u8 unk1D; u8 unk1E; u8 filler1F; - u16 unk20[4]; - u8 filler28[0x2C3-0x28]; + //u16 unk20[4]; + //u8 filler28[0x2C3-0x28]; + u16 unk20[20]; + u8 filler48[0x52-0x48]; + //u8 unk52[0x2C3-0x52]; + u8 unk52[6][0x19]; + u8 fillerE8[0x2C3-0xE8]; u8 unk2C3; u8 unk2C4; u8 unk2C5; @@ -73,16 +81,20 @@ const u8 gUnknown_08402CF8[][4] = {10, 8, 29, 13}, }; -const struct UnknownStruct1 gUnknown_08402D08[] = +const struct UnknownStruct1 gUnknown_08402D08[][4] = { - {OtherText_Battle, 1, 1, 0}, - {OtherText_Power, 1, 4, 1}, - {OtherText_Accuracy, 1, 9, 2}, - {NULL, 0, 0, 0}, - {OtherText_Contest, 1, 1, 0}, - {OtherText_Appeal, 1, 4, 1}, - {OtherText_Jam, 1, 9, 2}, - {NULL, 0, 0, 0}, + { + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, + { + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, }; void sub_813269C(u8); @@ -99,7 +111,7 @@ void sub_8133358(void); void sub_8133558(void); void sub_813362C(void); void sub_8133800(void); -void sub_8133AEC(); +void sub_8133AEC(u8, int); void sub_8133CA4(void); void sub_813265C(void) @@ -519,17 +531,17 @@ void sub_8133030(bool8 a) { s32 i; - gSprites[gUnknown_030007B0->unk3].invisible = FALSE; - gSprites[gUnknown_030007B0->unk4].invisible = FALSE; + gSprites[gUnknown_030007B0->unk3[0]].invisible = FALSE; + gSprites[gUnknown_030007B0->unk3[1]].invisible = FALSE; for (i = 0; i < 16; i++) { // Hmm... gSprites[*((u8 *)gUnknown_030007B0 + i + 7)].invisible = TRUE; } - for (i = 0; gUnknown_08402D08[i].unk0 != NULL; i++) + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { - sub_8072C74(gTileBuffer, gUnknown_08402D08[i].unk0, 64, 2); - MenuPrint(gTileBuffer, gUnknown_08402D08[i].unk4, gUnknown_08402D08[i].unk5); + sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); } if (!a) { @@ -554,3 +566,405 @@ u8 sub_81330E8(void) return r4; } + +void sub_8133140(bool8 a) +{ + s32 i; + + gSprites[gUnknown_030007B0->unk3[0]].invisible = FALSE; + gSprites[gUnknown_030007B0->unk3[1]].invisible = FALSE; + for (i = 0; i < 16; i++) + { + // Hmm... + gSprites[*((u8 *)gUnknown_030007B0 + i + 7)].invisible = FALSE; + } + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) + { + sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); + MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + if (i != 0) + { + MenuZeroFillWindowRect( + gUnknown_08402D08[1][i].unk4, + gUnknown_08402D08[1][i].unk5 + 2, + gUnknown_08402D08[1][i].unk4 + 7, + gUnknown_08402D08[1][i].unk5 + 3); + } + } + if (!a) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +u8 sub_8133248(void) +{ + u32 r4 = ((gMain.newKeys & 0x30) != 0); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && (gMain.newKeys & 0x300)) + r4++; + + if (r4 != 0) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk0 = 3; + gUnknown_030007B0->unk2C4 = 0; + } + + return r4; +} + +void sub_81332A0(void) +{ + s32 i; + + gUnknown_030007B0->unk0 = 0; + gUnknown_030007B0->unk2 = 0; + gUnknown_030007B0->unk19 = 0; + gUnknown_030007B0->unk18 = 0; + gUnknown_030007B0->unk1C = 0; + gUnknown_030007B0->unk1A = 0; + gUnknown_030007B0->unk1B = 0; + gUnknown_030007B0->unk1D = 0; + gUnknown_030007B0->unk1E = 0; + gUnknown_030007B0->unk2C3 = 0; + gUnknown_030007B0->unk2C4 = 0; + for (i = 0; i < 20; i++) + gUnknown_030007B0->unk20[i] = 0; +} + +void sub_8133300(struct Sprite *sprite) +{ + s16 var = (sprite->data1 * 10) & 0xFF; + + switch (sprite->data0) + { + case 0: + break; + case 1: + sprite->pos2.x = Sin(var, 3) * sprite->data2; + break; + case 2: + sprite->pos2.y = Sin(var, 1) * sprite->data2; + break; + } + sprite->data1++; +} + +extern const struct SpriteTemplate gSpriteTemplate_8402D90; +extern const struct SpriteTemplate gSpriteTemplate_8402DC0; +extern const struct SpriteTemplate gSpriteTemplate_8402E08; + +void sub_8133358(void) +{ + s32 i; + + gUnknown_030007B0->unk3[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[gUnknown_030007B0->unk3[0]].data0 = 1; + gSprites[gUnknown_030007B0->unk3[0]].data2 = -1; + + gUnknown_030007B0->unk3[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[1]], 1); + gSprites[gUnknown_030007B0->unk3[1]].data0 = 1; + gSprites[gUnknown_030007B0->unk3[1]].data2 = 1; + + gUnknown_030007B0->unk3[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[2]], 1); + gSprites[gUnknown_030007B0->unk3[2]].data0 = 2; + gSprites[gUnknown_030007B0->unk3[2]].data2 = -1; + + gUnknown_030007B0->unk3[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[gUnknown_030007B0->unk3[3]].data0 = 2; + gSprites[gUnknown_030007B0->unk3[3]].data2 = 1; + + for (i = 0; i < 8; i++) + { + gUnknown_030007B0->unk3[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 2); + } + + for (i = 0; i < 8; i++) + { + gUnknown_030007B0->unk3[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 2); + } + + for (i = 0; i < 20; i++) + gSprites[gUnknown_030007B0->unk3[i]].invisible = TRUE; + + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); +} + +void sub_8133558(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + gUnknown_030007B0->unk1A = GetMoveRelearnerMoves(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20); + for (i = 0; i < gUnknown_030007B0->unk1A; i++) + StringCopy(gUnknown_030007B0->unk52[i], gMoveNames[gUnknown_030007B0->unk20[i]]); + GetMonData(&gPlayerParty[gUnknown_030007B0->unk2C5], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(gUnknown_030007B0->unk52[gUnknown_030007B0->unk1A], gUnknownText_Exit); + gUnknown_030007B0->unk1A++; +} + +void sub_813360C(s8 a) +{ + gUnknown_030007B0->unk1C = gUnknown_030007B0->unk18; + gUnknown_030007B0->unk18 += a; + gUnknown_030007B0->unk1D = 1; +} + +void sub_813362C(void) +{ + if (gMain.newAndRepeatedKeys & 0x40) + { + if (gUnknown_030007B0->unk1B != 0) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk1B--; + gUnknown_030007B0->unk2C3 = 1; + if (gUnknown_030007B0->unk18 != 0) + { + sub_813360C(-1); + } + else if (gUnknown_030007B0->unk19 != 0) + { + gUnknown_030007B0->unk19--; + gUnknown_030007B0->unk1E++; + } + } + } + else if (gMain.newAndRepeatedKeys & 0x80) + { + if (gUnknown_030007B0->unk1B < gUnknown_030007B0->unk1A - 1) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk1B++; + gUnknown_030007B0->unk2C3 = 1; + if (gUnknown_030007B0->unk18 != 2) + { + sub_813360C(1); + } + else if (gUnknown_030007B0->unk19 != gUnknown_030007B0->unk1A - 3) + { + gUnknown_030007B0->unk19++; + gUnknown_030007B0->unk1E++; + } + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_030007B0->unk1B != gUnknown_030007B0->unk1A - 1) + { + gUnknown_030007B0->unk0 = 8; + StringCopy(gStringVar2, gUnknown_030007B0->unk52[gUnknown_030007B0->unk1B]); + StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + gUnknown_030007B0->unk0 = 12; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_030007B0->unk0 = 12; + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + if (gUnknown_030007B0->unk1A > 3) + { + gSprites[2].invisible = FALSE; + gSprites[3].invisible = FALSE; + if (gUnknown_030007B0->unk19 == 0) + gSprites[2].invisible = TRUE; + else if (gUnknown_030007B0->unk19 == gUnknown_030007B0->unk1A - 3) + gSprites[3].invisible = TRUE; + } +} + +extern const u8 *const gUnknown_083CAF70[]; + +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +extern const struct ContestMove gContestMoves[]; +extern const u8 gTypeNames[][7]; + +void sub_8133800(void) +{ + u8 r6 = gUnknown_030007B0->unk19; + u8 *str = gTileBuffer; + s32 i; + + for (i = 0; i < 3; i++) + { + if (r6 >= gUnknown_030007B0->unk1A) + { + str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); + } + else if (r6 == gUnknown_030007B0->unk1A - 1) + { + str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); + } + else + { + u16 moveId = gUnknown_030007B0->unk20[r6]; + + if (gUnknown_030007B0->unk2C4 != 0) + str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); + else + str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); + + str = sub_8072C74(str, gUnknown_030007B0->unk52[r6], 0x72, 0); + + str[0] = 0xCA; + str[1] = 0xCA; + str[2] = 0xBA; + str += 3; + + str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); + } + *str++ = 0xFE; + r6++; + } + *str = 0xFF; + MenuPrint(gTileBuffer, 11, 1); + sub_813360C(0); +} + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + +extern const struct ContestEffect gContestEffects[]; + +void sub_8133940(u16 a, const u8 *b) +{ + u8 str[0x34]; + u8 numHearts; + u8 i; + + StringCopy(str, gExpandedPlaceholder_Empty); + switch (b[2]) + { + case 1: + break; + case 2: + if (gBattleMoves[a].power < 2) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[a].power, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 4: + if (gBattleMoves[a].accuracy == 0) + sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); + else + sub_8072C14(str, gBattleMoves[a].accuracy, 32, 2); + MenuPrint(str, b[0], b[1]); + break; + case 6: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 1); + else + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 0); + } + break; + case 7: + MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 3); + else + StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 2); + } + break; + } +} + +extern const u8 gUnknown_08402E24[][3]; +extern const u8 gUnknown_08402E3D[]; +extern const u8 gUnknown_08402E39[]; + +extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gMoveDescriptions[]; + +void sub_8133AEC(u8 a, int unused) +{ + u16 i; + + if (gUnknown_030007B0->unk1B != gUnknown_030007B0->unk1A - 1) + { + u16 r5 = gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]; + + if (a != 0) + { + for (i = 0; i < 16; i++) + gSprites[gUnknown_030007B0->unk3[i + 4]].invisible = FALSE; + for (i = 0; i < 3; i++) + sub_8133940(r5, gUnknown_08402E24[gUnknown_08402E3D[i]]); + sub_8072AB0(gUnknown_083CADD4[gContestMoves[r5].effect], 0x58, 0x48, 0x90, 32, 1); + } + //_08133BA0 + else + { + u8 var; + + for (i = 0; i < 4; i++) + sub_8133940(r5, gUnknown_08402E24[gUnknown_08402E39[i]]); + var = sub_8072A18(gMoveDescriptions[r5 - 1], 0x58, 0x48, 0x90, 1); + if (var < 2) + { + u8 r1 = var * 2 + 9; + + MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + } + } + } + else + { + if (a != 0) + { + MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + for (i = 0; i < 16; i++) + gSprites[gUnknown_030007B0->unk3[i + 4]].invisible = TRUE; + } + else + { + MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + } + MenuZeroFillWindowRect(11, 9, 28, 12); + } +} + +void sub_8133CA4(void) +{ + MenuZeroFillWindowRect(21, 7, 27, 12); + sub_8133AEC(gUnknown_030007B0->unk2C4, 0); +} -- cgit v1.2.3 From 11f590a1e88eed99b24439d246110356142cc9eb Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 12 Aug 2017 13:20:23 -0500 Subject: move ROM data into learn_move.c --- data/learn_move.s | 119 ------------------------------------------------ ld_script.txt | 1 - src/learn_move.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 129 insertions(+), 124 deletions(-) delete mode 100644 data/learn_move.s diff --git a/data/learn_move.s b/data/learn_move.s deleted file mode 100644 index 252f47ac6..000000000 --- a/data/learn_move.s +++ /dev/null @@ -1,119 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .4byte 0xFF00FFEF - .4byte gTileBuffer - - .align 2 -gOamData_8402D50:: @ 8402D50 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D58:: @ 8402D58 - .2byte 0x8000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gOamData_8402D60:: @ 8402D60 - .2byte 0x4000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8402D68:: @ 8402D68 - obj_image_anim_frame 2, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402D70:: @ 8402D70 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402D78:: @ 8402D78 - .4byte gSpriteAnim_8402D68 - .4byte gSpriteAnim_8402D70 - - .align 2 -gUnknown_08402D80:: @ 8402D80 - obj_tiles gDexArrows_Gfx, 384, 0x1595 - - .align 2 -gUnknown_08402D88:: @ 8402D88 - obj_pal gDexArrows_Pal, 0x1596 - - .align 2 -gSpriteTemplate_8402D90:: @ 8402D90 - spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DA8:: @ 8402DA8 - obj_image_anim_frame 4, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DB0:: @ 8402DB0 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DB8:: @ 8402DB8 - .4byte gSpriteAnim_8402DA8 - .4byte gSpriteAnim_8402DB0 - - .align 2 -gSpriteTemplate_8402DC0:: @ 8402DC0 - spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .align 2 -gSpriteAnim_8402DD8:: @ 8402DD8 - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE0:: @ 8402DE0 - obj_image_anim_frame 9, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DE8:: @ 8402DE8 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_8402DF0:: @ 8402DF0 - obj_image_anim_frame 11, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8402DF8:: @ 8402DF8 - .4byte gSpriteAnim_8402DD8 - .4byte gSpriteAnim_8402DE0 - .4byte gSpriteAnim_8402DE8 - .4byte gSpriteAnim_8402DF0 - - .align 2 -gSpriteTemplate_8402E08:: @ 8402E08 - spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300 - - .string "あきと$" @ programmer Akito Mori? - -gUnknown_08402E24:: @ 8402E24 - .byte 11, 1, 1 - .byte 3, 6, 2 - .byte 24, 1, 3 - .byte 3, 11, 4 - .byte 5, 4, 5 - .byte 3, 6, 6 - .byte 3, 11, 7 - -gUnknown_08402E39:: @ 8402E39 - .byte 0, 1, 2, 3 - -gUnknown_08402E3D:: @ 8402E3D - .byte 4, 5, 6 diff --git a/ld_script.txt b/ld_script.txt index 285d15fb5..9ca2705a6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -454,7 +454,6 @@ SECTIONS { data/battle_anim_81258BC.o(.rodata); data/battle_anim_812C144.o(.rodata); src/learn_move.o(.rodata); - data/learn_move.o(.rodata); src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); data/battle_tower.o(.rodata); diff --git a/src/learn_move.c b/src/learn_move.c index 01a37fe70..a83d7a491 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -97,6 +97,135 @@ const struct UnknownStruct1 gUnknown_08402D08[][4] = }, }; +// XXX: What are these for? +const u32 unkDataFF00FFEF = 0xFF00FFEF; +const u8 *const gTileBuffer_ = gTileBuffer; + +const struct OamData gOamData_8402D50 = {.shape = 0}; +const struct OamData gOamData_8402D58 = {.shape = 2}; +const struct OamData gOamData_8402D60 = {.shape = 1}; + +const union AnimCmd gSpriteAnim_8402D68[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402D70[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402D78[] = +{ + gSpriteAnim_8402D68, + gSpriteAnim_8402D70, +}; + +const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; +const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526}; + +void sub_8133300(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_8402D90 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D58, + .anims = gSpriteAnimTable_8402D78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DA8[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DB0[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DB8[] = +{ + gSpriteAnim_8402DA8, + gSpriteAnim_8402DB0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402DC0 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D60, + .anims = gSpriteAnimTable_8402DB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const union AnimCmd gSpriteAnim_8402DD8[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE0[] = +{ + ANIMCMD_FRAME(9, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE8[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DF0[] = +{ + ANIMCMD_FRAME(11, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DF8[] = +{ + gSpriteAnim_8402DD8, + gSpriteAnim_8402DE0, + gSpriteAnim_8402DE8, + gSpriteAnim_8402DF0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402E08 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D50, + .anims = gSpriteAnimTable_8402DF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8133300, +}; + +const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? + +const u8 gUnknown_08402E24[7][3] = +{ + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, +}; + +const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; +const u8 gUnknown_08402E3D[] = {4, 5, 6}; + void sub_813269C(u8); void sub_81326D8(void); void sub_8132870(void); @@ -906,10 +1035,6 @@ void sub_8133940(u16 a, const u8 *b) } } -extern const u8 gUnknown_08402E24[][3]; -extern const u8 gUnknown_08402E3D[]; -extern const u8 gUnknown_08402E39[]; - extern const u8 *const gUnknown_083CADD4[]; extern const u8 *const gMoveDescriptions[]; -- cgit v1.2.3 From 79a04893cea2b62ce21eaf236a13998130ee2546 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 12 Aug 2017 22:35:53 +0200 Subject: almost done --- asm-de/berry_blender.s | 50 +- asm/berry_blender.s | 4063 ----------------------------------------------- include/berry_blender.h | 6 - src/berry_blender.c | 1800 ++++++++++++++++++--- src/link.c | 5 +- 5 files changed, 1611 insertions(+), 4313 deletions(-) delete mode 100644 include/berry_blender.h diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s index 6966ce04c..7b23a2e64 100644 --- a/asm-de/berry_blender.s +++ b/asm-de/berry_blender.s @@ -1826,7 +1826,7 @@ _0804F214: adds r1, r7 ldrb r1, [r1] adds r1, 0x85 - bl sub_80516C4 + bl Blender_SetBankBerryData lsls r4, 16 lsrs r3, r4, 16 cmp r3, r5 @@ -2053,7 +2053,7 @@ _0804F3F8: ldr r4, _0804F46C @ =gScriptItemId ldrh r1, [r4] movs r0, 0 - bl sub_80516C4 + bl Blender_SetBankBerryData ldr r5, _0804F470 @ =gUnknown_03004854 ldr r0, [r5] movs r6, 0xBE @@ -4979,7 +4979,7 @@ _08050AA0: _08050AC8: .4byte gBlockRecvBuffer _08050ACC: .4byte gUnknown_03004854 _08050AD0: - bl sub_8052228 + bl Blender_PrintBlendingRanking lsls r0, 24 cmp r0, 0 bne _08050ADC @@ -4987,7 +4987,7 @@ _08050AD0: _08050ADC: b _08050C82 _08050ADE: - bl sub_8051C58 + bl Blender_PrintBlendingResults lsls r0, 24 cmp r0, 0 bne _08050AEA @@ -6467,8 +6467,8 @@ _080516BC: _080516C0: .4byte 0x0000fff4 thumb_func_end sub_8051684 - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 + thumb_func_start Blender_SetBankBerryData +Blender_SetBankBerryData: @ 80516C4 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -6493,7 +6493,7 @@ sub_80516C4: @ 80516C4 bx r0 .align 2, 0 _080516F4: .4byte gUnknown_03004854 - thumb_func_end sub_80516C4 + thumb_func_end Blender_SetBankBerryData thumb_func_start unref_sub_80516F8 unref_sub_80516F8: @ 80516F8 @@ -7200,8 +7200,8 @@ sub_8051C04: @ 8051C04 _08051C20: .4byte gUnknown_03004854 thumb_func_end sub_8051C04 - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 + thumb_func_start Blender_TrySettingRecord +Blender_TrySettingRecord: @ 8051C24 push {lr} ldr r2, _08051C4C @ =gSaveBlock1 ldr r0, _08051C50 @ =gUnknown_03004854 @@ -7227,10 +7227,10 @@ _08051C48: _08051C4C: .4byte gSaveBlock1 _08051C50: .4byte gUnknown_03004854 _08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 + thumb_func_end Blender_TrySettingRecord - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 + thumb_func_start Blender_PrintBlendingResults +Blender_PrintBlendingResults: @ 8051C58 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7652,7 +7652,7 @@ _08051FF4: lsls r0, 24 cmp r0, 0 beq _08052006 - bl sub_8051C24 + bl Blender_TrySettingRecord movs r0, 0x1 b _08052008 _08052006: @@ -7666,7 +7666,7 @@ _08052008: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8051C58 + thumb_func_end Blender_PrintBlendingResults thumb_func_start sub_805201C sub_805201C: @ 805201C @@ -7741,8 +7741,8 @@ _080520C4: .4byte gOtherText_Period _080520C8: .4byte gUnknown_08216249 thumb_func_end sub_805201C - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC + thumb_func_start Blender_SortBasedOnPoints +Blender_SortBasedOnPoints: @ 80520CC push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -7792,10 +7792,10 @@ _08052118: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_80520CC + thumb_func_end Blender_SortBasedOnPoints - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 + thumb_func_start Blender_SortScores +Blender_SortScores: @ 8052124 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7894,7 +7894,7 @@ _080521D6: ldrb r1, [r0] mov r0, sp ldr r2, [sp, 0x14] - bl sub_80520CC + bl Blender_SortBasedOnPoints movs r5, 0 mov r4, r10 ldr r0, [r4] @@ -7930,10 +7930,10 @@ _08052218: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8052124 + thumb_func_end Blender_SortScores - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 + thumb_func_start Blender_PrintBlendingRanking +Blender_PrintBlendingRanking: @ 8052228 push {r4-r7,lr} mov r7, r8 push {r7} @@ -8084,7 +8084,7 @@ _080522B6: add r0, r8 movs r1, 0x1 bl StartSpriteAnim - bl sub_8052124 + bl Blender_SortScores movs r2, 0 mov r8, r2 b _0805243C @@ -8248,7 +8248,7 @@ _080524B0: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8052228 + thumb_func_end Blender_PrintBlendingRanking thumb_func_start unref_sub_80524BC unref_sub_80524BC: @ 80524BC diff --git a/asm/berry_blender.s b/asm/berry_blender.s index c9a2eb379..c08172bab 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -8,4069 +8,6 @@ - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =sBerryBlenderData - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte sBerryBlenderData -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =sBerryBlenderData - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte sBerryBlenderData - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =sBerryBlenderData - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte sBerryBlenderData -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte sBerryBlenderData -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte sBerryBlenderData -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =sBerryBlenderData - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte sBerryBlenderData -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl Blender_ControlHitPitch - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =sBerryBlenderData - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte sBerryBlenderData -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =sBerryBlenderData - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte sBerryBlenderData -_08050AD0: - bl sub_8052228 - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl sub_8051C58 - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =sBerryBlenderData - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte sBerryBlenderData -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =sBerryBlenderData - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte sBerryBlenderData -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte sBerryBlenderData -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte sBerryBlenderData -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =sBerryBlenderData - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte sBerryBlenderData -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =sBerryBlenderData - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte sBerryBlenderData -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =sBerryBlenderData - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte sBerryBlenderData -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte sBerryBlenderData - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =sBerryBlenderData - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte sBerryBlenderData -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =sBerryBlenderData - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte sBerryBlenderData -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =sBerryBlenderData - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte sBerryBlenderData -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =sBerryBlenderData - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte sBerryBlenderData -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte sBerryBlenderData -_08050DD0: - ldr r0, _08050DE8 @ =sBerryBlenderData - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte sBerryBlenderData -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510C4 -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte sBerryBlenderData -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F18 - .4byte _08050F6C - .4byte _08050F8C - .4byte _08050FAA - .4byte _08050FD4 - .4byte _08051004 - .4byte _08051020 - .4byte _08051030 - .4byte _08051054 - .4byte _08051094 - .4byte _080510B6 -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - bne _08050E9C - b _08050FA2 -_08050E9C: - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA4 - b _080510C4 -_08050EA4: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050FA2 - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510C4 - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F0C @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F10 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F14 @ =gOtherText_OtherCaseIsFull - b _08050F4C - .align 2, 0 -_08050F0C: .4byte gStringVar4 -_08050F10: .4byte gLinkPlayers + 0x8 -_08050F14: .4byte gOtherText_OtherCaseIsFull -_08050F18: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F60 @ =gStringVar4 - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F64 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _08050F68 @ =gOtherText_NoBerriesForBlend -_08050F4C: - adds r0, r4, 0 - bl StringAppend - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510C4 - .align 2, 0 -_08050F60: .4byte gStringVar4 -_08050F64: .4byte gLinkPlayers + 0x8 -_08050F68: .4byte gOtherText_NoBerriesForBlend -_08050F6C: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F78 - b _080510C4 -_08050F78: - ldr r0, _08050F88 @ =sBerryBlenderData - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _080510AC - .align 2, 0 -_08050F88: .4byte sBerryBlenderData -_08050F8C: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050FA0 - b _080510C4 -_08050FA0: - adds r1, r2, 0 -_08050FA2: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510C4 -_08050FAA: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FCC @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FD0 @ =sBerryBlenderData - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08050FCC: .4byte gMultiText_Saving -_08050FD0: .4byte sBerryBlenderData -_08050FD4: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - ldr r3, _08051000 @ =sBerryBlenderData - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510C4 - .align 2, 0 -_08051000: .4byte sBerryBlenderData -_08051004: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x37 - bl PlaySE - ldr r0, _0805101C @ =sBerryBlenderData - ldr r1, [r0] - b _080510AC - .align 2, 0 -_0805101C: .4byte sBerryBlenderData -_08051020: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510C4 -_08051030: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510C4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051050 @ =sBerryBlenderData - ldr r1, [r0] - b _080510AC - .align 2, 0 -_08051050: .4byte sBerryBlenderData -_08051054: - ldr r0, _0805107C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510C4 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051080 @ =0x00002222 - cmp r1, r0 - bne _08051088 - ldr r0, _08051084 @ =sub_804E538 - bl SetMainCallback2 - b _080510C4 - .align 2, 0 -_0805107C: .4byte gPaletteFade -_08051080: .4byte 0x00002222 -_08051084: .4byte sub_804E538 -_08051088: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _080510AC -_08051094: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510C4 - bl sub_800832C - ldr r1, [r5] -_080510AC: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510C4 -_080510B6: - ldr r0, _080510E0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510C4 - ldr r0, _080510E4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510C4: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510E0: .4byte gReceivedRemoteLinkPlayers -_080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte sBerryBlenderData -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte sBerryBlenderData -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =sBerryBlenderData - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte sBerryBlenderData -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =sBerryBlenderData - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte sBerryBlenderData -_08051298: - ldr r2, _080512B0 @ =sBerryBlenderData - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte sBerryBlenderData -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =sBerryBlenderData - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte sBerryBlenderData -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =sBerryBlenderData - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte sBerryBlenderData -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =sBerryBlenderData - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte sBerryBlenderData -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =sBerryBlenderData - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte sBerryBlenderData - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =sBerryBlenderData - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte sBerryBlenderData - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =sBerryBlenderData - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte sBerryBlenderData - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =sBerryBlenderData - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte sBerryBlenderData - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =sBerryBlenderData - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte sBerryBlenderData - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =sBerryBlenderData - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte sBerryBlenderData -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start sub_80516C4 -sub_80516C4: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =sBerryBlenderData - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl Blender_CopyBerryData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte sBerryBlenderData - thumb_func_end sub_80516C4 - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =sBerryBlenderData - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte sBerryBlenderData -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =sBerryBlenderData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte sBerryBlenderData - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =sBerryBlenderData - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte sBerryBlenderData - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =sBerryBlenderData - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte sBerryBlenderData -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =sBerryBlenderData - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte sBerryBlenderData - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =sBerryBlenderData - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte sBerryBlenderData -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =sBerryBlenderData - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte sBerryBlenderData - thumb_func_end sub_8051C04 - - thumb_func_start sub_8051C24 -sub_8051C24: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =sBerryBlenderData - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte sBerryBlenderData -_08051C54: .4byte 0x0000096c - thumb_func_end sub_8051C24 - - thumb_func_start sub_8051C58 -sub_8051C58: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _0805200A -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte sBerryBlenderData -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F44 - .4byte _08051F58 - .4byte _08051FF8 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _0805200A -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _0805200A -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FE2 -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _0805200A -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =sBerryBlenderData - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051D18: .4byte sBerryBlenderData -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F14 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F18 @ =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F1C @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F20 @ =gOtherText_Berry - bl StringAppend - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F24 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F28 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F2C @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F18 @ =sBerryBlenderData - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F30 @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x8E - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F34 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F38 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x66 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F40 @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FE2 - .align 2, 0 -_08051F14: .4byte gOtherText_ResultsOfBlending -_08051F18: .4byte sBerryBlenderData -_08051F1C: .4byte gLinkPlayers -_08051F20: .4byte gOtherText_Berry -_08051F24: .4byte gLinkPlayers + 0x8 -_08051F28: .4byte gUnknown_082165E9 -_08051F2C: .4byte gUnknown_082165EE -_08051F30: .4byte gOtherText_MaxSpeed -_08051F34: .4byte gOtherText_RPM -_08051F38: .4byte gOtherText_RequiredTime -_08051F3C: .4byte gOtherText_Min -_08051F40: .4byte gOtherText_Sec -_08051F44: - ldr r0, _08051F54 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805200A - ldr r1, [r2] - b _08051FE2 - .align 2, 0 -_08051F54: .4byte gMain -_08051F58: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FEC @ =sBerryBlenderData - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F76: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F86 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F86: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F76 - bl sub_8050760 - ldr r4, _08051FEC @ =sBerryBlenderData - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FF0 @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF4 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FE2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805200A - .align 2, 0 -_08051FEC: .4byte sBerryBlenderData -_08051FF0: .4byte sub_8052BD0 -_08051FF4: .4byte gScriptItemId -_08051FF8: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805200A - bl sub_8051C24 - movs r0, 0x1 - b _0805200C -_0805200A: - movs r0, 0 -_0805200C: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8051C58 - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start sub_80520CC -sub_80520CC: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80520CC - - thumb_func_start sub_8052124 -sub_8052124: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =sBerryBlenderData - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte sBerryBlenderData -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl sub_80520CC - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8052124 - - thumb_func_start sub_8052228 -sub_8052228: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =sBerryBlenderData - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte sBerryBlenderData -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =sBerryBlenderData - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl sub_8052124 - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte sBerryBlenderData -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =sBerryBlenderData - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte sBerryBlenderData -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =sBerryBlenderData - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte sBerryBlenderData -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8052228 - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =VBlankCB1_BerryBlender - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte VBlankCB1_BerryBlender -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC thumb_func_start sub_8052530 sub_8052530: @ 8052530 diff --git a/include/berry_blender.h b/include/berry_blender.h deleted file mode 100644 index 924b24b00..000000000 --- a/include/berry_blender.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_BERRY_BLENDER_H -#define GUARD_BERRY_BLENDER_H - -void sub_80516C4(u8, u16); - -#endif // GUARD_BERRY_BLENDER_H diff --git a/src/berry_blender.c b/src/berry_blender.c index ce2f3db20..74b87b983 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -7,13 +7,19 @@ #include "menu.h" #include "strings2.h" #include "sound.h" +#include "songs.h" #include "berry.h" #include "string_util.h" #include "link.h" #include "task.h" #include "rom4.h" +#include "item.h" #include "items.h" #include "rng.h" +#include "save.h" +#include "menu_cursor.h" +#include "trig.h" +#include "pokeblock.h" //needed to match Blender_ControlHitPitch struct MusicPlayerInfo @@ -44,10 +50,20 @@ struct MusicPlayerInfo // other files functions void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); void sub_80A6978(void); u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); +void sub_814A880(u8 a1, u8 a2); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +s8 sub_810CA00(void); +bool8 sub_810CA34(struct Pokeblock *pokeblock); + +#define BLENDER_SCORE_BEST 0 +#define BLENDER_SCORE_GOOD 1 +#define BLENDER_SCORE_MISS 2 #define BLENDER_MAX_PLAYERS 4 +#define BLENDER_SCORES_NO 3 #define FLAVOUR_SPICY 0 #define FLAVOUR_DRY 1 @@ -69,55 +85,7 @@ struct BerryBlenderData u8 field_1; u8 field_2; u8 field_3; - u8 field_4; - u8 field_5; - u8 field_6; - u8 field_7; - u8 field_8; - u8 field_9; - u8 field_A; - u8 field_B; - u8 field_C; - u8 field_D; - u8 field_E; - u8 field_F; - u8 field_10; - u8 field_11; - u8 field_12; - u8 field_13; - u8 field_14; - u8 field_15; - u8 field_16; - u8 field_17; - u8 field_18; - u8 field_19; - u8 field_1A; - u8 field_1B; - u8 field_1C; - u8 field_1D; - u8 field_1E; - u8 field_1F; - u8 field_20; - u8 field_21; - u8 field_22; - u8 field_23; - u8 field_24; - u8 field_25; - u8 field_26; - u8 field_27; - u8 field_28; - u8 field_29; - u8 field_2A; - u8 field_2B; - u8 field_2C; - u8 field_2D; - u8 field_2E; - u8 field_2F; - u8 field_30; - u8 field_31; - u8 field_32; - u8 field_33; - u8 field_34; + struct Window field_4; u8 field_35; u8 field_36; u8 field_37; @@ -144,15 +112,11 @@ struct BerryBlenderData u8 field_4C; u8 field_4D; u16 field_4E; - u8 field_50; - u8 field_51; - u8 field_52; - u8 field_53; + u8 scoreIconIDs[3]; u16 arrowPos; s16 field_56; - u8 field_58; - u8 field_59; - u16 field_5A; + s16 field_58; + u16 max_RPM; u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS]; u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS]; u8 field_64; @@ -168,15 +132,13 @@ struct BerryBlenderData u8 field_6E; u8 field_6F; u16 field_70[BLENDER_MAX_PLAYERS]; - u8 field_78; - u8 field_79; - u8 field_7A; - u8 field_7B; + u16 field_78; + u16 field_7A; u16 field_7C; u8 field_7E; u8 field_7F; - u16 field_80[BLENDER_MAX_PLAYERS]; - u8 field_88; + u16 chosenItemID[BLENDER_MAX_PLAYERS]; + u8 playersNo; u8 field_89; u8 field_8A; u8 field_8B; @@ -188,8 +150,7 @@ struct BerryBlenderData u8 field_91; u8 field_92; u8 field_93; - u8 field_94; - u8 field_95; + u16 field_94; u8 field_96; u8 field_97; u8 field_98; @@ -197,67 +158,7 @@ struct BerryBlenderData u16 field_9A[BLENDER_MAX_PLAYERS]; u16 field_A2[BLENDER_MAX_PLAYERS]; u8 field_AA; - u8 field_AB; - u8 field_AC; - u8 field_AD; - u8 field_AE; - u8 field_AF; - u8 field_B0; - u8 field_B1; - u8 field_B2; - u8 field_B3; - u8 field_B4; - u8 field_B5; - u8 field_B6; - u8 field_B7; - u8 field_B8; - u8 field_B9; - u8 field_BA; - u8 field_BB; - u8 field_BC; - u8 field_BD; - u8 field_BE; - u8 field_BF; - u8 field_C0; - u8 field_C1; - u8 field_C2; - u8 field_C3; - u8 field_C4; - u8 field_C5; - u8 field_C6; - u8 field_C7; - u8 field_C8; - u8 field_C9; - u8 field_CA; - u8 field_CB; - u8 field_CC; - u8 field_CD; - u8 field_CE; - u8 field_CF; - u8 field_D0; - u8 field_D1; - u8 field_D2; - u8 field_D3; - u8 field_D4; - u8 field_D5; - u8 field_D6; - u8 field_D7; - u8 field_D8; - u8 field_D9; - u8 field_DA; - u8 field_DB; - u8 field_DC; - u8 field_DD; - u8 field_DE; - u8 field_DF; - u8 field_E0; - u8 field_E1; - u8 field_E2; - u8 field_E3; - u8 field_E4; - u8 field_E5; - u8 field_E6; - u8 field_E7; + u8 stringVar[61]; u8 field_E8; u8 field_E9; u8 field_EA; @@ -326,8 +227,8 @@ struct BerryBlenderData u8 field_129; u8 field_12A; u8 field_12B; - u32 field_12C; - s32 field_130; + u32 gameFrameTime; + s32 framesToWait; u32 field_134; u8 field_138; u8 field_139; @@ -342,31 +243,17 @@ struct BerryBlenderData s16 field_146; u8 field_148[3]; u8 field_14B; - u16 field_14C[BLENDER_MAX_PLAYERS][3]; - u8 field_164; - u8 field_165; - u8 field_166; - u8 field_167; - u8 field_168; - u8 field_169; - u8 field_16A; - u8 field_16B; - u8 field_16C; - u8 field_16D; - u8 field_16E; - u8 field_16F; - u8 field_170; - u8 field_171; - u8 field_172; - u8 field_173; - u8 field_174; - u8 field_175; - u8 field_176; - u8 field_177; + u16 scores[BLENDER_MAX_PLAYERS][3]; + u8 playerPlaces[BLENDER_MAX_PLAYERS]; + struct BgAffineDstData field_168; u16 field_178; u8 field_17A; u8 field_17B; struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; + u32 field_1BC; + u16 field_1C0; + u16 field_1C2; + u32 field_1C4; }; extern struct BerryBlenderData* sBerryBlenderData; @@ -384,11 +271,11 @@ void sub_804E884(u8 a0); void sub_8051474(void); void sub_804E9F8(void); void sub_804F378(void); -void sub_8051414(void*); +void sub_8051414(struct BgAffineDstData *dest); void sub_804F238(void); void sub_80501FC(void); bool8 sub_8051B8C(void); -void sub_80516C4(u8 a0, u16 itemID); +void Blender_SetBankBerryData(u8 bank, u16 itemID); void sub_804F2A8(void); void sub_804F81C(void); void sub_805156C(void); @@ -399,6 +286,14 @@ void sub_8051A3C(u16 a0); void sub_8051B18(void); void sub_805123C(void); void sub_8050954(void); +bool8 Blender_PrintBlendingRanking(void); +bool8 Blender_PrintBlendingResults(void); +void sub_80510E8(void); +void sub_8050E30(void); +void sub_805197C(u16 a0, u16 a1); +void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +void sub_8052BD0(u8 taskID); +void sub_8052AF8(void); void Blender_ControlHitPitch(void) { @@ -705,20 +600,20 @@ void sub_804E884(u8 a0) break; case 1: gUnknown_03004834 = 1; - sBerryBlenderData->field_88 = 2; + sBerryBlenderData->playersNo = 2; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); break; case 2: gUnknown_03004834 = 2; - sBerryBlenderData->field_88 = 3; + sBerryBlenderData->playersNo = 3; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); break; case 3: gUnknown_03004834 = 3; - sBerryBlenderData->field_88 = 4; + sBerryBlenderData->playersNo = 4; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); @@ -737,7 +632,7 @@ void sub_804E990(void) sBerryBlenderData->field_134 = 0; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_80[i] = 0; + sBerryBlenderData->chosenItemID[i] = 0; } sub_804E884(gSpecialVar_0x8004); if (gSpecialVar_0x8004 == 0) @@ -776,13 +671,13 @@ void sub_804E9F8(void) sBerryBlenderData->field_70[i] = 0; for (j = 0; j < 3; j++) { - sBerryBlenderData->field_14C[i][j] = 0; + sBerryBlenderData->scores[i][j] = 0; } } sBerryBlenderData->field_7C = 0; sBerryBlenderData->field_56 = 0; sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->field_5A = 0; + sBerryBlenderData->max_RPM = 0; sBerryBlenderData->field_1 = 0; break; case 1: @@ -815,7 +710,7 @@ void sub_804E9F8(void) MenuDrawTextWindow(0, 13, 29, 19); MenuPrint(gOtherText_LinkStandby3, 1, 14); sBerryBlenderData->field_0 = 8; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; break; case 8: sBerryBlenderData->field_0++; @@ -823,7 +718,7 @@ void sub_804E9F8(void) Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); sub_80084A4(); - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; break; case 9: if (sub_8007ECC()) @@ -835,7 +730,7 @@ void sub_804E9F8(void) } break; case 10: - if (++sBerryBlenderData->field_130 > 20) + if (++sBerryBlenderData->framesToWait > 20) { MenuZeroFillScreen(); if (GetBlockReceivedStatus() == sub_8008198()) @@ -843,7 +738,7 @@ void sub_804E9F8(void) for (i = 0; i < GetLinkPlayerCount(); i++) { memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); - sBerryBlenderData->field_80[i] = sBerryBlenderData->blendedBerries[i].itemID; + sBerryBlenderData->chosenItemID[i] = sBerryBlenderData->blendedBerries[i].itemID; } ResetBlockReceivedFlags(); sBerryBlenderData->field_0++; @@ -851,30 +746,30 @@ void sub_804E9F8(void) } break; case 11: - sBerryBlenderData->field_88 = GetLinkPlayerCount(); + sBerryBlenderData->playersNo = GetLinkPlayerCount(); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]) + if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]) { - sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_13C], i); + sub_804E7C0(sBerryBlenderData->chosenItemID[sBerryBlenderData->field_13C], i); break; } } - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; sBerryBlenderData->field_0++; sBerryBlenderData->field_13C++; break; case 12: - if (++sBerryBlenderData->field_130 > 60) + if (++sBerryBlenderData->framesToWait > 60) { - if (sBerryBlenderData->field_13C >= sBerryBlenderData->field_88) + if (sBerryBlenderData->field_13C >= sBerryBlenderData->playersNo) { sBerryBlenderData->field_0++; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]] - 22528; } else sBerryBlenderData->field_0--; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; } break; case 13: @@ -892,9 +787,9 @@ void sub_804E9F8(void) { sBerryBlenderData->field_0++; sBerryBlenderData->field_142 = 256; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]]; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]]; REG_BG2CNT = 0x4882; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; sub_804F238(); sub_804F2A8(); } @@ -903,7 +798,7 @@ void sub_804E9F8(void) case 15: if (sub_8051B8C()) { - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; sBerryBlenderData->field_0++; } sub_8051414(&sBerryBlenderData->field_168); @@ -928,7 +823,7 @@ void sub_804E9F8(void) break; case 21: sBerryBlenderData->field_56 = 128; - sBerryBlenderData->field_12C = 0; + sBerryBlenderData->gameFrameTime = 0; SetMainCallback2(sub_80501FC); if (GetCurrentMapMusic() != 403) { @@ -974,7 +869,7 @@ void sub_804F0F4(void) sBerryBlenderData->field_4E = 0; sBerryBlenderData->field_56 = 0; sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->field_5A = 0; + sBerryBlenderData->max_RPM = 0; sBerryBlenderData->field_144 = 0; sBerryBlenderData->field_146 = 0; sBerryBlenderData->field_0++; @@ -1022,7 +917,7 @@ void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) } for (i = 0; i < a1 - 1; i++) { - sub_80516C4(i + 1, gUnknown_082165BC[r4][i] + 133); + Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133); } } @@ -1032,7 +927,7 @@ void sub_804F238(void) for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { sBerryBlenderData->field_A2[i] = 0xFF; - sBerryBlenderData->field_9A[i] = gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]; + sBerryBlenderData->field_9A[i] = gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]; } for (j = 0; j < BLENDER_MAX_PLAYERS; j++) { @@ -1075,15 +970,15 @@ void sub_804F378(void) { case 0: sub_804F0F4(); - sub_80516C4(0, gScriptItemId); + Blender_SetBankBerryData(0, gScriptItemId); Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); - sub_804F1BC(gScriptItemId, sBerryBlenderData->field_88, &sBerryBlenderData->blendedBerries[0]); + sub_804F1BC(gScriptItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { sBerryBlenderData->field_70[i] = 0; for (j = 0; j < 3; j++) { - sBerryBlenderData->field_14C[i][j] = 0; + sBerryBlenderData->scores[i][j] = 0; } } sBerryBlenderData->field_7C = 0; @@ -1107,10 +1002,10 @@ void sub_804F378(void) case 3: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sBerryBlenderData->field_0++; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; break; case 4: - if (++sBerryBlenderData->field_130 == 2) + if (++sBerryBlenderData->framesToWait == 2) sub_804E4FC(); if (!gPaletteFade.active) sBerryBlenderData->field_0 = 8; @@ -1122,28 +1017,28 @@ void sub_804F378(void) case 11: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - u32 var = gUnknown_082162EC[sBerryBlenderData->field_88 - 2][i]; + u32 var = gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]; if (sBerryBlenderData->field_13C == var) { - sub_804E7C0(sBerryBlenderData->field_80[sBerryBlenderData->field_13C], i); + sub_804E7C0(sBerryBlenderData->chosenItemID[sBerryBlenderData->field_13C], i); break; } } - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; sBerryBlenderData->field_0++; sBerryBlenderData->field_13C++; break; case 12: - if (++sBerryBlenderData->field_130 > 60) + if (++sBerryBlenderData->framesToWait > 60) { - if (sBerryBlenderData->field_13C >= sBerryBlenderData->field_88) + if (sBerryBlenderData->field_13C >= sBerryBlenderData->playersNo) { - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]] - 22528; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]] - 22528; sBerryBlenderData->field_0++; } else sBerryBlenderData->field_0--; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; } break; case 13: @@ -1160,9 +1055,9 @@ void sub_804F378(void) { sBerryBlenderData->field_0++; sBerryBlenderData->field_142 = 256; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->field_88 - 2]]; + sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]]; REG_BG2CNT = 0x4882; - sBerryBlenderData->field_130 = 0; + sBerryBlenderData->framesToWait = 0; PlaySE(52); sub_804F2A8(); } @@ -1191,7 +1086,7 @@ void sub_804F378(void) case 21: sub_804F81C(); sBerryBlenderData->field_56 = 128; - sBerryBlenderData->field_12C = 0; + sBerryBlenderData->gameFrameTime = 0; sBerryBlenderData->field_14B = 0; sBerryBlenderData->field_7E = 0; SetMainCallback2(sub_80501FC); @@ -1424,20 +1319,20 @@ void sub_804FD30(u16 a0) { case 0x4523: if (sBerryBlenderData->field_56 < 1500) - sBerryBlenderData->field_56 += (384 / gUnknown_082165DA[sBerryBlenderData->field_88]); + sBerryBlenderData->field_56 += (384 / gUnknown_082165DA[sBerryBlenderData->playersNo]); else { - sBerryBlenderData->field_56 += (128 / gUnknown_082165DA[sBerryBlenderData->field_88]); + sBerryBlenderData->field_56 += (128 / gUnknown_082165DA[sBerryBlenderData->playersNo]); sub_8051AC8(&sBerryBlenderData->field_144, (sBerryBlenderData->field_56 / 100) - 10); sub_8051AC8(&sBerryBlenderData->field_146, (sBerryBlenderData->field_56 / 100) - 10); } break; case 0x5432: if (sBerryBlenderData->field_56 < 1500) - sBerryBlenderData->field_56 += (256 / gUnknown_082165DA[sBerryBlenderData->field_88]); + sBerryBlenderData->field_56 += (256 / gUnknown_082165DA[sBerryBlenderData->playersNo]); break; case 0x2345: - sBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[sBerryBlenderData->field_88]); + sBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[sBerryBlenderData->playersNo]); if (sBerryBlenderData->field_56 < 128) sBerryBlenderData->field_56 = 128; break; @@ -1462,7 +1357,7 @@ void sub_804FE70(void) gRecvCmds[0][i] = 0x4444; } } - for (i = 0; i < sBerryBlenderData->field_88; i++) + for (i = 0; i < sBerryBlenderData->playersNo; i++) { if (gRecvCmds[0][i] == 0x4444) { @@ -1474,23 +1369,23 @@ void sub_804FE70(void) if (sBerryBlenderData->field_13E >= 1000) sBerryBlenderData->field_13E = 1000; sub_804FC48(0x4523, var); - sBerryBlenderData->field_14C[i][0]++; + sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; } else if (gRecvCmds[2][i] == 0x5432) { sub_804FD30(0x5432); sBerryBlenderData->field_13E += (sBerryBlenderData->field_56 / 70); sub_804FC48(0x5432, var); - sBerryBlenderData->field_14C[i][1]++; + sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; } else if (gRecvCmds[2][i] == 0x2345) { sub_804FC48(0x2345, var); sub_804FD30(0x2345); - if (sBerryBlenderData->field_15 > 1000) + if (sBerryBlenderData->field_4.win_field_F > 1000) sBerryBlenderData->field_13E = 1000; - if (sBerryBlenderData->field_14C[i][2] < 999) - sBerryBlenderData->field_14C[i][2]++; + if (sBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; } if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) { @@ -1503,7 +1398,7 @@ void sub_804FE70(void) } if (gSpecialVar_0x8004 != 0) { - for (i = 0; i < sBerryBlenderData->field_88; i++) + for (i = 0; i < sBerryBlenderData->playersNo; i++) { gRecvCmds[0][i] = 0; gRecvCmds[2][i] = 0; @@ -1549,8 +1444,8 @@ void sub_80500A8(void) void sub_80501FC(void) { sub_8051474(); - if (sBerryBlenderData->field_12C < 359940) - sBerryBlenderData->field_12C++; + if (sBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + sBerryBlenderData->gameFrameTime++; sub_80500A8(); SetLinkDebugValues((u16)(sBerryBlenderData->field_56), sBerryBlenderData->field_13E); sub_804FE70(); @@ -1703,11 +1598,18 @@ extern u32 gUnknown_0300055C; extern const u8 gUnknown_082165DF[]; -void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) -{ - s32 i, j; +#ifdef NONMATCHING - s32 var5, var6; +void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +{ + s32 i; + s32 j; + s32 savedEntry; + s32 var3; + s32 var4; + s32 var6; + s32 var11; + u16 rand; for (i = 0; i < 6; i++) gUnknown_03000510[i] = 0; @@ -1717,12 +1619,12 @@ void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) gUnknown_03000510[j] += berries[i].flavours[j]; } - var5 = gUnknown_03000510[0]; + savedEntry = gUnknown_03000510[0]; gUnknown_03000510[0] -= gUnknown_03000510[1]; gUnknown_03000510[1] -= gUnknown_03000510[2]; gUnknown_03000510[2] -= gUnknown_03000510[3]; gUnknown_03000510[3] -= gUnknown_03000510[4]; - gUnknown_03000510[4] -= var5; + gUnknown_03000510[4] -= savedEntry; var6 = 0; for (i = 0; i < 6; i++) @@ -1733,7 +1635,7 @@ void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) var6++; } } - for (i = 0; i < 6; i++) + for (i = 0; i < 5; i++) { if (gUnknown_03000510[i] > 0) { @@ -1743,18 +1645,18 @@ void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) gUnknown_03000510[i] -= var6; } } - for (i = 0; i < 6; i++) + for (i = 0; i < 5; i++) { gUnknown_03000530[i] = gUnknown_03000510[i]; } - gUnknown_0300055C = ((a4 / 333) + 100); + var11 = a4 / 333 + 100; + gUnknown_0300055C = ((var11)); for (i = 0; i < 5; i++) { - s32 var4; - s32 var3 = gUnknown_03000510[i]; - var3 = (((a4 / 333) + 100) * var3) / 10; + var3 = gUnknown_03000510[i]; + var3 = ((var11) * var3) / 10; var4 = var3 % 10; var3 /= 10; if (var4 > 4) @@ -1767,11 +1669,11 @@ void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) } *a1 = sub_80502F8(berries, &gUnknown_03000510[0], a2, var6); gUnknown_03000510[5] = (gUnknown_03000510[5] / a2) - a2; - if (gUnknown_03000510[5] > 0) + if (gUnknown_03000510[5] < 0) gUnknown_03000510[5] = 0; if (*a1 == 12) { - u16 rand = Random() % 10; + rand = Random() % 10; for (i = 0; i < 6; i++) { if ((gUnknown_082165DF[rand] >> i) & 1) @@ -1796,3 +1698,1467 @@ void sub_8050520(struct BlenderBerry* berries, u8* a1, u8 a2, u8* a3, u16 a4) a3[i] = gUnknown_03000510[i]; } } + +#else +__attribute__((naked)) +void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x10\n\ + str r0, [sp]\n\ + mov r8, r1\n\ + str r3, [sp, 0x4]\n\ + ldr r0, [sp, 0x30]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + mov r9, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r7, _080505DC @ =gUnknown_03000510\n\ + adds r2, r7, 0\n\ + movs r1, 0\n\ + adds r0, r7, 0\n\ + adds r0, 0xA\n\ +_0805054A:\n\ + strh r1, [r0]\n\ + subs r0, 0x2\n\ + cmp r0, r2\n\ + bge _0805054A\n\ + movs r6, 0\n\ + cmp r6, r9\n\ + bge _08050580\n\ + ldr r0, _080505DC @ =gUnknown_03000510\n\ + mov r12, r0\n\ + ldr r5, [sp]\n\ + adds r5, 0x9\n\ +_08050560:\n\ + movs r3, 0\n\ + adds r4, r5, 0\n\ + mov r2, r12\n\ +_08050566:\n\ + adds r1, r4, r3\n\ + ldrh r0, [r2]\n\ + ldrb r1, [r1]\n\ + adds r0, r1\n\ + strh r0, [r2]\n\ + adds r2, 0x2\n\ + adds r3, 0x1\n\ + cmp r3, 0x5\n\ + ble _08050566\n\ + adds r5, 0x10\n\ + adds r6, 0x1\n\ + cmp r6, r9\n\ + blt _08050560\n\ +_08050580:\n\ + movs r1, 0\n\ + ldrsh r3, [r7, r1]\n\ + ldrh r0, [r7]\n\ + ldrh r1, [r7, 0x2]\n\ + subs r0, r1\n\ + strh r0, [r7]\n\ + ldrh r0, [r7, 0x4]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x2]\n\ + ldrh r1, [r7, 0x6]\n\ + subs r0, r1\n\ + strh r0, [r7, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + subs r1, r0\n\ + strh r1, [r7, 0x6]\n\ + subs r0, r3\n\ + strh r0, [r7, 0x8]\n\ + movs r3, 0\n\ + movs r2, 0\n\ + adds r1, r7, 0\n\ + movs r6, 0x4\n\ +_080505AA:\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + bge _080505B6\n\ + strh r2, [r1]\n\ + adds r3, 0x1\n\ +_080505B6:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505AA\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + movs r4, 0\n\ + ldr r1, _080505DC @ =gUnknown_03000510\n\ + movs r6, 0x4\n\ +_080505CA:\n\ + ldrh r2, [r1]\n\ + movs r5, 0\n\ + ldrsh r0, [r1, r5]\n\ + cmp r0, 0\n\ + ble _080505E4\n\ + cmp r0, r3\n\ + bge _080505E0\n\ + strh r4, [r1]\n\ + b _080505E4\n\ + .align 2, 0\n\ +_080505DC: .4byte gUnknown_03000510\n\ +_080505E0:\n\ + subs r0, r2, r3\n\ + strh r0, [r1]\n\ +_080505E4:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505CA\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506C8 @ =gUnknown_03000530\n\ + movs r6, 0x4\n\ +_080505F2:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080505F2\n\ + ldr r1, _080506CC @ =0x0000014d\n\ + ldr r0, [sp, 0x8]\n\ + bl __udivsi3\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r3, r0, 0\n\ + adds r3, 0x64\n\ + ldr r4, _080506D0 @ =gUnknown_0300055C\n\ + str r3, [r4]\n\ + movs r6, 0x4\n\ +_08050616:\n\ + movs r0, 0\n\ + ldrsh r5, [r7, r0]\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + movs r1, 0xA\n\ + str r3, [sp, 0xC]\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + movs r1, 0xA\n\ + bl __modsi3\n\ + adds r4, r0, 0\n\ + adds r0, r5, 0\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r5, r0, 0\n\ + ldr r3, [sp, 0xC]\n\ + cmp r4, 0x4\n\ + ble _08050642\n\ + adds r5, 0x1\n\ +_08050642:\n\ + strh r5, [r7]\n\ + adds r7, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050616\n\ + ldr r1, _080506C4 @ =gUnknown_03000510\n\ + ldr r2, _080506D4 @ =gUnknown_03000548\n\ + movs r6, 0x4\n\ +_08050652:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + stm r2!, {r0}\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _08050652\n\ + ldr r4, _080506C4 @ =gUnknown_03000510\n\ + ldr r0, [sp]\n\ + adds r1, r4, 0\n\ + mov r2, r9\n\ + mov r3, r10\n\ + bl sub_80502F8\n\ + mov r5, r8\n\ + strb r0, [r5]\n\ + movs r1, 0xA\n\ + ldrsh r0, [r4, r1]\n\ + mov r1, r9\n\ + bl __divsi3\n\ + mov r3, r9\n\ + subs r0, r3\n\ + strh r0, [r4, 0xA]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bge _0805068C\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ +_0805068C:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, 0xC\n\ + bne _080506E6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + movs r6, 0\n\ + ldr r0, _080506D8 @ =gUnknown_082165DF\n\ + adds r0, r3, r0\n\ + ldrb r0, [r0]\n\ + adds r1, r4, 0\n\ + movs r4, 0x1\n\ + movs r3, 0x2\n\ +_080506B4:\n\ + adds r2, r0, 0\n\ + asrs r2, r6\n\ + ands r2, r4\n\ + cmp r2, 0\n\ + beq _080506DC\n\ + strh r3, [r1]\n\ + b _080506DE\n\ + .align 2, 0\n\ +_080506C4: .4byte gUnknown_03000510\n\ +_080506C8: .4byte gUnknown_03000530\n\ +_080506CC: .4byte 0x0000014d\n\ +_080506D0: .4byte gUnknown_0300055C\n\ +_080506D4: .4byte gUnknown_03000548\n\ +_080506D8: .4byte gUnknown_082165DF\n\ +_080506DC:\n\ + strh r2, [r1]\n\ +_080506DE:\n\ + adds r1, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x4\n\ + ble _080506B4\n\ +_080506E6:\n\ + ldr r7, _08050740 @ =gUnknown_03000510\n\ + movs r2, 0xFF\n\ + adds r1, r7, 0\n\ + movs r6, 0x5\n\ +_080506EE:\n\ + movs r3, 0\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0xFF\n\ + ble _080506F8\n\ + strh r2, [r1]\n\ +_080506F8:\n\ + adds r1, 0x2\n\ + subs r6, 0x1\n\ + cmp r6, 0\n\ + bge _080506EE\n\ + ldrh r0, [r7]\n\ + mov r4, r8\n\ + strb r0, [r4, 0x1]\n\ + ldrh r0, [r7, 0x2]\n\ + strb r0, [r4, 0x2]\n\ + ldrh r0, [r7, 0x4]\n\ + strb r0, [r4, 0x3]\n\ + ldrh r0, [r7, 0x6]\n\ + strb r0, [r4, 0x4]\n\ + ldrh r0, [r7, 0x8]\n\ + strb r0, [r4, 0x5]\n\ + ldrh r0, [r7, 0xA]\n\ + strb r0, [r4, 0x6]\n\ + movs r6, 0\n\ + adds r2, r7, 0\n\ +_0805071E:\n\ + ldr r5, [sp, 0x4]\n\ + adds r1, r5, r6\n\ + ldrh r0, [r2]\n\ + strb r0, [r1]\n\ + adds r2, 0x2\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0805071E\n\ + add sp, 0x10\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08050740: .4byte gUnknown_03000510\n\ + .syntax divided"); +} + +#endif // NONMATCHING + +void sub_8050744(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +{ + sub_8050520(berries, pokeblock, a2, a3, a4); // what is the purpose of this function? +} + +void sub_8050760(void) +{ + u32 frames = (u16)(sBerryBlenderData->gameFrameTime); + u32 max_RPM = (u16)(sBerryBlenderData->max_RPM); + s16 var = 0; + + if (frames < 900) + var = 5; + else if ((u16)(frames - 900) < 600) + var = 4; + else if ((u16)(frames - 1500) < 600) + var = 3; + else if ((u16)(frames - 2100) < 900) + var = 2; + else if ((u16)(frames - 3300) < 300) + var = 1; + sub_8050508(var); + + var = 0; + if (max_RPM <= 64) + { + if ((u16)(max_RPM - 50) < 50) + var = -1; + else if ((u16)(max_RPM - 100) < 50) + var = -2; + else if ((u16)(max_RPM - 150) < 50) + var = -3; + else if ((u16)(max_RPM - 200) < 50) + var = -4; + else if ((u16)(max_RPM - 250) < 50) + var = -5; + else if ((u16)(max_RPM - 350) < 50) + var = -6; + else if ((u16)(max_RPM - 400) < 50) + var = -7; + else if ((u16)(max_RPM - 500) < 50) + var = -8; + else if ((u16)(max_RPM - 550) < 50) + var = -9; + else if (max_RPM >= 600) + var = -10; + } + sub_80504F0(var); +} + +void sub_80508D4(u8 value) +{ + sBerryBlenderData->field_AA = value; + sub_814A880(192, (sBerryBlenderData->field_AA * 16) + 72); +} + +void sub_80508FC(void) +{ + sBerryBlenderData->field_AA = 0; + MenuDrawTextWindow(23, 8, 28, 13); + sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuPrint(gOtherText_YesNoTerminating, 24, 9); + sub_80508D4(sBerryBlenderData->field_AA); +} + +void sub_8050954(void) +{ + u8 i; + u8 multiplayerID; // unused + + sub_8051474(); + multiplayerID = GetMultiplayerId(); + switch (sBerryBlenderData->field_6F) + { + case 1: + ClearLinkCallback(); + m4aMPlayTempoControl(&gMPlay_BGM, 256); + for (i = 0; i < gSpecialVar_0x8004; i++) + { + DestroyTask(sBerryBlenderData->field_148[i]); + } + sBerryBlenderData->field_6F++; + break; + case 2: + sBerryBlenderData->field_56 -= 32; + if (sBerryBlenderData->field_56 <= 0) + { + sBerryBlenderData->field_56 = 0; + if (gReceivedRemoteLinkPlayers != 0) + sBerryBlenderData->field_6F++; + else + sBerryBlenderData->field_6F = 5; + sBerryBlenderData->field_0 = 0; + m4aMPlayStop(&gMPlay_SE2); + } + Blender_ControlHitPitch(); + break; + case 3: + if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) + sBerryBlenderData->field_6F++; + else if (sub_8007ECC()) + { + sBerryBlenderData->field_1BC = sBerryBlenderData->gameFrameTime; + sBerryBlenderData->field_1C0 = sBerryBlenderData->max_RPM; + SendBlock(0, &sBerryBlenderData->field_1BC, 40); + sBerryBlenderData->field_6F++; + } + break; + case 4: + if (GetBlockReceivedStatus()) + { + u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0])); + sBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; + sBerryBlenderData->gameFrameTime = *ptr; + sBerryBlenderData->field_6F++; + ResetBlockReceivedFlags(); + } + break; + case 5: + if (Blender_PrintBlendingRanking()) + sBerryBlenderData->field_6F++; + break; + case 6: + if (Blender_PrintBlendingResults()) + { + if (gUnknown_03004834 == 0) + IncrementGameStat(34); + else + IncrementGameStat(33); + sBerryBlenderData->field_6F++; + } + break; + case 7: + sBerryBlenderData->field_6F++; + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); + break; + case 8: + if (MenuUpdateWindowText()) + sBerryBlenderData->field_6F++; + break; + case 9: + sBerryBlenderData->field_AA = 0; + sub_80508FC(); + sBerryBlenderData->field_6F++; + break; + case 10: + if (gMain.newKeys & DPAD_UP) + { + if (sBerryBlenderData->field_AA != 0) + PlaySE(SE_SELECT); + sub_80508D4(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (sBerryBlenderData->field_AA != 1) + PlaySE(SE_SELECT); + sub_80508D4(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sBerryBlenderData->field_6F++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sBerryBlenderData->field_6F++; + sub_80508D4(1); + } + break; + case 11: + gSendCmd[0] = 0x2FFF; + if (sBerryBlenderData->field_AA == 0) + { + if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty + { + sBerryBlenderData->field_7C = 2; + gSendCmd[1] = 0x9999; + } + else if (sub_810CA00() == -1) + { + sBerryBlenderData->field_7C = 3; + gSendCmd[1] = 0xAAAA; + } + else + { + sBerryBlenderData->field_7C = 0; + gSendCmd[1] = 0x7779; + } + sBerryBlenderData->field_6F++; + } + else + { + sBerryBlenderData->field_7C = 1; + gSendCmd[1] = 0x8888; + sBerryBlenderData->field_6F++; + } + break; + case 12: + if (gUnknown_03004834) + { + SetMainCallback2(sub_80510E8); + sBerryBlenderData->field_6F = 0; + sBerryBlenderData->field_0 = 0; + } + else + { + MenuPrintMessage(gOtherText_LinkStandby3, 1, 15); + sBerryBlenderData->field_6F++; + } + break; + case 13: + if (MenuUpdateWindowText()) + { + SetMainCallback2(sub_8050E30); + sBerryBlenderData->field_6F = 0; + sBerryBlenderData->field_0 = 0; + } + break; + } + sub_8051B18(); + sub_8051A3C(sBerryBlenderData->field_56); + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +bool8 sub_8050CE8(void) +{ + switch (sBerryBlenderData->field_1C4) + { + case 0: + sub_80084A4(); + sBerryBlenderData->field_1C4 = 1; + sBerryBlenderData->framesToWait = 0; + break; + case 1: + if (sub_8007ECC()) + { + sBerryBlenderData->field_1C4++; + gSoftResetDisabled = TRUE; + } + break; + case 2: + sub_8125E2C(); + sBerryBlenderData->field_1C4++; + sBerryBlenderData->framesToWait = 0; + break; + case 3: + if (++sBerryBlenderData->framesToWait == 10) + { + sub_80084A4(); + sBerryBlenderData->field_1C4++; + } + break; + case 4: + if (sub_8007ECC()) + { + if (sub_8125E6C()) + sBerryBlenderData->field_1C4 = 5; + else + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_1C4 = 3; + } + } + break; + case 5: + sBerryBlenderData->field_1C4++; + sBerryBlenderData->framesToWait = 0; + break; + case 6: + if (++sBerryBlenderData->framesToWait > 5) + { + gSoftResetDisabled = FALSE; + return 1; + } + break; + } + return 0; +} + +void sub_8050E30(void) +{ + switch (sBerryBlenderData->field_6F) + { + case 0: + if (sBerryBlenderData->field_70[0] == 0x2222) + sBerryBlenderData->field_6F = 5; + else if (sBerryBlenderData->field_70[0] == 0x1111) + { + if (sBerryBlenderData->field_78 == 0x9999) + sBerryBlenderData->field_6F = 2; + else if (sBerryBlenderData->field_78 == 0xAAAA) + sBerryBlenderData->field_6F = 1; + else + sBerryBlenderData->field_6F = 5; + } + break; + case 1: + sBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 2: + sBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_7A].name); + StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); + MenuPrintMessage(gStringVar4, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_6F++; + } + break; + case 4: + if (++sBerryBlenderData->framesToWait > 60) + sBerryBlenderData->field_6F = 5; + break; + case 5: + MenuDrawTextWindow(0, 14, 29, 19); + MenuPrint(gMultiText_Saving, 2, 15); + sub_80084A4(); + sBerryBlenderData->field_6F++; + break; + case 6: + if (sub_8007ECC()) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_6F++; + sBerryBlenderData->field_1C4 = 0; + } + break; + case 7: + if (sub_8050CE8()) + { + PlaySE(SE_SAVE); + sBerryBlenderData->field_6F++; + } + break; + case 8: + sBerryBlenderData->field_6F++; + sub_80084A4(); + break; + case 9: + if (sub_8007ECC()) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + sBerryBlenderData->field_6F++; + } + break; + case 10: + if (!gPaletteFade.active) + { + if (sBerryBlenderData->field_70[0] == 0x2222) + SetMainCallback2(sub_804E538); + else + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_6F++; + } + } + break; + case 11: + if (++sBerryBlenderData->framesToWait > 30) + { + sub_800832C(); + sBerryBlenderData->field_6F++; + } + break; + case 12: + if (gReceivedRemoteLinkPlayers == 0) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80510E8(void) +{ + switch (sBerryBlenderData->field_6F) + { + case 0: + if (sBerryBlenderData->field_7C < 2) + sBerryBlenderData->field_6F = 9; + if (sBerryBlenderData->field_7C == 2) + sBerryBlenderData->field_6F = 2; + if (sBerryBlenderData->field_7C == 3) + sBerryBlenderData->field_6F =1; + break; + case 1: + sBerryBlenderData->field_6F = 3; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); + break; + case 2: + sBerryBlenderData->field_6F++; + DestroyMenuCursor(); + MenuZeroFillWindowRect(23, 8, 28, 13); + MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); + break; + case 3: + if (MenuUpdateWindowText()) + sBerryBlenderData->field_6F = 9; + break; + case 9: + BeginFastPaletteFade(3); + sBerryBlenderData->field_6F++; + break; + case 10: + if (!gPaletteFade.active) + { + if (sBerryBlenderData->field_7C == 0) + SetMainCallback2(sub_804E538); + else + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + break; + } + + sub_805123C(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_805123C(void) +{ + if (gReceivedRemoteLinkPlayers) + { + if (gRecvCmds[0][0] == 0x2FFF) + { + if (gRecvCmds[1][0] == 0x1111) + { + switch (gRecvCmds[2][0]) + { + case 0x8888: + sBerryBlenderData->field_78 = 0x8888; + sBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0x9999: + sBerryBlenderData->field_78 = 0x9999; + sBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + case 0xAAAA: + sBerryBlenderData->field_78 = 0xAAAA; + sBerryBlenderData->field_7A = gRecvCmds[3][0]; + break; + } + sBerryBlenderData->field_70[0] = 0x1111; + } + else if (gRecvCmds[1][0] == 0x2222) + sBerryBlenderData->field_70[0] = 0x2222; + } + if (GetMultiplayerId() == 0 && sBerryBlenderData->field_70[0] != 0x1111 && sBerryBlenderData->field_70[0] != 0x2222) + { + u8 i; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gRecvCmds[0][i] == 0x2FFF) + { + switch (gRecvCmds[1][i]) + { + case 0x8888: + sBerryBlenderData->field_70[i] = 0x8888; + break; + case 0x7779: + sBerryBlenderData->field_70[i] = 0x7779; + break; + case 0x9999: + sBerryBlenderData->field_70[i] = 0x9999; + break; + case 0xAAAA: + sBerryBlenderData->field_70[i] = 0xAAAA; + break; + } + } + } + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (sBerryBlenderData->field_70[i] == 0) + break; + } + if (i == GetLinkPlayerCount()) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (sBerryBlenderData->field_70[i] != 0x7779) + break; + } + gSendCmd[0] = 0x2FFF; + if (i == GetLinkPlayerCount()) + gSendCmd[1] = 0x2222; + else + { + gSendCmd[1] = 0x1111; + gSendCmd[2] = sBerryBlenderData->field_70[i]; + gSendCmd[3] = i; + } + } + } + } +} + +void sub_8051414(struct BgAffineDstData *dest) +{ + struct BgAffineSrcData affineSrc; + affineSrc.texX = 30720; + affineSrc.texY = 20480; + affineSrc.scrX = 120 - sBerryBlenderData->field_144; + affineSrc.scrY = 80 - sBerryBlenderData->field_146; + affineSrc.sx = sBerryBlenderData->field_142; + affineSrc.sy = sBerryBlenderData->field_142; + affineSrc.alpha = sBerryBlenderData->arrowPos; + BgAffineSet(&affineSrc, dest, 1); +} + +void sub_8051474(void) +{ + sBerryBlenderData->field_58 = sBerryBlenderData->arrowPos; + sBerryBlenderData->arrowPos += sBerryBlenderData->field_56; + sub_8051414(&sBerryBlenderData->field_168); +} + +void sub_80514A4(void) +{ + REG_BG2PA = sBerryBlenderData->field_168.pa; + REG_BG2PB = sBerryBlenderData->field_168.pb; + REG_BG2PC = sBerryBlenderData->field_168.pc; + REG_BG2PD = sBerryBlenderData->field_168.pd; + REG_BG2X = sBerryBlenderData->field_168.dx; + REG_BG2Y = sBerryBlenderData->field_168.dy; +} + +void sub_80514F0(void) +{ + REG_BG1HOFS = sBerryBlenderData->field_144; + REG_BG1VOFS = sBerryBlenderData->field_146; + REG_BG0HOFS = sBerryBlenderData->field_144; + REG_BG0VOFS = sBerryBlenderData->field_146; +} + +void sub_8051524(struct Sprite* sprite) +{ + sprite->data2 += sprite->data0; + sprite->data3 += sprite->data1; + sprite->pos2.x = sprite->data2 / 8; + sprite->pos2.y = sprite->data3 / 8; + if (sprite->animEnded) + DestroySprite(sprite); +} + +extern const struct SpriteTemplate gSpriteTemplate_82164FC; + +void sub_805156C(void) +{ + s32 limit = (Random() % 2) + 1; + s32 i; + + for (i = 0; i < limit; i++) + { + u16 rand; + s32 x, y; + u8 spriteID; + + rand = sBerryBlenderData->arrowPos + (Random() % 20); + + x = gSineTable[(rand & 0xFF) + 64] / 4; + y = gSineTable[(rand & 0xFF)] / 4; + + spriteID = CreateSprite(&gSpriteTemplate_82164FC, x + 120, y + 80, 1); + gSprites[spriteID].data0 = 16 - (Random() % 32); + gSprites[spriteID].data1 = 16 - (Random() % 32); + + gSprites[spriteID].callback = sub_8051524; + } +} + +void sub_8051650(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 / 3); + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_8051684(struct Sprite* sprite) +{ + sprite->data0++; + sprite->pos2.y = -(sprite->data0 * 2); + if (sprite->pos2.y < -12) + sprite->pos2.y = -12; + if (sprite->animEnded) + DestroySprite(sprite); +} + +void Blender_SetBankBerryData(u8 bank, u16 itemID) +{ + sBerryBlenderData->chosenItemID[bank] = itemID; + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[bank], itemID); +} + +extern const u8* const gUnknown_08216284[]; +extern u8 byte_3002A68; + +void unref_sub_80516F8(u8 taskID) +{ + struct Task* task = &gTasks[taskID]; + if (gReceivedRemoteLinkPlayers) + { + s32 i; + if (GetMultiplayerId() == 0) + { + if (++task->data[0] > 120) + task->data[0] = 0; + if (task->data[0] == 100) + { + ZeroFillWindowRect(&sBerryBlenderData->field_4, 0, 0, 16, 20); + MenuDrawTextWindow(4, 4, 10, 12); + for (i = 0; i < 3; i++) + { + if (gLinkPlayers[i + 1].trainerId != 0) + MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); + MenuDrawTextWindow(0, 13, 29, 19); + MenuPrint(gOtherText_PressAToStart, 1, 15); + } + } + if (gMain.newKeys & A_BUTTON) + { + sub_8007E4C(); + DestroyTask(taskID); + } + } + else + { + if (task->data[0] == 10) + MenuPrint(gOtherText_PleaseWait, 3, 10); + if (++task->data[0] > 120) + task->data[0] = 0; + if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) + DestroyTask(taskID); + } + } +} + +extern const struct SpriteTemplate gSpriteTemplate_821657C; + +void sub_805181C(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 88) + { + sprite->data1 = 88; + sprite->data0++; + PlaySE(SE_KON); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + { + sprite->data0++; + sprite->data2 = 0; + } + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + if (++sprite->data3 == 3) + { + DestroySprite(sprite); + CreateSprite(&gSpriteTemplate_821657C, 120, -20, 2); + } + else + { + sprite->data0 = 0; + sprite->data1 = -16; + StartSpriteAnim(sprite, sprite->data3); + } + } + break; + } + sprite->pos2.y = sprite->data1; +} + +void sub_80518CC(struct Sprite* sprite) +{ + switch (sprite->data0) + { + case 0: + sprite->data1 += 8; + if (sprite->data1 > 92) + { + sprite->data1 = 92; + sprite->data0++; + PlaySE(SE_PIN); + } + break; + case 1: + sprite->data2 += 1; + if (sprite->data2 > 20) + sprite->data0++; + break; + case 2: + sprite->data1 += 4; + if (sprite->data1 > 176) + { + sBerryBlenderData->field_0++; + DestroySprite(sprite); + } + break; + } + sprite->pos2.y = sprite->data1; +} + +void sub_805194C(u16 a0, u16 a1) +{ + if (sBerryBlenderData->field_140 < a0) + { + sBerryBlenderData->field_140 += 2; + sub_805197C(sBerryBlenderData->field_140, a1); + } +} + +void sub_805197C(u16 a0, u16 a1) +{ + s32 var1, var2, var3, var4; + u16* vram; + + vram = (u16*)(VRAM + 0x6000); + var1 = (a0 * 64) / a1; + var2 = var1 / 8; + for (var4 = 0; var4 < var2; var4++) + { + vram[11 + var4] = 0x81E9; + vram[43 + var4] = 0x81F9; + } + var3 = var1 % 8; + if (var3 != 0) + { + vram[11 + var4] = var3 - 32287; + vram[43 + var4] = var3 - 32271; + var4++; + } + for (; var4 < 8; var4++) + { + vram[11 + var4] = 33249; + vram[43 + var4] = 33249 + 16; + } +} + +u32 sub_8051A1C(u16 a0) +{ + return 360000 * a0 / 0x10000; +} + +void sub_8051A3C(u16 a0) +{ + u8 i; + u8 palAdders[5]; + + u32 var = sub_8051A1C(a0); + if (sBerryBlenderData->max_RPM < var) + sBerryBlenderData->max_RPM = var; + for (i = 0; i < 5; i++) + { + palAdders[i] = var % 10; + var /= 10; + } + *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172; + *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172; + *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172; + *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172; + *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172; +} + +void sub_8051AC8(s16* a0, u16 a1) +{ + if (*a0 == 0) + *a0 = (Random() % a1) - (a1 / 2); +} + +void sub_8051AF4(s16* a0) +{ + if (*a0 < 0 ) + (*a0)++; + if (*a0 > 0 ) + (*a0)--; +} + +void sub_8051B18(void) +{ + sub_8051AF4(&sBerryBlenderData->field_144); + sub_8051AF4(&sBerryBlenderData->field_146); +} + +void sub_8051B40(s16* a0, u16 a1) +{ + s32 var; + if (a1 < 10) + var = 16; + else + var = 8; + if (*a0 == 0) + *a0 = (Random() % var) - (var / 2); + else + { + if (*a0 < 0) + (*a0)++; + if (*a0 > 0) + (*a0)--; + } +} + +bool8 sub_8051B8C(void) +{ + if (sBerryBlenderData->framesToWait == 0) + { + sBerryBlenderData->field_144 = 0; + sBerryBlenderData->field_146 = 0; + } + sBerryBlenderData->framesToWait++; + sub_8051B40(&sBerryBlenderData->field_144, sBerryBlenderData->framesToWait); + sub_8051B40(&sBerryBlenderData->field_146, sBerryBlenderData->framesToWait); + if (sBerryBlenderData->framesToWait == 20) + { + sBerryBlenderData->field_144 = 0; + sBerryBlenderData->field_146 = 0; + return 1; + } + else + return 0; +} + +void sub_8051C04(struct Sprite* sprite) +{ + sprite->pos2.x = -(sBerryBlenderData->field_144); + sprite->pos2.y = -(sBerryBlenderData->field_146); +} + +void Blender_TrySettingRecord(void) +{ + if (gSaveBlock1.berryBlenderRecords[sBerryBlenderData->playersNo - 2] < sBerryBlenderData->max_RPM) + gSaveBlock1.berryBlenderRecords[sBerryBlenderData->playersNo - 2] = sBerryBlenderData->max_RPM; +} + +extern const u8 gUnknown_082165E9[]; +extern const u8 gUnknown_082165EE[]; + +bool8 Blender_PrintBlendingResults(void) +{ + u16 i; + + struct Pokeblock pokeblock; + u8 vars2[8]; + u8 text[2][10]; + u16 berryIDs[4]; // unused + + switch (sBerryBlenderData->field_0) + { + case 0: + sBerryBlenderData->field_0++; + sBerryBlenderData->framesToWait = 17; + break; + case 1: + sBerryBlenderData->framesToWait -= 10; + if (sBerryBlenderData->framesToWait < 0) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + } + break; + case 2: + if (++sBerryBlenderData->framesToWait > 20) + { + for (i = 0; i < 3; i++) + DestroySprite(&gSprites[sBerryBlenderData->scoreIconIDs[i]]); + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + } + break; + case 3: + { + u8* textPtr; + u16 secondsPassed, minutes, seconds; + + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + u8 place = sBerryBlenderData->playerPlaces[i]; + textPtr = text[0]; + + StringCopy(textPtr, sBerryBlenderData->blendedBerries[place].name); + ConvertInternationalString(textPtr, gLinkPlayers[place].language); + StringAppend(textPtr, gOtherText_Berry); + textPtr = sBerryBlenderData->stringVar; + textPtr = ConvertIntToDecimalString(textPtr, i + 1); + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); + sub_8072C74(textPtr, text[0], 157, 0); + MenuPrint(sBerryBlenderData->stringVar, 5, gUnknown_082165E9[sBerryBlenderData->playersNo] + (i * gUnknown_082165EE[sBerryBlenderData->playersNo])); + } + ConvertIntToDecimalStringN(text[0], sBerryBlenderData->max_RPM % 100, 2, 2); + textPtr = sBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); + textPtr = sub_8072C14(textPtr, sBerryBlenderData->max_RPM / 100, 121, 1); + + textPtr[0] = CHAR_SPACE; + textPtr[1] = CHAR_PERIOD; + textPtr[2] = CHAR_SPACE; + textPtr += 3; + + textPtr = sub_8072C74(textPtr, text[0], 142, 1); + StringCopy(textPtr, gOtherText_RPM); + MenuPrint(sBerryBlenderData->stringVar, 5, 13); + + secondsPassed = sBerryBlenderData->gameFrameTime / 60; + seconds = secondsPassed % 60; + minutes = secondsPassed / 60; + ConvertIntToDecimalStringN(text[0], minutes, 2, 2); + ConvertIntToDecimalStringN(text[1], seconds, 2, 2); + textPtr = sBerryBlenderData->stringVar; + textPtr = StringCopy(textPtr, gOtherText_RequiredTime); + + textPtr = sub_8072C74(textPtr, text[0], 102, 1); + textPtr = StringAppend(textPtr, gOtherText_Min); + + textPtr = sub_8072C74(textPtr, text[1], 136, 1); + StringCopy(textPtr, gOtherText_Sec); + + MenuPrint(sBerryBlenderData->stringVar, 5, 15); + + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + } + break; + case 4: + if (gMain.newKeys & A_BUTTON) + sBerryBlenderData->field_0++; + break; + case 5: + MenuZeroFillScreen(); + MenuDrawTextWindow(0, 14, 29, 19); + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) + { + if (sBerryBlenderData->chosenItemID[i] != 0) + berryIDs[i] = sBerryBlenderData->chosenItemID[i] - 133; + } + sub_8050760(); + sub_8050520(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, vars2, sBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar); + CreateTask(sub_8052BD0, 6); + MenuPrintMessage(sBerryBlenderData->stringVar, 1, 15); + RemoveBagItem(gScriptItemId, 1); + sub_810CA34(&pokeblock); + sBerryBlenderData->field_0++; + break; + case 6: + if (MenuUpdateWindowText()) + { + Blender_TrySettingRecord(); + return 1; + } + break; + } + return 0; +} + +extern const u8 gUnknown_08216249[]; +extern const u8 gUnknown_082162C8[]; +extern const u8 *const gPokeblockNames[]; + +void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +{ + u8 text[12]; + u8 flavourLvl, feel; + + dst[0] = EOS; + StringCopy(dst, gPokeblockNames[pokeblock->color]); + StringAppend(dst, gOtherText_PokeBlockMade); + StringAppend(dst, gUnknown_082162C8); + + flavourLvl = sub_810C9B0(pokeblock); + feel = sub_810C9E8(pokeblock); + + StringAppend(dst, gOtherText_BlockLevelIs); + ConvertIntToDecimalStringN(text, flavourLvl, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_BlockFeelIs); + ConvertIntToDecimalStringN(text, feel, 0, 3); + StringAppend(dst, text); + + StringAppend(dst, gOtherText_Period); + StringAppend(dst, gUnknown_08216249); +} + +void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) +{ + s32 i, j; + for (i = 0; i < playersNum; i++) + { + for (j = 0; j < playersNum; j++) + { + if (scores[places[i]] > scores[places[j]]) + { + u8 temp = places[i]; + places[i] = places[j]; + places[j] = temp; + } + } + } +} + +void Blender_SortScores(void) +{ + u8 i; + u8 places[4]; + u32 points[4]; + + for (i = 0; i < sBerryBlenderData->playersNo; i++) + places[i] = i; + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + points[i] = 1000000 * sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + } + Blender_SortBasedOnPoints(places, sBerryBlenderData->playersNo, points); + for (i = 0; i < sBerryBlenderData->playersNo; i++) + sBerryBlenderData->playerPlaces[i] = places[i]; +} + +extern const u8 gUnknown_082165F3[]; + +bool8 Blender_PrintBlendingRanking(void) +{ + u16 i; + switch (sBerryBlenderData->field_0) + { + case 0: + sBerryBlenderData->field_0++; + sBerryBlenderData->framesToWait = 255; + break; + case 1: + sBerryBlenderData->framesToWait -= 10; + if (sBerryBlenderData->framesToWait < 0) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + } + break; + case 2: + if (++sBerryBlenderData->framesToWait > 20) + { + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + } + break; + case 3: + MenuDrawTextWindow(4, 2, 25, 17); + sub_8072BD8(gOtherText_Ranking, 5, 3, 160); + + sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&gSpriteTemplate_821645C, 140, 52, 0); + gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); + + sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&gSpriteTemplate_821645C, 164, 52, 0); + gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + + sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&gSpriteTemplate_821645C, 188, 52, 0); + gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); + + Blender_SortScores(); + + for (i = 0; i < sBerryBlenderData->playersNo; i++) + { + u8 place = sBerryBlenderData->playerPlaces[i]; + u8* txtPtr = sBerryBlenderData->stringVar; + + txtPtr[0] = EXT_CTRL_CODE_BEGIN; + txtPtr[1] = 0x13; + txtPtr[2] = 4; + txtPtr += 3; + + txtPtr = ConvertIntToDecimalString(txtPtr, i + 1); + + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; + + txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); + + txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + + MenuPrint(sBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[sBerryBlenderData->playersNo] + 8); + } + sBerryBlenderData->framesToWait = 0; + sBerryBlenderData->field_0++; + break; + case 4: + if (++sBerryBlenderData->framesToWait > 20) + sBerryBlenderData->field_0++; + break; + case 5: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sBerryBlenderData->field_0++; + } + break; + case 6: + sBerryBlenderData->field_0 = 0; + return 1; + } + return 0; +} + +struct UnknownStruct +{ + s8 bytes[24]; + s16 hword[2]; +}; + +extern struct UnknownStruct gUnknown_03000560; + +void unref_sub_80524BC(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB1_BerryBlender); + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + SeedRng(gMain.vblankCounter1); + REG_DISPCNT = 0x1540; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_03000560.hword[1] = 0x1F40; + gUnknown_03000560.bytes[16]++; + SetMainCallback2(sub_8052AF8); +} diff --git a/src/link.c b/src/link.c index 5858ad8bf..850201ccb 100644 --- a/src/link.c +++ b/src/link.c @@ -2,7 +2,6 @@ #include "link.h" #include "battle.h" #include "berry.h" -#include "berry_blender.h" #include "hall_of_fame.h" #include "item_use.h" #include "main.h" @@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags; extern u16 word_3004858; +extern void Blender_SetBankBerryData(u8 bank, u16 itemID); + static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); @@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam) sub_8007E24(); break; case 0xAAAB: - sub_80516C4(i, gRecvCmds[1][i]); + Blender_SetBankBerryData(i, gRecvCmds[1][i]); break; case 0xCCCC: #if defined(ENGLISH) -- cgit v1.2.3 From 81274f41e1730f34d2929baa3b3f95d83145a97d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 12 Aug 2017 18:55:06 -0500 Subject: clean up learn_move.c a bit --- src/learn_move.c | 578 +++++++++++++++++++++++++++---------------------------- sym_bss.txt | 8 +- 2 files changed, 284 insertions(+), 302 deletions(-) diff --git a/src/learn_move.c b/src/learn_move.c index a83d7a491..71de9910a 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -17,57 +17,63 @@ #include "task.h" #include "trig.h" -struct UnknownStruct1 -{ - const u8 *unk0; - u8 unk4; - u8 unk5; - u8 unk6; -}; - extern u8 ewram[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; extern const struct WindowConfig gWindowConfig_81E6CE4; extern const struct WindowConfig gWindowConfig_81E7240; -extern const struct SpriteSheet gUnknown_08402D80; -extern const struct SpritePalette gUnknown_08402D88; +extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gMoveDescriptions[]; +extern const u8 gTypeNames[][7]; +extern const u8 *const gUnknown_083CAF70[]; extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); -struct Struct2017000 +struct LearnMoveStruct { - u8 unk0; + u8 state; u8 filler1; u8 unk2; - u8 unk3[2]; - //u8 unk4; - u8 unk5[16]; - u8 filler15[3]; + u8 spriteIDs[20]; + u8 filler17[1]; u8 unk18; u8 unk19; - u8 unk1A; - u8 unk1B; + u8 numMenuChoices; + u8 menuSelection; u8 unk1C; - u8 unk1D; + bool8 unk1D; u8 unk1E; u8 filler1F; - //u16 unk20[4]; - //u8 filler28[0x2C3-0x28]; - u16 unk20[20]; + /*0x020*/ u16 movesToLearn[20]; u8 filler48[0x52-0x48]; - //u8 unk52[0x2C3-0x52]; - u8 unk52[6][0x19]; + u8 moveNames[6][0x19]; u8 fillerE8[0x2C3-0xE8]; - u8 unk2C3; - u8 unk2C4; - u8 unk2C5; + bool8 unk2C3; + bool8 showContestInfo; + /*0x2C5*/ u8 partyMon; u8 unk2C6; }; -extern struct Struct2017000 *gUnknown_030007B0; +static struct LearnMoveStruct *sLearnMoveStruct; const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); @@ -81,6 +87,14 @@ const u8 gUnknown_08402CF8[][4] = {10, 8, 29, 13}, }; +struct UnknownStruct1 +{ + const u8 *unk0; + u8 unk4; + u8 unk5; + u8 unk6; +}; + const struct UnknownStruct1 gUnknown_08402D08[][4] = { { @@ -212,38 +226,24 @@ const struct SpriteTemplate gSpriteTemplate_8402E08 = const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? -const u8 gUnknown_08402E24[7][3] = -{ - {11, 1, 1}, - { 3, 6, 2}, - {24, 1, 3}, - { 3, 11, 4}, - { 5, 4, 5}, - { 3, 6, 6}, - { 3, 11, 7}, -}; - -const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; -const u8 gUnknown_08402E3D[] = {4, 5, 6}; - void sub_813269C(u8); -void sub_81326D8(void); -void sub_8132870(void); -void sub_8132908(void); -void sub_8132FEC(void); -void sub_8133030(u8); +void CB2_InitLearnMove(void); +void CB2_LearnMove(void); +void LearnMoveMain(void); +void DrawLearnMoveMenuWindow(void); +void sub_8133030(bool8); u8 sub_81330E8(void); void sub_8133140(u8); u8 sub_8133248(void); -void sub_81332A0(void); +void ClearLearnMoveVars(void); void sub_8133358(void); void sub_8133558(void); void sub_813362C(void); void sub_8133800(void); -void sub_8133AEC(u8, int); +void sub_8133AEC(bool8, int); void sub_8133CA4(void); -void sub_813265C(void) +void VBlankCB_LearnMove(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -261,23 +261,23 @@ void sub_813269C(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(sub_81326D8); + SetMainCallback2(CB2_InitLearnMove); gFieldCallback = sub_8080990; DestroyTask(taskId); } } -void sub_81326D8(void) +void CB2_InitLearnMove(void) { REG_DISPCNT = 0; ResetSpriteData(); FreeAllSpritePalettes(); ResetTasks(); - gUnknown_030007B0 = (struct Struct2017000 *)(ewram + 0x17000); - sub_81332A0(); - gUnknown_030007B0->unk2C5 = gSpecialVar_0x8004; + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); + ClearLearnMoveVars(); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; sub_8133558(); - SetVBlankCallback(sub_813265C); + SetVBlankCallback(VBlankCB_LearnMove); SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); @@ -300,7 +300,7 @@ void sub_81326D8(void) AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); - SetMainCallback2(sub_8132870); + SetMainCallback2(CB2_LearnMove); } void sub_81327A4(void) @@ -308,10 +308,10 @@ void sub_81327A4(void) ResetSpriteData(); FreeAllSpritePalettes(); ResetTasks(); - gUnknown_030007B0 = (struct Struct2017000 *)(ewram + 0x17000); + sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000); sub_8133558(); - gUnknown_030007B0->unk2C6 = gSpecialVar_0x8005; - SetVBlankCallback(sub_813265C); + sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); @@ -335,26 +335,26 @@ void sub_81327A4(void) AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); - SetMainCallback2(sub_8132870); + SetMainCallback2(CB2_LearnMove); } -void sub_8132870(void) +void CB2_LearnMove(void) { - sub_8132908(); - if (gUnknown_030007B0->unk1D != 0) + LearnMoveMain(); + if (sLearnMoveStruct->unk1D) { - gUnknown_030007B0->unk1D = 0; - sub_814AD7C(0x58, (gUnknown_030007B0->unk18 * 2 + 1) * 8); + sLearnMoveStruct->unk1D = FALSE; + sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); } - if (gUnknown_030007B0->unk1E != 0) + if (sLearnMoveStruct->unk1E != 0) { - gUnknown_030007B0->unk1E = 0; + sLearnMoveStruct->unk1E = 0; sub_8133800(); } - if (gUnknown_030007B0->unk2C3 != 0) + if (sLearnMoveStruct->unk2C3) { - sub_8133AEC(gUnknown_030007B0->unk2C4, 1); - gUnknown_030007B0->unk2C3 = 0; + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); + sLearnMoveStruct->unk2C3 = FALSE; } RunTasks(); AnimateSprites(); @@ -368,32 +368,32 @@ void sub_81328E8(const u8 *a) MenuPrintMessage(gStringVar4, 3, 15); } -void sub_8132908(void) +void LearnMoveMain(void) { - switch (gUnknown_030007B0->unk0) + switch (sLearnMoveStruct->state) { case 0: - gUnknown_030007B0->unk0++; - sub_8132FEC(); - sub_8133030(0); + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); + sub_8133030(FALSE); sub_8133800(); gSprites[1].pos1.x = 0x48; - gUnknown_030007B0->unk2C3 = 1; + sLearnMoveStruct->unk2C3 = TRUE; BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_DISPCNT = 0x1340; break; case 1: if (!gPaletteFade.active) - gUnknown_030007B0->unk0 = 4; + sLearnMoveStruct->state = 4; break; case 2: - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; break; case 3: - sub_8133030(0); + sub_8133030(FALSE); sub_8133800(); - gUnknown_030007B0->unk2C3 = 1; - gUnknown_030007B0->unk0++; + sLearnMoveStruct->unk2C3 = TRUE; + sLearnMoveStruct->state++; gSprites[1].pos1.x = 0x48; break; case 4: @@ -403,9 +403,9 @@ void sub_8132908(void) case 5: sub_8133140(0); sub_8133800(); - gUnknown_030007B0->unk2C3 = 1; + sLearnMoveStruct->unk2C3 = TRUE; gSprites[1].pos1.x = 0x48; - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; break; case 6: if (sub_8133248() == 0) @@ -415,34 +415,34 @@ void sub_8132908(void) if (MenuUpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; } break; case 9: { - s8 var = ProcessMenuInputNoWrap_(); + s8 selection = ProcessMenuInputNoWrap_(); - if (var == 0) + if (selection == 0) { sub_8133CA4(); - if (GiveMoveToMon(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]) != 0xFFFF) + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF) { sub_81328E8(gOtherText_PokeLearnedMove); gSpecialVar_0x8004 = 1; - gUnknown_030007B0->unk0 = 31; + sLearnMoveStruct->state = 31; } else { - gUnknown_030007B0->unk0 = 16; + sLearnMoveStruct->state = 16; } } - else if (var == -1 || var == 1) + else if (selection == -1 || selection == 1) { sub_8133CA4(); - if (gUnknown_030007B0->unk2C4 == 0) - gUnknown_030007B0->unk0 = 3; - if (gUnknown_030007B0->unk2C4 == 1) - gUnknown_030007B0->unk0 = 5; + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; } } break; @@ -450,38 +450,38 @@ void sub_8132908(void) if (MenuUpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; } break; case 13: { - s8 r4 = ProcessMenuInputNoWrap_(); + s8 selection = ProcessMenuInputNoWrap_(); - if (r4 == 0) + if (selection == 0) { sub_8133CA4(); - gSpecialVar_0x8004 = r4; - gUnknown_030007B0->unk0 = 14; + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; } - else if (r4 == -1 || r4 == 1) + else if (selection == -1 || selection == 1) { sub_8133CA4(); - if (gUnknown_030007B0->unk2C4 == 0) - gUnknown_030007B0->unk0 = 3; - if (gUnknown_030007B0->unk2C4 == 1) - gUnknown_030007B0->unk0 = 5; + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; } } break; case 16: sub_81328E8(gOtherText_DeleteOlderMove); - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; break; case 17: if (MenuUpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); - gUnknown_030007B0->unk0 = 18; + sLearnMoveStruct->state = 18; } break; case 18: @@ -492,23 +492,23 @@ void sub_8132908(void) { sub_8133CA4(); sub_81328E8(gOtherText_WhichMoveToForget); - gUnknown_030007B0->unk0 = 19; + sLearnMoveStruct->state = 19; } else if (var == -1 || var == 1) { sub_8133CA4(); - gUnknown_030007B0->unk0 = 24; + sLearnMoveStruct->state = 24; } } break; case 24: sub_81328E8(gOtherText_StopLearningMove); - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; break; case 25: if (MenuUpdateWindowText()) { - gUnknown_030007B0->unk0 = 26; + sLearnMoveStruct->state = 26; DisplayYesNoMenu(21, 7, 1); } break; @@ -519,54 +519,54 @@ void sub_8132908(void) if (var == 0) { sub_8133CA4(); - gUnknown_030007B0->unk0 = 27; + sLearnMoveStruct->state = 27; } else if (var == -1 || var == 1) { sub_8133CA4(); // What's the point? It gets set to 16, anyway. - if (gUnknown_030007B0->unk2C4 == 0) - gUnknown_030007B0->unk0 = 3; - if (gUnknown_030007B0->unk2C4 == 1) - gUnknown_030007B0->unk0 = 5; - gUnknown_030007B0->unk0 = 16; + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; + sLearnMoveStruct->state = 16; } } break; case 27: if (MenuUpdateWindowText()) { - if (gUnknown_030007B0->unk2C4 == 0) - gUnknown_030007B0->unk0 = 3; - if (gUnknown_030007B0->unk2C4 == 1) - gUnknown_030007B0->unk0 = 5; + if (sLearnMoveStruct->showContestInfo == FALSE) + sLearnMoveStruct->state = 3; + if (sLearnMoveStruct->showContestInfo == TRUE) + sLearnMoveStruct->state = 5; } break; case 19: if (MenuUpdateWindowText()) { - gUnknown_030007B0->unk0 = 20; + sLearnMoveStruct->state = 20; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } break; case 20: if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, gUnknown_030007B0->unk2C5, gPlayerPartyCount - 1, sub_81327A4, gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]); - gUnknown_030007B0->unk0 = 28; + sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); + sLearnMoveStruct->state = 28; } break; case 21: if (MenuUpdateWindowText()) - gUnknown_030007B0->unk0 = 14; + sLearnMoveStruct->state = 14; break; case 22: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); break; case 14: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gUnknown_030007B0->unk0++; + sLearnMoveStruct->state++; break; case 15: if (!gPaletteFade.active) @@ -574,35 +574,35 @@ void sub_8132908(void) break; case 28: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - gUnknown_030007B0->unk0++; - sub_8132FEC(); + sLearnMoveStruct->state++; + DrawLearnMoveMenuWindow(); sub_8133800(); - if (gUnknown_030007B0->unk2C4 == 0) - sub_8133030(1); - if (gUnknown_030007B0->unk2C4 == 1) + if (sLearnMoveStruct->showContestInfo == FALSE) + sub_8133030(TRUE); + if (sLearnMoveStruct->showContestInfo == TRUE) { gSprites[1].pos1.x = 0x48; sub_8133140(1); } - sub_8133AEC(gUnknown_030007B0->unk2C4, 1); + sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); break; case 29: if (!gPaletteFade.active) { - if (gUnknown_030007B0->unk2C6 == 4) + if (sLearnMoveStruct->unk2C6 == 4) { - gUnknown_030007B0->unk0 = 24; + sLearnMoveStruct->state = 24; } else { - u16 moveId = GetMonData(&gPlayerParty[gUnknown_030007B0->unk2C5], MON_DATA_MOVE1 + gUnknown_030007B0->unk2C6); + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6); StringCopy(gStringVar3, gMoveNames[moveId]); - RemoveMonPPBonus(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk2C6); - SetMonMoveSlot(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B], gUnknown_030007B0->unk2C6); - StringCopy(gStringVar2, gMoveNames[gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6); + StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]); sub_81328E8(gOtherText_ForgotMove123); - gUnknown_030007B0->unk0 = 30; + sLearnMoveStruct->state = 30; gSpecialVar_0x8004 = 1; } } @@ -615,7 +615,7 @@ void sub_8132908(void) #else sub_81328E8(deuOtherText_ForgotAndLearned); #endif - gUnknown_030007B0->unk0 = 31; + sLearnMoveStruct->state = 31; PlayFanfare(BGM_FANFA1); } break; @@ -623,24 +623,24 @@ void sub_8132908(void) if (MenuUpdateWindowText()) { PlayFanfare(BGM_FANFA1); - gUnknown_030007B0->unk0 = 32; + sLearnMoveStruct->state = 32; } break; case 32: if (IsFanfareTaskInactive()) - gUnknown_030007B0->unk0 = 33; + sLearnMoveStruct->state = 33; break; case 33: if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk0 = 14; + sLearnMoveStruct->state = 14; } break; } } -void sub_8132FEC(void) +void DrawLearnMoveMenuWindow(void) { u32 i; @@ -660,53 +660,50 @@ void sub_8133030(bool8 a) { s32 i; - gSprites[gUnknown_030007B0->unk3[0]].invisible = FALSE; - gSprites[gUnknown_030007B0->unk3[1]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + for (i = 0; i < 16; i++) - { - // Hmm... - gSprites[*((u8 *)gUnknown_030007B0 + i + 7)].invisible = TRUE; - } + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); } + if (!a) - { sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); - } } u8 sub_81330E8(void) { - u32 r4 = ((gMain.newKeys & 0x30) != 0); + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR - && (gMain.newKeys & 0x300)) - r4++; + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; - if (r4 != 0) + if (result != 0) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk0 = 5; - gUnknown_030007B0->unk2C4 = 1; + sLearnMoveStruct->state = 5; + sLearnMoveStruct->showContestInfo = TRUE; } - return r4; + return result; } void sub_8133140(bool8 a) { s32 i; - gSprites[gUnknown_030007B0->unk3[0]].invisible = FALSE; - gSprites[gUnknown_030007B0->unk3[1]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; + for (i = 0; i < 16; i++) - { - // Hmm... - gSprites[*((u8 *)gUnknown_030007B0 + i + 7)].invisible = FALSE; - } + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; + for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); @@ -720,45 +717,46 @@ void sub_8133140(bool8 a) gUnknown_08402D08[1][i].unk5 + 3); } } + if (!a) sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); } u8 sub_8133248(void) { - u32 r4 = ((gMain.newKeys & 0x30) != 0); + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR - && (gMain.newKeys & 0x300)) - r4++; + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; - if (r4 != 0) + if (result != 0) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk0 = 3; - gUnknown_030007B0->unk2C4 = 0; + sLearnMoveStruct->state = 3; + sLearnMoveStruct->showContestInfo = FALSE; } - return r4; + return result; } -void sub_81332A0(void) +void ClearLearnMoveVars(void) { s32 i; - gUnknown_030007B0->unk0 = 0; - gUnknown_030007B0->unk2 = 0; - gUnknown_030007B0->unk19 = 0; - gUnknown_030007B0->unk18 = 0; - gUnknown_030007B0->unk1C = 0; - gUnknown_030007B0->unk1A = 0; - gUnknown_030007B0->unk1B = 0; - gUnknown_030007B0->unk1D = 0; - gUnknown_030007B0->unk1E = 0; - gUnknown_030007B0->unk2C3 = 0; - gUnknown_030007B0->unk2C4 = 0; + sLearnMoveStruct->state = 0; + sLearnMoveStruct->unk2 = 0; + sLearnMoveStruct->unk19 = 0; + sLearnMoveStruct->unk18 = 0; + sLearnMoveStruct->unk1C = 0; + sLearnMoveStruct->numMenuChoices = 0; + sLearnMoveStruct->menuSelection = 0; + sLearnMoveStruct->unk1D = FALSE; + sLearnMoveStruct->unk1E = 0; + sLearnMoveStruct->unk2C3 = FALSE; + sLearnMoveStruct->showContestInfo = FALSE; for (i = 0; i < 20; i++) - gUnknown_030007B0->unk20[i] = 0; + sLearnMoveStruct->movesToLearn[i] = 0; } void sub_8133300(struct Sprite *sprite) @@ -779,46 +777,42 @@ void sub_8133300(struct Sprite *sprite) sprite->data1++; } -extern const struct SpriteTemplate gSpriteTemplate_8402D90; -extern const struct SpriteTemplate gSpriteTemplate_8402DC0; -extern const struct SpriteTemplate gSpriteTemplate_8402E08; - void sub_8133358(void) { s32 i; - gUnknown_030007B0->unk3[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); - gSprites[gUnknown_030007B0->unk3[0]].data0 = 1; - gSprites[gUnknown_030007B0->unk3[0]].data2 = -1; + sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1; - gUnknown_030007B0->unk3[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[1]], 1); - gSprites[gUnknown_030007B0->unk3[1]].data0 = 1; - gSprites[gUnknown_030007B0->unk3[1]].data2 = 1; + sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1); + gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1; + gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1; - gUnknown_030007B0->unk3[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[2]], 1); - gSprites[gUnknown_030007B0->unk3[2]].data0 = 2; - gSprites[gUnknown_030007B0->unk3[2]].data2 = -1; + sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1); + gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1; - gUnknown_030007B0->unk3[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); - gSprites[gUnknown_030007B0->unk3[3]].data0 = 2; - gSprites[gUnknown_030007B0->unk3[3]].data2 = 1; + sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2; + gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1; for (i = 0; i < 8; i++) { - gUnknown_030007B0->unk3[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 2); + sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2); } for (i = 0; i < 8; i++) { - gUnknown_030007B0->unk3[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 2); + sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); } for (i = 0; i < 20; i++) - gSprites[gUnknown_030007B0->unk3[i]].invisible = TRUE; + gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE; CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); } @@ -828,67 +822,67 @@ void sub_8133558(void) s32 i; u8 nickname[POKEMON_NAME_LENGTH + 1]; - gUnknown_030007B0->unk1A = GetMoveRelearnerMoves(&gPlayerParty[gUnknown_030007B0->unk2C5], gUnknown_030007B0->unk20); - for (i = 0; i < gUnknown_030007B0->unk1A; i++) - StringCopy(gUnknown_030007B0->unk52[i], gMoveNames[gUnknown_030007B0->unk20[i]]); - GetMonData(&gPlayerParty[gUnknown_030007B0->unk2C5], MON_DATA_NICKNAME, nickname); + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]); + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); StringCopy10(gStringVar1, nickname); - StringCopy(gUnknown_030007B0->unk52[gUnknown_030007B0->unk1A], gUnknownText_Exit); - gUnknown_030007B0->unk1A++; + StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit); + sLearnMoveStruct->numMenuChoices++; } -void sub_813360C(s8 a) +void sub_813360C(s8 delta) { - gUnknown_030007B0->unk1C = gUnknown_030007B0->unk18; - gUnknown_030007B0->unk18 += a; - gUnknown_030007B0->unk1D = 1; + sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18; + sLearnMoveStruct->unk18 += delta; + sLearnMoveStruct->unk1D = TRUE; } void sub_813362C(void) { - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (gUnknown_030007B0->unk1B != 0) + if (sLearnMoveStruct->menuSelection != 0) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk1B--; - gUnknown_030007B0->unk2C3 = 1; - if (gUnknown_030007B0->unk18 != 0) + sLearnMoveStruct->menuSelection--; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 0) { sub_813360C(-1); } - else if (gUnknown_030007B0->unk19 != 0) + else if (sLearnMoveStruct->unk19 != 0) { - gUnknown_030007B0->unk19--; - gUnknown_030007B0->unk1E++; + sLearnMoveStruct->unk19--; + sLearnMoveStruct->unk1E++; } } } - else if (gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (gUnknown_030007B0->unk1B < gUnknown_030007B0->unk1A - 1) + if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk1B++; - gUnknown_030007B0->unk2C3 = 1; - if (gUnknown_030007B0->unk18 != 2) + sLearnMoveStruct->menuSelection++; + sLearnMoveStruct->unk2C3 = TRUE; + if (sLearnMoveStruct->unk18 != 2) { sub_813360C(1); } - else if (gUnknown_030007B0->unk19 != gUnknown_030007B0->unk1A - 3) + else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3) { - gUnknown_030007B0->unk19++; - gUnknown_030007B0->unk1E++; + sLearnMoveStruct->unk19++; + sLearnMoveStruct->unk1E++; } } } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (gUnknown_030007B0->unk1B != gUnknown_030007B0->unk1A - 1) + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) { - gUnknown_030007B0->unk0 = 8; - StringCopy(gStringVar2, gUnknown_030007B0->unk52[gUnknown_030007B0->unk1B]); + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]); StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); MenuPrintMessage(gStringVar4, 3, 15); } @@ -896,92 +890,84 @@ void sub_813362C(void) { StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); MenuPrintMessage(gStringVar4, 3, 15); - gUnknown_030007B0->unk0 = 12; + sLearnMoveStruct->state = 12; } } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - gUnknown_030007B0->unk0 = 12; + sLearnMoveStruct->state = 12; StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); MenuPrintMessage(gStringVar4, 3, 15); } - if (gUnknown_030007B0->unk1A > 3) + if (sLearnMoveStruct->numMenuChoices > 3) { gSprites[2].invisible = FALSE; gSprites[3].invisible = FALSE; - if (gUnknown_030007B0->unk19 == 0) + if (sLearnMoveStruct->unk19 == 0) gSprites[2].invisible = TRUE; - else if (gUnknown_030007B0->unk19 == gUnknown_030007B0->unk1A - 3) + else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3) gSprites[3].invisible = TRUE; } } -extern const u8 *const gUnknown_083CAF70[]; - -struct ContestMove -{ - u8 effect; - u8 contestCategory:3; - u8 comboStarterId; - u8 comboMoves[4]; -}; - -extern const struct ContestMove gContestMoves[]; -extern const u8 gTypeNames[][7]; - void sub_8133800(void) { - u8 r6 = gUnknown_030007B0->unk19; + u8 r6 = sLearnMoveStruct->unk19; u8 *str = gTileBuffer; s32 i; for (i = 0; i < 3; i++) { - if (r6 >= gUnknown_030007B0->unk1A) + if (r6 >= sLearnMoveStruct->numMenuChoices) { str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); } - else if (r6 == gUnknown_030007B0->unk1A - 1) + else if (r6 == sLearnMoveStruct->numMenuChoices - 1) { str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); } else { - u16 moveId = gUnknown_030007B0->unk20[r6]; + u16 moveId = sLearnMoveStruct->movesToLearn[r6]; - if (gUnknown_030007B0->unk2C4 != 0) + if (sLearnMoveStruct->showContestInfo) str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); else str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); - str = sub_8072C74(str, gUnknown_030007B0->unk52[r6], 0x72, 0); + str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0); - str[0] = 0xCA; - str[1] = 0xCA; - str[2] = 0xBA; + str[0] = CHAR_P; + str[1] = CHAR_P; + str[2] = CHAR_SLASH; str += 3; str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); } - *str++ = 0xFE; + *str++ = CHAR_NEWLINE; r6++; } - *str = 0xFF; + *str = EOS; MenuPrint(gTileBuffer, 11, 1); sub_813360C(0); } -struct ContestEffect +const u8 gUnknown_08402E24[7][3] = { - u8 effectType; - u8 appeal; - u8 jam; + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, }; -extern const struct ContestEffect gContestEffects[]; +const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; +const u8 gUnknown_08402E3D[] = {4, 5, 6}; -void sub_8133940(u16 a, const u8 *b) +void PrintMoveInfo(u16 moveId, const u8 *b) { u8 str[0x34]; u8 numHearts; @@ -993,75 +979,71 @@ void sub_8133940(u16 a, const u8 *b) case 1: break; case 2: - if (gBattleMoves[a].power < 2) + if (gBattleMoves[moveId].power < 2) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else - sub_8072C14(str, gBattleMoves[a].power, 32, 2); + sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); MenuPrint(str, b[0], b[1]); break; case 4: - if (gBattleMoves[a].accuracy == 0) + if (gBattleMoves[moveId].accuracy == 0) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else - sub_8072C14(str, gBattleMoves[a].accuracy, 32, 2); + sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); MenuPrint(str, b[0], b[1]); break; case 6: MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); - numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; + numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; if (numHearts == 255) numHearts = 0; for (i = 0; i < 8; i++) { if (i < numHearts) - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 1); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1); else - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 4]], 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0); } break; case 7: MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); - numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; + numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; if (numHearts == 255) numHearts = 0; for (i = 0; i < 8; i++) { if (i < numHearts) - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 3); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3); else - StartSpriteAnim(&gSprites[gUnknown_030007B0->unk3[i + 12]], 2); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); } break; } } -extern const u8 *const gUnknown_083CADD4[]; -extern const u8 *const gMoveDescriptions[]; - -void sub_8133AEC(u8 a, int unused) +void sub_8133AEC(bool8 contestInfo, int unused) { u16 i; - if (gUnknown_030007B0->unk1B != gUnknown_030007B0->unk1A - 1) + if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) { - u16 r5 = gUnknown_030007B0->unk20[gUnknown_030007B0->unk1B]; + u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]; - if (a != 0) + if (contestInfo) { for (i = 0; i < 16; i++) - gSprites[gUnknown_030007B0->unk3[i + 4]].invisible = FALSE; + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; for (i = 0; i < 3; i++) - sub_8133940(r5, gUnknown_08402E24[gUnknown_08402E3D[i]]); - sub_8072AB0(gUnknown_083CADD4[gContestMoves[r5].effect], 0x58, 0x48, 0x90, 32, 1); + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); + sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); } - //_08133BA0 else { u8 var; for (i = 0; i < 4; i++) - sub_8133940(r5, gUnknown_08402E24[gUnknown_08402E39[i]]); - var = sub_8072A18(gMoveDescriptions[r5 - 1], 0x58, 0x48, 0x90, 1); + PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]); + var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); if (var < 2) { u8 r1 = var * 2 + 9; @@ -1072,12 +1054,12 @@ void sub_8133AEC(u8 a, int unused) } else { - if (a != 0) + if (contestInfo) { MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); for (i = 0; i < 16; i++) - gSprites[gUnknown_030007B0->unk3[i + 4]].invisible = TRUE; + gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; } else { @@ -1091,5 +1073,5 @@ void sub_8133AEC(u8 a, int unused) void sub_8133CA4(void) { MenuZeroFillWindowRect(21, 7, 27, 12); - sub_8133AEC(gUnknown_030007B0->unk2C4, 0); + sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); } diff --git a/sym_bss.txt b/sym_bss.txt index a6eaeefe1..7a725e64e 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -126,10 +126,10 @@ gUnknown_03000748: @ 3000748 @ learn_move - .align 2 -gUnknown_030007B0: @ 30007B0 - .space 0x4 - +@ .align 2 +@sLearnMoveStruct: @ 30007B0 +@ .space 0x4 + .include "src/learn_move.o" .include "src/player_pc.o" .include "asm/m4a_1.o" .include "src/agb_flash.o" -- cgit v1.2.3 From a6c0c433c9356b51181c8f2c7cc028017a953390 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 12 Aug 2017 21:19:14 -0500 Subject: fix German build --- src/learn_move.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/learn_move.c b/src/learn_move.c index 71de9910a..51de68171 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -46,6 +46,10 @@ extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; extern const u8 *const gUnknown_083CAF70[]; +#ifdef GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); struct LearnMoveStruct -- cgit v1.2.3 From bf0f2e4a0ba447abf50340586045f3567ab7a9b8 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 13 Aug 2017 23:52:47 +0200 Subject: berry blender is decompiled --- asm-de/berry_blender.s | 28 +- asm/berry_blender.s | 861 --------------------- common_syms/berry_blender.txt | 4 + ld_script.txt | 1 - src/berry_blender.c | 1658 +++++++++++++++++++++++------------------ sym_bss.txt | 27 +- sym_common.txt | 15 +- sym_ewram.txt | 15 +- 8 files changed, 948 insertions(+), 1661 deletions(-) delete mode 100644 asm/berry_blender.s create mode 100644 common_syms/berry_blender.txt diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s index 7b23a2e64..16c6784b7 100644 --- a/asm-de/berry_blender.s +++ b/asm-de/berry_blender.s @@ -8276,7 +8276,7 @@ unref_sub_80524BC: @ 80524BC bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade - ldr r1, _08052528 @ =gUnknown_03000560 + ldr r1, _08052528 @ =sBlenderDebug movs r0, 0xFA lsls r0, 5 strh r0, [r1, 0x1A] @@ -8292,12 +8292,12 @@ unref_sub_80524BC: @ 80524BC _0805251C: .4byte sub_804E2D8 _08052520: .4byte gWindowConfig_81E6CE4 _08052524: .4byte gMain -_08052528: .4byte gUnknown_03000560 +_08052528: .4byte sBlenderDebug _0805252C: .4byte sub_8052AF8 thumb_func_end unref_sub_80524BC - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 + thumb_func_start BlenderDebug_PrintBerryData +BlenderDebug_PrintBerryData: @ 8052530 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -8311,7 +8311,7 @@ sub_8052530: @ 8052530 movs r1, 0x2 movs r2, 0 bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 + ldr r4, _080525CC @ =sBlenderDebug movs r1, 0x1A ldrsh r0, [r4, r1] movs r1, 0x64 @@ -8371,7 +8371,7 @@ _0805259E: b _080525F8 .align 2, 0 _080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 +_080525CC: .4byte sBlenderDebug _080525D0: .4byte gBerries _080525D4: .4byte gUnknown_082165F8 _080525D8: @@ -8591,7 +8591,7 @@ _080527A4: .align 2, 0 _080527B4: .4byte gPokeblockNames _080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 + thumb_func_end BlenderDebug_PrintBerryData thumb_func_start sub_80527BC sub_80527BC: @ 80527BC @@ -8764,7 +8764,7 @@ sub_8052918: @ 8052918 movs r0, 0x80 lsls r0, 1 ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 + ldr r4, _08052A8C @ =sBlenderDebug cmp r0, 0 beq _0805294C movs r1, 0xFA @@ -8874,7 +8874,7 @@ _080529E4: ands r0, r1 cmp r0, 0 beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 + ldr r3, _08052A8C @ =sBlenderDebug movs r1, 0 ldrsb r1, [r3, r1] adds r4, r3, 0x1 @@ -8903,7 +8903,7 @@ _08052A16: beq _08052AA0 movs r6, 0 movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 + ldr r5, _08052A8C @ =sBlenderDebug _08052A26: adds r0, r5, 0x1 adds r2, r4, r0 @@ -8954,7 +8954,7 @@ _08052A64: b _08052AA0 .align 2, 0 _08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 +_08052A8C: .4byte sBlenderDebug _08052A90: .4byte 0x75300000 _08052A94: .4byte 0xfffffc18 _08052A98: .4byte 0x00007530 @@ -8962,11 +8962,11 @@ _08052A9C: movs r0, 0xFF strb r0, [r5, 0x8] _08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 + ldr r4, _08052AE8 @ =sBlenderDebug ldrb r0, [r4, 0x10] cmp r0, 0 beq _08052AB0 - bl sub_8052530 + bl BlenderDebug_PrintBerryData movs r0, 0 strb r0, [r4, 0x10] _08052AB0: @@ -9000,7 +9000,7 @@ _08052AE0: pop {r0} bx r0 .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 +_08052AE8: .4byte sBlenderDebug _08052AEC: .4byte gMain _08052AF0: .4byte gUnknown_020297DC _08052AF4: .4byte gUnknown_020297E0 diff --git a/asm/berry_blender.s b/asm/berry_blender.s deleted file mode 100644 index c08172bab..000000000 --- a/asm/berry_blender.s +++ /dev/null @@ -1,861 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - - - - thumb_func_start sub_8052530 -sub_8052530: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =gUnknown_03000560 - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte gUnknown_03000560 -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end sub_8052530 - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =gUnknown_03000560 - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =gUnknown_03000560 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =gUnknown_03000560 -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl Blender_CopyBerryData - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte gUnknown_03000560 -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =gUnknown_03000560 - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl sub_8052530 - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte gUnknown_03000560 -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BBC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BC0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BC4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BC8 @ =0x0000096c - adds r6, r0, r1 - movs r0, 0 - mov r9, r0 -_08052B50: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - mov r1, r9 - strb r1, [r5] - movs r0, 0xAD - strb r0, [r5, 0x1] - strb r1, [r5, 0x2] - adds r5, 0x3 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BCC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B50 - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BBC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BC0: .4byte gMultiText_2P3P4P -_08052BC4: .4byte gSaveBlock1 -_08052BC8: .4byte 0x0000096c -_08052BCC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =sBerryBlenderData - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte sBerryBlenderData - thumb_func_end sub_8052BD0 diff --git a/common_syms/berry_blender.txt b/common_syms/berry_blender.txt new file mode 100644 index 000000000..fe9971569 --- /dev/null +++ b/common_syms/berry_blender.txt @@ -0,0 +1,4 @@ +gUnknown_03004830 +gUnknown_03004834 +gUnknown_03004840 +gBerryBlenderData \ No newline at end of file diff --git a/ld_script.txt b/ld_script.txt index b58196615..91da7c5bd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -85,7 +85,6 @@ SECTIONS { src/trade.o(.text.sub_804DAD4); asm/trade.o(.text.sub_804DB2C); src/berry_blender.o(.text); - asm/berry_blender.o(.text); src/play_time.o(.text); src/new_game.o(.text); src/rom4.o(.text); diff --git a/src/berry_blender.c b/src/berry_blender.c index 74b87b983..cbf50fdb3 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -47,17 +47,6 @@ struct MusicPlayerInfo u32 intp; }; -// other files functions -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); -void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); -void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); -void sub_80A6978(void); -u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); -void sub_814A880(u8 a1, u8 a2); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); -s8 sub_810CA00(void); -bool8 sub_810CA34(struct Pokeblock *pokeblock); - #define BLENDER_SCORE_BEST 0 #define BLENDER_SCORE_GOOD 1 #define BLENDER_SCORE_MISS 2 @@ -83,8 +72,6 @@ struct BerryBlenderData { u8 field_0; u8 field_1; - u8 field_2; - u8 field_3; struct Window field_4; u8 field_35; u8 field_36; @@ -158,75 +145,7 @@ struct BerryBlenderData u16 field_9A[BLENDER_MAX_PLAYERS]; u16 field_A2[BLENDER_MAX_PLAYERS]; u8 field_AA; - u8 stringVar[61]; - u8 field_E8; - u8 field_E9; - u8 field_EA; - u8 field_EB; - u8 field_EC; - u8 field_ED; - u8 field_EE; - u8 field_EF; - u8 field_F0; - u8 field_F1; - u8 field_F2; - u8 field_F3; - u8 field_F4; - u8 field_F5; - u8 field_F6; - u8 field_F7; - u8 field_F8; - u8 field_F9; - u8 field_FA; - u8 field_FB; - u8 field_FC; - u8 field_FD; - u8 field_FE; - u8 field_FF; - u8 field_100; - u8 field_101; - u8 field_102; - u8 field_103; - u8 field_104; - u8 field_105; - u8 field_106; - u8 field_107; - u8 field_108; - u8 field_109; - u8 field_10A; - u8 field_10B; - u8 field_10C; - u8 field_10D; - u8 field_10E; - u8 field_10F; - u8 field_110; - u8 field_111; - u8 field_112; - u8 field_113; - u8 field_114; - u8 field_115; - u8 field_116; - u8 field_117; - u8 field_118; - u8 field_119; - u8 field_11A; - u8 field_11B; - u8 field_11C; - u8 field_11D; - u8 field_11E; - u8 field_11F; - u8 field_120; - u8 field_121; - u8 field_122; - u8 field_123; - u8 field_124; - u8 field_125; - u8 field_126; - u8 field_127; - u8 field_128; - u8 field_129; - u8 field_12A; - u8 field_12B; + u8 stringVar[129]; u32 gameFrameTime; s32 framesToWait; u32 field_134; @@ -247,8 +166,6 @@ struct BerryBlenderData u8 playerPlaces[BLENDER_MAX_PLAYERS]; struct BgAffineDstData field_168; u16 field_178; - u8 field_17A; - u8 field_17B; struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; u32 field_1BC; u16 field_1C0; @@ -256,51 +173,150 @@ struct BerryBlenderData u32 field_1C4; }; -extern struct BerryBlenderData* sBerryBlenderData; +struct BlenderDebug +{ + s8 cursorPos; + s8 berries[4]; + struct Pokeblock pokeblock; + u8 field_10; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 feel; + s8 field_17; + s8 field_18; + s8 field_19; + s16 BPM; +}; + +// other files functions +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); +void sub_80A6978(void); +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); +void sub_814A880(u8 a1, u8 a2); +u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +s8 sub_810CA00(void); +bool8 sub_810CA34(struct Pokeblock *pokeblock); extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_BGM; extern u8 ewram[]; -extern s16 gUnknown_03000520[]; - -// this file's functions: -void sub_80514A4(void); -void sub_80514F0(void); -void sub_804E56C(void); -void sub_804E884(u8 a0); -void sub_8051474(void); -void sub_804E9F8(void); -void sub_804F378(void); -void sub_8051414(struct BgAffineDstData *dest); -void sub_804F238(void); -void sub_80501FC(void); -bool8 sub_8051B8C(void); +extern u16 gScriptItemId; +extern u8 gUnknown_020297ED; +extern u8 byte_3002A68; + +// rom data to do + +extern const u8 gUnknown_08E6C100[]; +extern const u8 gUnknown_08215C2C[]; +extern const u8 gUnknown_08E6C920[]; +extern const u8 gUnknown_08E6D354[]; +extern const u16 gUnknown_08215C0C[]; +extern const u16 gUnknown_0821602C[]; +extern const struct SpriteSheet gUnknown_082163DC; +extern const struct SpriteSheet gUnknown_082164F4; +extern const struct SpriteSheet gUnknown_08216454; +extern const struct SpriteSheet gUnknown_08216540; +extern const struct SpriteSheet gUnknown_08216574; +extern const struct SpritePalette gUnknown_082163EC; +extern const struct SpritePalette gUnknown_082163E4; +extern const struct WindowConfig gWindowConfig_81E6F68; +extern const u8 sBlenderSyncArrowsPos[][2]; +extern const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate; +extern const s16 gUnknown_08216594[][5]; +extern const u8* const gUnknown_082162B8[]; +extern const u8 gUnknown_082162EC[3][4]; +extern const u16 gUnknown_082162F8[]; +extern const u8 gUnknown_08216300[]; +extern const struct SpriteTemplate gSpriteTemplate_8216548; +extern const u8 gUnknown_08216303[]; +extern const u8 gUnknown_082165BC[][3]; +extern const u8 gUnknown_082162C4[]; +extern const u8 gUnknown_082162D4[][2]; +extern const TaskFunc gUnknown_08216308[]; +extern const s8 gUnknown_082162CC[][2]; +extern const struct SpriteTemplate gSpriteTemplate_821645C; +extern const u8 gUnknown_082165DA[]; +extern const u8 gUnknown_082165DF[]; +extern const struct SpriteTemplate gSpriteTemplate_82164FC; +extern const u8* const gUnknown_08216284[]; +extern const struct SpriteTemplate gSpriteTemplate_821657C; +extern const u8 gUnknown_082165E9[]; +extern const u8 gUnknown_082165EE[]; +extern const u8 gUnknown_08216249[]; +extern const u8 gUnknown_082162C8[]; +extern const u8 *const gPokeblockNames[]; +extern const u8 gUnknown_082165F3[]; +extern const u8 gOtherText_BPMAndDash[]; +extern const u8 gUnknown_082165F8[]; +extern const u8 gUnknown_08216600[]; +extern const struct Berry gBerries[]; + +// ewram +static EWRAM_DATA u8 gUnknown_020297DC = 0; +static EWRAM_DATA u32 gUnknown_020297E0 = 0; +static EWRAM_DATA u32 gUnknown_020297E4 = 0; +static EWRAM_DATA u8 gUnknown_020297E8 = 0; + +// iwram common +u16 gUnknown_03004830; +u8 gUnknown_03004834; +u16 gUnknown_03004840[10]; +struct BerryBlenderData* gBerryBlenderData; + +// iwram bss +IWRAM_DATA s16 gUnknown_03000510[8]; +IWRAM_DATA s16 gUnknown_03000520[6]; +IWRAM_DATA s16 gUnknown_0300052C; +IWRAM_DATA s16 gUnknown_0300052E; +IWRAM_DATA s32 gUnknown_03000530[6]; +IWRAM_DATA s32 gUnknown_03000548[5]; +IWRAM_DATA u32 gUnknown_0300055C; +IWRAM_DATA struct BlenderDebug sBlenderDebug; + +// this file's functions void Blender_SetBankBerryData(u8 bank, u16 itemID); -void sub_804F2A8(void); -void sub_804F81C(void); -void sub_805156C(void); + +static void sub_80514A4(void); +static void sub_80514F0(void); +static void sub_804E56C(void); +static void sub_804E884(u8 a0); +static void sub_8051474(void); +static void sub_804E9F8(void); +static void sub_804F378(void); +static void sub_8051414(struct BgAffineDstData *dest); +static void sub_804F238(void); +static void sub_80501FC(void); +static bool8 sub_8051B8C(void); +static void sub_804F2A8(void); +static void sub_804F81C(void); +static void sub_805156C(void); void sub_8051684(struct Sprite* sprite); -void sub_8051AC8(s16* a0, u16 a1); -void sub_805194C(u16 a0, u16 a1); -void sub_8051A3C(u16 a0); -void sub_8051B18(void); -void sub_805123C(void); -void sub_8050954(void); -bool8 Blender_PrintBlendingRanking(void); -bool8 Blender_PrintBlendingResults(void); -void sub_80510E8(void); -void sub_8050E30(void); -void sub_805197C(u16 a0, u16 a1); -void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); -void sub_8052BD0(u8 taskID); -void sub_8052AF8(void); +static void sub_8051AC8(s16* a0, u16 a1); +static void sub_805194C(u16 a0, u16 a1); +static void sub_8051A3C(u16 a0); +static void sub_8051B18(void); +static void sub_805123C(void); +static void sub_8050954(void); +static bool8 Blender_PrintBlendingRanking(void); +static bool8 Blender_PrintBlendingResults(void); +static void sub_80510E8(void); +static void sub_8050E30(void); +static void sub_805197C(u16 a0, u16 a1); +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +static void sub_8052BD0(u8 taskID); +static void sub_8052AF8(void); -void Blender_ControlHitPitch(void) +static void Blender_ControlHitPitch(void) { - m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (sBerryBlenderData->field_56 - 128) * 2); + m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2); } -void VBlankCB0_BerryBlender(void) +static void VBlankCB0_BerryBlender(void) { sub_80514A4(); sub_80514F0(); @@ -309,34 +325,20 @@ void VBlankCB0_BerryBlender(void) TransferPlttBuffer(); } -void VBlankCB1_BerryBlender(void) +static void VBlankCB1_BerryBlender(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -extern const u8 gUnknown_08E6C100[]; -extern const u8 gUnknown_08215C2C[]; -extern const u8 gUnknown_08E6C920[]; -extern const u8 gUnknown_08E6D354[]; -extern const u16 gUnknown_08215C0C[]; -extern const u16 gUnknown_0821602C[]; -extern const struct SpriteSheet gUnknown_082163DC; -extern const struct SpriteSheet gUnknown_082164F4; -extern const struct SpriteSheet gUnknown_08216454; -extern const struct SpriteSheet gUnknown_08216540; -extern const struct SpriteSheet gUnknown_08216574; -extern const struct SpritePalette gUnknown_082163EC; -extern const struct SpritePalette gUnknown_082163E4; - -bool8 sub_804E2EC(void) +static bool8 sub_804E2EC(void) { - switch (sBerryBlenderData->field_1) + switch (gBerryBlenderData->field_1) { case 0: sub_800D238(gUnknown_08E6C100, &ewram[0x10000]); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; break; case 1: { @@ -345,7 +347,7 @@ bool8 sub_804E2EC(void) DmaCopy16(3, offsetRead, offsetWrite, 0x400); LoadPalette(gUnknown_08215C0C, 0, 0x100); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; } break; case 2: @@ -365,16 +367,16 @@ bool8 sub_804E2EC(void) break; } } - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; } break; case 3: sub_800D238(gUnknown_08E6C920, &ewram[0x10000]); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; break; case 4: sub_800D238(gUnknown_08E6D354, &ewram[0x13000]); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; break; case 5: { @@ -382,7 +384,7 @@ bool8 sub_804E2EC(void) void* offsetWrite = (void*)(VRAM + 0xE000); DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; } break; case 6: @@ -391,7 +393,7 @@ bool8 sub_804E2EC(void) void* offsetWrite = (void*)(VRAM + 0xF000); DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; } break; case 7: @@ -409,27 +411,27 @@ bool8 sub_804E2EC(void) offsetWrite = (void*)(VRAM + 0x6000); DmaCopy16(3, offsetRead, offsetWrite, 0x500); LoadPalette(gUnknown_0821602C, 0x80, 0x20); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; } break; case 8: LoadSpriteSheet(&gUnknown_082163DC); LoadSpriteSheet(&gUnknown_082164F4); LoadSpriteSheet(&gUnknown_08216454); - sBerryBlenderData->field_1++; + gBerryBlenderData->field_1++; break; case 9: LoadSpriteSheet(&gUnknown_08216540); LoadSpriteSheet(&gUnknown_08216574); LoadSpritePalette(&gUnknown_082163EC); LoadSpritePalette(&gUnknown_082163E4); - sBerryBlenderData->field_1 = 0; + gBerryBlenderData->field_1 = 0; return 1; } return 0; } -void sub_804E4FC(void) +static void sub_804E4FC(void) { REG_DISPCNT = 0x1341; REG_BG2CNT = 0x4880; @@ -444,24 +446,20 @@ void sub_804E538(void) { u8* field6F; //this temp value is needed to match - sBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); - field6F = &sBerryBlenderData->field_6F; - sBerryBlenderData->field_0 = 0; + field6F = &gBerryBlenderData->field_6F; + gBerryBlenderData->field_0 = 0; *field6F = 0; sub_804E884(gSpecialVar_0x8004); SetMainCallback2(sub_804E56C); } -extern const struct WindowConfig gWindowConfig_81E6F68; -extern const u8 sBlenderSyncArrowsPos[][2]; -extern const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate; - -void sub_804E56C(void) +static void sub_804E56C(void) { s32 i; - switch (sBerryBlenderData->field_0) + switch (gBerryBlenderData->field_0) { case 0: REG_DISPCNT = 0; @@ -470,13 +468,13 @@ void sub_804E56C(void) SetVBlankCallback(NULL); SetUpWindowConfig(&gWindowConfig_81E6F68); InitMenuWindow(&gWindowConfig_81E6F68); - sBerryBlenderData->field_0++; - sBerryBlenderData->field_140 = 0; - sBerryBlenderData->field_13E = 0; - sBerryBlenderData->field_142 = 0x50; - sBerryBlenderData->field_144 = 0; - sBerryBlenderData->field_146 = 0; - sBerryBlenderData->field_1 = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_140 = 0; + gBerryBlenderData->field_13E = 0; + gBerryBlenderData->field_142 = 0x50; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_1 = 0; sub_8051474(); break; case 1: @@ -484,34 +482,34 @@ void sub_804E56C(void) { for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[i]], i + 8); + gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8); } SetVBlankCallback(VBlankCB0_BerryBlender); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 2: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8051474(); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 3: sub_804E4FC(); if (!gPaletteFade.active) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 4: MenuDrawTextWindow(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 5: if (MenuUpdateWindowText()) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); } break; @@ -519,7 +517,7 @@ void sub_804E56C(void) if (!gPaletteFade.active) { sub_80A6978(); - sBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_0 = 0; } break; } @@ -561,15 +559,13 @@ void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) sprite->callback = sub_804E738; } -extern const s16 gUnknown_08216594[][5]; - -void sub_804E7C0(u16 a0, u8 a1) +static void sub_804E7C0(u16 a0, u8 a1) { u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1); sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]); } -void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) +static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) { const struct Berry *berryInfo = GetBerryInfo(itemID + 124); berry->itemID = itemID; @@ -582,10 +578,7 @@ void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) berry->smoothness = berryInfo->smoothness; } -extern u8 gUnknown_03004834; -extern const u8* const gUnknown_082162B8[]; - -void sub_804E884(u8 a0) +static void sub_804E884(u8 a0) { int i; if (a0) @@ -600,20 +593,20 @@ void sub_804E884(u8 a0) break; case 1: gUnknown_03004834 = 1; - sBerryBlenderData->playersNo = 2; + gBerryBlenderData->playersNo = 2; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); break; case 2: gUnknown_03004834 = 2; - sBerryBlenderData->playersNo = 3; + gBerryBlenderData->playersNo = 3; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); break; case 3: gUnknown_03004834 = 3; - sBerryBlenderData->playersNo = 4; + gBerryBlenderData->playersNo = 4; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); @@ -627,12 +620,12 @@ void sub_804E990(void) s32 i; REG_DISPCNT = 0; - sBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); - sBerryBlenderData->field_0 = 0; - sBerryBlenderData->field_134 = 0; + gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]); + gBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_134 = 0; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->chosenItemID[i] = 0; + gBerryBlenderData->chosenItemID[i] = 0; } sub_804E884(gSpecialVar_0x8004); if (gSpecialVar_0x8004 == 0) @@ -641,17 +634,10 @@ void sub_804E990(void) SetMainCallback2(sub_804F378); } -extern u16 gScriptItemId; - -extern const u8 gUnknown_082162EC[3][4]; -extern const u16 gUnknown_082162F8[]; -extern const u8 gUnknown_08216300[]; -extern const struct SpriteTemplate gSpriteTemplate_8216548; - -void sub_804E9F8(void) +static void sub_804E9F8(void) { int i, j; - switch (sBerryBlenderData->field_0) + switch (gBerryBlenderData->field_0) { case 0: ResetSpriteData(); @@ -661,64 +647,64 @@ void sub_804E9F8(void) SetUpWindowConfig(&gWindowConfig_81E6F68); InitMenuWindow(&gWindowConfig_81E6F68); gLinkType = 0x4422; - sBerryBlenderData->field_0++; - sBerryBlenderData->field_4E = 0; - sBerryBlenderData->field_7E = 0; - sBerryBlenderData->field_144 = 0; - sBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_7E = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_70[i] = 0; + gBerryBlenderData->field_70[i] = 0; for (j = 0; j < 3; j++) { - sBerryBlenderData->scores[i][j] = 0; + gBerryBlenderData->scores[i][j] = 0; } } - sBerryBlenderData->field_7C = 0; - sBerryBlenderData->field_56 = 0; - sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->max_RPM = 0; - sBerryBlenderData->field_1 = 0; + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_1 = 0; break; case 1: if (sub_804E2EC()) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; sub_8051474(); } break; case 2: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); } - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 3: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 4: sub_804E4FC(); if (!gPaletteFade.active) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 5: MenuDrawTextWindow(0, 13, 29, 19); MenuPrint(gOtherText_LinkStandby3, 1, 14); - sBerryBlenderData->field_0 = 8; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0 = 8; + gBerryBlenderData->framesToWait = 0; break; case 8: - sBerryBlenderData->field_0++; - sBerryBlenderData->field_13C = 0; - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); - memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C = 0; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); sub_80084A4(); - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->framesToWait = 0; break; case 9: if (sub_8007ECC()) @@ -726,119 +712,119 @@ void sub_804E9F8(void) ResetBlockReceivedFlags(); if (GetMultiplayerId() == 0) sub_8007E9C(4); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 10: - if (++sBerryBlenderData->framesToWait > 20) + if (++gBerryBlenderData->framesToWait > 20) { MenuZeroFillScreen(); if (GetBlockReceivedStatus() == sub_8008198()) { for (i = 0; i < GetLinkPlayerCount(); i++) { - memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); - sBerryBlenderData->chosenItemID[i] = sBerryBlenderData->blendedBerries[i].itemID; + memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID; } ResetBlockReceivedFlags(); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } } break; case 11: - sBerryBlenderData->playersNo = GetLinkPlayerCount(); + gBerryBlenderData->playersNo = GetLinkPlayerCount(); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_13C == gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]) + if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]) { - sub_804E7C0(sBerryBlenderData->chosenItemID[sBerryBlenderData->field_13C], i); + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); break; } } - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; - sBerryBlenderData->field_13C++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; break; case 12: - if (++sBerryBlenderData->framesToWait > 60) + if (++gBerryBlenderData->framesToWait > 60) { - if (sBerryBlenderData->field_13C >= sBerryBlenderData->playersNo) + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) { - sBerryBlenderData->field_0++; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]] - 22528; + gBerryBlenderData->field_0++; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; } else - sBerryBlenderData->field_0--; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; } break; case 13: if (sub_8007ECC()) { - sBerryBlenderData->field_0++; - sub_8051414(&sBerryBlenderData->field_168); + gBerryBlenderData->field_0++; + sub_8051414(&gBerryBlenderData->field_168); } break; case 14: REG_DISPCNT |= 0x400; - sBerryBlenderData->arrowPos += 0x200; - sBerryBlenderData->field_142 += 4; - if (sBerryBlenderData->field_142 > 255) + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) { - sBerryBlenderData->field_0++; - sBerryBlenderData->field_142 = 256; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]]; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; REG_BG2CNT = 0x4882; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->framesToWait = 0; sub_804F238(); sub_804F2A8(); } - sub_8051414(&sBerryBlenderData->field_168); + sub_8051414(&gBerryBlenderData->field_168); break; case 15: if (sub_8051B8C()) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } - sub_8051414(&sBerryBlenderData->field_168); + sub_8051414(&gBerryBlenderData->field_168); break; case 16: CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 18: - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 19: sub_80084A4(); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 20: if (sub_8007ECC()) { sub_8007E24(); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 21: - sBerryBlenderData->field_56 = 128; - sBerryBlenderData->gameFrameTime = 0; + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; SetMainCallback2(sub_80501FC); if (GetCurrentMapMusic() != 403) { - sBerryBlenderData->field_178 = GetCurrentMapMusic(); + gBerryBlenderData->field_178 = GetCurrentMapMusic(); } PlayBGM(403); break; case 100: MenuDrawTextWindow(0, 13, 29, 19); MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 101: if (MenuUpdateWindowText()) - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 102: if (!gPaletteFade.active) @@ -851,7 +837,7 @@ void sub_804E9F8(void) UpdatePaletteFade(); } -void sub_804F0F4(void) +static void sub_804F0F4(void) { REG_DISPCNT = 0; @@ -866,21 +852,19 @@ void sub_804F0F4(void) gLinkType = 0x4422; - sBerryBlenderData->field_4E = 0; - sBerryBlenderData->field_56 = 0; - sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->max_RPM = 0; - sBerryBlenderData->field_144 = 0; - sBerryBlenderData->field_146 = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->field_4E = 0; + gBerryBlenderData->field_56 = 0; + gBerryBlenderData->arrowPos = 0; + gBerryBlenderData->max_RPM = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_0++; } -extern const u8 gUnknown_08216303[]; - -u8 sub_804F16C(u16 arrowPos, u8 a1) +static u8 sub_804F16C(u16 arrowPos, u8 a1) { u32 var1 = (arrowPos / 256) + 24; - u8 arrID = sBerryBlenderData->field_A2[a1]; + u8 arrID = gBerryBlenderData->field_A2[a1]; u32 var2 = gUnknown_08216303[arrID]; if (var1 >= var2 && var1 < var2 + 48) @@ -894,9 +878,7 @@ u8 sub_804F16C(u16 arrowPos, u8 a1) return 0; } -extern const u8 gUnknown_082165BC[][3]; - -void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) +static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) { u16 r4 = 0; u16 i; @@ -921,184 +903,179 @@ void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry) } } -void sub_804F238(void) +static void sub_804F238(void) { s32 i, j; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_A2[i] = 0xFF; - sBerryBlenderData->field_9A[i] = gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]; + gBerryBlenderData->field_A2[i] = 0xFF; + gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; } for (j = 0; j < BLENDER_MAX_PLAYERS; j++) { for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_9A[i] == j) - sBerryBlenderData->field_A2[j] = i; + if (gBerryBlenderData->field_9A[i] == j) + gBerryBlenderData->field_A2[j] = i; } } } -extern const u8 gUnknown_082162C4[]; -extern const u8 gUnknown_082162D4[][2]; - -void sub_804F2A8(void) +static void sub_804F2A8(void) { int i; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_9A[i] != 0xFF) + if (gBerryBlenderData->field_9A[i] != 0xFF) { u8* stringPtr = gStringVar1; - sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[i]] = sBerryBlenderData->SyncArrowSprite2ID[i]; - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[i]]], i); - if (GetMultiplayerId() == sBerryBlenderData->field_9A[i]) + gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i]; + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i); + if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) stringPtr = StringCopy(stringPtr, gUnknown_082162C4); - StringCopy(stringPtr, gLinkPlayers[sBerryBlenderData->field_9A[i]].name); + StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); } } } -extern const TaskFunc gUnknown_08216308[]; - -void sub_804F378(void) +static void sub_804F378(void) { s32 i, j; - switch (sBerryBlenderData->field_0) + switch (gBerryBlenderData->field_0) { case 0: sub_804F0F4(); Blender_SetBankBerryData(0, gScriptItemId); - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gScriptItemId); - sub_804F1BC(gScriptItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_70[i] = 0; + gBerryBlenderData->field_70[i] = 0; for (j = 0; j < 3; j++) { - sBerryBlenderData->scores[i][j] = 0; + gBerryBlenderData->scores[i][j] = 0; } } - sBerryBlenderData->field_7C = 0; - sBerryBlenderData->field_1 = 0; + gBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_1 = 0; break; case 1: if (sub_804E2EC()) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; sub_8051474(); } break; case 2: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); + gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8); } - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 3: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - sBerryBlenderData->field_0++; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; break; case 4: - if (++sBerryBlenderData->framesToWait == 2) + if (++gBerryBlenderData->framesToWait == 2) sub_804E4FC(); if (!gPaletteFade.active) - sBerryBlenderData->field_0 = 8; + gBerryBlenderData->field_0 = 8; break; case 8: - sBerryBlenderData->field_0 = 11; - sBerryBlenderData->field_13C = 0; + gBerryBlenderData->field_0 = 11; + gBerryBlenderData->field_13C = 0; break; case 11: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - u32 var = gUnknown_082162EC[sBerryBlenderData->playersNo - 2][i]; - if (sBerryBlenderData->field_13C == var) + u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i]; + if (gBerryBlenderData->field_13C == var) { - sub_804E7C0(sBerryBlenderData->chosenItemID[sBerryBlenderData->field_13C], i); + sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i); break; } } - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; - sBerryBlenderData->field_13C++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_13C++; break; case 12: - if (++sBerryBlenderData->framesToWait > 60) + if (++gBerryBlenderData->framesToWait > 60) { - if (sBerryBlenderData->field_13C >= sBerryBlenderData->playersNo) + if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo) { - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]] - 22528; - sBerryBlenderData->field_0++; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528; + gBerryBlenderData->field_0++; } else - sBerryBlenderData->field_0--; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0--; + gBerryBlenderData->framesToWait = 0; } break; case 13: - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; sub_804F238(); PlaySE(43); - sub_8051414(&sBerryBlenderData->field_168); + sub_8051414(&gBerryBlenderData->field_168); break; case 14: REG_DISPCNT |= 0x400; - sBerryBlenderData->arrowPos += 0x200; - sBerryBlenderData->field_142 += 4; - if (sBerryBlenderData->field_142 > 255) + gBerryBlenderData->arrowPos += 0x200; + gBerryBlenderData->field_142 += 4; + if (gBerryBlenderData->field_142 > 255) { - sBerryBlenderData->field_0++; - sBerryBlenderData->field_142 = 256; - sBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[sBerryBlenderData->playersNo - 2]]; + gBerryBlenderData->field_0++; + gBerryBlenderData->field_142 = 256; + gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; REG_BG2CNT = 0x4882; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->framesToWait = 0; PlaySE(52); sub_804F2A8(); } - sub_8051414(&sBerryBlenderData->field_168); + sub_8051414(&gBerryBlenderData->field_168); break; case 15: if (sub_8051B8C()) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } - sub_8051414(&sBerryBlenderData->field_168); + sub_8051414(&gBerryBlenderData->field_168); break; case 16: CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 18: - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 19: - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 20: - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 21: sub_804F81C(); - sBerryBlenderData->field_56 = 128; - sBerryBlenderData->gameFrameTime = 0; - sBerryBlenderData->field_14B = 0; - sBerryBlenderData->field_7E = 0; + gBerryBlenderData->field_56 = 128; + gBerryBlenderData->gameFrameTime = 0; + gBerryBlenderData->field_14B = 0; + gBerryBlenderData->field_7E = 0; SetMainCallback2(sub_80501FC); for (i = 0; i < gSpecialVar_0x8004; i++) { - sBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); + gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i); } if (GetCurrentMapMusic() != 403) { - sBerryBlenderData->field_178 = GetCurrentMapMusic(); + gBerryBlenderData->field_178 = GetCurrentMapMusic(); } PlayBGM(403); PlaySE(53); @@ -1111,7 +1088,7 @@ void sub_804F378(void) UpdatePaletteFade(); } -void sub_804F81C(void) +static void sub_804F81C(void) { s32 i; for (i = 0; i < 4; i++) @@ -1123,7 +1100,7 @@ void sub_804F81C(void) } } -void sub_804F844(u8 taskID) +static void sub_804F844(u8 taskID) { if(++gTasks[taskID].data[0] > gTasks[taskID].data[1]) { @@ -1132,7 +1109,7 @@ void sub_804F844(u8 taskID) } } -void sub_804F890(u8 a0, u8 a1) +static void sub_804F890(u8 a0, u8 a1) { u8 taskID = CreateTask(sub_804F844, 80); gTasks[taskID].data[1] = a1; @@ -1141,14 +1118,14 @@ void sub_804F890(u8 a0, u8 a1) void sub_804F8C8(u8 taskID) { - if (sub_804F16C(sBerryBlenderData->arrowPos, 1) == 2) + if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2) { if (gTasks[taskID].data[0] == 0) { - if (sBerryBlenderData->field_14B == 0) + if (gBerryBlenderData->field_14B == 0) { u8 rand = Random() / 655; - if (sBerryBlenderData->field_56 < 500) + if (gBerryBlenderData->field_56 < 500) { if (rand > 75) gRecvCmds[2][1] = 0x4523; @@ -1156,7 +1133,7 @@ void sub_804F8C8(u8 taskID) gRecvCmds[2][1] = 0x5432; gRecvCmds[2][1] = 0x5432; // ??? } - else if (sBerryBlenderData->field_56 < 1500) + else if (gBerryBlenderData->field_56 < 1500) { if (rand > 80) gRecvCmds[2][1] = 0x4523; @@ -1192,16 +1169,16 @@ void sub_804F8C8(u8 taskID) void sub_804F9F4(u8 taskID) { - u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; - u32 var2 = sBerryBlenderData->field_A2[2] & 0xFF; + u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF; if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) { if (gTasks[taskID].data[0] == 0) { - if (sBerryBlenderData->field_14B == 0) + if (gBerryBlenderData->field_14B == 0) { u8 rand = Random() / 655; - if (sBerryBlenderData->field_56 < 500) + if (gBerryBlenderData->field_56 < 500) { if (rand > 66) gRecvCmds[2][2] = 0x4523; @@ -1237,16 +1214,16 @@ void sub_804FB1C(u8 taskID) { u32 var1, var2; - var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; - var2 = sBerryBlenderData->field_A2[3] & 0xFF; + var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; + var2 = gBerryBlenderData->field_A2[3] & 0xFF; if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40) { if (gTasks[taskID].data[0] == 0) { - if (sBerryBlenderData->field_14B == 0) + if (gBerryBlenderData->field_14B == 0) { u8 rand = (Random() / 655); - if (sBerryBlenderData->field_56 < 500) + if (gBerryBlenderData->field_56 < 500) { if (rand > 88) gRecvCmds[2][3] = 0x4523; @@ -1280,10 +1257,7 @@ void sub_804FB1C(u8 taskID) gTasks[taskID].data[0] = 0; } -extern const s8 gUnknown_082162CC[][2]; -extern const struct SpriteTemplate gSpriteTemplate_821645C; - -void sub_804FC48(u16 a0, u8 a1) +static void sub_804FC48(u16 a0, u8 a1) { u8 spriteID; @@ -1310,36 +1284,34 @@ void sub_804FC48(u16 a0, u8 a1) sub_805156C(); } -extern const u8 gUnknown_082165DA[]; - -void sub_804FD30(u16 a0) +static void sub_804FD30(u16 a0) { Blender_ControlHitPitch(); switch (a0) { case 0x4523: - if (sBerryBlenderData->field_56 < 1500) - sBerryBlenderData->field_56 += (384 / gUnknown_082165DA[sBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]); else { - sBerryBlenderData->field_56 += (128 / gUnknown_082165DA[sBerryBlenderData->playersNo]); - sub_8051AC8(&sBerryBlenderData->field_144, (sBerryBlenderData->field_56 / 100) - 10); - sub_8051AC8(&sBerryBlenderData->field_146, (sBerryBlenderData->field_56 / 100) - 10); + gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10); + sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10); } break; case 0x5432: - if (sBerryBlenderData->field_56 < 1500) - sBerryBlenderData->field_56 += (256 / gUnknown_082165DA[sBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 1500) + gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); break; case 0x2345: - sBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[sBerryBlenderData->playersNo]); - if (sBerryBlenderData->field_56 < 128) - sBerryBlenderData->field_56 = 128; + gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]); + if (gBerryBlenderData->field_56 < 128) + gBerryBlenderData->field_56 = 128; break; } } -void sub_804FE70(void) +static void sub_804FE70(void) { s32 i; @@ -1357,40 +1329,40 @@ void sub_804FE70(void) gRecvCmds[0][i] = 0x4444; } } - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) { if (gRecvCmds[0][i] == 0x4444) { - u32 var = sBerryBlenderData->field_A2[i]; + u32 var = gBerryBlenderData->field_A2[i]; if (gRecvCmds[2][i] == 0x4523) { sub_804FD30(0x4523); - sBerryBlenderData->field_13E += (sBerryBlenderData->field_56 / 55); - if (sBerryBlenderData->field_13E >= 1000) - sBerryBlenderData->field_13E = 1000; + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55); + if (gBerryBlenderData->field_13E >= 1000) + gBerryBlenderData->field_13E = 1000; sub_804FC48(0x4523, var); - sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; } else if (gRecvCmds[2][i] == 0x5432) { sub_804FD30(0x5432); - sBerryBlenderData->field_13E += (sBerryBlenderData->field_56 / 70); + gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70); sub_804FC48(0x5432, var); - sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; } else if (gRecvCmds[2][i] == 0x2345) { sub_804FC48(0x2345, var); sub_804FD30(0x2345); - if (sBerryBlenderData->field_4.win_field_F > 1000) - sBerryBlenderData->field_13E = 1000; - if (sBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + if (gBerryBlenderData->field_4.win_field_F > 1000) + gBerryBlenderData->field_13E = 1000; + if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) + gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; } if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) { - if (sBerryBlenderData->field_56 > 1500) - m4aMPlayTempoControl(&gMPlay_BGM, ((sBerryBlenderData->field_56 - 750) / 20) + 256); + if (gBerryBlenderData->field_56 > 1500) + m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256); else m4aMPlayTempoControl(&gMPlay_BGM, 256); } @@ -1398,7 +1370,7 @@ void sub_804FE70(void) } if (gSpecialVar_0x8004 != 0) { - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) { gRecvCmds[0][i] = 0; gRecvCmds[2][i] = 0; @@ -1406,13 +1378,11 @@ void sub_804FE70(void) } } -extern u8 gUnknown_020297ED; - -void sub_80500A8(void) +static void sub_80500A8(void) { bool8 A_pressed = 0; - u8 var2 = sBerryBlenderData->field_A2[GetMultiplayerId()]; - if (sBerryBlenderData->field_6F == 0) + u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()]; + if (gBerryBlenderData->field_6F == 0) { if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)); @@ -1421,8 +1391,8 @@ void sub_80500A8(void) if (A_pressed) { u8 var3; - StartSpriteAnim(&gSprites[sBerryBlenderData->SyncArrowSpriteID[sBerryBlenderData->field_9A[var2]]], var2 + 4); - var3 = sub_804F16C(sBerryBlenderData->arrowPos, GetMultiplayerId()); + StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4); + var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId()); if (var3 == 2) gSendCmd[2] = 0x4523; else if (var3 == 1) @@ -1431,32 +1401,32 @@ void sub_80500A8(void) gSendCmd[2] = 0x2345; } } - if (++sBerryBlenderData->field_7E > 5) + if (++gBerryBlenderData->field_7E > 5) { - if (sBerryBlenderData->field_56 > 128) - sBerryBlenderData->field_56--; - sBerryBlenderData->field_7E = 0; + if (gBerryBlenderData->field_56 > 128) + gBerryBlenderData->field_56--; + gBerryBlenderData->field_7E = 0; } if (gUnknown_020297ED && gMain.newKeys & L_BUTTON) - sBerryBlenderData->field_14B ^= 1; + gBerryBlenderData->field_14B ^= 1; } -void sub_80501FC(void) +static void sub_80501FC(void) { sub_8051474(); - if (sBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits - sBerryBlenderData->gameFrameTime++; + if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + gBerryBlenderData->gameFrameTime++; sub_80500A8(); - SetLinkDebugValues((u16)(sBerryBlenderData->field_56), sBerryBlenderData->field_13E); + SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E); sub_804FE70(); - sub_805194C(sBerryBlenderData->field_13E, 1000); - sub_8051A3C(sBerryBlenderData->field_56); + sub_805194C(gBerryBlenderData->field_13E, 1000); + sub_8051A3C(gBerryBlenderData->field_56); sub_8051B18(); sub_805123C(); - if (sBerryBlenderData->field_6F == 0 && sBerryBlenderData->field_140 >= 1000) + if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000) { - sBerryBlenderData->field_13E = 1000; - sBerryBlenderData->field_6F = 1; + gBerryBlenderData->field_13E = 1000; + gBerryBlenderData->field_6F = 1; SetMainCallback2(sub_8050954); } RunTasks(); @@ -1467,7 +1437,7 @@ void sub_80501FC(void) #define ARE_FLAVOURS_SAME(flavours1, flavours2)(((*(u32*)(&flavours1[-1]) & 0xFFFFFF00) == (*(u32*)(&flavours2[-1]) & 0xFFFFFF00)&& (*(u32*)(&flavours1[3]) & 0xFFFFFF) == (*(u32*)(&flavours2[3]) & 0xFFFFFF))) -bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) +static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) { if (berries[index1].itemID != berries[index2].itemID || (StringCompare(berries[index1].name, berries[index2].name) == 0 @@ -1479,7 +1449,7 @@ bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) #undef ARE_FLAVOURS_SAME -u32 sub_80502F8(struct BlenderBerry* berries, s16* a1, u8 a2, u8 a3) +u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) { s16 vars[5]; s32 i; @@ -1496,9 +1466,9 @@ u32 sub_80502F8(struct BlenderBerry* berries, s16* a1, u8 a2, u8 a3) } if (r6 == 5 || a3 > 3) return 12; - for (i = 0; i < a2; i++) + for (i = 0; i < playersNo; i++) { - for (r6 = 0; r6 < a2; r6++) + for (r6 = 0; r6 < playersNo; r6++) { if (berries[i].itemID == berries[r6].itemID && i != r6 && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6))) @@ -1568,10 +1538,7 @@ u32 sub_80502F8(struct BlenderBerry* berries, s16* a1, u8 a2, u8 a3) return 0; } -extern s16 gUnknown_0300052C; -extern s16 gUnknown_0300052E; - -void sub_80504F0(s16 value) +static void sub_80504F0(s16 value) { gUnknown_0300052C = value; } @@ -1581,7 +1548,7 @@ s16 unref_sub_80504FC(void) return gUnknown_0300052C; } -void sub_8050508(s16 value) +static void sub_8050508(s16 value) { gUnknown_0300052E = value; } @@ -1591,29 +1558,22 @@ s16 unref_sub_8050514(void) return gUnknown_0300052E; } -extern s16 gUnknown_03000510[6]; -extern s32 gUnknown_03000530[]; -extern s32 gUnknown_03000548[]; -extern u32 gUnknown_0300055C; - -extern const u8 gUnknown_082165DF[]; - #ifdef NONMATCHING -void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM) { s32 i; s32 j; s32 savedEntry; s32 var3; s32 var4; - s32 var6; + u32 var6; s32 var11; u16 rand; for (i = 0; i < 6; i++) gUnknown_03000510[i] = 0; - for (i = 0; i < a2; i++) + for (i = 0; i < playersNo; i++) { for (j = 0; j < 5; j++) gUnknown_03000510[j] += berries[i].flavours[j]; @@ -1650,7 +1610,7 @@ void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a gUnknown_03000530[i] = gUnknown_03000510[i]; } - var11 = a4 / 333 + 100; + var11 = maxRPM / 333 + 100; gUnknown_0300055C = ((var11)); for (i = 0; i < 5; i++) @@ -1667,11 +1627,11 @@ void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a { gUnknown_03000548[i] = gUnknown_03000510[i]; } - *a1 = sub_80502F8(berries, &gUnknown_03000510[0], a2, var6); - gUnknown_03000510[5] = (gUnknown_03000510[5] / a2) - a2; + pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6); + gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo; if (gUnknown_03000510[5] < 0) gUnknown_03000510[5] = 0; - if (*a1 == 12) + if (pokeblock->color == 12) { rand = Random() % 10; for (i = 0; i < 6; i++) @@ -1687,21 +1647,21 @@ void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a if (gUnknown_03000510[i] > 255) gUnknown_03000510[i] = 255; } - a1[1] = gUnknown_03000510[0]; - a1[2] = gUnknown_03000510[1]; - a1[3] = gUnknown_03000510[2]; - a1[4] = gUnknown_03000510[3]; - a1[5] = gUnknown_03000510[4]; - a1[6] = gUnknown_03000510[5]; + pokeblock->spicy = gUnknown_03000510[0]; + pokeblock->dry = gUnknown_03000510[1]; + pokeblock->sweet = gUnknown_03000510[2]; + pokeblock->bitter = gUnknown_03000510[3]; + pokeblock->sour = gUnknown_03000510[4]; + pokeblock->feel = gUnknown_03000510[5]; for (i = 0; i < 6; i++) { - a3[i] = gUnknown_03000510[i]; + flavours[i] = gUnknown_03000510[i]; } } #else __attribute__((naked)) -void sub_8050520(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1878,7 +1838,7 @@ _08050652:\n\ adds r1, r4, 0\n\ mov r2, r9\n\ mov r3, r10\n\ - bl sub_80502F8\n\ + bl Blender_GetPokeblockColor\n\ mov r5, r8\n\ strb r0, [r5]\n\ movs r1, 0xA\n\ @@ -1989,15 +1949,15 @@ _08050740: .4byte gUnknown_03000510\n\ #endif // NONMATCHING -void sub_8050744(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* a3, u16 a4) +static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) { - sub_8050520(berries, pokeblock, a2, a3, a4); // what is the purpose of this function? + Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); } -void sub_8050760(void) +static void sub_8050760(void) { - u32 frames = (u16)(sBerryBlenderData->gameFrameTime); - u32 max_RPM = (u16)(sBerryBlenderData->max_RPM); + u32 frames = (u16)(gBerryBlenderData->gameFrameTime); + u32 max_RPM = (u16)(gBerryBlenderData->max_RPM); s16 var = 0; if (frames < 900) @@ -2039,77 +1999,77 @@ void sub_8050760(void) sub_80504F0(var); } -void sub_80508D4(u8 value) +static void sub_80508D4(u8 value) { - sBerryBlenderData->field_AA = value; - sub_814A880(192, (sBerryBlenderData->field_AA * 16) + 72); + gBerryBlenderData->field_AA = value; + sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); } -void sub_80508FC(void) +static void sub_80508FC(void) { - sBerryBlenderData->field_AA = 0; + gBerryBlenderData->field_AA = 0; MenuDrawTextWindow(23, 8, 28, 13); sub_814A5C0(0, -1, 12, 0x2D9F, 32); MenuPrint(gOtherText_YesNoTerminating, 24, 9); - sub_80508D4(sBerryBlenderData->field_AA); + sub_80508D4(gBerryBlenderData->field_AA); } -void sub_8050954(void) +static void sub_8050954(void) { u8 i; u8 multiplayerID; // unused sub_8051474(); multiplayerID = GetMultiplayerId(); - switch (sBerryBlenderData->field_6F) + switch (gBerryBlenderData->field_6F) { case 1: ClearLinkCallback(); m4aMPlayTempoControl(&gMPlay_BGM, 256); for (i = 0; i < gSpecialVar_0x8004; i++) { - DestroyTask(sBerryBlenderData->field_148[i]); + DestroyTask(gBerryBlenderData->field_148[i]); } - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 2: - sBerryBlenderData->field_56 -= 32; - if (sBerryBlenderData->field_56 <= 0) + gBerryBlenderData->field_56 -= 32; + if (gBerryBlenderData->field_56 <= 0) { - sBerryBlenderData->field_56 = 0; + gBerryBlenderData->field_56 = 0; if (gReceivedRemoteLinkPlayers != 0) - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; else - sBerryBlenderData->field_6F = 5; - sBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_6F = 5; + gBerryBlenderData->field_0 = 0; m4aMPlayStop(&gMPlay_SE2); } Blender_ControlHitPitch(); break; case 3: if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; else if (sub_8007ECC()) { - sBerryBlenderData->field_1BC = sBerryBlenderData->gameFrameTime; - sBerryBlenderData->field_1C0 = sBerryBlenderData->max_RPM; - SendBlock(0, &sBerryBlenderData->field_1BC, 40); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime; + gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM; + SendBlock(0, &gBerryBlenderData->field_1BC, 40); + gBerryBlenderData->field_6F++; } break; case 4: if (GetBlockReceivedStatus()) { u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0])); - sBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; - sBerryBlenderData->gameFrameTime = *ptr; - sBerryBlenderData->field_6F++; + gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2]; + gBerryBlenderData->gameFrameTime = *ptr; + gBerryBlenderData->field_6F++; ResetBlockReceivedFlags(); } break; case 5: if (Blender_PrintBlendingRanking()) - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 6: if (Blender_PrintBlendingResults()) @@ -2118,100 +2078,100 @@ void sub_8050954(void) IncrementGameStat(34); else IncrementGameStat(33); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 7: - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; MenuDrawTextWindow(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); break; case 8: if (MenuUpdateWindowText()) - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 9: - sBerryBlenderData->field_AA = 0; + gBerryBlenderData->field_AA = 0; sub_80508FC(); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 10: if (gMain.newKeys & DPAD_UP) { - if (sBerryBlenderData->field_AA != 0) + if (gBerryBlenderData->field_AA != 0) PlaySE(SE_SELECT); sub_80508D4(0); } else if (gMain.newKeys & DPAD_DOWN) { - if (sBerryBlenderData->field_AA != 1) + if (gBerryBlenderData->field_AA != 1) PlaySE(SE_SELECT); sub_80508D4(1); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; sub_80508D4(1); } break; case 11: gSendCmd[0] = 0x2FFF; - if (sBerryBlenderData->field_AA == 0) + if (gBerryBlenderData->field_AA == 0) { if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty { - sBerryBlenderData->field_7C = 2; + gBerryBlenderData->field_7C = 2; gSendCmd[1] = 0x9999; } else if (sub_810CA00() == -1) { - sBerryBlenderData->field_7C = 3; + gBerryBlenderData->field_7C = 3; gSendCmd[1] = 0xAAAA; } else { - sBerryBlenderData->field_7C = 0; + gBerryBlenderData->field_7C = 0; gSendCmd[1] = 0x7779; } - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } else { - sBerryBlenderData->field_7C = 1; + gBerryBlenderData->field_7C = 1; gSendCmd[1] = 0x8888; - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 12: if (gUnknown_03004834) { SetMainCallback2(sub_80510E8); - sBerryBlenderData->field_6F = 0; - sBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; } else { MenuPrintMessage(gOtherText_LinkStandby3, 1, 15); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 13: if (MenuUpdateWindowText()) { SetMainCallback2(sub_8050E30); - sBerryBlenderData->field_6F = 0; - sBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_6F = 0; + gBerryBlenderData->field_0 = 0; } break; } sub_8051B18(); - sub_8051A3C(sBerryBlenderData->field_56); + sub_8051A3C(gBerryBlenderData->field_56); sub_805123C(); RunTasks(); AnimateSprites(); @@ -2219,52 +2179,52 @@ void sub_8050954(void) UpdatePaletteFade(); } -bool8 sub_8050CE8(void) +static bool8 sub_8050CE8(void) { - switch (sBerryBlenderData->field_1C4) + switch (gBerryBlenderData->field_1C4) { case 0: sub_80084A4(); - sBerryBlenderData->field_1C4 = 1; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4 = 1; + gBerryBlenderData->framesToWait = 0; break; case 1: if (sub_8007ECC()) { - sBerryBlenderData->field_1C4++; + gBerryBlenderData->field_1C4++; gSoftResetDisabled = TRUE; } break; case 2: sub_8125E2C(); - sBerryBlenderData->field_1C4++; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; break; case 3: - if (++sBerryBlenderData->framesToWait == 10) + if (++gBerryBlenderData->framesToWait == 10) { sub_80084A4(); - sBerryBlenderData->field_1C4++; + gBerryBlenderData->field_1C4++; } break; case 4: if (sub_8007ECC()) { if (sub_8125E6C()) - sBerryBlenderData->field_1C4 = 5; + gBerryBlenderData->field_1C4 = 5; else { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_1C4 = 3; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4 = 3; } } break; case 5: - sBerryBlenderData->field_1C4++; - sBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_1C4++; + gBerryBlenderData->framesToWait = 0; break; case 6: - if (++sBerryBlenderData->framesToWait > 5) + if (++gBerryBlenderData->framesToWait > 5) { gSoftResetDisabled = FALSE; return 1; @@ -2274,99 +2234,99 @@ bool8 sub_8050CE8(void) return 0; } -void sub_8050E30(void) +static void sub_8050E30(void) { - switch (sBerryBlenderData->field_6F) + switch (gBerryBlenderData->field_6F) { case 0: - if (sBerryBlenderData->field_70[0] == 0x2222) - sBerryBlenderData->field_6F = 5; - else if (sBerryBlenderData->field_70[0] == 0x1111) - { - if (sBerryBlenderData->field_78 == 0x9999) - sBerryBlenderData->field_6F = 2; - else if (sBerryBlenderData->field_78 == 0xAAAA) - sBerryBlenderData->field_6F = 1; + if (gBerryBlenderData->field_70[0] == 0x2222) + gBerryBlenderData->field_6F = 5; + else if (gBerryBlenderData->field_70[0] == 0x1111) + { + if (gBerryBlenderData->field_78 == 0x9999) + gBerryBlenderData->field_6F = 2; + else if (gBerryBlenderData->field_78 == 0xAAAA) + gBerryBlenderData->field_6F = 1; else - sBerryBlenderData->field_6F = 5; + gBerryBlenderData->field_6F = 5; } break; case 1: - sBerryBlenderData->field_6F = 3; + gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); - StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_7A].name); + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); MenuPrintMessage(gStringVar4, 1, 15); break; case 2: - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); - StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_7A].name); + StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); MenuPrintMessage(gStringVar4, 1, 15); break; case 3: if (MenuUpdateWindowText()) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_6F++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; } break; case 4: - if (++sBerryBlenderData->framesToWait > 60) - sBerryBlenderData->field_6F = 5; + if (++gBerryBlenderData->framesToWait > 60) + gBerryBlenderData->field_6F = 5; break; case 5: MenuDrawTextWindow(0, 14, 29, 19); MenuPrint(gMultiText_Saving, 2, 15); sub_80084A4(); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 6: if (sub_8007ECC()) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_6F++; - sBerryBlenderData->field_1C4 = 0; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; + gBerryBlenderData->field_1C4 = 0; } break; case 7: if (sub_8050CE8()) { PlaySE(SE_SAVE); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 8: - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; sub_80084A4(); break; case 9: if (sub_8007ECC()) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 10: if (!gPaletteFade.active) { - if (sBerryBlenderData->field_70[0] == 0x2222) + if (gBerryBlenderData->field_70[0] == 0x2222) SetMainCallback2(sub_804E538); else { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_6F++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_6F++; } } break; case 11: - if (++sBerryBlenderData->framesToWait > 30) + if (++gBerryBlenderData->framesToWait > 30) { sub_800832C(); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; } break; case 12: @@ -2382,42 +2342,42 @@ void sub_8050E30(void) UpdatePaletteFade(); } -void sub_80510E8(void) +static void sub_80510E8(void) { - switch (sBerryBlenderData->field_6F) + switch (gBerryBlenderData->field_6F) { case 0: - if (sBerryBlenderData->field_7C < 2) - sBerryBlenderData->field_6F = 9; - if (sBerryBlenderData->field_7C == 2) - sBerryBlenderData->field_6F = 2; - if (sBerryBlenderData->field_7C == 3) - sBerryBlenderData->field_6F =1; + if (gBerryBlenderData->field_7C < 2) + gBerryBlenderData->field_6F = 9; + if (gBerryBlenderData->field_7C == 2) + gBerryBlenderData->field_6F = 2; + if (gBerryBlenderData->field_7C == 3) + gBerryBlenderData->field_6F =1; break; case 1: - sBerryBlenderData->field_6F = 3; + gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); break; case 2: - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); break; case 3: if (MenuUpdateWindowText()) - sBerryBlenderData->field_6F = 9; + gBerryBlenderData->field_6F = 9; break; case 9: BeginFastPaletteFade(3); - sBerryBlenderData->field_6F++; + gBerryBlenderData->field_6F++; break; case 10: if (!gPaletteFade.active) { - if (sBerryBlenderData->field_7C == 0) + if (gBerryBlenderData->field_7C == 0) SetMainCallback2(sub_804E538); else SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); @@ -2432,7 +2392,7 @@ void sub_80510E8(void) UpdatePaletteFade(); } -void sub_805123C(void) +static void sub_805123C(void) { if (gReceivedRemoteLinkPlayers) { @@ -2443,24 +2403,24 @@ void sub_805123C(void) switch (gRecvCmds[2][0]) { case 0x8888: - sBerryBlenderData->field_78 = 0x8888; - sBerryBlenderData->field_7A = gRecvCmds[3][0]; + gBerryBlenderData->field_78 = 0x8888; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; break; case 0x9999: - sBerryBlenderData->field_78 = 0x9999; - sBerryBlenderData->field_7A = gRecvCmds[3][0]; + gBerryBlenderData->field_78 = 0x9999; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; break; case 0xAAAA: - sBerryBlenderData->field_78 = 0xAAAA; - sBerryBlenderData->field_7A = gRecvCmds[3][0]; + gBerryBlenderData->field_78 = 0xAAAA; + gBerryBlenderData->field_7A = gRecvCmds[3][0]; break; } - sBerryBlenderData->field_70[0] = 0x1111; + gBerryBlenderData->field_70[0] = 0x1111; } else if (gRecvCmds[1][0] == 0x2222) - sBerryBlenderData->field_70[0] = 0x2222; + gBerryBlenderData->field_70[0] = 0x2222; } - if (GetMultiplayerId() == 0 && sBerryBlenderData->field_70[0] != 0x1111 && sBerryBlenderData->field_70[0] != 0x2222) + if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222) { u8 i; for (i = 0; i < GetLinkPlayerCount(); i++) @@ -2470,30 +2430,30 @@ void sub_805123C(void) switch (gRecvCmds[1][i]) { case 0x8888: - sBerryBlenderData->field_70[i] = 0x8888; + gBerryBlenderData->field_70[i] = 0x8888; break; case 0x7779: - sBerryBlenderData->field_70[i] = 0x7779; + gBerryBlenderData->field_70[i] = 0x7779; break; case 0x9999: - sBerryBlenderData->field_70[i] = 0x9999; + gBerryBlenderData->field_70[i] = 0x9999; break; case 0xAAAA: - sBerryBlenderData->field_70[i] = 0xAAAA; + gBerryBlenderData->field_70[i] = 0xAAAA; break; } } } for (i = 0; i < GetLinkPlayerCount(); i++) { - if (sBerryBlenderData->field_70[i] == 0) + if (gBerryBlenderData->field_70[i] == 0) break; } if (i == GetLinkPlayerCount()) { for (i = 0; i < GetLinkPlayerCount(); i++) { - if (sBerryBlenderData->field_70[i] != 0x7779) + if (gBerryBlenderData->field_70[i] != 0x7779) break; } gSendCmd[0] = 0x2FFF; @@ -2502,7 +2462,7 @@ void sub_805123C(void) else { gSendCmd[1] = 0x1111; - gSendCmd[2] = sBerryBlenderData->field_70[i]; + gSendCmd[2] = gBerryBlenderData->field_70[i]; gSendCmd[3] = i; } } @@ -2510,42 +2470,42 @@ void sub_805123C(void) } } -void sub_8051414(struct BgAffineDstData *dest) +static void sub_8051414(struct BgAffineDstData *dest) { struct BgAffineSrcData affineSrc; affineSrc.texX = 30720; affineSrc.texY = 20480; - affineSrc.scrX = 120 - sBerryBlenderData->field_144; - affineSrc.scrY = 80 - sBerryBlenderData->field_146; - affineSrc.sx = sBerryBlenderData->field_142; - affineSrc.sy = sBerryBlenderData->field_142; - affineSrc.alpha = sBerryBlenderData->arrowPos; + affineSrc.scrX = 120 - gBerryBlenderData->field_144; + affineSrc.scrY = 80 - gBerryBlenderData->field_146; + affineSrc.sx = gBerryBlenderData->field_142; + affineSrc.sy = gBerryBlenderData->field_142; + affineSrc.alpha = gBerryBlenderData->arrowPos; BgAffineSet(&affineSrc, dest, 1); } -void sub_8051474(void) +static void sub_8051474(void) { - sBerryBlenderData->field_58 = sBerryBlenderData->arrowPos; - sBerryBlenderData->arrowPos += sBerryBlenderData->field_56; - sub_8051414(&sBerryBlenderData->field_168); + gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos; + gBerryBlenderData->arrowPos += gBerryBlenderData->field_56; + sub_8051414(&gBerryBlenderData->field_168); } -void sub_80514A4(void) +static void sub_80514A4(void) { - REG_BG2PA = sBerryBlenderData->field_168.pa; - REG_BG2PB = sBerryBlenderData->field_168.pb; - REG_BG2PC = sBerryBlenderData->field_168.pc; - REG_BG2PD = sBerryBlenderData->field_168.pd; - REG_BG2X = sBerryBlenderData->field_168.dx; - REG_BG2Y = sBerryBlenderData->field_168.dy; + REG_BG2PA = gBerryBlenderData->field_168.pa; + REG_BG2PB = gBerryBlenderData->field_168.pb; + REG_BG2PC = gBerryBlenderData->field_168.pc; + REG_BG2PD = gBerryBlenderData->field_168.pd; + REG_BG2X = gBerryBlenderData->field_168.dx; + REG_BG2Y = gBerryBlenderData->field_168.dy; } -void sub_80514F0(void) +static void sub_80514F0(void) { - REG_BG1HOFS = sBerryBlenderData->field_144; - REG_BG1VOFS = sBerryBlenderData->field_146; - REG_BG0HOFS = sBerryBlenderData->field_144; - REG_BG0VOFS = sBerryBlenderData->field_146; + REG_BG1HOFS = gBerryBlenderData->field_144; + REG_BG1VOFS = gBerryBlenderData->field_146; + REG_BG0HOFS = gBerryBlenderData->field_144; + REG_BG0VOFS = gBerryBlenderData->field_146; } void sub_8051524(struct Sprite* sprite) @@ -2558,9 +2518,7 @@ void sub_8051524(struct Sprite* sprite) DestroySprite(sprite); } -extern const struct SpriteTemplate gSpriteTemplate_82164FC; - -void sub_805156C(void) +static void sub_805156C(void) { s32 limit = (Random() % 2) + 1; s32 i; @@ -2571,7 +2529,7 @@ void sub_805156C(void) s32 x, y; u8 spriteID; - rand = sBerryBlenderData->arrowPos + (Random() % 20); + rand = gBerryBlenderData->arrowPos + (Random() % 20); x = gSineTable[(rand & 0xFF) + 64] / 4; y = gSineTable[(rand & 0xFF)] / 4; @@ -2604,13 +2562,10 @@ void sub_8051684(struct Sprite* sprite) void Blender_SetBankBerryData(u8 bank, u16 itemID) { - sBerryBlenderData->chosenItemID[bank] = itemID; - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[bank], itemID); + gBerryBlenderData->chosenItemID[bank] = itemID; + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID); } -extern const u8* const gUnknown_08216284[]; -extern u8 byte_3002A68; - void unref_sub_80516F8(u8 taskID) { struct Task* task = &gTasks[taskID]; @@ -2623,7 +2578,7 @@ void unref_sub_80516F8(u8 taskID) task->data[0] = 0; if (task->data[0] == 100) { - ZeroFillWindowRect(&sBerryBlenderData->field_4, 0, 0, 16, 20); + ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); MenuDrawTextWindow(4, 4, 10, 12); for (i = 0; i < 3; i++) { @@ -2651,8 +2606,6 @@ void unref_sub_80516F8(u8 taskID) } } -extern const struct SpriteTemplate gSpriteTemplate_821657C; - void sub_805181C(struct Sprite* sprite) { switch (sprite->data0) @@ -2717,7 +2670,7 @@ void sub_80518CC(struct Sprite* sprite) sprite->data1 += 4; if (sprite->data1 > 176) { - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; DestroySprite(sprite); } break; @@ -2725,16 +2678,16 @@ void sub_80518CC(struct Sprite* sprite) sprite->pos2.y = sprite->data1; } -void sub_805194C(u16 a0, u16 a1) +static void sub_805194C(u16 a0, u16 a1) { - if (sBerryBlenderData->field_140 < a0) + if (gBerryBlenderData->field_140 < a0) { - sBerryBlenderData->field_140 += 2; - sub_805197C(sBerryBlenderData->field_140, a1); + gBerryBlenderData->field_140 += 2; + sub_805197C(gBerryBlenderData->field_140, a1); } } -void sub_805197C(u16 a0, u16 a1) +static void sub_805197C(u16 a0, u16 a1) { s32 var1, var2, var3, var4; u16* vram; @@ -2761,19 +2714,19 @@ void sub_805197C(u16 a0, u16 a1) } } -u32 sub_8051A1C(u16 a0) +static u32 sub_8051A1C(u16 a0) { return 360000 * a0 / 0x10000; } -void sub_8051A3C(u16 a0) +static void sub_8051A3C(u16 a0) { u8 i; u8 palAdders[5]; u32 var = sub_8051A1C(a0); - if (sBerryBlenderData->max_RPM < var) - sBerryBlenderData->max_RPM = var; + if (gBerryBlenderData->max_RPM < var) + gBerryBlenderData->max_RPM = var; for (i = 0; i < 5; i++) { palAdders[i] = var % 10; @@ -2786,13 +2739,13 @@ void sub_8051A3C(u16 a0) *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172; } -void sub_8051AC8(s16* a0, u16 a1) +static void sub_8051AC8(s16* a0, u16 a1) { if (*a0 == 0) *a0 = (Random() % a1) - (a1 / 2); } -void sub_8051AF4(s16* a0) +static void sub_8051AF4(s16* a0) { if (*a0 < 0 ) (*a0)++; @@ -2800,13 +2753,13 @@ void sub_8051AF4(s16* a0) (*a0)--; } -void sub_8051B18(void) +static void sub_8051B18(void) { - sub_8051AF4(&sBerryBlenderData->field_144); - sub_8051AF4(&sBerryBlenderData->field_146); + sub_8051AF4(&gBerryBlenderData->field_144); + sub_8051AF4(&gBerryBlenderData->field_146); } -void sub_8051B40(s16* a0, u16 a1) +static void sub_8051B40(s16* a0, u16 a1) { s32 var; if (a1 < 10) @@ -2824,20 +2777,20 @@ void sub_8051B40(s16* a0, u16 a1) } } -bool8 sub_8051B8C(void) +static bool8 sub_8051B8C(void) { - if (sBerryBlenderData->framesToWait == 0) + if (gBerryBlenderData->framesToWait == 0) { - sBerryBlenderData->field_144 = 0; - sBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; } - sBerryBlenderData->framesToWait++; - sub_8051B40(&sBerryBlenderData->field_144, sBerryBlenderData->framesToWait); - sub_8051B40(&sBerryBlenderData->field_146, sBerryBlenderData->framesToWait); - if (sBerryBlenderData->framesToWait == 20) + gBerryBlenderData->framesToWait++; + sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait); + sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait); + if (gBerryBlenderData->framesToWait == 20) { - sBerryBlenderData->field_144 = 0; - sBerryBlenderData->field_146 = 0; + gBerryBlenderData->field_144 = 0; + gBerryBlenderData->field_146 = 0; return 1; } else @@ -2846,49 +2799,46 @@ bool8 sub_8051B8C(void) void sub_8051C04(struct Sprite* sprite) { - sprite->pos2.x = -(sBerryBlenderData->field_144); - sprite->pos2.y = -(sBerryBlenderData->field_146); + sprite->pos2.x = -(gBerryBlenderData->field_144); + sprite->pos2.y = -(gBerryBlenderData->field_146); } -void Blender_TrySettingRecord(void) +static void Blender_TrySettingRecord(void) { - if (gSaveBlock1.berryBlenderRecords[sBerryBlenderData->playersNo - 2] < sBerryBlenderData->max_RPM) - gSaveBlock1.berryBlenderRecords[sBerryBlenderData->playersNo - 2] = sBerryBlenderData->max_RPM; + if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) + gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; } -extern const u8 gUnknown_082165E9[]; -extern const u8 gUnknown_082165EE[]; - -bool8 Blender_PrintBlendingResults(void) +static bool8 Blender_PrintBlendingResults(void) { u16 i; struct Pokeblock pokeblock; - u8 vars2[8]; + u8 flavours[6]; u8 text[2][10]; u16 berryIDs[4]; // unused - switch (sBerryBlenderData->field_0) + switch (gBerryBlenderData->field_0) { case 0: - sBerryBlenderData->field_0++; - sBerryBlenderData->framesToWait = 17; + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 17; break; case 1: - sBerryBlenderData->framesToWait -= 10; - if (sBerryBlenderData->framesToWait < 0) + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } break; case 2: - if (++sBerryBlenderData->framesToWait > 20) + if (++gBerryBlenderData->framesToWait > 20) { for (i = 0; i < 3; i++) - DestroySprite(&gSprites[sBerryBlenderData->scoreIconIDs[i]]); - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]); + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } break; case 3: @@ -2898,15 +2848,15 @@ bool8 Blender_PrintBlendingResults(void) MenuDrawTextWindow(4, 2, 25, 17); sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) { - u8 place = sBerryBlenderData->playerPlaces[i]; + u8 place = gBerryBlenderData->playerPlaces[i]; textPtr = text[0]; - StringCopy(textPtr, sBerryBlenderData->blendedBerries[place].name); + StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name); ConvertInternationalString(textPtr, gLinkPlayers[place].language); StringAppend(textPtr, gOtherText_Berry); - textPtr = sBerryBlenderData->stringVar; + textPtr = gBerryBlenderData->stringVar; textPtr = ConvertIntToDecimalString(textPtr, i + 1); textPtr[0] = CHAR_SPACE; textPtr[1] = CHAR_PERIOD; @@ -2914,12 +2864,12 @@ bool8 Blender_PrintBlendingResults(void) textPtr += 3; textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); sub_8072C74(textPtr, text[0], 157, 0); - MenuPrint(sBerryBlenderData->stringVar, 5, gUnknown_082165E9[sBerryBlenderData->playersNo] + (i * gUnknown_082165EE[sBerryBlenderData->playersNo])); + MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); } - ConvertIntToDecimalStringN(text[0], sBerryBlenderData->max_RPM % 100, 2, 2); - textPtr = sBerryBlenderData->stringVar; + ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); + textPtr = gBerryBlenderData->stringVar; textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); - textPtr = sub_8072C14(textPtr, sBerryBlenderData->max_RPM / 100, 121, 1); + textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); textPtr[0] = CHAR_SPACE; textPtr[1] = CHAR_PERIOD; @@ -2928,14 +2878,14 @@ bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[0], 142, 1); StringCopy(textPtr, gOtherText_RPM); - MenuPrint(sBerryBlenderData->stringVar, 5, 13); + MenuPrint(gBerryBlenderData->stringVar, 5, 13); - secondsPassed = sBerryBlenderData->gameFrameTime / 60; + secondsPassed = gBerryBlenderData->gameFrameTime / 60; seconds = secondsPassed % 60; minutes = secondsPassed / 60; ConvertIntToDecimalStringN(text[0], minutes, 2, 2); ConvertIntToDecimalStringN(text[1], seconds, 2, 2); - textPtr = sBerryBlenderData->stringVar; + textPtr = gBerryBlenderData->stringVar; textPtr = StringCopy(textPtr, gOtherText_RequiredTime); textPtr = sub_8072C74(textPtr, text[0], 102, 1); @@ -2944,32 +2894,32 @@ bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[1], 136, 1); StringCopy(textPtr, gOtherText_Sec); - MenuPrint(sBerryBlenderData->stringVar, 5, 15); + MenuPrint(gBerryBlenderData->stringVar, 5, 15); - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } break; case 4: if (gMain.newKeys & A_BUTTON) - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 5: MenuZeroFillScreen(); MenuDrawTextWindow(0, 14, 29, 19); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->chosenItemID[i] != 0) - berryIDs[i] = sBerryBlenderData->chosenItemID[i] - 133; + if (gBerryBlenderData->chosenItemID[i] != 0) + berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133; } sub_8050760(); - sub_8050520(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, vars2, sBerryBlenderData->max_RPM); - Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar); + Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM); + Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); CreateTask(sub_8052BD0, 6); - MenuPrintMessage(sBerryBlenderData->stringVar, 1, 15); + MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); RemoveBagItem(gScriptItemId, 1); sub_810CA34(&pokeblock); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; break; case 6: if (MenuUpdateWindowText()) @@ -2982,11 +2932,7 @@ bool8 Blender_PrintBlendingResults(void) return 0; } -extern const u8 gUnknown_08216249[]; -extern const u8 gUnknown_082162C8[]; -extern const u8 *const gPokeblockNames[]; - -void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) { u8 text[12]; u8 flavourLvl, feel; @@ -3011,7 +2957,7 @@ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) StringAppend(dst, gUnknown_08216249); } -void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) +static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) { s32 i, j; for (i = 0; i < playersNum; i++) @@ -3028,72 +2974,70 @@ void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores) } } -void Blender_SortScores(void) +static void Blender_SortScores(void) { u8 i; u8 places[4]; u32 points[4]; - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) places[i] = i; - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) { - points[i] = 1000000 * sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; - points[i] += 1000 * sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; - points[i] += 1000 - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; + points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; + points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; } - Blender_SortBasedOnPoints(places, sBerryBlenderData->playersNo, points); - for (i = 0; i < sBerryBlenderData->playersNo; i++) - sBerryBlenderData->playerPlaces[i] = places[i]; + Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points); + for (i = 0; i < gBerryBlenderData->playersNo; i++) + gBerryBlenderData->playerPlaces[i] = places[i]; } -extern const u8 gUnknown_082165F3[]; - -bool8 Blender_PrintBlendingRanking(void) +static bool8 Blender_PrintBlendingRanking(void) { u16 i; - switch (sBerryBlenderData->field_0) + switch (gBerryBlenderData->field_0) { case 0: - sBerryBlenderData->field_0++; - sBerryBlenderData->framesToWait = 255; + gBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 255; break; case 1: - sBerryBlenderData->framesToWait -= 10; - if (sBerryBlenderData->framesToWait < 0) + gBerryBlenderData->framesToWait -= 10; + if (gBerryBlenderData->framesToWait < 0) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } break; case 2: - if (++sBerryBlenderData->framesToWait > 20) + if (++gBerryBlenderData->framesToWait > 20) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; } break; case 3: MenuDrawTextWindow(4, 2, 25, 17); sub_8072BD8(gOtherText_Ranking, 5, 3, 160); - sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&gSpriteTemplate_821645C, 140, 52, 0); - gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; - StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&gSpriteTemplate_821645C, 140, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); - sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&gSpriteTemplate_821645C, 164, 52, 0); - gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&gSpriteTemplate_821645C, 164, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; - sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&gSpriteTemplate_821645C, 188, 52, 0); - gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; - StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&gSpriteTemplate_821645C, 188, 52, 0); + gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); Blender_SortScores(); - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < gBerryBlenderData->playersNo; i++) { - u8 place = sBerryBlenderData->playerPlaces[i]; - u8* txtPtr = sBerryBlenderData->stringVar; + u8 place = gBerryBlenderData->playerPlaces[i]; + u8* txtPtr = gBerryBlenderData->stringVar; txtPtr[0] = EXT_CTRL_CODE_BEGIN; txtPtr[1] = 0x13; @@ -3109,40 +3053,34 @@ bool8 Blender_PrintBlendingRanking(void) txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); - txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); - txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); - txtPtr = sub_8072C14(txtPtr, sBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); - MenuPrint(sBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[sBerryBlenderData->playersNo] + 8); + MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); } - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_0++; + gBerryBlenderData->framesToWait = 0; + gBerryBlenderData->field_0++; break; case 4: - if (++sBerryBlenderData->framesToWait > 20) - sBerryBlenderData->field_0++; + if (++gBerryBlenderData->framesToWait > 20) + gBerryBlenderData->field_0++; break; case 5: if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sBerryBlenderData->field_0++; + gBerryBlenderData->field_0++; } break; case 6: - sBerryBlenderData->field_0 = 0; + gBerryBlenderData->field_0 = 0; return 1; } return 0; } -struct UnknownStruct -{ - s8 bytes[24]; - s16 hword[2]; -}; - -extern struct UnknownStruct gUnknown_03000560; +// debug menu goes here void unref_sub_80524BC(void) { @@ -3158,7 +3096,265 @@ void unref_sub_80524BC(void) AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); - gUnknown_03000560.hword[1] = 0x1F40; - gUnknown_03000560.bytes[16]++; + sBlenderDebug.BPM = 8000; + sBlenderDebug.field_10++; SetMainCallback2(sub_8052AF8); } + +static void BlenderDebug_PrintBerryData(void) +{ + u8 text[128]; + u8 i; + + StringCopy(text, gOtherText_BPMAndDash); + MenuPrint(text, 2, 0); + + ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); + MenuPrint(text, 6, 0); + + for (i = 0; i < 4; i++) + { + u8 var; + + if (sBlenderDebug.cursorPos == i) + { + text[0] = 0xEF; + CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]); + } + else + { + CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); + text[6] = CHAR_SPACE; + text[7] = EOS; + } + var = (i * 3) + 3; + MenuPrint(text, 2, var); + + ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, var); + } + if (sBlenderDebug.pokeblock.color != 0) + { + StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); + MenuPrint(text, 2, 15); + + ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); + + text[17] = EOS; + MenuPrint(text, 7, 17); + } +} + +static void sub_80527BC(void) +{ + u8 text[70]; + u8 buffer[10]; + u16 i; + + if (gUnknown_020297DC == 1) + { + u16 j; + for (j = 0; j < 10; j++) + gUnknown_03004840[j] = 0; + gUnknown_03004830 = Random(); + gUnknown_020297E0 = 0; + gUnknown_020297DC = 2; + for (i = 0; i < 200; i++) + ewram[i] = 0; + gUnknown_020297E8 = 0; + } + for (i = 0; i < 100; i++) + { + if (((Random() >> 15) & 1) == gUnknown_020297E8) + gUnknown_020297E0++; + else + { + u16* ewramPtr = ((u16*)(ewram)); + ewramPtr[gUnknown_020297E4] = gUnknown_020297E0; + gUnknown_020297E4++; + gUnknown_020297E0 = 0; + gUnknown_020297E8 ^= 1; + } + } + text[0] = EOS; + + ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8); + StringAppend(text, buffer); + StringAppend(text, gUnknown_082165F8); + + ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8); + StringAppend(text, buffer); + StringAppend(text, gUnknown_08216600); + + if (gUnknown_020297DC == 3) + { + ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16); + StringAppend(text, buffer); + gUnknown_020297DC = 0; + } + + MenuPrint(text, 2, 15); +} + +static void sub_8052918(void) +{ + if (gMain.newKeys & R_BUTTON) + { + sBlenderDebug.BPM += 1000; + if (sBlenderDebug.BPM > 30000) + sBlenderDebug.BPM = 1000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & L_BUTTON) + { + sBlenderDebug.BPM -= 1000; + if (sBlenderDebug.BPM < 0) + sBlenderDebug.BPM = 30000; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_UP) + { + sBlenderDebug.cursorPos -= 1; + if (sBlenderDebug.cursorPos < 0) + sBlenderDebug.cursorPos = 3; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_DOWN) + { + sBlenderDebug.cursorPos += 1; + if (sBlenderDebug.cursorPos > 3) + sBlenderDebug.cursorPos = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42) + sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0; + sBlenderDebug.field_10++; + } + if (gMain.newKeys & A_BUTTON) + { + u16 berryIDs[4]; + struct BlenderBerry berries[4]; + + u16 i, notEnigma = 0; + for (i = 0; i < 4; i++) + { + if (sBlenderDebug.berries[i] != 42) + { + notEnigma++; + berryIDs[i] = sBlenderDebug.berries[i]; + Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133); + } + else + break; + } + if (notEnigma > 1) + { + BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM); + sBlenderDebug.field_10++; + } + else + sBlenderDebug.pokeblock.color = 0xFF; + } + if (sBlenderDebug.field_10) + { + BlenderDebug_PrintBerryData(); + sBlenderDebug.field_10 = 0; + } + if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0) + { + gUnknown_020297DC++; + gUnknown_020297E0 = 0; + SeedRng(gMain.vblankCounter1); + } + if (gUnknown_020297DC != 0) + sub_80527BC(); +} + +static void sub_8052AF8(void) +{ + sub_8052918(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +// debug menu ends +// blender record window begins + +void ShowBerryBlenderRecordWindow(void) +{ + u8 text[30]; + s32 i; + + MenuDrawTextWindow(6, 3, 23, 16); + MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + MenuPrint(gMultiText_2P3P4P, 8, 9); + + for (i = 0; i < 3; i++) + { + u32 record = gSaveBlock1.berryBlenderRecords[i]; + u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = CHAR_PERIOD; + txtPtr[2] = CHAR_SPACE; + txtPtr += 3; + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); + StringAppend(txtPtr, gOtherText_RPM); + MenuPrint(text, 15, i * 2 + 9); + } +} + +static void sub_8052BD0(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskID].data[0]++; + } + if (IsFanfareTaskInactive()) + { + PlayBGM(gBerryBlenderData->field_178); + DestroyTask(taskID); + } +} diff --git a/sym_bss.txt b/sym_bss.txt index a6eaeefe1..8ab72661c 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -28,32 +28,7 @@ gUnknown_03000500: @ 3000500 gUnknown_03000508: @ 3000508 .space 0x8 -@ berry_blender - -gUnknown_03000510: @ 3000510 - .space 0x10 - -gUnknown_03000520: @ 3000520 - .space 0xC - -gUnknown_0300052C: @ 300052C - .space 0x2 - -gUnknown_0300052E: @ 300052E - .space 0x2 - -gUnknown_03000530: @ 3000530 - .space 0x18 - -gUnknown_03000548: @ 3000548 - .space 0x14 - -gUnknown_0300055C: @ 300055C - .space 0x4 - -gUnknown_03000560: @ 3000560 - .space 0x1C - + .include "src/berry_blender.o" .include "src/play_time.o" .include "src/rom4.o" diff --git a/sym_common.txt b/sym_common.txt index 338d60d96..fe851de25 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -123,20 +123,7 @@ gUnknown_03004824: @ 3004824 gUnknown_03004828: @ 3004828 .space 0x8 -@ berry_blender - -gUnknown_03004830: @ 3004830 - .space 0x4 - -gUnknown_03004834: @ 3004834 - .space 0xC - -gUnknown_03004840: @ 3004840 - .space 0x14 - -sBerryBlenderData: @ 3004854 - .space 0x4 - + .include "berry_blender.o" .include "rom4.o" .include "fieldmap.o" .include "field_camera.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 0e8b25e28..70a9a4df6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -308,20 +308,7 @@ gUnknown_02029700: @ 2029700 gUnknown_020297D8: @ 20297D8 .space 0x4 -@ berry_blender - -gUnknown_020297DC: @ 20297DC - .space 0x4 - -gUnknown_020297E0: @ 20297E0 - .space 0x4 - -gUnknown_020297E4: @ 20297E4 - .space 0x4 - -gUnknown_020297E8: @ 20297E8 - .space 0x4 - + .include "src/berry_blender.o" .include "src/new_game.o" .include "src/rom4.o" .include "src/fieldmap.o" -- cgit v1.2.3 From ab913c9e63d21a604001c5fee48f0a225d9964ee Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 17:42:43 +0200 Subject: german build fixed --- asm-de/battle_message.s | 2342 ----------------------------------------------- src/battle_message.c | 524 +++++------ 2 files changed, 263 insertions(+), 2603 deletions(-) delete mode 100644 asm-de/battle_message.s diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s deleted file mode 100644 index 2f671a766..000000000 --- a/asm-de/battle_message.s +++ /dev/null @@ -1,2342 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start BufferStringBattle -BufferStringBattle: @ 8120AA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r6, 0 - ldr r5, _08120B70 @ =gSelectedOrderFromParty - ldr r4, _08120B74 @ =gActiveBank - ldrb r1, [r4] - lsls r1, 9 - ldr r0, _08120B78 @ =gUnknown_02023A64 - adds r1, r0 - str r1, [r5] - ldr r2, _08120B7C @ =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, _08120B80 @ =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r3, _08120B84 @ =0x02000000 - ldrb r0, [r1, 0x7] - mov r8, r0 - ldr r2, _08120B88 @ =0x00016003 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x8] - mov r8, r0 - ldr r2, _08120B8C @ =0x0001605e - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldrb r0, [r1, 0x9] - mov r8, r0 - ldr r2, _08120B90 @ =0x000160c1 - adds r0, r3, r2 - mov r2, r8 - strb r2, [r0] - ldr r2, _08120B94 @ =gStringBank - ldrb r0, [r1, 0xA] - strb r0, [r2] - ldrb r1, [r1, 0xB] - ldr r2, _08120B98 @ =0x000160a0 - adds r0, r3, r2 - strb r1, [r0] - movs r2, 0 - mov r9, r3 - ldr r3, _08120B9C @ =gBattleTextBuff1 - mov r10, r3 - ldr r3, _08120BA0 @ =gAbilitiesPerBank -_08120B10: - adds r0, r2, r3 - ldr r1, [r5] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08120B10 - movs r2, 0 - ldr r0, _08120B9C @ =gBattleTextBuff1 - mov r8, r0 - ldr r3, _08120B70 @ =gSelectedOrderFromParty - ldr r1, _08120BA4 @ =gBattleTextBuff2 - mov r12, r1 - ldr r5, _08120BA8 @ =gBattleTextBuff3 -_08120B30: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - mov r0, r12 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _08120B30 - cmp r7, 0x5 - bls _08120B64 - b _08120F50 -_08120B64: - lsls r0, r7, 2 - ldr r1, _08120BAC @ =_08120BB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08120B70: .4byte gSelectedOrderFromParty -_08120B74: .4byte gActiveBank -_08120B78: .4byte gUnknown_02023A64 -_08120B7C: .4byte gLastUsedItem -_08120B80: .4byte gLastUsedAbility -_08120B84: .4byte 0x02000000 -_08120B88: .4byte 0x00016003 -_08120B8C: .4byte 0x0001605e -_08120B90: .4byte 0x000160c1 -_08120B94: .4byte gStringBank -_08120B98: .4byte 0x000160a0 -_08120B9C: .4byte gBattleTextBuff1 -_08120BA0: .4byte gAbilitiesPerBank -_08120BA4: .4byte gBattleTextBuff2 -_08120BA8: .4byte gBattleTextBuff3 -_08120BAC: .4byte _08120BB0 - .align 2, 0 -_08120BB0: - .4byte _08120BC8 - .4byte _08120C40 - .4byte _08120CCC - .4byte _08120D5C - .4byte _08120DE8 - .4byte _08120E50 -_08120BC8: - ldr r0, _08120BEC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08120C00 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120BF8 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120BF0 @ =gUnknown_084005C7 - cmp r0, 0 - bne _08120BE8 - b _08120F70 -_08120BE8: - ldr r6, _08120BF4 @ =gUnknown_084005DB - b _08120F70 - .align 2, 0 -_08120BEC: .4byte gBattleTypeFlags -_08120BF0: .4byte gUnknown_084005C7 -_08120BF4: .4byte gUnknown_084005DB -_08120BF8: - ldr r6, _08120BFC @ =gUnknown_084005AA - ldr r0, _08120C04 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120BFC: .4byte gUnknown_084005AA -_08120C04: .4byte 0x0000ffff -_08120C00: - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08120C14 - ldr r6, _08120C10 @ =gUnknown_08400568 - b _08120F70 - .align 2, 0 -_08120C10: .4byte gUnknown_08400568 -_08120C14: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C24 - ldr r6, _08120C20 @ =gUnknown_08400590 - b _08120F70 - .align 2, 0 -_08120C20: .4byte gUnknown_08400590 -_08120C24: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - ldr r6, _08120C38 @ =gUnknown_08400555 - cmp r0, 0 - bne _08120C32 - b _08120F70 -_08120C32: - ldr r6, _08120C3C @ =gUnknown_0840057B - b _08120F70 - .align 2, 0 -_08120C38: .4byte gUnknown_08400555 -_08120C3C: .4byte gUnknown_0840057B -_08120C40: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120C7C - ldr r0, _08120C68 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120C74 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120C6C @ =gUnknown_084006A4 - cmp r0, 0 - bne _08120C64 - b _08120F70 -_08120C64: - ldr r6, _08120C70 @ =gUnknown_084006F1 - b _08120F70 - .align 2, 0 -_08120C68: .4byte gBattleTypeFlags -_08120C6C: .4byte gUnknown_084006A4 -_08120C70: .4byte gUnknown_084006F1 -_08120C74: - ldr r6, _08120C78 @ =gUnknown_0840069C - b _08120F70 - .align 2, 0 -_08120C78: .4byte gUnknown_0840069C -_08120C7C: - ldr r0, _08120C94 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120CB4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120C9C - ldr r6, _08120C98 @ =gUnknown_0840065C - b _08120F70 - .align 2, 0 -_08120C94: .4byte gBattleTypeFlags -_08120C98: .4byte gUnknown_0840065C -_08120C9C: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CB8d @ =gUnknown_08400645 - cmp r0, 0 - beq _08120CA8 - b _08120F70 -_08120CA8: - ldr r6, _08120CBCd @ =gUnknown_08400608 - ldr r0, _08120CC0d @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120CB8d: .4byte gUnknown_08400645 -_08120CBCd: .4byte gUnknown_08400608 -_08120CC0d: .4byte 0x0000ffff -_08120CB4: - movs r0, 0x2 - ands r0, r1 - ldr r6, _08120CD8 @ =gUnknown_08400635 - cmp r0, 0 - beq _08120CC0 - b _08120F70 -_08120CC0: - ldr r6, _08120CDC @ =gUnknown_084005F5 - ldr r0, _08120CE0 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120CD8: .4byte gUnknown_08400635 -_08120CDC: .4byte gUnknown_084005F5 -_08120CE0: .4byte 0x0000ffff -_08120CCC: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120D24 - ldr r0, _08120CE8 @ =0x02000000 - ldr r1, _08120CEC @ =0x000160c1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _08120CF4 - ldr r6, _08120CF0 @ =gUnknown_08400709 - b _08120F70 - .align 2, 0 -_08120CE8: .4byte 0x02000000 -_08120CEC: .4byte 0x000160c1 -_08120CF0: .4byte gUnknown_08400709 -_08120CF4: - cmp r2, 0x1 - beq _08120D04 - ldr r0, _08120D08 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D10 -_08120D04: - ldr r6, _08120D0C @ =gUnknown_08400727 - b _08120F70 - .align 2, 0 -_08120D08: .4byte gBattleTypeFlags -_08120D0C: .4byte gUnknown_08400727 -_08120D10: - ldr r6, _08120D1C @ =gUnknown_08400749 - cmp r2, 0x2 - beq _08120D18 - b _08120F70 -_08120D18: - ldr r6, _08120D20 @ =gUnknown_08400736 - b _08120F70 - .align 2, 0 -_08120D1C: .4byte gUnknown_08400749 -_08120D20: .4byte gUnknown_08400736 -_08120D24: - ldr r0, _08120D44 @ =gTrainerBattleOpponent - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - cmp r1, r0 - bne _08120D54 - ldr r0, _08120D48 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120D4C @ =gUnknown_08400771 - cmp r0, 0 - bne _08120D40 - b _08120F70 -_08120D40: - ldr r6, _08120D50 @ =gUnknown_08400781 - b _08120F70 - .align 2, 0 -_08120D44: .4byte gTrainerBattleOpponent -_08120D48: .4byte gBattleTypeFlags -_08120D4C: .4byte gUnknown_08400771 -_08120D50: .4byte gUnknown_08400781 -_08120D54: - ldr r6, _08120D58 @ =gUnknown_0840075E - ldr r0, _d08120D78 @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120D58: .4byte gUnknown_0840075E -_d08120D78: .4byte 0x0000ffff -_08120D5C: - ldr r0, _08120D88 @ =0x00016003 - add r0, r9 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08120DB8 - ldr r0, _08120D8C @ =0x000160c1 - add r0, r9 - ldrb r3, [r0] - cmp r3, 0 - beq _08120D82 - ldr r0, _08120D90 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08120D98 -_08120D82: - ldr r6, _08120D94 @ =gUnknown_084006B3 - b _08120F70 - .align 2, 0 -_08120D88: .4byte 0x00016003 -_08120D8C: .4byte 0x000160c1 -_08120D90: .4byte gBattleTypeFlags -_08120D94: .4byte gUnknown_084006B3 -_08120D98: - cmp r3, 0x1 - bne _08120DA4 - ldr r6, _08120DA0 @ =gUnknown_084006BB - b _08120F70 - .align 2, 0 -_08120DA0: .4byte gUnknown_084006BB -_08120DA4: - ldr r6, _08120DB0 @ =gUnknown_084006D5 - cmp r3, 0x2 - beq _08120DAC - b _08120F70 -_08120DAC: - ldr r6, _08120DB4 @ =gUnknown_084006C6 - b _08120F70 - .align 2, 0 -_08120DB0: .4byte gUnknown_084006D5 -_08120DB4: .4byte gUnknown_084006C6 -_08120DB8: - ldr r0, _08120DD4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08120DE0 - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120DD8 @ =gUnknown_0840067C - cmp r0, 0 - bne _08120DD0 - b _08120F70 -_08120DD0: - ldr r6, _08120DDC @ =gUnknown_0840068C - b _08120F70 - .align 2, 0 -_08120DD4: .4byte gBattleTypeFlags -_08120DD8: .4byte gUnknown_0840067C -_08120DDC: .4byte gUnknown_0840068C -_08120DE0: - ldr r6, _08120DE4 @ =gUnknown_08400622 - ldr r0, _d08120E0C @ =0x0000ffff - b _08120F9A - .align 2, 0 -_08120DE4: .4byte gUnknown_08400622 -_d08120E0C: .4byte 0x0000ffff -_08120DE8: - mov r0, r10 - bl sub_8121D1C - ldr r0, _08120E14 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08120E28 - ldr r0, _08120E18 @ =gBattleTextBuff2 - ldr r2, _08120E1C @ =gUnknown_08401674 - ldr r1, _08120E20 @ =0x02000000 - ldr r3, _08120E24 @ =0x000160a0 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _08120E38 - .align 2, 0 -_08120E14: .4byte gSelectedOrderFromParty -_08120E18: .4byte gBattleTextBuff2 -_08120E1C: .4byte gUnknown_08401674 -_08120E20: .4byte 0x02000000 -_08120E24: .4byte 0x000160a0 -_08120E28: - ldr r0, _08120E44 @ =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, _08120E48 @ =gMoveNames - adds r1, r2 - bl StringCopy -_08120E38: - ldr r0, _08120E44 @ =gBattleTextBuff2 - bl sub_8121D74 - ldr r6, _08120E4C @ =gUnknown_084007BD - b _08120F70 - .align 2, 0 -_08120E44: .4byte gBattleTextBuff2 -_08120E48: .4byte gMoveNames -_08120E4C: .4byte gUnknown_084007BD -_08120E50: - ldr r5, _08120E90 @ =gBattleTextBuff1 - ldrb r1, [r5] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08120EB8 - movs r0, 0x7F - ands r0, r1 - strb r0, [r5] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120E7C - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120E7C - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120E7C: - ldr r0, _08120E90 @ =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120E98 - ldr r6, _08120E94 @ =gUnknown_083FFEFC - b _08120F70 - .align 2, 0 -_08120E90: .4byte gBattleTextBuff1 -_08120E94: .4byte gUnknown_083FFEFC -_08120E98: - ldr r0, _08120EAC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r6, _08120EB0 @ =gUnknown_083FFFEA - cmp r0, 0 - beq _08120F70 - ldr r6, _08120EB4 @ =gUnknown_083FFFF7 - b _08120F70 - .align 2, 0 -_08120EAC: .4byte gBattleTypeFlags -_08120EB0: .4byte gUnknown_083FFFEA -_08120EB4: .4byte gUnknown_083FFFF7 -_08120EB8: - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120ED2 - ldrb r1, [r5] - cmp r1, 0x3 - beq _08120ED2 - movs r0, 0x3 - eors r0, r1 - strb r0, [r5] -_08120ED2: - ldr r0, _08120EF0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120F18 - ldr r0, _08120EF4 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F08 - cmp r0, 0x2 - bgt _08120EF8 - cmp r0, 0x1 - beq _08120EFE - b _08120F70 - .align 2, 0 -_08120EF0: .4byte gBattleTypeFlags -_08120EF4: .4byte gBattleTextBuff1 -_08120EF8: - cmp r0, 0x3 - beq _08120F10 - b _08120F70 -_08120EFE: - ldr r6, _08120F04 @ =gUnknown_083FFF6A - b _08120F70 - .align 2, 0 -_08120F04: .4byte gUnknown_083FFF6A -_08120F08: - ldr r6, _08120F0C @ =gUnknown_083FFF99 - b _08120F70 - .align 2, 0 -_08120F0C: .4byte gUnknown_083FFF99 -_08120F10: - ldr r6, _08120F14 @ =gUnknown_083FFFCB - b _08120F70 - .align 2, 0 -_08120F14: .4byte gUnknown_083FFFCB -_08120F18: - ldr r0, _08120F2C @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08120F40 - cmp r0, 0x2 - bgt _08120F30 - cmp r0, 0x1 - beq _08120F36 - b _08120F70 - .align 2, 0 -_08120F2C: .4byte gBattleTextBuff1 -_08120F30: - cmp r0, 0x3 - beq _08120F48 - b _08120F70 -_08120F36: - ldr r6, _08120F3C @ =gUnknown_083FFF56 - b _08120F70 - .align 2, 0 -_08120F3C: .4byte gUnknown_083FFF56 -_08120F40: - ldr r6, _08120F44 @ =gUnknown_083FFF81 - b _08120F70 - .align 2, 0 -_08120F44: .4byte gUnknown_083FFF81 -_08120F48: - ldr r6, _08120F4C @ =gUnknown_083FFFB3 - b _08120F70 - .align 2, 0 -_08120F4C: .4byte gUnknown_083FFFB3 -_08120F50: - movs r0, 0xB5 - lsls r0, 1 - cmp r7, r0 - bls _08120F64 - ldr r1, _08120F60 @ =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _08120F76 - .align 2, 0 -_08120F60: .4byte gDisplayedStringBattle -_08120F64: - ldr r1, _08120F84 @ =gBattleStringsTable - adds r0, r7, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r6, [r0] - adds r0, r7, 0 -_08120F9A: - adds r1, r6, 0 - bl de_sub_804110C - adds r6, r0, 0 -_08120F70: - adds r0, r6, 0 - bl StrCpyDecodeToDisplayedStringBattle -_08120F76: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08120F84: .4byte gBattleStringsTable - thumb_func_end BufferStringBattle - - thumb_func_start StrCpyDecodeToDisplayedStringBattle -StrCpyDecodeToDisplayedStringBattle: @ 8120F88 - push {lr} - ldr r1, _08120F94 @ =gDisplayedStringBattle - bl StrCpyDecodeBattle - pop {r1} - bx r1 - .align 2, 0 -_08120F94: .4byte gDisplayedStringBattle - thumb_func_end StrCpyDecodeToDisplayedStringBattle - - thumb_func_start sub_8120F98 -sub_8120F98: @ 8120F98 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _08120FB0 @ =gUnknown_084017A8 - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _08120FC0 - .align 2, 0 -_08120FB0: .4byte gUnknown_084017A8 -_08120FB4: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _08120FC8 -_08120FC0: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08120FB4 -_08120FC8: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, _08120FE4 @ =gUnknown_081FA6D4 -_08120FD0: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _08120FE8 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _08120FE8 - ldr r0, [r2, 0x4] - b _08120FF2 - .align 2, 0 -_08120FE4: .4byte gUnknown_081FA6D4 -_08120FE8: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _08120FD0 - movs r0, 0 -_08120FF2: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8120F98 - - thumb_func_start StrCpyDecodeBattle -StrCpyDecodeBattle: @ 8120FFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - ldrb r1, [r0] - bl _08121A40 -_0812101E: - cmp r1, 0xFD - beq _08121026 - bl _08121A30 -_08121026: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x2A - bls _08121036 - bl _081219E6 -_08121036: - lsls r0, 2 - ldr r1, _08121040 @ =_08121044 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121040: .4byte _08121044 - .align 2, 0 -_08121044: - .4byte _081210F0 - .4byte _0812111E - .4byte _0812115A - .4byte _08121180 - .4byte _081211A4 - .4byte _081211C8 - .4byte _081211EC - .4byte _08121218 - .4byte _08121248 - .4byte _08121278 - .4byte _081212A8 - .4byte _0812133C - .4byte _081213A8 - .4byte _0812141C - .4byte _08121490 - .4byte _08121504 - .4byte _08121578 - .4byte _081215F8 - .4byte _08121620 - .4byte _08121660 - .4byte _081216EC - .4byte _081216F4 - .4byte _08121704 - .4byte _08121714 - .4byte _0812172C - .4byte _0812174C - .4byte _081217C0 - .4byte _08121830 - .4byte _08121840 - .4byte _08121854 - .4byte _08121868 - .4byte _0812188C - .4byte _081218B0 - .4byte _081218B8 - .4byte _081218C0 - .4byte _0812195C - .4byte _081219A4 - .4byte _081219AC - .4byte _0812197C - .4byte _08121984 - .4byte _081219CC - .4byte _081219D4 - .4byte _08121134 -_081210F0: - ldr r5, _08121100 @ =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _08121108 - ldr r4, _08121104 @ =gStringVar1 - adds r0, r5, 0 - b _08121140 - .align 2, 0 -_08121100: .4byte gBattleTextBuff1 -_08121104: .4byte gStringVar1 -_08121108: - adds r0, r5, 0 - bl sub_8120F98 - adds r4, r0, 0 - cmp r4, 0 - beq _08121118 - bl _081219E6 -_08121118: - adds r4, r5, 0 - bl _081219E6 -_0812111E: - ldr r1, _0812112C @ =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121130 @ =gStringVar2 - b _0812113E - .align 2, 0 -_0812112C: .4byte gBattleTextBuff2 -_08121130: .4byte gStringVar2 -_08121134: - ldr r1, _0812114C @ =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _08121154 - ldr r4, _08121150 @ =gStringVar3 -_0812113E: - adds r0, r1, 0 -_08121140: - adds r1, r4, 0 - bl sub_8121A68 - bl _081219E6 - .align 2, 0 -_0812114C: .4byte gBattleTextBuff3 -_08121150: .4byte gStringVar3 -_08121154: - adds r4, r1, 0 - bl _081219E6 -_0812115A: - movs r0, 0 - bl GetBankByPlayerAI - ldr r1, _08de12116C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de12116C: .4byte gBattlePartyID -_08121180: - movs r0, 0x1 - bl GetBankByPlayerAI - ldr r1, _0812119C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211A0 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812119C: .4byte gBattlePartyID -_081211A0: .4byte gEnemyParty -_081211A4: - movs r0, 0x2 - bl GetBankByPlayerAI - ldr r1, _081211C0 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081211C0: .4byte gBattlePartyID -_081211C8: - movs r0, 0x3 - bl GetBankByPlayerAI - ldr r1, _081211E4 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081211E8 @ =gEnemyParty - b _08121940 - .align 2, 0 -_081211E4: .4byte gBattlePartyID -_081211E8: .4byte gEnemyParty -_081211EC: - ldr r2, _0812120C @ =gBattlePartyID - ldr r1, _08121210 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812120C: .4byte gBattlePartyID -_08121210: .4byte gLinkPlayers -_08121218: - ldr r2, _0812123C @ =gBattlePartyID - ldr r1, _08121240 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121244 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812123C: .4byte gBattlePartyID -_08121240: .4byte gLinkPlayers -_08121244: .4byte gEnemyParty -_08121248: - ldr r2, _0812126C @ =gBattlePartyID - ldr r1, _08121270 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_0812126C: .4byte gBattlePartyID -_08121270: .4byte gLinkPlayers -_08121278: - ldr r2, _0812129C @ =gBattlePartyID - ldr r1, _081212A0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081212A4 @ =gEnemyParty - b _08121940 - .align 2, 0 -_0812129C: .4byte gBattlePartyID -_081212A0: .4byte gLinkPlayers -_081212A4: .4byte gEnemyParty -_081212A8: - ldr r4, _081212CC @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081212E6 - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121314 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121318 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de1212BE - .align 2, 0 -_081212CC: .4byte gBankAttacker -_08121314: .4byte gBattlePartyID -_08121318: .4byte gEnemyParty -_08de1212B4: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de1212BE: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1212B4 - b _08de12184E -_081212E6: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08121338 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08121338: .4byte gBattlePartyID -_0812133C: - ldr r4, _08de121314 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08de12131C - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08de121318 @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de121314: .4byte gBankAttacker -_08de121318: .4byte gBattlePartyID -_08de12131C: - ldrb r0, [r4] - bl GetBankIdentity - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBankByPlayerAI - ldr r1, _08de12134C @ =gBattlePartyID - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121350 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0812194A - .align 2, 0 -_08de12134C: .4byte gBattlePartyID -_08de121350: .4byte gEnemyParty -_081213A8: - ldr r4, _08de121388 @ =gBankAttacker - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de1213A8 - ldr r1, _08de12138C @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121390 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de12139E - .align 2, 0 -_08de121388: .4byte gBankAttacker -_08de12138C: .4byte gBattlePartyID -_08de121390: .4byte gEnemyParty -_08de121394: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de12139E: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de121394 - b _08de12184E -_08de1213A8: - ldr r1, _08de1213B4 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de1213B4: .4byte gBattlePartyID -_0812141C: - ldr r4, _08de1213EC @ =gBankTarget - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de12140C - ldr r1, _08de1213F0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de1213F4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121402 - .align 2, 0 -_08de1213EC: .4byte gBankTarget -_08de1213F0: .4byte gBattlePartyID -_08de1213F4: .4byte gEnemyParty -_08de1213F8: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121402: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1213F8 - b _08de12184E -_08de12140C: - ldr r1, _08de121418 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de121418: .4byte gBattlePartyID -_08121490: - ldr r4, _08de121450 @ =gEffectBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de121470 - ldr r1, _08de121454 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121458 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121466 - .align 2, 0 -_08de121450: .4byte gEffectBank -_08de121454: .4byte gBattlePartyID -_08de121458: .4byte gEnemyParty -_08de12145C: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121466: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12145C - b _08de12184E -_08de121470: - ldr r1, _08de12147C @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de12147C: .4byte gBattlePartyID -_08121504: - ldr r4, _08de1214B4 @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08de1214D4 - ldr r1, _08de1214B8 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de1214BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de1214CA - .align 2, 0 -_08de1214B4: .4byte gActiveBank -_08de1214B8: .4byte gBattlePartyID -_08de1214BC: .4byte gEnemyParty -_08de1214C0: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de1214CA: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de1214C0 - b _08de12184E -_08de1214D4: - ldr r1, _08de1214E0 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_08de1214E0: .4byte gBattlePartyID -_08121578: - ldr r0, _08de12151C @ =0x02000000 - ldr r1, _08de121520 @ =0x00016003 - adds r4, r0, r1 - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _081215E8 - ldr r1, _08de121524 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121528 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121536 - .align 2, 0 -_08de12151C: .4byte 0x02000000 -_08de121520: .4byte 0x00016003 -_08de121524: .4byte gBattlePartyID -_08de121528: .4byte gEnemyParty -_08de12152C: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121536: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12152C - b _08de12184E -_081215E8: - ldr r1, _081215F4 @ =gBattlePartyID - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _0812193A - .align 2, 0 -_081215F4: .4byte gBattlePartyID -_081215F8: - ldr r0, _08de121568 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08de121574 - ldr r0, _08de12156C @ =0x02000000 - ldr r3, _08de121570 @ =0x000160a0 - adds r0, r3 - b _08de12158C - .align 2, 0 -_08de121568: .4byte gSelectedOrderFromParty -_08de12156C: .4byte 0x02000000 -_08de121570: .4byte 0x000160a0 -_08de121574: - ldrh r1, [r2] - b _08de1215AA -_08121620: - ldr r0, _08de121598 @ =gSelectedOrderFromParty - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _08de1215A8 - ldr r0, _08de12159C @ =0x02000000 - ldr r5, _08de1215A0 @ =0x000160a0 - adds r0, r5 -_08de12158C: - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _08de1215A4 @ =gUnknown_08401674 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08de121598: .4byte gSelectedOrderFromParty -_08de12159C: .4byte 0x02000000 -_08de1215A0: .4byte 0x000160a0 -_08de1215A4: .4byte gUnknown_08401674 -_08de1215A8: - ldrh r1, [r2, 0x2] -_08de1215AA: - movs r0, 0xD - muls r1, r0 - ldr r0, _08de1215B4 @ =gMoveNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de1215B4: .4byte gMoveNames -_08121660: - ldr r0, _08de121604 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08de121630 - ldr r1, _08de121608 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0xAF - bne _08de12162C - ldr r2, _08de12160C @ =gLinkPlayers - ldr r0, _08de121610 @ =0x02000000 - ldr r1, _08de121614 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08de121618 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08de121624 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08de12161C @ =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, _08de121620 @ =gUnknown_08400A85 - mov r0, sp - bl de_sub_8073174 - mov r4, sp - b _081219E6 - .align 2, 0 -_08de121604: .4byte gBattleTypeFlags -_08de121608: .4byte gLastUsedItem -_08de12160C: .4byte gLinkPlayers -_08de121610: .4byte 0x02000000 -_08de121614: .4byte 0x000160cb -_08de121618: .4byte gStringBank -_08de12161C: .4byte gEnigmaBerries -_08de121620: .4byte gUnknown_08400A85 -_08de121624: - ldr r4, _08de121628 @ =gUnknown_08400A78 - b _081219E6 - .align 2, 0 -_08de121628: .4byte gUnknown_08400A78 -_08de12162C: - ldrh r0, [r1] - b _08de121634 -_08de121630: - ldr r0, _08de121640 @ =gLastUsedItem - ldrh r0, [r0] -_08de121634: - mov r1, sp - bl CopyItemName - mov r4, sp - b _081219E6 - .align 2, 0 -_08de121640: .4byte gLastUsedItem -_081216EC: - ldr r0, _08de121648 @ =gLastUsedAbility - b _08de12168C - .align 2, 0 -_08de121648: .4byte gLastUsedAbility -_081216F4: - ldr r1, _08de121654 @ =gAbilitiesPerBank - ldr r0, _08de121658 @ =gBankAttacker - b _08de121688 - .align 2, 0 -_08de121654: .4byte gAbilitiesPerBank -_08de121658: .4byte gBankAttacker -_08121704: - ldr r1, _08de121664 @ =gAbilitiesPerBank - ldr r0, _08de121668 @ =gBankTarget - b _08de121688 - .align 2, 0 -_08de121664: .4byte gAbilitiesPerBank -_08de121668: .4byte gBankTarget -_08121714: - ldr r1, _08de121678 @ =gAbilitiesPerBank - ldr r0, _08de12167C @ =0x02000000 - ldr r2, _08de121680 @ =0x00016003 - adds r0, r2 - b _08de121688 - .align 2, 0 -_08de121678: .4byte gAbilitiesPerBank -_08de12167C: .4byte 0x02000000 -_08de121680: .4byte 0x00016003 -_0812172C: - ldr r1, _08de121698 @ =gAbilitiesPerBank - ldr r0, _08de12169C @ =gEffectBank -_08de121688: - ldrb r0, [r0] - adds r0, r1 -_08de12168C: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, _08de1216A0 @ =gAbilityNames - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de121698: .4byte gAbilitiesPerBank -_08de12169C: .4byte gEffectBank -_08de1216A0: .4byte gAbilityNames -_0812174C: - ldr r3, _08de1216B8 @ =gTrainerBattleOpponent - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08de1216BC - adds r0, r1, 0 - movs r1, 0 - b _08de1216EE - .align 2, 0 -_08de1216B8: .4byte gTrainerBattleOpponent -_08de1216BC: - ldr r0, _08de1216D4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08de1216D8 - adds r0, r2, 0 - movs r1, 0 - b _08de1216EE - .align 2, 0 -_08de1216D4: .4byte gBattleTypeFlags -_08de1216D8: - movs r2, 0x80 - lsls r2, 4 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08de1216EA - adds r0, r2, 0 - movs r1, 0 - b _08de1216EE -_08de1216EA: - ldrh r1, [r3] - movs r0, 0 -_08de1216EE: - bl de_sub_8041024 - adds r4, r0, 0 - b _081219E6 -_081217C0: - ldr r2, _08de12171C @ =gTrainerBattleOpponent - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08de121724 - mov r0, sp - movs r1, 0xFF - movs r2, 0x8 - bl memset - ldr r1, _08de121720 @ =0x02017002 - mov r0, sp - movs r2, 0x7 - bl memcpy - mov r4, sp - b _081219E6 - .align 2, 0 -_08de12171C: .4byte gTrainerBattleOpponent -_08de121720: .4byte 0x02017002 -_08de121724: - ldr r0, _08de12173C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08de121740 - mov r0, sp - bl get_trainer_name - mov r4, sp - b _081219E6 - .align 2, 0 -_08de12173C: .4byte gBattleTypeFlags -_08de121740: - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08de121754 - mov r0, sp - bl sub_8135FF4 - mov r4, sp - b _081219E6 -_08de121754: - ldrh r0, [r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08de121764 @ =gTrainers+4 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de121764: .4byte gTrainers+4 -_08121830: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _08de121774 @ =0x03002988 - adds r4, r0, r1 - b _081219E6 - .align 2, 0 -_08de121774: .4byte 0x03002988 -_08121840: - ldr r4, _08de121788 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _08de1217AE - .align 2, 0 -_08de121788: .4byte gLinkPlayers -_08121854: - ldr r4, _08de12179C @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _08de1217AE - .align 2, 0 -_08de12179C: .4byte gLinkPlayers -_08121868: - ldr r4, _08de1217C0 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_08de1217AE: - eors r0, r1 - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _081219E6 - .align 2, 0 -_08de1217C0: .4byte gLinkPlayers -_0812188C: - ldr r0, _08de1217DC @ =0x02000000 - ldr r3, _08de1217E0 @ =0x00016003 - adds r0, r3 - ldrb r0, [r0] - bl sub_803FC34 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08de1217E4 @ =0x03002988 - adds r4, r1, r0 - b _081219E6 - .align 2, 0 -_08de1217DC: .4byte 0x02000000 -_08de1217E0: .4byte 0x00016003 -_08de1217E4: .4byte 0x03002988 -_081218B0: - ldr r4, _08de1217EC @ =gSaveBlock2 - b _081219E6 - .align 2, 0 -_08de1217EC: .4byte gSaveBlock2 -_081218B8: - bl sub_8082830 - adds r4, r0, 0 - b _081219E6 -_081218C0: - ldr r4, _08de12182C @ =0x02000000 - ldr r5, _08de121830 @ =0x00016003 - adds r0, r4, r5 - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _08121934 - ldr r1, _08de121834 @ =0x0001605e - adds r0, r4, r1 - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121838 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _08de121846 - .align 2, 0 -_08de12182C: .4byte 0x02000000 -_08de121830: .4byte 0x00016003 -_08de121834: .4byte 0x0001605e -_08de121838: .4byte gEnemyParty -_08de12183C: - mov r2, r8 - adds r0, r2, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_08de121846: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _08de12183C -_08de12184E: - ldr r0, _08121920 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - ldr r4, _08121924 @ =gUnknown_08400791 - cmp r0, 0 - beq _081219E6 - ldr r4, _08121928 @ =gUnknown_08400797 - b _081219E6 - .align 2, 0 -_08121920: .4byte gBattleTypeFlags -_08121924: .4byte gUnknown_08400791 -_08121928: .4byte gUnknown_08400797 -_08121934: - ldr r3, _08121954 @ =0x0001605e - adds r0, r4, r3 - ldrb r1, [r0] -_0812193A: - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121958 @ =gPlayerParty -_08121940: - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0812194A: - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _081219E6 - .align 2, 0 -_08121954: .4byte 0x0001605e -_08121958: .4byte gPlayerParty -_0812195C: - ldr r0, _08121970 @ =0x0000084b - bl FlagGet - lsls r0, 24 - ldr r4, _08121974 @ =gUnknown_084009ED - cmp r0, 0 - beq _081219E6 - ldr r4, _08121978 @ =gUnknown_084009F7 - b _081219E6 - .align 2, 0 -_08121970: .4byte 0x0000084b -_08121974: .4byte gUnknown_084009ED -_08121978: .4byte gUnknown_084009F7 -_0812197C: - ldr r0, _08de1218B8 @ =gBankAttacker - b _08121986 - .align 2, 0 -_08de1218B8: .4byte gBankAttacker -_08121984: - ldr r0, _08121998 @ =gBankTarget -_08121986: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _0812199C @ =gUnknown_084007A7 - cmp r0, 0 - bne _081219E6 - ldr r4, _081219A0 @ =gUnknown_084007AC - b _081219E6 - .align 2, 0 -_08121998: .4byte gBankTarget -_0812199C: .4byte gUnknown_084007A7 -_081219A0: .4byte gUnknown_084007AC -_081219A4: - ldr r0, _081219A8 @ =gBankAttacker - b _081219AE - .align 2, 0 -_081219A8: .4byte gBankAttacker -_081219AC: - ldr r0, _081219C0 @ =gBankTarget -_081219AE: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _081219C4 @ =gUnknown_0840079C - cmp r0, 0 - bne _081219E6 - ldr r4, _081219C8 @ =gUnknown_084007A1 - b _081219E6 - .align 2, 0 -_081219C0: .4byte gBankTarget -_081219C4: .4byte gUnknown_0840079C -_081219C8: .4byte gUnknown_084007A1 -_081219CC: - ldr r0, _081219D0 @ =gBankAttacker - b _081219D6 - .align 2, 0 -_081219D0: .4byte gBankAttacker -_081219D4: - ldr r0, _08121A24 @ =gBankTarget -_081219D6: - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - ldr r4, _08121A28 @ =gUnknown_084007B2 - cmp r0, 0 - bne _081219E6 - ldr r4, _08121A2C @ =gUnknown_084007B7 -_081219E6: - ldrb r1, [r4] - adds r0, r1, 0 - mov r5, r9 - ldrb r2, [r5] - mov r3, r9 - adds r3, 0x1 - cmp r0, 0xFF - beq _08121A06 -_081219F4: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _081219F4 -_08121A06: - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x21 - bne _08121A3C - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _08121A3C - .align 2, 0 -_08121A24: .4byte gBankTarget -_08121A28: .4byte gUnknown_084007B2 -_08121A2C: .4byte gUnknown_084007B7 -_08121A30: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_08121A3C: - mov r9, r3 - ldrb r1, [r3] -_08121A40: - adds r0, r1, 0 - cmp r0, 0xFF - beq _08121A4A - bl _0812101E -_08121A4A: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end StrCpyDecodeBattle - - thumb_func_start sub_8121A68 -sub_8121A68: @ 8121A68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _08121A86 - b _08121D0E -_08121A86: - adds r0, r7, r5 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0xA - bls _08121A92 - b _08121D04 -_08121A92: - lsls r0, r1, 2 - ldr r1, _08121A9C @ =_08121AA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121A9C: .4byte _08121AA0 - .align 2, 0 -_08121AA0: - .4byte _08121ACC - .4byte _08121AE8 - .4byte _08121B3C - .4byte _08121B54 - .4byte _08121B64 - .4byte _08121BDC - .4byte _08121BF0 - .4byte _08121C02 - .4byte _08121C48 - .4byte _08121C5C - .4byte _08121C78 -_08121ACC: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - cmp r2, 0xD1 - beq _08de121ADA - cmp r2, 0xD3 - bne _08de121ADC -_08de121ADA: - adds r5, 0x3 -_08de121ADC: - ldr r0, _08121AE4 @ =gBattleStringsTable - adds r1, r2, 0 - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08121CE2 - .align 2, 0 -_08121AE4: .4byte gBattleStringsTable -_08121AE8: - adds r1, r2, 0 - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - beq _08121B04 - cmp r0, 0x2 - bgt _08121AF8 - cmp r0, 0x1 - beq _08121AFE - b _08121B26 -_08121AF8: - cmp r0, 0x4 - beq _08121B0C - b _08121B26 -_08121AFE: - ldrb r1, [r1, 0x3] - b _08de121B30 -_08121B04: - ldrb r0, [r1, 0x3] - mov r8, r0 - ldrb r0, [r1, 0x4] - lsls r0, 8 - mov r1, r8 - b _08121B22 -_08121B0C: - ldrb r0, [r2, 0x3] - mov r8, r0 - ldrb r0, [r2, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 -_08121B22: - orrs r1, r0 -_08de121B30: - mov r8, r1 -_08121B26: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _08121D04 -_08121B3C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, _08de121B5C @ =gMoveNames - adds r1, r0 - b _08121CE2 - .align 2, 0 -_08de121B5C: .4byte gMoveNames -_08121B54: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _08de121B6C @ =gTypeNames - b _08121C66 - .align 2, 0 -_08de121B6C: .4byte gTypeNames -_08121B64: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121B88 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121B84 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _08121D02 - .align 2, 0 -_08121B84: .4byte gPlayerParty -_08121B88: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08de121BD4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r0, _08121BA0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08121BA8 - ldr r1, _08121BA4 @ =gUnknown_08400797 - b _08121CE2 - .align 2, 0 -_08de121BD4: .4byte gEnemyParty -_08121BA0: .4byte gBattleTypeFlags -_08121BA4: .4byte gUnknown_08400797 -_08121BA8: - ldr r1, _08121BD4 @ =gUnknown_08400791 - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121BD4: .4byte gUnknown_08400791 -_08121BDC: - ldr r1, _08121BEC @ =gUnknown_08400F58 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121BEC: .4byte gUnknown_08400F58 -_08121BF0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _08121D02 -_08121C02: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08121C28 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C24 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _08121C3A - .align 2, 0 -_08121C24: .4byte gPlayerParty -_08121C28: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08121C44 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_08121C3A: - adds r0, r6, 0 - bl StringGetEnd10 - b _08121D02 - .align 2, 0 -_08121C44: .4byte gEnemyParty -_08121C48: - ldr r1, _08121C58 @ =gUnknown_08400F78 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _08121C68 - .align 2, 0 -_08121C58: .4byte gUnknown_08400F78 -_08121C5C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _08121C74 @ =gAbilityNames -_08121C66: - adds r1, r0 -_08121C68: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _08121D04 - .align 2, 0 -_08121C74: .4byte gAbilityNames -_08121C78: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, _08121CC4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08121CFA - cmp r2, 0xAF - bne _08121CF0 - ldr r2, _08121CC8 @ =gLinkPlayers - ldr r0, _08121CCC @ =0x02000000 - ldr r1, _08121CD0 @ =0x000160cb - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08121CD4 @ =gStringBank - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _08121CE0 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08121CD8 @ =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, _08121CDC @ =gUnknown_08400A85 - adds r0, r6, 0 - bl de_sub_8073174 - b _08121D02 - .align 2, 0 -_08121CC4: .4byte gBattleTypeFlags -_08121CC8: .4byte gLinkPlayers -_08121CCC: .4byte 0x02000000 -_08121CD0: .4byte 0x000160cb -_08121CD4: .4byte gStringBank -_08121CD8: .4byte gEnigmaBerries -_08121CDC: .4byte gUnknown_08400A85 -_08121CE0: - ldr r1, _08121CEC @ =gUnknown_08400A78 -_08121CE2: - adds r0, r6, 0 - bl StringAppend - b _08121D02 - .align 2, 0 -_08121CEC: .4byte gUnknown_08400A78 -_08121CF0: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _08121D02 -_08121CFA: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_08121D02: - adds r5, 0x3 -_08121D04: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08121D0E - b _08121A86 -_08121D0E: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8121A68 - - thumb_func_start sub_8121D1C -sub_8121D1C: @ 8121D1C - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _08121D50 @ =gSelectedOrderFromParty - ldr r3, _08121D54 @ =gUnknown_084016BC -_08121D26: - cmp r2, 0x4 - beq _08121D3C - ldrh r1, [r3] - cmp r1, 0 - bne _08121D32 - adds r2, 0x1 -_08121D32: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D26 -_08121D3C: - cmp r2, 0 - blt _08121D68 - cmp r2, 0x2 - bgt _08121D5C - ldr r1, _08121D58 @ =gUnknown_08400E5E - adds r0, r4, 0 - bl StringCopy - b _08121D68 - .align 2, 0 -_08121D50: .4byte gSelectedOrderFromParty -_08121D54: .4byte gUnknown_084016BC -_08121D58: .4byte gUnknown_08400E5E -_08121D5C: - cmp r2, 0x4 - bgt _08121D68 - ldr r1, _08121D70 @ =gUnknown_08400E62 - adds r0, r4, 0 - bl StringCopy -_08121D68: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121D70: .4byte gUnknown_08400E62 - thumb_func_end sub_8121D1C - - thumb_func_start sub_8121D74 -sub_8121D74: @ 8121D74 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _08121D7E -_08121D7C: - adds r3, 0x1 -_08121D7E: - ldrb r0, [r3] - cmp r0, 0xFF - bne _08121D7C - ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gSelectedOrderFromParty - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_08121D8E: - cmp r4, 0x4 - beq _08121DA8 - ldrh r1, [r2] - cmp r1, 0 - bne _08121D9A - adds r4, 0x1 -_08121D9A: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _08121D8E - cmp r4, 0x4 - bhi _08121E04 -_08121DA8: - lsls r0, r4, 2 - ldr r1, _08121DBC @ =_08121DC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gSelectedOrderFromParty -_08121DBC: .4byte _08121DC0 - .align 2, 0 -_08121DC0: - .4byte _08121DD4 - .4byte _08121DDC - .4byte _08121DE4 - .4byte _08121DEC - .4byte _08121DFC -_08121DD4: - ldr r1, _08121DD8 @ =gUnknown_084007C8 - b _08121DEE - .align 2, 0 -_08121DD8: .4byte gUnknown_084007C8 -_08121DDC: - ldr r1, _08121DE0 @ =gUnknown_084007CA - b _08121DEE - .align 2, 0 -_08121DE0: .4byte gUnknown_084007CA -_08121DE4: - ldr r1, _08121DE8 @ =gUnknown_084007CC - b _08121DEE - .align 2, 0 -_08121DE8: .4byte gUnknown_084007CC -_08121DEC: - ldr r1, _08121DF8 @ =gUnknown_084007CE -_08121DEE: - adds r0, r3, 0 - bl StringCopy - b _08121E04 - .align 2, 0 -_08121DF8: .4byte gUnknown_084007CE -_08121DFC: - ldr r1, _08121E0C @ =gUnknown_084007D0 - adds r0, r3, 0 - bl StringCopy -_08121E04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121E0C: .4byte gUnknown_084007D0 - thumb_func_end sub_8121D74 - - .align 2, 0 @ Don't pad with nop. diff --git a/src/battle_message.c b/src/battle_message.c index d4b8f86c6..350856818 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -42,57 +42,57 @@ extern u16 gBattlePartyID[4]; extern struct BattleEnigmaBerry gEnigmaBerries[4]; extern u8 gBattleBufferA[4][0x200]; -extern const u8 gUnknown_084005DB[]; -extern const u8 gUnknown_084005C7[]; -extern const u8 gUnknown_084005AA[]; -extern const u8 gUnknown_08400568[]; -extern const u8 gUnknown_08400590[]; -extern const u8 gUnknown_0840057B[]; -extern const u8 gUnknown_08400555[]; -extern const u8 gUnknown_084006F1[]; -extern const u8 gUnknown_084006A4[]; -extern const u8 gUnknown_0840069C[]; -extern const u8 gUnknown_0840065C[]; -extern const u8 gUnknown_08400645[]; -extern const u8 gUnknown_08400608[]; -extern const u8 gUnknown_08400635[]; -extern const u8 gUnknown_084005F5[]; -extern const u8 gUnknown_08400709[]; -extern const u8 gUnknown_08400727[]; -extern const u8 gUnknown_08400736[]; -extern const u8 gUnknown_08400749[]; -extern const u8 gUnknown_08400781[]; -extern const u8 gUnknown_08400771[]; -extern const u8 gUnknown_0840075E[]; -extern const u8 gUnknown_084006B3[]; -extern const u8 gUnknown_084006BB[]; -extern const u8 gUnknown_084006C6[]; -extern const u8 gUnknown_084006D5[]; -extern const u8 gUnknown_0840068C[]; -extern const u8 gUnknown_0840067C[]; -extern const u8 gUnknown_08400622[]; -extern const u8 gUnknown_084007BD[]; -extern const u8 gUnknown_083FFEFC[]; -extern const u8 gUnknown_083FFFF7[]; -extern const u8 gUnknown_083FFFEA[]; -extern const u8 gUnknown_083FFF6A[]; -extern const u8 gUnknown_083FFF99[]; -extern const u8 gUnknown_083FFFCB[]; -extern const u8 gUnknown_083FFF56[]; -extern const u8 gUnknown_083FFF81[]; -extern const u8 gUnknown_083FFFB3[]; -extern const u8 gUnknown_08400A78[]; -extern const u8 gUnknown_08400A85[]; -extern const u8 gUnknown_08400797[]; -extern const u8 gUnknown_08400791[]; -extern const u8 gUnknown_084007B7[]; -extern const u8 gUnknown_084007B2[]; -extern const u8 gUnknown_0840079C[]; -extern const u8 gUnknown_084007A1[]; -extern const u8 gUnknown_084007A7[]; -extern const u8 gUnknown_084007AC[]; -extern const u8 gUnknown_084009ED[]; -extern const u8 gUnknown_084009F7[]; +extern const u8 gUnknown_084005DB[]; +extern const u8 gUnknown_084005C7[]; +extern const u8 gUnknown_084005AA[]; +extern const u8 gUnknown_08400568[]; +extern const u8 gUnknown_08400590[]; +extern const u8 gUnknown_0840057B[]; +extern const u8 gUnknown_08400555[]; +extern const u8 gUnknown_084006F1[]; +extern const u8 gUnknown_084006A4[]; +extern const u8 gUnknown_0840069C[]; +extern const u8 gUnknown_0840065C[]; +extern const u8 gUnknown_08400645[]; +extern const u8 gUnknown_08400608[]; +extern const u8 gUnknown_08400635[]; +extern const u8 gUnknown_084005F5[]; +extern const u8 gUnknown_08400709[]; +extern const u8 gUnknown_08400727[]; +extern const u8 gUnknown_08400736[]; +extern const u8 gUnknown_08400749[]; +extern const u8 gUnknown_08400781[]; +extern const u8 gUnknown_08400771[]; +extern const u8 gUnknown_0840075E[]; +extern const u8 gUnknown_084006B3[]; +extern const u8 gUnknown_084006BB[]; +extern const u8 gUnknown_084006C6[]; +extern const u8 gUnknown_084006D5[]; +extern const u8 gUnknown_0840068C[]; +extern const u8 gUnknown_0840067C[]; +extern const u8 gUnknown_08400622[]; +extern const u8 gUnknown_084007BD[]; +extern const u8 gUnknown_083FFEFC[]; +extern const u8 gUnknown_083FFFF7[]; +extern const u8 gUnknown_083FFFEA[]; +extern const u8 gUnknown_083FFF6A[]; +extern const u8 gUnknown_083FFF99[]; +extern const u8 gUnknown_083FFFCB[]; +extern const u8 gUnknown_083FFF56[]; +extern const u8 gUnknown_083FFF81[]; +extern const u8 gUnknown_083FFFB3[]; +extern const u8 gUnknown_08400A78[]; +extern const u8 gUnknown_08400A85[]; +extern const u8 gUnknown_08400797[]; +extern const u8 gUnknown_08400791[]; +extern const u8 gUnknown_084007B7[]; +extern const u8 gUnknown_084007B2[]; +extern const u8 gUnknown_0840079C[]; +extern const u8 gUnknown_084007A1[]; +extern const u8 gUnknown_084007A7[]; +extern const u8 gUnknown_084007AC[]; +extern const u8 gUnknown_084009ED[]; +extern const u8 gUnknown_084009F7[]; extern const u8 gUnknown_084007C8[]; extern const u8 gUnknown_084007CA[]; extern const u8 gUnknown_084007CC[]; @@ -134,9 +134,9 @@ struct StringInfo extern struct StringInfo* gSelectedOrderFromParty; #define gStringInfo gSelectedOrderFromParty -static void sub_8121D1C(u8* textBuff); -static void sub_8121D74(u8* textBuff); -static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst); +void sub_8121D1C(u8* textBuff); +void sub_8121D74(u8* textBuff); +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst); u8 GetBankSide(u8 bank); s32 sub_803FC34(u16); @@ -147,6 +147,9 @@ u8 GetMultiplayerId(void); u8 GetBankByPlayerAI(u8 ID); u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); +#ifdef GERMAN +extern u8 *de_sub_804110C(); +#endif void BufferStringBattle(u16 stringID) { @@ -184,7 +187,12 @@ void BufferStringBattle(u16 stringID) stringPtr = gUnknown_084005C7; } else + { stringPtr = gUnknown_084005AA; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } } else { @@ -220,12 +228,22 @@ void BufferStringBattle(u16 stringID) else if (gBattleTypeFlags & BATTLE_TYPE_LINK) stringPtr = gUnknown_08400645; else + { stringPtr = gUnknown_08400608; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } } else if (gBattleTypeFlags & BATTLE_TYPE_LINK) stringPtr = gUnknown_08400635; else + { stringPtr = gUnknown_084005F5; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } } break; case 2: // sending poke to ball msg @@ -250,7 +268,12 @@ void BufferStringBattle(u16 stringID) stringPtr = gUnknown_08400771; } else + { stringPtr = gUnknown_0840075E; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } } break; case 3: // switch-in msg @@ -275,7 +298,12 @@ void BufferStringBattle(u16 stringID) stringPtr = gUnknown_0840067C; } else + { stringPtr = gUnknown_08400622; +#ifdef GERMAN + stringPtr = de_sub_804110C(0xFFFF, stringPtr); +#endif + } } break; case 4: // pokemon used a move msg @@ -346,7 +374,12 @@ void BufferStringBattle(u16 stringID) return; } else + { stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB]; +#ifdef GERMAN + stringPtr = de_sub_804110C(stringID, stringPtr); +#endif + } break; } StrCpyDecodeToDisplayedStringBattle(stringPtr); @@ -357,7 +390,7 @@ u32 StrCpyDecodeToDisplayedStringBattle(const u8* src) StrCpyDecodeBattle(src, gDisplayedStringBattle); } -static const u8* AppendStatusString(u8* src) +const u8* AppendStatusString(u8* src) { u32 i; u8 status[8]; @@ -385,6 +418,59 @@ static const u8* AppendStatusString(u8* src) return NULL; } +#ifdef GERMAN +extern u8 *de_sub_8073174(u8 *, const u8 *); +extern u8 *de_sub_8041024(s32, u32); +#endif + +#ifdef ENGLISH +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + StringGetEnd10(text); \ + toCpy = text; +#else +#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \ + if (GetBankSide(bank) != 0) \ + { \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = gUnknown_08400797; \ + else \ + toCpy = gUnknown_08400791; \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + StringGetEnd10(text); \ + toCpy = text; \ + } +#endif + u32 StrCpyDecodeBattle(const u8* src, u8* dst) { u32 dstID = 0; // if they used dstID, why not use srcID as well? @@ -471,25 +557,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = text; break; case 10: // attacker name with prefix, only bank 0/1 - if (GetBankSide(gBankAttacker) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]) break; case 11: // attacker partner name, only bank 0/1 if (GetBankSide(gBankAttacker) == 0) @@ -501,109 +569,19 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = text; break; case 12: // attacker name with prefix - if (GetBankSide(gBankAttacker) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[gBankAttacker]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker]) break; case 13: // target name with prefix - if (GetBankSide(gBankTarget) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[gBankTarget]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget]) break; case 14: // effect bank name with prefix - if (GetBankSide(gEffectBank) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[gEffectBank]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[gEffectBank]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank]) break; case 15: // active bank name with prefix - if (GetBankSide(gActiveBank) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank]) break; case 16: // scripting active bank name with prefix - if (GetBankSide(BATTLE_STRUCT->scriptingActive) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattlePartyID[BATTLE_STRUCT->scriptingActive]], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[gBattlePartyID[BATTLE_STRUCT->scriptingActive]], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive]) break; case 17: // current move name if (gStringInfo->currentMove > 0x162) @@ -625,7 +603,11 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) { StringCopy(text, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH StringAppend(text, gUnknown_08400A85); +#else + de_sub_8073174(text, gUnknown_08400A85); +#endif toCpy = text; } else @@ -659,6 +641,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; break; case 25: // trainer class name +#ifdef ENGLISH if (gTrainerBattleOpponent == 0x400) toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) @@ -668,6 +651,17 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) else toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass]; break; +#else + if (gTrainerBattleOpponent == 0x400) + toCpy = de_sub_8041024(gTrainerBattleOpponent, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0); + else + toCpy = de_sub_8041024(0, gTrainerBattleOpponent); + break; +#endif case 26: // trainer name if (gTrainerBattleOpponent == 0x400) { @@ -710,25 +704,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = sub_8082830(); break; case 34: // ? - if (GetBankSide(BATTLE_STRUCT->scriptingActive) != 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - toCpy = gUnknown_08400797; - else - toCpy = gUnknown_08400791; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[BATTLE_STRUCT->unk1605E], MON_DATA_NICKNAME, text); - } - else - GetMonData(&gPlayerParty[BATTLE_STRUCT->unk1605E], MON_DATA_NICKNAME, text); - - StringGetEnd10(text); - toCpy = text; + HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E) break; case 35: // lanette pc if (FlagGet(SYS_PC_LANETTE)) @@ -773,7 +749,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = gUnknown_084007B2; break; } - //if (toCpy != NULL) really GF, why did you forgot about this + //if (toCpy != NULL) really GF, why did you forget about this? while (*toCpy != EOS) { dst[dstID] = *toCpy; @@ -803,23 +779,26 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) #define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) #define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) -static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) +void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) { u32 srcID = 1; u32 value = 0; u8 text[12]; + u16 hword; *dst = EOS; while (src[srcID] != EOS) { switch (src[srcID]) { - case 0: // battlescript ptr - { - u16 BS_ID = ByteRead16(&src[srcID + 1]); - StringAppend(dst, gBattleStringsTable[BS_ID - BATTLESTRING_TO_SUB]); + case 0: // battle string + hword = ByteRead16(&src[srcID + 1]); +#ifdef GERMAN + if (hword == 209 || hword == 211) srcID += 3; - } +#endif + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]); + srcID += 3; break; case 1: // int to string switch (src[srcID + 1]) @@ -846,6 +825,7 @@ static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) srcID += 2; break; case 4: // poke nick with prefix +#ifdef ENGLISH if (GetBankSide(src[srcID + 1]) == 0) { GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); @@ -860,6 +840,24 @@ static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) } StringGetEnd10(text); StringAppend(dst, text); +#else + if (GetBankSide(src[srcID + 1]) == 0) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + } + else + { + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + StringGetEnd10(text); + StringAppend(dst, text); + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, gUnknown_08400797); + else + StringAppend(dst, gUnknown_08400791); + } +#endif srcID += 3; break; case 5: // stats @@ -888,24 +886,28 @@ static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) break; case 10: // item name { - u16 item = ByteRead16(&src[srcID + 1]); + hword = ByteRead16(&src[srcID + 1]); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (item == ITEM_ENIGMA_BERRY) + if (hword == ITEM_ENIGMA_BERRY) { if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) { StringCopy(dst, gEnigmaBerries[gStringBank].name); +#ifdef ENGLISH StringAppend(dst, gUnknown_08400A85); +#else + de_sub_8073174(dst, gUnknown_08400A85); +#endif } else StringAppend(dst, gUnknown_08400A78); } else - CopyItemName(item, dst); + CopyItemName(hword, dst); } else - CopyItemName(item, dst); + CopyItemName(hword, dst); srcID += 3; } break; @@ -913,7 +915,7 @@ static void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) } } -static void sub_8121D1C(u8* textBuff) +void sub_8121D1C(u8* textBuff) { s32 counter = 0; u32 i = 0; @@ -937,7 +939,7 @@ static void sub_8121D1C(u8* textBuff) #ifdef NONMATCHING -static void sub_8121D74(u8* dst) +void sub_8121D74(u8* dst) { s32 counter = 0; s32 i; @@ -975,88 +977,88 @@ static void sub_8121D74(u8* dst) #else __attribute__((naked)) -static void sub_8121D74(u8* dst) +void sub_8121D74(u8* dst) { asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r3, r0, 0\n\ - movs r4, 0\n\ - b _08121D7E\n\ + push {r4,r5,lr}\n\ + adds r3, r0, 0\n\ + movs r4, 0\n\ + b _08121D7E\n\ _08121D7C:\n\ - adds r3, 0x1\n\ + adds r3, 0x1\n\ _08121D7E:\n\ - ldrb r0, [r3]\n\ - cmp r0, 0xFF\n\ - bne _08121D7C\n\ - ldr r1, _08121DB4 @ =gUnknown_084016BC\n\ - ldr r5, _08121DB8 @ =gSelectedOrderFromParty\n\ - movs r0, 0\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ + ldrb r0, [r3]\n\ + cmp r0, 0xFF\n\ + bne _08121D7C\n\ + ldr r1, _08121DB4 @ =gUnknown_084016BC\n\ + ldr r5, _08121DB8 @ =gSelectedOrderFromParty\n\ + movs r0, 0\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ _08121D8E:\n\ - cmp r4, 0x4\n\ - beq _08121DA8\n\ - ldrh r1, [r2]\n\ - cmp r1, 0\n\ - bne _08121D9A\n\ - adds r4, 0x1\n\ + cmp r4, 0x4\n\ + beq _08121DA8\n\ + ldrh r1, [r2]\n\ + cmp r1, 0\n\ + bne _08121D9A\n\ + adds r4, 0x1\n\ _08121D9A:\n\ - ldr r0, [r5]\n\ - adds r2, 0x2\n\ - ldrh r0, [r0]\n\ - cmp r1, r0\n\ - bne _08121D8E\n\ - cmp r4, 0x4\n\ - bhi _08121E04\n\ + ldr r0, [r5]\n\ + adds r2, 0x2\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bne _08121D8E\n\ + cmp r4, 0x4\n\ + bhi _08121E04\n\ _08121DA8:\n\ - lsls r0, r4, 2\n\ - ldr r1, _08121DBC @ =_08121DC0\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + lsls r0, r4, 2\n\ + ldr r1, _08121DBC @ =_08121DC0\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _08121DB4: .4byte gUnknown_084016BC\n\ _08121DB8: .4byte gSelectedOrderFromParty\n\ _08121DBC: .4byte _08121DC0\n\ - .align 2, 0\n\ + .align 2, 0\n\ _08121DC0:\n\ - .4byte _08121DD4\n\ - .4byte _08121DDC\n\ - .4byte _08121DE4\n\ - .4byte _08121DEC\n\ - .4byte _08121DFC\n\ + .4byte _08121DD4\n\ + .4byte _08121DDC\n\ + .4byte _08121DE4\n\ + .4byte _08121DEC\n\ + .4byte _08121DFC\n\ _08121DD4:\n\ - ldr r1, _08121DD8 @ =gUnknown_084007C8\n\ - b _08121DEE\n\ - .align 2, 0\n\ + ldr r1, _08121DD8 @ =gUnknown_084007C8\n\ + b _08121DEE\n\ + .align 2, 0\n\ _08121DD8: .4byte gUnknown_084007C8\n\ _08121DDC:\n\ - ldr r1, _08121DE0 @ =gUnknown_084007CA\n\ - b _08121DEE\n\ - .align 2, 0\n\ + ldr r1, _08121DE0 @ =gUnknown_084007CA\n\ + b _08121DEE\n\ + .align 2, 0\n\ _08121DE0: .4byte gUnknown_084007CA\n\ _08121DE4:\n\ - ldr r1, _08121DE8 @ =gUnknown_084007CC\n\ - b _08121DEE\n\ - .align 2, 0\n\ + ldr r1, _08121DE8 @ =gUnknown_084007CC\n\ + b _08121DEE\n\ + .align 2, 0\n\ _08121DE8: .4byte gUnknown_084007CC\n\ _08121DEC:\n\ - ldr r1, _08121DF8 @ =gUnknown_084007CE\n\ + ldr r1, _08121DF8 @ =gUnknown_084007CE\n\ _08121DEE:\n\ - adds r0, r3, 0\n\ - bl StringCopy\n\ - b _08121E04\n\ - .align 2, 0\n\ + adds r0, r3, 0\n\ + bl StringCopy\n\ + b _08121E04\n\ + .align 2, 0\n\ _08121DF8: .4byte gUnknown_084007CE\n\ _08121DFC:\n\ - ldr r1, _08121E0C @ =gUnknown_084007D0\n\ - adds r0, r3, 0\n\ - bl StringCopy\n\ + ldr r1, _08121E0C @ =gUnknown_084007D0\n\ + adds r0, r3, 0\n\ + bl StringCopy\n\ _08121E04:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _08121E0C: .4byte gUnknown_084007D0\n\ .syntax divided"); } -- cgit v1.2.3 From 872c04bd73b5fb1f68f5f5a668b70cdd778a397f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 23:15:13 +0200 Subject: cam fixed the last nonmatching function --- src/battle_message.c | 96 ++-------------------------------------------------- 1 file changed, 2 insertions(+), 94 deletions(-) diff --git a/src/battle_message.c b/src/battle_message.c index 350856818..37ec14459 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -937,17 +937,14 @@ void sub_8121D1C(u8* textBuff) } } -#ifdef NONMATCHING - void sub_8121D74(u8* dst) { s32 counter = 0; - s32 i; + s32 i = 0; while (*dst != EOS) dst++; - i = 0; while (counter != 4) { if (gUnknown_084016BC[i] == 0) @@ -955,6 +952,7 @@ void sub_8121D74(u8* dst) if (gUnknown_084016BC[i++] == gStringInfo->currentMove) break; } + switch (counter) { case 0: @@ -974,93 +972,3 @@ void sub_8121D74(u8* dst) break; } } - -#else -__attribute__((naked)) -void sub_8121D74(u8* dst) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r3, r0, 0\n\ - movs r4, 0\n\ - b _08121D7E\n\ -_08121D7C:\n\ - adds r3, 0x1\n\ -_08121D7E:\n\ - ldrb r0, [r3]\n\ - cmp r0, 0xFF\n\ - bne _08121D7C\n\ - ldr r1, _08121DB4 @ =gUnknown_084016BC\n\ - ldr r5, _08121DB8 @ =gSelectedOrderFromParty\n\ - movs r0, 0\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ -_08121D8E:\n\ - cmp r4, 0x4\n\ - beq _08121DA8\n\ - ldrh r1, [r2]\n\ - cmp r1, 0\n\ - bne _08121D9A\n\ - adds r4, 0x1\n\ -_08121D9A:\n\ - ldr r0, [r5]\n\ - adds r2, 0x2\n\ - ldrh r0, [r0]\n\ - cmp r1, r0\n\ - bne _08121D8E\n\ - cmp r4, 0x4\n\ - bhi _08121E04\n\ -_08121DA8:\n\ - lsls r0, r4, 2\n\ - ldr r1, _08121DBC @ =_08121DC0\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08121DB4: .4byte gUnknown_084016BC\n\ -_08121DB8: .4byte gSelectedOrderFromParty\n\ -_08121DBC: .4byte _08121DC0\n\ - .align 2, 0\n\ -_08121DC0:\n\ - .4byte _08121DD4\n\ - .4byte _08121DDC\n\ - .4byte _08121DE4\n\ - .4byte _08121DEC\n\ - .4byte _08121DFC\n\ -_08121DD4:\n\ - ldr r1, _08121DD8 @ =gUnknown_084007C8\n\ - b _08121DEE\n\ - .align 2, 0\n\ -_08121DD8: .4byte gUnknown_084007C8\n\ -_08121DDC:\n\ - ldr r1, _08121DE0 @ =gUnknown_084007CA\n\ - b _08121DEE\n\ - .align 2, 0\n\ -_08121DE0: .4byte gUnknown_084007CA\n\ -_08121DE4:\n\ - ldr r1, _08121DE8 @ =gUnknown_084007CC\n\ - b _08121DEE\n\ - .align 2, 0\n\ -_08121DE8: .4byte gUnknown_084007CC\n\ -_08121DEC:\n\ - ldr r1, _08121DF8 @ =gUnknown_084007CE\n\ -_08121DEE:\n\ - adds r0, r3, 0\n\ - bl StringCopy\n\ - b _08121E04\n\ - .align 2, 0\n\ -_08121DF8: .4byte gUnknown_084007CE\n\ -_08121DFC:\n\ - ldr r1, _08121E0C @ =gUnknown_084007D0\n\ - adds r0, r3, 0\n\ - bl StringCopy\n\ -_08121E04:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08121E0C: .4byte gUnknown_084007D0\n\ - .syntax divided"); -} - -#endif // NONMATCHING -- cgit v1.2.3 From 88f0eef3f20dc3e1c8411c02862700669dad0932 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 20 Aug 2017 16:27:51 -0500 Subject: make IsMonAllowedInBattleTower match --- src/choose_party.c | 96 ++++-------------------------------------------------- 1 file changed, 7 insertions(+), 89 deletions(-) diff --git a/src/choose_party.c b/src/choose_party.c index d8df44028..7b2c833e1 100644 --- a/src/choose_party.c +++ b/src/choose_party.c @@ -211,11 +211,10 @@ bool8 sub_8121E78(void) return FALSE; } -#ifdef NONMATCHING static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) { - u16 r3; - s32 i; + u16 species; + s32 i = 0; if (GetMonData(pkmn, MON_DATA_IS_EGG)) return FALSE; @@ -232,97 +231,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; - r3 = GetMonData(pkmn, MON_DATA_SPECIES); - // Can't stop the compiler from optimizing out the first index - for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++) + // Check if the pkmn is in the ban list + species = GetMonData(pkmn, MON_DATA_SPECIES); + while (gBattleTowerBanlist[i] != 0xFFFF) { - if (gBattleTowerBanlist[i] == r3) + if (gBattleTowerBanlist[i] == species) return FALSE; + i++; } return TRUE; } -#else -__attribute__((naked)) -static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) -{ - asm_unified( - "push {r4,lr}\n\ - adds r4, r0, 0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _0812207C\n\ - ldr r0, _08122058 @ =0x0201b000\n\ - ldr r1, _0812205C @ =0x00000263\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08122060\n\ - adds r0, r4, 0\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _0812207C\n\ - b _081220B6\n\ - .align 2, 0\n\ -_08122058: .4byte 0x0201b000\n\ -_0812205C: .4byte 0x00000263\n\ -_08122060:\n\ - ldr r0, _08122080 @ =gSaveBlock2\n\ - ldr r1, _08122084 @ =0x00000554\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08122088\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x32\n\ - bls _08122088\n\ -_0812207C:\n\ - movs r0, 0\n\ - b _081220B8\n\ - .align 2, 0\n\ -_08122080: .4byte gSaveBlock2\n\ -_08122084: .4byte 0x00000554\n\ -_08122088:\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldr r1, _081220C0 @ =gBattleTowerBanlist\n\ - movs r0, 0\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ - ldrh r0, [r2]\n\ - ldr r1, _081220C4 @ =0x0000ffff\n\ - cmp r0, r1\n\ - beq _081220B6\n\ - adds r4, r1, 0\n\ - adds r1, r2, 0\n\ -_081220A8:\n\ - ldrh r0, [r1]\n\ - cmp r0, r3\n\ - beq _0812207C\n\ - adds r1, 0x2\n\ - ldrh r0, [r1]\n\ - cmp r0, r4\n\ - bne _081220A8\n\ -_081220B6:\n\ - movs r0, 0x1\n\ -_081220B8:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_081220C0: .4byte gBattleTowerBanlist\n\ -_081220C4: .4byte 0x0000ffff\n" - ); -} -#endif static u8 sub_81220C8(void) { -- cgit v1.2.3 From 56eacd725bb6da9c4ff0b0b4f8058341deba3e97 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 10:41:07 +0200 Subject: fix german build of berry blender --- asm-de/berry_blender.s | 9141 ------------------------------------------------ src/berry_blender.c | 41 +- 2 files changed, 38 insertions(+), 9144 deletions(-) delete mode 100644 asm-de/berry_blender.s diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s deleted file mode 100644 index 16c6784b7..000000000 --- a/asm-de/berry_blender.s +++ /dev/null @@ -1,9141 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_804E290 -sub_804E290: @ 804E290 - push {lr} - ldr r0, _0804E2B0 @ =gMPlay_SE2 - ldr r1, _0804E2B4 @ =0x0000ffff - ldr r2, _0804E2B8 @ =gUnknown_03004854 - ldr r2, [r2] - adds r2, 0x56 - movs r3, 0 - ldrsh r2, [r2, r3] - subs r2, 0x80 - lsls r2, 17 - asrs r2, 16 - bl m4aMPlayPitchControl - pop {r0} - bx r0 - .align 2, 0 -_0804E2B0: .4byte gMPlay_SE2 -_0804E2B4: .4byte 0x0000ffff -_0804E2B8: .4byte gUnknown_03004854 - thumb_func_end sub_804E290 - - thumb_func_start sub_804E2BC -sub_804E2BC: @ 804E2BC - push {lr} - bl sub_80514A4 - bl sub_80514F0 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2BC - - thumb_func_start sub_804E2D8 -sub_804E2D8: @ 804E2D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804E2D8 - - thumb_func_start sub_804E2EC -sub_804E2EC: @ 804E2EC - push {r4-r7,lr} - ldr r1, _0804E308 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - mov r12, r1 - cmp r0, 0x9 - bls _0804E2FC - b _0804E4F4 -_0804E2FC: - lsls r0, 2 - ldr r1, _0804E30C @ =_0804E310 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E308: .4byte gUnknown_03004854 -_0804E30C: .4byte _0804E310 - .align 2, 0 -_0804E310: - .4byte _0804E338 - .4byte _0804E34C - .4byte _0804E380 - .4byte _0804E3C4 - .4byte _0804E3D8 - .4byte _0804E3EC - .4byte _0804E410 - .4byte _0804E434 - .4byte _0804E48C - .4byte _0804E4BC -_0804E338: - ldr r0, _0804E344 @ =gUnknown_08E6C100 - ldr r1, _0804E348 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E344: .4byte gUnknown_08E6C100 -_0804E348: .4byte 0x02010000 -_0804E34C: - ldr r1, _0804E36C @ =gUnknown_08215C2C - ldr r2, _0804E370 @ =0x06004000 - ldr r0, _0804E374 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E378 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _0804E37C @ =gUnknown_08215C0C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E36C: .4byte gUnknown_08215C2C -_0804E370: .4byte 0x06004000 -_0804E374: .4byte 0x040000d4 -_0804E378: .4byte 0x80000200 -_0804E37C: .4byte gUnknown_08215C0C -_0804E380: - ldr r3, _0804E3B8 @ =0x02010000 - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _0804E3BC @ =0x040000d4 - ldr r6, _0804E3C0 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_0804E396: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _0804E396 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E3B8: .4byte 0x02010000 -_0804E3BC: .4byte 0x040000d4 -_0804E3C0: .4byte 0x80000800 -_0804E3C4: - ldr r0, _0804E3D0 @ =gUnknown_08E6C920 - ldr r1, _0804E3D4 @ =0x02010000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3D0: .4byte gUnknown_08E6C920 -_0804E3D4: .4byte 0x02010000 -_0804E3D8: - ldr r0, _0804E3E4 @ =gUnknown_08E6D354 - ldr r1, _0804E3E8 @ =0x02013000 - bl sub_800D238 - b _0804E49E - .align 2, 0 -_0804E3E4: .4byte gUnknown_08E6D354 -_0804E3E8: .4byte 0x02013000 -_0804E3EC: - ldr r1, _0804E400 @ =0x02010000 - ldr r2, _0804E404 @ =0x0600e000 - ldr r0, _0804E408 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E40C @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E400: .4byte 0x02010000 -_0804E404: .4byte 0x0600e000 -_0804E408: .4byte 0x040000d4 -_0804E40C: .4byte 0x80000800 -_0804E410: - ldr r1, _0804E424 @ =0x02011000 - ldr r2, _0804E428 @ =0x0600f000 - ldr r0, _0804E42C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0804E430 @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - b _0804E4A0 - .align 2, 0 -_0804E424: .4byte 0x02011000 -_0804E428: .4byte 0x0600f000 -_0804E42C: .4byte 0x040000d4 -_0804E430: .4byte 0x80000800 -_0804E434: - ldr r3, _0804E474 @ =0x02013000 - movs r2, 0 - adds r6, r3, 0 - ldr r7, _0804E478 @ =gUnknown_0821602C - movs r0, 0x80 - lsls r0, 1 - adds r5, r0, 0 - ldr r4, _0804E47C @ =0x0000027f -_0804E444: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bls _0804E444 - ldr r1, _0804E480 @ =0x06006000 - ldr r0, _0804E484 @ =0x040000d4 - str r6, [r0] - str r1, [r0, 0x4] - ldr r1, _0804E488 @ =0x80000280 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r7, 0 - movs r1, 0x80 - movs r2, 0x20 - bl LoadPalette - b _0804E49E - .align 2, 0 -_0804E474: .4byte 0x02013000 -_0804E478: .4byte gUnknown_0821602C -_0804E47C: .4byte 0x0000027f -_0804E480: .4byte 0x06006000 -_0804E484: .4byte 0x040000d4 -_0804E488: .4byte 0x80000280 -_0804E48C: - ldr r0, _0804E4AC @ =gUnknown_082163DC - bl LoadSpriteSheet - ldr r0, _0804E4B0 @ =gUnknown_082164F4 - bl LoadSpriteSheet - ldr r0, _0804E4B4 @ =gUnknown_08216454 - bl LoadSpriteSheet -_0804E49E: - ldr r0, _0804E4B8 @ =gUnknown_03004854 -_0804E4A0: - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0804E4F4 - .align 2, 0 -_0804E4AC: .4byte gUnknown_082163DC -_0804E4B0: .4byte gUnknown_082164F4 -_0804E4B4: .4byte gUnknown_08216454 -_0804E4B8: .4byte gUnknown_03004854 -_0804E4BC: - ldr r0, _0804E4E0 @ =gUnknown_08216540 - bl LoadSpriteSheet - ldr r0, _0804E4E4 @ =gUnknown_08216574 - bl LoadSpriteSheet - ldr r0, _0804E4E8 @ =gUnknown_082163EC - bl LoadSpritePalette - ldr r0, _0804E4EC @ =gUnknown_082163E4 - bl LoadSpritePalette - ldr r0, _0804E4F0 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _0804E4F6 - .align 2, 0 -_0804E4E0: .4byte gUnknown_08216540 -_0804E4E4: .4byte gUnknown_08216574 -_0804E4E8: .4byte gUnknown_082163EC -_0804E4EC: .4byte gUnknown_082163E4 -_0804E4F0: .4byte gUnknown_03004854 -_0804E4F4: - movs r0, 0 -_0804E4F6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E2EC - - thumb_func_start sub_804E4FC -sub_804E4FC: @ 804E4FC - movs r1, 0x80 - lsls r1, 19 - ldr r2, _0804E52C @ =0x00001341 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0xC - movs r2, 0x91 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0804E530 @ =0x00000c0d - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804E534 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_0804E52C: .4byte 0x00001341 -_0804E530: .4byte 0x00000c0d -_0804E534: .4byte REG_BG0HOFS - thumb_func_end sub_804E4FC - - thumb_func_start sub_804E538 -sub_804E538: @ 804E538 - push {lr} - ldr r1, _0804E55C @ =gUnknown_03004854 - ldr r0, _0804E560 @ =0x02018000 - str r0, [r1] - adds r2, r0, 0 - adds r2, 0x6F - movs r1, 0 - strb r1, [r0] - strb r1, [r2] - ldr r0, _0804E564 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl sub_804E884 - ldr r0, _0804E568 @ =sub_804E56C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804E55C: .4byte gUnknown_03004854 -_0804E560: .4byte 0x02018000 -_0804E564: .4byte gSpecialVar_0x8004 -_0804E568: .4byte sub_804E56C - thumb_func_end sub_804E538 - - thumb_func_start sub_804E56C -sub_804E56C: @ 804E56C - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _0804E588 @ =gUnknown_03004854 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0804E57C - b _0804E71A -_0804E57C: - lsls r0, 2 - ldr r1, _0804E58C @ =_0804E590 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E588: .4byte gUnknown_03004854 -_0804E58C: .4byte _0804E590 - .align 2, 0 -_0804E590: - .4byte _0804E5AC - .4byte _0804E614 - .4byte _0804E67C - .4byte _0804E692 - .4byte _0804E6A8 - .4byte _0804E6D4 - .4byte _0804E700 -_0804E5AC: - movs r0, 0x80 - lsls r0, 19 - movs r5, 0 - strh r5, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0804E60C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r3, _0804E610 @ =gUnknown_03004854 - ldr r2, [r3] - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2] - ldr r2, [r3] - movs r3, 0xA0 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0xA1 - lsls r0, 1 - adds r3, r2, r0 - movs r0, 0x50 - strh r0, [r3] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - strb r5, [r2, 0x1] - bl sub_8051474 - b _0804E71A - .align 2, 0 -_0804E60C: .4byte gWindowConfig_81E6F68 -_0804E610: .4byte gUnknown_03004854 -_0804E614: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804E620 - b _0804E71A -_0804E620: - movs r4, 0 - ldr r5, _0804E668 @ =gUnknown_082162E4 - ldr r6, _0804E66C @ =gUnknown_03004854 -_0804E626: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804E670 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x5C - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5C - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804E674 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804E626 - ldr r0, _0804E678 @ =sub_804E2BC - bl SetVBlankCallback - b _0804E6BE - .align 2, 0 -_0804E668: .4byte gUnknown_082162E4 -_0804E66C: .4byte gUnknown_03004854 -_0804E670: .4byte gSpriteTemplate_82163F4 -_0804E674: .4byte gSprites -_0804E678: .4byte sub_804E2BC -_0804E67C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8051474 - b _0804E6BE -_0804E692: - bl sub_804E4FC - ldr r0, _0804E6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E71A - b _0804E6BE - .align 2, 0 -_0804E6A4: .4byte gPaletteFade -_0804E6A8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_0804E6BE: - ldr r0, _0804E6D0 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804E71A - .align 2, 0 -_0804E6CC: .4byte gOtherText_BlenderChooseBerry -_0804E6D0: .4byte gUnknown_03004854 -_0804E6D4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804E71A - ldr r0, _0804E6FC @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0804E71A - .align 2, 0 -_0804E6FC: .4byte gUnknown_03004854 -_0804E700: - ldr r0, _0804E730 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804E71A - bl sub_80A6978 - ldr r0, _0804E734 @ =gUnknown_03004854 - ldr r0, [r0] - strb r4, [r0] -_0804E71A: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E730: .4byte gPaletteFade -_0804E734: .4byte gUnknown_03004854 - thumb_func_end sub_804E56C - - thumb_func_start sub_804E738 -sub_804E738: @ 804E738 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r1, r2 - ldrh r0, [r4, 0x3C] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r3, [r4, 0x2E] - adds r0, r3 - strh r0, [r4, 0x2E] - subs r2, 0x1 - strh r2, [r4, 0x36] - lsls r0, 16 - lsls r1, 16 - cmp r0, r1 - bge _0804E786 - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x36] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0804E780 - adds r0, r4, 0 - bl DestroySprite - b _0804E786 -_0804E780: - movs r0, 0x74 - bl PlaySE -_0804E786: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E738 - - thumb_func_start sub_804E794 -sub_804E794: @ 804E794 - push {r4-r6,lr} - ldr r5, [sp, 0x10] - ldr r6, [sp, 0x14] - lsls r2, 16 - lsrs r2, 16 - movs r4, 0 - strh r2, [r0, 0x2E] - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - strh r3, [r0, 0x34] - movs r1, 0xA - strh r1, [r0, 0x36] - strh r4, [r0, 0x38] - strh r5, [r0, 0x3A] - strh r6, [r0, 0x3C] - ldr r1, _0804E7BC @ =sub_804E738 - str r1, [r0, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E7BC: .4byte sub_804E738 - thumb_func_end sub_804E794 - - thumb_func_start sub_804E7C0 -sub_804E7C0: @ 804E7C0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r0, 24 - movs r1, 0xF6 - lsls r1, 23 - adds r0, r1 - lsrs r0, 24 - movs r3, 0x1 - ands r3, r6 - movs r1, 0 - movs r2, 0x50 - bl sub_80A7DEC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - mov r8, r2 - add r8, r0 - mov r3, r8 - lsls r3, 2 - mov r8, r3 - ldr r0, _0804E83C @ =gSprites - add r8, r0 - ldr r5, _0804E840 @ =gUnknown_08216594 - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 1 - adds r0, r4, r5 - movs r6, 0 - ldrsh r1, [r0, r6] - adds r0, r5, 0x2 - adds r0, r4, r0 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r0, r5, 0x4 - adds r0, r4, r0 - movs r6, 0 - ldrsh r3, [r0, r6] - adds r0, r5, 0x6 - adds r0, r4, r0 - movs r6, 0 - ldrsh r0, [r0, r6] - str r0, [sp] - adds r5, 0x8 - adds r4, r5 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - mov r0, r8 - bl sub_804E794 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E83C: .4byte gSprites -_0804E840: .4byte gUnknown_08216594 - thumb_func_end sub_804E7C0 - - thumb_func_start sub_804E844 -sub_804E844: @ 804E844 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r0, 0x7C - lsls r0, 24 - lsrs r0, 24 - bl GetBerryInfo - adds r4, r0, 0 - strh r5, [r6] - adds r0, r6, 0x2 - adds r1, r4, 0 - bl StringCopy - ldrb r0, [r4, 0x15] - strb r0, [r6, 0x9] - ldrb r0, [r4, 0x16] - strb r0, [r6, 0xA] - ldrb r0, [r4, 0x17] - strb r0, [r6, 0xB] - ldrb r0, [r4, 0x18] - strb r0, [r6, 0xC] - ldrb r0, [r4, 0x19] - strb r0, [r6, 0xD] - ldrb r0, [r4, 0x1A] - strb r0, [r6, 0xE] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804E844 - - thumb_func_start sub_804E884 -sub_804E884: @ 804E884 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E89E - ldr r2, _0804E8AC @ =gLinkPlayers - movs r3, 0x5 - adds r0, r2, 0 - adds r0, 0x54 -_0804E896: - strh r3, [r0, 0x1A] - subs r0, 0x1C - cmp r0, r2 - bge _0804E896 -_0804E89E: - cmp r1, 0x1 - beq _0804E8C4 - cmp r1, 0x1 - bgt _0804E8B0 - cmp r1, 0 - beq _0804E8BA - b _0804E974 - .align 2, 0 -_0804E8AC: .4byte gLinkPlayers -_0804E8B0: - cmp r1, 0x2 - beq _0804E8F8 - cmp r1, 0x3 - beq _0804E93C - b _0804E974 -_0804E8BA: - ldr r0, _0804E8C0 @ =gUnknown_03004834 - strb r1, [r0] - b _0804E974 - .align 2, 0 -_0804E8C0: .4byte gUnknown_03004834 -_0804E8C4: - ldr r0, _0804E8E4 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E8E8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x2 - strb r1, [r0] - ldr r4, _0804E8EC @ =gLinkPlayers + 0x8 - ldr r1, _0804E8F0 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r4, 0x1C - ldr r0, _0804E8F4 @ =gUnknown_082162B8 - ldr r1, [r0] - b _0804E920 - .align 2, 0 -_0804E8E4: .4byte gUnknown_03004834 -_0804E8E8: .4byte gUnknown_03004854 -_0804E8EC: .4byte gLinkPlayers + 0x8 -_0804E8F0: .4byte gSaveBlock2 -_0804E8F4: .4byte gUnknown_082162B8 -_0804E8F8: - ldr r0, _0804E928 @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E92C @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0804E930 @ =gLinkPlayers + 0x8 - ldr r1, _0804E934 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E938 @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r4, 0x38 - ldr r1, [r5, 0x4] -_0804E920: - adds r0, r4, 0 - bl StringCopy - b _0804E974 - .align 2, 0 -_0804E928: .4byte gUnknown_03004834 -_0804E92C: .4byte gUnknown_03004854 -_0804E930: .4byte gLinkPlayers + 0x8 -_0804E934: .4byte gSaveBlock2 -_0804E938: .4byte gUnknown_082162B8 -_0804E93C: - ldr r0, _0804E97C @ =gUnknown_03004834 - strb r1, [r0] - ldr r0, _0804E980 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x88 - movs r1, 0x4 - strb r1, [r0] - ldr r4, _0804E984 @ =gLinkPlayers + 0x8 - ldr r1, _0804E988 @ =gSaveBlock2 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r0, 0x1C - ldr r5, _0804E98C @ =gUnknown_082162B8 - ldr r1, [r5] - bl StringCopy - adds r0, r4, 0 - adds r0, 0x38 - ldr r1, [r5, 0x4] - bl StringCopy - adds r4, 0x54 - ldr r1, [r5, 0x8] - adds r0, r4, 0 - bl StringCopy -_0804E974: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E97C: .4byte gUnknown_03004834 -_0804E980: .4byte gUnknown_03004854 -_0804E984: .4byte gLinkPlayers + 0x8 -_0804E988: .4byte gSaveBlock2 -_0804E98C: .4byte gUnknown_082162B8 - thumb_func_end sub_804E884 - - thumb_func_start sub_804E990 -sub_804E990: @ 804E990 - push {r4,r5,lr} - movs r0, 0x80 - lsls r0, 19 - movs r2, 0 - strh r2, [r0] - ldr r3, _0804E9D8 @ =gUnknown_03004854 - ldr r0, _0804E9DC @ =0x02018000 - str r0, [r3] - movs r1, 0 - strb r2, [r0] - movs r2, 0x9A - lsls r2, 1 - adds r0, r2 - str r1, [r0] - movs r2, 0 - ldr r5, _0804E9E0 @ =gSpecialVar_0x8004 - adds r4, r3, 0 - movs r3, 0 -_0804E9B4: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0804E9B4 - ldrb r0, [r5] - bl sub_804E884 - ldrh r0, [r5] - cmp r0, 0 - bne _0804E9E8 - ldr r0, _0804E9E4 @ =sub_804E9F8 - bl SetMainCallback2 - b _0804E9EE - .align 2, 0 -_0804E9D8: .4byte gUnknown_03004854 -_0804E9DC: .4byte 0x02018000 -_0804E9E0: .4byte gSpecialVar_0x8004 -_0804E9E4: .4byte sub_804E9F8 -_0804E9E8: - ldr r0, _0804E9F4 @ =sub_804F378 - bl SetMainCallback2 -_0804E9EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E9F4: .4byte sub_804F378 - thumb_func_end sub_804E990 - - thumb_func_start sub_804E9F8 -sub_804E9F8: @ 804E9F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804EA18 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x66 - bls _0804EA0E - b _0804F0CE -_0804EA0E: - lsls r0, 2 - ldr r1, _0804EA1C @ =_0804EA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804EA18: .4byte gUnknown_03004854 -_0804EA1C: .4byte _0804EA20 - .align 2, 0 -_0804EA20: - .4byte _0804EBBC - .4byte _0804EC74 - .4byte _0804EC94 - .4byte _0804ECE8 - .4byte _0804ECFA - .4byte _0804ED14 - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804ED48 - .4byte _0804ED94 - .4byte _0804EDB8 - .4byte _0804EE46 - .4byte _0804EEA0 - .4byte _0804EF16 - .4byte _0804EF34 - .4byte _0804EFD8 - .4byte _0804F00C - .4byte _0804F0CE - .4byte _0804F020 - .4byte _0804F024 - .4byte _0804F02A - .4byte _0804F03A - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F0CE - .4byte _0804F084 - .4byte _0804F0A0 - .4byte _0804F0BC -_0804EBBC: - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804EC60 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804EC64 @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804EC68 @ =gLinkType - ldr r2, _0804EC6C @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r3, _0804EC70 @ =gUnknown_03004854 - ldr r1, [r3] - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r4, r0, 0 - adds r4, 0x4E - movs r1, 0 - strh r2, [r4] - adds r0, 0x7E - strb r1, [r0] - ldr r1, [r3] - movs r4, 0xA2 - lsls r4, 1 - adds r0, r1, r4 - strh r2, [r0] - adds r4, 0x2 - adds r0, r1, r4 - strh r2, [r0] - movs r5, 0 - movs r6, 0 - mov r8, r3 - movs r7, 0xA6 - lsls r7, 1 -_0804EC18: - ldr r0, [r3] - lsls r1, r5, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r4, r5, 0x1 - adds r1, r5 - lsls r1, 1 - movs r2, 0x2 -_0804EC2A: - ldr r0, [r3] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804EC2A - adds r5, r4, 0 - cmp r5, 0x3 - ble _0804EC18 - mov r0, r8 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x7C - movs r2, 0 - movs r1, 0 - strh r1, [r0] - subs r0, 0x26 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - strb r2, [r3, 0x1] - b _0804F0CE - .align 2, 0 -_0804EC60: .4byte sub_804E2BC -_0804EC64: .4byte gWindowConfig_81E6F68 -_0804EC68: .4byte gLinkType -_0804EC6C: .4byte 0x00004422 -_0804EC70: .4byte gUnknown_03004854 -_0804EC74: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804EC80 - b _0804F0CE -_0804EC80: - ldr r0, _0804EC90 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F0CE - .align 2, 0 -_0804EC90: .4byte gUnknown_03004854 -_0804EC94: - movs r5, 0 - ldr r4, _0804ECD8 @ =gUnknown_082162E4 - ldr r6, _0804ECDC @ =gUnknown_03004854 -_0804EC9A: - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r5 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804ECE4 @ =gSprites - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EC9A - b _0804F0AA - .align 2, 0 -_0804ECD8: .4byte gUnknown_082162E4 -_0804ECDC: .4byte gUnknown_03004854 -_0804ECE0: .4byte gSpriteTemplate_82163F4 -_0804ECE4: .4byte gSprites -_0804ECE8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _0804F0AA -_0804ECFA: - bl sub_804E4FC - ldr r0, _0804ED10 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804ED0C - b _0804F0CE -_0804ED0C: - b _0804F0AA - .align 2, 0 -_0804ED10: .4byte gPaletteFade -_0804ED14: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804ED40 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xE - bl MenuPrint - ldr r2, _0804ED44 @ =gUnknown_03004854 - ldr r1, [r2] - movs r3, 0 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r3, [r0] - b _0804F0CE - .align 2, 0 -_0804ED40: .4byte gOtherText_LinkStandby3 -_0804ED44: .4byte gUnknown_03004854 -_0804ED48: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r5, [r0] - ldr r0, [r2] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r1, _0804ED8C @ =gScriptItemId - ldrh r1, [r1] - bl sub_804E844 - ldr r0, _0804ED90 @ =gBlockSendBuffer - mov r2, r8 - ldr r1, [r2] - adds r1, r4 - movs r2, 0x10 - bl memcpy - bl sub_80084A4 - mov r3, r8 - ldr r0, [r3] - subs r4, 0x4C - adds r0, r4 - str r5, [r0] - b _0804F0CE - .align 2, 0 -_0804ED8C: .4byte gScriptItemId -_0804ED90: .4byte gBlockSendBuffer -_0804ED94: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EDA0 - b _0804F0CE -_0804EDA0: - bl ResetBlockReceivedFlags - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _0804EDB0 - b _0804F0AA -_0804EDB0: - movs r0, 0x4 - bl sub_8007E9C - b _0804F0AA -_0804EDB8: - mov r0, r8 - ldr r1, [r0] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _0804EDCE - b _0804F0CE -_0804EDCE: - bl MenuZeroFillScreen - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_8008198 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0804EDE6 - b _0804F0CE -_0804EDE6: - movs r5, 0 - mov r7, r8 - movs r6, 0xBE - lsls r6, 1 - b _0804EE18 -_0804EDF0: - ldr r0, [r7] - lsls r4, r5, 4 - adds r0, r4, r0 - adds r0, r6 - lsls r1, r5, 8 - ldr r2, _0804EE2C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x10 - bl memcpy - ldr r0, [r7] - lsls r2, r5, 1 - adds r1, r0, 0 - adds r1, 0x80 - adds r1, r2 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r5, 0x1 -_0804EE18: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0804EDF0 - bl ResetBlockReceivedFlags - b _0804F0AA - .align 2, 0 -_0804EE2C: .4byte gBlockRecvBuffer -_0804EE30: - ldrb r1, [r4] - lsls r1, 1 - adds r0, r2, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804EE7A -_0804EE46: - bl GetLinkPlayerCount - ldr r2, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x88 - strb r0, [r1] - movs r5, 0 - ldr r2, [r2] - movs r3, 0x9E - lsls r3, 1 - adds r4, r2, r3 - ldr r1, _0804EE9C @ =gUnknown_082162EC - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - ldrb r3, [r4] - adds r0, r1 -_0804EE6C: - ldrb r1, [r0] - cmp r3, r1 - beq _0804EE30 - adds r0, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _0804EE6C -_0804EE7A: - ldr r3, _0804EE98 @ =gUnknown_03004854 - ldr r1, [r3] - movs r4, 0x98 - lsls r4, 1 - adds r2, r1, r4 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F0AE - .align 2, 0 -_0804EE98: .4byte gUnknown_03004854 -_0804EE9C: .4byte gUnknown_082162EC -_0804EEA0: - mov r1, r8 - ldr r2, [r1] - movs r3, 0x98 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804EEB6 - b _0804F0CE -_0804EEB6: - movs r4, 0x9E - lsls r4, 1 - adds r0, r2, r4 - adds r1, r2, 0 - adds r1, 0x88 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _0804EF00 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r0, r8 - ldr r2, [r0] - ldr r3, _0804EEF4 @ =gUnknown_082162F8 - ldr r1, _0804EEF8 @ =gUnknown_08216300 - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r3 - ldr r3, _0804EEFC @ =0xffffa800 - adds r1, r3, 0 - ldrh r0, [r0] - adds r1, r0 - adds r2, 0x54 - strh r1, [r2] - b _0804EF06 - .align 2, 0 -_0804EEF4: .4byte gUnknown_082162F8 -_0804EEF8: .4byte gUnknown_08216300 -_0804EEFC: .4byte 0xffffa800 -_0804EF00: - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_0804EF06: - mov r4, r8 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _0804F0CE -_0804EF16: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0804EF22 - b _0804F0CE -_0804EF22: - ldr r2, _0804EF30 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - b _0804EFBC - .align 2, 0 -_0804EF30: .4byte gUnknown_03004854 -_0804EF34: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - mov r4, r8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r4, [r1] - adds r0, r4 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804EFB8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804EFC8 @ =gUnknown_082162F8 - ldr r1, _0804EFCC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804EFD0 @ =REG_BG2CNT - ldr r4, _0804EFD4 @ =0x00004882 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - bl sub_804F238 - bl sub_804F2A8 -_0804EFB8: - mov r1, r8 - ldr r0, [r1] -_0804EFBC: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804EFC8: .4byte gUnknown_082162F8 -_0804EFCC: .4byte gUnknown_08216300 -_0804EFD0: .4byte REG_BG2CNT -_0804EFD4: .4byte 0x00004882 -_0804EFD8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804EFF6 - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r2, r1, r3 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EFF6: - ldr r0, _0804F008 @ =gUnknown_03004854 - ldr r0, [r0] - movs r4, 0xB4 - lsls r4, 1 - adds r0, r4 - bl sub_8051414 - b _0804F0CE - .align 2, 0 -_0804F008: .4byte gUnknown_03004854 -_0804F00C: - ldr r0, _0804F01C @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - b _0804F0AA - .align 2, 0 -_0804F01C: .4byte gSpriteTemplate_8216548 -_0804F020: - mov r0, r8 - b _0804F0AC -_0804F024: - bl sub_80084A4 - b _0804F0AA -_0804F02A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE - bl sub_8007E24 - b _0804F0AA -_0804F03A: - mov r1, r8 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - movs r1, 0 - movs r0, 0x80 - strh r0, [r2] - movs r2, 0x96 - lsls r2, 1 - adds r0, r3, r2 - str r1, [r0] - ldr r0, _0804F07C @ =sub_80501FC - bl SetMainCallback2 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F080 @ =0x00000193 - cmp r0, r4 - beq _0804F074 - bl GetCurrentMapMusic - mov r3, r8 - ldr r1, [r3] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] -_0804F074: - adds r0, r4, 0 - bl PlayBGM - b _0804F0CE - .align 2, 0 -_0804F07C: .4byte sub_80501FC -_0804F080: .4byte 0x00000193 -_0804F084: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _0804F09C @ =gOtherText_LinkNotFound - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0804F0AA - .align 2, 0 -_0804F09C: .4byte gOtherText_LinkNotFound -_0804F0A0: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0804F0CE -_0804F0AA: - ldr r0, _0804F0B8 @ =gUnknown_03004854 -_0804F0AC: - ldr r1, [r0] -_0804F0AE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F0CE - .align 2, 0 -_0804F0B8: .4byte gUnknown_03004854 -_0804F0BC: - ldr r0, _0804F0EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804F0CE - ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0804F0CE: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F0EC: .4byte gPaletteFade -_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_804E9F8 - - thumb_func_start sub_804F0F4 -sub_804F0F4: @ 804F0F4 - push {r4,lr} - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0804F158 @ =sub_804E2BC - bl SetVBlankCallback - ldr r4, _0804F15C @ =gWindowConfig_81E6F68 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r1, _0804F160 @ =gLinkType - ldr r2, _0804F164 @ =0x00004422 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0804F168 @ =gUnknown_03004854 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x4E - movs r1, 0 - strh r1, [r0] - adds r0, 0x8 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r1, [r0] - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F158: .4byte sub_804E2BC -_0804F15C: .4byte gWindowConfig_81E6F68 -_0804F160: .4byte gLinkType -_0804F164: .4byte 0x00004422 -_0804F168: .4byte gUnknown_03004854 - thumb_func_end sub_804F0F4 - - thumb_func_start sub_804F16C -sub_804F16C: @ 804F16C - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r0, 24 - adds r2, r0, 0 - adds r2, 0x18 - ldr r0, _0804F1A8 @ =gUnknown_03004854 - ldr r0, [r0] - lsrs r1, 23 - adds r0, 0xA2 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0804F1AC @ =gUnknown_08216303 - adds r0, r1 - ldrb r1, [r0] - cmp r2, r1 - bcc _0804F1B4 - adds r0, r1, 0 - adds r0, 0x30 - cmp r2, r0 - bcs _0804F1B4 - subs r0, 0x1C - cmp r2, r0 - bcc _0804F1B0 - adds r0, 0x8 - cmp r2, r0 - bcs _0804F1B0 - movs r0, 0x2 - b _0804F1B6 - .align 2, 0 -_0804F1A8: .4byte gUnknown_03004854 -_0804F1AC: .4byte gUnknown_08216303 -_0804F1B0: - movs r0, 0x1 - b _0804F1B6 -_0804F1B4: - movs r0, 0 -_0804F1B6: - pop {r1} - bx r1 - thumb_func_end sub_804F16C - - thumb_func_start sub_804F1BC -sub_804F1BC: @ 804F1BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r0, 0xAF - bne _0804F1EE - movs r3, 0 - subs r5, r1, 0x1 - adds r2, 0x9 -_0804F1D2: - adds r0, r2, r4 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _0804F1E0 - adds r4, r3, 0 -_0804F1E0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _0804F1D2 - adds r0, r4, 0x5 - b _0804F204 -_0804F1EE: - subs r0, 0x85 - lsls r0, 16 - lsrs r4, r0, 16 - subs r5, r1, 0x1 - cmp r4, 0x4 - bls _0804F208 - adds r0, r4, 0 - movs r1, 0x5 - bl __umodsi3 - adds r0, 0x5 -_0804F204: - lsls r0, 16 - lsrs r4, r0, 16 -_0804F208: - movs r3, 0 - cmp r3, r5 - bge _0804F22E - ldr r7, _0804F234 @ =gUnknown_082165BC - lsls r0, r4, 1 - adds r6, r0, r4 -_0804F214: - adds r4, r3, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r3, r6 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x85 - bl Blender_SetBankBerryData - lsls r4, 16 - lsrs r3, r4, 16 - cmp r3, r5 - blt _0804F214 -_0804F22E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F234: .4byte gUnknown_082165BC - thumb_func_end sub_804F1BC - - thumb_func_start sub_804F238 -sub_804F238: @ 804F238 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 - movs r6, 0xFF - ldr r5, _0804F2A4 @ =gUnknown_082162EC -_0804F242: - ldr r3, [r7] - lsls r2, r4, 1 - adds r0, r3, 0 - adds r0, 0xA2 - adds r0, r2 - strh r6, [r0] - adds r1, r3, 0 - adds r1, 0x9A - adds r1, r2 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F242 - movs r3, 0 - ldr r7, _0804F2A0 @ =gUnknown_03004854 -_0804F270: - movs r4, 0 - adds r6, r3, 0x1 - lsls r5, r3, 1 -_0804F276: - ldr r2, [r7] - lsls r0, r4, 1 - adds r1, r2, 0 - adds r1, 0x9A - adds r1, r0 - ldrh r0, [r1] - cmp r0, r3 - bne _0804F28E - adds r0, r2, 0 - adds r0, 0xA2 - adds r0, r5 - strh r4, [r0] -_0804F28E: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F276 - adds r3, r6, 0 - cmp r3, 0x3 - ble _0804F270 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2A0: .4byte gUnknown_03004854 -_0804F2A4: .4byte gUnknown_082162EC - thumb_func_end sub_804F238 - - thumb_func_start sub_804F2A8 -sub_804F2A8: @ 804F2A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r7, _0804F360 @ =gUnknown_03004854 - ldr r0, _0804F364 @ =gUnknown_082162D4 - mov r8, r0 -_0804F2B6: - ldr r2, [r7] - lsls r4, r6, 1 - adds r0, r2, 0 - adds r0, 0x9A - adds r3, r0, r4 - ldrh r0, [r3] - cmp r0, 0xFF - beq _0804F34A - ldr r5, _0804F368 @ =gStringVar1 - adds r1, r2, 0 - adds r1, 0x5C - ldrh r3, [r3] - adds r1, r3 - adds r0, r2, 0 - adds r0, 0x60 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x9A - adds r1, r4 - adds r0, 0x5C - ldrh r1, [r1] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F36C @ =gSprites - adds r0, r1 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim - bl GetMultiplayerId - lsls r0, 24 - ldr r1, [r7] - adds r1, 0x9A - adds r1, r4 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - bne _0804F31A - adds r0, r5, 0 - ldr r1, _0804F370 @ =gUnknown_082162C4 - bl StringCopy - adds r5, r0, 0 -_0804F31A: - ldr r0, [r7] - adds r0, 0x9A - adds r0, r4 - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804F374 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - mov r0, r8 - ldrb r1, [r0] - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0x1] - lsls r2, 3 - ldr r0, _0804F368 @ =gStringVar1 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_0804F34A: - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804F2B6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F360: .4byte gUnknown_03004854 -_0804F364: .4byte gUnknown_082162D4 -_0804F368: .4byte gStringVar1 -_0804F36C: .4byte gSprites -_0804F370: .4byte gUnknown_082162C4 -_0804F374: .4byte gLinkPlayers + 0x8 - thumb_func_end sub_804F2A8 - - thumb_func_start sub_804F378 -sub_804F378: @ 804F378 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, _0804F398 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0x15 - bls _0804F38E - b _0804F7E6 -_0804F38E: - lsls r0, 2 - ldr r1, _0804F39C @ =_0804F3A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F398: .4byte gUnknown_03004854 -_0804F39C: .4byte _0804F3A0 - .align 2, 0 -_0804F3A0: - .4byte _0804F3F8 - .4byte _0804F474 - .4byte _0804F494 - .4byte _0804F4EC - .4byte _0804F518 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F54C - .4byte _0804F7E6 - .4byte _0804F7E6 - .4byte _0804F578 - .4byte _0804F5C8 - .4byte _0804F636 - .4byte _0804F650 - .4byte _0804F6F8 - .4byte _0804F720 - .4byte _0804F7E6 - .4byte _0804F73C - .4byte _0804F742 - .4byte _0804F748 - .4byte _0804F754 -_0804F3F8: - bl sub_804F0F4 - ldr r4, _0804F46C @ =gScriptItemId - ldrh r1, [r4] - movs r0, 0 - bl Blender_SetBankBerryData - ldr r5, _0804F470 @ =gUnknown_03004854 - ldr r0, [r5] - movs r6, 0xBE - lsls r6, 1 - adds r0, r6 - ldrh r1, [r4] - bl sub_804E844 - ldrh r0, [r4] - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r2, r6 - bl sub_804F1BC - movs r4, 0 - movs r6, 0 - mov r8, r5 - movs r7, 0xA6 - lsls r7, 1 -_0804F430: - ldr r0, [r5] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - strh r6, [r0] - adds r3, r4, 0x1 - adds r1, r4 - lsls r1, 1 - movs r2, 0x2 -_0804F442: - ldr r0, [r5] - adds r0, r7 - adds r0, r1 - strh r6, [r0] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F442 - adds r4, r3, 0 - cmp r4, 0x3 - ble _0804F430 - mov r0, r8 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x7C - movs r2, 0 - movs r0, 0 - strh r0, [r1] - strb r2, [r3, 0x1] - b _0804F7E6 - .align 2, 0 -_0804F46C: .4byte gScriptItemId -_0804F470: .4byte gUnknown_03004854 -_0804F474: - bl sub_804E2EC - lsls r0, 24 - cmp r0, 0 - bne _0804F480 - b _0804F7E6 -_0804F480: - ldr r0, _0804F490 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_8051474 - b _0804F7E6 - .align 2, 0 -_0804F490: .4byte gUnknown_03004854 -_0804F494: - movs r4, 0 - ldr r5, _0804F4DC @ =gUnknown_082162E4 - ldr r6, _0804F4E0 @ =gUnknown_03004854 -_0804F49A: - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4 - movs r3, 0x1 - bl CreateSprite - ldr r1, [r6] - adds r1, 0x60 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x60 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F4E8 @ =gSprites - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F49A - ldr r0, _0804F4E0 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F4DC: .4byte gUnknown_082162E4 -_0804F4E0: .4byte gUnknown_03004854 -_0804F4E4: .4byte gSpriteTemplate_82163F4 -_0804F4E8: .4byte gSprites -_0804F4EC: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0804F514 @ =gUnknown_03004854 - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - str r4, [r0] - b _0804F7E6 - .align 2, 0 -_0804F514: .4byte gUnknown_03004854 -_0804F518: - mov r2, r8 - ldr r1, [r2] - movs r3, 0x98 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bne _0804F530 - bl sub_804E4FC -_0804F530: - ldr r0, _0804F548 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804F53E - b _0804F7E6 -_0804F53E: - mov r5, r8 - ldr r1, [r5] - movs r0, 0x8 - strb r0, [r1] - b _0804F7E6 - .align 2, 0 -_0804F548: .4byte gPaletteFade -_0804F54C: - mov r0, r8 - ldr r1, [r0] - movs r2, 0 - movs r0, 0xB - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - strb r2, [r0] - b _0804F7E6 -_0804F564: - lsls r1, 1 - adds r0, r3, 0 - adds r0, 0x80 - adds r0, r1 - ldrh r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_804E7C0 - b _0804F5A2 -_0804F578: - movs r4, 0 - ldr r2, _0804F5C0 @ =gUnknown_082162EC - ldr r0, _0804F5C4 @ =gUnknown_03004854 - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 2 - movs r5, 0x9E - lsls r5, 1 - adds r1, r3, r5 - ldrb r1, [r1] - adds r0, r2 -_0804F594: - ldrb r2, [r0] - cmp r1, r2 - beq _0804F564 - adds r0, 0x1 - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F594 -_0804F5A2: - ldr r3, _0804F5C4 @ =gUnknown_03004854 - ldr r1, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r2, r1, r5 - movs r0, 0 - str r0, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r3] - movs r0, 0x9E - lsls r0, 1 - adds r1, r0 - b _0804F74C - .align 2, 0 -_0804F5C0: .4byte gUnknown_082162EC -_0804F5C4: .4byte gUnknown_03004854 -_0804F5C8: - mov r1, r8 - ldr r3, [r1] - movs r2, 0x98 - lsls r2, 1 - adds r1, r3, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _0804F5DE - b _0804F7E6 -_0804F5DE: - movs r5, 0x9E - lsls r5, 1 - adds r0, r3, r5 - adds r4, r3, 0 - adds r4, 0x88 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcc _0804F620 - ldr r2, _0804F614 @ =gUnknown_082162F8 - ldr r1, _0804F618 @ =gUnknown_08216300 - ldrb r0, [r4] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldr r2, _0804F61C @ =0xffffa800 - adds r1, r2, 0 - ldrh r0, [r0] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldrb r0, [r3] - adds r0, 0x1 - b _0804F624 - .align 2, 0 -_0804F614: .4byte gUnknown_082162F8 -_0804F618: .4byte gUnknown_08216300 -_0804F61C: .4byte 0xffffa800 -_0804F620: - ldrb r0, [r3] - subs r0, 0x1 -_0804F624: - strb r0, [r3] - mov r3, r8 - ldr r0, [r3] - movs r5, 0x98 - lsls r5, 1 - adds r0, r5 - movs r1, 0 - str r1, [r0] - b _0804F7E6 -_0804F636: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl sub_804F238 - movs r0, 0x2B - bl PlaySE - mov r2, r8 - ldr r0, [r2] - b _0804F710 -_0804F650: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r5, 0x80 - lsls r5, 3 - adds r1, r5, 0 - orrs r0, r1 - strh r0, [r2] - mov r0, r8 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x54 - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r5, [r1] - adds r0, r5 - strh r0, [r1] - movs r0, 0xA1 - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x4 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _0804F6D6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - mov r1, r8 - ldr r3, [r1] - movs r2, 0xA1 - lsls r2, 1 - adds r1, r3, r2 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - ldr r2, _0804F6E8 @ =gUnknown_082162F8 - ldr r1, _0804F6EC @ =gUnknown_08216300 - adds r0, r3, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x54 - strh r1, [r0] - ldr r1, _0804F6F0 @ =REG_BG2CNT - ldr r5, _0804F6F4 @ =0x00004882 - adds r0, r5, 0 - strh r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r3, r0 - movs r0, 0 - str r0, [r1] - movs r0, 0x34 - bl PlaySE - bl sub_804F2A8 -_0804F6D6: - mov r1, r8 - ldr r0, [r1] - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F6E8: .4byte gUnknown_082162F8 -_0804F6EC: .4byte gUnknown_08216300 -_0804F6F0: .4byte REG_BG2CNT -_0804F6F4: .4byte 0x00004882 -_0804F6F8: - bl sub_8051B8C - lsls r0, 24 - cmp r0, 0 - beq _0804F70C - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804F70C: - ldr r0, _0804F71C @ =gUnknown_03004854 - ldr r0, [r0] -_0804F710: - movs r3, 0xB4 - lsls r3, 1 - adds r0, r3 - bl sub_8051414 - b _0804F7E6 - .align 2, 0 -_0804F71C: .4byte gUnknown_03004854 -_0804F720: - ldr r0, _0804F734 @ =gSpriteTemplate_8216548 - movs r2, 0x10 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x3 - bl CreateSprite - ldr r0, _0804F738 @ =gUnknown_03004854 - ldr r1, [r0] - b _0804F74C - .align 2, 0 -_0804F734: .4byte gSpriteTemplate_8216548 -_0804F738: .4byte gUnknown_03004854 -_0804F73C: - mov r5, r8 - ldr r1, [r5] - b _0804F74C -_0804F742: - mov r0, r8 - ldr r1, [r0] - b _0804F74C -_0804F748: - mov r2, r8 - ldr r1, [r2] -_0804F74C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F7E6 -_0804F754: - bl sub_804F81C - ldr r3, _0804F804 @ =gUnknown_03004854 - ldr r4, [r3] - adds r5, r4, 0 - adds r5, 0x56 - movs r2, 0 - movs r1, 0 - movs r0, 0x80 - strh r0, [r5] - movs r5, 0x96 - lsls r5, 1 - adds r0, r4, r5 - str r1, [r0] - ldr r1, _0804F808 @ =0x0000014b - adds r0, r4, r1 - strb r2, [r0] - ldr r0, [r3] - adds r0, 0x7E - strb r2, [r0] - ldr r0, _0804F80C @ =sub_80501FC - bl SetMainCallback2 - movs r4, 0 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bge _0804F7B8 - movs r5, 0xA0 - lsls r5, 20 - ldr r6, _0804F814 @ =gUnknown_08216308 -_0804F792: - ldm r6!, {r0} - lsrs r1, r5, 24 - bl CreateTask - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA4 - lsls r2, 1 - adds r1, r2 - adds r1, r4 - strb r0, [r1] - movs r3, 0x80 - lsls r3, 17 - adds r5, r3 - adds r4, 0x1 - ldr r0, _0804F810 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - blt _0804F792 -_0804F7B8: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0804F818 @ =0x00000193 - cmp r0, r4 - beq _0804F7D6 - bl GetCurrentMapMusic - ldr r1, _0804F804 @ =gUnknown_03004854 - ldr r1, [r1] - movs r5, 0xBC - lsls r5, 1 - adds r1, r5 - strh r0, [r1] -_0804F7D6: - adds r0, r4, 0 - bl PlayBGM - movs r0, 0x35 - bl PlaySE - bl sub_804E290 -_0804F7E6: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F804: .4byte gUnknown_03004854 -_0804F808: .4byte 0x0000014b -_0804F80C: .4byte sub_80501FC -_0804F810: .4byte gSpecialVar_0x8004 -_0804F814: .4byte gUnknown_08216308 -_0804F818: .4byte 0x00000193 - thumb_func_end sub_804F378 - - thumb_func_start sub_804F81C -sub_804F81C: @ 804F81C - push {lr} - ldr r3, _0804F83C @ =gSendCmd - movs r0, 0 - ldr r1, _0804F840 @ =gRecvCmds - movs r2, 0x3 -_0804F826: - strh r0, [r3] - strh r0, [r3, 0x4] - strh r0, [r1] - strh r0, [r1, 0x10] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0804F826 - pop {r0} - bx r0 - .align 2, 0 -_0804F83C: .4byte gSendCmd -_0804F840: .4byte gRecvCmds - thumb_func_end sub_804F81C - - thumb_func_start sub_804F844 -sub_804F844: @ 804F844 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0804F884 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _0804F87C - ldr r0, _0804F888 @ =gRecvCmds - movs r4, 0xC - ldrsh r1, [r2, r4] - lsls r1, 1 - adds r0, 0x10 - adds r1, r0 - ldr r0, _0804F88C @ =0x00002345 - strh r0, [r1] - adds r0, r3, 0 - bl DestroyTask -_0804F87C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F884: .4byte gTasks -_0804F888: .4byte gRecvCmds -_0804F88C: .4byte 0x00002345 - thumb_func_end sub_804F844 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0804F8C0 @ =sub_804F844 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804F8C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F8C0: .4byte sub_804F844 -_0804F8C4: .4byte gTasks - thumb_func_end sub_804F890 - - thumb_func_start sub_804F8C8 -sub_804F8C8: @ 804F8C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0804F934 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0x1 - bl sub_804F16C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0804F8E6 - b _0804F9DC -_0804F8E6: - ldr r2, _0804F938 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0804F8FC - b _0804F9EA -_0804F8FC: - ldr r0, [r4] - ldr r1, _0804F93C @ =0x0000014b - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F9BE - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804F940 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r3, r1, 0 - ldr r0, [r4] - adds r0, 0x56 - movs r4, 0 - ldrsh r2, [r0, r4] - ldr r0, _0804F944 @ =0x000001f3 - cmp r2, r0 - bgt _0804F964 - cmp r1, 0x4B - bls _0804F950 - ldr r1, _0804F948 @ =gRecvCmds - ldr r0, _0804F94C @ =0x00004523 - b _0804F954 - .align 2, 0 -_0804F934: .4byte gUnknown_03004854 -_0804F938: .4byte gTasks -_0804F93C: .4byte 0x0000014b -_0804F940: .4byte 0x0000028f -_0804F944: .4byte 0x000001f3 -_0804F948: .4byte gRecvCmds -_0804F94C: .4byte 0x00004523 -_0804F950: - ldr r1, _0804F95C @ =gRecvCmds - ldr r0, _0804F960 @ =0x00005432 -_0804F954: - strh r0, [r1, 0x12] - ldr r0, _0804F960 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F95C: .4byte gRecvCmds -_0804F960: .4byte 0x00005432 -_0804F964: - ldr r0, _0804F980 @ =0x000005db - cmp r2, r0 - bgt _0804F992 - cmp r1, 0x50 - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _0804F98C - ldr r1, _0804F984 @ =gRecvCmds - ldr r0, _0804F988 @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F980: .4byte 0x000005db -_0804F984: .4byte gRecvCmds -_0804F988: .4byte 0x00005432 -_0804F98C: - cmp r1, 0x9 - bhi _0804F9C4 - b _0804F9B4 -_0804F992: - cmp r1, 0x5A - bhi _0804F9BE - adds r0, r1, 0 - subs r0, 0x47 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _0804F9B0 - ldr r1, _0804F9A8 @ =gRecvCmds - ldr r0, _0804F9AC @ =0x00005432 - b _0804F9C2 - .align 2, 0 -_0804F9A8: .4byte gRecvCmds -_0804F9AC: .4byte 0x00005432 -_0804F9B0: - cmp r3, 0x1D - bhi _0804F9C4 -_0804F9B4: - movs r0, 0x1 - movs r1, 0x5 - bl sub_804F890 - b _0804F9C4 -_0804F9BE: - ldr r1, _0804F9D0 @ =gRecvCmds - ldr r0, _0804F9D4 @ =0x00004523 -_0804F9C2: - strh r0, [r1, 0x12] -_0804F9C4: - ldr r0, _0804F9D8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804F9E8 - .align 2, 0 -_0804F9D0: .4byte gRecvCmds -_0804F9D4: .4byte 0x00004523 -_0804F9D8: .4byte gTasks -_0804F9DC: - ldr r0, _0804F9F0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804F9E8: - strh r0, [r1, 0x8] -_0804F9EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F9F0: .4byte gTasks - thumb_func_end sub_804F8C8 - - thumb_func_start sub_804F9F4 -sub_804F9F4: @ 804F9F4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _0804FA78 @ =gUnknown_03004854 - ldr r3, [r6] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FA7C @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA6 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FA80 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FB04 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FB04 - ldr r2, _0804FA84 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r5, 0x8 - ldrsh r0, [r2, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _0804FB12 - ldr r1, _0804FA88 @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FAF0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FA8C @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r0, [r6] - adds r0, 0x56 - movs r6, 0 - ldrsh r1, [r0, r6] - ldr r0, _0804FA90 @ =0x000001f3 - cmp r1, r0 - bgt _0804FAAC - cmp r2, 0x42 - bls _0804FA9C - ldr r1, _0804FA94 @ =gRecvCmds - ldr r0, _0804FA98 @ =0x00004523 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FA78: .4byte gUnknown_03004854 -_0804FA7C: .4byte 0x0000ffff -_0804FA80: .4byte gUnknown_08216303 -_0804FA84: .4byte gTasks -_0804FA88: .4byte 0x0000014b -_0804FA8C: .4byte 0x0000028f -_0804FA90: .4byte 0x000001f3 -_0804FA94: .4byte gRecvCmds -_0804FA98: .4byte 0x00004523 -_0804FA9C: - ldr r1, _0804FAA4 @ =gRecvCmds - ldr r0, _0804FAA8 @ =0x00005432 - strh r0, [r1, 0x14] - b _0804FAD4 - .align 2, 0 -_0804FAA4: .4byte gRecvCmds -_0804FAA8: .4byte 0x00005432 -_0804FAAC: - cmp r2, 0x41 - bls _0804FAB6 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE4 @ =0x00004523 - strh r0, [r1, 0x14] -_0804FAB6: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bhi _0804FAC8 - ldr r1, _0804FAE0 @ =gRecvCmds - ldr r0, _0804FAE8 @ =0x00005432 - strh r0, [r1, 0x14] -_0804FAC8: - cmp r3, 0x9 - bhi _0804FAD4 - movs r0, 0x2 - movs r1, 0x5 - bl sub_804F890 -_0804FAD4: - ldr r0, _0804FAEC @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FB10 - .align 2, 0 -_0804FAE0: .4byte gRecvCmds -_0804FAE4: .4byte 0x00004523 -_0804FAE8: .4byte 0x00005432 -_0804FAEC: .4byte gTasks -_0804FAF0: - ldr r0, _0804FAFC @ =gRecvCmds - ldr r1, _0804FB00 @ =0x00004523 - strh r1, [r0, 0x14] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FB12 - .align 2, 0 -_0804FAFC: .4byte gRecvCmds -_0804FB00: .4byte 0x00004523 -_0804FB04: - ldr r0, _0804FB18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FB10: - strh r0, [r1, 0x8] -_0804FB12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FB18: .4byte gTasks - thumb_func_end sub_804F9F4 - - thumb_func_start sub_804FB1C -sub_804FB1C: @ 804FB1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0804FB9C @ =gUnknown_03004854 - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x54 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 5 - adds r0, r1 - ldr r1, _0804FBA0 @ =0x0000ffff - ands r0, r1 - adds r1, r3, 0 - adds r1, 0xA8 - ldrb r1, [r1] - lsrs r2, r0, 8 - ldr r0, _0804FBA4 @ =gUnknown_08216303 - adds r1, r0 - ldrb r1, [r1] - adds r0, r1, 0 - adds r0, 0x14 - cmp r2, r0 - bls _0804FC30 - adds r0, 0x14 - cmp r2, r0 - bcs _0804FC30 - ldr r2, _0804FBA8 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r2 - movs r6, 0x8 - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0 - bne _0804FC3E - ldr r1, _0804FBAC @ =0x0000014b - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0804FC1C - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804FBB0 @ =0x0000028f - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r5] - adds r0, 0x56 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _0804FBB4 @ =0x000001f3 - cmp r1, r0 - bgt _0804FBD0 - cmp r2, 0x58 - bls _0804FBC0 - ldr r1, _0804FBB8 @ =gRecvCmds - ldr r0, _0804FBBC @ =0x00004523 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FB9C: .4byte gUnknown_03004854 -_0804FBA0: .4byte 0x0000ffff -_0804FBA4: .4byte gUnknown_08216303 -_0804FBA8: .4byte gTasks -_0804FBAC: .4byte 0x0000014b -_0804FBB0: .4byte 0x0000028f -_0804FBB4: .4byte 0x000001f3 -_0804FBB8: .4byte gRecvCmds -_0804FBBC: .4byte 0x00004523 -_0804FBC0: - ldr r1, _0804FBC8 @ =gRecvCmds - ldr r0, _0804FBCC @ =0x00005432 - strh r0, [r1, 0x16] - b _0804FC02 - .align 2, 0 -_0804FBC8: .4byte gRecvCmds -_0804FBCC: .4byte 0x00005432 -_0804FBD0: - cmp r2, 0x3C - bls _0804FBE4 - ldr r1, _0804FBDC @ =gRecvCmds - ldr r0, _0804FBE0 @ =0x00004523 - b _0804FBF4 - .align 2, 0 -_0804FBDC: .4byte gRecvCmds -_0804FBE0: .4byte 0x00004523 -_0804FBE4: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0804FBF6 - ldr r1, _0804FC10 @ =gRecvCmds - ldr r0, _0804FC14 @ =0x00005432 -_0804FBF4: - strh r0, [r1, 0x16] -_0804FBF6: - cmp r2, 0x4 - bhi _0804FC02 - movs r0, 0x3 - movs r1, 0x5 - bl sub_804F890 -_0804FC02: - ldr r0, _0804FC18 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _0804FC3C - .align 2, 0 -_0804FC10: .4byte gRecvCmds -_0804FC14: .4byte 0x00005432 -_0804FC18: .4byte gTasks -_0804FC1C: - ldr r0, _0804FC28 @ =gRecvCmds - ldr r1, _0804FC2C @ =0x00004523 - strh r1, [r0, 0x16] - movs r0, 0x1 - strh r0, [r2, 0x8] - b _0804FC3E - .align 2, 0 -_0804FC28: .4byte gRecvCmds -_0804FC2C: .4byte 0x00004523 -_0804FC30: - ldr r0, _0804FC44 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0 -_0804FC3C: - strh r0, [r1, 0x8] -_0804FC3E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804FC44: .4byte gTasks - thumb_func_end sub_804FB1C - - thumb_func_start sub_804FC48 -sub_804FC48: @ 804FC48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - mov r8, r7 - lsls r1, 24 - ldr r0, _0804FCBC @ =gSpriteTemplate_821645C - ldr r4, _0804FCC0 @ =gUnknown_082162E4 - lsrs r1, 23 - adds r2, r1, r4 - ldrb r6, [r2] - ldr r5, _0804FCC4 @ =gUnknown_082162CC - adds r2, r1, r5 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - subs r6, r2 - adds r4, 0x1 - adds r4, r1, r4 - ldrb r2, [r4] - adds r5, 0x1 - adds r1, r5 - movs r3, 0 - ldrsb r3, [r1, r3] - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 1 - subs r2, r1 - adds r1, r6, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0804FCC8 @ =0x00004523 - cmp r7, r0 - bne _0804FCD4 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - ldr r5, _0804FCCC @ =gSprites - adds r0, r4, r5 - movs r1, 0x2 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _0804FCD0 @ =sub_8051684 - str r0, [r4] - movs r0, 0x28 - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCBC: .4byte gSpriteTemplate_821645C -_0804FCC0: .4byte gUnknown_082162E4 -_0804FCC4: .4byte gUnknown_082162CC -_0804FCC8: .4byte 0x00004523 -_0804FCCC: .4byte gSprites -_0804FCD0: .4byte sub_8051684 -_0804FCD4: - ldr r0, _0804FCF4 @ =0x00005432 - cmp r7, r0 - bne _0804FCFC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804FCF8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x1F - bl PlaySE - b _0804FD18 - .align 2, 0 -_0804FCF4: .4byte 0x00005432 -_0804FCF8: .4byte gSprites -_0804FCFC: - ldr r0, _0804FD28 @ =0x00002345 - cmp r8, r0 - bne _0804FD18 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r1, _0804FD2C @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x20 - bl PlaySE -_0804FD18: - bl sub_805156C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD28: .4byte 0x00002345 -_0804FD2C: .4byte gSprites - thumb_func_end sub_804FC48 - - thumb_func_start sub_804FD30 -sub_804FD30: @ 804FD30 - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r5, r4, 0 - bl sub_804E290 - ldr r0, _0804FD50 @ =0x00004523 - cmp r4, r0 - beq _0804FD64 - cmp r4, r0 - bgt _0804FD58 - ldr r0, _0804FD54 @ =0x00002345 - cmp r4, r0 - beq _0804FE34 - b _0804FE60 - .align 2, 0 -_0804FD50: .4byte 0x00004523 -_0804FD54: .4byte 0x00002345 -_0804FD58: - ldr r0, _0804FD60 @ =0x00005432 - cmp r5, r0 - beq _0804FDFC - b _0804FE60 - .align 2, 0 -_0804FD60: .4byte 0x00005432 -_0804FD64: - ldr r7, _0804FD94 @ =gUnknown_03004854 - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x56 - ldrh r6, [r5] - movs r0, 0 - ldrsh r1, [r5, r0] - ldr r0, _0804FD98 @ =0x000005db - cmp r1, r0 - bgt _0804FDA0 - ldr r1, _0804FD9C @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - b _0804FE60 - .align 2, 0 -_0804FD94: .4byte gUnknown_03004854 -_0804FD98: .4byte 0x000005db -_0804FD9C: .4byte gUnknown_082165DA -_0804FDA0: - ldr r1, _0804FDF8 @ =gUnknown_082165DA - adds r0, r4, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - bl __divsi3 - adds r0, r6, r0 - strh r0, [r5] - movs r1, 0xA2 - lsls r1, 1 - adds r4, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - ldr r0, [r7] - movs r1, 0xA3 - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - subs r1, 0xA - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8051AC8 - b _0804FE60 - .align 2, 0 -_0804FDF8: .4byte gUnknown_082165DA -_0804FDFC: - ldr r0, _0804FE28 @ =gUnknown_03004854 - ldr r2, [r0] - adds r4, r2, 0 - adds r4, 0x56 - ldrh r5, [r4] - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0804FE2C @ =0x000005db - cmp r1, r0 - bgt _0804FE60 - ldr r1, _0804FE30 @ =gUnknown_082165DA - adds r0, r2, 0 - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - adds r0, r5, r0 - b _0804FE5E - .align 2, 0 -_0804FE28: .4byte gUnknown_03004854 -_0804FE2C: .4byte 0x000005db -_0804FE30: .4byte gUnknown_082165DA -_0804FE34: - ldr r0, _0804FE68 @ =gUnknown_03004854 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x56 - ldr r1, _0804FE6C @ =gUnknown_082165DA - adds r0, 0x88 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 1 - bl __divsi3 - ldrh r1, [r4] - subs r1, r0 - strh r1, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - bgt _0804FE60 - movs r0, 0x80 -_0804FE5E: - strh r0, [r4] -_0804FE60: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FE68: .4byte gUnknown_03004854 -_0804FE6C: .4byte gUnknown_082165DA - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FE70 -sub_804FE70: @ 804FE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0804FF40 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _0804FEB6 - ldr r3, _0804FF44 @ =gSendCmd - ldrh r0, [r3, 0x4] - ldr r2, _0804FF48 @ =gRecvCmds - cmp r0, 0 - beq _0804FE98 - movs r1, 0 - strh r0, [r2, 0x10] - ldr r0, _0804FF4C @ =0x00004444 - strh r0, [r2] - strh r1, [r3, 0x4] -_0804FE98: - ldr r0, _0804FF48 @ =gRecvCmds - ldr r3, _0804FF4C @ =0x00004444 - adds r1, r2, 0x2 - adds r2, r0, 0 - adds r2, 0x12 - movs r6, 0x2 -_0804FEA4: - ldrh r0, [r2] - cmp r0, 0 - beq _0804FEAC - strh r3, [r1] -_0804FEAC: - adds r1, 0x2 - adds r2, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _0804FEA4 -_0804FEB6: - movs r6, 0 - ldr r7, _0804FF50 @ =gUnknown_03004854 - adds r1, r7, 0 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _0804FEC8 - b _0805005C -_0804FEC8: - movs r2, 0 - str r2, [sp] - mov r9, r2 - ldr r0, _0804FF48 @ =gRecvCmds - adds r0, 0x10 - mov r8, r0 - ldr r1, _0804FF54 @ =0x00005432 - mov r10, r1 -_0804FED8: - ldr r2, [sp] - ldr r1, _0804FF48 @ =gRecvCmds - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0804FF4C @ =0x00004444 - cmp r1, r0 - beq _0804FEE8 - b _0805003E -_0804FEE8: - ldr r0, [r7] - adds r0, 0xA2 - adds r0, r2 - ldrh r5, [r0] - mov r2, r8 - ldrh r4, [r2] - ldr r0, _0804FF58 @ =0x00004523 - cmp r4, r0 - bne _0804FF60 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x37 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, 16 - ldr r0, _0804FF5C @ =0x03e70000 - cmp r1, r0 - bls _0804FF26 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4] -_0804FF26: - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, _0804FF58 @ =0x00004523 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA - .align 2, 0 -_0804FF40: .4byte gSpecialVar_0x8004 -_0804FF44: .4byte gSendCmd -_0804FF48: .4byte gRecvCmds -_0804FF4C: .4byte 0x00004444 -_0804FF50: .4byte gUnknown_03004854 -_0804FF54: .4byte 0x00005432 -_0804FF58: .4byte 0x00004523 -_0804FF5C: .4byte 0x03e70000 -_0804FF60: - cmp r4, r10 - bne _0804FF9E - mov r0, r10 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0x9F - lsls r1, 1 - adds r4, r0, r1 - adds r0, 0x56 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x46 - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - mov r0, r10 - bl sub_804FC48 - ldr r1, [r7] - movs r0, 0xA7 - lsls r0, 1 - adds r1, r0 - add r1, r9 - ldrh r0, [r1] - adds r0, 0x1 - b _0804FFCA -_0804FF9E: - ldr r0, _08050018 @ =0x00002345 - cmp r4, r0 - bne _0804FFD6 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804FC48 - adds r0, r4, 0 - bl sub_804FD30 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r0, _0805001C @ =0x000003e6 - cmp r2, r0 - bhi _0804FFCC - adds r0, r2, 0x1 -_0804FFCA: - strh r0, [r1] -_0804FFCC: - mov r0, r8 - ldrh r1, [r0] - ldr r0, _08050018 @ =0x00002345 - cmp r1, r0 - beq _0804FFE4 -_0804FFD6: - mov r1, r8 - ldrh r0, [r1] - ldr r2, _08050020 @ =0x00004523 - cmp r0, r2 - beq _0804FFE4 - cmp r0, r10 - bne _0805003E -_0804FFE4: - ldr r0, _08050024 @ =gUnknown_03004854 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0x56 - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08050028 @ =0x000005dc - cmp r1, r0 - ble _08050034 - adds r0, r1, 0 - ldr r2, _0805002C @ =0xfffffd12 - adds r0, r2 - movs r1, 0x14 - bl __divsi3 - adds r1, r0, 0 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08050030 @ =gMPlay_BGM - bl m4aMPlayTempoControl - b _0805003E - .align 2, 0 -_08050018: .4byte 0x00002345 -_0805001C: .4byte 0x000003e6 -_08050020: .4byte 0x00004523 -_08050024: .4byte gUnknown_03004854 -_08050028: .4byte 0x000005dc -_0805002C: .4byte 0xfffffd12 -_08050030: .4byte gMPlay_BGM -_08050034: - ldr r0, _08050098 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl -_0805003E: - ldr r1, [sp] - adds r1, 0x2 - str r1, [sp] - movs r2, 0x6 - add r9, r2 - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - ldr r7, _0805009C @ =gUnknown_03004854 - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _0805005C - b _0804FED8 -_0805005C: - ldr r0, _080500A0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _08050088 - movs r6, 0 - ldr r3, _0805009C @ =gUnknown_03004854 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bge _08050088 - movs r2, 0 - ldr r1, _080500A4 @ =gRecvCmds -_08050076: - strh r2, [r1] - strh r2, [r1, 0x10] - adds r1, 0x2 - adds r6, 0x1 - ldr r0, [r3] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - blt _08050076 -_08050088: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050098: .4byte gMPlay_BGM -_0805009C: .4byte gUnknown_03004854 -_080500A0: .4byte gSpecialVar_0x8004 -_080500A4: .4byte gRecvCmds - thumb_func_end sub_804FE70 - - thumb_func_start sub_80500A8 -sub_80500A8: @ 80500A8 - push {r4-r6,lr} - movs r6, 0 - ldr r5, _080500EC @ =gUnknown_03004854 - ldr r4, [r5] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 23 - adds r4, 0xA2 - adds r4, r0 - ldrb r3, [r4] - ldr r0, [r5] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0 - bne _0805018A - ldr r0, _080500F0 @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x2 - bne _080500FC - ldr r2, _080500F4 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - ldrh r0, [r2, 0x28] - ldr r1, _080500F8 @ =0x00000201 - bics r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 - b _0805010A - .align 2, 0 -_080500EC: .4byte gUnknown_03004854 -_080500F0: .4byte gSaveBlock2 -_080500F4: .4byte gMain -_080500F8: .4byte 0x00000201 -_080500FC: - ldr r0, _0805015C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805010A - movs r6, 0x1 -_0805010A: - cmp r6, 0 - beq _0805018A - ldr r4, _08050160 @ =gUnknown_03004854 - ldr r1, [r4] - lsls r2, r3, 1 - adds r0, r1, 0 - adds r0, 0x9A - adds r0, r2 - adds r1, 0x5C - ldrh r0, [r0] - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08050164 @ =gSprites - adds r0, r1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, [r4] - adds r0, 0x54 - ldrh r4, [r0] - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_804F16C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050170 - ldr r1, _08050168 @ =gSendCmd - ldr r0, _0805016C @ =0x00004523 - b _08050188 - .align 2, 0 -_0805015C: .4byte gMain -_08050160: .4byte gUnknown_03004854 -_08050164: .4byte gSprites -_08050168: .4byte gSendCmd -_0805016C: .4byte 0x00004523 -_08050170: - cmp r0, 0x1 - bne _08050184 - ldr r1, _0805017C @ =gSendCmd - ldr r0, _08050180 @ =0x00005432 - b _08050188 - .align 2, 0 -_0805017C: .4byte gSendCmd -_08050180: .4byte 0x00005432 -_08050184: - ldr r1, _080501E4 @ =gSendCmd - ldr r0, _080501E8 @ =0x00002345 -_08050188: - strh r0, [r1, 0x4] -_0805018A: - ldr r2, _080501EC @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0x7E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _080501BA - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x56 - ldrh r3, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x80 - ble _080501B2 - subs r0, r3, 0x1 - strh r0, [r1] -_080501B2: - ldr r0, [r2] - adds r0, 0x7E - movs r1, 0 - strb r1, [r0] -_080501BA: - ldr r0, _080501F0 @ =gUnknown_020297ED - ldrb r0, [r0] - cmp r0, 0 - beq _080501DE - ldr r0, _080501F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080501DE - ldr r0, [r2] - ldr r1, _080501F8 @ =0x0000014b - adds r2, r0, r1 - ldrb r0, [r2] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2] -_080501DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080501E4: .4byte gSendCmd -_080501E8: .4byte 0x00002345 -_080501EC: .4byte gUnknown_03004854 -_080501F0: .4byte gUnknown_020297ED -_080501F4: .4byte gMain -_080501F8: .4byte 0x0000014b - thumb_func_end sub_80500A8 - - thumb_func_start sub_80501FC -sub_80501FC: @ 80501FC - push {r4-r6,lr} - bl sub_8051474 - ldr r4, _08050294 @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0x96 - lsls r1, 1 - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, _08050298 @ =0x00057e03 - cmp r1, r0 - bhi _08050218 - adds r0, r1, 0x1 - str r0, [r2] -_08050218: - bl sub_80500A8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - movs r5, 0x9F - lsls r5, 1 - adds r1, r5 - ldrh r1, [r1] - bl SetLinkDebugValues - bl sub_804FE70 - ldr r0, [r4] - adds r0, r5 - ldrh r0, [r0] - movs r6, 0xFA - lsls r6, 2 - adds r1, r6, 0 - bl sub_805194C - ldr r0, [r4] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_8051B18 - bl sub_805123C - ldr r2, [r4] - adds r3, r2, 0 - adds r3, 0x6F - ldrb r0, [r3] - cmp r0, 0 - bne _0805027E - movs r1, 0xA0 - lsls r1, 1 - adds r0, r2, r1 - ldrh r1, [r0] - ldr r0, _0805029C @ =0x000003e7 - cmp r1, r0 - bls _0805027E - adds r0, r2, r5 - strh r6, [r0] - movs r0, 0x1 - strb r0, [r3] - ldr r0, _080502A0 @ =sub_8050954 - bl SetMainCallback2 -_0805027E: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050294: .4byte gUnknown_03004854 -_08050298: .4byte 0x00057e03 -_0805029C: .4byte 0x000003e7 -_080502A0: .4byte sub_8050954 - thumb_func_end sub_80501FC - - thumb_func_start sub_80502A4 -sub_80502A4: @ 80502A4 - push {r4,r5,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r1, 20 - adds r4, r1, r0 - lsrs r2, 20 - adds r5, r2, r0 - ldrh r0, [r4] - ldrh r1, [r5] - cmp r0, r1 - bne _080502E2 - adds r0, r4, 0x2 - adds r1, r5, 0x2 - bl StringCompare - cmp r0, 0 - bne _080502F0 - ldr r0, [r4, 0x8] - ldr r2, _080502E8 @ =0xffffff00 - ands r0, r2 - ldr r1, [r5, 0x8] - ands r1, r2 - cmp r0, r1 - bne _080502F0 - ldr r0, [r4, 0xC] - ldr r2, _080502EC @ =0x00ffffff - ands r0, r2 - ldr r1, [r5, 0xC] - ands r1, r2 - cmp r0, r1 - bne _080502F0 -_080502E2: - movs r0, 0x1 - b _080502F2 - .align 2, 0 -_080502E8: .4byte 0xffffff00 -_080502EC: .4byte 0x00ffffff -_080502F0: - movs r0, 0 -_080502F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80502A4 - - thumb_func_start sub_80502F8 -sub_80502F8: @ 80502F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - mov r2, sp - movs r4, 0x5 -_08050314: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050314 - movs r6, 0 - mov r1, sp - movs r4, 0x4 -_08050328: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08050332 - adds r6, 0x1 -_08050332: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08050328 - cmp r6, 0x5 - beq _08050386 - cmp r3, 0x3 - bhi _08050386 - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _0805039E - mov r3, r10 -_0805034C: - movs r6, 0 - ldr r7, [sp, 0x10] - cmp r6, r7 - bge _08050394 - mov r9, r3 - mov r5, r10 - lsls r0, r4, 24 - mov r8, r0 -_0805035C: - mov r1, r9 - ldrh r0, [r1] - ldrh r2, [r5] - cmp r0, r2 - bne _0805038A - cmp r4, r6 - beq _0805038A - cmp r0, 0xAF - bne _08050386 - lsls r2, r6, 24 - lsrs r2, 24 - mov r0, r10 - mov r7, r8 - lsrs r1, r7, 24 - str r3, [sp, 0xC] - bl sub_80502A4 - lsls r0, 24 - ldr r3, [sp, 0xC] - cmp r0, 0 - beq _0805038A -_08050386: - movs r0, 0xC - b _080504DE -_0805038A: - adds r5, 0x10 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r6, r0 - blt _0805035C -_08050394: - adds r3, 0x10 - adds r4, 0x1 - ldr r1, [sp, 0x10] - cmp r4, r1 - blt _0805034C -_0805039E: - movs r2, 0 - mov r1, sp - movs r4, 0x4 -_080503A4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080503B2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080503B2: - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080503A4 - cmp r2, 0x3 - bls _080503C2 - movs r0, 0xD - b _080504DE -_080503C2: - cmp r2, 0x3 - bne _080503CA - movs r0, 0xB - b _080504DE -_080503CA: - movs r4, 0 - mov r1, sp -_080503CE: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0x32 - ble _080503D8 - b _080504D8 -_080503D8: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _080503CE - cmp r2, 0x1 - bne _0805042A - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080503F2 - movs r0, 0x1 - b _080504DE -_080503F2: - mov r0, sp - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - ble _08050400 - movs r0, 0x2 - b _080504DE -_08050400: - mov r0, sp - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _0805040E - movs r0, 0x3 - b _080504DE -_0805040E: - mov r0, sp - movs r4, 0x6 - ldrsh r0, [r0, r4] - cmp r0, 0 - ble _0805041C - movs r0, 0x4 - b _080504DE -_0805041C: - mov r0, sp - movs r7, 0x8 - ldrsh r0, [r0, r7] - cmp r0, 0 - ble _0805042A - movs r0, 0x5 - b _080504DE -_0805042A: - cmp r2, 0x2 - bne _080504DC - movs r4, 0 - ldr r5, _08050474 @ =gUnknown_03000520 - mov r1, sp - adds r2, r5, 0 -_08050436: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08050442 - strh r4, [r2] - adds r2, 0x2 -_08050442: - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x4 - ble _08050436 - movs r4, 0 - ldrsh r3, [r5, r4] - lsls r0, r3, 1 - mov r7, sp - adds r1, r7, r0 - movs r0, 0x2 - ldrsh r2, [r5, r0] - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r1, [r1, r4] - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r1, r0 - blt _08050498 - adds r0, r3, 0 - cmp r0, 0 - bne _08050478 - lsls r0, r2, 16 - b _080504A2 - .align 2, 0 -_08050474: .4byte gUnknown_03000520 -_08050478: - cmp r0, 0x1 - bne _08050480 - lsls r0, r2, 16 - b _080504AE -_08050480: - cmp r0, 0x2 - bne _08050488 - lsls r0, r2, 16 - b _080504BA -_08050488: - cmp r0, 0x3 - bne _08050490 - lsls r0, r2, 16 - b _080504C6 -_08050490: - cmp r0, 0x4 - bne _080504DC - lsls r0, r2, 16 - b _080504D2 -_08050498: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080504A8 - lsls r0, r3, 16 -_080504A2: - movs r1, 0x6 - orrs r0, r1 - b _080504DE -_080504A8: - cmp r0, 0x1 - bne _080504B4 - lsls r0, r3, 16 -_080504AE: - movs r1, 0x7 - orrs r0, r1 - b _080504DE -_080504B4: - cmp r0, 0x2 - bne _080504C0 - lsls r0, r3, 16 -_080504BA: - movs r1, 0x8 - orrs r0, r1 - b _080504DE -_080504C0: - cmp r0, 0x3 - bne _080504CC - lsls r0, r3, 16 -_080504C6: - movs r1, 0x9 - orrs r0, r1 - b _080504DE -_080504CC: - cmp r0, 0x4 - bne _080504DC - lsls r0, r3, 16 -_080504D2: - movs r1, 0xA - orrs r0, r1 - b _080504DE -_080504D8: - movs r0, 0xE - b _080504DE -_080504DC: - movs r0, 0 -_080504DE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80502F8 - - thumb_func_start sub_80504F0 -sub_80504F0: @ 80504F0 - ldr r1, _080504F8 @ =gUnknown_0300052C - strh r0, [r1] - bx lr - .align 2, 0 -_080504F8: .4byte gUnknown_0300052C - thumb_func_end sub_80504F0 - - thumb_func_start unref_sub_80504FC -unref_sub_80504FC: @ 80504FC - ldr r0, _08050504 @ =gUnknown_0300052C - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_08050504: .4byte gUnknown_0300052C - thumb_func_end unref_sub_80504FC - - thumb_func_start sub_8050508 -sub_8050508: @ 8050508 - ldr r1, _08050510 @ =gUnknown_0300052E - strh r0, [r1] - bx lr - .align 2, 0 -_08050510: .4byte gUnknown_0300052E - thumb_func_end sub_8050508 - - thumb_func_start unref_sub_8050514 -unref_sub_8050514: @ 8050514 - ldr r0, _0805051C @ =gUnknown_0300052E - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0805051C: .4byte gUnknown_0300052E - thumb_func_end unref_sub_8050514 - - thumb_func_start sub_8050520 -sub_8050520: @ 8050520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp] - mov r8, r1 - str r3, [sp, 0x4] - ldr r0, [sp, 0x30] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r7, _080505DC @ =gUnknown_03000510 - adds r2, r7, 0 - movs r1, 0 - adds r0, r7, 0 - adds r0, 0xA -_0805054A: - strh r1, [r0] - subs r0, 0x2 - cmp r0, r2 - bge _0805054A - movs r6, 0 - cmp r6, r9 - bge _08050580 - ldr r0, _080505DC @ =gUnknown_03000510 - mov r12, r0 - ldr r5, [sp] - adds r5, 0x9 -_08050560: - movs r3, 0 - adds r4, r5, 0 - mov r2, r12 -_08050566: - adds r1, r4, r3 - ldrh r0, [r2] - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x5 - ble _08050566 - adds r5, 0x10 - adds r6, 0x1 - cmp r6, r9 - blt _08050560 -_08050580: - movs r1, 0 - ldrsh r3, [r7, r1] - ldrh r0, [r7] - ldrh r1, [r7, 0x2] - subs r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x4] - subs r1, r0 - strh r1, [r7, 0x2] - ldrh r1, [r7, 0x6] - subs r0, r1 - strh r0, [r7, 0x4] - ldrh r0, [r7, 0x8] - subs r1, r0 - strh r1, [r7, 0x6] - subs r0, r3 - strh r0, [r7, 0x8] - movs r3, 0 - movs r2, 0 - adds r1, r7, 0 - movs r6, 0x4 -_080505AA: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _080505B6 - strh r2, [r1] - adds r3, 0x1 -_080505B6: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505AA - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 - movs r4, 0 - ldr r1, _080505DC @ =gUnknown_03000510 - movs r6, 0x4 -_080505CA: - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _080505E4 - cmp r0, r3 - bge _080505E0 - strh r4, [r1] - b _080505E4 - .align 2, 0 -_080505DC: .4byte gUnknown_03000510 -_080505E0: - subs r0, r2, r3 - strh r0, [r1] -_080505E4: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505CA - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506C8 @ =gUnknown_03000530 - movs r6, 0x4 -_080505F2: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080505F2 - ldr r1, _080506CC @ =0x0000014d - ldr r0, [sp, 0x8] - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - adds r3, r0, 0 - adds r3, 0x64 - ldr r4, _080506D0 @ =gUnknown_0300055C - str r3, [r4] - movs r6, 0x4 -_08050616: - movs r0, 0 - ldrsh r5, [r7, r0] - adds r0, r5, 0 - muls r0, r3 - movs r1, 0xA - str r3, [sp, 0xC] - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __modsi3 - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - ldr r3, [sp, 0xC] - cmp r4, 0x4 - ble _08050642 - adds r5, 0x1 -_08050642: - strh r5, [r7] - adds r7, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050616 - ldr r1, _080506C4 @ =gUnknown_03000510 - ldr r2, _080506D4 @ =gUnknown_03000548 - movs r6, 0x4 -_08050652: - movs r3, 0 - ldrsh r0, [r1, r3] - stm r2!, {r0} - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08050652 - ldr r4, _080506C4 @ =gUnknown_03000510 - ldr r0, [sp] - adds r1, r4, 0 - mov r2, r9 - mov r3, r10 - bl sub_80502F8 - mov r5, r8 - strb r0, [r5] - movs r1, 0xA - ldrsh r0, [r4, r1] - mov r1, r9 - bl __divsi3 - mov r3, r9 - subs r0, r3 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0805068C - movs r0, 0 - strh r0, [r4, 0xA] -_0805068C: - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0xC - bne _080506E6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r6, 0 - ldr r0, _080506D8 @ =gUnknown_082165DF - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0 - movs r4, 0x1 - movs r3, 0x2 -_080506B4: - adds r2, r0, 0 - asrs r2, r6 - ands r2, r4 - cmp r2, 0 - beq _080506DC - strh r3, [r1] - b _080506DE - .align 2, 0 -_080506C4: .4byte gUnknown_03000510 -_080506C8: .4byte gUnknown_03000530 -_080506CC: .4byte 0x0000014d -_080506D0: .4byte gUnknown_0300055C -_080506D4: .4byte gUnknown_03000548 -_080506D8: .4byte gUnknown_082165DF -_080506DC: - strh r2, [r1] -_080506DE: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080506B4 -_080506E6: - ldr r7, _08050740 @ =gUnknown_03000510 - movs r2, 0xFF - adds r1, r7, 0 - movs r6, 0x5 -_080506EE: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xFF - ble _080506F8 - strh r2, [r1] -_080506F8: - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080506EE - ldrh r0, [r7] - mov r4, r8 - strb r0, [r4, 0x1] - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x2] - ldrh r0, [r7, 0x4] - strb r0, [r4, 0x3] - ldrh r0, [r7, 0x6] - strb r0, [r4, 0x4] - ldrh r0, [r7, 0x8] - strb r0, [r4, 0x5] - ldrh r0, [r7, 0xA] - strb r0, [r4, 0x6] - movs r6, 0 - adds r2, r7, 0 -_0805071E: - ldr r5, [sp, 0x4] - adds r1, r5, r6 - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x5 - ble _0805071E - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050740: .4byte gUnknown_03000510 - thumb_func_end sub_8050520 - - thumb_func_start sub_8050744 -sub_8050744: @ 8050744 - push {r4,lr} - sub sp, 0x4 - ldr r4, [sp, 0xC] - lsls r2, 24 - lsrs r2, 24 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp] - bl sub_8050520 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8050744 - - thumb_func_start sub_8050760 -sub_8050760: @ 8050760 - push {r4-r6,lr} - ldr r0, _08050780 @ =gUnknown_03004854 - ldr r0, [r0] - movs r2, 0x96 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r0, 0x5A - ldrh r4, [r0] - movs r2, 0 - ldr r5, _08050784 @ =0x00000383 - cmp r1, r5 - bhi _08050788 - movs r2, 0x5 - b _080507DA - .align 2, 0 -_08050780: .4byte gUnknown_03004854 -_08050784: .4byte 0x00000383 -_08050788: - ldr r3, _0805079C @ =0xfffffc7c - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080507A0 @ =0x00000257 - cmp r0, r3 - bhi _080507A4 - movs r2, 0x4 - b _080507DA - .align 2, 0 -_0805079C: .4byte 0xfffffc7c -_080507A0: .4byte 0x00000257 -_080507A4: - ldr r6, _080507B4 @ =0xfffffa24 - adds r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bhi _080507B8 - movs r2, 0x3 - b _080507DA - .align 2, 0 -_080507B4: .4byte 0xfffffa24 -_080507B8: - ldr r3, _080507C8 @ =0xfffff7cc - adds r0, r1, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bhi _080507CC - movs r2, 0x2 - b _080507DA - .align 2, 0 -_080507C8: .4byte 0xfffff7cc -_080507CC: - ldr r6, _080507F8 @ =0xfffff31c - adds r0, r1, r6 - lsls r0, 16 - ldr r1, _080507FC @ =0x012b0000 - cmp r0, r1 - bhi _080507DA - movs r2, 0x1 -_080507DA: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_8050508 - movs r2, 0 - cmp r4, 0x40 - bhi _080508BC - adds r0, r4, 0 - subs r0, 0x32 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050804 - ldr r2, _08050800 @ =0x0000ffff - b _080508BC - .align 2, 0 -_080507F8: .4byte 0xfffff31c -_080507FC: .4byte 0x012b0000 -_08050800: .4byte 0x0000ffff -_08050804: - adds r0, r4, 0 - subs r0, 0x64 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050818 - ldr r2, _08050814 @ =0x0000fffe - b _080508BC - .align 2, 0 -_08050814: .4byte 0x0000fffe -_08050818: - adds r0, r4, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805082C - ldr r2, _08050828 @ =0x0000fffd - b _080508BC - .align 2, 0 -_08050828: .4byte 0x0000fffd -_0805082C: - adds r0, r4, 0 - subs r0, 0xC8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050840 - ldr r2, _0805083C @ =0x0000fffc - b _080508BC - .align 2, 0 -_0805083C: .4byte 0x0000fffc -_08050840: - adds r0, r4, 0 - subs r0, 0xFA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050854 - ldr r2, _08050850 @ =0x0000fffb - b _080508BC - .align 2, 0 -_08050850: .4byte 0x0000fffb -_08050854: - ldr r1, _08050864 @ =0xfffffea2 - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805086C - ldr r2, _08050868 @ =0x0000fffa - b _080508BC - .align 2, 0 -_08050864: .4byte 0xfffffea2 -_08050868: .4byte 0x0000fffa -_0805086C: - ldr r3, _0805087C @ =0xfffffe70 - adds r0, r4, r3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _08050884 - ldr r2, _08050880 @ =0x0000fff9 - b _080508BC - .align 2, 0 -_0805087C: .4byte 0xfffffe70 -_08050880: .4byte 0x0000fff9 -_08050884: - ldr r6, _08050894 @ =0xfffffe0c - adds r0, r4, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _0805089C - ldr r2, _08050898 @ =0x0000fff8 - b _080508BC - .align 2, 0 -_08050894: .4byte 0xfffffe0c -_08050898: .4byte 0x0000fff8 -_0805089C: - ldr r1, _080508AC @ =0xfffffdda - adds r0, r4, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x31 - bhi _080508B4 - ldr r2, _080508B0 @ =0x0000fff7 - b _080508BC - .align 2, 0 -_080508AC: .4byte 0xfffffdda -_080508B0: .4byte 0x0000fff7 -_080508B4: - ldr r0, _080508CC @ =0x00000257 - cmp r4, r0 - bls _080508BC - ldr r2, _080508D0 @ =0x0000fff6 -_080508BC: - lsls r0, r2, 16 - asrs r0, 16 - bl sub_80504F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080508CC: .4byte 0x00000257 -_080508D0: .4byte 0x0000fff6 - thumb_func_end sub_8050760 - - thumb_func_start sub_80508D4 -sub_80508D4: @ 80508D4 - push {lr} - ldr r2, _080508F8 @ =gUnknown_03004854 - ldr r1, [r2] - adds r1, 0xAA - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xAA - ldrb r1, [r0] - lsls r1, 28 - movs r0, 0x90 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0xC0 - bl sub_814A880 - pop {r0} - bx r0 - .align 2, 0 -_080508F8: .4byte gUnknown_03004854 - thumb_func_end sub_80508D4 - - thumb_func_start sub_80508FC -sub_80508FC: @ 80508FC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08050944 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuDrawTextWindow - ldr r1, _08050948 @ =0x0000ffff - ldr r3, _0805094C @ =0x00002d9f - movs r0, 0x20 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r0, _08050950 @ =gOtherText_YesNoTerminating - movs r1, 0x18 - movs r2, 0x9 - bl MenuPrint - ldr r0, [r4] - adds r0, 0xAA - ldrb r0, [r0] - bl sub_80508D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_03004854 -_08050948: .4byte 0x0000ffff -_0805094C: .4byte 0x00002d9f -_08050950: .4byte gOtherText_YesNoTerminating - thumb_func_end sub_80508FC - - thumb_func_start sub_8050954 -sub_8050954: @ 8050954 - push {r4-r7,lr} - bl sub_8051474 - bl GetMultiplayerId - ldr r0, _08050978 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xC - bls _0805096E - b _08050CB6 -_0805096E: - lsls r0, 2 - ldr r1, _0805097C @ =_08050980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050978: .4byte gUnknown_03004854 -_0805097C: .4byte _08050980 - .align 2, 0 -_08050980: - .4byte _080509B4 - .4byte _080509F8 - .4byte _08050A4C - .4byte _08050A94 - .4byte _08050AD0 - .4byte _08050ADE - .4byte _08050B08 - .4byte _08050B34 - .4byte _08050B42 - .4byte _08050B58 - .4byte _08050BE0 - .4byte _08050C64 - .4byte _08050C98 -_080509B4: - bl ClearLinkCallback - ldr r0, _080509C8 @ =gMPlay_BGM - movs r1, 0x80 - lsls r1, 1 - bl m4aMPlayTempoControl - movs r4, 0 - b _080509E4 - .align 2, 0 -_080509C8: .4byte gMPlay_BGM -_080509CC: - ldr r0, _080509F0 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - bl DestroyTask - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080509E4: - ldr r0, _080509F4 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r4, r0 - bcc _080509CC - b _08050C82 - .align 2, 0 -_080509F0: .4byte gUnknown_03004854 -_080509F4: .4byte gSpecialVar_0x8004 -_080509F8: - ldr r1, _08050A24 @ =gUnknown_03004854 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0x56 - ldrh r0, [r2] - subs r0, 0x20 - strh r0, [r2] - lsls r0, 16 - adds r4, r1, 0 - cmp r0, 0 - bgt _08050A40 - movs r0, 0 - strh r0, [r2] - ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08050A2C - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - b _08050A32 - .align 2, 0 -_08050A24: .4byte gUnknown_03004854 -_08050A28: .4byte gReceivedRemoteLinkPlayers -_08050A2C: - adds r1, r3, 0 - adds r1, 0x6F - movs r0, 0x5 -_08050A32: - strb r0, [r1] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, _08050A48 @ =gMPlay_SE2 - bl m4aMPlayStop -_08050A40: - bl sub_804E290 - b _08050CB6 - .align 2, 0 -_08050A48: .4byte gMPlay_SE2 -_08050A4C: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _08050A58 - b _08050C82 -_08050A58: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _08050A64 - b _08050CB6 -_08050A64: - ldr r4, _08050A90 @ =gUnknown_03004854 - ldr r3, [r4] - movs r2, 0xDE - lsls r2, 1 - adds r1, r3, r2 - movs r5, 0x96 - lsls r5, 1 - adds r0, r3, r5 - ldr r0, [r0] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x5A - ldrh r2, [r0] - adds r5, 0x94 - adds r0, r3, r5 - strh r2, [r0] - movs r0, 0 - movs r2, 0x28 - bl SendBlock - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050A90: .4byte gUnknown_03004854 -_08050A94: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08050AA0 - b _08050CB6 -_08050AA0: - ldr r2, _08050AC8 @ =gBlockRecvBuffer - ldr r0, _08050ACC @ =gUnknown_03004854 - ldr r3, [r0] - ldrh r0, [r2, 0x4] - adds r1, r3, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x96 - lsls r0, 1 - adds r1, r3, r0 - ldr r0, [r2] - str r0, [r1] - adds r1, r3, 0 - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl ResetBlockReceivedFlags - b _08050CB6 - .align 2, 0 -_08050AC8: .4byte gBlockRecvBuffer -_08050ACC: .4byte gUnknown_03004854 -_08050AD0: - bl Blender_PrintBlendingRanking - lsls r0, 24 - cmp r0, 0 - bne _08050ADC - b _08050CB6 -_08050ADC: - b _08050C82 -_08050ADE: - bl Blender_PrintBlendingResults - lsls r0, 24 - cmp r0, 0 - bne _08050AEA - b _08050CB6 -_08050AEA: - ldr r0, _08050AFC @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B00 - movs r0, 0x22 - bl IncrementGameStat - b _08050C82 - .align 2, 0 -_08050AFC: .4byte gUnknown_03004834 -_08050B00: - movs r0, 0x21 - bl IncrementGameStat - b _08050C82 -_08050B08: - ldr r0, _08050B2C @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _08050CB6 - .align 2, 0 -_08050B2C: .4byte gUnknown_03004854 -_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt -_08050B34: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050B40 - b _08050CB6 -_08050B40: - b _08050C82 -_08050B42: - ldr r4, _08050B54 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0xAA - movs r1, 0 - strb r1, [r0] - bl sub_80508FC - ldr r1, [r4] - b _08050C86 - .align 2, 0 -_08050B54: .4byte gUnknown_03004854 -_08050B58: - ldr r0, _08050B80 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08050B88 - ldr r0, _08050B84 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0 - beq _08050B76 - movs r0, 0x5 - bl PlaySE -_08050B76: - movs r0, 0 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050B80: .4byte gMain -_08050B84: .4byte gUnknown_03004854 -_08050B88: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050BA8 - ldr r0, _08050BA4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0xAA - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050BD4 - movs r0, 0x5 - bl PlaySE - b _08050BD4 - .align 2, 0 -_08050BA4: .4byte gUnknown_03004854 -_08050BA8: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08050BB8 - movs r0, 0x5 - bl PlaySE - b _08050C82 -_08050BB8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08050BC2 - b _08050CB6 -_08050BC2: - movs r0, 0x5 - bl PlaySE - ldr r0, _08050BDC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050BD4: - movs r0, 0x1 - bl sub_80508D4 - b _08050CB6 - .align 2, 0 -_08050BDC: .4byte gUnknown_03004854 -_08050BE0: - ldr r6, _08050C10 @ =gSendCmd - movs r7, 0 - ldr r0, _08050C14 @ =0x00002fff - strh r0, [r6] - ldr r4, _08050C18 @ =gUnknown_03004854 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xAA - ldrb r5, [r0] - cmp r5, 0 - bne _08050C50 - movs r0, 0x4 - bl IsBagPocketNonEmpty - lsls r0, 24 - cmp r0, 0 - bne _08050C20 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x2 - strh r1, [r0] - ldr r0, _08050C1C @ =0x00009999 - b _08050C48 - .align 2, 0 -_08050C10: .4byte gSendCmd -_08050C14: .4byte 0x00002fff -_08050C18: .4byte gUnknown_03004854 -_08050C1C: .4byte 0x00009999 -_08050C20: - bl sub_810CA00 - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08050C40 - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x3 - strh r1, [r0] - ldr r0, _08050C3C @ =0x0000aaaa - b _08050C48 - .align 2, 0 -_08050C3C: .4byte 0x0000aaaa -_08050C40: - ldr r0, [r4] - adds r0, 0x7C - strh r5, [r0] - ldr r0, _08050C4C @ =0x00007779 -_08050C48: - strh r0, [r6, 0x2] - b _08050C82 - .align 2, 0 -_08050C4C: .4byte 0x00007779 -_08050C50: - adds r1, r2, 0 - adds r1, 0x7C - movs r0, 0x1 - strh r0, [r1] - ldr r0, _08050C60 @ =0x00008888 - strh r0, [r6, 0x2] - subs r1, 0xD - b _08050C88 - .align 2, 0 -_08050C60: .4byte 0x00008888 -_08050C64: - ldr r0, _08050C70 @ =gUnknown_03004834 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C78 - ldr r0, _08050C74 @ =sub_80510E8 - b _08050CA4 - .align 2, 0 -_08050C70: .4byte gUnknown_03004834 -_08050C74: .4byte sub_80510E8 -_08050C78: - ldr r0, _08050C90 @ =gOtherText_LinkStandby3 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage -_08050C82: - ldr r0, _08050C94 @ =gUnknown_03004854 - ldr r1, [r0] -_08050C86: - adds r1, 0x6F -_08050C88: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050CB6 - .align 2, 0 -_08050C90: .4byte gOtherText_LinkStandby3 -_08050C94: .4byte gUnknown_03004854 -_08050C98: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08050CB6 - ldr r0, _08050CE0 @ =sub_8050E30 -_08050CA4: - bl SetMainCallback2 - ldr r2, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0] -_08050CB6: - bl sub_8051B18 - ldr r0, _08050CE4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x56 - ldrh r0, [r0] - bl sub_8051A3C - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050CE0: .4byte sub_8050E30 -_08050CE4: .4byte gUnknown_03004854 - thumb_func_end sub_8050954 - - thumb_func_start sub_8050CE8 -sub_8050CE8: @ 8050CE8 - push {r4,lr} - ldr r1, _08050D08 @ =gUnknown_03004854 - ldr r0, [r1] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _08050CFE - b _08050E28 -_08050CFE: - lsls r0, 2 - ldr r1, _08050D0C @ =_08050D10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050D08: .4byte gUnknown_03004854 -_08050D0C: .4byte _08050D10 - .align 2, 0 -_08050D10: - .4byte _08050D2C - .4byte _08050D44 - .4byte _08050D70 - .4byte _08050D80 - .4byte _08050DA6 - .4byte _08050DEC - .4byte _08050E06 -_08050D2C: - bl sub_80084A4 - ldr r0, _08050D40 @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0x1 - b _08050DF8 - .align 2, 0 -_08050D40: .4byte gUnknown_03004854 -_08050D44: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - ldr r0, _08050D68 @ =gUnknown_03004854 - ldr r1, [r0] - movs r2, 0xE2 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _08050D6C @ =gSoftResetDisabled - movs r0, 0x1 - strb r0, [r1] - b _08050E28 - .align 2, 0 -_08050D68: .4byte gUnknown_03004854 -_08050D6C: .4byte gSoftResetDisabled -_08050D70: - bl sub_8125E2C - ldr r0, _08050D7C @ =gUnknown_03004854 - ldr r2, [r0] - b _08050DEE - .align 2, 0 -_08050D7C: .4byte gUnknown_03004854 -_08050D80: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - bne _08050E28 - bl sub_80084A4 - ldr r1, [r4] - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _08050E28 -_08050DA6: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _08050E28 - bl sub_8125E6C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08050DD0 - ldr r0, _08050DCC @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - movs r1, 0x5 - str r1, [r0] - b _08050E28 - .align 2, 0 -_08050DCC: .4byte gUnknown_03004854 -_08050DD0: - ldr r0, _08050DE8 @ =gUnknown_03004854 - ldr r1, [r0] - movs r3, 0x98 - lsls r3, 1 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0xE2 - lsls r0, 1 - adds r1, r0 - movs r0, 0x3 - str r0, [r1] - b _08050E28 - .align 2, 0 -_08050DE8: .4byte gUnknown_03004854 -_08050DEC: - ldr r2, [r4] -_08050DEE: - movs r3, 0xE2 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r1] - adds r0, 0x1 -_08050DF8: - str r0, [r1] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0 - str r0, [r1] - b _08050E28 -_08050E06: - ldr r1, [r4] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x5 - ble _08050E28 - ldr r1, _08050E24 @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _08050E2A - .align 2, 0 -_08050E24: .4byte gSoftResetDisabled -_08050E28: - movs r0, 0 -_08050E2A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8050CE8 - - thumb_func_start sub_8050E30 -sub_8050E30: @ 8050E30 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _08050E50 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xC - bls _08050E44 - b _080510AC -_08050E44: - lsls r0, 2 - ldr r1, _08050E54 @ =_08050E58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050E50: .4byte gUnknown_03004854 -_08050E54: .4byte _08050E58 - .align 2, 0 -_08050E58: - .4byte _08050E8C - .4byte _08050ED8 - .4byte _08050F00 - .4byte _08050F54 - .4byte _08050F74 - .4byte _08050F92 - .4byte _08050FBC - .4byte _08050FEC - .4byte _08051008 - .4byte _08051018 - .4byte _0805103C - .4byte _0805107C - .4byte _0805109E -_08050E8C: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x70 - ldrh r2, [r0] - ldr r0, _08050EB8 @ =0x00002222 - cmp r2, r0 - beq _08050F8A - ldr r0, _08050EBC @ =0x00001111 - cmp r2, r0 - beq _08050EA2 - b _080510AC -_08050EA2: - adds r0, r1, 0 - adds r0, 0x78 - ldrh r2, [r0] - ldr r0, _08050EC0 @ =0x00009999 - cmp r2, r0 - bne _08050EC4 - adds r1, 0x6F - movs r0, 0x2 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050EB8: .4byte 0x00002222 -_08050EBC: .4byte 0x00001111 -_08050EC0: .4byte 0x00009999 -_08050EC4: - ldr r0, _08050ED4 @ =0x0000aaaa - cmp r2, r0 - bne _08050F8A - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _080510AC - .align 2, 0 -_08050ED4: .4byte 0x0000aaaa -_08050ED8: - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050EF8 @ =gStringVar4 - ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull - b _08050F1E - .align 2, 0 -_08050EF8: .4byte gStringVar4 -_08050EFC: .4byte gOtherText_OtherCaseIsFull -_08050F00: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _08050F48 @ =gStringVar4 - ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend -_08050F1E: - adds r0, r4, 0 - bl StringCopy - ldr r0, [r5] - adds r0, 0x7A - ldrh r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050F50 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r4, 0 - bl de_sub_8073110 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _080510AC - .align 2, 0 -_08050F48: .4byte gStringVar4 -_08050F4C: .4byte gOtherText_NoBerriesForBlend -_08050F50: .4byte gLinkPlayers + 0x8 -_08050F54: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - bne _08050F60 - b _080510AC -_08050F60: - ldr r0, _08050F70 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051094 - .align 2, 0 -_08050F70: .4byte gUnknown_03004854 -_08050F74: - ldr r2, [r5] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bgt _08050F88 - b _080510AC -_08050F88: - adds r1, r2, 0 -_08050F8A: - adds r1, 0x6F - movs r0, 0x5 - strb r0, [r1] - b _080510AC -_08050F92: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08050FB4 @ =gMultiText_Saving - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - bl sub_80084A4 - ldr r0, _08050FB8 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08050FB4: .4byte gMultiText_Saving -_08050FB8: .4byte gUnknown_03004854 -_08050FBC: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - ldr r3, _08050FE8 @ =gUnknown_03004854 - ldr r1, [r3] - movs r2, 0x98 - lsls r2, 1 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xE2 - lsls r1, 1 - adds r0, r1 - str r2, [r0] - b _080510AC - .align 2, 0 -_08050FE8: .4byte gUnknown_03004854 -_08050FEC: - bl sub_8050CE8 - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x37 - bl PlaySE - ldr r0, _08051004 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051004: .4byte gUnknown_03004854 -_08051008: - ldr r1, [r5] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80084A4 - b _080510AC -_08051018: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080510AC - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051038 @ =gUnknown_03004854 - ldr r1, [r0] - b _08051094 - .align 2, 0 -_08051038: .4byte gUnknown_03004854 -_0805103C: - ldr r0, _08051064 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080510AC - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _08051068 @ =0x00002222 - cmp r1, r0 - bne _08051070 - ldr r0, _0805106C @ =sub_804E538 - bl SetMainCallback2 - b _080510AC - .align 2, 0 -_08051064: .4byte gPaletteFade -_08051068: .4byte 0x00002222 -_0805106C: .4byte sub_804E538 -_08051070: - movs r1, 0x98 - lsls r1, 1 - adds r0, r2, r1 - str r3, [r0] - adds r1, r2, 0 - b _08051094 -_0805107C: - ldr r1, [r5] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080510AC - bl sub_800832C - ldr r1, [r5] -_08051094: - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080510AC -_0805109E: - ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080510AC - ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080510AC: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080510C8: .4byte gReceivedRemoteLinkPlayers -_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_8050E30 - - thumb_func_start sub_80510E8 -sub_80510E8: @ 80510E8 - push {lr} - ldr r1, _08051104 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x6F - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bls _080510FA - b _0805121E -_080510FA: - lsls r0, 2 - ldr r1, _08051108 @ =_0805110C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051104: .4byte gUnknown_03004854 -_08051108: .4byte _0805110C - .align 2, 0 -_0805110C: - .4byte _08051138 - .4byte _0805116E - .4byte _08051190 - .4byte _080511BC - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _0805121E - .4byte _080511D8 - .4byte _080511F0 -_08051138: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x1 - bhi _0805114A - adds r1, 0x6F - movs r0, 0x9 - strb r0, [r1] -_0805114A: - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x7C - ldrh r1, [r0] - cmp r1, 0x2 - bne _0805115A - subs r0, 0xD - strb r1, [r0] -_0805115A: - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0x3 - bne _0805121E - adds r1, 0x6F - movs r0, 0x1 - strb r0, [r1] - b _0805121E -_0805116E: - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0805118C @ =gOtherText_CaseIsFull - b _080511AC - .align 2, 0 -_0805118C: .4byte gOtherText_CaseIsFull -_08051190: - ldr r0, [r3] - adds r0, 0x6F - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - bl DestroyMenuCursor - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1C - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _080511B8 @ =gOtherText_OutOfBerries -_080511AC: - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - b _0805121E - .align 2, 0 -_080511B8: .4byte gOtherText_OutOfBerries -_080511BC: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805121E - ldr r0, _080511D4 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] - b _0805121E - .align 2, 0 -_080511D4: .4byte gUnknown_03004854 -_080511D8: - movs r0, 0x3 - bl BeginFastPaletteFade - ldr r0, _080511EC @ =gUnknown_03004854 - ldr r1, [r0] - adds r1, 0x6F - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805121E - .align 2, 0 -_080511EC: .4byte gUnknown_03004854 -_080511F0: - ldr r0, _08051210 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0805121E - ldr r0, [r3] - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _08051218 - ldr r0, _08051214 @ =sub_804E538 - bl SetMainCallback2 - b _0805121E - .align 2, 0 -_08051210: .4byte gPaletteFade -_08051214: .4byte sub_804E538 -_08051218: - ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_0805121E: - bl sub_805123C - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80510E8 - - thumb_func_start sub_805123C -sub_805123C: @ 805123C - push {r4-r6,lr} - ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08051248 - b _08051404 -_08051248: - ldr r4, _08051270 @ =gRecvCmds - ldrh r1, [r4] - ldr r0, _08051274 @ =0x00002fff - cmp r1, r0 - bne _080512C6 - ldrh r1, [r4, 0x8] - ldr r0, _08051278 @ =0x00001111 - cmp r1, r0 - bne _080512B8 - ldrh r3, [r4, 0x10] - ldr r0, _0805127C @ =0x00009999 - cmp r3, r0 - beq _08051298 - cmp r3, r0 - bgt _08051284 - ldr r0, _08051280 @ =0x00008888 - b _08051286 - .align 2, 0 -_0805126C: .4byte gReceivedRemoteLinkPlayers -_08051270: .4byte gRecvCmds -_08051274: .4byte 0x00002fff -_08051278: .4byte 0x00001111 -_0805127C: .4byte 0x00009999 -_08051280: .4byte 0x00008888 -_08051284: - ldr r0, _08051290 @ =0x0000aaaa -_08051286: - cmp r3, r0 - beq _08051298 - ldr r2, _08051294 @ =gUnknown_03004854 - b _080512A8 - .align 2, 0 -_08051290: .4byte 0x0000aaaa -_08051294: .4byte gUnknown_03004854 -_08051298: - ldr r2, _080512B0 @ =gUnknown_03004854 - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x78 - strh r3, [r1] - ldrh r1, [r4, 0x18] - adds r0, 0x7A - strh r1, [r0] -_080512A8: - ldr r0, [r2] - adds r0, 0x70 - ldr r1, _080512B4 @ =0x00001111 - b _080512C4 - .align 2, 0 -_080512B0: .4byte gUnknown_03004854 -_080512B4: .4byte 0x00001111 -_080512B8: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512C6 - ldr r0, _080512F8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x70 -_080512C4: - strh r1, [r0] -_080512C6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080512D2 - b _08051404 -_080512D2: - ldr r2, _080512F8 @ =gUnknown_03004854 - ldr r0, [r2] - adds r0, 0x70 - ldrh r1, [r0] - ldr r0, _080512FC @ =0x00001111 - cmp r1, r0 - bne _080512E2 - b _08051404 -_080512E2: - ldr r0, _080512F4 @ =0x00002222 - cmp r1, r0 - bne _080512EA - b _08051404 -_080512EA: - movs r4, 0 - ldr r6, _08051300 @ =0x00002fff - adds r5, r2, 0 - b _0805134E - .align 2, 0 -_080512F4: .4byte 0x00002222 -_080512F8: .4byte gUnknown_03004854 -_080512FC: .4byte 0x00001111 -_08051300: .4byte 0x00002fff -_08051304: - ldr r1, _08051328 @ =gRecvCmds - lsls r2, r4, 1 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r6 - bne _08051348 - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldrh r1, [r0] - ldr r0, _0805132C @ =0x00008888 - cmp r1, r0 - beq _08051340 - cmp r1, r0 - bgt _08051334 - ldr r0, _08051330 @ =0x00007779 - b _0805133C - .align 2, 0 -_08051328: .4byte gRecvCmds -_0805132C: .4byte 0x00008888 -_08051330: .4byte 0x00007779 -_08051334: - ldr r0, _08051360 @ =0x00009999 - cmp r1, r0 - beq _08051340 - ldr r0, _08051364 @ =0x0000aaaa -_0805133C: - cmp r1, r0 - bne _08051348 -_08051340: - ldr r0, [r5] - adds r0, 0x70 - adds r0, r2 - strh r1, [r0] -_08051348: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805134E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08051304 - movs r4, 0 - b _0805136E - .align 2, 0 -_08051360: .4byte 0x00009999 -_08051364: .4byte 0x0000aaaa -_08051368: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0805136E: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _0805138A - ldr r0, _0805139C @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08051368 -_0805138A: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _08051404 - movs r4, 0 - ldr r5, _080513A0 @ =0x00007779 - b _080513AA - .align 2, 0 -_0805139C: .4byte gUnknown_03004854 -_080513A0: .4byte 0x00007779 -_080513A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080513AA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080513C6 - ldr r0, _080513E0 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _080513A4 -_080513C6: - ldr r5, _080513E4 @ =gSendCmd - movs r6, 0 - ldr r0, _080513E8 @ =0x00002fff - strh r0, [r5] - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _080513F0 - ldr r0, _080513EC @ =0x00002222 - strh r0, [r5, 0x2] - b _08051404 - .align 2, 0 -_080513E0: .4byte gUnknown_03004854 -_080513E4: .4byte gSendCmd -_080513E8: .4byte 0x00002fff -_080513EC: .4byte 0x00002222 -_080513F0: - ldr r0, _0805140C @ =0x00001111 - strh r0, [r5, 0x2] - ldr r0, _08051410 @ =gUnknown_03004854 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x70 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - strh r4, [r5, 0x6] -_08051404: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805140C: .4byte 0x00001111 -_08051410: .4byte gUnknown_03004854 - thumb_func_end sub_805123C - - thumb_func_start sub_8051414 -sub_8051414: @ 8051414 - push {lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 7 - str r0, [sp] - movs r0, 0xA0 - lsls r0, 7 - str r0, [sp, 0x4] - mov r3, sp - ldr r0, _08051470 @ =gUnknown_03004854 - ldr r0, [r0] - mov r12, r0 - movs r0, 0xA2 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x78 - subs r0, r2 - strh r0, [r3, 0x8] - movs r0, 0xA3 - lsls r0, 1 - add r0, r12 - ldrh r2, [r0] - movs r0, 0x50 - subs r0, r2 - strh r0, [r3, 0xA] - mov r2, sp - movs r3, 0xA1 - lsls r3, 1 - add r3, r12 - ldrh r0, [r3] - strh r0, [r2, 0xC] - ldrh r0, [r3] - strh r0, [r2, 0xE] - mov r0, r12 - adds r0, 0x54 - ldrh r0, [r0] - strh r0, [r2, 0x10] - mov r0, sp - movs r2, 0x1 - bl BgAffineSet - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08051470: .4byte gUnknown_03004854 - thumb_func_end sub_8051414 - - thumb_func_start sub_8051474 -sub_8051474: @ 8051474 - push {lr} - ldr r0, _080514A0 @ =gUnknown_03004854 - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x54 - ldrh r2, [r1] - adds r0, r3, 0 - adds r0, 0x58 - strh r2, [r0] - subs r0, 0x2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - adds r0, r3, r1 - bl sub_8051414 - pop {r0} - bx r0 - .align 2, 0 -_080514A0: .4byte gUnknown_03004854 - thumb_func_end sub_8051474 - - thumb_func_start sub_80514A4 -sub_80514A4: @ 80514A4 - ldr r1, _080514E8 @ =REG_BG2PA - ldr r0, _080514EC @ =gUnknown_03004854 - ldr r2, [r0] - movs r3, 0xB4 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - adds r3, 0x2 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - adds r3, 0x4 - adds r0, r2, r3 - ldr r0, [r0] - str r0, [r1] - bx lr - .align 2, 0 -_080514E8: .4byte REG_BG2PA -_080514EC: .4byte gUnknown_03004854 - thumb_func_end sub_80514A4 - - thumb_func_start sub_80514F0 -sub_80514F0: @ 80514F0 - ldr r1, _0805151C @ =REG_BG1HOFS - ldr r0, _08051520 @ =gUnknown_03004854 - ldr r3, [r0] - movs r0, 0xA2 - lsls r0, 1 - adds r2, r3, r0 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - movs r0, 0xA3 - lsls r0, 1 - adds r3, r0 - ldrh r0, [r3] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - bx lr - .align 2, 0 -_0805151C: .4byte REG_BG1HOFS -_08051520: .4byte gUnknown_03004854 - thumb_func_end sub_80514F0 - - thumb_func_start sub_8051524 -sub_8051524: @ 8051524 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051542 - adds r0, 0x7 -_08051542: - asrs r0, 3 - strh r0, [r2, 0x24] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _08051550 - adds r0, 0x7 -_08051550: - asrs r0, 3 - strh r0, [r2, 0x26] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08051568 - adds r0, r2, 0 - bl DestroySprite -_08051568: - pop {r0} - bx r0 - thumb_func_end sub_8051524 - - thumb_func_start sub_805156C -sub_805156C: @ 805156C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl Random - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0x1 - ands r1, r0 - adds r0, r1, 0x1 - cmp r0, 0 - beq _08051628 - ldr r0, _08051638 @ =gSineTable - mov r9, r0 - ldr r2, _0805163C @ =gSprites - mov r10, r2 - adds r6, r1, 0x1 - movs r3, 0x1F - mov r8, r3 - movs r7, 0x10 -_08051598: - bl Random - ldr r1, _08051640 @ =gUnknown_03004854 - ldr r4, [r1] - adds r4, 0x54 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x14 - bl __umodsi3 - ldrh r1, [r4] - adds r1, r0 - lsls r1, 16 - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r9 - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _080515CC - adds r1, 0x3 -_080515CC: - asrs r1, 2 - lsls r0, r2, 1 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080515DC - adds r0, 0x3 -_080515DC: - asrs r2, r0, 2 - adds r1, 0x78 - adds r2, 0x50 - ldr r0, _08051644 @ =gSpriteTemplate_82164FC - movs r3, 0x1 - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - mov r3, r10 - adds r4, r5, r3 - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - ands r0, r1 - subs r0, r7, r0 - strh r0, [r4, 0x2E] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r2, r8 - ands r0, r2 - subs r0, r7, r0 - strh r0, [r4, 0x30] - ldr r3, _08051648 @ =gSprites + 0x1C - adds r5, r3 - ldr r0, _0805164C @ =sub_8051524 - str r0, [r5] - subs r6, 0x1 - cmp r6, 0 - bne _08051598 -_08051628: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051638: .4byte gSineTable -_0805163C: .4byte gSprites -_08051640: .4byte gUnknown_03004854 -_08051644: .4byte gSpriteTemplate_82164FC -_08051648: .4byte gSprites + 0x1C -_0805164C: .4byte sub_8051524 - thumb_func_end sub_805156C - - thumb_func_start sub_8051650 -sub_8051650: @ 8051650 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0805167C - adds r0, r4, 0 - bl DestroySprite -_0805167C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8051650 - - thumb_func_start sub_8051684 -sub_8051684: @ 8051684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xC - negs r1, r1 - cmp r0, r1 - bge _080516A8 - ldr r0, _080516C0 @ =0x0000fff4 - strh r0, [r2, 0x26] -_080516A8: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080516BC - adds r0, r2, 0 - bl DestroySprite -_080516BC: - pop {r0} - bx r0 - .align 2, 0 -_080516C0: .4byte 0x0000fff4 - thumb_func_end sub_8051684 - - thumb_func_start Blender_SetBankBerryData -Blender_SetBankBerryData: @ 80516C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080516F4 @ =gUnknown_03004854 - ldr r3, [r2] - lsls r4, r0, 1 - adds r2, r3, 0 - adds r2, 0x80 - adds r2, r4 - strh r1, [r2] - lsls r0, 4 - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - adds r3, r0 - adds r0, r3, 0 - bl sub_804E844 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080516F4: .4byte gUnknown_03004854 - thumb_func_end Blender_SetBankBerryData - - thumb_func_start unref_sub_80516F8 -unref_sub_80516F8: @ 80516F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080517B8 @ =gTasks - adds r4, r0, r1 - ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r6] - cmp r0, 0 - beq _0805180C - bl GetMultiplayerId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080517D4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _08051730 - strh r1, [r4, 0x8] -_08051730: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x64 - bne _080517A0 - ldr r0, _080517C0 @ =gUnknown_03004854 - ldr r0, [r0] - adds r0, 0x4 - movs r1, 0x14 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl ZeroFillWindowRect - movs r0, 0x4 - movs r1, 0x4 - movs r2, 0xA - movs r3, 0xC - bl MenuDrawTextWindow - movs r2, 0 - ldr r6, _080517C4 @ =gLinkPlayers + 0x4 -_0805175C: - adds r4, r2, 0x1 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - cmp r0, 0 - beq _08051784 - ldr r1, _080517C8 @ =gUnknown_08216284 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - lsls r2, 25 - movs r1, 0xA0 - lsls r1, 19 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint -_08051784: - movs r0, 0 - movs r1, 0xD - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080517CC @ =gOtherText_PressAToStart - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - adds r2, r4, 0 - cmp r2, 0x2 - ble _0805175C -_080517A0: - ldr r0, _080517D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805180C - bl sub_8007E4C - adds r0, r5, 0 - bl DestroyTask - b _0805180C - .align 2, 0 -_080517B8: .4byte gTasks -_080517BC: .4byte gReceivedRemoteLinkPlayers -_080517C0: .4byte gUnknown_03004854 -_080517C4: .4byte gLinkPlayers + 0x4 -_080517C8: .4byte gUnknown_08216284 -_080517CC: .4byte gOtherText_PressAToStart -_080517D0: .4byte gMain -_080517D4: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080517E6 - ldr r0, _08051814 @ =gOtherText_PleaseWait - movs r1, 0x3 - movs r2, 0xA - bl MenuPrint -_080517E6: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _080517F8 - movs r0, 0 - strh r0, [r4, 0x8] -_080517F8: - ldr r0, _08051818 @ =byte_3002A68 - ldrb r0, [r0] - cmp r0, 0x4 - bls _0805180C - ldrb r0, [r6] - cmp r0, 0x1 - bne _0805180C - adds r0, r5, 0 - bl DestroyTask -_0805180C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051814: .4byte gOtherText_PleaseWait -_08051818: .4byte byte_3002A68 - thumb_func_end unref_sub_80516F8 - - thumb_func_start sub_805181C -sub_805181C: @ 805181C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051858 - cmp r0, 0x1 - bgt _08051832 - cmp r0, 0 - beq _08051838 - b _080518BE -_08051832: - cmp r0, 0x2 - beq _08051872 - b _080518BE -_08051838: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x58 - ble _080518BE - movs r0, 0x58 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _080518BE -_08051858: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080518BE - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x32] - b _080518BE -_08051872: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _080518BE - ldrh r0, [r4, 0x34] - adds r0, 0x1 - adds r1, r0, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080518AC - adds r0, r4, 0 - bl DestroySprite - ldr r0, _080518A8 @ =gSpriteTemplate_821657C - movs r2, 0x14 - negs r2, r2 - movs r1, 0x78 - movs r3, 0x2 - bl CreateSprite - b _080518BE - .align 2, 0 -_080518A8: .4byte gSpriteTemplate_821657C -_080518AC: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080518C8 @ =0x0000fff0 - strh r0, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_080518BE: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080518C8: .4byte 0x0000fff0 - thumb_func_end sub_805181C - - thumb_func_start sub_80518CC -sub_80518CC: @ 80518CC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08051908 - cmp r0, 0x1 - bgt _080518E2 - cmp r0, 0 - beq _080518E8 - b _0805193C -_080518E2: - cmp r0, 0x2 - beq _0805191E - b _0805193C -_080518E8: - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5C - ble _0805193C - movs r0, 0x5C - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x15 - bl PlaySE - b _0805193C -_08051908: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0805193C - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0805193C -_0805191E: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB0 - ble _0805193C - ldr r0, _08051948 @ =gUnknown_03004854 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0805193C: - ldrh r0, [r4, 0x30] - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051948: .4byte gUnknown_03004854 - thumb_func_end sub_80518CC - - thumb_func_start sub_805194C -sub_805194C: @ 805194C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r1, _08051978 @ =gUnknown_03004854 - ldr r1, [r1] - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - ldrh r2, [r1] - cmp r2, r0 - bcs _08051972 - adds r0, r2, 0x2 - strh r0, [r1] - ldrh r0, [r1] - adds r1, r3, 0 - bl sub_805197C -_08051972: - pop {r0} - bx r0 - .align 2, 0 -_08051978: .4byte gUnknown_03004854 - thumb_func_end sub_805194C - - thumb_func_start sub_805197C -sub_805197C: @ 805197C - push {r4-r7,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r7, _08051A0C @ =0x06006000 - lsrs r0, 10 - bl __divsi3 - adds r1, r0, 0 - cmp r1, 0 - bge _08051994 - adds r0, r1, 0x7 -_08051994: - asrs r4, r0, 3 - movs r3, 0 - cmp r3, r4 - bge _080519BC - ldr r0, _08051A10 @ =0x000081e9 - adds r6, r0, 0 - adds r0, 0x10 - adds r5, r0, 0 - adds r2, r7, 0 - adds r2, 0x56 - adds r0, r7, 0 - adds r3, r4, 0 -_080519AC: - strh r6, [r0, 0x16] - strh r5, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _080519AC - adds r3, r4, 0 -_080519BC: - adds r0, r1, 0 - cmp r1, 0 - bge _080519C4 - adds r0, r1, 0x7 -_080519C4: - asrs r2, r0, 3 - lsls r0, r2, 3 - subs r2, r1, r0 - cmp r2, 0 - beq _080519E2 - lsls r0, r3, 1 - adds r0, r7 - ldr r4, _08051A14 @ =0xffff81e1 - adds r1, r2, r4 - strh r1, [r0, 0x16] - adds r0, 0x56 - adds r4, 0x10 - adds r1, r2, r4 - strh r1, [r0] - adds r3, 0x1 -_080519E2: - cmp r3, 0x7 - bgt _08051A06 - ldr r0, _08051A18 @ =0x000081e1 - adds r4, r0, 0 - adds r0, 0x10 - adds r2, r0, 0 - lsls r1, r3, 1 - adds r0, r1, 0 - adds r0, 0x56 - adds r0, r7 - adds r1, r7 -_080519F8: - strh r4, [r1, 0x16] - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x7 - ble _080519F8 -_08051A06: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051A0C: .4byte 0x06006000 -_08051A10: .4byte 0x000081e9 -_08051A14: .4byte 0xffff81e1 -_08051A18: .4byte 0x000081e1 - thumb_func_end sub_805197C - - thumb_func_start sub_8051A1C -sub_8051A1C: @ 8051A1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08051A34 @ =0x00057e40 - muls r0, r1 - cmp r0, 0 - bge _08051A2E - ldr r1, _08051A38 @ =0x0000ffff - adds r0, r1 -_08051A2E: - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08051A34: .4byte 0x00057e40 -_08051A38: .4byte 0x0000ffff - thumb_func_end sub_8051A1C - - thumb_func_start sub_8051A3C -sub_8051A3C: @ 8051A3C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - bl sub_8051A1C - adds r5, r0, 0 - ldr r0, _08051ABC @ =gUnknown_03004854 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x5A - ldrh r0, [r1] - cmp r0, r5 - bcs _08051A5A - strh r5, [r1] -_08051A5A: - movs r6, 0 -_08051A5C: - mov r0, sp - adds r4, r0, r6 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - strb r0, [r4] - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _08051A5C - ldr r2, _08051AC0 @ =0x06006458 - mov r0, sp - ldr r3, _08051AC4 @ =0x00008172 - adds r1, r3, 0 - ldrb r0, [r0, 0x4] - adds r0, r1, r0 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x3] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0, 0x2] - adds r0, r1 - strh r0, [r2] - adds r2, 0x4 - mov r0, sp - ldrb r0, [r0, 0x1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - mov r0, sp - ldrb r0, [r0] - adds r1, r0 - strh r1, [r2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08051ABC: .4byte gUnknown_03004854 -_08051AC0: .4byte 0x06006458 -_08051AC4: .4byte 0x00008172 - thumb_func_end sub_8051A3C - - thumb_func_start sub_8051AC8 -sub_8051AC8: @ 8051AC8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 16 - lsrs r5, r4, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08051AEC - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __umodsi3 - lsrs r1, r4, 17 - subs r0, r1 - strh r0, [r6] -_08051AEC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051AC8 - - thumb_func_start sub_8051AF4 -sub_8051AF4: @ 8051AF4 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bge _08051B06 - adds r0, r2, 0x1 - strh r0, [r1] -_08051B06: - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08051B14 - subs r0, r2, 0x1 - strh r0, [r1] -_08051B14: - pop {r0} - bx r0 - thumb_func_end sub_8051AF4 - - thumb_func_start sub_8051B18 -sub_8051B18: @ 8051B18 - push {r4,lr} - ldr r4, _08051B3C @ =gUnknown_03004854 - ldr r0, [r4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - ldr r0, [r4] - movs r1, 0xA3 - lsls r1, 1 - adds r0, r1 - bl sub_8051AF4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08051B3C: .4byte gUnknown_03004854 - thumb_func_end sub_8051B18 - - thumb_func_start sub_8051B40 -sub_8051B40: @ 8051B40 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r5, 0x8 - cmp r1, 0x9 - bhi _08051B50 - movs r5, 0x10 -_08051B50: - ldrh r0, [r4] - movs r2, 0 - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08051B6E - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - bl __modsi3 - lsrs r1, r5, 1 - subs r0, r1 - b _08051B82 -_08051B6E: - cmp r1, 0 - bge _08051B76 - adds r0, 0x1 - strh r0, [r4] -_08051B76: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08051B84 - subs r0, r1, 0x1 -_08051B82: - strh r0, [r4] -_08051B84: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8051B40 - - thumb_func_start sub_8051B8C -sub_8051B8C: @ 8051B8C - push {r4,r5,lr} - ldr r5, _08051BE4 @ =gUnknown_03004854 - ldr r2, [r5] - movs r4, 0x98 - lsls r4, 1 - adds r0, r2, r4 - ldr r1, [r0] - cmp r1, 0 - bne _08051BAC - movs r3, 0xA2 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] -_08051BAC: - ldr r0, [r5] - adds r2, r0, r4 - ldr r1, [r2] - adds r1, 0x1 - str r1, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_8051B40 - ldr r1, [r5] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r1, r3 - adds r1, r4 - ldrh r1, [r1] - bl sub_8051B40 - ldr r2, [r5] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x14 - beq _08051BE8 - movs r0, 0 - b _08051BFC - .align 2, 0 -_08051BE4: .4byte gUnknown_03004854 -_08051BE8: - movs r1, 0xA2 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xA3 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r0, 0x1 -_08051BFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8051B8C - - thumb_func_start sub_8051C04 -sub_8051C04: @ 8051C04 - ldr r1, _08051C20 @ =gUnknown_03004854 - ldr r2, [r1] - movs r3, 0xA2 - lsls r3, 1 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x24] - adds r3, 0x2 - adds r1, r2, r3 - ldrh r1, [r1] - negs r1, r1 - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08051C20: .4byte gUnknown_03004854 - thumb_func_end sub_8051C04 - - thumb_func_start Blender_TrySettingRecord -Blender_TrySettingRecord: @ 8051C24 - push {lr} - ldr r2, _08051C4C @ =gSaveBlock1 - ldr r0, _08051C50 @ =gUnknown_03004854 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x88 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 1 - ldr r3, _08051C54 @ =0x0000096c - adds r2, r3 - adds r2, r0, r2 - adds r1, 0x5A - ldrh r1, [r1] - ldrh r0, [r2] - cmp r0, r1 - bcs _08051C48 - strh r1, [r2] -_08051C48: - pop {r0} - bx r0 - .align 2, 0 -_08051C4C: .4byte gSaveBlock1 -_08051C50: .4byte gUnknown_03004854 -_08051C54: .4byte 0x0000096c - thumb_func_end Blender_TrySettingRecord - - thumb_func_start Blender_PrintBlendingResults -Blender_PrintBlendingResults: @ 8051C58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r1, _08051C7C @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _08051C72 - b _08052006 -_08051C72: - lsls r0, 2 - ldr r1, _08051C80 @ =_08051C84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051C7C: .4byte gUnknown_03004854 -_08051C80: .4byte _08051C84 - .align 2, 0 -_08051C84: - .4byte _08051CA0 - .4byte _08051CB6 - .4byte _08051CD0 - .4byte _08051D20 - .4byte _08051F40 - .4byte _08051F54 - .4byte _08051FF4 -_08051CA0: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x11 - str r1, [r0] - b _08052006 -_08051CB6: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08051CCA - b _08052006 -_08051CCA: - movs r0, 0 - str r0, [r2] - b _08051FDE -_08051CD0: - ldr r1, [r2] - movs r2, 0x98 - lsls r2, 1 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bgt _08051CE4 - b _08052006 -_08051CE4: - movs r6, 0 -_08051CE6: - ldr r4, _08051D18 @ =gUnknown_03004854 - ldr r0, [r4] - adds r0, 0x50 - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051D1C @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x2 - bls _08051CE6 - ldr r1, [r4] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051D18: .4byte gUnknown_03004854 -_08051D1C: .4byte gSprites -_08051D20: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - movs r6, 0 - ldr r1, _08051F14 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - add r2, sp, 0xC - mov r9, r2 - mov r2, sp - adds r2, 0x16 - str r2, [sp, 0x30] - ldrb r0, [r0] - cmp r6, r0 - bcs _08051E04 - mov r8, r1 - ldr r0, _08051F18 @ =gLinkPlayers - mov r10, r0 -_08051D56: - mov r1, r8 - ldr r2, [r1] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r2, r1 - adds r0, r6 - ldrb r5, [r0] - mov r7, r9 - lsls r1, r5, 4 - adds r1, r2 - movs r2, 0xBF - lsls r2, 1 - adds r1, r2 - adds r0, r7, 0 - bl StringCopy - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0, 0x1A] - adds r0, r7, 0 - bl ConvertInternationalString - adds r0, r7, 0 - ldr r1, _08051F1C @ =gOtherText_Berry - bl de_sub_8073174 - mov r2, r8 - ldr r0, [r2] - adds r7, r0, 0 - adds r7, 0xAB - adds r5, r6, 0x1 - adds r0, r7, 0 - adds r1, r5, 0 - bl ConvertIntToDecimalString - adds r7, r0, 0 - movs r1, 0 - strb r1, [r7] - movs r0, 0xAD - strb r0, [r7, 0x1] - strb r1, [r7, 0x2] - adds r7, 0x3 - ldr r0, _08051F20 @ =gLinkPlayers + 0x8 - adds r4, r0 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x58 - movs r3, 0 - bl sub_8072C74 - adds r7, r0, 0 - add r1, sp, 0xC - movs r2, 0x9D - movs r3, 0 - bl sub_8072C74 - mov r2, r8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xAB - ldr r3, _08051F24 @ =gUnknown_082165E9 - adds r1, 0x88 - ldrb r2, [r1] - adds r3, r2, r3 - ldr r1, _08051F28 @ =gUnknown_082165EE - adds r2, r1 - ldrb r1, [r2] - adds r2, r6, 0 - muls r2, r1 - ldrb r3, [r3] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r5, 16 - lsrs r6, r5, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x88 - ldrb r0, [r0] - cmp r6, r0 - bcc _08051D56 -_08051E04: - ldr r6, _08051F14 @ =gUnknown_03004854 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F2C @ =gOtherText_MaxSpeed - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r7, 0 - movs r2, 0x79 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r0, 0xB8 - strb r0, [r7] - adds r7, 0x1 - adds r0, r7, 0 - mov r1, r9 - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F30 @ =gOtherText_RPM - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xD - bl MenuPrint - ldr r0, [r6] - movs r2, 0x96 - lsls r2, 1 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3C - bl __udivsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __umodsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x3C - bl __udivsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [sp, 0x30] - adds r1, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r7, r0, 0 - adds r7, 0xAB - ldr r1, _08051F34 @ =gOtherText_RequiredTime - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - mov r1, r9 - movs r2, 0x63 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F38 @ =gOtherText_Min - bl StringAppend - adds r7, r0, 0 - ldr r1, [sp, 0x30] - movs r2, 0x88 - movs r3, 0x1 - bl sub_8072C74 - adds r7, r0, 0 - ldr r1, _08051F3C @ =gOtherText_Sec - bl StringCopy - ldr r0, [r6] - adds r0, 0xAB - movs r1, 0x5 - movs r2, 0xF - bl MenuPrint - ldr r1, [r6] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08051FDE - .align 2, 0 -_08051F10: .4byte gOtherText_ResultsOfBlending -_08051F14: .4byte gUnknown_03004854 -_08051F18: .4byte gLinkPlayers -_08051F1C: .4byte gOtherText_Berry -_08051F20: .4byte gLinkPlayers + 0x8 -_08051F24: .4byte gUnknown_082165E9 -_08051F28: .4byte gUnknown_082165EE -_08051F2C: .4byte gOtherText_MaxSpeed -_08051F30: .4byte gOtherText_RPM -_08051F34: .4byte gOtherText_RequiredTime -_08051F38: .4byte gOtherText_Min -_08051F3C: .4byte gOtherText_Sec -_08051F40: - ldr r0, _08051F50 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052006 - ldr r1, [r2] - b _08051FDE - .align 2, 0 -_08051F50: .4byte gMain -_08051F54: - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r6, 0 - add r5, sp, 0x28 - ldr r0, _08051FE8 @ =gUnknown_03004854 - ldr r0, [r0] - adds r3, r0, 0 - adds r3, 0x80 - add r2, sp, 0x20 -_08051F72: - lsls r1, r6, 1 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _08051F82 - adds r1, r2, r1 - subs r0, 0x85 - strh r0, [r1] -_08051F82: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08051F72 - bl sub_8050760 - ldr r4, _08051FE8 @ =gUnknown_03004854 - ldr r3, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r3, r1 - adds r1, r3, 0 - adds r1, 0x88 - ldrb r2, [r1] - subs r1, 0x2E - ldrh r1, [r1] - str r1, [sp] - adds r1, r5, 0 - add r3, sp, 0x4 - bl sub_8050520 - ldr r1, [r4] - adds r1, 0xAB - adds r0, r5, 0 - bl sub_805201C - ldr r0, _08051FEC @ =sub_8052BD0 - movs r1, 0x6 - bl CreateTask - ldr r0, [r4] - adds r0, 0xAB - movs r1, 0x1 - movs r2, 0xF - bl MenuPrintMessage - ldr r0, _08051FF0 @ =gScriptItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl sub_810CA34 - ldr r1, [r4] -_08051FDE: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08052006 - .align 2, 0 -_08051FE8: .4byte gUnknown_03004854 -_08051FEC: .4byte sub_8052BD0 -_08051FF0: .4byte gScriptItemId -_08051FF4: - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _08052006 - bl Blender_TrySettingRecord - movs r0, 0x1 - b _08052008 -_08052006: - movs r0, 0 -_08052008: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Blender_PrintBlendingResults - - thumb_func_start sub_805201C -sub_805201C: @ 805201C - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - strb r0, [r6] - ldr r1, _080520B0 @ =gPokeblockNames - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - ldr r1, _080520B4 @ =gOtherText_PokeBlockMade - adds r0, r6, 0 - bl de_sub_8073174 - ldr r1, _080520B8 @ =gUnknown_082162C8 - adds r0, r6, 0 - bl StringAppend - adds r0, r5, 0 - bl sub_810C9B0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_810C9E8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080520BC @ =gOtherText_BlockLevelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C0 @ =gOtherText_BlockFeelIs - adds r0, r6, 0 - bl StringAppend - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - mov r1, sp - bl StringAppend - ldr r1, _080520C4 @ =gOtherText_Period - adds r0, r6, 0 - bl StringAppend - ldr r1, _080520C8 @ =gUnknown_08216249 - adds r0, r6, 0 - bl StringAppend - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080520B0: .4byte gPokeblockNames -_080520B4: .4byte gOtherText_PokeBlockMade -_080520B8: .4byte gUnknown_082162C8 -_080520BC: .4byte gOtherText_BlockLevelIs -_080520C0: .4byte gOtherText_BlockFeelIs -_080520C4: .4byte gOtherText_Period -_080520C8: .4byte gUnknown_08216249 - thumb_func_end sub_805201C - - thumb_func_start Blender_SortBasedOnPoints -Blender_SortBasedOnPoints: @ 80520CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r12, r2 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0 - cmp r0, r7 - bge _08052118 -_080520E2: - movs r5, 0 - adds r1, r0, 0x1 - mov r8, r1 - cmp r5, r7 - bge _08052112 - mov r1, r9 - adds r6, r1, r0 -_080520F0: - ldrb r4, [r6] - lsls r1, r4, 2 - add r1, r12 - mov r0, r9 - adds r2, r0, r5 - ldrb r3, [r2] - lsls r0, r3, 2 - add r0, r12 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bls _0805210C - strb r3, [r6] - strb r4, [r2] -_0805210C: - adds r5, 0x1 - cmp r5, r7 - blt _080520F0 -_08052112: - mov r0, r8 - cmp r0, r7 - blt _080520E2 -_08052118: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Blender_SortBasedOnPoints - - thumb_func_start Blender_SortScores -Blender_SortScores: @ 8052124 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r5, 0 - ldr r1, _08052144 @ =gUnknown_03004854 - ldr r0, [r1] - adds r0, 0x88 - mov r10, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0x14] - b _08052158 - .align 2, 0 -_08052144: .4byte gUnknown_03004854 -_08052148: - mov r4, sp - adds r0, r4, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r1] - adds r0, 0x88 -_08052158: - ldrb r0, [r0] - cmp r5, r0 - bcc _08052148 - movs r5, 0 - mov r1, r10 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r2, [r1] - cmp r5, r2 - bcs _080521D6 - ldr r4, [sp, 0x14] - mov r9, r4 - movs r2, 0xA6 - lsls r2, 1 - adds r2, r0 - mov r8, r2 - mov r12, r1 - movs r4, 0xA7 - lsls r4, 1 - adds r7, r0, r4 - movs r1, 0xA8 - lsls r1, 1 - adds r6, r0, r1 -_08052188: - lsls r4, r5, 2 - add r4, r9 - lsls r3, r5, 1 - adds r3, r5 - lsls r3, 1 - mov r2, r8 - adds r0, r2, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r1, r0, 6 - subs r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r1, 6 - str r1, [r4] - adds r0, r7, r3 - ldrh r2, [r0] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - str r1, [r4] - movs r0, 0xFA - lsls r0, 2 - adds r1, r0 - adds r3, r6, r3 - ldrh r0, [r3] - subs r1, r0 - str r1, [r4] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r12 - ldrb r1, [r1] - cmp r5, r1 - bcc _08052188 -_080521D6: - mov r2, r10 - ldr r0, [r2] - adds r0, 0x88 - ldrb r1, [r0] - mov r0, sp - ldr r2, [sp, 0x14] - bl Blender_SortBasedOnPoints - movs r5, 0 - mov r4, r10 - ldr r0, [r4] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcs _08052218 - mov r2, r10 - movs r3, 0xB2 - lsls r3, 1 -_080521FA: - ldr r1, [r2] - adds r1, r3 - adds r1, r5 - mov r4, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r2] - adds r0, 0x88 - ldrb r0, [r0] - cmp r5, r0 - bcc _080521FA -_08052218: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Blender_SortScores - - thumb_func_start Blender_PrintBlendingRanking -Blender_PrintBlendingRanking: @ 8052228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08052248 @ =gUnknown_03004854 - ldr r0, [r1] - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bls _0805223C - b _080524AE -_0805223C: - lsls r0, 2 - ldr r1, _0805224C @ =_08052250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052248: .4byte gUnknown_03004854 -_0805224C: .4byte _08052250 - .align 2, 0 -_08052250: - .4byte _0805226C - .4byte _08052282 - .4byte _0805229C - .4byte _080522B6 - .4byte _08052464 - .4byte _0805247E - .4byte _080524A4 -_0805226C: - ldr r1, [r2] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - str r1, [r0] - b _080524AE -_08052282: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - subs r0, 0xA - str r0, [r2] - cmp r0, 0 - blt _08052296 - b _080524AE -_08052296: - movs r0, 0 - str r0, [r2] - b _08052494 -_0805229C: - ldr r1, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - cmp r0, 0x14 - bgt _080522B0 - b _080524AE -_080522B0: - movs r0, 0 - str r0, [r2] - b _08052494 -_080522B6: - movs r0, 0x4 - movs r1, 0x2 - movs r2, 0x19 - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _0805236C @ =gOtherText_Ranking - movs r1, 0x5 - movs r2, 0x3 - movs r3, 0xA0 - bl sub_8072BD8 - ldr r6, _08052370 @ =gSpriteTemplate_821645C - adds r0, r6, 0 - movs r1, 0x8C - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r7, _08052374 @ =gUnknown_03004854 - ldr r1, [r7] - adds r1, 0x50 - strb r0, [r1] - ldr r1, _08052378 @ =gSprites - mov r8, r1 - ldr r2, [r7] - adds r2, 0x50 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r5, r8 - adds r5, 0x1C - adds r0, r5 - ldr r4, _0805237C @ =SpriteCallbackDummy - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r6, 0 - movs r1, 0xA4 - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x51 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x51 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - adds r0, r6, 0 - movs r1, 0xBC - movs r2, 0x34 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x52 - strb r0, [r1] - ldr r2, [r7] - adds r2, 0x52 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - str r4, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x1 - bl StartSpriteAnim - bl Blender_SortScores - movs r2, 0 - mov r8, r2 - b _0805243C - .align 2, 0 -_0805236C: .4byte gOtherText_Ranking -_08052370: .4byte gSpriteTemplate_821645C -_08052374: .4byte gUnknown_03004854 -_08052378: .4byte gSprites -_0805237C: .4byte SpriteCallbackDummy -_08052380: - ldr r1, [r7] - movs r2, 0xB2 - lsls r2, 1 - adds r0, r1, r2 - add r0, r8 - ldrb r5, [r0] - adds r2, r1, 0 - adds r2, 0xAB - movs r0, 0xFC - strb r0, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - mov r6, r8 - adds r6, 0x1 - adds r0, r2, 0 - adds r1, r6, 0 - bl ConvertIntToDecimalString - adds r2, r0, 0 - movs r1, 0 - strb r1, [r2] - movs r0, 0xAD - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - adds r2, 0x3 - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - ldr r0, _08052458 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, [r7] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 1 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x6C - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA7 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x84 - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - ldr r0, [r7] - movs r1, 0xA8 - lsls r1, 1 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r2, 0 - movs r2, 0x9C - movs r3, 0x1 - bl sub_8072C14 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xAB - ldr r2, _0805245C @ =gUnknown_082165F3 - adds r1, 0x88 - ldrb r1, [r1] - adds r1, r2 - ldrb r1, [r1] - mov r2, r8 - muls r2, r1 - adds r2, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x5 - bl MenuPrint - lsls r6, 16 - lsrs r6, 16 - mov r8, r6 -_0805243C: - ldr r0, [r7] - adds r0, 0x88 - ldrb r0, [r0] - cmp r8, r0 - bcc _08052380 - ldr r0, _08052460 @ =gUnknown_03004854 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - b _08052494 - .align 2, 0 -_08052458: .4byte gLinkPlayers + 0x8 -_0805245C: .4byte gUnknown_082165F3 -_08052460: .4byte gUnknown_03004854 -_08052464: - ldr r2, [r2] - movs r0, 0x98 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - ble _080524AE - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _080524AE -_0805247E: - ldr r0, _0805249C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080524AE - movs r0, 0x5 - bl PlaySE - ldr r0, _080524A0 @ =gUnknown_03004854 - ldr r1, [r0] -_08052494: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080524AE - .align 2, 0 -_0805249C: .4byte gMain -_080524A0: .4byte gUnknown_03004854 -_080524A4: - ldr r1, [r2] - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - b _080524B0 -_080524AE: - movs r0, 0 -_080524B0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Blender_PrintBlendingRanking - - thumb_func_start unref_sub_80524BC -unref_sub_80524BC: @ 80524BC - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _0805251C @ =sub_804E2D8 - bl SetVBlankCallback - ldr r4, _08052520 @ =gWindowConfig_81E6CE4 - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - ldr r0, _08052524 @ =gMain - ldrh r0, [r0, 0x20] - bl SeedRng - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r1, _08052528 @ =sBlenderDebug - movs r0, 0xFA - lsls r0, 5 - strh r0, [r1, 0x1A] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, _0805252C @ =sub_8052AF8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805251C: .4byte sub_804E2D8 -_08052520: .4byte gWindowConfig_81E6CE4 -_08052524: .4byte gMain -_08052528: .4byte sBlenderDebug -_0805252C: .4byte sub_8052AF8 - thumb_func_end unref_sub_80524BC - - thumb_func_start BlenderDebug_PrintBerryData -BlenderDebug_PrintBerryData: @ 8052530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x98 - ldr r1, _080525C8 @ =gOtherText_BPMAndDash - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0 - bl MenuPrint - ldr r4, _080525CC @ =sBlenderDebug - movs r1, 0x1A - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - mov r0, sp - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, sp - movs r1, 0x6 - movs r2, 0 - bl MenuPrint - movs r6, 0 - mov r2, sp - adds r2, 0x3 - str r2, [sp, 0x84] - mov r3, sp - adds r3, 0x6 - str r3, [sp, 0x88] - mov r0, sp - adds r0, 0x9 - str r0, [sp, 0x8C] - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x90] - adds r2, 0xC - str r2, [sp, 0x94] - mov r8, r4 - mov r7, sp - ldr r3, _080525D0 @ =gBerries - mov r9, r3 - ldr r0, _080525D4 @ =gUnknown_082165F8 - mov r10, r0 -_0805259E: - mov r1, r8 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, r6 - bne _080525D8 - movs r0, 0xEF - strb r0, [r7] - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - adds r1, 0x1 - bl CopyItemName - b _080525F8 - .align 2, 0 -_080525C8: .4byte gOtherText_BPMAndDash -_080525CC: .4byte sBlenderDebug -_080525D0: .4byte gBerries -_080525D4: .4byte gUnknown_082165F8 -_080525D8: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl CopyItemName - movs r0, 0 - strb r0, [r7, 0x6] - movs r0, 0xFF - strb r0, [r7, 0x7] -_080525F8: - lsls r5, r6, 1 - adds r5, r6 - adds r5, 0x3 - lsls r5, 24 - lsrs r5, 24 - mov r0, sp - movs r1, 0x2 - adds r2, r5, 0 - bl MenuPrint - mov r4, r8 - adds r4, 0x1 - adds r4, r6, r4 - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x15] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x16] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x17] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x18] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x19] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - mov r0, sp - mov r1, r10 - bl StringAppend - movs r1, 0 - ldrsb r1, [r4, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r0, 0x1A] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x80 - strb r2, [r3] - movs r0, 0xFF - strb r0, [r7, 0x11] - mov r0, sp - movs r1, 0x7 - adds r2, r5, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080526EC - b _0805259E -_080526EC: - mov r1, r8 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080527A4 - ldr r1, _080527B4 @ =gPokeblockNames - mov r2, r8 - ldrb r0, [r2, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - mov r0, sp - bl StringCopy - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r3, r8 - ldrb r1, [r3, 0x11] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - ldr r4, _080527B8 @ =gUnknown_082165F8 - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x12] - ldr r0, [sp, 0x84] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x13] - ldr r0, [sp, 0x88] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r3, r8 - ldrb r1, [r3, 0x14] - ldr r0, [sp, 0x8C] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r0, r8 - ldrb r1, [r0, 0x15] - ldr r0, [sp, 0x90] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r4, 0 - bl StringAppend - mov r2, r8 - ldrb r1, [r2, 0x16] - ldr r0, [sp, 0x94] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToHexStringN - mov r1, sp - ldrb r0, [r1, 0x11] - add r3, sp, 0x80 - ldrb r3, [r3] - orrs r0, r3 - strb r0, [r1, 0x11] - mov r0, sp - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080527A4: - add sp, 0x98 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080527B4: .4byte gPokeblockNames -_080527B8: .4byte gUnknown_082165F8 - thumb_func_end BlenderDebug_PrintBerryData - - thumb_func_start sub_80527BC -sub_80527BC: @ 80527BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - ldr r0, _08052844 @ =gUnknown_020297DC - ldrb r0, [r0] - add r6, sp, 0x48 - cmp r0, 0x1 - bne _08052814 - movs r1, 0 - ldr r3, _08052848 @ =gUnknown_03004840 - movs r2, 0 -_080527D6: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080527D6 - bl Random - ldr r1, _0805284C @ =gUnknown_03004830 - strh r0, [r1] - ldr r1, _08052850 @ =gUnknown_020297E0 - movs r0, 0 - str r0, [r1] - ldr r1, _08052844 @ =gUnknown_020297DC - movs r0, 0x2 - strb r0, [r1] - movs r4, 0 - ldr r2, _08052854 @ =0x02000000 - movs r1, 0 -_08052800: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xC7 - bls _08052800 - ldr r1, _08052858 @ =gUnknown_020297E8 - movs r0, 0 - strb r0, [r1] -_08052814: - movs r4, 0 - movs r0, 0x1 - mov r8, r0 - ldr r7, _08052858 @ =gUnknown_020297E8 - ldr r5, _08052850 @ =gUnknown_020297E0 - ldr r1, _08052854 @ =0x02000000 - mov r9, r1 - ldr r3, _0805285C @ =gUnknown_020297E4 -_08052824: - str r3, [sp, 0x54] - bl Random - lsls r0, 16 - lsrs r0, 31 - mov r1, r8 - ands r0, r1 - ldr r3, [sp, 0x54] - ldrb r1, [r7] - cmp r0, r1 - bne _08052860 - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _0805287A - .align 2, 0 -_08052844: .4byte gUnknown_020297DC -_08052848: .4byte gUnknown_03004840 -_0805284C: .4byte gUnknown_03004830 -_08052850: .4byte gUnknown_020297E0 -_08052854: .4byte 0x02000000 -_08052858: .4byte gUnknown_020297E8 -_0805285C: .4byte gUnknown_020297E4 -_08052860: - ldr r2, [r3] - lsls r0, r2, 1 - add r0, r9 - ldr r1, [r5] - strh r1, [r0] - adds r2, 0x1 - str r2, [r3] - movs r0, 0 - str r0, [r5] - ldrb r0, [r7] - mov r1, r8 - eors r0, r1 - strb r0, [r7] -_0805287A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x63 - bls _08052824 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - ldr r0, _08052900 @ =gUnknown_03004830 - ldrh r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _08052904 @ =gUnknown_082165F8 - mov r0, sp - bl StringAppend - ldr r0, _08052908 @ =gUnknown_020297E0 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x8 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - ldr r1, _0805290C @ =gUnknown_08216600 - mov r0, sp - bl StringAppend - ldr r4, _08052910 @ =gUnknown_020297DC - ldrb r0, [r4] - cmp r0, 0x3 - bne _080528E8 - ldr r0, _08052914 @ =gUnknown_020297E4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x10 - bl ConvertIntToHexStringN - mov r0, sp - adds r1, r6, 0 - bl StringAppend - movs r0, 0 - strb r0, [r4] -_080528E8: - mov r0, sp - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052900: .4byte gUnknown_03004830 -_08052904: .4byte gUnknown_082165F8 -_08052908: .4byte gUnknown_020297E0 -_0805290C: .4byte gUnknown_08216600 -_08052910: .4byte gUnknown_020297DC -_08052914: .4byte gUnknown_020297E4 - thumb_func_end sub_80527BC - - thumb_func_start sub_8052918 -sub_8052918: @ 8052918 - push {r4-r6,lr} - sub sp, 0x4C - ldr r2, _08052A88 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - ldr r4, _08052A8C @ =sBlenderDebug - cmp r0, 0 - beq _0805294C - movs r1, 0xFA - lsls r1, 2 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - ldr r1, _08052A90 @ =0x75300000 - cmp r0, r1 - ble _08052946 - movs r0, 0xFA - lsls r0, 2 - strh r0, [r4, 0x1A] -_08052946: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_0805294C: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08052972 - ldr r1, _08052A94 @ =0xfffffc18 - adds r0, r1, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bge _0805296C - ldr r0, _08052A98 @ =0x00007530 - strh r0, [r4, 0x1A] -_0805296C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052972: - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08052992 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bge _0805298C - movs r0, 0x3 - strb r0, [r4] -_0805298C: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_08052992: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529B4 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080529AE - movs r0, 0 - strb r0, [r4] -_080529AE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080529E4 - adds r3, r4, 0 - movs r1, 0 - ldrsb r1, [r3, r1] - adds r5, r3, 0x1 - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080529DE - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r5 - movs r1, 0x2A - strb r1, [r0] -_080529DE: - ldrb r0, [r4, 0x10] - adds r0, 0x1 - strb r0, [r4, 0x10] -_080529E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08052A16 - ldr r3, _08052A8C @ =sBlenderDebug - movs r1, 0 - ldrsb r1, [r3, r1] - adds r4, r3, 0x1 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2A - ble _08052A10 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, r4 - movs r1, 0 - strb r1, [r0] -_08052A10: - ldrb r0, [r3, 0x10] - adds r0, 0x1 - strb r0, [r3, 0x10] -_08052A16: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052AA0 - movs r6, 0 - movs r4, 0 - ldr r5, _08052A8C @ =sBlenderDebug -_08052A26: - adds r0, r5, 0x1 - adds r2, r4, r0 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x2A - beq _08052A64 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 1 - mov r1, sp - adds r1, r0 - adds r1, 0x4 - movs r0, 0 - ldrsb r0, [r2, r0] - strh r0, [r1] - add r0, sp, 0xC - lsls r1, r4, 4 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r1, 0x85 - lsls r1, 16 - lsrs r1, 16 - bl sub_804E844 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08052A26 -_08052A64: - cmp r6, 0x1 - bls _08052A9C - add r0, sp, 0xC - adds r1, r5, 0 - adds r1, 0x8 - lsls r2, r6, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0x11 - ldrh r4, [r5, 0x1A] - str r4, [sp] - bl sub_8050744 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] - b _08052AA0 - .align 2, 0 -_08052A88: .4byte gMain -_08052A8C: .4byte sBlenderDebug -_08052A90: .4byte 0x75300000 -_08052A94: .4byte 0xfffffc18 -_08052A98: .4byte 0x00007530 -_08052A9C: - movs r0, 0xFF - strb r0, [r5, 0x8] -_08052AA0: - ldr r4, _08052AE8 @ =sBlenderDebug - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _08052AB0 - bl BlenderDebug_PrintBerryData - movs r0, 0 - strb r0, [r4, 0x10] -_08052AB0: - ldr r3, _08052AEC @ =gMain - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08052AD4 - ldr r2, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - bne _08052ADC - adds r0, 0x1 - strb r0, [r2] - ldr r0, _08052AF4 @ =gUnknown_020297E0 - str r1, [r0] - ldrh r0, [r3, 0x20] - bl SeedRng -_08052AD4: - ldr r0, _08052AF0 @ =gUnknown_020297DC - ldrb r0, [r0] - cmp r0, 0 - beq _08052AE0 -_08052ADC: - bl sub_80527BC -_08052AE0: - add sp, 0x4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052AE8: .4byte sBlenderDebug -_08052AEC: .4byte gMain -_08052AF0: .4byte gUnknown_020297DC -_08052AF4: .4byte gUnknown_020297E0 - thumb_func_end sub_8052918 - - thumb_func_start sub_8052AF8 -sub_8052AF8: @ 8052AF8 - push {lr} - bl sub_8052918 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8052AF8 - - thumb_func_start ShowBerryBlenderRecordWindow -ShowBerryBlenderRecordWindow: @ 8052B14 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - movs r0, 0x6 - movs r1, 0x3 - movs r2, 0x17 - movs r3, 0x10 - bl MenuDrawTextWindow - ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord - movs r1, 0x8 - movs r2, 0x4 - bl MenuPrint - ldr r0, _08052BB0 @ =gMultiText_2P3P4P - movs r1, 0x8 - movs r2, 0x9 - bl MenuPrint - movs r0, 0 - mov r8, r0 - ldr r0, _08052BB4 @ =gSaveBlock1 - movs r7, 0x90 - lsls r7, 20 - ldr r1, _08052BB8 @ =0x0000096c - adds r6, r0, r1 -_08052B4A: - ldrh r4, [r6] - adds r0, r4, 0 - movs r1, 0x64 - bl __udivsi3 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x12 - movs r3, 0x1 - bl sub_8072C14 - adds r5, r0, 0 - movs r0, 0xB8 - strb r0, [r5] - adds r5, 0x1 - adds r0, r4, 0 - movs r1, 0x64 - bl __umodsi3 - adds r1, r0, 0 - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - ldr r1, _08052BBC @ =gOtherText_RPM - bl StringAppend - lsrs r2, r7, 24 - mov r0, sp - movs r1, 0xF - bl MenuPrint - movs r0, 0x80 - lsls r0, 18 - adds r7, r0 - adds r6, 0x2 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x2 - ble _08052B4A - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord -_08052BB0: .4byte gMultiText_2P3P4P -_08052BB4: .4byte gSaveBlock1 -_08052BB8: .4byte 0x0000096c -_08052BBC: .4byte gOtherText_RPM - thumb_func_end ShowBerryBlenderRecordWindow - - thumb_func_start sub_8052BD0 -sub_8052BD0: @ 8052BD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08052C1C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08052BF6 - ldr r0, _08052C20 @ =0x0000016f - bl PlayFanfare - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08052BF6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08052C16 - ldr r0, _08052C24 @ =gUnknown_03004854 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08052C16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08052C1C: .4byte gTasks -_08052C20: .4byte 0x0000016f -_08052C24: .4byte gUnknown_03004854 - thumb_func_end sub_8052BD0 diff --git a/src/berry_blender.c b/src/berry_blender.c index cbf50fdb3..d1c90fcbb 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -201,6 +201,9 @@ void sub_814A880(u8 a1, u8 a2); u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); s8 sub_810CA00(void); bool8 sub_810CA34(struct Pokeblock *pokeblock); +#ifdef GERMAN +extern void de_sub_8073110(); +#endif extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_BGM; @@ -584,7 +587,7 @@ static void sub_804E884(u8 a0) if (a0) { for (i = 0; i < 4; i++) - gLinkPlayers[i].language = LANGUAGE_ENGLISH; + gLinkPlayers[i].language = GAME_LANGUAGE; } switch (a0) { @@ -2179,7 +2182,7 @@ static void sub_8050954(void) UpdatePaletteFade(); } -static bool8 sub_8050CE8(void) +bool8 sub_8050CE8(void) { switch (gBerryBlenderData->field_1C4) { @@ -2255,16 +2258,26 @@ static void sub_8050E30(void) gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); +#else + StringCopy(gStringVar4, gOtherText_OtherCaseIsFull); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif MenuPrintMessage(gStringVar4, 1, 15); break; case 2: gBerryBlenderData->field_6F++; DestroyMenuCursor(); MenuZeroFillWindowRect(23, 8, 28, 13); +#ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); +#else + StringCopy(gStringVar4, gOtherText_NoBerriesForBlend); + de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); +#endif MenuPrintMessage(gStringVar4, 1, 15); break; case 3: @@ -2855,7 +2868,11 @@ static bool8 Blender_PrintBlendingResults(void) StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name); ConvertInternationalString(textPtr, gLinkPlayers[place].language); +#ifdef ENGLISH StringAppend(textPtr, gOtherText_Berry); +#else + de_sub_8073174(textPtr, gOtherText_Berry); +#endif textPtr = gBerryBlenderData->stringVar; textPtr = ConvertIntToDecimalString(textPtr, i + 1); textPtr[0] = CHAR_SPACE; @@ -2871,12 +2888,16 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); +#ifdef ENGLISH textPtr[0] = CHAR_SPACE; textPtr[1] = CHAR_PERIOD; textPtr[2] = CHAR_SPACE; textPtr += 3; - textPtr = sub_8072C74(textPtr, text[0], 142, 1); +#else + *textPtr++ = CHAR_COMMA; + textPtr = sub_8072C74(textPtr, text[0], 136, 1); +#endif StringCopy(textPtr, gOtherText_RPM); MenuPrint(gBerryBlenderData->stringVar, 5, 13); @@ -2888,7 +2909,11 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = gBerryBlenderData->stringVar; textPtr = StringCopy(textPtr, gOtherText_RequiredTime); +#ifdef ENGLISH textPtr = sub_8072C74(textPtr, text[0], 102, 1); +#else + textPtr = sub_8072C74(textPtr, text[0], 99, 1); +#endif textPtr = StringAppend(textPtr, gOtherText_Min); textPtr = sub_8072C74(textPtr, text[1], 136, 1); @@ -2939,7 +2964,11 @@ static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* ds dst[0] = EOS; StringCopy(dst, gPokeblockNames[pokeblock->color]); +#ifdef ENGLISH StringAppend(dst, gOtherText_PokeBlockMade); +#else + de_sub_8073174(dst, gOtherText_PokeBlockMade); +#endif StringAppend(dst, gUnknown_082162C8); flavourLvl = sub_810C9B0(pokeblock); @@ -3335,10 +3364,16 @@ void ShowBerryBlenderRecordWindow(void) { u32 record = gSaveBlock1.berryBlenderRecords[i]; u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + +#ifdef ENGLISH txtPtr[0] = CHAR_SPACE; txtPtr[1] = CHAR_PERIOD; txtPtr[2] = CHAR_SPACE; txtPtr += 3; +#else + *txtPtr++ = CHAR_COMMA; +#endif + txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); StringAppend(txtPtr, gOtherText_RPM); MenuPrint(text, 15, i * 2 + 9); -- cgit v1.2.3 From bfbe446e73b945926e3581ef25d50291451b06b0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 13:42:49 +0200 Subject: moved all data to C --- common_syms/berry_blender.txt | 2 +- data/berry_blender.s | 456 ---------------------------- ld_script.txt | 2 +- src/berry_blender.c | 672 ++++++++++++++++++++++++++++++++++++------ 4 files changed, 582 insertions(+), 550 deletions(-) delete mode 100644 data/berry_blender.s diff --git a/common_syms/berry_blender.txt b/common_syms/berry_blender.txt index fe9971569..36d14f986 100644 --- a/common_syms/berry_blender.txt +++ b/common_syms/berry_blender.txt @@ -1,4 +1,4 @@ gUnknown_03004830 -gUnknown_03004834 +gInGameOpponentsNo gUnknown_03004840 gBerryBlenderData \ No newline at end of file diff --git a/data/berry_blender.s b/data/berry_blender.s deleted file mode 100644 index 4c097bc20..000000000 --- a/data/berry_blender.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08215C0C:: @ 8215C0C - .incbin "graphics/berry_blender/center.gbapal" - - .align 2 -gUnknown_08215C2C:: @ 8215C2C - .incbin "graphics/berry_blender/center_map.bin" - - .align 2 -gUnknown_0821602C:: @ 821602C - .incbin "graphics/berry_blender/outer.gbapal" - - .incbin "graphics/unused/unknown/821604C.gbapal" - - .space 0x1C0 - - .string "▶$" - .string " $" - .string "カッコイ$" @ "cool" (missing an イ at the end) - .string "カワイイ$" @ "cute" - .string "ウツクシ$" @ "beautiful" (missing an イ at the end) - .string "カシコイ$" @ "smart" - .string "タクマシ$" @ "tough" (missing an イ at the end) - -gUnknown_08216249:: @ 8216249 - .string "\p$" - -@ unreferenced -@ These appear to be the first names of four people who worked on the game. - .string "てつじ$", 10 @ Tetsuji (Ohta) - .string "あきと$", 10 @ Akito (Mori) - .string "シゲル$", 10 @ Shigeru (Ohmori) - .string "ヨシノリ$", 10 @ Yoshinori (Matsuda) - -UnknownText_2Pok: - .string "2Pok$" -UnknownText_3Pok: - .string "3Pok$" -UnknownText_4Pok: - .string "4Pok$" - - .align 2 -gUnknown_08216284:: @ 8216284 - .4byte UnknownText_2Pok - .4byte UnknownText_3Pok - .4byte UnknownText_4Pok - -@ unreferenced - .string "1P$", 4 - .string "2P$", 4 - .string "3P$", 4 - .string "4P$", 4 - -.ifdef ENGLISH -UnknownText_Mister: - .string "MISTER$" -UnknownText_Laddie: - .string "LADDIE$" -UnknownText_Lassie: - .string "LASSIE$" -.else -UnknownText_Mister: - .string "OPI$" -UnknownText_Laddie: - .string "KUMPEL$" -UnknownText_Lassie: - .string "TUSSI$" -.endif - - .align 2 -gUnknown_082162B8:: @ 82162B8 - .4byte UnknownText_Mister - .4byte UnknownText_Laddie - .4byte UnknownText_Lassie - -gUnknown_082162C4:: @ 82162C4 - .string "{COLOR RED}$" - -gUnknown_082162C8:: @ 82162C8 - .string "\n$" - - .string " $" - -gUnknown_082162CC:: @ 82162CC - .byte -1, -1 - .byte 1, -1 - .byte -1, 1 - .byte 1, 1 - -gUnknown_082162D4:: @ 82162D4 - .byte 2, 6 - .byte 23, 6 - .byte 2, 12 - .byte 23, 12 - .byte 1, 6 - .byte 22, 6 - .byte 1, 12 - .byte 22, 12 - -sBlenderSyncArrowsPos:: @ 82162E4 - .byte 72, 32 - .byte 168, 32 - .byte 72, 128 - .byte 168, 128 - -gUnknown_082162EC:: @ 82162EC - .byte -1, 0, 1, -1 - .byte -1, 0, 1, 2 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_082162F8:: @ 82162F8 - .2byte 0x0000, 0xC000, 0x4000, 0x8000 - -gUnknown_08216300:: @ 8216300 - .byte 1 - .byte 1 - .byte 0 - -gUnknown_08216303:: @ 8216303 - .byte 32 - .byte 224 - .byte 96 - .byte 160 - .byte 0 - - .align 2 -gUnknown_08216308:: @ 8216308 - .4byte sub_804F8C8 - .4byte sub_804F9F4 - .4byte sub_804FB1C - - .align 2 -gOamData_8216314:: @ 8216314 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821631C:: @ 821631C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216324:: @ 8216324 - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821632C:: @ 821632C - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216334:: @ 8216334 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821633C:: @ 821633C - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216350:: @ 8216350 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216364:: @ 8216364 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216378:: @ 8216378 - obj_image_anim_frame 48, 2 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 16, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_821638C:: @ 821638C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216394:: @ 8216394 - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_821639C:: @ 821639C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82163A4:: @ 82163A4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82163AC:: @ 82163AC - .4byte gSpriteAnim_821631C - .4byte gSpriteAnim_8216324 - .4byte gSpriteAnim_821632C - .4byte gSpriteAnim_8216334 - .4byte gSpriteAnim_821633C - .4byte gSpriteAnim_8216350 - .4byte gSpriteAnim_8216364 - .4byte gSpriteAnim_8216378 - .4byte gSpriteAnim_821638C - .4byte gSpriteAnim_8216394 - .4byte gSpriteAnim_821639C - .4byte gSpriteAnim_82163A4 - - .align 2 -gUnknown_082163DC:: @ 82163DC - obj_tiles gBerryBlenderArrowTiles, 0x800, 46545 - - .align 2 -gUnknown_082163E4:: @ 82163E4 - obj_pal gBerryBlenderMiscPalette, 46546 - - .align 2 -gUnknown_082163EC:: @ 82163EC - obj_pal gBerryBlenderArrowPalette, 12312 - - .align 2 -sBlenderSyncArrow_SpriteTemplate:: @ 82163F4 - spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04 - - .align 2 -gOamData_821640C:: @ 821640C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8216414:: @ 8216414 - obj_image_anim_frame 0, 20 - obj_image_anim_end - - .align 2 -gSpriteAnim_821641C:: @ 821641C - obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_8216424:: @ 8216424 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_821643C:: @ 821643C - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216444:: @ 8216444 - .4byte gSpriteAnim_8216414 - .4byte gSpriteAnim_821641C - .4byte gSpriteAnim_8216424 - .4byte gSpriteAnim_821643C - - .align 2 -gUnknown_08216454:: @ 8216454 - obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888 - - .align 2 -gSpriteTemplate_821645C:: @ 821645C - spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650 - - .align 2 -gOamData_8216474:: @ 8216474 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821647C:: @ 821647C - obj_image_anim_frame 0, 3 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 3, 5 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216494:: @ 8216494 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164AC:: @ 82164AC - obj_image_anim_frame 0, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 3, 3 - obj_image_anim_frame 2, 2 - obj_image_anim_frame 1, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D0:: @ 82164D0 - obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82164D8:: @ 82164D8 - obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82164E0:: @ 82164E0 - .4byte gSpriteAnim_821647C - .4byte gSpriteAnim_8216494 - .4byte gSpriteAnim_82164AC - .4byte gSpriteAnim_82164D0 - .4byte gSpriteAnim_82164D8 - - .align 2 -gUnknown_082164F4:: @ 82164F4 - obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456 - - .align 2 -gSpriteTemplate_82164FC:: @ 82164FC - spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gOamData_8216514:: @ 8216514 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821651C:: @ 821651C - obj_image_anim_frame 32, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_8216524:: @ 8216524 - obj_image_anim_frame 16, 30 - obj_image_anim_end - - .align 2 -gSpriteAnim_821652C:: @ 821652C - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216534:: @ 8216534 - .4byte gSpriteAnim_821651C - .4byte gSpriteAnim_8216524 - .4byte gSpriteAnim_821652C - - .align 2 -gUnknown_08216540:: @ 8216540 - obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345 - - .align 2 -gSpriteTemplate_8216548:: @ 8216548 - spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C - - .align 2 -gOamData_8216560:: @ 8216560 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8216568:: @ 8216568 - obj_image_anim_frame 0, 30 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8216570:: @ 8216570 - .4byte gSpriteAnim_8216568 - - .align 2 -gUnknown_08216574:: @ 8216574 - obj_tiles gBerryBlenderStartTiles, 0x400, 12346 - - .align 2 -gSpriteTemplate_821657C:: @ 821657C - spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC - - .align 1 -gUnknown_08216594:: @ 8216594 - .2byte -10, 20, 10, 2, 1 - .2byte 250, 20, 10, -2, 1 - .2byte -10, 140, 10, 2, -1 - .2byte 250, 140, 10, -2, -1 - -gUnknown_082165BC:: @ 82165BC - .byte 4, 3, 2 - .byte 0, 4, 3 - .byte 1, 0, 4 - .byte 2, 1, 0 - .byte 3, 2, 1 - .byte 0, 2, 3 - .byte 1, 3, 4 - .byte 2, 4, 0 - .byte 3, 0, 1 - .byte 4, 1, 2 - -gUnknown_082165DA:: @ 82165DA - .byte 1, 1, 2, 3, 4 - -gUnknown_082165DF:: @ 82165DF - .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15 - -gUnknown_082165E9:: @ 82165E9 - .byte 6, 6, 6, 6, 5 - -gUnknown_082165EE:: @ 82165EE - .byte 3, 3, 3, 2, 2 - -gUnknown_082165F3:: @ 82165F3 - .byte 3, 3, 3, 3, 2 - -gUnknown_082165F8:: @ 82165F8 - .string " $" - -gOtherText_BPMAndDash:: @ 82165FA - .string "BPM$" - .string "-$" - -gUnknown_08216600:: @ 8216600 - .string "\n$" - - .string "\n$" diff --git a/ld_script.txt b/ld_script.txt index e2bff7ec0..fdf8c3287 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -341,7 +341,7 @@ SECTIONS { data/battle_interface.o(.rodata); src/pokeball.o(.rodata); data/trade.o(.rodata); - data/berry_blender.o(.rodata); + src/berry_blender.o(.rodata); src/new_game.o(.rodata); data/rom4.o(.rodata); data/tilesets.o(.rodata); diff --git a/src/berry_blender.c b/src/berry_blender.c index d1c90fcbb..772de43f7 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -212,53 +212,21 @@ extern u16 gScriptItemId; extern u8 gUnknown_020297ED; extern u8 byte_3002A68; -// rom data to do - extern const u8 gUnknown_08E6C100[]; -extern const u8 gUnknown_08215C2C[]; extern const u8 gUnknown_08E6C920[]; extern const u8 gUnknown_08E6D354[]; -extern const u16 gUnknown_08215C0C[]; -extern const u16 gUnknown_0821602C[]; -extern const struct SpriteSheet gUnknown_082163DC; -extern const struct SpriteSheet gUnknown_082164F4; -extern const struct SpriteSheet gUnknown_08216454; -extern const struct SpriteSheet gUnknown_08216540; -extern const struct SpriteSheet gUnknown_08216574; -extern const struct SpritePalette gUnknown_082163EC; -extern const struct SpritePalette gUnknown_082163E4; extern const struct WindowConfig gWindowConfig_81E6F68; -extern const u8 sBlenderSyncArrowsPos[][2]; -extern const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate; -extern const s16 gUnknown_08216594[][5]; -extern const u8* const gUnknown_082162B8[]; -extern const u8 gUnknown_082162EC[3][4]; -extern const u16 gUnknown_082162F8[]; -extern const u8 gUnknown_08216300[]; -extern const struct SpriteTemplate gSpriteTemplate_8216548; -extern const u8 gUnknown_08216303[]; -extern const u8 gUnknown_082165BC[][3]; -extern const u8 gUnknown_082162C4[]; -extern const u8 gUnknown_082162D4[][2]; -extern const TaskFunc gUnknown_08216308[]; -extern const s8 gUnknown_082162CC[][2]; -extern const struct SpriteTemplate gSpriteTemplate_821645C; -extern const u8 gUnknown_082165DA[]; -extern const u8 gUnknown_082165DF[]; -extern const struct SpriteTemplate gSpriteTemplate_82164FC; -extern const u8* const gUnknown_08216284[]; -extern const struct SpriteTemplate gSpriteTemplate_821657C; -extern const u8 gUnknown_082165E9[]; -extern const u8 gUnknown_082165EE[]; -extern const u8 gUnknown_08216249[]; -extern const u8 gUnknown_082162C8[]; extern const u8 *const gPokeblockNames[]; -extern const u8 gUnknown_082165F3[]; -extern const u8 gOtherText_BPMAndDash[]; -extern const u8 gUnknown_082165F8[]; -extern const u8 gUnknown_08216600[]; extern const struct Berry gBerries[]; +extern const u8 gBerryBlenderArrowTiles[]; +extern const u8 gBerryBlenderMarubatsuTiles[]; +extern const u8 gBerryBlenderParticlesTiles[]; +extern const u8 gBerryBlenderCountdownNumbersTiles[]; +extern const u8 gBerryBlenderStartTiles[]; +extern const u16 gBerryBlenderMiscPalette[]; +extern const u16 gBerryBlenderArrowPalette[]; + // ewram static EWRAM_DATA u8 gUnknown_020297DC = 0; static EWRAM_DATA u32 gUnknown_020297E0 = 0; @@ -267,7 +235,7 @@ static EWRAM_DATA u8 gUnknown_020297E8 = 0; // iwram common u16 gUnknown_03004830; -u8 gUnknown_03004834; +u8 gInGameOpponentsNo; u16 gUnknown_03004840[10]; struct BerryBlenderData* gBerryBlenderData; @@ -287,7 +255,7 @@ void Blender_SetBankBerryData(u8 bank, u16 itemID); static void sub_80514A4(void); static void sub_80514F0(void); static void sub_804E56C(void); -static void sub_804E884(u8 a0); +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents); static void sub_8051474(void); static void sub_804E9F8(void); static void sub_804F378(void); @@ -313,6 +281,526 @@ static void sub_805197C(u16 a0, u16 a1); static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); static void sub_8052BD0(u8 taskID); static void sub_8052AF8(void); +static void sub_804F8C8(u8 taskID); +static void sub_804F9F4(u8 taskID); +static void sub_804FB1C(u8 taskID); +static void sub_8051C04(struct Sprite* sprite); +static void sub_8051650(struct Sprite* sprite); +static void sub_805181C(struct Sprite* sprite); +static void sub_80518CC(struct Sprite* sprite); + +// const data +static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); + +// unreferenced pals? +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal"); +static const u16 sUnknownArray_1[224] = {0}; + +// unreferenced Japanese strings +static const u8 sUnknownJpnString0[] = _("▶"); +static const u8 sUnknownJpnString1[] = _(" "); +static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end) +static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute" +static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end) +static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart" +static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end) + +static const u8 gUnknown_08216249[] = _("\p"); + +// unreferenced; These appear to be the first names of four people who worked on the game. +static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta) +static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori) +static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori) +static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda) + +static const u8 sUnknownText_2Pok[] = _("2Pok"); +static const u8 sUnknownText_3Pok[] = _("3Pok"); +static const u8 sUnknownText_4Pok[] = _("4Pok"); +static const u8* const gUnknown_08216284[] = +{ + sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok +}; + +// unreferenced player strings +static const u8 sUnknown1PString[4] = _("1P"); +static const u8 sUnknown2PString[4] = _("2P"); +static const u8 sUnknown3PString[4] = _("3P"); +static const u8 sUnknown4PString[4] = _("4P"); + +#ifdef ENGLISH +static const u8 sBlenderOpponentName1[] = _("MISTER"); +static const u8 sBlenderOpponentName2[] = _("LADDIE"); +static const u8 sBlenderOpponentName3[] = _("LASSIE"); +#else // GERMAN +static const u8 sBlenderOpponentName1[] = _("OPI"); +static const u8 sBlenderOpponentName2[] = _("KUMPEL"); +static const u8 sBlenderOpponentName3[] = _("TUSSI"); +#endif // ENGLISH +static const u8* const sBlenderOpponentsNames[] = +{ + sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3 +}; + +static const u8 sRedColorString[] = _("{COLOR RED}"); +static const u8 sNewLineString_0[] = _("\n"); +static const u8 sSpaceString_0[] = _(" "); + +static const s8 gUnknown_082162CC[][2] = +{ + {-1, -1}, {1, -1}, {-1, 1}, {1, 1} +}; + +static const u8 gUnknown_082162D4[][2] = +{ + {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12} +}; + +static const u8 sBlenderSyncArrowsPos[][2] = +{ + {72, 32}, {168, 32}, {72, 128}, {168, 128} +}; + +static const u8 gUnknown_082162EC[3][4] = +{ + {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} +}; + +static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000}; +static const u8 gUnknown_08216300[] = {1, 1, 0}; +static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0}; + +static const TaskFunc gUnknown_08216308[] = +{ + &sub_804F8C8, &sub_804F9F4, &sub_804FB1C +}; + +static const struct OamData sOamData_8216314 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821631C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216324[] = +{ + ANIMCMD_FRAME(16, 5, 0, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821632C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216334[] = +{ + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821633C[] = +{ + ANIMCMD_FRAME(48, 2, 1, 1), + ANIMCMD_FRAME(32, 5, 1, 1), + ANIMCMD_FRAME(48, 3, 1, 1), + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216350[] = +{ + ANIMCMD_FRAME(48, 2, 0, 1), + ANIMCMD_FRAME(32, 5, 0, 1), + ANIMCMD_FRAME(48, 3, 0, 1), + ANIMCMD_FRAME(16, 5, 0, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216364[] = +{ + ANIMCMD_FRAME(48, 2, 1, 0), + ANIMCMD_FRAME(32, 5, 1, 0), + ANIMCMD_FRAME(48, 3, 1, 0), + ANIMCMD_FRAME(16, 5, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216378[] = +{ + ANIMCMD_FRAME(48, 2, 0, 0), + ANIMCMD_FRAME(32, 5, 0, 0), + ANIMCMD_FRAME(48, 3, 0, 0), + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821638C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216394[] = +{ + ANIMCMD_FRAME(0, 5, 0, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821639C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82163A4[] = +{ + ANIMCMD_FRAME(0, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +{ + sSpriteAnim_821631C, + sSpriteAnim_8216324, + sSpriteAnim_821632C, + sSpriteAnim_8216334, + sSpriteAnim_821633C, + sSpriteAnim_8216350, + sSpriteAnim_8216364, + sSpriteAnim_8216378, + sSpriteAnim_821638C, + sSpriteAnim_8216394, + sSpriteAnim_821639C, + sSpriteAnim_82163A4 +}; + +static const struct SpriteSheet gUnknown_082163DC = +{ + gBerryBlenderArrowTiles, 0x800, 46545 +}; + +static const struct SpritePalette gUnknown_082163E4 = +{ + gBerryBlenderMiscPalette, 46546 +}; + +static const struct SpritePalette gUnknown_082163EC = +{ + gBerryBlenderArrowPalette, 12312 +}; + +static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +{ + .tileTag = 46545, + .paletteTag = 12312, + .oam = &sOamData_8216314, + .anims = sSpriteAnimTable_82163AC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051C04 +}; + +static const struct OamData sOamData_821640C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216414[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821641C[] = +{ + ANIMCMD_FRAME(4, 20, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216424[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821643C[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216444[] = +{ + sSpriteAnim_8216414, + sSpriteAnim_821641C, + sSpriteAnim_8216424, + sSpriteAnim_821643C, +}; + +static const struct SpriteSheet gUnknown_08216454 = +{ + gBerryBlenderMarubatsuTiles, 0x200, 48888 +}; + +static const struct SpriteTemplate sSpriteTemplate_821645C = +{ + .tileTag = 48888, + .paletteTag = 46546, + .oam = &sOamData_821640C, + .anims = sSpriteAnimTable_8216444, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8051650 +}; + +static const struct OamData sOamData_8216474 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821647C[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216494[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164AC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D0[] = +{ + ANIMCMD_FRAME(5, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D8[] = +{ + ANIMCMD_FRAME(6, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +{ + sSpriteAnim_821647C, + sSpriteAnim_8216494, + sSpriteAnim_82164AC, + sSpriteAnim_82164D0, + sSpriteAnim_82164D8, +}; + +static const struct SpriteSheet gUnknown_082164F4 = +{ + gBerryBlenderParticlesTiles, 0xE0, 23456 +}; + +static const struct SpriteTemplate sSpriteTemplate_82164FC = +{ + .tileTag = 23456, + .paletteTag = 46546, + .oam = &sOamData_8216474, + .anims = sSpriteAnimTable_82164E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_8216514 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821651C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216524[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821652C[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216534[] = +{ + sSpriteAnim_821651C, + sSpriteAnim_8216524, + sSpriteAnim_821652C, +}; + +static const struct SpriteSheet gUnknown_08216540 = +{ + gBerryBlenderCountdownNumbersTiles, 0x600, 12345 +}; + +static const struct SpriteTemplate sSpriteTemplate_8216548 = +{ + .tileTag = 12345, + .paletteTag = 46546, + .oam = &sOamData_8216514, + .anims = sSpriteAnimTable_8216534, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_805181C +}; + +static const struct OamData sOamData_8216560 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216568[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216570[] = +{ + sSpriteAnim_8216568, +}; + +static const struct SpriteSheet gUnknown_08216574 = +{ + gBerryBlenderStartTiles, 0x400, 12346 +}; + +static const struct SpriteTemplate sSpriteTemplate_821657C = +{ + .tileTag = 12346, + .paletteTag = 46546, + .oam = &sOamData_8216560, + .anims = sSpriteAnimTable_8216570, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80518CC +}; + +static const s16 gUnknown_08216594[][5] = +{ + {-10, 20, 10, 2, 1}, + {250, 20, 10, -2, 1}, + {-10, 140, 10, 2, -1}, + {250, 140, 10, -2, -1}, +}; + +static const u8 gUnknown_082165BC[][3] = +{ + {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, +}; + +static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4}; +static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; +static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5}; +static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2}; +static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2}; + +static const u8 sText_Space[] = _(" "); +static const u8 sText_BPM[] = _("BPM"); +static const u8 sText_Dash[] = _("-"); +static const u8 sNewLineString_1[] = _("\n"); +static const u8 sNewLineString_2[] = _("\n"); static void Blender_ControlHitPitch(void) { @@ -345,11 +833,11 @@ static bool8 sub_804E2EC(void) break; case 1: { - const void* offsetRead = gUnknown_08215C2C; + const void* offsetRead = sBlenderCenterMap; void* offsetWrite = (void*)(VRAM + 0x4000); DmaCopy16(3, offsetRead, offsetWrite, 0x400); - LoadPalette(gUnknown_08215C0C, 0, 0x100); + LoadPalette(sBlenderCenterPal, 0, 0x100); gBerryBlenderData->field_1++; } break; @@ -413,7 +901,7 @@ static bool8 sub_804E2EC(void) offsetRead = &ewram[0x13000]; offsetWrite = (void*)(VRAM + 0x6000); DmaCopy16(3, offsetRead, offsetWrite, 0x500); - LoadPalette(gUnknown_0821602C, 0x80, 0x20); + LoadPalette(sBlenderOuterPal, 0x80, 0x20); gBerryBlenderData->field_1++; } break; @@ -455,7 +943,7 @@ void sub_804E538(void) gBerryBlenderData->field_0 = 0; *field6F = 0; - sub_804E884(gSpecialVar_0x8004); + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); SetMainCallback2(sub_804E56C); } @@ -581,39 +1069,39 @@ static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID) berry->smoothness = berryInfo->smoothness; } -static void sub_804E884(u8 a0) +static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents) { int i; - if (a0) + if (NoOfOpponents) { for (i = 0; i < 4; i++) gLinkPlayers[i].language = GAME_LANGUAGE; } - switch (a0) + switch (NoOfOpponents) { case 0: - gUnknown_03004834 = 0; + gInGameOpponentsNo = 0; break; case 1: - gUnknown_03004834 = 1; + gInGameOpponentsNo = 1; gBerryBlenderData->playersNo = 2; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); - StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); break; case 2: - gUnknown_03004834 = 2; + gInGameOpponentsNo = 2; gBerryBlenderData->playersNo = 3; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); - StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); - StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); break; case 3: - gUnknown_03004834 = 3; + gInGameOpponentsNo = 3; gBerryBlenderData->playersNo = 4; StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName); - StringCopy(gLinkPlayers[1].name, gUnknown_082162B8[0]); - StringCopy(gLinkPlayers[2].name, gUnknown_082162B8[1]); - StringCopy(gLinkPlayers[3].name, gUnknown_082162B8[2]); + StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]); + StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]); + StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]); break; } } @@ -630,7 +1118,7 @@ void sub_804E990(void) { gBerryBlenderData->chosenItemID[i] = 0; } - sub_804E884(gSpecialVar_0x8004); + Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); if (gSpecialVar_0x8004 == 0) SetMainCallback2(sub_804E9F8); else @@ -793,7 +1281,7 @@ static void sub_804E9F8(void) sub_8051414(&gBerryBlenderData->field_168); break; case 16: - CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); gBerryBlenderData->field_0++; break; case 18: @@ -936,7 +1424,7 @@ static void sub_804F2A8(void) gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i]; StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i); if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) - stringPtr = StringCopy(stringPtr, gUnknown_082162C4); + stringPtr = StringCopy(stringPtr, sRedColorString); StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); } @@ -1051,7 +1539,7 @@ static void sub_804F378(void) sub_8051414(&gBerryBlenderData->field_168); break; case 16: - CreateSprite(&gSpriteTemplate_8216548, 120, -16, 3); + CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3); gBerryBlenderData->field_0++; break; case 18: @@ -1119,7 +1607,7 @@ static void sub_804F890(u8 a0, u8 a1) gTasks[taskID].data[2] = a0; } -void sub_804F8C8(u8 taskID) +static void sub_804F8C8(u8 taskID) { if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2) { @@ -1170,7 +1658,7 @@ void sub_804F8C8(u8 taskID) gTasks[taskID].data[0] = 0; } -void sub_804F9F4(u8 taskID) +static void sub_804F9F4(u8 taskID) { u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF; @@ -1213,7 +1701,7 @@ void sub_804F9F4(u8 taskID) gTasks[taskID].data[0] = 0; } -void sub_804FB1C(u8 taskID) +static void sub_804FB1C(u8 taskID) { u32 var1, var2; @@ -1264,7 +1752,7 @@ static void sub_804FC48(u16 a0, u8 a1) { u8 spriteID; - spriteID = CreateSprite(&gSpriteTemplate_821645C, + spriteID = CreateSprite(&sSpriteTemplate_821645C, sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]), sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]), 1); @@ -2077,7 +2565,7 @@ static void sub_8050954(void) case 6: if (Blender_PrintBlendingResults()) { - if (gUnknown_03004834 == 0) + if (gInGameOpponentsNo == 0) IncrementGameStat(34); else IncrementGameStat(33); @@ -2152,7 +2640,7 @@ static void sub_8050954(void) } break; case 12: - if (gUnknown_03004834) + if (gInGameOpponentsNo) { SetMainCallback2(sub_80510E8); gBerryBlenderData->field_6F = 0; @@ -2547,7 +3035,7 @@ static void sub_805156C(void) x = gSineTable[(rand & 0xFF) + 64] / 4; y = gSineTable[(rand & 0xFF)] / 4; - spriteID = CreateSprite(&gSpriteTemplate_82164FC, x + 120, y + 80, 1); + spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1); gSprites[spriteID].data0 = 16 - (Random() % 32); gSprites[spriteID].data1 = 16 - (Random() % 32); @@ -2555,7 +3043,7 @@ static void sub_805156C(void) } } -void sub_8051650(struct Sprite* sprite) +static void sub_8051650(struct Sprite* sprite) { sprite->data0++; sprite->pos2.y = -(sprite->data0 / 3); @@ -2619,7 +3107,7 @@ void unref_sub_80516F8(u8 taskID) } } -void sub_805181C(struct Sprite* sprite) +static void sub_805181C(struct Sprite* sprite) { switch (sprite->data0) { @@ -2647,7 +3135,7 @@ void sub_805181C(struct Sprite* sprite) if (++sprite->data3 == 3) { DestroySprite(sprite); - CreateSprite(&gSpriteTemplate_821657C, 120, -20, 2); + CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2); } else { @@ -2661,7 +3149,7 @@ void sub_805181C(struct Sprite* sprite) sprite->pos2.y = sprite->data1; } -void sub_80518CC(struct Sprite* sprite) +static void sub_80518CC(struct Sprite* sprite) { switch (sprite->data0) { @@ -2810,7 +3298,7 @@ static bool8 sub_8051B8C(void) return 0; } -void sub_8051C04(struct Sprite* sprite) +static void sub_8051C04(struct Sprite* sprite) { sprite->pos2.x = -(gBerryBlenderData->field_144); sprite->pos2.y = -(gBerryBlenderData->field_146); @@ -2969,7 +3457,7 @@ static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* ds #else de_sub_8073174(dst, gOtherText_PokeBlockMade); #endif - StringAppend(dst, gUnknown_082162C8); + StringAppend(dst, sNewLineString_0); flavourLvl = sub_810C9B0(pokeblock); feel = sub_810C9E8(pokeblock); @@ -3050,14 +3538,14 @@ static bool8 Blender_PrintBlendingRanking(void) MenuDrawTextWindow(4, 2, 25, 17); sub_8072BD8(gOtherText_Ranking, 5, 3, 160); - gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&gSpriteTemplate_821645C, 140, 52, 0); + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3); - gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&gSpriteTemplate_821645C, 164, 52, 0); + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0); gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; - gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&gSpriteTemplate_821645C, 188, 52, 0); + gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0); gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1); @@ -3135,7 +3623,7 @@ static void BlenderDebug_PrintBerryData(void) u8 text[128]; u8 i; - StringCopy(text, gOtherText_BPMAndDash); + StringCopy(text, sText_BPM); MenuPrint(text, 2, 0); ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); @@ -3160,19 +3648,19 @@ static void BlenderDebug_PrintBerryData(void) MenuPrint(text, 2, var); ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); @@ -3185,19 +3673,19 @@ static void BlenderDebug_PrintBerryData(void) MenuPrint(text, 2, 15); ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); @@ -3241,11 +3729,11 @@ static void sub_80527BC(void) ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8); StringAppend(text, buffer); - StringAppend(text, gUnknown_082165F8); + StringAppend(text, sText_Space); ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8); StringAppend(text, buffer); - StringAppend(text, gUnknown_08216600); + StringAppend(text, sNewLineString_1); if (gUnknown_020297DC == 3) { -- cgit v1.2.3 From 28ff6c481a9e232c646e1957702a0a754a5e2492 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 21 Aug 2017 21:50:54 -0500 Subject: remove commented out stuff from sym_bss.txt --- sym_bss.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sym_bss.txt b/sym_bss.txt index 7a725e64e..ee637d331 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -123,12 +123,6 @@ gUnknown_03000748: @ 3000748 .space 0x4 .include "src/field_specials.o" - -@ learn_move - -@ .align 2 -@sLearnMoveStruct: @ 30007B0 -@ .space 0x4 .include "src/learn_move.o" .include "src/player_pc.o" .include "asm/m4a_1.o" -- cgit v1.2.3 From 13f917d4ffeff59ad13ea80fa8dbc994e4b687c0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 10:34:45 +0200 Subject: cleaning up the file --- include/songs.h | 110 ++++++++++++++++++++++++++-------------------------- src/berry_blender.c | 101 +++++++++++++++++++++++------------------------ 2 files changed, 106 insertions(+), 105 deletions(-) diff --git a/include/songs.h b/include/songs.h index 8cf7ee5e9..e801ac7d7 100644 --- a/include/songs.h +++ b/include/songs.h @@ -36,29 +36,29 @@ enum /*0x1E*/ SE_N, /*0x1F*/ SE_SEIKAI, /*0x20*/ SE_HAZURE, - SE_EXP, - SE_JITE_PYOKO, - SE_MU_PACHI, - SE_TK_KASYA, - SE_FU_ZAKU, - SE_FU_ZAKU2, - SE_FU_ZUZUZU, - SE_RU_GASHIN, - SE_RU_GASYAN, - SE_RU_BARI, - SE_RU_HYUU, - SE_KI_GASYAN, - SE_TK_WARPIN, - SE_TK_WARPOUT, - SE_TU_SAA, - SE_HI_TURUN, - SE_TRACK_MOVE, - SE_TRACK_STOP, - SE_TRACK_HAIK, - SE_TRACK_DOOR, - SE_MOTER, - SE_CARD, - SE_SAVE, + /*0x21*/ SE_EXP, + /*0x22*/ SE_JITE_PYOKO, + /*0x23*/ SE_MU_PACHI, + /*0x24*/ SE_TK_KASYA, + /*0x25*/ SE_FU_ZAKU, + /*0x26*/ SE_FU_ZAKU2, + /*0x27*/ SE_FU_ZUZUZU, + /*0x28*/ SE_RU_GASHIN, + /*0x29*/ SE_RU_GASYAN, + /*0x2A*/ SE_RU_BARI, + /*0x2B*/ SE_RU_HYUU, + /*0x2C*/ SE_KI_GASYAN, + /*0x2D*/ SE_TK_WARPIN, + /*0x2E*/ SE_TK_WARPOUT, + /*0x2F*/ SE_TU_SAA, + /*0x30*/ SE_HI_TURUN, + /*0x31*/ SE_TRACK_MOVE, + /*0x32*/ SE_TRACK_STOP, + /*0x33*/ SE_TRACK_HAIK, + /*0x34*/ SE_TRACK_DOOR, + /*0x35*/ SE_MOTER, + /*0x36*/ SE_CARD, + /*0x37*/ SE_SAVE, /*0x38*/ SE_KON, /*0x39*/ SE_KON2, /*0x3A*/ SE_KON3, @@ -274,38 +274,38 @@ enum /*0x171*/ BGM_ME_BACHI, /*0x172*/ BGM_FANFA4, /*0x173*/ BGM_FANFA5, - BGM_ME_WAZA, - BGM_BIJYUTU, - BGM_DOORO_X4, - BGM_FUNE_KAN, - BGM_ME_SHINKA, - BGM_SHINKA, - BGM_ME_WASURE, - BGM_SYOUJOEYE, - BGM_BOYEYE, - BGM_DAN02, - BGM_MACHI_S3, - BGM_ODAMAKI, - BGM_B_TOWER, - BGM_SWIMEYE, - BGM_DAN03, - BGM_ME_KINOMI, - BGM_ME_TAMA, - BGM_ME_B_BIG, - BGM_ME_B_SMALL, - BGM_ME_ZANNEN, - BGM_BD_TIME, - BGM_TEST1, - BGM_TEST2, - BGM_TEST3, - BGM_TEST4, - BGM_TEST, - BGM_GOMACHI0, - BGM_GOTOWN, - BGM_POKECEN, - BGM_NEXTROAD, - BGM_GRANROAD, - BGM_CYCLING, + /*0x174*/ BGM_ME_WAZA, + /*0x175*/ BGM_BIJYUTU, + /*0x176*/ BGM_DOORO_X4, + /*0x177*/ BGM_FUNE_KAN, + /*0x178*/ BGM_ME_SHINKA, + /*0x179*/ BGM_SHINKA, + /*0x17A*/ BGM_ME_WASURE, + /*0x17B*/ BGM_SYOUJOEYE, + /*0x17C*/ BGM_BOYEYE, + /*0x17D*/ BGM_DAN02, + /*0x17E*/ BGM_MACHI_S3, + /*0x17F*/ BGM_ODAMAKI, + /*0x180*/ BGM_B_TOWER, + /*0x181*/ BGM_SWIMEYE, + /*0x182*/ BGM_DAN03, + /*0x183*/ BGM_ME_KINOMI, + /*0x184*/ BGM_ME_TAMA, + /*0x185*/ BGM_ME_B_BIG, + /*0x186*/ BGM_ME_B_SMALL, + /*0x187*/ BGM_ME_ZANNEN, + /*0x188*/ BGM_BD_TIME, + /*0x189*/ BGM_TEST1, + /*0x18A*/ BGM_TEST2, + /*0x18B*/ BGM_TEST3, + /*0x18C*/ BGM_TEST4, + /*0x18D*/ BGM_TEST, + /*0x18E*/ BGM_GOMACHI0, + /*0x18F*/ BGM_GOTOWN, + /*0x190*/ BGM_POKECEN, + /*0x191*/ BGM_NEXTROAD, + /*0x192*/ BGM_GRANROAD, + /*0x193*/ BGM_CYCLING, BGM_FRIENDLY, BGM_MISHIRO, BGM_TOZAN, diff --git a/src/berry_blender.c b/src/berry_blender.c index 772de43f7..f54c6271d 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -373,7 +373,7 @@ static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0}; static const TaskFunc gUnknown_08216308[] = { - &sub_804F8C8, &sub_804F9F4, &sub_804FB1C + sub_804F8C8, sub_804F9F4, sub_804FB1C }; static const struct OamData sOamData_8216314 = @@ -401,13 +401,13 @@ static const union AnimCmd sSpriteAnim_821631C[] = static const union AnimCmd sSpriteAnim_8216324[] = { - ANIMCMD_FRAME(16, 5, 0, 1), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), ANIMCMD_END }; static const union AnimCmd sSpriteAnim_821632C[] = { - ANIMCMD_FRAME(16, 5, 1, 0), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), ANIMCMD_END }; @@ -428,19 +428,19 @@ static const union AnimCmd sSpriteAnim_821633C[] = static const union AnimCmd sSpriteAnim_8216350[] = { - ANIMCMD_FRAME(48, 2, 0, 1), - ANIMCMD_FRAME(32, 5, 0, 1), - ANIMCMD_FRAME(48, 3, 0, 1), - ANIMCMD_FRAME(16, 5, 0, 1), + ANIMCMD_FRAME(48, 2, .vFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), ANIMCMD_END }; static const union AnimCmd sSpriteAnim_8216364[] = { - ANIMCMD_FRAME(48, 2, 1, 0), - ANIMCMD_FRAME(32, 5, 1, 0), - ANIMCMD_FRAME(48, 3, 1, 0), - ANIMCMD_FRAME(16, 5, 1, 0), + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), ANIMCMD_END }; @@ -461,13 +461,13 @@ static const union AnimCmd sSpriteAnim_821638C[] = static const union AnimCmd sSpriteAnim_8216394[] = { - ANIMCMD_FRAME(0, 5, 0, 1), + ANIMCMD_FRAME(0, 5, .vFlip = TRUE), ANIMCMD_END }; static const union AnimCmd sSpriteAnim_821639C[] = { - ANIMCMD_FRAME(0, 5, 1, 0), + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), ANIMCMD_END }; @@ -917,9 +917,9 @@ static bool8 sub_804E2EC(void) LoadSpritePalette(&gUnknown_082163EC); LoadSpritePalette(&gUnknown_082163E4); gBerryBlenderData->field_1 = 0; - return 1; + return TRUE; } - return 0; + return FALSE; } static void sub_804E4FC(void) @@ -1031,7 +1031,7 @@ void sub_804E738(struct Sprite* sprite) if (++sprite->data5 > 3) DestroySprite(sprite); else - PlaySE(116); + PlaySE(SE_TB_KARA); } sprite->pos1.x = sprite->data1; sprite->pos1.y = sprite->data2; @@ -1306,7 +1306,7 @@ static void sub_804E9F8(void) { gBerryBlenderData->field_178 = GetCurrentMapMusic(); } - PlayBGM(403); + PlayBGM(BGM_CYCLING); break; case 100: MenuDrawTextWindow(0, 13, 29, 19); @@ -1512,7 +1512,7 @@ static void sub_804F378(void) case 13: gBerryBlenderData->field_0++; sub_804F238(); - PlaySE(43); + PlaySE(SE_RU_HYUU); sub_8051414(&gBerryBlenderData->field_168); break; case 14: @@ -1526,7 +1526,7 @@ static void sub_804F378(void) gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]]; REG_BG2CNT = 0x4882; gBerryBlenderData->framesToWait = 0; - PlaySE(52); + PlaySE(SE_TRACK_DOOR);; sub_804F2A8(); } sub_8051414(&gBerryBlenderData->field_168); @@ -1568,8 +1568,8 @@ static void sub_804F378(void) { gBerryBlenderData->field_178 = GetCurrentMapMusic(); } - PlayBGM(403); - PlaySE(53); + PlayBGM(BGM_CYCLING); + PlaySE(SE_MOTER); Blender_ControlHitPitch(); break; } @@ -1760,17 +1760,17 @@ static void sub_804FC48(u16 a0, u8 a1) { StartSpriteAnim(&gSprites[spriteID], 2); gSprites[spriteID].callback = sub_8051684; - PlaySE(40); + PlaySE(SE_RU_GASHIN); } else if (a0 == 0x5432) { StartSpriteAnim(&gSprites[spriteID], 0); - PlaySE(31); + PlaySE(SE_SEIKAI); } else if (a0 == 0x2345) { StartSpriteAnim(&gSprites[spriteID], 1); - PlaySE(32); + PlaySE(SE_HAZURE); } sub_805156C(); } @@ -1926,20 +1926,21 @@ static void sub_80501FC(void) UpdatePaletteFade(); } -#define ARE_FLAVOURS_SAME(flavours1, flavours2)(((*(u32*)(&flavours1[-1]) & 0xFFFFFF00) == (*(u32*)(&flavours2[-1]) & 0xFFFFFF00)&& (*(u32*)(&flavours1[3]) & 0xFFFFFF) == (*(u32*)(&flavours2[3]) & 0xFFFFFF))) - static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2) { if (berries[index1].itemID != berries[index2].itemID - || (StringCompare(berries[index1].name, berries[index2].name) == 0 - && ARE_FLAVOURS_SAME(berries[index1].flavours, berries[index2].flavours))) - return 1; + || (StringCompare(berries[index1].name, berries[index2].name) == 0 + && (berries[index1].flavours[0] == berries[index2].flavours[0] + && berries[index1].flavours[1] == berries[index2].flavours[1] + && berries[index1].flavours[2] == berries[index2].flavours[2] + && berries[index1].flavours[3] == berries[index2].flavours[3] + && berries[index1].flavours[4] == berries[index2].flavours[4] + && berries[index1].smoothness == berries[index2].smoothness))) + return TRUE; else - return 0; + return FALSE; } -#undef ARE_FLAVOURS_SAME - u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) { s16 vars[5]; @@ -2448,7 +2449,7 @@ static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct static void sub_8050760(void) { u32 frames = (u16)(gBerryBlenderData->gameFrameTime); - u32 max_RPM = (u16)(gBerryBlenderData->max_RPM); + u16 max_RPM = gBerryBlenderData->max_RPM; s16 var = 0; if (frames < 900) @@ -2466,23 +2467,23 @@ static void sub_8050760(void) var = 0; if (max_RPM <= 64) { - if ((u16)(max_RPM - 50) < 50) + if (max_RPM >= 50 && max_RPM < 100) var = -1; - else if ((u16)(max_RPM - 100) < 50) + else if (max_RPM >= 100 && max_RPM < 150) var = -2; - else if ((u16)(max_RPM - 150) < 50) + else if (max_RPM >= 150 && max_RPM < 200) var = -3; - else if ((u16)(max_RPM - 200) < 50) + else if (max_RPM >= 200 && max_RPM < 250) var = -4; - else if ((u16)(max_RPM - 250) < 50) + else if (max_RPM >= 250 && max_RPM < 300) var = -5; - else if ((u16)(max_RPM - 350) < 50) + else if (max_RPM >= 350 && max_RPM < 400) var = -6; - else if ((u16)(max_RPM - 400) < 50) + else if (max_RPM >= 400 && max_RPM < 450) var = -7; - else if ((u16)(max_RPM - 500) < 50) + else if (max_RPM >= 500 && max_RPM < 550) var = -8; - else if ((u16)(max_RPM - 550) < 50) + else if (max_RPM >= 550 && max_RPM < 600) var = -9; else if (max_RPM >= 600) var = -10; @@ -2718,11 +2719,11 @@ bool8 sub_8050CE8(void) if (++gBerryBlenderData->framesToWait > 5) { gSoftResetDisabled = FALSE; - return 1; + return TRUE; } break; } - return 0; + return FALSE; } static void sub_8050E30(void) @@ -3292,10 +3293,10 @@ static bool8 sub_8051B8C(void) { gBerryBlenderData->field_144 = 0; gBerryBlenderData->field_146 = 0; - return 1; + return TRUE; } else - return 0; + return FALSE; } static void sub_8051C04(struct Sprite* sprite) @@ -3438,11 +3439,11 @@ static bool8 Blender_PrintBlendingResults(void) if (MenuUpdateWindowText()) { Blender_TrySettingRecord(); - return 1; + return TRUE; } break; } - return 0; + return FALSE; } static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) @@ -3592,9 +3593,9 @@ static bool8 Blender_PrintBlendingRanking(void) break; case 6: gBerryBlenderData->field_0 = 0; - return 1; + return TRUE; } - return 0; + return FALSE; } // debug menu goes here -- cgit v1.2.3