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 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 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