diff options
188 files changed, 9467 insertions, 26055 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s deleted file mode 100644 index 5e342a50f..000000000 --- a/asm/battle_2.s +++ /dev/null @@ -1,13887 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_800FD9C -sub_800FD9C: @ 800FD9C - push {r4,lr} - bl MoveSaveBlocks_ResetHeap - bl AllocateBattleResources - bl AllocateBattleSpritesData - bl AllocateMonSpritesGfx - ldr r4, _0800FDCC @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FDD8 - bl HandleLinkBattleSetup - ldr r0, _0800FDD0 @ =sub_80109C8 - bl SetMainCallback2 - ldr r1, _0800FDD4 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1] - b _0800FE1C - .align 2, 0 -_0800FDCC: .4byte gBattleTypeFlags -_0800FDD0: .4byte sub_80109C8 -_0800FDD4: .4byte gBattleCommunication -_0800FDD8: - bl sub_800FE24 - ldr r1, [r4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800FE1C - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800FE06 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0800FDFE - movs r0, 0x19 - bl HelpSystem_SetSomeVariable2 - b _0800FE1C -_0800FDFE: - movs r0, 0x18 - bl HelpSystem_SetSomeVariable2 - b _0800FE1C -_0800FE06: - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _0800FE16 - movs r0, 0x1A - bl HelpSystem_SetSomeVariable2 - b _0800FE1C -_0800FE16: - movs r0, 0x17 - bl HelpSystem_SetSomeVariable2 -_0800FE1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_800FD9C - - thumb_func_start sub_800FE24 -sub_800FE24: @ 800FE24 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0800FF28 @ =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r4, _0800FF2C @ =0x00005051 - movs r0, 0x44 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r1, _0800FF30 @ =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, _0800FF34 @ =gBattle_WIN0V - strh r4, [r0] - bl ScanlineEffect_Clear - ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers - movs r3, 0xF0 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r0, r1 - movs r1, 0x4F -_0800FE88: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _0800FE88 - movs r1, 0x50 - ldr r4, _0800FF3C @ =gUnknown_824EFE4 - ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers - ldr r3, _0800FF40 @ =0x0000ff10 - movs r5, 0x82 - lsls r5, 4 - adds r2, r0, r5 - adds r0, 0xA0 -_0800FEA6: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _0800FEA6 - ldr r0, [r4] - ldr r1, [r4, 0x4] - ldr r2, [r4, 0x8] - bl ScanlineEffect_SetParams - bl ResetPaletteFade - ldr r0, _0800FF44 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _0800FF48 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _0800FF4C @ =gBattle_BG1_X - strh r1, [r0] - ldr r0, _0800FF50 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _0800FF54 @ =gBattle_BG2_X - strh r1, [r0] - ldr r0, _0800FF58 @ =gBattle_BG2_Y - strh r1, [r0] - ldr r0, _0800FF5C @ =gBattle_BG3_X - strh r1, [r0] - ldr r0, _0800FF60 @ =gBattle_BG3_Y - strh r1, [r0] - bl sub_807FC5C - ldr r1, _0800FF64 @ =gBattleTerrain - strb r0, [r1] - bl sub_800F34C - bl LoadBattleTextboxAndBackground - bl ResetSpriteData - bl ResetTasks - bl sub_800FAE0 - bl FreeAllSpritePalettes - ldr r1, _0800FF68 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _0800FF6C @ =VBlankCB_Battle - bl SetVBlankCallback - bl SetUpBattleVars - ldr r0, _0800FF70 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FF78 - ldr r0, _0800FF74 @ =sub_8010BA0 - bl SetMainCallback2 - b _0800FF7E - .align 2, 0 -_0800FF28: .4byte 0x05006000 -_0800FF2C: .4byte 0x00005051 -_0800FF30: .4byte gBattle_WIN0H -_0800FF34: .4byte gBattle_WIN0V -_0800FF38: .4byte gScanlineEffectRegBuffers -_0800FF3C: .4byte gUnknown_824EFE4 -_0800FF40: .4byte 0x0000ff10 -_0800FF44: .4byte gBattle_BG0_X -_0800FF48: .4byte gBattle_BG0_Y -_0800FF4C: .4byte gBattle_BG1_X -_0800FF50: .4byte gBattle_BG1_Y -_0800FF54: .4byte gBattle_BG2_X -_0800FF58: .4byte gBattle_BG2_Y -_0800FF5C: .4byte gBattle_BG3_X -_0800FF60: .4byte gBattle_BG3_Y -_0800FF64: .4byte gBattleTerrain -_0800FF68: .4byte gReservedSpritePaletteCount -_0800FF6C: .4byte VBlankCB_Battle -_0800FF70: .4byte gBattleTypeFlags -_0800FF74: .4byte sub_8010BA0 -_0800FF78: - ldr r0, _0800FFCC @ =sub_8010508 - bl SetMainCallback2 -_0800FF7E: - ldr r0, _0800FFD0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800FF98 - ldr r0, _0800FFD4 @ =gEnemyParty - ldr r1, _0800FFD8 @ =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl sub_80112E0 - bl SetWildMonHeldItem -_0800FF98: - ldr r0, _0800FFDC @ =gMain - ldr r1, _0800FFE0 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r4, _0800FFE4 @ =gPlayerParty - movs r0, 0xFA - lsls r0, 1 - adds r5, r4, r0 -_0800FFAE: - adds r0, r4, 0 - movs r1, 0x3 - bl AdjustFriendship - adds r4, 0x64 - cmp r4, r5 - ble _0800FFAE - movs r1, 0 - ldr r0, _0800FFE8 @ =gBattleCommunication - strb r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800FFCC: .4byte sub_8010508 -_0800FFD0: .4byte gBattleTypeFlags -_0800FFD4: .4byte gEnemyParty -_0800FFD8: .4byte gTrainerBattleOpponent_A -_0800FFDC: .4byte gMain -_0800FFE0: .4byte 0x00000439 -_0800FFE4: .4byte gPlayerParty -_0800FFE8: .4byte gBattleCommunication - thumb_func_end sub_800FE24 - - thumb_func_start sub_800FFEC -sub_800FFEC: @ 800FFEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - mov r9, r6 - movs r0, 0xCE - lsls r0, 1 - mov r10, r0 - mov r8, r6 -_08010002: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _080100B0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _0801007E - cmp r5, r10 - beq _0801004A - cmp r7, 0 - beq _0801004A - cmp r1, 0 - bne _0801004A - movs r0, 0x1 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_0801004A: - cmp r5, 0 - beq _0801007E - cmp r7, 0 - beq _08010066 - cmp r5, r10 - beq _0801005A - cmp r1, 0 - beq _08010066 -_0801005A: - movs r0, 0x2 - mov r1, r8 - lsls r0, r1 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_08010066: - cmp r5, 0 - beq _0801007E - cmp r5, r10 - beq _0801007E - cmp r7, 0 - bne _0801007E - movs r0, 0x3 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_0801007E: - movs r0, 0x2 - add r8, r0 - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x5 - ble _08010002 - ldr r1, _080100B4 @ =gBattleStruct - ldr r0, [r1] - movs r2, 0xC3 - lsls r2, 1 - adds r0, r2 - strb r6, [r0] - ldr r0, [r1] - adds r2, 0x1 - adds r1, r0, r2 - lsrs r0, r6, 8 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080100B0: .4byte gPlayerParty -_080100B4: .4byte gBattleStruct - thumb_func_end sub_800FFEC - - thumb_func_start sub_80100B8 -sub_80100B8: @ 80100B8 - push {r4-r7,lr} - ldr r0, _08010120 @ =gBattleStruct - ldr r5, [r0] - movs r0, 0xC4 - lsls r0, 1 - adds r4, r5, r0 - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _08010134 - movs r2, 0 - ldr r7, _08010124 @ =gSaveBlock1Ptr - movs r1, 0xC8 - lsls r1, 1 - adds r5, r1 - adds r6, r7, 0 - ldr r3, _08010128 @ =0x000030ec -_080100DA: - adds r0, r4, r2 - ldr r1, [r6] - adds r1, r3 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _080100DA - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 - adds r3, r5, 0 - ldr r6, _08010124 @ =gSaveBlock1Ptr - ldr r5, _0801012C @ =0x00003108 -_080100FA: - adds r0, r3, r2 - ldr r1, [r6] - adds r1, r5 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x11 - ble _080100FA - ldr r0, [r7] - ldr r1, _08010130 @ =0x0000311a - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4, 0x7] - ldr r0, [r7] - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - b _08010174 - .align 2, 0 -_08010120: .4byte gBattleStruct -_08010124: .4byte gSaveBlock1Ptr -_08010128: .4byte 0x000030ec -_0801012C: .4byte 0x00003108 -_08010130: .4byte 0x0000311a -_08010134: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl sub_809C8A0 - adds r3, r0, 0 - movs r2, 0 - movs r0, 0xC8 - lsls r0, 1 - adds r5, r0 -_0801014C: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _0801014C - adds r1, r4, r2 - movs r0, 0xFF - strb r0, [r1] - adds r0, r5, 0 - movs r2, 0 - adds r1, r0, 0 - adds r1, 0x11 -_08010168: - strb r2, [r1] - subs r1, 0x1 - cmp r1, r0 - bge _08010168 - movs r0, 0 - strb r0, [r4, 0x7] -_08010174: - strb r0, [r4, 0x1A] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80100B8 - - thumb_func_start sub_801017C -sub_801017C: @ 801017C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08010234 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08010194 - b _080102C0 -_08010194: - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _08010250 - movs r5, 0 - ldr r3, _08010238 @ =gEnigmaBerries - ldr r0, _0801023C @ =gSaveBlock1Ptr - mov r8, r0 - adds r6, r3, 0 - mov r4, r8 - ldr r2, _08010240 @ =0x000030ec - adds r7, r3, 0 - adds r7, 0x38 -_080101AE: - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _080101AE - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r7, r3, 0 - adds r7, 0x8 - ldr r4, _0801023C @ =gSaveBlock1Ptr - ldr r2, _08010244 @ =0x00003108 - adds r6, r3, 0 - adds r6, 0x40 -_080101EC: - adds r1, r5, r7 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r5, r6 - ldr r0, [r4] - adds r0, r2 - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x11 - ble _080101EC - mov r1, r8 - ldr r0, [r1] - ldr r2, _08010248 @ =0x0000311a - adds r0, r2 - ldrb r1, [r0] - strb r1, [r3, 0x7] - ldrb r0, [r0] - adds r1, r3, 0 - adds r1, 0x3F - strb r0, [r1] - mov r4, r8 - ldr r0, [r4] - ldr r1, _0801024C @ =0x0000311b - adds r0, r1 - ldrb r1, [r0] - strb r1, [r3, 0x1A] - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x52 - strb r1, [r0] - b _080103FC - .align 2, 0 -_08010234: .4byte gBattleTypeFlags -_08010238: .4byte gEnigmaBerries -_0801023C: .4byte gSaveBlock1Ptr -_08010240: .4byte 0x000030ec -_08010244: .4byte 0x00003108 -_08010248: .4byte 0x0000311a -_0801024C: .4byte 0x0000311b -_08010250: - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - bl sub_809C8A0 - adds r6, r0, 0 - movs r5, 0 - ldr r4, _080102BC @ =gEnigmaBerries - adds r7, r4, 0 - adds r7, 0x38 - adds r3, r4, 0 -_0801026A: - adds r1, r5, r4 - adds r2, r6, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r1, r5, r7 - ldrb r0, [r2] - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x5 - ble _0801026A - adds r1, r5, r3 - movs r0, 0xFF - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r5, r0 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - movs r5, 0 - adds r4, r3, 0 - adds r4, 0x8 - movs r1, 0 - adds r2, r3, 0 - adds r2, 0x40 -_0801029C: - adds r0, r5, r4 - strb r1, [r0] - adds r0, r5, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x11 - ble _0801029C - movs r1, 0 - strb r1, [r3, 0x7] - adds r0, r3, 0 - adds r0, 0x3F - strb r1, [r0] - strb r1, [r3, 0x1A] - adds r0, 0x13 - strb r1, [r0] - b _080103FC - .align 2, 0 -_080102BC: .4byte gEnigmaBerries -_080102C0: - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - beq _0801034C - movs r5, 0 - ldr r3, _08010340 @ =gEnigmaBerries - ldr r2, _08010344 @ =gLinkPlayers - mov r9, r2 - adds r6, r3, 0 - movs r4, 0x8 - adds r4, r6 - mov r8, r4 -_080102D8: - lsls r0, r5, 8 - ldr r1, _08010348 @ =gBlockRecvBuffer + 4 - adds r7, r0, r1 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r9 - ldrb r3, [r0, 0x18] - movs r4, 0 - adds r5, 0x1 - mov r10, r5 - lsls r1, r3, 3 - subs r0, r1, r3 - adds r5, r1, 0 - lsls r0, 2 - adds r1, r0, r6 -_080102F8: - adds r0, r7, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _080102F8 - subs r0, r5, r3 - lsls r0, 2 - adds r1, r4, r0 - adds r1, r6 - movs r2, 0xFF - strb r2, [r1] - movs r4, 0 - mov r2, r8 - adds r1, r0, r2 - adds r2, r7, 0 - adds r2, 0x8 -_0801031C: - adds r0, r2, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _0801031C - subs r0, r5, r3 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, 0x3 - ble _080102D8 - b _080103FC - .align 2, 0 -_08010340: .4byte gEnigmaBerries -_08010344: .4byte gLinkPlayers -_08010348: .4byte gBlockRecvBuffer + 4 -_0801034C: - movs r5, 0 - ldr r4, _0801040C @ =gEnigmaBerries - mov r9, r4 -_08010352: - lsls r0, r5, 8 - ldr r1, _08010410 @ =gBlockRecvBuffer + 4 - adds r7, r0, r1 - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 - lsls r0, r5, 3 - mov r8, r0 - adds r1, r5, 0x2 - mov r12, r1 - subs r1, r0, r5 - mov r2, r12 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - lsls r1, 2 - adds r2, r1, r2 -_08010378: - adds r0, r7, r4 - ldrb r1, [r0] - strb r1, [r2] - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - adds r4, 0x1 - cmp r4, 0x5 - ble _08010378 - mov r0, r8 - subs r3, r0, r5 - lsls r3, 2 - adds r1, r4, r3 - add r1, r9 - ldrb r0, [r1] - movs r2, 0xFF - orrs r0, r2 - strb r0, [r1] - mov r0, r12 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r1, r4, r2 - add r1, r9 - ldrb r0, [r1] - movs r4, 0xFF - orrs r0, r4 - strb r0, [r1] - movs r4, 0 - ldr r0, _0801040C @ =gEnigmaBerries - adds r0, 0x8 - adds r2, r0 - adds r3, r0 - adds r6, r7, 0 - adds r6, 0x8 -_080103C0: - adds r0, r6, r4 - ldrb r1, [r0] - strb r1, [r3] - ldrb r0, [r0] - strb r0, [r2] - adds r2, 0x1 - adds r3, 0x1 - adds r4, 0x1 - cmp r4, 0x11 - ble _080103C0 - mov r0, r8 - subs r2, r0, r5 - lsls r2, 2 - add r2, r9 - ldrb r0, [r7, 0x7] - strb r0, [r2, 0x7] - mov r1, r12 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r1, [r7, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r7, 0x1A] - strb r1, [r2, 0x1A] - ldrb r1, [r7, 0x1A] - strb r1, [r0, 0x1A] - mov r5, r10 - cmp r5, 0x1 - ble _08010352 -_080103FC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801040C: .4byte gEnigmaBerries -_08010410: .4byte gBlockRecvBuffer + 4 - thumb_func_end sub_801017C - - thumb_func_start sub_8010414 -sub_8010414: @ 8010414 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - movs r6, 0 - ldr r0, _08010440 @ =gBlockRecvBuffer - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 1 - mov r12, r0 - cmp r2, r1 - bne _08010458 - cmp r3, 0 - bne _08010448 - ldr r0, _08010444 @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _0801044E - .align 2, 0 -_08010440: .4byte gBlockRecvBuffer -_08010444: .4byte gBattleTypeFlags -_08010448: - ldr r0, _0801048C @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_0801044E: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08010458: - cmp r6, 0 - bne _080104FC - movs r2, 0 - cmp r2, r4 - bge _0801047C - ldr r1, _08010490 @ =gBlockRecvBuffer - mov r8, r1 - movs r5, 0x80 - lsls r5, 1 -_0801046A: - adds r1, r5 - adds r2, 0x1 - cmp r2, r4 - bge _0801047C - mov r7, r8 - ldrh r0, [r7] - ldrh r7, [r1] - cmp r0, r7 - beq _0801046A -_0801047C: - cmp r2, r4 - bne _080104A4 - cmp r3, 0 - bne _08010494 - ldr r0, _0801048C @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0xC - b _0801049A - .align 2, 0 -_0801048C: .4byte gBattleTypeFlags -_08010490: .4byte gBlockRecvBuffer -_08010494: - ldr r0, _080104EC @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x8 -_0801049A: - orrs r1, r2 - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080104A4: - cmp r6, 0 - bne _080104FC - movs r2, 0 - ldr r5, _080104EC @ =gBattleTypeFlags - cmp r2, r4 - bge _080104E2 - mov r0, r12 - ldrh r1, [r0] - ldr r0, _080104F0 @ =0x00000201 - cmp r1, r0 - beq _080104DA -_080104BA: - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - ldr r1, _080104F0 @ =0x00000201 - cmp r0, r1 - bls _080104CA - cmp r2, r3 - bne _080104E2 -_080104CA: - adds r2, 0x1 - cmp r2, r4 - bge _080104E2 - lsls r0, r2, 8 - add r0, r12 - ldrh r0, [r0] - cmp r0, r1 - bne _080104BA -_080104DA: - cmp r2, r3 - beq _080104BA - cmp r2, r3 - bge _080104BA -_080104E2: - cmp r2, r4 - bne _080104F4 - ldr r0, [r5] - movs r1, 0xC - b _080104F8 - .align 2, 0 -_080104EC: .4byte gBattleTypeFlags -_080104F0: .4byte 0x00000201 -_080104F4: - ldr r0, [r5] - movs r1, 0x8 -_080104F8: - orrs r0, r1 - str r0, [r5] -_080104FC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8010414 - - thumb_func_start sub_8010508 -sub_8010508: @ 8010508 - push {r4-r6,lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08010540 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - strb r4, [r0] - movs r0, 0x1 - adds r5, r4, 0 - eors r5, r0 - ldr r0, _08010544 @ =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x10 - bls _08010536 - b _080108B8 -_08010536: - lsls r0, 2 - ldr r1, _08010548 @ =_0801054C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08010540: .4byte gBattleStruct -_08010544: .4byte gBattleCommunication -_08010548: .4byte _0801054C - .align 2, 0 -_0801054C: - .4byte _08010590 - .4byte _080105D4 - .4byte _08010670 - .4byte _080106F4 - .4byte _0801071C - .4byte _08010898 - .4byte _080108A4 - .4byte _0801074C - .4byte _08010774 - .4byte _08010898 - .4byte _080108A4 - .4byte _080107A4 - .4byte _080107CC - .4byte _08010898 - .4byte _080108A4 - .4byte _08010834 - .4byte _0801084C -_08010590: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _080105BC - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_80357C8 - ldr r1, _080105CC @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_080105BC: - ldr r0, _080105D0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _080105C6 - b _080108B8 -_080105C6: - bl LoadWirelessStatusIndicatorSpriteGfx - b _080108B8 - .align 2, 0 -_080105CC: .4byte gBattleCommunication -_080105D0: .4byte gWirelessCommType -_080105D4: - ldr r2, _08010640 @ =gBattleTypeFlags - ldr r1, [r2] - movs r6, 0x2 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _08010658 - ldr r0, _08010644 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080105EC - b _080108B8 -_080105EC: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0801062A - ldr r4, _08010648 @ =gBattleStruct - ldr r0, [r4] - movs r5, 0xC2 - lsls r5, 1 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _0801064C @ =0x00000185 - adds r0, r1 - strb r6, [r0] - bl sub_800FFEC - bl sub_80100B8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl SendBlock - ldr r0, _08010650 @ =gBattleCommunication - strb r6, [r0] -_0801062A: - ldr r0, _08010654 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _08010634 - b _080108B8 -_08010634: - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - b _080108B8 - .align 2, 0 -_08010640: .4byte gBattleTypeFlags -_08010644: .4byte gReceivedRemoteLinkPlayers -_08010648: .4byte gBattleStruct -_0801064C: .4byte 0x00000185 -_08010650: .4byte gBattleCommunication -_08010654: .4byte gWirelessCommType -_08010658: - movs r0, 0x4 - orrs r1, r0 - str r1, [r2] - ldr r1, _0801066C @ =gBattleCommunication - movs r0, 0xF - strb r0, [r1] - bl sub_801017C - b _080108B8 - .align 2, 0 -_0801066C: .4byte gBattleCommunication -_08010670: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0801067E - b _080108B8 -_0801067E: - bl ResetBlockReceivedFlags - movs r0, 0x2 - adds r1, r4, 0 - bl sub_8010414 - bl sub_801017C - ldr r0, _080106E0 @ =sub_800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080106E4 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - movs r1, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r2, 0xA] - movs r0, 0x5A - strh r0, [r2, 0xC] - strh r1, [r2, 0x12] - ldr r0, _080106E8 @ =gBattleStruct - ldr r3, [r0] - movs r4, 0xC3 - lsls r4, 1 - adds r0, r3, r4 - ldrb r1, [r0] - adds r4, 0x1 - adds r0, r3, r4 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - strh r1, [r2, 0xE] - ldr r0, _080106EC @ =gBlockRecvBuffer - lsls r1, r5, 8 - adds r0, 0x2 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r2, 0x10] - bl SetDeoxysStats - ldr r1, _080106F0 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_080106E0: .4byte sub_800F6FC -_080106E4: .4byte gTasks -_080106E8: .4byte gBattleStruct -_080106EC: .4byte gBlockRecvBuffer -_080106F0: .4byte gBattleCommunication -_080106F4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08010700 - b _080108B8 -_08010700: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08010714 @ =gPlayerParty - movs r2, 0xC8 - bl SendBlock - ldr r1, _08010718 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_08010714: .4byte gPlayerParty -_08010718: .4byte gBattleCommunication -_0801071C: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0801072A - b _080108B8 -_0801072A: - bl ResetBlockReceivedFlags - ldr r0, _08010740 @ =gEnemyParty - lsls r1, r5, 8 - ldr r2, _08010744 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, _08010748 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_08010740: .4byte gEnemyParty -_08010744: .4byte gBlockRecvBuffer -_08010748: .4byte gBattleCommunication -_0801074C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08010758 - b _080108B8 -_08010758: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0801076C @ =gUnknown_202434C - movs r2, 0xC8 - bl SendBlock - ldr r1, _08010770 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_0801076C: .4byte gUnknown_202434C -_08010770: .4byte gBattleCommunication -_08010774: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _08010782 - b _080108B8 -_08010782: - bl ResetBlockReceivedFlags - ldr r0, _08010798 @ =gUnknown_20240F4 - lsls r1, r5, 8 - ldr r2, _0801079C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl memcpy - ldr r1, _080107A0 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_08010798: .4byte gUnknown_20240F4 -_0801079C: .4byte gBlockRecvBuffer -_080107A0: .4byte gBattleCommunication -_080107A4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _080107B0 - b _080108B8 -_080107B0: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080107C4 @ =gUnknown_2024414 - movs r2, 0xC8 - bl SendBlock - ldr r1, _080107C8 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_080107C4: .4byte gUnknown_2024414 -_080107C8: .4byte gBattleCommunication -_080107CC: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _080108B8 - bl ResetBlockReceivedFlags - ldr r4, _08010820 @ =gUnknown_20241BC - lsls r1, r5, 8 - ldr r0, _08010824 @ =gBlockRecvBuffer - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - ldr r1, _08010828 @ =0xfffffe70 - adds r0, r4, r1 - bl sub_8011D0C - ldr r1, _0801082C @ =0xfffffed4 - adds r0, r4, r1 - bl sub_8011D0C - adds r0, r4, 0 - subs r0, 0xC8 - bl sub_8011D0C - adds r0, r4, 0 - subs r0, 0x64 - bl sub_8011D0C - adds r0, r4, 0 - bl sub_8011D0C - adds r0, r4, 0 - adds r0, 0x64 - bl sub_8011D0C - ldr r1, _08010830 @ =gBattleCommunication - b _080108B2 - .align 2, 0 -_08010820: .4byte gUnknown_20241BC -_08010824: .4byte gBlockRecvBuffer -_08010828: .4byte 0xfffffe70 -_0801082C: .4byte 0xfffffed4 -_08010830: .4byte gBattleCommunication -_08010834: - bl sub_800D30C - ldr r0, _08010848 @ =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - strb r2, [r0, 0x1] - strb r2, [r0, 0x2] - b _080108B8 - .align 2, 0 -_08010848: .4byte gBattleCommunication -_0801084C: - ldr r0, _08010880 @ =gUnknown_2023E83 - adds r1, r0, 0x1 - bl BattleInitAllSprites - lsls r0, 24 - cmp r0, 0 - beq _080108B8 - ldr r2, _08010884 @ =gPreBattleCallback1 - ldr r1, _08010888 @ =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, _0801088C @ =sub_80123E4 - str r0, [r1] - ldr r0, _08010890 @ =BattleMainCB2 - bl SetMainCallback2 - ldr r2, _08010894 @ =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080108B8 - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] - b _080108B8 - .align 2, 0 -_08010880: .4byte gUnknown_2023E83 -_08010884: .4byte gPreBattleCallback1 -_08010888: .4byte gMain -_0801088C: .4byte sub_80123E4 -_08010890: .4byte BattleMainCB2 -_08010894: .4byte gBattleTypeFlags -_08010898: - ldr r0, _080108C0 @ =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] -_080108A4: - ldr r1, _080108C0 @ =gBattleCommunication - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _080108B8 -_080108B2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080108B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080108C0: .4byte gBattleCommunication - thumb_func_end sub_8010508 - - thumb_func_start sub_80108C4 -sub_80108C4: @ 80108C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r8, r0 - ldr r1, _080109BC @ =gUnknown_2022B58 - mov r9, r1 - movs r0, 0x18 - add r0, r9 - mov r10, r0 -_080108DC: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r0, _080109C0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, r8 - lsls r5, r1, 5 - mov r1, r9 - adds r6, r5, r1 - strh r0, [r6] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r6, 0x2] - mov r0, r9 - adds r0, 0x4 - adds r7, r5, r0 - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r7, 0 - bl GetMonData - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strb r0, [r6, 0xF] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r6, 0x10] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r6, 0x12] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - mov r1, r9 - adds r1, 0x14 - adds r1, r5, r1 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - add r5, r10 - str r0, [r5] - adds r0, r4, 0 - bl GetMonGender - strb r0, [r6, 0x1C] - adds r0, r7, 0 - bl StripExtCtrlCodes - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - mov r4, r8 - adds r4, 0x1 - cmp r0, 0x1 - beq _08010994 - adds r2, r7, 0 - movs r1, 0 - ldrb r0, [r2] - cmp r0, 0xFF - beq _0801097E -_08010974: - adds r1, 0x1 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08010974 -_0801097E: - cmp r1, 0x5 - bgt _0801098E - movs r3, 0 -_08010984: - adds r0, r2, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0x5 - ble _08010984 -_0801098E: - adds r1, r2, r1 - movs r0, 0xFF - strb r0, [r1] -_08010994: - mov r8, r4 - cmp r4, 0x2 - ble _080108DC - ldr r0, _080109C4 @ =gBattleStruct - ldr r0, [r0] - movs r1, 0xC2 - lsls r1, 1 - adds r0, r1 - ldr r1, _080109BC @ =gUnknown_2022B58 - movs r2, 0x60 - bl memcpy - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080109BC: .4byte gUnknown_2022B58 -_080109C0: .4byte gPlayerParty -_080109C4: .4byte gBattleStruct - thumb_func_end sub_80108C4 - - thumb_func_start sub_80109C8 -sub_80109C8: @ 80109C8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _08010A0C @ =gBattleStruct - ldr r0, [r4] - adds r0, 0xB5 - strb r6, [r0] - ldr r0, [r4] - movs r1, 0xB0 - adds r1, r0 - mov r9, r1 - adds r0, 0xAE - mov r8, r0 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, _08010A10 @ =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0x1 - beq _08010A5C - cmp r0, 0x1 - bgt _08010A14 - cmp r0, 0 - beq _08010A20 - b _08010B82 - .align 2, 0 -_08010A0C: .4byte gBattleStruct -_08010A10: .4byte gBattleCommunication -_08010A14: - cmp r0, 0x2 - beq _08010AFC - cmp r0, 0x3 - bne _08010A1E - b _08010B2A -_08010A1E: - b _08010B82 -_08010A20: - ldr r0, _08010A58 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08010A2A - b _08010B82 -_08010A2A: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08010A36 - b _08010B82 -_08010A36: - bl sub_80108C4 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - movs r2, 0xC2 - lsls r2, 1 - adds r1, r2 - movs r2, 0x60 - bl SendBlock - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08010B82 - .align 2, 0 -_08010A58: .4byte gReceivedRemoteLinkPlayers -_08010A5C: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08010A6A - b _08010B82 -_08010A6A: - bl ResetBlockReceivedFlags - movs r4, 0 - lsls r0, r6, 3 - subs r0, r6 - lsls r5, r0, 2 - movs r7, 0 -_08010A78: - cmp r4, r6 - beq _08010ABA - ldr r2, _08010A9C @ =gLinkPlayers - adds r0, r7, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08010AA0 - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010AAC - b _08010ABA - .align 2, 0 -_08010A9C: .4byte gLinkPlayers -_08010AA0: - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010ABA -_08010AAC: - lsls r1, r4, 8 - ldr r0, _08010AE4 @ =gBlockRecvBuffer - adds r1, r0 - ldr r0, _08010AE8 @ =gUnknown_2022B58 - movs r2, 0x60 - bl memcpy -_08010ABA: - adds r7, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _08010A78 - ldr r1, _08010AEC @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _08010AF0 @ =gMain - ldr r0, [r1, 0x8] - mov r2, r9 - str r0, [r2] - ldr r0, _08010AF4 @ =gBattleTypeFlags - ldr r0, [r0] - mov r2, r8 - strh r0, [r2] - ldr r0, _08010AF8 @ =sub_80109C8 - str r0, [r1, 0x8] - bl sub_8128198 - b _08010B82 - .align 2, 0 -_08010AE4: .4byte gBlockRecvBuffer -_08010AE8: .4byte gUnknown_2022B58 -_08010AEC: .4byte gBattleCommunication -_08010AF0: .4byte gMain -_08010AF4: .4byte gBattleTypeFlags -_08010AF8: .4byte sub_80109C8 -_08010AFC: - ldr r0, _08010B1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08010B82 - movs r0, 0x3 - strb r0, [r5] - ldr r0, _08010B20 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08010B24 - bl sub_800AB9C - b _08010B82 - .align 2, 0 -_08010B1C: .4byte gPaletteFade -_08010B20: .4byte gWirelessCommType -_08010B24: - bl sub_800AAC0 - b _08010B82 -_08010B2A: - ldr r0, _08010B54 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08010B64 - bl IsRfuTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08010B82 - ldr r1, _08010B58 @ =gBattleTypeFlags - mov r2, r8 - ldrh r0, [r2] - str r0, [r1] - ldr r1, _08010B5C @ =gMain - mov r2, r9 - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, _08010B60 @ =sub_800FE24 - bl SetMainCallback2 - b _08010B82 - .align 2, 0 -_08010B54: .4byte gWirelessCommType -_08010B58: .4byte gBattleTypeFlags -_08010B5C: .4byte gMain -_08010B60: .4byte sub_800FE24 -_08010B64: - ldr r0, _08010B90 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08010B82 - ldr r1, _08010B94 @ =gBattleTypeFlags - mov r2, r8 - ldrh r0, [r2] - str r0, [r1] - ldr r1, _08010B98 @ =gMain - mov r2, r9 - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, _08010B9C @ =sub_800FE24 - bl SetMainCallback2 -_08010B82: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010B90: .4byte gReceivedRemoteLinkPlayers -_08010B94: .4byte gBattleTypeFlags -_08010B98: .4byte gMain -_08010B9C: .4byte sub_800FE24 - thumb_func_end sub_80109C8 - - thumb_func_start sub_8010BA0 -sub_8010BA0: @ 8010BA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08010BD8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - strb r7, [r0] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _08010BDC @ =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0xC - bls _08010BCC - b _080110F0 -_08010BCC: - lsls r0, 2 - ldr r1, _08010BE0 @ =_08010BE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08010BD8: .4byte gBattleStruct -_08010BDC: .4byte gBattleCommunication -_08010BE0: .4byte _08010BE4 - .align 2, 0 -_08010BE4: - .4byte _08010C18 - .4byte _08010C5C - .4byte _08010CD4 - .4byte _08010DB6 - .4byte _08010DE0 - .4byte _080110D0 - .4byte _080110DC - .4byte _08010ED8 - .4byte _08010F00 - .4byte _080110D0 - .4byte _080110DC - .4byte _0801106C - .4byte _08011084 -_08010C18: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08010C44 - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl sub_80357C8 - ldr r1, _08010C54 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] -_08010C44: - ldr r0, _08010C58 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _08010C4E - b _080110F0 -_08010C4E: - bl LoadWirelessStatusIndicatorSpriteGfx - b _080110F0 - .align 2, 0 -_08010C54: .4byte gBattleCommunication -_08010C58: .4byte gWirelessCommType -_08010C5C: - ldr r0, _08010CC0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08010C66 - b _080110F0 -_08010C66: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08010CAA - ldr r4, _08010CC4 @ =gBattleStruct - ldr r0, [r4] - movs r5, 0xC2 - lsls r5, 1 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - ldr r2, _08010CC8 @ =0x00000185 - adds r1, r0, r2 - movs r0, 0x2 - strb r0, [r1] - bl sub_800FFEC - bl sub_80100B8 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, r5 - movs r2, 0x20 - bl SendBlock - ldr r1, _08010CCC @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08010CAA: - ldr r0, _08010CD0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _08010CB4 - b _080110F0 -_08010CB4: - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - b _080110F0 - .align 2, 0 -_08010CC0: .4byte gReceivedRemoteLinkPlayers -_08010CC4: .4byte gBattleStruct -_08010CC8: .4byte 0x00000185 -_08010CCC: .4byte gBattleCommunication -_08010CD0: .4byte gWirelessCommType -_08010CD4: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08010CE2 - b _080110F0 -_08010CE2: - bl ResetBlockReceivedFlags - movs r0, 0x4 - adds r1, r7, 0 - bl sub_8010414 - bl sub_801017C - bl SetDeoxysStats - ldr r0, _08010D4C @ =gDecompressionBuffer - ldr r1, _08010D50 @ =gPlayerParty - movs r2, 0x96 - lsls r2, 1 - bl memcpy - ldr r0, _08010D54 @ =sub_800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08010D58 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r1, 0xA] - movs r0, 0x5A - strh r0, [r1, 0xC] - strh r2, [r1, 0x12] - strh r2, [r1, 0xE] - strh r2, [r1, 0x10] - adds r2, r1, 0 - ldr r0, _08010D5C @ =gBlockRecvBuffer - adds r3, r0, 0x2 - ldr r5, _08010D60 @ =gLinkPlayers - movs r4, 0x3F - movs r7, 0x80 - lsls r7, 1 - movs r6, 0x3 -_08010D3A: - ldrh r0, [r5, 0x18] - cmp r0, 0x1 - beq _08010D76 - cmp r0, 0x1 - bgt _08010D64 - cmp r0, 0 - beq _08010D6E - b _08010D9C - .align 2, 0 -_08010D4C: .4byte gDecompressionBuffer -_08010D50: .4byte gPlayerParty -_08010D54: .4byte sub_800F6FC -_08010D58: .4byte gTasks -_08010D5C: .4byte gBlockRecvBuffer -_08010D60: .4byte gLinkPlayers -_08010D64: - cmp r0, 0x2 - beq _08010D7E - cmp r0, 0x3 - beq _08010D8E - b _08010D9C -_08010D6E: - ldrh r0, [r3] - adds r1, r4, 0 - ands r1, r0 - b _08010D86 -_08010D76: - ldrh r0, [r3] - adds r1, r4, 0 - ands r1, r0 - b _08010D96 -_08010D7E: - ldrh r0, [r3] - adds r1, r4, 0 - ands r1, r0 - lsls r1, 6 -_08010D86: - ldrh r0, [r2, 0xE] - orrs r1, r0 - strh r1, [r2, 0xE] - b _08010D9C -_08010D8E: - ldrh r0, [r3] - adds r1, r4, 0 - ands r1, r0 - lsls r1, 6 -_08010D96: - ldrh r0, [r2, 0x10] - orrs r1, r0 - strh r1, [r2, 0x10] -_08010D9C: - adds r3, r7 - adds r5, 0x1C - subs r6, 0x1 - cmp r6, 0 - bge _08010D3A - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - ldr r1, _08010DD8 @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08010DB6: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08010DC2 - b _080110F0 -_08010DC2: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08010DDC @ =gDecompressionBuffer - movs r2, 0xC8 - bl SendBlock - ldr r1, _08010DD8 @ =gBattleCommunication - b _080110EA - .align 2, 0 -_08010DD8: .4byte gBattleCommunication -_08010DDC: .4byte gDecompressionBuffer -_08010DE0: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08010DEE - b _080110F0 -_08010DEE: - bl ResetBlockReceivedFlags - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, _08010E18 @ =gBlockRecvBuffer - movs r5, 0 -_08010E00: - cmp r6, r7 - bne _08010E34 - ldr r0, _08010E1C @ =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08010E20 - cmp r0, 0x1 - bge _08010E2C - cmp r0, 0 - beq _08010E24 - b _08010EBE - .align 2, 0 -_08010E18: .4byte gBlockRecvBuffer -_08010E1C: .4byte gLinkPlayers -_08010E20: - cmp r0, 0x3 - bne _08010EBE -_08010E24: - ldr r0, _08010E28 @ =gPlayerParty - b _08010EA4 - .align 2, 0 -_08010E28: .4byte gPlayerParty -_08010E2C: - ldr r0, _08010E30 @ =gUnknown_20243B0 - b _08010EA4 - .align 2, 0 -_08010E30: .4byte gUnknown_20243B0 -_08010E34: - ldr r2, _08010E54 @ =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08010E58 - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010E66 - b _08010E8C - .align 2, 0 -_08010E54: .4byte gLinkPlayers -_08010E58: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010E8C -_08010E66: - adds r0, r5, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _08010E78 - cmp r2, 0x1 - bge _08010E84 - cmp r2, 0 - beq _08010E7C - b _08010EBE -_08010E78: - cmp r2, 0x3 - bne _08010EBE -_08010E7C: - ldr r0, _08010E80 @ =gPlayerParty - b _08010EA4 - .align 2, 0 -_08010E80: .4byte gPlayerParty -_08010E84: - ldr r0, _08010E88 @ =gUnknown_20243B0 - b _08010EA4 - .align 2, 0 -_08010E88: .4byte gUnknown_20243B0 -_08010E8C: - adds r0, r5, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _08010E9E - cmp r2, 0x1 - bge _08010EB4 - cmp r2, 0 - beq _08010EA2 - b _08010EBE -_08010E9E: - cmp r2, 0x3 - bne _08010EBE -_08010EA2: - ldr r0, _08010EB0 @ =gEnemyParty -_08010EA4: - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy - b _08010EBE - .align 2, 0 -_08010EB0: .4byte gEnemyParty -_08010EB4: - ldr r0, _08010ED0 @ =gUnknown_2024158 - adds r1, r4, 0 - movs r2, 0xC8 - bl memcpy -_08010EBE: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08010E00 - ldr r1, _08010ED4 @ =gBattleCommunication - b _080110EA - .align 2, 0 -_08010ED0: .4byte gUnknown_2024158 -_08010ED4: .4byte gBattleCommunication -_08010ED8: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08010EE4 - b _080110F0 -_08010EE4: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08010EF8 @ =gDecompressionBuffer + 0x0C8 - movs r2, 0x64 - bl SendBlock - ldr r1, _08010EFC @ =gBattleCommunication - b _080110EA - .align 2, 0 -_08010EF8: .4byte gDecompressionBuffer + 0x0C8 -_08010EFC: .4byte gBattleCommunication -_08010F00: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _08010F0E - b _080110F0 -_08010F0E: - bl ResetBlockReceivedFlags - movs r6, 0 - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, _08010F38 @ =gBlockRecvBuffer - movs r5, 0 -_08010F20: - cmp r6, r7 - bne _08010F54 - ldr r0, _08010F3C @ =gLinkPlayers - adds r0, r5, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _08010F40 - cmp r0, 0x1 - bge _08010F4C - cmp r0, 0 - beq _08010F44 - b _08010FDE - .align 2, 0 -_08010F38: .4byte gBlockRecvBuffer -_08010F3C: .4byte gLinkPlayers -_08010F40: - cmp r0, 0x3 - bne _08010FDE -_08010F44: - ldr r0, _08010F48 @ =gUnknown_202434C - b _08010FC4 - .align 2, 0 -_08010F48: .4byte gUnknown_202434C -_08010F4C: - ldr r0, _08010F50 @ =gUnknown_2024478 - b _08010FC4 - .align 2, 0 -_08010F50: .4byte gUnknown_2024478 -_08010F54: - ldr r2, _08010F74 @ =gLinkPlayers - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08010F78 - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010F86 - b _08010FAC - .align 2, 0 -_08010F74: .4byte gLinkPlayers -_08010F78: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08010FAC -_08010F86: - adds r0, r5, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _08010F98 - cmp r2, 0x1 - bge _08010FA4 - cmp r2, 0 - beq _08010F9C - b _08010FDE -_08010F98: - cmp r2, 0x3 - bne _08010FDE -_08010F9C: - ldr r0, _08010FA0 @ =gUnknown_202434C - b _08010FC4 - .align 2, 0 -_08010FA0: .4byte gUnknown_202434C -_08010FA4: - ldr r0, _08010FA8 @ =gUnknown_2024478 - b _08010FC4 - .align 2, 0 -_08010FA8: .4byte gUnknown_2024478 -_08010FAC: - adds r0, r5, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _08010FBE - cmp r2, 0x1 - bge _08010FD4 - cmp r2, 0 - beq _08010FC2 - b _08010FDE -_08010FBE: - cmp r2, 0x3 - bne _08010FDE -_08010FC2: - ldr r0, _08010FD0 @ =gUnknown_20240F4 -_08010FC4: - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - b _08010FDE - .align 2, 0 -_08010FD0: .4byte gUnknown_20240F4 -_08010FD4: - ldr r0, _0801105C @ =gUnknown_2024220 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy -_08010FDE: - movs r2, 0x80 - lsls r2, 1 - adds r4, r2 - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08010F20 - ldr r4, _08011060 @ =gPlayerParty - adds r0, r4, 0 - bl sub_8011D0C - adds r0, r4, 0 - adds r0, 0x64 - bl sub_8011D0C - adds r0, r4, 0 - adds r0, 0xC8 - bl sub_8011D0C - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl sub_8011D0C - movs r2, 0xC8 - lsls r2, 1 - adds r0, r4, r2 - bl sub_8011D0C - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl sub_8011D0C - ldr r4, _08011064 @ =gEnemyParty - adds r0, r4, 0 - bl sub_8011D0C - adds r0, r4, 0 - adds r0, 0x64 - bl sub_8011D0C - adds r0, r4, 0 - adds r0, 0xC8 - bl sub_8011D0C - movs r2, 0x96 - lsls r2, 1 - adds r0, r4, r2 - bl sub_8011D0C - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl sub_8011D0C - movs r2, 0xFA - lsls r2, 1 - adds r0, r4, r2 - bl sub_8011D0C - ldr r1, _08011068 @ =gBattleCommunication - b _080110EA - .align 2, 0 -_0801105C: .4byte gUnknown_2024220 -_08011060: .4byte gPlayerParty -_08011064: .4byte gEnemyParty -_08011068: .4byte gBattleCommunication -_0801106C: - bl sub_800D30C - ldr r0, _08011080 @ =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - strb r2, [r0, 0x1] - strb r2, [r0, 0x2] - b _080110F0 - .align 2, 0 -_08011080: .4byte gBattleCommunication -_08011084: - ldr r0, _080110B8 @ =gUnknown_2023E83 - adds r1, r0, 0x1 - bl BattleInitAllSprites - lsls r0, 24 - cmp r0, 0 - beq _080110F0 - ldr r2, _080110BC @ =gPreBattleCallback1 - ldr r1, _080110C0 @ =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, _080110C4 @ =sub_80123E4 - str r0, [r1] - ldr r0, _080110C8 @ =BattleMainCB2 - bl SetMainCallback2 - ldr r2, _080110CC @ =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080110F0 - movs r0, 0x20 - orrs r1, r0 - str r1, [r2] - b _080110F0 - .align 2, 0 -_080110B8: .4byte gUnknown_2023E83 -_080110BC: .4byte gPreBattleCallback1 -_080110C0: .4byte gMain -_080110C4: .4byte sub_80123E4 -_080110C8: .4byte BattleMainCB2 -_080110CC: .4byte gBattleTypeFlags -_080110D0: - ldr r0, _080110FC @ =gBattleCommunication - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] -_080110DC: - ldr r1, _080110FC @ =gBattleCommunication - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - cmp r0, 0 - bne _080110F0 -_080110EA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080110F0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080110FC: .4byte gBattleCommunication - thumb_func_end sub_8010BA0 - - thumb_func_start BattleMainCB2 -BattleMainCB2: @ 8011100 - push {lr} - sub sp, 0x4 - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - ldr r0, _08011160 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08011158 - ldr r0, _08011164 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _08011158 - ldr r2, _08011168 @ =gSpecialVar_Result - ldr r1, _0801116C @ =gBattleOutcome - movs r0, 0x3 - strb r0, [r1] - movs r0, 0x3 - strh r0, [r2] - bl ResetPaletteFadeControl - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08011170 @ =CB2_QuitRecordedBattle - bl SetMainCallback2 -_08011158: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08011160: .4byte gMain -_08011164: .4byte gBattleTypeFlags -_08011168: .4byte gSpecialVar_Result -_0801116C: .4byte gBattleOutcome -_08011170: .4byte CB2_QuitRecordedBattle - thumb_func_end BattleMainCB2 - - thumb_func_start FreeRestoreBattleData -FreeRestoreBattleData: @ 8011174 - push {lr} - ldr r1, _080111AC @ =gMain - ldr r0, _080111B0 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r1] - ldr r2, _080111B4 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r2, 0x15] - ldr r0, _080111B8 @ =0x00000439 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl ZeroEnemyPartyMons - movs r0, 0x53 - bl m4aSongNumStop - bl FreeMonSpritesGfx - bl FreeBattleSpritesData - bl FreeBattleResources - pop {r0} - bx r0 - .align 2, 0 -_080111AC: .4byte gMain -_080111B0: .4byte gPreBattleCallback1 -_080111B4: .4byte gScanlineEffect -_080111B8: .4byte 0x00000439 - thumb_func_end FreeRestoreBattleData - - thumb_func_start CB2_QuitRecordedBattle -CB2_QuitRecordedBattle: @ 80111BC - push {lr} - bl UpdatePaletteFade - ldr r0, _080111E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080111DE - bl FreeRestoreBattleData - bl FreeAllWindowBuffers - ldr r0, _080111E8 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_080111DE: - pop {r0} - bx r0 - .align 2, 0 -_080111E4: .4byte gPaletteFade -_080111E8: .4byte gMain - thumb_func_end CB2_QuitRecordedBattle - - thumb_func_start sub_80111EC -sub_80111EC: @ 80111EC - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _080111F8 @ =sub_80111FC - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080111F8: .4byte sub_80111FC - thumb_func_end sub_80111EC - - thumb_func_start sub_80111FC -sub_80111FC: @ 80111FC - push {r4-r7,lr} - adds r5, r0, 0 - movs r0, 0x2E - ldrsh r6, [r5, r0] - cmp r6, 0x1 - beq _08011236 - cmp r6, 0x1 - bgt _08011212 - cmp r6, 0 - beq _08011218 - b _080112D0 -_08011212: - cmp r6, 0x2 - beq _080112A0 - b _080112D0 -_08011218: - ldr r4, _08011298 @ =gUnknown_2022BC0 - movs r0, 0x80 - lsls r0, 5 - bl AllocZeroed - str r0, [r4] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - strh r6, [r5, 0x30] - ldr r0, _0801129C @ =0x00000281 - strh r0, [r5, 0x32] - strh r6, [r5, 0x34] - movs r0, 0x1 - strh r0, [r5, 0x36] -_08011236: - ldrh r0, [r5, 0x36] - subs r0, 0x1 - strh r0, [r5, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _080112D0 - movs r0, 0x2 - strh r0, [r5, 0x36] - movs r1, 0x30 - ldrsh r2, [r5, r1] - movs r3, 0x34 - ldrsh r0, [r5, r3] - lsls r0, 5 - adds r2, r0 - movs r3, 0x32 - ldrsh r1, [r5, r3] - subs r1, r0 - movs r3, 0 - ldr r0, _08011298 @ =gUnknown_2022BC0 - mov r12, r0 - lsls r7, r2, 1 - movs r4, 0x3D - lsls r6, r1, 1 -_08011264: - mov r1, r12 - ldr r0, [r1] - lsls r2, r3, 1 - adds r1, r7, r0 - adds r1, r2, r1 - strh r4, [r1] - adds r0, r6, r0 - adds r2, r0 - strh r4, [r2] - adds r3, 0x2 - cmp r3, 0x1D - ble _08011264 - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080112D0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r0, 0x20 - strh r0, [r5, 0x30] - b _080112D0 - .align 2, 0 -_08011298: .4byte gUnknown_2022BC0 -_0801129C: .4byte 0x00000281 -_080112A0: - ldrh r0, [r5, 0x30] - subs r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080112D0 - ldr r4, _080112D8 @ =gUnknown_2022BC0 - ldr r0, [r4] - cmp r0, 0 - beq _080112CA - movs r2, 0x80 - lsls r2, 5 - movs r1, 0 - bl memset - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_080112CA: - ldr r0, _080112DC @ =sub_800FD9C - bl SetMainCallback2 -_080112D0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080112D8: .4byte gUnknown_2022BC0 -_080112DC: .4byte sub_800FD9C - thumb_func_end sub_80111FC - - thumb_func_start sub_80112E0 -sub_80112E0: @ 80112E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x10] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - movs r0, 0 - mov r9, r0 - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08011304 - movs r0, 0 - b _080116AC -_08011304: - ldr r0, _08011334 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08011338 @ =0x00080908 - ands r0, r1 - ldr r1, [sp, 0x14] - lsls r1, 2 - str r1, [sp, 0x20] - cmp r0, 0x8 - beq _08011318 - b _0801169C -_08011318: - bl ZeroEnemyPartyMons - movs r2, 0 - str r2, [sp, 0x18] - ldr r2, _0801133C @ =gTrainers - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - adds r0, 0x20 - ldr r4, [sp, 0x18] - b _0801167E - .align 2, 0 -_08011334: .4byte gBattleTypeFlags -_08011338: .4byte 0x00080908 -_0801133C: .4byte gTrainers -_08011340: - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r1, r0, r2 - ldrb r0, [r1, 0x18] - cmp r0, 0x1 - bne _08011354 - movs r4, 0x80 - mov r10, r4 - b _08011366 -_08011354: - ldrb r1, [r1, 0x2] - movs r0, 0x80 - ands r0, r1 - movs r1, 0x88 - mov r10, r1 - cmp r0, 0 - beq _08011366 - movs r2, 0x78 - mov r10, r2 -_08011366: - movs r6, 0 - ldr r0, _080113BC @ =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r3, r0, 0x4 - adds r1, r3 - ldrb r1, [r1] - adds r4, r0, 0 - ldr r0, [sp, 0x18] - adds r0, 0x1 - str r0, [sp, 0x1C] - cmp r1, 0xFF - beq _0801139E -_08011384: - ldr r0, [sp, 0x14] - adds r1, r2, r0 - lsls r1, 3 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08011384 -_0801139E: - adds r2, r4, 0 - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r1, r0, 3 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08011454 - cmp r0, 0x1 - bgt _080113C0 - cmp r0, 0 - beq _080113CE - b _0801166C - .align 2, 0 -_080113BC: .4byte gTrainers -_080113C0: - cmp r0, 0x2 - bne _080113C6 - b _08011514 -_080113C6: - cmp r0, 0x3 - bne _080113CC - b _080115A8 -_080113CC: - b _0801166C -_080113CE: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _08011450 @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08011410 - adds r3, r1, 0 - movs r7, 0xB -_080113F4: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080113F4 -_08011410: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r1, 0x64 - adds r0, r3, 0 - muls r0, r1 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r3, 0x1 - str r3, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r3, 0x2 - str r3, [sp, 0x8] - movs r3, 0 - str r3, [sp, 0xC] - adds r3, r6, 0 - bl CreateMon - b _0801166C - .align 2, 0 -_08011450: .4byte gSpeciesNames -_08011454: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _0801150C @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _08011496 - adds r3, r1, 0 - movs r4, 0xB -_0801147A: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0801147A -_08011496: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r4, r3, r7 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r2, [sp, 0x10] - adds r5, r2, r5 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r5, 0 - adds r3, r6, 0 - bl CreateMon - movs r6, 0 - mov r0, r8 - adds r0, 0x6 - adds r4, r7, r0 -_080114E0: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, _08011510 @ =gBattleMoves+0x4 - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080114E0 - b _0801166C - .align 2, 0 -_0801150C: .4byte gSpeciesNames -_08011510: .4byte gBattleMoves+0x4 -_08011514: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _080115A4 @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _08011556 - adds r3, r1, 0 - movs r7, 0xB -_0801153A: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0801153A -_08011556: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r5, r4 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r1, [sp, 0x10] - adds r4, r1, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - b _0801166C - .align 2, 0 -_080115A4: .4byte gSpeciesNames -_080115A8: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _080116BC @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _080115EA - adds r3, r1, 0 - movs r4, 0xB -_080115CE: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080115CE -_080115EA: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r5, r3, r7 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r2, [sp, 0x10] - adds r4, r2, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - movs r6, 0 - adds r5, r4, 0 - mov r0, r8 - adds r0, 0x8 - adds r4, r7, r0 -_08011642: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, _080116C0 @ =gBattleMoves+0x4 - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08011642 -_0801166C: - ldr r4, [sp, 0x1C] - str r4, [sp, 0x18] - ldr r2, _080116C4 @ =gTrainers - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - adds r0, 0x20 -_0801167E: - ldrb r0, [r0] - cmp r4, r0 - bge _08011686 - b _08011340 -_08011686: - ldr r2, _080116C8 @ =gBattleTypeFlags - ldr r1, _080116C4 @ =gTrainers - ldr r4, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r4, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x18] - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] -_0801169C: - ldr r0, _080116C4 @ =gTrainers - ldr r4, [sp, 0x20] - ldr r2, [sp, 0x14] - adds r1, r4, r2 - lsls r1, 3 - adds r1, r0 - adds r1, 0x20 - ldrb r0, [r1] -_080116AC: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080116BC: .4byte gSpeciesNames -_080116C0: .4byte gBattleMoves+0x4 -_080116C4: .4byte gTrainers -_080116C8: .4byte gBattleTypeFlags - thumb_func_end sub_80112E0 - - thumb_func_start sub_80116CC -sub_80116CC: @ 80116CC - push {lr} - ldr r0, _080116EC @ =0x04000006 - ldrh r0, [r0] - subs r0, 0x6F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x30 - bhi _080116E6 - ldr r1, _080116F0 @ =0x04000008 - movs r2, 0x98 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] -_080116E6: - pop {r0} - bx r0 - .align 2, 0 -_080116EC: .4byte 0x04000006 -_080116F0: .4byte 0x04000008 - thumb_func_end sub_80116CC - - thumb_func_start VBlankCB_Battle -VBlankCB_Battle: @ 80116F4 - push {lr} - bl Random - ldr r0, _08011788 @ =gBattle_BG0_X - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, _0801178C @ =gBattle_BG0_Y - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, _08011790 @ =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, _08011794 @ =gBattle_BG1_Y - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, _08011798 @ =gBattle_BG2_X - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, _0801179C @ =gBattle_BG2_Y - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, _080117A0 @ =gBattle_BG3_X - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, _080117A4 @ =gBattle_BG3_Y - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - ldr r0, _080117A8 @ =gBattle_WIN0H - ldrh r1, [r0] - movs r0, 0x40 - bl SetGpuReg - ldr r0, _080117AC @ =gBattle_WIN0V - ldrh r1, [r0] - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080117B0 @ =gUnknown_2022988 - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, _080117B4 @ =gUnknown_202298A - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - pop {r0} - bx r0 - .align 2, 0 -_08011788: .4byte gBattle_BG0_X -_0801178C: .4byte gBattle_BG0_Y -_08011790: .4byte gBattle_BG1_X -_08011794: .4byte gBattle_BG1_Y -_08011798: .4byte gBattle_BG2_X -_0801179C: .4byte gBattle_BG2_Y -_080117A0: .4byte gBattle_BG3_X -_080117A4: .4byte gBattle_BG3_Y -_080117A8: .4byte gBattle_WIN0H -_080117AC: .4byte gBattle_WIN0V -_080117B0: .4byte gUnknown_2022988 -_080117B4: .4byte gUnknown_202298A - thumb_func_end VBlankCB_Battle - - thumb_func_start nullsub_9 -nullsub_9: @ 80117B8 - bx lr - thumb_func_end nullsub_9 - - thumb_func_start sub_80117BC -sub_80117BC: @ 80117BC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080117DC - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - lsrs r0, 8 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x20] - b _080117EE -_080117DC: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - asrs r0, 8 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x20] -_080117EE: - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08011822 - ldr r4, _08011828 @ =0x00002710 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl FreeSpriteOamMatrix - adds r0, r5, 0 - bl DestroySprite -_08011822: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08011828: .4byte 0x00002710 - thumb_func_end sub_80117BC - - thumb_func_start sub_801182C -sub_801182C: @ 801182C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _08011848 @ =sub_80117BC - str r0, [r4, 0x1C] - movs r0, 0x61 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011848: .4byte sub_80117BC - thumb_func_end sub_801182C - - thumb_func_start sub_801184C -sub_801184C: @ 801184C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - ldr r0, _08011894 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - ldrb r2, [r0] - ldr r0, _08011898 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080118BC - ldr r1, _0801189C @ =gLinkPlayers - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _080118A8 - cmp r0, 0x1 - bgt _080118A0 - cmp r0, 0 - beq _080118BC - b _080118C4 - .align 2, 0 -_08011894: .4byte gBattleStruct -_08011898: .4byte gBattleTypeFlags -_0801189C: .4byte gLinkPlayers -_080118A0: - cmp r0, 0x2 - beq _080118BC - cmp r0, 0x3 - bne _080118C4 -_080118A8: - ldr r0, _080118B4 @ =gEnemyParty - str r0, [sp, 0x4] - ldr r1, _080118B8 @ =gPlayerParty - str r1, [sp, 0x8] - b _080118C4 - .align 2, 0 -_080118B4: .4byte gEnemyParty -_080118B8: .4byte gPlayerParty -_080118BC: - ldr r2, _08011A10 @ =gPlayerParty - str r2, [sp, 0x4] - ldr r3, _08011A14 @ =gEnemyParty - str r3, [sp, 0x8] -_080118C4: - movs r7, 0 - movs r0, 0 - mov r8, r0 - ldr r1, [sp] - lsls r1, 2 - str r1, [sp, 0xC] - movs r2, 0xCE - lsls r2, 1 - mov r10, r2 - mov r9, r0 -_080118D8: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r3, [sp, 0x4] - adds r4, r3, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _08011948 - cmp r5, r10 - beq _0801191C - cmp r6, 0 - beq _0801191C - cmp r1, 0 - bne _0801191C - movs r0, 0x1 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_0801191C: - cmp r5, 0 - beq _08011948 - cmp r6, 0 - beq _08011934 - cmp r5, r10 - beq _0801192C - cmp r1, 0 - beq _08011934 -_0801192C: - movs r0, 0x2 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_08011934: - cmp r5, 0 - beq _08011948 - cmp r5, r10 - beq _08011948 - cmp r6, 0 - bne _08011948 - movs r0, 0x3 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_08011948: - movs r2, 0x2 - add r9, r2 - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0x5 - ble _080118D8 - ldr r1, _08011A18 @ =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0xE] - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r1, 0xCE - lsls r1, 1 - mov r10, r1 - mov r9, r0 -_08011972: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r2, [sp, 0x8] - adds r4, r2, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _080119E2 - cmp r5, r10 - beq _080119B6 - cmp r6, 0 - beq _080119B6 - cmp r1, 0 - bne _080119B6 - movs r0, 0x1 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_080119B6: - cmp r5, 0 - beq _080119E2 - cmp r6, 0 - beq _080119CE - cmp r5, r10 - beq _080119C6 - cmp r1, 0 - beq _080119CE -_080119C6: - movs r0, 0x2 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_080119CE: - cmp r5, 0 - beq _080119E2 - cmp r5, r10 - beq _080119E2 - cmp r6, 0 - bne _080119E2 - movs r0, 0x3 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_080119E2: - movs r3, 0x2 - add r9, r3 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x5 - ble _08011972 - ldr r1, _08011A18 @ =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x10] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011A10: .4byte gPlayerParty -_08011A14: .4byte gEnemyParty -_08011A18: .4byte gTasks - thumb_func_end sub_801184C - - thumb_func_start sub_8011A1C -sub_8011A1C: @ 8011A1C - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08011B40 @ =0x05006000 - mov r0, sp - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r4, _08011B44 @ =0x00005051 - movs r0, 0x44 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - ldr r1, _08011B48 @ =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r0, _08011B4C @ =gBattle_WIN0V - strh r4, [r0] - bl ScanlineEffect_Clear - ldr r0, _08011B50 @ =gScanlineEffectRegBuffers - movs r3, 0xF0 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r0, r1 - movs r1, 0x4F -_08011A80: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08011A80 - movs r1, 0x50 - ldr r0, _08011B50 @ =gScanlineEffectRegBuffers - ldr r3, _08011B54 @ =0x0000ff10 - movs r4, 0x82 - lsls r4, 4 - adds r2, r0, r4 - adds r0, 0xA0 -_08011A9C: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _08011A9C - bl ResetPaletteFade - ldr r0, _08011B58 @ =gBattle_BG0_X - movs r4, 0 - strh r4, [r0] - ldr r0, _08011B5C @ =gBattle_BG0_Y - strh r4, [r0] - ldr r0, _08011B60 @ =gBattle_BG1_X - strh r4, [r0] - ldr r0, _08011B64 @ =gBattle_BG1_Y - strh r4, [r0] - ldr r0, _08011B68 @ =gBattle_BG2_X - strh r4, [r0] - ldr r0, _08011B6C @ =gBattle_BG2_Y - strh r4, [r0] - ldr r0, _08011B70 @ =gBattle_BG3_X - strh r4, [r0] - ldr r0, _08011B74 @ =gBattle_BG3_Y - strh r4, [r0] - bl sub_800F34C - ldr r0, _08011B78 @ =gBattleTextboxPalette - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - bl sub_800F380 - bl ResetSpriteData - bl ResetTasks - bl sub_800FAE0 - movs r0, 0x4A - movs r1, 0x37 - bl SetGpuReg - bl FreeAllSpritePalettes - ldr r1, _08011B7C @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _08011B80 @ =VBlankCB_Battle - bl SetVBlankCallback - ldr r0, _08011B84 @ =sub_800F6FC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08011B88 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x87 - lsls r2, 1 - strh r2, [r1, 0xA] - movs r2, 0x5A - strh r2, [r1, 0xC] - movs r2, 0x1 - strh r2, [r1, 0x12] - bl sub_801184C - ldr r0, _08011B8C @ =sub_8011B94 - bl SetMainCallback2 - ldr r0, _08011B90 @ =gBattleCommunication - strb r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011B40: .4byte 0x05006000 -_08011B44: .4byte 0x00005051 -_08011B48: .4byte gBattle_WIN0H -_08011B4C: .4byte gBattle_WIN0V -_08011B50: .4byte gScanlineEffectRegBuffers -_08011B54: .4byte 0x0000ff10 -_08011B58: .4byte gBattle_BG0_X -_08011B5C: .4byte gBattle_BG0_Y -_08011B60: .4byte gBattle_BG1_X -_08011B64: .4byte gBattle_BG1_Y -_08011B68: .4byte gBattle_BG2_X -_08011B6C: .4byte gBattle_BG2_Y -_08011B70: .4byte gBattle_BG3_X -_08011B74: .4byte gBattle_BG3_Y -_08011B78: .4byte gBattleTextboxPalette -_08011B7C: .4byte gReservedSpritePaletteCount -_08011B80: .4byte VBlankCB_Battle -_08011B84: .4byte sub_800F6FC -_08011B88: .4byte gTasks -_08011B8C: .4byte sub_8011B94 -_08011B90: .4byte gBattleCommunication - thumb_func_end sub_8011A1C - - thumb_func_start sub_8011B94 -sub_8011B94: @ 8011B94 - push {lr} - bl sub_8011BB0 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_8011B94 - - thumb_func_start sub_8011BB0 -sub_8011BB0: @ 8011BB0 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08011BC8 @ =gBattleCommunication - ldrb r0, [r4] - cmp r0, 0x1 - beq _08011BEA - cmp r0, 0x1 - bgt _08011BCC - cmp r0, 0 - beq _08011BD2 - b _08011C34 - .align 2, 0 -_08011BC8: .4byte gBattleCommunication -_08011BCC: - cmp r0, 0x2 - beq _08011C10 - b _08011C34 -_08011BD2: - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0xFF - strb r0, [r4, 0x1] - b _08011C08 -_08011BEA: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08011C34 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08011C08: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08011C34 -_08011C10: - ldr r0, _08011C3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08011C34 - ldr r0, _08011C40 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl sub_812C224 - bl FreeMonSpritesGfx - bl FreeBattleSpritesData - bl FreeBattleResources -_08011C34: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011C3C: .4byte gPaletteFade -_08011C40: .4byte gMain - thumb_func_end sub_8011BB0 - - thumb_func_start sub_8011C44 -sub_8011C44: @ 8011C44 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - cmp r1, 0x6 - bhi _08011D04 - lsls r0, r1, 2 - ldr r1, _08011C60 @ =_08011C64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08011C60: .4byte _08011C64 - .align 2, 0 -_08011C64: - .4byte _08011C80 - .4byte _08011C94 - .4byte _08011CA8 - .4byte _08011CBC - .4byte _08011CD0 - .4byte _08011CE4 - .4byte _08011CF8 -_08011C80: - ldr r0, _08011C90 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - lsrs r0, 30 - b _08011D04 - .align 2, 0 -_08011C90: .4byte gUnknown_8248320 -_08011C94: - ldr r0, _08011CA4 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - lsrs r0, 30 - b _08011D04 - .align 2, 0 -_08011CA4: .4byte gUnknown_8248320 -_08011CA8: - ldr r0, _08011CB8 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrh r0, [r1] - lsls r0, 23 - lsrs r0, 27 - b _08011D04 - .align 2, 0 -_08011CB8: .4byte gUnknown_8248320 -_08011CBC: - ldr r0, _08011CCC @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 29 - lsrs r0, 30 - b _08011D04 - .align 2, 0 -_08011CCC: .4byte gUnknown_8248320 -_08011CD0: - ldr r0, _08011CE0 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 28 - lsrs r0, 31 - b _08011D04 - .align 2, 0 -_08011CE0: .4byte gUnknown_8248320 -_08011CE4: - ldr r0, _08011CF4 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 26 - lsrs r0, 30 - b _08011D04 - .align 2, 0 -_08011CF4: .4byte gUnknown_8248320 -_08011CF8: - ldr r0, _08011D08 @ =gUnknown_8248320 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - lsls r0, 8 - lsrs r0, 22 -_08011D04: - pop {r1} - bx r1 - .align 2, 0 -_08011D08: .4byte gUnknown_8248320 - thumb_func_end sub_8011C44 - - thumb_func_start sub_8011D0C -sub_8011D0C: @ 8011D0C - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - add r5, sp, 0xC - movs r0, 0x1 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _08011D5C @ =0x0000012f - cmp r0, r1 - bne _08011D54 - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - ldrb r1, [r5] - cmp r0, r1 - beq _08011D54 - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r1, _08011D60 @ =gUnknown_824F008 - mov r0, sp - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _08011D54 - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl SetMonData -_08011D54: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08011D5C: .4byte 0x0000012f -_08011D60: .4byte gUnknown_824F008 - thumb_func_end sub_8011D0C - - thumb_func_start oac_poke_opponent -oac_poke_opponent: @ 8011D64 - push {lr} - sub sp, 0x4 - ldr r1, _08011D8C @ =sub_8011D94 - str r1, [r0, 0x1C] - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, _08011D90 @ =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0xA - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08011D8C: .4byte sub_8011D94 -_08011D90: .4byte 0x00002108 - thumb_func_end oac_poke_opponent - - thumb_func_start sub_8011D94 -sub_8011D94: @ 8011D94 - push {lr} - adds r2, r0, 0 - ldr r0, _08011DC0 @ =gIntroSlideFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08011DBC - ldrh r0, [r2, 0x24] - adds r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _08011DBC - ldr r0, _08011DC4 @ =sub_8011DC8 - str r0, [r2, 0x1C] - ldrh r0, [r2, 0x32] - movs r1, 0x19 - bl PlayCry1 -_08011DBC: - pop {r0} - bx r0 - .align 2, 0 -_08011DC0: .4byte gIntroSlideFlags -_08011DC4: .4byte sub_8011DC8 - thumb_func_end sub_8011D94 - - thumb_func_start sub_8011DC8 -sub_8011DC8: @ 8011DC8 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08011E10 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_804BD94 - ldr r1, _08011E18 @ =gHealthboxSpriteIds - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _08011E1C @ =nullsub_10 - str r0, [r4, 0x1C] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, _08011E20 @ =0x00002108 - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0 - bl BeginNormalPaletteFade -_08011E10: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011E18: .4byte gHealthboxSpriteIds -_08011E1C: .4byte nullsub_10 -_08011E20: .4byte 0x00002108 - thumb_func_end sub_8011DC8 - - thumb_func_start nullsub_10 -nullsub_10: @ 8011E24 - bx lr - thumb_func_end nullsub_10 - - thumb_func_start sub_8011E28 -sub_8011E28: @ 8011E28 - movs r1, 0x6 - strh r1, [r0, 0x34] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r1, _08011E38 @ =sub_8011E3C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_08011E38: .4byte sub_8011E3C - thumb_func_end sub_8011E28 - - thumb_func_start sub_8011E3C -sub_8011E3C: @ 8011E3C - push {r4,lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08011E90 - movs r0, 0x8 - strh r0, [r3, 0x36] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r4, 0x5 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _08011E90 - ldrb r1, [r1] - adds r0, r4, 0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, _08011E98 @ =nullsub_10 - str r0, [r3, 0x1C] - ldr r0, _08011E9C @ =gUnknown_2022AE8 - str r2, [r0] -_08011E90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011E98: .4byte nullsub_10 -_08011E9C: .4byte gUnknown_2022AE8 - thumb_func_end sub_8011E3C - - thumb_func_start SpriteCB_FaintOpponentMon -SpriteCB_FaintOpponentMon: @ 8011EA0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08011EC4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _08011EC8 - adds r4, r0, 0 - b _08011ECC - .align 2, 0 -_08011EC4: .4byte gBattleSpritesDataPtr -_08011EC8: - mov r0, r9 - ldrh r4, [r0, 0x32] -_08011ECC: - ldr r1, _08011F34 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r5, r0, r1 - ldrh r0, [r5] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _08011F38 @ =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - cmp r4, 0xC9 - bne _08011F50 - ldrh r0, [r5] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08011F3C - movs r0, 0xC9 - b _08011F46 - .align 2, 0 -_08011F34: .4byte gBattlerPartyIndexes -_08011F38: .4byte gEnemyParty -_08011F3C: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08011F46: - ldr r1, _08011F4C @ =gMonFrontPicCoords - lsls r0, 2 - b _08011F88 - .align 2, 0 -_08011F4C: .4byte gMonFrontPicCoords -_08011F50: - ldr r0, _08011F68 @ =0x00000181 @ SPECIES_CASTFORM - cmp r4, r0 - bne _08011F74 - ldr r0, _08011F6C @ =gCastformFrontSpriteCoords - ldr r1, _08011F70 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _08011F8C - .align 2, 0 -_08011F68: .4byte 0x00000181 -_08011F6C: .4byte gCastformFrontSpriteCoords -_08011F70: .4byte gBattleMonForms -_08011F74: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08011F84 - ldr r0, _08011F80 @ =gMonFrontPicCoords - b _08011F8A - .align 2, 0 -_08011F80: .4byte gMonFrontPicCoords -_08011F84: - ldr r1, _08011FAC @ =gMonFrontPicCoords - lsls r0, r4, 2 -_08011F88: - adds r0, r1 -_08011F8A: - ldrb r0, [r0, 0x1] -_08011F8C: - lsrs r1, r0, 3 - movs r0, 0x8 - subs r0, r1 - mov r1, r9 - strh r0, [r1, 0x34] - movs r0, 0x1 - strh r0, [r1, 0x36] - ldr r0, _08011FB0 @ =sub_8011FB4 - str r0, [r1, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011FAC: .4byte gMonFrontPicCoords -_08011FB0: .4byte sub_8011FB4 - thumb_func_end SpriteCB_FaintOpponentMon - - thumb_func_start sub_8011FB4 -sub_8011FB4: @ 8011FB4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - subs r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08012034 - movs r0, 0x2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x26] - adds r0, 0x8 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bge _08011FE8 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _08012034 -_08011FE8: - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - ldr r1, _0801203C @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r1, 0x4 - adds r1, r0 - ldr r2, _08012040 @ =gBattleMonForms - movs r3, 0x2E - ldrsh r0, [r4, r3] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 11 - ldr r1, [r1] - adds r1, r0 - movs r2, 0x34 - ldrsh r0, [r4, r2] - lsls r0, 8 - adds r1, r0 - movs r2, 0 - movs r0, 0xFF -_0801201A: - strb r2, [r1] - adds r1, 0x1 - subs r0, 0x1 - cmp r0, 0 - bge _0801201A - ldr r0, _08012040 @ =gBattleMonForms - movs r3, 0x2E - ldrsh r1, [r4, r3] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - bl StartSpriteAnim -_08012034: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801203C: .4byte gMonSpritesGfxPtr -_08012040: .4byte gBattleMonForms - thumb_func_end sub_8011FB4 - - thumb_func_start sub_8012044 -sub_8012044: @ 8012044 - movs r1, 0x8 - strh r1, [r0, 0x34] - adds r1, r0, 0 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r0, 0x36] - ldr r1, _0801205C @ =sub_8012060 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0801205C: .4byte sub_8012060 - thumb_func_end sub_8012044 - - thumb_func_start sub_8012060 -sub_8012060: @ 8012060 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _08012092 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r0, 0x8 - strh r0, [r3, 0x34] -_08012092: - pop {r0} - bx r0 - thumb_func_end sub_8012060 - - thumb_func_start sub_8012098 -sub_8012098: @ 8012098 - movs r1, 0x3E - adds r1, r0 - mov r12, r1 - movs r1, 0x1 - ldrh r2, [r0, 0x36] - ands r2, r1 - lsls r2, 2 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0 - strh r1, [r0, 0x36] - ldr r1, _080120C0 @ =nullsub_10 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080120C0: .4byte nullsub_10 - thumb_func_end sub_8012098 - - thumb_func_start sub_80120C4 -sub_80120C4: @ 80120C4 - ldr r1, _080120CC @ =oac_poke_ally_ - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080120CC: .4byte oac_poke_ally_ - thumb_func_end sub_80120C4 - - thumb_func_start oac_poke_ally_ -oac_poke_ally_: @ 80120D0 - push {lr} - adds r2, r0, 0 - ldr r0, _080120F8 @ =gIntroSlideFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080120F4 - ldrh r0, [r2, 0x24] - subs r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080120F4 - ldr r0, _080120FC @ =nullsub_11 - str r0, [r2, 0x1C] - strh r1, [r2, 0x30] -_080120F4: - pop {r0} - bx r0 - .align 2, 0 -_080120F8: .4byte gIntroSlideFlags -_080120FC: .4byte nullsub_11 - thumb_func_end oac_poke_ally_ - - thumb_func_start sub_8012100 -sub_8012100: @ 8012100 - ldr r1, _08012108 @ =nullsub_11 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_08012108: .4byte nullsub_11 - thumb_func_end sub_8012100 - - thumb_func_start nullsub_11 -nullsub_11: @ 801210C - bx lr - thumb_func_end nullsub_11 - - thumb_func_start sub_8012110 -sub_8012110: @ 8012110 - push {lr} - adds r2, r0, 0 - ldr r0, _08012134 @ =gIntroSlideFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08012130 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] -_08012130: - pop {r0} - bx r0 - .align 2, 0 -_08012134: .4byte gIntroSlideFlags - thumb_func_end sub_8012110 - - thumb_func_start DoBounceEffect -DoBounceEffect: @ 8012138 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - cmp r1, 0 - beq _08012174 - ldr r0, _08012170 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - b _08012186 - .align 2, 0 -_08012170: .4byte gBattleSpritesDataPtr -_08012174: - ldr r0, _080121D0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 -_08012186: - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - bne _0801223C - ldr r0, _080121D4 @ =SpriteCB_HealthBoxBounce - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - cmp r0, 0x1 - bne _080121E0 - ldr r0, _080121D8 @ =gHealthboxSpriteIds - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, _080121D0 @ =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x2] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r2, _080121DC @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x80 - b _0801220E - .align 2, 0 -_080121D0: .4byte gBattleSpritesDataPtr -_080121D4: .4byte SpriteCB_HealthBoxBounce -_080121D8: .4byte gHealthboxSpriteIds -_080121DC: .4byte gSprites -_080121E0: - ldr r0, _0801224C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r7, [r0] - ldr r2, _08012250 @ =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r6, r4 - lsls r1, 2 - adds r0, r1, r0 - strb r5, [r0, 0x3] - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r2, _08012254 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0xC0 -_0801220E: - strh r1, [r0, 0x2E] - adds r4, r2, 0 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r4 - mov r2, r9 - lsls r0, r2, 24 - asrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x30] - mov r3, r10 - lsls r0, r3, 24 - asrs r0, 24 - strh r0, [r1, 0x32] - strh r7, [r1, 0x34] - mov r0, r8 - strh r0, [r1, 0x36] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] -_0801223C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801224C: .4byte gBattlerSpriteIds -_08012250: .4byte gBattleSpritesDataPtr -_08012254: .4byte gSprites - thumb_func_end DoBounceEffect - - thumb_func_start EndBounceEffect -EndBounceEffect: @ 8012258 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - bne _080122AC - ldr r6, _080122A4 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080122FA - ldr r2, _080122A8 @ =gSprites - ldrb r1, [r3, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - b _080122E6 - .align 2, 0 -_080122A4: .4byte gBattleSpritesDataPtr -_080122A8: .4byte gSprites -_080122AC: - ldr r6, _08012300 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r5, r0, 2 - adds r3, r5, r1 - ldrb r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080122FA - ldr r2, _08012304 @ =gSprites - ldrb r1, [r3, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r5, r1 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 -_080122E6: - ands r0, r2 - strb r0, [r1] - ldr r0, _08012304 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x24] - strh r0, [r1, 0x26] -_080122FA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08012300: .4byte gBattleSpritesDataPtr -_08012304: .4byte gSprites - thumb_func_end EndBounceEffect - - thumb_func_start SpriteCB_HealthBoxBounce -SpriteCB_HealthBoxBounce: @ 8012308 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08012320 - movs r2, 0x2E - ldrsh r0, [r4, r2] - b _08012324 -_08012320: - movs r1, 0x2E - ldrsh r0, [r4, r1] -_08012324: - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - ldr r2, _08012350 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08012350: .4byte gSprites - thumb_func_end SpriteCB_HealthBoxBounce - - thumb_func_start sub_8012354 -sub_8012354: @ 8012354 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _08012368 @ =sub_8012398 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08012368: .4byte sub_8012398 - thumb_func_end sub_8012354 - - thumb_func_start sub_801236C -sub_801236C: @ 801236C - push {lr} - adds r2, r0, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - bne _0801238E - ldr r1, _08012394 @ =gUnknown_824F048 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - adds r0, 0x28 - strb r1, [r0] -_0801238E: - pop {r0} - bx r0 - .align 2, 0 -_08012394: .4byte gUnknown_824F048 - thumb_func_end sub_801236C - - thumb_func_start sub_8012398 -sub_8012398: @ 8012398 - push {r4,lr} - adds r4, r0, 0 - bl sub_801236C - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080123B2 - ldr r0, _080123B8 @ =nullsub_11 - str r0, [r4, 0x1C] -_080123B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080123B8: .4byte nullsub_11 - thumb_func_end sub_8012398 - - thumb_func_start nullsub_12 -nullsub_12: @ 80123BC - bx lr - thumb_func_end nullsub_12 - - thumb_func_start BeginBattleIntro -BeginBattleIntro: @ 80123C0 - push {lr} - bl sub_8012434 - ldr r1, _080123D8 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x1] - ldr r1, _080123DC @ =gBattleMainFunc - ldr r0, _080123E0 @ =BattleIntroGetMonsData - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080123D8: .4byte gBattleCommunication -_080123DC: .4byte gBattleMainFunc -_080123E0: .4byte BattleIntroGetMonsData - thumb_func_end BeginBattleIntro - - thumb_func_start sub_80123E4 -sub_80123E4: @ 80123E4 - push {r4,r5,lr} - ldr r0, _08012424 @ =gBattleMainFunc - ldr r0, [r0] - bl _call_via_r0 - ldr r1, _08012428 @ =gActiveBattler - movs r0, 0 - strb r0, [r1] - ldr r0, _0801242C @ =gBattlersCount - ldrb r0, [r0] - cmp r0, 0 - beq _0801241E - ldr r5, _08012430 @ =gBattlerControllerFuncs - adds r4, r1, 0 -_08012400: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - bl _call_via_r0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0801242C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08012400 -_0801241E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08012424: .4byte gBattleMainFunc -_08012428: .4byte gActiveBattler -_0801242C: .4byte gBattlersCount -_08012430: .4byte gBattlerControllerFuncs - thumb_func_end sub_80123E4 - - thumb_func_start sub_8012434 -sub_8012434: @ 8012434 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - bl TurnValuesCleanUp - bl SpecialStatusesClear - movs r2, 0 - movs r3, 0 - ldr r0, _080126CC @ =gLastResultingMoves - mov r10, r0 - ldr r1, _080126D0 @ =gLastHitByType - mov r12, r1 - ldr r0, _080126D4 @ =gLastLandedMoves - mov r9, r0 - ldr r1, _080126D8 @ =gLastMoves - mov r8, r1 - ldr r4, _080126DC @ =gDisableStructs - movs r5, 0 - ldr r7, _080126E0 @ =gLastPrintedMoves - ldr r6, _080126E4 @ =gLockedMoves -_08012464: - ldr r0, _080126E8 @ =gStatuses3 - adds r0, r5, r0 - str r3, [r0] - movs r1, 0 -_0801246C: - adds r0, r4, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0x1B - bls _0801246C - movs r0, 0x2 - strb r0, [r4, 0x16] - ldr r1, _080126EC @ =gUnknown_2023DD4 - adds r0, r2, r1 - strb r3, [r0] - mov r0, r8 - strh r3, [r0] - mov r1, r9 - strh r3, [r1] - mov r0, r12 - strh r3, [r0] - mov r1, r10 - strh r3, [r1] - ldr r0, _080126F0 @ =gLastHitBy - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - strh r3, [r6] - strh r3, [r7] - ldr r1, _080126F4 @ =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r0, r5 - str r3, [r0] - movs r0, 0x2 - add r10, r0 - add r12, r0 - add r9, r0 - add r8, r0 - adds r4, 0x1C - adds r5, 0x4 - adds r7, 0x2 - adds r6, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _08012464 - movs r5, 0 - ldr r3, _080126F8 @ =gSideTimers - ldr r4, _080126FC @ =gSideStatuses - movs r2, 0x1 -_080124C6: - strh r5, [r4] - movs r1, 0 -_080124CA: - adds r0, r3, r1 - strb r5, [r0] - adds r1, 0x1 - cmp r1, 0xB - bls _080124CA - adds r3, 0xC - adds r4, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080124C6 - movs r1, 0 - ldr r2, _08012700 @ =gBattlerAttacker - strb r1, [r2] - ldr r0, _08012704 @ =gBattlerTarget - strb r1, [r0] - ldr r2, _08012708 @ =gBattleWeather - strh r1, [r2] - ldr r1, _0801270C @ =gWishFutureKnock - movs r2, 0 - movs r3, 0 -_080124F2: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x2B - bls _080124F2 - movs r0, 0 - ldr r1, _08012710 @ =gHitMarker - str r0, [r1] - ldr r2, _08012714 @ =gBattleTypeFlags - ldr r0, [r2] - ldr r1, _08012718 @ =0x00010002 - ands r0, r1 - cmp r0, 0 - bne _08012522 - ldr r1, _0801271C @ =gSaveBlock2Ptr - ldr r0, [r1] - ldrb r1, [r0, 0x15] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08012522 - movs r0, 0x80 - ldr r2, _08012710 @ =gHitMarker - str r0, [r2] -_08012522: - ldr r1, _0801271C @ =gSaveBlock2Ptr - ldr r0, [r1] - ldrb r0, [r0, 0x15] - lsls r0, 30 - lsrs r0, 31 - movs r1, 0 - ldr r2, _08012720 @ =gBattleScripting - strb r0, [r2, 0x1D] - ldr r0, _08012724 @ =gMultiHitCounter - strb r1, [r0] - ldr r2, _08012728 @ =gBattleOutcome - strb r1, [r2] - ldr r0, _0801272C @ =gBattleControllerExecFlags - str r1, [r0] - movs r2, 0 - ldr r0, _08012730 @ =gPaydayMoney - strh r1, [r0] - ldr r1, _080126F4 @ =gBattleResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] - ldr r0, [r1] - ldr r0, [r0, 0xC] - adds r0, 0x20 - strb r2, [r0] - ldr r1, _08012734 @ =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_0801255C: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0801255C - movs r2, 0 - mov r9, r2 - ldr r0, _08012738 @ =gPauseCounterBattle - strh r2, [r0] - movs r0, 0 - ldr r1, _0801273C @ =gBattleMoveDamage - str r0, [r1] - ldr r2, _08012740 @ =gIntroSlideFlags - strh r0, [r2] - mov r1, r9 - ldr r0, _08012720 @ =gBattleScripting - strb r1, [r0, 0x18] - strb r1, [r0, 0x19] - ldr r2, _08012744 @ =gLeveledUpInBattle - strb r1, [r2] - ldr r0, _08012748 @ =gAbsentBattlerFlags - strb r1, [r0] - ldr r7, _0801274C @ =gBattleStruct - ldr r0, [r7] - adds r0, 0x6C - strb r1, [r0] - ldr r0, [r7] - adds r0, 0x79 - strb r1, [r0] - ldr r0, [r7] - adds r0, 0x7A - strb r1, [r0] - ldr r0, _08012750 @ =gEnemyParty - movs r1, 0xB - bl GetMonData - ldr r4, [r7] - adds r4, 0x7C - ldr r1, _08012754 @ =gBaseStats - mov r8, r1 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r0, [r1, 0x8] - movs r5, 0x64 - muls r0, r5 - ldr r6, _08012758 @ =0x000004fb - adds r1, r6, 0 - bl __divsi3 - strb r0, [r4] - ldr r0, _08012750 @ =gEnemyParty - movs r1, 0xB - bl GetMonData - ldr r4, [r7] - adds r4, 0x7B - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r0, [r1, 0x18] - muls r0, r5 - adds r1, r6, 0 - bl __divsi3 - strb r0, [r4] - ldr r0, [r7] - adds r1, r0, 0 - adds r1, 0x7B - ldrb r0, [r1] - cmp r0, 0x1 - bhi _080125F2 - movs r0, 0x2 - strb r0, [r1] -_080125F2: - ldr r0, [r7] - mov r2, r9 - strb r2, [r0, 0x12] - ldr r0, [r7] - adds r0, 0x4A - movs r1, 0x1 - strb r1, [r0] - movs r2, 0 - adds r4, r7, 0 - ldr r5, _0801275C @ =gBattleResults - adds r3, r4, 0 - movs r1, 0 -_0801260A: - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0x98 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xB8 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xC8 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xD0 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xE0 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xE8 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xF0 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0xF8 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0801260A - ldr r0, [r4] - adds r0, 0x92 - movs r1, 0x6 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x93 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xDF - movs r1, 0 - strb r1, [r0] - ldr r0, _0801275C @ =gBattleResults - movs r1, 0 - movs r2, 0xA - adds r0, 0x40 -_0801266E: - strb r1, [r0] - subs r0, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _0801266E - movs r1, 0 - strb r1, [r5, 0x13] - strb r1, [r5] - strb r1, [r5, 0x1] - strb r1, [r5, 0x2] - strb r1, [r5, 0x3] - strb r1, [r5, 0x4] - ldrb r2, [r5, 0x5] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - movs r2, 0x3 - negs r2, r2 - ands r0, r2 - strb r0, [r5, 0x5] - strh r1, [r5, 0x20] - strh r1, [r5, 0x22] - strh r1, [r5, 0x24] - strh r1, [r5, 0x6] - strh r1, [r5, 0x26] - strh r1, [r5, 0x28] - movs r2, 0 - adds r4, r5, 0 - adds r4, 0x8 - movs r3, 0 - adds r1, r5, 0 - adds r1, 0x14 -_080126AE: - adds r0, r2, r4 - strb r3, [r0] - strb r3, [r1] - strb r3, [r1, 0x16] - adds r1, 0x1 - adds r2, 0x1 - cmp r2, 0x9 - ble _080126AE - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080126CC: .4byte gLastResultingMoves -_080126D0: .4byte gLastHitByType -_080126D4: .4byte gLastLandedMoves -_080126D8: .4byte gLastMoves -_080126DC: .4byte gDisableStructs -_080126E0: .4byte gLastPrintedMoves -_080126E4: .4byte gLockedMoves -_080126E8: .4byte gStatuses3 -_080126EC: .4byte gUnknown_2023DD4 -_080126F0: .4byte gLastHitBy -_080126F4: .4byte gBattleResources -_080126F8: .4byte gSideTimers -_080126FC: .4byte gSideStatuses -_08012700: .4byte gBattlerAttacker -_08012704: .4byte gBattlerTarget -_08012708: .4byte gBattleWeather -_0801270C: .4byte gWishFutureKnock -_08012710: .4byte gHitMarker -_08012714: .4byte gBattleTypeFlags -_08012718: .4byte 0x00010002 -_0801271C: .4byte gSaveBlock2Ptr -_08012720: .4byte gBattleScripting -_08012724: .4byte gMultiHitCounter -_08012728: .4byte gBattleOutcome -_0801272C: .4byte gBattleControllerExecFlags -_08012730: .4byte gPaydayMoney -_08012734: .4byte gBattleCommunication -_08012738: .4byte gPauseCounterBattle -_0801273C: .4byte gBattleMoveDamage -_08012740: .4byte gIntroSlideFlags -_08012744: .4byte gLeveledUpInBattle -_08012748: .4byte gAbsentBattlerFlags -_0801274C: .4byte gBattleStruct -_08012750: .4byte gEnemyParty -_08012754: .4byte gBaseStats -_08012758: .4byte 0x000004fb -_0801275C: .4byte gBattleResults - thumb_func_end sub_8012434 - - thumb_func_start SwitchInClearSetData -SwitchInClearSetData: @ 8012760 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r4, _080128C4 @ =gDisableStructs - ldr r5, _080128C8 @ =gActiveBattler - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, sp - adds r0, r4 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r0, [r0] - str r0, [r1] - ldr r2, _080128CC @ =gBattleMoves - ldr r3, _080128D0 @ =gCurrentMove - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - mov r9, r4 - mov r12, r5 - ldr r6, _080128D4 @ =gStatuses3 - mov r10, r6 - cmp r0, 0x7F - beq _08012838 - movs r5, 0 - mov r4, r12 - movs r3, 0x58 - ldr r2, _080128D8 @ =gBattleMons - adds r2, 0x18 - movs r1, 0x6 -_080127B0: - ldrb r0, [r4] - muls r0, r3 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _080127B0 - movs r5, 0 - ldr r7, _080128DC @ =gBattlersCount - ldrb r7, [r7] - cmp r5, r7 - bge _08012824 - ldr r0, _080128E0 @ =gUnknown_2023C34 - mov r8, r0 - ldr r3, _080128C4 @ =gDisableStructs - ldr r4, _080128D4 @ =gStatuses3 -_080127D2: - movs r0, 0x58 - muls r0, r5 - mov r1, r8 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _080127F6 - ldrb r0, [r3, 0x14] - ldr r6, _080128C8 @ =gActiveBattler - ldrb r6, [r6] - cmp r0, r6 - bne _080127F6 - ldr r0, _080128E4 @ =0xfbffffff - ands r1, r0 - str r1, [r2] -_080127F6: - ldr r1, [r4] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08012816 - ldrb r0, [r3, 0x15] - ldr r7, _080128C8 @ =gActiveBattler - ldrb r7, [r7] - cmp r0, r7 - bne _08012816 - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - str r1, [r4] - movs r0, 0 - strb r0, [r3, 0x15] -_08012816: - adds r3, 0x1C - adds r4, 0x4 - adds r5, 0x1 - ldr r0, _080128DC @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _080127D2 -_08012824: - ldr r1, _080128D0 @ =gCurrentMove - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _080128CC @ =gBattleMoves - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x7F - bne _080128F0 -_08012838: - mov r3, r12 - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - ldr r0, _080128D8 @ =gBattleMons - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _080128E8 @ =0x15100007 - ands r0, r1 - str r0, [r2] - ldrb r1, [r3] - lsls r1, 2 - add r1, r10 - ldr r0, [r1] - ldr r2, _080128EC @ =0x0003043f - ands r0, r2 - str r0, [r1] - movs r5, 0 - ldr r6, _080128DC @ =gBattlersCount - ldrb r6, [r6] - cmp r5, r6 - bge _0801290C - mov r7, r12 - movs r6, 0 -_0801286C: - ldrb r0, [r7] - bl GetBattlerSide - adds r4, r0, 0 - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _080128AC - ldr r1, _080128D4 @ =gStatuses3 - lsls r0, r5, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _080128AC - ldr r0, _080128C4 @ =gDisableStructs - adds r0, r6, r0 - ldrb r0, [r0, 0x15] - ldrb r3, [r7] - cmp r0, r3 - bne _080128AC - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - str r1, [r2] -_080128AC: - adds r6, 0x1C - adds r5, 0x1 - ldr r0, _080128DC @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801286C - ldr r6, _080128C4 @ =gDisableStructs - mov r9, r6 - ldr r7, _080128C8 @ =gActiveBattler - mov r12, r7 - b _0801290C - .align 2, 0 -_080128C4: .4byte gDisableStructs -_080128C8: .4byte gActiveBattler -_080128CC: .4byte gBattleMoves -_080128D0: .4byte gCurrentMove -_080128D4: .4byte gStatuses3 -_080128D8: .4byte gBattleMons -_080128DC: .4byte gBattlersCount -_080128E0: .4byte gUnknown_2023C34 -_080128E4: .4byte 0xfbffffff -_080128E8: .4byte 0x15100007 -_080128EC: .4byte 0x0003043f -_080128F0: - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - ldr r1, _08012B7C @ =gBattleMons - adds r1, 0x50 - adds r0, r1 - movs r1, 0 - str r1, [r0] - mov r2, r12 - ldrb r0, [r2] - lsls r0, 2 - add r0, r10 - str r1, [r0] -_0801290C: - movs r5, 0 - ldr r7, _08012B80 @ =gBattleStruct - ldr r3, _08012B84 @ =gActionSelectionCursor - mov r10, r3 - ldr r6, _08012B88 @ =gBattlersCount - ldrb r6, [r6] - cmp r5, r6 - bge _0801296C - ldr r0, _08012B8C @ =gUnknown_2023C34 - mov r8, r0 - ldr r6, _08012B90 @ =gBitTable - ldr r4, _08012B94 @ =gActiveBattler -_08012924: - movs r0, 0x58 - muls r0, r5 - mov r1, r8 - adds r3, r0, r1 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _08012944 - bics r1, r2 - str r1, [r3] -_08012944: - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08012962 - ldr r0, [r7] - adds r0, r5, r0 - ldrb r0, [r0, 0x14] - ldrb r2, [r4] - cmp r0, r2 - bne _08012962 - ldr r0, _08012B98 @ =0xffff1fff - ands r1, r0 - str r1, [r3] -_08012962: - adds r5, 0x1 - ldr r3, _08012B88 @ =gBattlersCount - ldrb r3, [r3] - cmp r5, r3 - blt _08012924 -_0801296C: - mov r6, r12 - ldrb r0, [r6] - add r0, r10 - movs r1, 0 - strb r1, [r0] - ldrb r0, [r6] - ldr r2, _08012B9C @ =gMoveSelectionCursor - adds r0, r2 - strb r1, [r0] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r3, r9 - adds r1, r0, r3 - movs r5, 0 - movs r2, 0 -_0801298E: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _0801298E - ldr r6, _08012BA0 @ =gCurrentMove - ldrh r0, [r6] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08012BA4 @ =gBattleMoves - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x7F - bne _08012A1A - mov r2, r12 - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - mov r1, sp - ldrb r1, [r1, 0xA] - strb r1, [r0, 0xA] - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - mov r1, sp - ldrb r1, [r1, 0x15] - strb r1, [r0, 0x15] - ldrb r0, [r2] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r9 - mov r0, sp - ldrb r2, [r0, 0xF] - lsls r2, 28 - movs r4, 0xF - lsrs r2, 28 - ldrb r3, [r1, 0xF] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xF] - mov r3, r12 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - mov r1, sp - ldrb r1, [r1, 0xF] - lsrs r1, 4 - lsls r1, 4 - ldrb r2, [r0, 0xF] - ands r4, r2 - orrs r4, r1 - strb r4, [r0, 0xF] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - mov r1, sp - ldrb r1, [r1, 0x14] - strb r1, [r0, 0x14] -_08012A1A: - movs r0, 0 - ldr r6, _08012BA8 @ =gMoveResultFlags - strb r0, [r6] - mov r0, r12 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - movs r2, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - mov r1, r12 - ldrb r0, [r1] - lsls r0, 1 - ldr r3, _08012BAC @ =gLastMoves - adds r0, r3 - movs r3, 0 - strh r2, [r0] - ldrb r0, [r1] - lsls r0, 1 - ldr r6, _08012BB0 @ =gLastLandedMoves - adds r0, r6 - strh r2, [r0] - ldrb r0, [r1] - lsls r0, 1 - ldr r1, _08012BB4 @ =gLastHitByType - adds r0, r1 - strh r2, [r0] - mov r6, r12 - ldrb r0, [r6] - lsls r0, 1 - ldr r1, _08012BB8 @ =gLastResultingMoves - adds r0, r1 - strh r2, [r0] - ldrb r0, [r6] - lsls r0, 1 - ldr r6, _08012BBC @ =gLastPrintedMoves - adds r0, r6 - strh r2, [r0] - mov r1, r12 - ldrb r0, [r1] - ldr r2, _08012BC0 @ =gLastHitBy - adds r0, r2 - movs r1, 0xFF - strb r1, [r0] - mov r6, r12 - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r7] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r3, [r0] - movs r5, 0 - ldr r0, _08012B88 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _08012B3C - adds r4, r7, 0 -_08012AFC: - ldrb r1, [r6] - cmp r5, r1 - beq _08012B14 - ldr r0, [r4] - lsls r1, r5, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r3, [r0] - ldr r0, [r4] - adds r1, r0 - adds r1, 0x99 - strb r3, [r1] -_08012B14: - ldrb r0, [r6] - ldr r1, [r4] - lsls r0, 1 - lsls r2, r5, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r3, [r0] - ldrb r0, [r6] - ldr r1, [r4] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r3, [r0] - adds r5, 0x1 - ldr r2, _08012B88 @ =gBattlersCount - ldrb r2, [r2] - cmp r5, r2 - blt _08012AFC -_08012B3C: - mov r3, r12 - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - movs r2, 0 - strb r2, [r0] - ldrb r0, [r3] - ldr r1, [r7] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r2, [r0] - ldr r6, _08012BC4 @ =gBattleResources - ldr r0, [r6] - ldr r1, [r0, 0x4] - ldrb r0, [r3] - lsls r0, 2 - adds r1, r0 - movs r0, 0 - str r0, [r1] - ldr r7, _08012BA0 @ =gCurrentMove - strh r0, [r7] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08012B7C: .4byte gBattleMons -_08012B80: .4byte gBattleStruct -_08012B84: .4byte gActionSelectionCursor -_08012B88: .4byte gBattlersCount -_08012B8C: .4byte gUnknown_2023C34 -_08012B90: .4byte gBitTable -_08012B94: .4byte gActiveBattler -_08012B98: .4byte 0xffff1fff -_08012B9C: .4byte gMoveSelectionCursor -_08012BA0: .4byte gCurrentMove -_08012BA4: .4byte gBattleMoves -_08012BA8: .4byte gMoveResultFlags -_08012BAC: .4byte gLastMoves -_08012BB0: .4byte gLastLandedMoves -_08012BB4: .4byte gLastHitByType -_08012BB8: .4byte gLastResultingMoves -_08012BBC: .4byte gLastPrintedMoves -_08012BC0: .4byte gLastHitBy -_08012BC4: .4byte gBattleResources - thumb_func_end SwitchInClearSetData - - thumb_func_start FaintClearSetData -FaintClearSetData: @ 8012BC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r3, 0 - ldr r7, _08012F5C @ =gActiveBattler - ldr r6, _08012F60 @ =gStatuses3 - ldr r0, _08012F64 @ =gActionSelectionCursor - mov r8, r0 - ldr r1, _08012F68 @ =gMoveSelectionCursor - mov r9, r1 - ldr r2, _08012F6C @ =gProtectStructs - mov r12, r2 - adds r5, r7, 0 - movs r4, 0x58 - ldr r2, _08012F70 @ =gBattleMons - adds r2, 0x18 - movs r1, 0x6 -_08012BEE: - ldrb r0, [r5] - muls r0, r4 - adds r0, r3, r0 - adds r0, r2 - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x7 - ble _08012BEE - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - ldr r2, _08012F70 @ =gBattleMons - adds r2, 0x50 - adds r0, r2 - movs r1, 0 - str r1, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r0, r6 - str r1, [r0] - movs r3, 0 - ldr r0, _08012F74 @ =gBattlersCount - ldrb r0, [r0] - cmp r3, r0 - bge _08012C8A - adds r4, r2, 0 - movs r5, 0 - ldr r6, _08012F78 @ =gBitTable -_08012C26: - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _08012C44 - ldr r2, _08012F7C @ =gDisableStructs - adds r0, r5, r2 - ldrb r0, [r0, 0x14] - ldrb r2, [r7] - cmp r0, r2 - bne _08012C44 - ldr r0, _08012F80 @ =0xfbffffff - ands r1, r0 - str r1, [r4] -_08012C44: - ldrb r0, [r7] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r4] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _08012C5C - bics r1, r2 - str r1, [r4] -_08012C5C: - ldr r1, [r4] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08012C7C - ldr r2, _08012F84 @ =gBattleStruct - ldr r0, [r2] - adds r0, r3, r0 - ldrb r0, [r0, 0x14] - ldrb r2, [r7] - cmp r0, r2 - bne _08012C7C - ldr r0, _08012F88 @ =0xffff1fff - ands r1, r0 - str r1, [r4] -_08012C7C: - adds r4, 0x58 - adds r5, 0x1C - adds r3, 0x1 - ldr r0, _08012F74 @ =gBattlersCount - ldrb r0, [r0] - cmp r3, r0 - blt _08012C26 -_08012C8A: - ldrb r0, [r7] - add r0, r8 - movs r1, 0 - strb r1, [r0] - ldrb r0, [r7] - add r0, r9 - strb r1, [r0] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _08012F7C @ =gDisableStructs - adds r1, r0, r2 - movs r3, 0 - movs r2, 0 -_08012CA8: - adds r0, r1, r3 - strb r2, [r0] - adds r3, 0x1 - cmp r3, 0x1B - bls _08012CA8 - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - mov r9, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - mov r8, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r6, 0x5 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - mov r10, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r5, 0x21 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r4, 0x41 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1, 0x1] - mov r0, r9 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1, 0x1] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1, 0x1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - add r1, r12 - ldrb r2, [r1, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x1] - ands r5, r1 - strb r5, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x1] - ands r3, r1 - strb r3, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x2] - mov r2, r9 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x2] - mov r2, r8 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x2] - ands r6, r1 - strb r6, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - add r0, r12 - ldrb r1, [r0, 0x2] - mov r2, r10 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _08012F7C @ =gDisableStructs - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08012F8C @ =gLastMoves - adds r0, r1 - movs r3, 0 - strh r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08012F90 @ =gLastLandedMoves - adds r0, r1 - strh r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08012F94 @ =gLastHitByType - adds r0, r1 - strh r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08012F98 @ =gLastResultingMoves - adds r0, r1 - strh r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08012F9C @ =gLastPrintedMoves - adds r0, r1 - strh r2, [r0] - ldrb r0, [r7] - ldr r2, _08012FA0 @ =gLastHitBy - adds r0, r2 - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r7] - ldr r2, _08012F84 @ =gBattleStruct - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x98 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0x99 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE0 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE1 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE2 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE3 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE4 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE5 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE6 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 3 - adds r0, r1 - adds r0, 0xE7 - strb r3, [r0] - movs r3, 0 - ldr r0, _08012F74 @ =gBattlersCount - ldrb r0, [r0] - cmp r3, r0 - bge _08012F04 - adds r6, r7, 0 - adds r5, r2, 0 - movs r4, 0 -_08012EC4: - ldrb r1, [r6] - cmp r3, r1 - beq _08012EDC - ldr r0, [r5] - lsls r1, r3, 1 - adds r0, r1, r0 - adds r0, 0x98 - strb r4, [r0] - ldr r0, [r5] - adds r1, r0 - adds r1, 0x99 - strb r4, [r1] -_08012EDC: - ldrb r0, [r6] - ldr r1, [r5] - lsls r0, 1 - lsls r2, r3, 3 - adds r0, r2 - adds r0, r1 - adds r0, 0xE0 - strb r4, [r0] - ldrb r0, [r6] - ldr r1, [r5] - lsls r0, 1 - adds r0, r2 - adds r0, r1 - adds r0, 0xE1 - strb r4, [r0] - adds r3, 0x1 - ldr r2, _08012F74 @ =gBattlersCount - ldrb r2, [r2] - cmp r3, r2 - blt _08012EC4 -_08012F04: - ldr r1, _08012FA4 @ =gBattleResources - ldr r0, [r1] - ldr r1, [r0, 0x4] - ldrb r0, [r7] - lsls r0, 2 - adds r1, r0 - movs r0, 0 - str r0, [r1] - ldrb r0, [r7] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - ldr r2, _08012F70 @ =gBattleMons - adds r1, r2 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r2, _08012FA8 @ =gBaseStats - adds r0, r2 - ldrb r0, [r0, 0x6] - adds r1, 0x21 - strb r0, [r1] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r3 - ldr r0, _08012F70 @ =gBattleMons - adds r1, r0 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r2, _08012FA8 @ =gBaseStats - adds r0, r2 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08012F5C: .4byte gActiveBattler -_08012F60: .4byte gStatuses3 -_08012F64: .4byte gActionSelectionCursor -_08012F68: .4byte gMoveSelectionCursor -_08012F6C: .4byte gProtectStructs -_08012F70: .4byte gBattleMons -_08012F74: .4byte gBattlersCount -_08012F78: .4byte gBitTable -_08012F7C: .4byte gDisableStructs -_08012F80: .4byte 0xfbffffff -_08012F84: .4byte gBattleStruct -_08012F88: .4byte 0xffff1fff -_08012F8C: .4byte gLastMoves -_08012F90: .4byte gLastLandedMoves -_08012F94: .4byte gLastHitByType -_08012F98: .4byte gLastResultingMoves -_08012F9C: .4byte gLastPrintedMoves -_08012FA0: .4byte gLastHitBy -_08012FA4: .4byte gBattleResources -_08012FA8: .4byte gBaseStats - thumb_func_end FaintClearSetData - - thumb_func_start BattleIntroGetMonsData -BattleIntroGetMonsData: @ 8012FAC - push {r4,r5,lr} - ldr r5, _08012FBC @ =gBattleCommunication - ldrb r0, [r5] - cmp r0, 0 - beq _08012FC0 - cmp r0, 0x1 - beq _08012FE4 - b _0801301A - .align 2, 0 -_08012FBC: .4byte gBattleCommunication -_08012FC0: - ldr r4, _08012FE0 @ =gActiveBattler - ldrb r0, [r5, 0x1] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl BtlController_EmitGetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0801301A - .align 2, 0 -_08012FE0: .4byte gActiveBattler -_08012FE4: - ldr r0, _08013008 @ =gBattleControllerExecFlags - ldr r2, [r0] - cmp r2, 0 - bne _0801301A - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - ldr r1, _0801300C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08013018 - ldr r1, _08013010 @ =gBattleMainFunc - ldr r0, _08013014 @ =BattleIntroPrepareBackgroundSlide - str r0, [r1] - b _0801301A - .align 2, 0 -_08013008: .4byte gBattleControllerExecFlags -_0801300C: .4byte gBattlersCount -_08013010: .4byte gBattleMainFunc -_08013014: .4byte BattleIntroPrepareBackgroundSlide -_08013018: - strb r2, [r5] -_0801301A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end BattleIntroGetMonsData - - thumb_func_start BattleIntroPrepareBackgroundSlide -BattleIntroPrepareBackgroundSlide: @ 8013020 - push {r4,r5,lr} - ldr r0, _08013058 @ =gBattleControllerExecFlags - ldr r5, [r0] - cmp r5, 0 - bne _08013050 - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _0801305C @ =gActiveBattler - strb r0, [r4] - ldr r0, _08013060 @ =gBattleTerrain - ldrb r1, [r0] - movs r0, 0 - bl BtlController_EmitIntroSlide - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _08013064 @ =gBattleMainFunc - ldr r0, _08013068 @ =sub_8013070 - str r0, [r1] - ldr r0, _0801306C @ =gBattleCommunication - strb r5, [r0] - strb r5, [r0, 0x1] -_08013050: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08013058: .4byte gBattleControllerExecFlags -_0801305C: .4byte gActiveBattler -_08013060: .4byte gBattleTerrain -_08013064: .4byte gBattleMainFunc -_08013068: .4byte sub_8013070 -_0801306C: .4byte gBattleCommunication - thumb_func_end BattleIntroPrepareBackgroundSlide - - thumb_func_start sub_8013070 -sub_8013070: @ 8013070 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080130D4 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - beq _08013084 - b _08013314 -_08013084: - ldr r2, _080130D8 @ =gActiveBattler - strb r1, [r2] - ldr r0, _080130DC @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcc _08013092 - b _0801330E -_08013092: - movs r7, 0x58 - ldr r0, _080130E0 @ =gBattleMons - mov r8, r0 - mov r9, r2 - movs r1, 0x48 - add r1, r8 - mov r10, r1 -_080130A0: - ldr r0, _080130E4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080130E8 - ldr r4, _080130D8 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080130E8 - ldrb r0, [r4] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - movs r1, 0 -_080130C6: - adds r0, r3, r2 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _080130C6 - b _080131B6 - .align 2, 0 -_080130D4: .4byte gBattleControllerExecFlags -_080130D8: .4byte gActiveBattler -_080130DC: .4byte gBattlersCount -_080130E0: .4byte gBattleMons -_080130E4: .4byte gBattleTypeFlags -_080130E8: - mov r1, r9 - ldrb r0, [r1] - muls r0, r7 - mov r2, r8 - adds r3, r0, r2 - movs r2, 0 - ldr r6, _08013230 @ =gBaseStats - ldr r5, _08013234 @ =gBattleBufferB - ldr r4, _08013238 @ =gActiveBattler -_080130FA: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _080130FA - mov r1, r9 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - mov r2, r9 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r7 - add r2, r8 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x7] - adds r2, 0x22 - strb r0, [r2] - mov r1, r9 - ldrb r0, [r1] - adds r1, r0, 0 - muls r1, r7 - add r1, r8 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - mov r2, r9 - ldrb r1, [r2] - muls r1, r7 - add r1, r8 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r2] - bl GetBattlerSide - ldr r1, _0801323C @ =gBattleStruct - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r1] - adds r1, r0 - mov r2, r9 - ldrb r0, [r2] - muls r0, r7 - add r0, r8 - ldrh r0, [r0, 0x28] - strh r0, [r1] - movs r2, 0 - ldr r4, _08013238 @ =gActiveBattler - movs r5, 0x58 - ldr r1, _08013240 @ =gUnknown_2023BFC - adds r6, r4, 0 - movs r0, 0x18 - negs r0, r0 - adds r0, r1 - mov r12, r0 - movs r3, 0x6 -_08013196: - ldrb r0, [r4] - muls r0, r5 - adds r0, r2, r0 - adds r0, r1 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _08013196 - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - mov r0, r12 - adds r0, 0x50 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_080131B6: - ldr r4, _08013238 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080131D0 - movs r0, 0 - bl BtlController_EmitDrawTrainerPic - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080131D0: - ldr r5, _08013244 @ =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801324C - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080131F6 - movs r0, 0 - bl BtlController_EmitDrawTrainerPic - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080131F6: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080132C2 - ldr r0, [r5] - ldr r1, _08013248 @ =0x0001aa02 - ands r0, r1 - cmp r0, 0 - bne _080132C2 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag - b _080132C2 - .align 2, 0 -_08013230: .4byte gBaseStats -_08013234: .4byte gBattleBufferB -_08013238: .4byte gActiveBattler -_0801323C: .4byte gBattleStruct -_08013240: .4byte gUnknown_2023BFC -_08013244: .4byte gBattleTypeFlags -_08013248: .4byte 0x0001aa02 -_0801324C: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080132C2 - ldr r1, [r5] - movs r2, 0xA0 - lsls r2, 8 - ands r2, r1 - cmp r2, 0 - beq _0801328E - movs r0, 0x80 - lsls r0, 8 - cmp r2, r0 - beq _080132B4 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag - b _080132B4 -_0801328E: - ldr r0, _08013324 @ =0x0001aa02 - ands r1, r0 - cmp r1, 0 - bne _080132B4 - ldrb r0, [r4] - muls r0, r7 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r7 - add r1, r10 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_080132B4: - movs r0, 0 - bl BtlController_EmitLoadMonSprite - mov r1, r9 - ldrb r0, [r1] - bl MarkBattlerForControllerExec -_080132C2: - ldr r0, _08013328 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080132F8 - ldr r4, _0801332C @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080132EC - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080132F8 -_080132EC: - movs r0, 0 - bl BtlController_EmitDrawTrainerPic - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080132F8: - mov r2, r9 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r1, _08013330 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcs _0801330E - b _080130A0 -_0801330E: - ldr r1, _08013334 @ =gBattleMainFunc - ldr r0, _08013338 @ =BattleIntroDrawPartySummaryScreens - str r0, [r1] -_08013314: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08013324: .4byte 0x0001aa02 -_08013328: .4byte gBattleTypeFlags -_0801332C: .4byte gActiveBattler -_08013330: .4byte gBattlersCount -_08013334: .4byte gBattleMainFunc -_08013338: .4byte BattleIntroDrawPartySummaryScreens - thumb_func_end sub_8013070 - - thumb_func_start BattleIntroDrawPartySummaryScreens -BattleIntroDrawPartySummaryScreens: @ 801333C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, _08013394 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0801334E - b _080134C8 -_0801334E: - ldr r0, _08013398 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0801335C - b _08013468 -_0801335C: - movs r7, 0 - add r0, sp, 0x4 - mov r8, r0 - mov r6, r8 - mov r5, sp -_08013366: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0801339C @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0801338C - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _080133A4 -_0801338C: - ldr r0, _080133A0 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _080133B6 - .align 2, 0 -_08013394: .4byte gBattleControllerExecFlags -_08013398: .4byte gBattleTypeFlags -_0801339C: .4byte gEnemyParty -_080133A0: .4byte 0x0000ffff -_080133A4: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_080133B6: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _08013366 - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r4, _08013410 @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl BtlController_EmitDrawPartyStatusSummary - ldrb r0, [r4] - bl MarkBattlerForControllerExec - movs r7, 0 - mov r6, r8 - mov r5, sp -_080133E2: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08013414 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08013408 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _0801341C -_08013408: - ldr r0, _08013418 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0801342E - .align 2, 0 -_08013410: .4byte gActiveBattler -_08013414: .4byte gPlayerParty -_08013418: .4byte 0x0000ffff -_0801341C: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0801342E: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _080133E2 - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _0801345C @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl BtlController_EmitDrawPartyStatusSummary - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _08013460 @ =gBattleMainFunc - ldr r0, _08013464 @ =BattleIntroPrintTrainerWantsToBattle - b _080134C6 - .align 2, 0 -_0801345C: .4byte gActiveBattler -_08013460: .4byte gBattleMainFunc -_08013464: .4byte BattleIntroPrintTrainerWantsToBattle -_08013468: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_0801346E: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0801349C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08013494 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _080134A4 -_08013494: - ldr r0, _080134A0 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _080134B6 - .align 2, 0 -_0801349C: .4byte gPlayerParty -_080134A0: .4byte 0x0000ffff -_080134A4: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_080134B6: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0801346E - ldr r1, _080134D4 @ =gBattleMainFunc - ldr r0, _080134D8 @ =sub_8013514 -_080134C6: - str r0, [r1] -_080134C8: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080134D4: .4byte gBattleMainFunc -_080134D8: .4byte sub_8013514 - thumb_func_end BattleIntroDrawPartySummaryScreens - - thumb_func_start BattleIntroPrintTrainerWantsToBattle -BattleIntroPrintTrainerWantsToBattle: @ 80134DC - push {lr} - ldr r0, _08013504 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _080134FE - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _08013508 @ =gActiveBattler - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0 - bl PrepareStringBattle - ldr r1, _0801350C @ =gBattleMainFunc - ldr r0, _08013510 @ =sub_8013568 - str r0, [r1] -_080134FE: - pop {r0} - bx r0 - .align 2, 0 -_08013504: .4byte gBattleControllerExecFlags -_08013508: .4byte gActiveBattler -_0801350C: .4byte gBattleMainFunc -_08013510: .4byte sub_8013568 - thumb_func_end BattleIntroPrintTrainerWantsToBattle - - thumb_func_start sub_8013514 -sub_8013514: @ 8013514 - push {lr} - ldr r0, _08013550 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801354A - ldr r1, _08013554 @ =gBattleMainFunc - ldr r0, _08013558 @ =sub_80136E4 - str r0, [r1] - movs r0, 0 - movs r1, 0 - bl PrepareStringBattle - ldr r0, _0801355C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 8 - ands r0, r1 - cmp r0, r1 - bne _0801354A - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _08013560 @ =gBattleScripting - strb r0, [r1, 0x17] - ldr r0, _08013564 @ =gUnknown_81D91A1 - bl BattleScriptExecute -_0801354A: - pop {r0} - bx r0 - .align 2, 0 -_08013550: .4byte gBattleControllerExecFlags -_08013554: .4byte gBattleMainFunc -_08013558: .4byte sub_80136E4 -_0801355C: .4byte gBattleTypeFlags -_08013560: .4byte gBattleScripting -_08013564: .4byte gUnknown_81D91A1 - thumb_func_end sub_8013514 - - thumb_func_start sub_8013568 -sub_8013568: @ 8013568 - push {lr} - ldr r0, _08013590 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801358A - movs r0, 0x1 - bl GetBattlerAtPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl PrepareStringBattle - ldr r1, _08013594 @ =gBattleMainFunc - ldr r0, _08013598 @ =sub_801359C - str r0, [r1] -_0801358A: - pop {r0} - bx r0 - .align 2, 0 -_08013590: .4byte gBattleControllerExecFlags -_08013594: .4byte gBattleMainFunc -_08013598: .4byte sub_801359C - thumb_func_end sub_8013568 - - thumb_func_start sub_801359C -sub_801359C: @ 801359C - push {r4,lr} - ldr r0, _08013614 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - bne _0801360C - ldr r2, _08013618 @ =gActiveBattler - strb r1, [r2] - ldr r0, _0801361C @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _08013606 - adds r4, r2, 0 -_080135B4: - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080135CE - movs r0, 0 - bl BtlController_EmitIntroTrainerBallThrow - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080135CE: - ldr r0, _08013620 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080135F4 - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080135F4 - movs r0, 0 - bl BtlController_EmitIntroTrainerBallThrow - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080135F4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0801361C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _080135B4 -_08013606: - ldr r1, _08013624 @ =gBattleMainFunc - ldr r0, _08013628 @ =sub_801362C - str r0, [r1] -_0801360C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08013614: .4byte gBattleControllerExecFlags -_08013618: .4byte gActiveBattler -_0801361C: .4byte gBattlersCount -_08013620: .4byte gBattleTypeFlags -_08013624: .4byte gBattleMainFunc -_08013628: .4byte sub_801362C - thumb_func_end sub_801359C - - thumb_func_start sub_801362C -sub_801362C: @ 801362C - push {r4-r7,lr} - ldr r0, _080136A4 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - bne _0801369C - ldr r2, _080136A8 @ =gActiveBattler - strb r1, [r2] - ldr r0, _080136AC @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _08013696 - adds r4, r2, 0 - ldr r6, _080136B0 @ =gBattleMons - movs r5, 0x58 - adds r7, r6, 0 - adds r7, 0x48 -_0801364C: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08013684 - ldr r0, _080136B4 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _080136B8 @ =0x0001aa02 - ands r0, r1 - cmp r0, 0 - bne _08013684 - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r4] - muls r1, r5 - adds r1, r7 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_08013684: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080136AC @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0801364C -_08013696: - ldr r1, _080136BC @ =gBattleMainFunc - ldr r0, _080136C0 @ =sub_80136E4 - str r0, [r1] -_0801369C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080136A4: .4byte gBattleControllerExecFlags -_080136A8: .4byte gActiveBattler -_080136AC: .4byte gBattlersCount -_080136B0: .4byte gBattleMons -_080136B4: .4byte gBattleTypeFlags -_080136B8: .4byte 0x0001aa02 -_080136BC: .4byte gBattleMainFunc -_080136C0: .4byte sub_80136E4 - thumb_func_end sub_801362C - - thumb_func_start sub_80136C4 -sub_80136C4: @ 80136C4 - push {lr} - ldr r0, _080136D8 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _080136D4 - ldr r1, _080136DC @ =gBattleMainFunc - ldr r0, _080136E0 @ =sub_80136E4 - str r0, [r1] -_080136D4: - pop {r0} - bx r0 - .align 2, 0 -_080136D8: .4byte gBattleControllerExecFlags -_080136DC: .4byte gBattleMainFunc -_080136E0: .4byte sub_80136E4 - thumb_func_end sub_80136C4 - - thumb_func_start sub_80136E4 -sub_80136E4: @ 80136E4 - push {lr} - ldr r0, _08013718 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08013712 - ldr r0, _0801371C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0801370C - movs r0, 0 - bl GetBattlerAtPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl PrepareStringBattle -_0801370C: - ldr r1, _08013720 @ =gBattleMainFunc - ldr r0, _08013724 @ =sub_8013728 - str r0, [r1] -_08013712: - pop {r0} - bx r0 - .align 2, 0 -_08013718: .4byte gBattleControllerExecFlags -_0801371C: .4byte gBattleTypeFlags -_08013720: .4byte gBattleMainFunc -_08013724: .4byte sub_8013728 - thumb_func_end sub_80136E4 - - thumb_func_start sub_8013728 -sub_8013728: @ 8013728 - push {r4,lr} - ldr r0, _080137B4 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - bne _080137AC - ldr r2, _080137B8 @ =gActiveBattler - strb r1, [r2] - ldr r0, _080137BC @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _08013790 - adds r4, r2, 0 -_08013740: - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _08013758 - movs r0, 0 - bl BtlController_EmitIntroTrainerBallThrow - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08013758: - ldr r0, _080137C0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801377E - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0801377E - movs r0, 0 - bl BtlController_EmitIntroTrainerBallThrow - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0801377E: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080137BC @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08013740 -_08013790: - ldr r2, _080137C4 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xB6 - strb r1, [r0] - ldr r1, _080137C8 @ =gBattleMainFunc - ldr r0, _080137CC @ =sub_801385C - str r0, [r1] -_080137AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080137B4: .4byte gBattleControllerExecFlags -_080137B8: .4byte gActiveBattler -_080137BC: .4byte gBattlersCount -_080137C0: .4byte gBattleTypeFlags -_080137C4: .4byte gBattleStruct -_080137C8: .4byte gBattleMainFunc -_080137CC: .4byte sub_801385C - thumb_func_end sub_8013728 - - thumb_func_start sub_80137D0 -sub_80137D0: @ 80137D0 - push {r4,r5,lr} - ldr r0, _08013840 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - bne _0801383A - ldr r2, _08013844 @ =gActiveBattler - strb r1, [r2] - ldr r0, _08013848 @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _0801381E - adds r4, r2, 0 - ldr r5, _0801384C @ =gBattlerPartyIndexes -_080137EA: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801380C - ldrb r0, [r4] - lsls r0, 1 - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl BtlController_EmitSwitchInAnim - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0801380C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08013848 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _080137EA -_0801381E: - ldr r2, _08013850 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xD9 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xB6 - strb r1, [r0] - ldr r1, _08013854 @ =gBattleMainFunc - ldr r0, _08013858 @ =sub_801385C - str r0, [r1] -_0801383A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08013840: .4byte gBattleControllerExecFlags -_08013844: .4byte gActiveBattler -_08013848: .4byte gBattlersCount -_0801384C: .4byte gBattlerPartyIndexes -_08013850: .4byte gBattleStruct -_08013854: .4byte gBattleMainFunc -_08013858: .4byte sub_801385C - thumb_func_end sub_80137D0 - - thumb_func_start sub_801385C -sub_801385C: @ 801385C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - ldr r0, _080138A0 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _08013874 - b _08013ADA -_08013874: - ldr r0, _080138A4 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4C - ldrb r0, [r0] - cmp r0, 0 - bne _080138FA - movs r5, 0 - ldr r1, _080138A8 @ =gBattlersCount - adds r3, r1, 0 - ldrb r0, [r1] - cmp r5, r0 - bge _0801389A - ldr r2, _080138AC @ =gBattlerByTurnOrder -_0801388E: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r0, [r1] - cmp r5, r0 - blt _0801388E -_0801389A: - movs r5, 0 - b _080138F0 - .align 2, 0 -_080138A0: .4byte gBattleControllerExecFlags -_080138A4: .4byte gBattleStruct -_080138A8: .4byte gBattlersCount -_080138AC: .4byte gBattlerByTurnOrder -_080138B0: - adds r4, r5, 0x1 - mov r8, r4 - ldrb r1, [r1] - cmp r8, r1 - bge _080138EE - ldr r6, _08013924 @ =gBattlerByTurnOrder - ldr r3, _08013928 @ =gBattlersCount - lsls r7, r5, 24 -_080138C0: - adds r0, r5, r6 - ldrb r0, [r0] - adds r1, r4, r6 - ldrb r1, [r1] - movs r2, 0x1 - str r3, [sp, 0x4] - bl GetWhoStrikesFirst - lsls r0, 24 - ldr r3, [sp, 0x4] - cmp r0, 0 - beq _080138E4 - lsls r1, r4, 24 - lsrs r1, 24 - lsrs r0, r7, 24 - bl SwapTurnOrder - ldr r3, [sp, 0x4] -_080138E4: - adds r4, 0x1 - ldr r0, _08013928 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _080138C0 -_080138EE: - mov r5, r8 -_080138F0: - adds r1, r3, 0 - ldrb r0, [r3] - subs r0, 0x1 - cmp r5, r0 - blt _080138B0 -_080138FA: - ldr r4, _0801392C @ =gBattleStruct - ldr r0, [r4] - adds r0, 0xB6 - ldrb r0, [r0] - cmp r0, 0 - bne _08013930 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08013930 - ldr r0, [r4] - adds r0, 0xB6 - movs r1, 0x1 - strb r1, [r0] - b _08013ADA - .align 2, 0 -_08013924: .4byte gBattlerByTurnOrder -_08013928: .4byte gBattlersCount -_0801392C: .4byte gBattleStruct -_08013930: - ldr r2, _08013AE8 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x4C - ldr r1, _08013AEC @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0801398A - ldr r5, _08013AF0 @ =gBattlerByTurnOrder - adds r4, r2, 0 -_08013944: - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801396A - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801396A: - ldr r1, [r4] - adds r1, 0x4C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r9 - cmp r1, 0 - beq _0801397C - b _08013ADA -_0801397C: - ldr r0, [r4] - adds r0, 0x4C - ldr r1, _08013AEC @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _08013944 -_0801398A: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080139A4 - b _08013ADA -_080139A4: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080139BA - b _08013ADA -_080139BA: - ldr r2, _08013AE8 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0xD9 - ldr r1, _08013AEC @ =gBattlersCount - ldrb r0, [r0] - adds r3, r1, 0 - ldrb r1, [r3] - cmp r0, r1 - bcs _08013A14 - ldr r5, _08013AF0 @ =gBattlerByTurnOrder - adds r4, r2, 0 -_080139D0: - ldr r0, [r4] - adds r0, 0xD9 - ldrb r0, [r0] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - str r3, [sp, 0x4] - bl ItemBattleEffects - lsls r0, 24 - ldr r3, [sp, 0x4] - cmp r0, 0 - beq _080139F6 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080139F6: - ldr r1, [r4] - adds r1, 0xD9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r0, r9 - cmp r0, 0 - bne _08013ADA - ldr r0, [r4] - adds r0, 0xD9 - ldr r1, _08013AEC @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _080139D0 -_08013A14: - ldrb r0, [r3] - cmp r0, 0 - beq _08013A22 - adds r5, r0, 0 -_08013A1C: - subs r5, 0x1 - cmp r5, 0 - bne _08013A1C -_08013A22: - movs r5, 0 - ldr r1, _08013AE8 @ =gBattleStruct - mov r8, r1 - movs r7, 0x6 - ldr r6, _08013AF4 @ =gChosenActionByBattler - ldr r2, _08013AF8 @ =gChosenMoveByBattler - movs r4, 0xFF - movs r3, 0 -_08013A32: - mov r1, r8 - ldr r0, [r1] - adds r0, r5, r0 - adds r0, 0x5C - strb r7, [r0] - adds r1, r5, r6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - strh r3, [r2] - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08013A32 - movs r0, 0 - bl TurnValuesCleanUp - bl SpecialStatusesClear - ldr r0, _08013AE8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldr r1, _08013AFC @ =gAbsentBattlerFlags - ldrb r1, [r1] - strb r1, [r0] - ldr r1, _08013B00 @ =gBattleMainFunc - ldr r0, _08013B04 @ =sub_8014040 - str r0, [r1] - bl ResetSentPokesToOpponentValue - ldr r1, _08013B08 @ =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_08013A74: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08013A74 - movs r5, 0 - ldr r3, _08013AEC @ =gBattlersCount - ldr r2, _08013AE8 @ =gBattleStruct - ldr r6, _08013B0C @ =gBattleScripting - ldr r7, _08013B10 @ =gMoveResultFlags - ldrb r0, [r3] - cmp r5, r0 - bge _08013AA6 - ldr r0, _08013B14 @ =gBattleMons - movs r4, 0x9 - negs r4, r4 - adds r1, r0, 0 - adds r1, 0x50 -_08013A96: - ldr r0, [r1] - ands r0, r4 - str r0, [r1] - adds r1, 0x58 - adds r5, 0x1 - ldrb r0, [r3] - cmp r5, r0 - blt _08013A96 -_08013AA6: - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xC0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - movs r1, 0 - strb r1, [r6, 0x14] - ldr r0, [r2] - adds r0, 0x4D - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - strb r1, [r7] - bl Random - ldr r1, _08013B18 @ =gUnknown_2023E80 - strh r0, [r1] -_08013ADA: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08013AE8: .4byte gBattleStruct -_08013AEC: .4byte gBattlersCount -_08013AF0: .4byte gBattlerByTurnOrder -_08013AF4: .4byte gChosenActionByBattler -_08013AF8: .4byte gChosenMoveByBattler -_08013AFC: .4byte gAbsentBattlerFlags -_08013B00: .4byte gBattleMainFunc -_08013B04: .4byte sub_8014040 -_08013B08: .4byte gBattleCommunication -_08013B0C: .4byte gBattleScripting -_08013B10: .4byte gMoveResultFlags -_08013B14: .4byte gBattleMons -_08013B18: .4byte gUnknown_2023E80 - thumb_func_end sub_801385C - - thumb_func_start sub_8013B1C -sub_8013B1C: @ 8013B1C - push {r4-r6,lr} - ldr r0, _08013BB4 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08013BAC - ldr r1, _08013BB8 @ =gBattleMainFunc - ldr r0, _08013BBC @ =BattleTurnPassed - str r0, [r1] - ldr r3, _08013BC0 @ =gBattlersCount - ldr r1, _08013BC4 @ =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x7 -_08013B34: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08013B34 - movs r4, 0 - ldrb r3, [r3] - cmp r4, r3 - bge _08013B86 - ldr r5, _08013BC8 @ =gBattleMons - adds r6, r5, 0 - adds r6, 0x4C -_08013B4A: - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r1, r5, 0 - adds r1, 0x50 - adds r1, r2, r1 - ldr r3, [r1] - subs r0, 0x61 - ands r3, r0 - str r3, [r1] - adds r2, r6 - ldr r0, [r2] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08013B7C - movs r0, 0x80 - lsls r0, 5 - ands r3, r0 - cmp r3, 0 - beq _08013B7C - lsls r0, r4, 24 - lsrs r0, 24 - bl CancelMultiTurnMoves -_08013B7C: - adds r4, 0x1 - ldr r0, _08013BC0 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08013B4A -_08013B86: - ldr r2, _08013BCC @ =gBattleStruct - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - ldr r0, [r2] - movs r3, 0xC0 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x1 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x3] - ldr r0, _08013BD0 @ =gMoveResultFlags - strb r1, [r0] -_08013BAC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08013BB4: .4byte gBattleControllerExecFlags -_08013BB8: .4byte gBattleMainFunc -_08013BBC: .4byte BattleTurnPassed -_08013BC0: .4byte gBattlersCount -_08013BC4: .4byte gBattleCommunication -_08013BC8: .4byte gBattleMons -_08013BCC: .4byte gBattleStruct -_08013BD0: .4byte gMoveResultFlags - thumb_func_end sub_8013B1C - - thumb_func_start BattleTurnPassed -BattleTurnPassed: @ 8013BD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0x1 - bl TurnValuesCleanUp - ldr r0, _08013C78 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - bne _08013C04 - bl DoFieldEndTurnEffects - lsls r0, 24 - cmp r0, 0 - beq _08013BF8 - b _08013D20 -_08013BF8: - bl DoBattlerEndTurnEffects - lsls r0, 24 - cmp r0, 0 - beq _08013C04 - b _08013D20 -_08013C04: - bl HandleFaintedMonActions - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08013C12 - b _08013D20 -_08013C12: - ldr r0, _08013C7C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - bl HandleWishPerishSongOnTurnEnd - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08013D20 - movs r0, 0 - bl TurnValuesCleanUp - ldr r2, _08013C80 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08013C84 @ =0xfffffdff - ands r0, r1 - ldr r1, _08013C88 @ =0xfff7ffff - ands r0, r1 - ldr r1, _08013C8C @ =0xffbfffff - ands r0, r1 - ldr r1, _08013C90 @ =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r0, _08013C94 @ =gBattleScripting - strb r4, [r0, 0x18] - strb r4, [r0, 0x19] - strb r4, [r0, 0x14] - ldr r0, _08013C98 @ =gBattleMoveDamage - str r4, [r0] - ldr r0, _08013C9C @ =gMoveResultFlags - strb r4, [r0] - ldr r1, _08013CA0 @ =gBattleCommunication - movs r2, 0 - adds r0, r1, 0x4 -_08013C58: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08013C58 - ldr r0, _08013C78 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _08013CB0 - ldr r1, _08013CA4 @ =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] - ldr r1, _08013CA8 @ =gBattleMainFunc - ldr r0, _08013CAC @ =RunTurnActionsFunctions - str r0, [r1] - b _08013D20 - .align 2, 0 -_08013C78: .4byte gBattleOutcome -_08013C7C: .4byte gBattleStruct -_08013C80: .4byte gHitMarker -_08013C84: .4byte 0xfffffdff -_08013C88: .4byte 0xfff7ffff -_08013C8C: .4byte 0xffbfffff -_08013C90: .4byte 0xffefffff -_08013C94: .4byte gBattleScripting -_08013C98: .4byte gBattleMoveDamage -_08013C9C: .4byte gMoveResultFlags -_08013CA0: .4byte gBattleCommunication -_08013CA4: .4byte gCurrentActionFuncId -_08013CA8: .4byte gBattleMainFunc -_08013CAC: .4byte RunTurnActionsFunctions -_08013CB0: - ldr r1, _08013D30 @ =gBattleResults - ldrb r0, [r1, 0x13] - cmp r0, 0xFE - bhi _08013CBC - adds r0, 0x1 - strb r0, [r1, 0x13] -_08013CBC: - movs r2, 0 - ldr r4, _08013D34 @ =gBattlersCount - ldr r0, _08013D38 @ =gBattleStruct - mov r8, r0 - ldr r1, _08013D3C @ =gBattleMainFunc - mov r10, r1 - ldr r0, _08013D40 @ =gAbsentBattlerFlags - mov r12, r0 - ldr r1, _08013D44 @ =sub_8014040 - mov r9, r1 - ldrb r0, [r4] - cmp r2, r0 - bge _08013CF2 - ldr r7, _08013D48 @ =gChosenActionByBattler - movs r6, 0xFF - movs r5, 0 - ldr r3, _08013D4C @ =gChosenMoveByBattler -_08013CDE: - adds r1, r2, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - strh r5, [r3] - adds r3, 0x2 - adds r2, 0x1 - ldrb r1, [r4] - cmp r2, r1 - blt _08013CDE -_08013CF2: - movs r2, 0 - ldr r3, _08013D38 @ =gBattleStruct - movs r1, 0x6 -_08013CF8: - ldr r0, [r3] - adds r0, r2, r0 - adds r0, 0x5C - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08013CF8 - mov r2, r8 - ldr r0, [r2] - adds r0, 0x91 - mov r2, r12 - ldrb r1, [r2] - strb r1, [r0] - mov r0, r9 - mov r1, r10 - str r0, [r1] - bl Random - ldr r1, _08013D50 @ =gUnknown_2023E80 - strh r0, [r1] -_08013D20: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08013D30: .4byte gBattleResults -_08013D34: .4byte gBattlersCount -_08013D38: .4byte gBattleStruct -_08013D3C: .4byte gBattleMainFunc -_08013D40: .4byte gAbsentBattlerFlags -_08013D44: .4byte sub_8014040 -_08013D48: .4byte gChosenActionByBattler -_08013D4C: .4byte gChosenMoveByBattler -_08013D50: .4byte gUnknown_2023E80 - thumb_func_end BattleTurnPassed - - thumb_func_start IsRunningFromBattleImpossible -IsRunningFromBattleImpossible: @ 8013D54 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _08013D78 @ =gBattleMons - ldr r0, _08013D7C @ =gActiveBattler - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08013D84 - ldr r1, _08013D80 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x7] - b _08013D8E - .align 2, 0 -_08013D78: .4byte gBattleMons -_08013D7C: .4byte gActiveBattler -_08013D80: .4byte gEnigmaBerries -_08013D84: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r2, r0, 24 -_08013D8E: - ldr r1, _08013EA4 @ =gPotentialItemEffectBattler - ldr r3, _08013EA8 @ =gActiveBattler - ldrb r0, [r3] - strb r0, [r1] - cmp r2, 0x25 - bne _08013D9C - b _08013F18 -_08013D9C: - ldr r0, _08013EAC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08013DAA - b _08013F18 -_08013DAA: - ldr r1, _08013EB0 @ =gBattleMons - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x32 - bne _08013DBE - b _08013F18 -_08013DBE: - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _08013EB4 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _08013E52 - movs r7, 0 -_08013DD4: - lsrs r4, r7, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _08013DF8 - ldr r1, _08013EB0 @ =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x17 - bne _08013DF8 - b _08013F20 -_08013DF8: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _08013E42 - ldr r3, _08013EB0 @ =gBattleMons - ldr r0, _08013EA8 @ =gActiveBattler - ldrb r0, [r0] - movs r2, 0x58 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _08013E42 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08013E42 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08013E42 - adds r0, r5, 0 - muls r0, r2 - adds r0, r3 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x47 - bne _08013E42 - b _08013F3C -_08013E42: - movs r0, 0x80 - lsls r0, 17 - adds r7, r0 - adds r5, 0x1 - ldr r0, _08013EB4 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _08013DD4 -_08013E52: - ldr r4, _08013EA8 @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _08013EC4 - ldr r6, _08013EB0 @ =gBattleMons - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _08013E8A - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _08013EC4 -_08013E8A: - ldr r0, _08013EB8 @ =gBattleScripting - subs r1, r5, 0x1 - strb r1, [r0, 0x17] - ldr r2, _08013EBC @ =gLastUsedAbility - adds r0, r1, 0 - muls r0, r3 - adds r0, r6 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, _08013EC0 @ =gBattleCommunication - movs r0, 0x2 - b _08013F5C - .align 2, 0 -_08013EA4: .4byte gPotentialItemEffectBattler -_08013EA8: .4byte gActiveBattler -_08013EAC: .4byte gBattleTypeFlags -_08013EB0: .4byte gBattleMons -_08013EB4: .4byte gBattlersCount -_08013EB8: .4byte gBattleScripting -_08013EBC: .4byte gLastUsedAbility -_08013EC0: .4byte gBattleCommunication -_08013EC4: - ldr r1, _08013EF8 @ =gBattleMons - ldr r0, _08013EFC @ =gActiveBattler - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08013F00 @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _08013EEE - ldr r1, _08013F04 @ =gStatuses3 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _08013F0C -_08013EEE: - ldr r1, _08013F08 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _08013F5E - .align 2, 0 -_08013EF8: .4byte gBattleMons -_08013EFC: .4byte gActiveBattler -_08013F00: .4byte 0x0400e000 -_08013F04: .4byte gStatuses3 -_08013F08: .4byte gBattleCommunication -_08013F0C: - ldr r0, _08013F1C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08013F58 -_08013F18: - movs r0, 0 - b _08013F5E - .align 2, 0 -_08013F1C: .4byte gBattleTypeFlags -_08013F20: - ldr r0, _08013F30 @ =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, _08013F34 @ =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, _08013F38 @ =gBattleCommunication - movs r0, 0x2 - b _08013F5C - .align 2, 0 -_08013F30: .4byte gBattleScripting -_08013F34: .4byte gLastUsedAbility -_08013F38: .4byte gBattleCommunication -_08013F3C: - ldr r0, _08013F4C @ =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, _08013F50 @ =gLastUsedAbility - ldrb r0, [r2] - strb r0, [r1] - ldr r1, _08013F54 @ =gBattleCommunication - movs r0, 0x2 - b _08013F5C - .align 2, 0 -_08013F4C: .4byte gBattleScripting -_08013F50: .4byte gLastUsedAbility -_08013F54: .4byte gBattleCommunication -_08013F58: - ldr r1, _08013F68 @ =gBattleCommunication - movs r0, 0x1 -_08013F5C: - strb r0, [r1, 0x5] -_08013F5E: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08013F68: .4byte gBattleCommunication - thumb_func_end IsRunningFromBattleImpossible - - thumb_func_start sub_8013F6C -sub_8013F6C: @ 8013F6C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r0, _08014008 @ =gBattlerPartyIndexes - mov r8, r0 - ldr r1, _0801400C @ =gUnknown_203B0DC - mov r12, r1 - ldr r7, _08014010 @ =gBattleStruct - lsls r0, r5, 1 - adds r4, r0, r5 - adds r6, r0, 0 -_08013F88: - mov r0, r12 - adds r2, r3, r0 - ldr r1, [r7] - adds r0, r4, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r0, [r0] - strb r0, [r2] - adds r3, 0x1 - cmp r3, 0x2 - ble _08013F88 - mov r1, r8 - adds r0, r6, r1 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _08014010 @ =gBattleStruct - ldr r0, [r7] - adds r0, r5, r0 - adds r0, 0x5C - ldrb r0, [r0] - bl pokemon_order_func - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8127FF4 - ldr r0, _08014014 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08014018 - movs r3, 0 - adds r4, r7, 0 - adds r6, r5 - movs r0, 0x2 - adds r1, r5, 0 - eors r1, r0 - ldr r7, _0801400C @ =gUnknown_203B0DC - lsls r0, r1, 1 - adds r5, r0, r1 -_08013FE6: - ldr r0, [r4] - adds r1, r6, r3 - adds r1, r0 - adds r1, 0x60 - adds r2, r3, r7 - ldrb r0, [r2] - strb r0, [r1] - ldr r1, [r4] - adds r0, r5, r3 - adds r0, r1 - adds r0, 0x60 - ldrb r1, [r2] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _08013FE6 - b _08014032 - .align 2, 0 -_08014008: .4byte gBattlerPartyIndexes -_0801400C: .4byte gUnknown_203B0DC -_08014010: .4byte gBattleStruct -_08014014: .4byte gBattleTypeFlags -_08014018: - movs r3, 0 - adds r2, r6, r5 - ldr r4, _0801403C @ =gUnknown_203B0DC -_0801401E: - ldr r0, [r7] - adds r1, r2, r3 - adds r1, r0 - adds r1, 0x60 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x2 - ble _0801401E -_08014032: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801403C: .4byte gUnknown_203B0DC - thumb_func_end sub_8013F6C - - thumb_func_start sub_8014040 -sub_8014040: @ 8014040 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, _0801408C @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x4] - ldr r0, _08014090 @ =gActiveBattler - strb r1, [r0] - ldr r0, _08014094 @ =gBattlersCount - adds r2, r0, 0 - ldrb r0, [r2] - cmp r1, r0 - bcc _08014064 - bl _08014C68 -_08014064: - ldr r4, _08014090 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0801408C @ =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x6 - bls _08014080 - bl _08014C4E -_08014080: - lsls r0, 2 - ldr r1, _08014098 @ =_0801409C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801408C: .4byte gBattleCommunication -_08014090: .4byte gActiveBattler -_08014094: .4byte gBattlersCount -_08014098: .4byte _0801409C - .align 2, 0 -_0801409C: - .4byte _080140B8 - .4byte _080141DC - .4byte _08014764 - .4byte _08014AA0 - .4byte _08014B44 - .4byte _08014B88 - .4byte _08014C20 -_080140B8: - ldr r0, _08014150 @ =gActiveBattler - ldrb r1, [r0] - ldr r4, _08014154 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0 - adds r1, 0x5C - movs r0, 0x6 - strb r0, [r1] - ldr r0, _08014158 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08014114 - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _08014114 - eors r5, r1 - adds r0, r5, 0 - bl GetBattlerAtPosition - ldr r1, [r4] - adds r1, 0x91 - ldrb r1, [r1] - ldr r2, _0801415C @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08014114 - ldr r4, _08014160 @ =gBattleCommunication - adds r0, r5, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x4 - beq _08014114 - bl _08014C4E -_08014114: - ldr r0, _08014154 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x91 - ldrb r3, [r0] - ldr r1, _0801415C @ =gBitTable - ldr r4, _08014150 @ =gActiveBattler - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ands r3, r0 - cmp r3, 0 - beq _0801417C - ldr r0, _08014164 @ =gChosenActionByBattler - adds r0, r2, r0 - movs r1, 0xD - strb r1, [r0] - ldr r0, _08014158 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08014168 - ldr r0, _08014160 @ =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x4 - strb r0, [r1] - bl _08014C4E - .align 2, 0 -_08014150: .4byte gActiveBattler -_08014154: .4byte gBattleStruct -_08014158: .4byte gBattleTypeFlags -_0801415C: .4byte gBitTable -_08014160: .4byte gBattleCommunication -_08014164: .4byte gChosenActionByBattler -_08014168: - ldr r0, _08014178 @ =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r0, 0x3 - strb r0, [r1] - bl _08014C4E - .align 2, 0 -_08014178: .4byte gBattleCommunication -_0801417C: - ldr r1, _080141B0 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0801419C - movs r0, 0x80 - lsls r0, 15 - ands r1, r0 - cmp r1, 0 - beq _080141BC -_0801419C: - ldr r0, _080141B4 @ =gChosenActionByBattler - adds r0, r2, r0 - strb r3, [r0] - ldr r1, _080141B8 @ =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - bl _08014C4E - .align 2, 0 -_080141B0: .4byte gBattleMons -_080141B4: .4byte gChosenActionByBattler -_080141B8: .4byte gBattleCommunication -_080141BC: - ldr r0, _080141D4 @ =gChosenActionByBattler - ldrb r1, [r0] - ldr r0, _080141D8 @ =gBattleBufferB - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - movs r0, 0 - bl BtlController_EmitChooseAction - bl _08014B26 - .align 2, 0 -_080141D4: .4byte gChosenActionByBattler -_080141D8: .4byte gBattleBufferB -_080141DC: - ldr r4, _08014234 @ =gBattleControllerExecFlags - ldr r1, _08014238 @ =gBitTable - ldr r3, _0801423C @ =gActiveBattler - ldrb r5, [r3] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r0, r2, 4 - movs r1, 0xF0 - lsls r1, 24 - orrs r0, r1 - orrs r0, r2 - lsls r1, r2, 8 - orrs r0, r1 - lsls r2, 12 - orrs r0, r2 - ldr r1, [r4] - ands r1, r0 - mov r8, r3 - cmp r1, 0 - beq _0801420A - bl _08014C4E -_0801420A: - ldr r2, _08014240 @ =gChosenActionByBattler - adds r2, r5, r2 - ldr r1, _08014244 @ =gBattleBufferB - lsls r0, r5, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldrb r0, [r3] - lsls r0, 9 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xC - bls _08014228 - b _080146AC -_08014228: - lsls r0, 2 - ldr r1, _08014248 @ =_0801424C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08014234: .4byte gBattleControllerExecFlags -_08014238: .4byte gBitTable -_0801423C: .4byte gActiveBattler -_08014240: .4byte gChosenActionByBattler -_08014244: .4byte gBattleBufferB -_08014248: .4byte _0801424C - .align 2, 0 -_0801424C: - .4byte _08014280 - .4byte _080143D4 - .4byte _08014450 - .4byte _080146AC - .4byte _080146AC - .4byte _08014620 - .4byte _080146AC - .4byte _080146AC - .4byte _080146AC - .4byte _080146AC - .4byte _080146AC - .4byte _080146AC - .4byte _08014670 -_08014280: - bl AreAllMovesUnusable - lsls r0, 24 - cmp r0, 0 - beq _080142D8 - ldr r0, _080142C8 @ =gBattleCommunication - ldr r3, _080142CC @ =gActiveBattler - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x5 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, _080142D0 @ =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r1, [r3] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x3 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, [r2] - adds r2, r1, r2 - ldr r0, _080142D4 @ =gBattleBufferB - lsls r1, 9 - adds r0, 0x3 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r2, 0xC] - bl _08014C78 - .align 2, 0 -_080142C8: .4byte gBattleCommunication -_080142CC: .4byte gActiveBattler -_080142D0: .4byte gBattleStruct -_080142D4: .4byte gBattleBufferB -_080142D8: - ldr r3, _08014318 @ =gDisableStructs - ldr r5, _0801431C @ =gActiveBattler - ldrb r4, [r5] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r3 - ldrh r2, [r0, 0x6] - cmp r2, 0 - beq _0801432C - ldr r1, _08014320 @ =gChosenMoveByBattler - lsls r0, r4, 1 - adds r0, r1 - strh r2, [r0] - ldrb r2, [r5] - ldr r0, _08014324 @ =gBattleStruct - ldr r1, [r0] - adds r1, r2, r1 - adds r1, 0x80 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0xC] - strb r0, [r1] - ldr r1, _08014328 @ =gBattleCommunication - ldrb r0, [r5] - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - bl _08014C78 - .align 2, 0 -_08014318: .4byte gDisableStructs -_0801431C: .4byte gActiveBattler -_08014320: .4byte gChosenMoveByBattler -_08014324: .4byte gBattleStruct -_08014328: .4byte gBattleCommunication -_0801432C: - add r2, sp, 0x4 - ldr r3, _080143CC @ =gBattleMons - movs r1, 0x58 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x21 - ldrb r0, [r0] - strb r0, [r2, 0x12] - ldrb r0, [r5] - muls r0, r1 - adds r0, r3 - adds r0, 0x22 - ldrb r0, [r0] - strb r0, [r2, 0x13] - movs r4, 0 - mov r1, sp - adds r1, 0xC - str r1, [sp, 0x18] - add r2, sp, 0x10 - mov r10, r2 - mov r8, r3 - adds r7, r5, 0 - movs r6, 0x58 - movs r3, 0xC - add r3, r8 - mov r9, r3 - add r5, sp, 0x4 -_0801436E: - lsls r2, r4, 1 - ldrb r0, [r7] - muls r0, r6 - adds r0, r2, r0 - add r0, r9 - ldrh r0, [r0] - strh r0, [r5] - ldr r0, [sp, 0x18] - adds r3, r0, r4 - ldrb r0, [r7] - muls r0, r6 - adds r0, r4, r0 - mov r1, r8 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r2, r1 - add r2, r9 - ldrh r0, [r2] - add r1, r8 - adds r1, 0x3B - ldrb r1, [r1] - lsls r2, r4, 24 - lsrs r2, 24 - bl CalculatePPWithBonus - mov r2, r10 - adds r1, r2, r4 - strb r0, [r1] - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0801436E - ldr r0, _080143D0 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - movs r0, 0 - movs r2, 0 - add r3, sp, 0x4 - bl BtlController_EmitChooseMove - b _0801460E - .align 2, 0 -_080143CC: .4byte gBattleMons -_080143D0: .4byte gBattleTypeFlags -_080143D4: - ldr r0, _08014410 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08014414 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - beq _08014428 - ldr r1, _08014418 @ =gSelectionBattleScripts - mov r3, r8 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _0801441C @ =gUnknown_81D96A4 - str r1, [r0] - ldr r0, _08014420 @ =gBattleCommunication - ldrb r1, [r3] - adds r1, r0 - movs r3, 0 - movs r0, 0x5 - strb r0, [r1] - mov r0, r8 - ldrb r1, [r0] - ldr r2, _08014424 @ =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - mov r1, r8 - ldrb r0, [r1] - b _0801472C - .align 2, 0 -_08014410: .4byte gBattleTypeFlags -_08014414: .4byte 0x00000902 -_08014418: .4byte gSelectionBattleScripts -_0801441C: .4byte gUnknown_81D96A4 -_08014420: .4byte gBattleCommunication -_08014424: .4byte gBattleStruct -_08014428: - ldr r2, _08014448 @ =gBattleStruct - ldr r4, _0801444C @ =gActiveBattler - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - ldr r1, [r2] - adds r1, r0 - movs r0, 0 - bl BtlController_EmitChooseItem - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080146AC - .align 2, 0 -_08014448: .4byte gBattleStruct -_0801444C: .4byte gActiveBattler -_08014450: - ldr r5, _080144A8 @ =gActiveBattler - ldrb r0, [r5] - ldr r3, _080144AC @ =gBattleStruct - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x58 - ldr r2, _080144B0 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r7, _080144B4 @ =gBattleMons - ldrb r2, [r5] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080144B8 @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _08014492 - ldr r0, _080144BC @ =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - lsls r0, 3 - ands r1, r0 - cmp r1, 0 - beq _080144C0 -_08014492: - lsls r1, r2, 1 - adds r1, r2 - adds r1, 0x60 - ldr r0, [r3] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x6 - b _080145DE - .align 2, 0 -_080144A8: .4byte gActiveBattler -_080144AC: .4byte gBattleStruct -_080144B0: .4byte gBattlerPartyIndexes -_080144B4: .4byte gBattleMons -_080144B8: .4byte 0x0400e000 -_080144BC: .4byte gStatuses3 -_080144C0: - str r1, [sp] - movs r0, 0xC - adds r1, r2, 0 - movs r2, 0x17 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08014548 - ldrb r1, [r5] - str r4, [sp] - movs r0, 0xC - movs r2, 0x47 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08014510 - ldrb r0, [r5] - muls r0, r6 - adds r1, r0, r7 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08014510 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08014510 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _08014548 -_08014510: - ldr r5, _08014574 @ =gActiveBattler - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08014584 - ldr r2, _08014578 @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _08014548 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _08014584 -_08014548: - subs r1, r4, 0x1 - lsls r1, 4 - movs r0, 0x4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _0801457C @ =gLastUsedAbility - ldrb r3, [r0] - ldr r4, _08014580 @ =gBattleStruct - ldr r0, _08014574 @ =gActiveBattler - ldrb r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - adds r2, 0x60 - ldr r0, [r4] - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r2, 0x6 - bl BtlController_EmitChoosePokemon - b _0801460E - .align 2, 0 -_08014574: .4byte gActiveBattler -_08014578: .4byte gBattleMons -_0801457C: .4byte gLastUsedAbility -_08014580: .4byte gBattleStruct -_08014584: - ldr r0, _080145A8 @ =gActiveBattler - ldrb r1, [r0] - mov r8, r0 - cmp r1, 0x2 - bne _080145B4 - ldr r0, _080145AC @ =gChosenActionByBattler - ldrb r0, [r0] - cmp r0, 0x2 - bne _080145B4 - ldr r0, _080145B0 @ =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5C - ldrb r2, [r0] - mov r0, r8 - ldrb r1, [r0] - b _080145D0 - .align 2, 0 -_080145A8: .4byte gActiveBattler -_080145AC: .4byte gChosenActionByBattler -_080145B0: .4byte gBattleStruct -_080145B4: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x3 - bne _080145F0 - ldr r0, _080145E8 @ =gChosenActionByBattler - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _080145F0 - ldr r0, _080145EC @ =gBattleStruct - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5D - ldrb r2, [r0] - ldrb r1, [r1] -_080145D0: - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - adds r3, r0 - str r3, [sp] - movs r0, 0 - movs r1, 0 -_080145DE: - movs r3, 0 - bl BtlController_EmitChoosePokemon - b _0801460E - .align 2, 0 -_080145E8: .4byte gChosenActionByBattler -_080145EC: .4byte gBattleStruct -_080145F0: - ldr r2, _08014618 @ =gBattleStruct - ldr r0, _0801461C @ =gActiveBattler - ldrb r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r2] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - movs r3, 0 - bl BtlController_EmitChoosePokemon -_0801460E: - ldr r0, _0801461C @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - b _080146AC - .align 2, 0 -_08014618: .4byte gBattleStruct -_0801461C: .4byte gActiveBattler -_08014620: - bl IsPlayerPartyAndPokemonStorageFull - lsls r0, 24 - cmp r0, 0 - beq _080146AC - ldr r1, _0801465C @ =gSelectionBattleScripts - ldr r3, _08014660 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _08014664 @ =gUnknown_81D8949 - str r1, [r0] - ldr r0, _08014668 @ =gBattleCommunication - ldrb r1, [r3] - adds r1, r0 - movs r4, 0 - movs r0, 0x5 - strb r0, [r1] - ldrb r1, [r3] - ldr r2, _0801466C @ =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r4, [r1] - ldrb r0, [r3] - ldr r1, [r2] - adds r0, r1 - adds r0, 0x84 - strb r4, [r0] - b _08014C78 - .align 2, 0 -_0801465C: .4byte gSelectionBattleScripts -_08014660: .4byte gActiveBattler -_08014664: .4byte gUnknown_81D8949 -_08014668: .4byte gBattleCommunication -_0801466C: .4byte gBattleStruct -_08014670: - ldr r4, _080146A8 @ =gBattleCommunication - mov r2, r8 - ldrb r1, [r2] - adds r1, r4 - movs r5, 0 - movs r0, 0x6 - strb r0, [r1] - ldrb r0, [r2] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - strb r5, [r0] - movs r0, 0 - bl BtlController_EmitEndBounceEffect - mov r3, r8 - ldrb r0, [r3] - bl MarkBattlerForControllerExec - b _08014C78 - .align 2, 0 -_080146A8: .4byte gBattleCommunication -_080146AC: - ldr r0, _080146D8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA - ands r0, r1 - cmp r0, 0x8 - bne _080146EC - ldr r0, _080146DC @ =gBattleBufferB - ldr r4, _080146E0 @ =gActiveBattler - ldrb r1, [r4] - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _080146EC - ldr r0, _080146E4 @ =gUnknown_81D8924 - bl BattleScriptExecute - ldr r1, _080146E8 @ =gBattleCommunication - ldrb r0, [r4] - adds r0, r1 - b _08014926 - .align 2, 0 -_080146D8: .4byte gBattleTypeFlags -_080146DC: .4byte gBattleBufferB -_080146E0: .4byte gActiveBattler -_080146E4: .4byte gUnknown_81D8924 -_080146E8: .4byte gBattleCommunication -_080146EC: - bl IsRunningFromBattleImpossible - lsls r0, 24 - cmp r0, 0 - beq _08014750 - ldr r0, _08014738 @ =gBattleBufferB - ldr r4, _0801473C @ =gActiveBattler - ldrb r2, [r4] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - bne _08014750 - ldr r1, _08014740 @ =gSelectionBattleScripts - lsls r0, r2, 2 - adds r0, r1 - ldr r1, _08014744 @ =gUnknown_81D8943 - str r1, [r0] - ldr r0, _08014748 @ =gBattleCommunication - ldrb r1, [r4] - adds r1, r0 - movs r3, 0 - movs r0, 0x5 - strb r0, [r1] - ldrb r1, [r4] - ldr r2, _0801474C @ =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r0, [r4] -_0801472C: - ldr r1, [r2] - adds r0, r1 - adds r0, 0x84 - strb r3, [r0] - b _08014C78 - .align 2, 0 -_08014738: .4byte gBattleBufferB -_0801473C: .4byte gActiveBattler -_08014740: .4byte gSelectionBattleScripts -_08014744: .4byte gUnknown_81D8943 -_08014748: .4byte gBattleCommunication -_0801474C: .4byte gBattleStruct -_08014750: - ldr r2, _0801475C @ =gBattleCommunication - ldr r0, _08014760 @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_0801475C: .4byte gBattleCommunication -_08014760: .4byte gActiveBattler -_08014764: - ldr r4, _080147A8 @ =gBattleControllerExecFlags - ldr r1, _080147AC @ =gBitTable - ldr r3, _080147B0 @ =gActiveBattler - ldrb r5, [r3] - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - lsls r0, r2, 4 - movs r1, 0xF0 - lsls r1, 24 - orrs r0, r1 - orrs r0, r2 - lsls r1, r2, 8 - orrs r0, r1 - lsls r2, 12 - orrs r0, r2 - ldr r1, [r4] - ands r1, r0 - mov r8, r3 - cmp r1, 0 - beq _08014790 - b _08014C4E -_08014790: - ldr r1, _080147B4 @ =gChosenActionByBattler - adds r0, r5, r1 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x9 - bls _0801479E - b _08014C4E -_0801479E: - lsls r0, 2 - ldr r1, _080147B8 @ =_080147BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080147A8: .4byte gBattleControllerExecFlags -_080147AC: .4byte gBitTable -_080147B0: .4byte gActiveBattler -_080147B4: .4byte gChosenActionByBattler -_080147B8: .4byte _080147BC - .align 2, 0 -_080147BC: - .4byte _080147E4 - .4byte _080148D8 - .4byte _08014910 - .4byte _08014A08 - .4byte _08014A2C - .4byte _08014A40 - .4byte _08014A54 - .4byte _08014A54 - .4byte _08014A68 - .4byte _08014A8C -_080147E4: - ldr r0, _08014804 @ =gBattleBufferB - mov r1, r8 - ldrb r4, [r1] - lsls r1, r4, 9 - adds r2, r0, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r7, r0, 0 - cmp r1, 0x9 - bgt _08014808 - cmp r1, 0x3 - blt _08014808 - adds r0, r4, r3 - strb r1, [r0] - b _08014C78 - .align 2, 0 -_08014804: .4byte gBattleBufferB -_08014808: - adds r3, r7, 0 - mov r5, r8 - ldrb r4, [r5] - lsls r1, r4, 9 - adds r6, r3, 0x2 - adds r0, r1, r6 - ldrb r2, [r0] - adds r3, 0x3 - mov r9, r3 - add r1, r9 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - ldr r0, _08014830 @ =0x0000ffff - cmp r2, r0 - bne _08014838 - ldr r0, _08014834 @ =gBattleCommunication - adds r0, r4, r0 - b _08014926 - .align 2, 0 -_08014830: .4byte 0x0000ffff -_08014834: .4byte gBattleCommunication -_08014838: - bl TrySetCantSelectMoveBattleScript - lsls r0, 24 - cmp r0, 0 - beq _0801487C - ldr r0, _08014874 @ =gBattleCommunication - ldrb r1, [r5] - adds r1, r0 - movs r3, 0 - movs r0, 0x5 - strb r0, [r1] - ldrb r1, [r5] - ldr r2, _08014878 @ =gBattleStruct - ldr r0, [r2] - adds r1, r0 - adds r1, 0x54 - strb r3, [r1] - ldrb r0, [r5] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - strb r3, [r0] - ldrb r1, [r5] - ldr r0, [r2] - adds r1, r0 - adds r1, 0x84 - movs r0, 0x1 - strb r0, [r1] - b _08014C78 - .align 2, 0 -_08014874: .4byte gBattleCommunication -_08014878: .4byte gBattleStruct -_0801487C: - mov r2, r8 - ldrb r0, [r2] - ldr r4, _080148C8 @ =gBattleStruct - ldr r1, [r4] - adds r1, r0, r1 - adds r1, 0x80 - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _080148CC @ =gChosenMoveByBattler - ldrb r2, [r2] - lsls r5, r2, 1 - adds r5, r0 - ldr r3, _080148D0 @ =gBattleMons - ldr r4, [r4] - adds r0, r2, r4 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strh r0, [r5] - mov r3, r8 - ldrb r0, [r3] - adds r4, r0, r4 - lsls r0, 9 - add r0, r9 - ldrb r0, [r0] - strb r0, [r4, 0xC] - ldr r0, _080148D4 @ =gBattleCommunication - ldrb r1, [r3] - b _08014B30 - .align 2, 0 -_080148C8: .4byte gBattleStruct -_080148CC: .4byte gChosenMoveByBattler -_080148D0: .4byte gBattleMons -_080148D4: .4byte gBattleCommunication -_080148D8: - ldr r2, _08014900 @ =gBattleBufferB - ldr r5, _08014904 @ =gActiveBattler - ldrb r4, [r5] - lsls r1, r4, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - bne _080148F6 - b _08014C48 -_080148F6: - ldr r0, _08014908 @ =gLastUsedItem - strh r3, [r0] - ldr r0, _0801490C @ =gBattleCommunication - ldrb r1, [r5] - b _08014B30 - .align 2, 0 -_08014900: .4byte gBattleBufferB -_08014904: .4byte gActiveBattler -_08014908: .4byte gLastUsedItem -_0801490C: .4byte gBattleCommunication -_08014910: - ldr r6, _0801492C @ =gBattleBufferB - ldr r7, _08014930 @ =gActiveBattler - ldrb r2, [r7] - lsls r0, r2, 9 - adds r1, r6, 0x1 - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0x6 - bne _08014938 - ldr r0, _08014934 @ =gBattleCommunication - adds r0, r2, r0 -_08014926: - movs r1, 0 - strb r1, [r0] - b _08014C4E - .align 2, 0 -_0801492C: .4byte gBattleBufferB -_08014930: .4byte gActiveBattler -_08014934: .4byte gBattleCommunication -_08014938: - ldr r0, _080149FC @ =gBattleStruct - mov r12, r0 - ldr r0, [r0] - adds r0, r2, r0 - adds r0, 0x5C - strb r1, [r0] - ldr r0, _08014A00 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080149F6 - ldrb r0, [r7] - mov r1, r12 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - mov r2, r12 - ldr r1, [r2] - lsls r2, r0, 1 - adds r2, r0 - adds r2, r1 - adds r2, 0x60 - lsls r0, 9 - adds r5, r6, 0x2 - adds r0, r5 - ldrb r1, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r1 - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r7] - mov r0, r12 - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0x61 - lsls r1, 9 - adds r6, 0x3 - adds r1, r6 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - mov r1, r12 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - mov r1, r12 - ldr r2, [r1] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - mov r2, r12 - ldr r0, [r2] - lsls r1, r4, 1 - adds r1, r4 - adds r1, r0 - adds r1, 0x62 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] -_080149F6: - ldr r0, _08014A04 @ =gBattleCommunication - ldrb r1, [r7] - b _08014B30 - .align 2, 0 -_080149FC: .4byte gBattleStruct -_08014A00: .4byte gBattleTypeFlags -_08014A04: .4byte gBattleCommunication -_08014A08: - ldr r2, _08014A20 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, _08014A24 @ =gBattleCommunication - ldr r0, _08014A28 @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A20: .4byte gHitMarker -_08014A24: .4byte gBattleCommunication -_08014A28: .4byte gActiveBattler -_08014A2C: - ldr r2, _08014A38 @ =gBattleCommunication - ldr r0, _08014A3C @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A38: .4byte gBattleCommunication -_08014A3C: .4byte gActiveBattler -_08014A40: - ldr r2, _08014A4C @ =gBattleCommunication - ldr r0, _08014A50 @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A4C: .4byte gBattleCommunication -_08014A50: .4byte gActiveBattler -_08014A54: - ldr r2, _08014A60 @ =gBattleCommunication - ldr r0, _08014A64 @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A60: .4byte gBattleCommunication -_08014A64: .4byte gActiveBattler -_08014A68: - ldr r2, _08014A80 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 8 - orrs r0, r1 - str r0, [r2] - ldr r2, _08014A84 @ =gBattleCommunication - ldr r0, _08014A88 @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A80: .4byte gHitMarker -_08014A84: .4byte gBattleCommunication -_08014A88: .4byte gActiveBattler -_08014A8C: - ldr r2, _08014A98 @ =gBattleCommunication - ldr r0, _08014A9C @ =gActiveBattler - ldrb r1, [r0] - adds r1, r2 - b _08014B32 - .align 2, 0 -_08014A98: .4byte gBattleCommunication -_08014A9C: .4byte gActiveBattler -_08014AA0: - ldr r3, _08014B08 @ =gBattleControllerExecFlags - ldr r4, _08014B0C @ =gBitTable - ldr r0, _08014B10 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - beq _08014ACA - b _08014C4E -_08014ACA: - ldr r0, _08014B14 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _08014AFE - movs r1, 0x2 - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - bne _08014AFE - adds r0, r5, 0 - eors r0, r1 - bl GetBattlerAtPosition - ldr r1, _08014B18 @ =gBattleStruct - ldr r1, [r1] - adds r1, 0x91 - ldrb r1, [r1] - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08014B1C -_08014AFE: - movs r0, 0 - movs r1, 0 - bl BtlController_EmitLinkStandbyMsg - b _08014B24 - .align 2, 0 -_08014B08: .4byte gBattleControllerExecFlags -_08014B0C: .4byte gBitTable -_08014B10: .4byte gActiveBattler -_08014B14: .4byte gBattleTypeFlags -_08014B18: .4byte gBattleStruct -_08014B1C: - movs r0, 0 - movs r1, 0x1 - bl BtlController_EmitLinkStandbyMsg -_08014B24: - ldr r4, _08014B3C @ =gActiveBattler -_08014B26: - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, _08014B40 @ =gBattleCommunication - ldrb r1, [r4] -_08014B30: - adds r1, r0 -_08014B32: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08014C4E - .align 2, 0 -_08014B3C: .4byte gActiveBattler -_08014B40: .4byte gBattleCommunication -_08014B44: - ldr r3, _08014B78 @ =gBattleControllerExecFlags - ldr r1, _08014B7C @ =gBitTable - ldr r0, _08014B80 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _08014C4E - ldr r1, _08014B84 @ =gBattleCommunication - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - b _08014C4E - .align 2, 0 -_08014B78: .4byte gBattleControllerExecFlags -_08014B7C: .4byte gBitTable -_08014B80: .4byte gActiveBattler -_08014B84: .4byte gBattleCommunication -_08014B88: - ldr r5, _08014BA8 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, _08014BAC @ =gBattleStruct - ldr r0, [r0] - adds r1, r2, r0 - adds r0, r1, 0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _08014BB4 - ldr r0, _08014BB0 @ =gBattleCommunication - adds r0, r2, r0 - adds r1, 0x84 - ldrb r1, [r1] - strb r1, [r0] - b _08014C4E - .align 2, 0 -_08014BA8: .4byte gActiveBattler -_08014BAC: .4byte gBattleStruct -_08014BB0: .4byte gBattleCommunication -_08014BB4: - ldr r0, _08014C08 @ =gBattlerAttacker - strb r2, [r0] - ldr r7, _08014C0C @ =gBattlescriptCurrInstr - ldr r6, _08014C10 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r4, [r0] - str r4, [r7] - ldr r3, _08014C14 @ =gBattleControllerExecFlags - ldr r1, _08014C18 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - lsls r1, r2, 4 - movs r0, 0xF0 - lsls r0, 24 - orrs r1, r0 - orrs r1, r2 - lsls r0, r2, 8 - orrs r1, r0 - lsls r2, 12 - orrs r1, r2 - ldr r0, [r3] - ands r0, r1 - cmp r0, 0 - bne _08014BFA - ldr r0, _08014C1C @ =gBattleScriptingCommandsTable - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_08014BFA: - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r1, [r7] - str r1, [r0] - b _08014C4E - .align 2, 0 -_08014C08: .4byte gBattlerAttacker -_08014C0C: .4byte gBattlescriptCurrInstr -_08014C10: .4byte gSelectionBattleScripts -_08014C14: .4byte gBattleControllerExecFlags -_08014C18: .4byte gBitTable -_08014C1C: .4byte gBattleScriptingCommandsTable -_08014C20: - ldr r3, _08014C88 @ =gBattleControllerExecFlags - ldr r1, _08014C8C @ =gBitTable - ldr r0, _08014C90 @ =gActiveBattler - ldrb r4, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - lsls r0, r2, 4 - movs r1, 0xF0 - lsls r1, 24 - orrs r0, r1 - orrs r0, r2 - lsls r1, r2, 8 - orrs r0, r1 - lsls r2, 12 - orrs r0, r2 - ldr r3, [r3] - ands r3, r0 - cmp r3, 0 - bne _08014C4E -_08014C48: - ldr r0, _08014C94 @ =gBattleCommunication - adds r0, r4, r0 - strb r3, [r0] -_08014C4E: - ldr r0, _08014C90 @ =gActiveBattler - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _08014C98 @ =gBattlersCount - lsls r1, 24 - lsrs r1, 24 - adds r2, r0, 0 - ldrb r3, [r2] - cmp r1, r3 - bcs _08014C68 - bl _08014064 -_08014C68: - ldr r0, _08014C94 @ =gBattleCommunication - ldrb r0, [r0, 0x4] - ldrb r2, [r2] - cmp r0, r2 - bne _08014C78 - ldr r1, _08014C9C @ =gBattleMainFunc - ldr r0, _08014CA0 @ =sub_80150A8 - str r0, [r1] -_08014C78: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08014C88: .4byte gBattleControllerExecFlags -_08014C8C: .4byte gBitTable -_08014C90: .4byte gActiveBattler -_08014C94: .4byte gBattleCommunication -_08014C98: .4byte gBattlersCount -_08014C9C: .4byte gBattleMainFunc -_08014CA0: .4byte sub_80150A8 - thumb_func_end sub_8014040 - - thumb_func_start SwapTurnOrder -SwapTurnOrder: @ 8014CA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08014CD0 @ =gActionsByTurnOrder - adds r4, r0, r2 - ldrb r5, [r4] - adds r2, r1, r2 - ldrb r3, [r2] - strb r3, [r4] - strb r5, [r2] - ldr r2, _08014CD4 @ =gBattlerByTurnOrder - adds r0, r2 - ldrb r5, [r0] - adds r1, r2 - ldrb r2, [r1] - strb r2, [r0] - strb r5, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08014CD0: .4byte gActionsByTurnOrder -_08014CD4: .4byte gBattlerByTurnOrder - thumb_func_end SwapTurnOrder - - thumb_func_start GetWhoStrikesFirst -GetWhoStrikesFirst: @ 8014CD8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08014DA0 - ldr r1, [sp, 0x8] - str r1, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08014DA0 - ldr r1, _08014D58 @ =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x21 - bne _08014D44 - ldr r0, _08014D5C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08014D54 -_08014D44: - cmp r3, 0x22 - bne _08014D60 - ldr r0, _08014D5C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08014D60 -_08014D54: - movs r3, 0x2 - b _08014D62 - .align 2, 0 -_08014D58: .4byte gBattleMons -_08014D5C: .4byte gBattleWeather -_08014D60: - movs r3, 0x1 -_08014D62: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r2, _08014D98 @ =gBattleMons - adds r0, r2 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x21 - bne _08014D82 - ldr r0, _08014D9C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08014D92 -_08014D82: - cmp r2, 0x22 - bne _08014DA2 - ldr r0, _08014D9C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08014DA2 -_08014D92: - movs r7, 0x2 - b _08014DA4 - .align 2, 0 -_08014D98: .4byte gBattleMons -_08014D9C: .4byte gBattleWeather -_08014DA0: - movs r3, 0x1 -_08014DA2: - movs r7, 0x1 -_08014DA4: - ldr r1, _08014DE8 @ =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - muls r3, r0 - ldr r2, _08014DEC @ =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - mov r8, r0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _08014DF4 - ldr r1, _08014DF0 @ =gEnigmaBerries - mov r3, r9 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _08014E08 - .align 2, 0 -_08014DE8: .4byte gBattleMons -_08014DEC: .4byte gStatStageRatios -_08014DF0: .4byte gEnigmaBerries -_08014DF4: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_08014E08: - ldr r0, _08014EC4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08014E3C - ldr r0, _08014EC8 @ =0x00000822 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08014E3C - mov r0, r9 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08014E3C - movs r0, 0x6E - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x64 - bl __udivsi3 - mov r8, r0 -_08014E3C: - cmp r6, 0x18 - bne _08014E46 - mov r2, r8 - lsrs r2, 1 - mov r8, r2 -_08014E46: - ldr r1, _08014ECC @ =gBattleMons - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08014E64 - mov r0, r8 - lsrs r0, 2 - mov r8, r0 -_08014E64: - cmp r6, 0x1A - bne _08014E80 - ldr r0, _08014ED0 @ =gUnknown_2023E80 - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _08014E80 - movs r1, 0x1 - negs r1, r1 - mov r8, r1 -_08014E80: - ldr r1, _08014ECC @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r4, r0, r1 - ldrh r0, [r4, 0x6] - adds r3, r0, 0 - muls r3, r7 - ldr r2, _08014ED4 @ =gStatStageRatios - movs r1, 0x1B - ldrsb r1, [r4, r1] - lsls r1, 1 - adds r0, r1, r2 - ldrb r0, [r0] - muls r0, r3 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - bl __divsi3 - adds r7, r0, 0 - ldrh r0, [r4, 0x2E] - cmp r0, 0xAF - bne _08014EDC - ldr r1, _08014ED8 @ =gEnigmaBerries - mov r3, r10 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - ldrb r5, [r0, 0x1A] - b _08014EF0 - .align 2, 0 -_08014EC4: .4byte gBattleTypeFlags -_08014EC8: .4byte 0x00000822 -_08014ECC: .4byte gBattleMons -_08014ED0: .4byte gUnknown_2023E80 -_08014ED4: .4byte gStatStageRatios -_08014ED8: .4byte gEnigmaBerries -_08014EDC: - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r5, r0, 24 -_08014EF0: - ldr r0, _08014F68 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08014F20 - ldr r0, _08014F6C @ =0x00000822 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08014F20 - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08014F20 - movs r0, 0x6E - muls r0, r7 - movs r1, 0x64 - bl __udivsi3 - adds r7, r0, 0 -_08014F20: - cmp r6, 0x18 - bne _08014F26 - lsrs r7, 1 -_08014F26: - ldr r2, _08014F70 @ =gBattleMons - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08014F42 - lsrs r7, 2 -_08014F42: - cmp r6, 0x1A - bne _08014F5C - ldr r0, _08014F74 @ =gUnknown_2023E80 - ldrh r4, [r0] - lsls r0, r5, 16 - subs r0, r5 - movs r1, 0x64 - bl __divsi3 - cmp r4, r0 - bge _08014F5C - movs r7, 0x1 - negs r7, r7 -_08014F5C: - ldr r2, [sp, 0x4] - cmp r2, 0 - beq _08014F78 - movs r3, 0 - b _08015014 - .align 2, 0 -_08014F68: .4byte gBattleTypeFlags -_08014F6C: .4byte 0x00000822 -_08014F70: .4byte gBattleMons -_08014F74: .4byte gUnknown_2023E80 -_08014F78: - ldr r0, _08014F98 @ =gChosenActionByBattler - mov r3, r9 - adds r1, r3, r0 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0 - bne _08014FC8 - ldr r0, _08014F9C @ =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _08014FA0 - movs r3, 0xA5 - b _08014FCA - .align 2, 0 -_08014F98: .4byte gChosenActionByBattler -_08014F9C: .4byte gProtectStructs -_08014FA0: - ldr r0, _08014FC0 @ =gBattleStruct - ldr r0, [r0] - add r0, r9 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r3, r9 - muls r3, r1 - adds r1, r3, 0 - adds r0, r1 - ldr r1, _08014FC4 @ =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r3, [r0] - b _08014FCA - .align 2, 0 -_08014FC0: .4byte gBattleStruct -_08014FC4: .4byte gBattleMons -_08014FC8: - movs r3, 0 -_08014FCA: - mov r1, r10 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08015014 - ldr r0, _08014FE8 @ =gProtectStructs - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _08014FEC - movs r2, 0xA5 - b _08015016 - .align 2, 0 -_08014FE8: .4byte gProtectStructs -_08014FEC: - ldr r0, _0801500C @ =gBattleStruct - ldr r0, [r0] - add r0, r10 - adds r0, 0x80 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - mov r2, r10 - muls r2, r1 - adds r1, r2, 0 - adds r0, r1 - ldr r1, _08015010 @ =gBattleMons - adds r1, 0xC - adds r0, r1 - ldrh r2, [r0] - b _08015016 - .align 2, 0 -_0801500C: .4byte gBattleStruct -_08015010: .4byte gBattleMons -_08015014: - movs r2, 0 -_08015016: - ldr r4, _08015060 @ =gBattleMoves - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - movs r1, 0x7 - ldrsb r1, [r0, r1] - lsls r3, r2, 1 - cmp r1, 0 - bne _0801503A - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08015078 -_0801503A: - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x7] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _0801506E - cmp r8, r7 - bne _08015064 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08015064 - movs r3, 0x2 - b _08015094 - .align 2, 0 -_08015060: .4byte gBattleMoves -_08015064: - cmp r8, r7 - bcs _08015096 - movs r0, 0x1 - str r0, [sp, 0x8] - b _08015096 -_0801506E: - cmp r1, r0 - bge _08015096 - movs r1, 0x1 - str r1, [sp, 0x8] - b _08015096 -_08015078: - cmp r8, r7 - bne _0801508E - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0801508E - movs r2, 0x2 - str r2, [sp, 0x8] - b _08015096 -_0801508E: - cmp r8, r7 - bcs _08015096 - movs r3, 0x1 -_08015094: - str r3, [sp, 0x8] -_08015096: - ldr r0, [sp, 0x8] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GetWhoStrikesFirst - - thumb_func_start sub_80150A8 -sub_80150A8: @ 80150A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r3, 0 - ldr r0, _080150FC @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08015114 - ldr r0, _08015100 @ =gActiveBattler - strb r3, [r0] - ldr r4, _08015104 @ =gBattlersCount - mov r8, r0 - ldrb r0, [r4] - cmp r3, r0 - bcc _080150D0 - b _080152FA -_080150D0: - ldr r7, _08015108 @ =gActionsByTurnOrder - ldr r6, _0801510C @ =gChosenActionByBattler - mov r2, r8 - ldr r5, _08015110 @ =gBattlerByTurnOrder -_080150D8: - adds r1, r3, r7 - ldrb r0, [r2] - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r3, r5 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - cmp r0, r1 - bcc _080150D8 - b _080152FA - .align 2, 0 -_080150FC: .4byte gBattleTypeFlags -_08015100: .4byte gActiveBattler -_08015104: .4byte gBattlersCount -_08015108: .4byte gActionsByTurnOrder -_0801510C: .4byte gChosenActionByBattler -_08015110: .4byte gBattlerByTurnOrder -_08015114: - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08015164 - ldr r0, _08015158 @ =gActiveBattler - strb r3, [r0] - ldr r1, _0801515C @ =gBattlersCount - mov r8, r0 - adds r2, r1, 0 - ldrb r2, [r2] - cmp r3, r2 - bcs _08015174 - ldr r0, _08015160 @ =gChosenActionByBattler - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x3 - beq _08015172 -_08015136: - mov r7, r8 - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0801515C @ =gBattlersCount - ldrb r1, [r1] - cmp r0, r1 - bcs _08015174 - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08015136 - b _08015172 - .align 2, 0 -_08015158: .4byte gActiveBattler -_0801515C: .4byte gBattlersCount -_08015160: .4byte gChosenActionByBattler -_08015164: - ldr r0, _080151D8 @ =gChosenActionByBattler - ldrb r0, [r0] - ldr r2, _080151DC @ =gActiveBattler - mov r8, r2 - cmp r0, 0x3 - bne _08015174 - strb r3, [r2] -_08015172: - movs r3, 0x5 -_08015174: - cmp r3, 0x5 - bne _080151F8 - ldr r6, _080151E0 @ =gActionsByTurnOrder - ldr r1, _080151D8 @ =gChosenActionByBattler - mov r3, r8 - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r2, _080151E4 @ =gBattlerByTurnOrder - ldrb r0, [r3] - strb r0, [r2] - movs r3, 0x1 - movs r5, 0 - adds r4, r1, 0 - ldr r7, _080151E8 @ =gBattleMainFunc - mov r10, r7 - ldr r0, _080151EC @ =CheckFocusPunch_ClearVarsBeforeTurnStarts - mov r12, r0 - ldr r1, _080151F0 @ =gBattleStruct - mov r9, r1 - ldr r7, _080151F4 @ =gBattlersCount - ldrb r7, [r7] - cmp r5, r7 - bge _080151CC - adds r7, r6, 0 - adds r6, r4, 0 - adds r4, r2, 0 - ldr r2, _080151F4 @ =gBattlersCount -_080151AE: - mov r0, r8 - ldrb r0, [r0] - cmp r5, r0 - beq _080151C4 - adds r1, r3, r7 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r4 - strb r5, [r0] - adds r3, 0x1 -_080151C4: - adds r5, 0x1 - ldrb r1, [r2] - cmp r5, r1 - blt _080151AE -_080151CC: - mov r2, r12 - mov r3, r10 - str r2, [r3] - mov r7, r9 - ldr r0, [r7] - b _08015304 - .align 2, 0 -_080151D8: .4byte gChosenActionByBattler -_080151DC: .4byte gActiveBattler -_080151E0: .4byte gActionsByTurnOrder -_080151E4: .4byte gBattlerByTurnOrder -_080151E8: .4byte gBattleMainFunc -_080151EC: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts -_080151F0: .4byte gBattleStruct -_080151F4: .4byte gBattlersCount -_080151F8: - movs r0, 0 - mov r1, r8 - strb r0, [r1] - ldr r2, _08015288 @ =gBattlersCount - ldrb r0, [r2] - cmp r0, 0 - beq _0801523E - ldr r6, _0801528C @ =gChosenActionByBattler - mov r2, r8 - ldr r5, _08015290 @ =gActionsByTurnOrder - ldr r4, _08015294 @ =gBattlerByTurnOrder -_0801520E: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0801522C - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_0801522C: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08015288 @ =gBattlersCount - ldrb r1, [r1] - cmp r0, r1 - bcc _0801520E -_0801523E: - movs r0, 0 - mov r2, r8 - strb r0, [r2] - ldr r7, _08015288 @ =gBattlersCount - ldrb r0, [r7] - cmp r0, 0 - beq _08015282 - ldr r6, _0801528C @ =gChosenActionByBattler - ldr r5, _08015290 @ =gActionsByTurnOrder - ldr r4, _08015294 @ =gBattlerByTurnOrder -_08015252: - ldrb r0, [r2] - adds r0, r6 - ldrb r1, [r0] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08015270 - adds r0, r3, r5 - strb r1, [r0] - adds r1, r3, r4 - mov r7, r8 - ldrb r0, [r7] - strb r0, [r1] - adds r3, 0x1 -_08015270: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08015288 @ =gBattlersCount - ldrb r1, [r1] - cmp r0, r1 - bcc _08015252 -_08015282: - movs r5, 0 - b _080152F0 - .align 2, 0 -_08015288: .4byte gBattlersCount -_0801528C: .4byte gChosenActionByBattler -_08015290: .4byte gActionsByTurnOrder -_08015294: .4byte gBattlerByTurnOrder -_08015298: - adds r4, r5, 0x1 - adds r7, r4, 0 - ldrb r1, [r1] - cmp r7, r1 - bge _080152EE - ldr r6, _08015318 @ =gActionsByTurnOrder - lsls r2, r5, 24 - mov r8, r2 -_080152A8: - ldr r0, _0801531C @ =gBattlerByTurnOrder - adds r1, r5, r0 - ldrb r3, [r1] - adds r0, r4, r0 - ldrb r1, [r0] - adds r0, r5, r6 - ldrb r2, [r0] - cmp r2, 0x1 - beq _080152E4 - adds r0, r4, r6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080152E4 - cmp r2, 0x2 - beq _080152E4 - cmp r0, 0x2 - beq _080152E4 - adds r0, r3, 0 - movs r2, 0 - bl GetWhoStrikesFirst - lsls r0, 24 - cmp r0, 0 - beq _080152E4 - lsls r1, r4, 24 - lsrs r1, 24 - mov r3, r8 - lsrs r0, r3, 24 - bl SwapTurnOrder -_080152E4: - adds r4, 0x1 - ldr r0, _08015320 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _080152A8 -_080152EE: - adds r5, r7, 0 -_080152F0: - ldr r1, _08015320 @ =gBattlersCount - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _08015298 -_080152FA: - ldr r1, _08015324 @ =gBattleMainFunc - ldr r0, _08015328 @ =CheckFocusPunch_ClearVarsBeforeTurnStarts - str r0, [r1] - ldr r0, _0801532C @ =gBattleStruct - ldr r0, [r0] -_08015304: - adds r0, 0x48 - movs r1, 0 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015318: .4byte gActionsByTurnOrder -_0801531C: .4byte gBattlerByTurnOrder -_08015320: .4byte gBattlersCount -_08015324: .4byte gBattleMainFunc -_08015328: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts -_0801532C: .4byte gBattleStruct - thumb_func_end sub_80150A8 - - thumb_func_start TurnValuesCleanUp -TurnValuesCleanUp: @ 8015330 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _08015388 @ =gActiveBattler - movs r0, 0 - strb r0, [r1] - ldr r0, _0801538C @ =gBattlersCount - ldrb r2, [r0] - adds r5, r1, 0 - cmp r2, 0 - beq _08015428 - ldr r7, _08015390 @ =gProtectStructs - adds r6, r5, 0 - ldr r0, _08015394 @ =gUnknown_2023C34 - mov r12, r0 - ldr r1, _08015398 @ =gDisableStructs - mov r8, r1 - mov r10, r8 -_0801535E: - mov r2, r9 - cmp r2, 0 - beq _0801539C - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r6] - lsls r1, 4 - adds r1, r7 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _080153F8 - .align 2, 0 -_08015388: .4byte gActiveBattler -_0801538C: .4byte gBattlersCount -_08015390: .4byte gProtectStructs -_08015394: .4byte gUnknown_2023C34 -_08015398: .4byte gDisableStructs -_0801539C: - ldrb r0, [r6] - lsls r0, 4 - adds r2, r0, r7 - movs r1, 0 - mov r4, r10 - movs r3, 0 -_080153A8: - adds r0, r2, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0xF - bls _080153A8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x16] - cmp r0, 0 - beq _080153C6 - subs r0, 0x1 - strb r0, [r1, 0x16] -_080153C6: - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1, 0x19] - cmp r0, 0 - beq _080153F8 - subs r0, 0x1 - strb r0, [r1, 0x19] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x19] - cmp r0, 0 - bne _080153F8 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, _08015440 @ =0xffbfffff - ands r0, r1 - str r0, [r2] -_080153F8: - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _08015416 - movs r0, 0x58 - muls r2, r0 - add r2, r12 - ldr r0, [r2] - ldr r1, _08015444 @ =0xfeffffff - ands r0, r1 - str r0, [r2] -_08015416: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08015448 @ =gBattlersCount - ldrb r1, [r1] - cmp r0, r1 - bcc _0801535E -_08015428: - movs r0, 0 - ldr r2, _0801544C @ =gSideTimers - strb r0, [r2, 0x8] - strb r0, [r2, 0x14] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015440: .4byte 0xffbfffff -_08015444: .4byte 0xfeffffff -_08015448: .4byte gBattlersCount -_0801544C: .4byte gSideTimers - thumb_func_end TurnValuesCleanUp - - thumb_func_start SpecialStatusesClear -SpecialStatusesClear: @ 8015450 - push {r4-r6,lr} - ldr r2, _08015494 @ =gActiveBattler - movs r0, 0 - strb r0, [r2] - ldr r0, _08015498 @ =gBattlersCount - ldrb r1, [r0] - adds r6, r0, 0 - cmp r1, 0 - beq _0801548E - adds r3, r2, 0 - movs r4, 0 - ldr r5, _0801549C @ =gSpecialStatuses -_08015468: - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r5 - movs r1, 0 -_08015474: - adds r0, r2, r1 - strb r4, [r0] - adds r1, 0x1 - cmp r1, 0x13 - bls _08015474 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r6] - cmp r0, r1 - bcc _08015468 -_0801548E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08015494: .4byte gActiveBattler -_08015498: .4byte gBattlersCount -_0801549C: .4byte gSpecialStatuses - thumb_func_end SpecialStatusesClear - - thumb_func_start CheckFocusPunch_ClearVarsBeforeTurnStarts -CheckFocusPunch_ClearVarsBeforeTurnStarts: @ 80154A0 - push {r4-r7,lr} - ldr r0, _08015528 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _0801555E - ldr r2, _0801552C @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x48 - ldr r1, _08015530 @ =gBattlersCount - ldrb r0, [r0] - mov r12, r2 - adds r6, r1, 0 - ldrb r1, [r6] - cmp r0, r1 - bcs _0801555E - ldr r5, _08015534 @ =gActiveBattler - ldr r4, _08015538 @ =gBattlerAttacker - movs r7, 0x84 - lsls r7, 1 -_080154CC: - ldr r1, [r2] - adds r1, 0x48 - ldrb r0, [r1] - strb r0, [r4] - strb r0, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _0801553C @ =gChosenMoveByBattler - ldrb r3, [r5] - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - bne _08015550 - ldr r1, _08015540 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _08015550 - ldr r2, _08015544 @ =gDisableStructs - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _08015550 - ldr r0, _08015548 @ =gProtectStructs - lsls r1, r3, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - blt _08015550 - ldr r0, _0801554C @ =gUnknown_81D9015 - bl BattleScriptExecute - b _08015598 - .align 2, 0 -_08015528: .4byte gHitMarker -_0801552C: .4byte gBattleStruct -_08015530: .4byte gBattlersCount -_08015534: .4byte gActiveBattler -_08015538: .4byte gBattlerAttacker -_0801553C: .4byte gChosenMoveByBattler -_08015540: .4byte gBattleMons -_08015544: .4byte gDisableStructs -_08015548: .4byte gProtectStructs -_0801554C: .4byte gUnknown_81D9015 -_08015550: - mov r2, r12 - ldr r0, [r2] - adds r0, 0x48 - ldrb r0, [r0] - ldrb r1, [r6] - cmp r0, r1 - bcc _080154CC -_0801555E: - bl TryClearRageStatuses - ldr r1, _080155A0 @ =gCurrentTurnActionNumber - movs r0, 0 - strb r0, [r1] - ldr r1, _080155A4 @ =gCurrentActionFuncId - ldr r0, _080155A8 @ =gActionsByTurnOrder - movs r3, 0 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _080155AC @ =gDynamicBasePower - movs r2, 0 - strh r3, [r0] - ldr r0, _080155B0 @ =gBattleStruct - ldr r0, [r0] - strb r2, [r0, 0x13] - ldr r1, _080155B4 @ =gBattleMainFunc - ldr r0, _080155B8 @ =RunTurnActionsFunctions - str r0, [r1] - ldr r0, _080155BC @ =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x4] - ldr r0, _080155C0 @ =gBattleScripting - strb r2, [r0, 0x16] - ldr r0, _080155C4 @ =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r2, [r0] -_08015598: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080155A0: .4byte gCurrentTurnActionNumber -_080155A4: .4byte gCurrentActionFuncId -_080155A8: .4byte gActionsByTurnOrder -_080155AC: .4byte gDynamicBasePower -_080155B0: .4byte gBattleStruct -_080155B4: .4byte gBattleMainFunc -_080155B8: .4byte RunTurnActionsFunctions -_080155BC: .4byte gBattleCommunication -_080155C0: .4byte gBattleScripting -_080155C4: .4byte gBattleResources - thumb_func_end CheckFocusPunch_ClearVarsBeforeTurnStarts - - thumb_func_start RunTurnActionsFunctions -RunTurnActionsFunctions: @ 80155C8 - push {r4-r6,lr} - ldr r6, _0801561C @ =gBattleOutcome - ldrb r0, [r6] - ldr r2, _08015620 @ =gCurrentActionFuncId - cmp r0, 0 - beq _080155D8 - movs r0, 0xC - strb r0, [r2] -_080155D8: - ldr r5, _08015624 @ =gBattleStruct - ldr r0, [r5] - adds r0, 0x4B - ldr r4, _08015628 @ =gCurrentTurnActionNumber - ldrb r1, [r4] - strb r1, [r0] - ldr r1, _0801562C @ =gUnknown_8250038 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08015630 @ =gBattlersCount - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bcc _08015644 - ldr r2, _08015634 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08015638 @ =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r3, _0801563C @ =gBattleMainFunc - ldr r2, _08015640 @ =gUnknown_8250070 - ldrb r1, [r6] - movs r0, 0x7F - ands r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - b _0801565C - .align 2, 0 -_0801561C: .4byte gBattleOutcome -_08015620: .4byte gCurrentActionFuncId -_08015624: .4byte gBattleStruct -_08015628: .4byte gCurrentTurnActionNumber -_0801562C: .4byte gUnknown_8250038 -_08015630: .4byte gBattlersCount -_08015634: .4byte gHitMarker -_08015638: .4byte 0xffefffff -_0801563C: .4byte gBattleMainFunc -_08015640: .4byte gUnknown_8250070 -_08015644: - ldr r0, [r5] - adds r0, 0x4B - ldrb r0, [r0] - cmp r0, r1 - beq _0801565C - ldr r2, _08015664 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08015668 @ =0xfffffdff - ands r0, r1 - ldr r1, _0801566C @ =0xfff7ffff - ands r0, r1 - str r0, [r2] -_0801565C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08015664: .4byte gHitMarker -_08015668: .4byte 0xfffffdff -_0801566C: .4byte 0xfff7ffff - thumb_func_end RunTurnActionsFunctions - - thumb_func_start sub_8015670 -sub_8015670: @ 8015670 - push {r4,lr} - ldr r1, _080156A8 @ =gCurrentActionFuncId - movs r0, 0 - strb r0, [r1] - ldr r0, _080156AC @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080156C4 - ldr r1, _080156B0 @ =gBattleTextBuff1 - ldr r4, _080156B4 @ =gBattleOutcome - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080156B8 @ =gBattlerAttacker - strb r0, [r1] - ldr r1, _080156BC @ =gBattlescriptCurrInstr - ldr r0, _080156C0 @ =gUnknown_81D88CC - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _0801576E - .align 2, 0 -_080156A8: .4byte gCurrentActionFuncId -_080156AC: .4byte gBattleTypeFlags -_080156B0: .4byte gBattleTextBuff1 -_080156B4: .4byte gBattleOutcome -_080156B8: .4byte gBattlerAttacker -_080156BC: .4byte gBattlescriptCurrInstr -_080156C0: .4byte gUnknown_81D88CC -_080156C4: - ldr r0, _080156E0 @ =0x00080900 - ands r0, r1 - cmp r0, 0 - beq _080156EC - bl BattleStopLowHpSound - movs r0, 0x9B - lsls r0, 1 - bl PlayBGM - ldr r1, _080156E4 @ =gBattlescriptCurrInstr - ldr r0, _080156E8 @ =gUnknown_81D88D7 - b _0801576C - .align 2, 0 -_080156E0: .4byte 0x00080900 -_080156E4: .4byte gBattlescriptCurrInstr -_080156E8: .4byte gUnknown_81D88D7 -_080156EC: - movs r0, 0xA - ands r1, r0 - cmp r1, 0x8 - bne _08015768 - bl BattleStopLowHpSound - ldr r1, _08015720 @ =gBattlescriptCurrInstr - ldr r0, _08015724 @ =gUnknown_81D87EF - str r0, [r1] - ldr r2, _08015728 @ =gTrainers - ldr r0, _0801572C @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - subs r0, 0x53 - cmp r0, 0x7 - bhi _0801575E - lsls r0, 2 - ldr r1, _08015730 @ =_08015734 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015720: .4byte gBattlescriptCurrInstr -_08015724: .4byte gUnknown_81D87EF -_08015728: .4byte gTrainers -_0801572C: .4byte gTrainerBattleOpponent_A -_08015730: .4byte _08015734 - .align 2, 0 -_08015734: - .4byte _0801575E - .4byte _08015754 - .4byte _0801575E - .4byte _0801575E - .4byte _0801575E - .4byte _0801575E - .4byte _0801575E - .4byte _08015754 -_08015754: - movs r0, 0x9C - lsls r0, 1 - bl PlayBGM - b _0801576E -_0801575E: - movs r0, 0x9B - lsls r0, 1 - bl PlayBGM - b _0801576E -_08015768: - ldr r1, _0801577C @ =gBattlescriptCurrInstr - ldr r0, _08015780 @ =gUnknown_81D8803 -_0801576C: - str r0, [r1] -_0801576E: - ldr r1, _08015784 @ =gBattleMainFunc - ldr r0, _08015788 @ =sub_8015910 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801577C: .4byte gBattlescriptCurrInstr -_08015780: .4byte gUnknown_81D8803 -_08015784: .4byte gBattleMainFunc -_08015788: .4byte sub_8015910 - thumb_func_end sub_8015670 - - thumb_func_start sub_801578C -sub_801578C: @ 801578C - push {r4,lr} - ldr r1, _080157C4 @ =gCurrentActionFuncId - movs r0, 0 - strb r0, [r1] - ldr r0, _080157C8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r4, 0x2 - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - beq _080157E0 - ldr r1, _080157CC @ =gBattleTextBuff1 - ldr r4, _080157D0 @ =gBattleOutcome - ldrb r0, [r4] - strb r0, [r1] - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080157D4 @ =gBattlerAttacker - strb r0, [r1] - ldr r1, _080157D8 @ =gBattlescriptCurrInstr - ldr r0, _080157DC @ =gUnknown_81D88CC - str r0, [r1] - ldrb r1, [r4] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - b _08015830 - .align 2, 0 -_080157C4: .4byte gCurrentActionFuncId -_080157C8: .4byte gBattleTypeFlags -_080157CC: .4byte gBattleTextBuff1 -_080157D0: .4byte gBattleOutcome -_080157D4: .4byte gBattlerAttacker -_080157D8: .4byte gBattlescriptCurrInstr -_080157DC: .4byte gUnknown_81D88CC -_080157E0: - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - beq _08015824 - bl ScrSpecial_GetTrainerBattleMode - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bne _08015824 - bl sub_80803D8 - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0801580C - ldr r1, _08015808 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08015810 - .align 2, 0 -_08015808: .4byte gBattleCommunication -_0801580C: - ldr r0, _0801581C @ =gBattleCommunication - strb r4, [r0, 0x5] -_08015810: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _08015820 @ =gBattlerAttacker - strb r0, [r1] - b _0801582A - .align 2, 0 -_0801581C: .4byte gBattleCommunication -_08015820: .4byte gBattlerAttacker -_08015824: - ldr r1, _0801583C @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_0801582A: - ldr r1, _08015840 @ =gBattlescriptCurrInstr - ldr r0, _08015844 @ =gUnknown_81D8806 - str r0, [r1] -_08015830: - ldr r1, _08015848 @ =gBattleMainFunc - ldr r0, _0801584C @ =sub_8015910 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801583C: .4byte gBattleCommunication -_08015840: .4byte gBattlescriptCurrInstr -_08015844: .4byte gUnknown_81D8806 -_08015848: .4byte gBattleMainFunc -_0801584C: .4byte sub_8015910 - thumb_func_end sub_801578C - - thumb_func_start sub_8015850 -sub_8015850: @ 8015850 - push {lr} - ldr r1, _08015878 @ =gCurrentActionFuncId - movs r0, 0 - strb r0, [r1] - ldr r1, _0801587C @ =gProtectStructs - ldr r0, _08015880 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r0, 30 - cmp r0, 0x1 - beq _0801588C - cmp r0, 0x2 - beq _0801589C - ldr r1, _08015884 @ =gBattlescriptCurrInstr - ldr r0, _08015888 @ =gUnknown_81D8916 - b _080158A0 - .align 2, 0 -_08015878: .4byte gCurrentActionFuncId -_0801587C: .4byte gProtectStructs -_08015880: .4byte gBattlerAttacker -_08015884: .4byte gBattlescriptCurrInstr -_08015888: .4byte gUnknown_81D8916 -_0801588C: - ldr r1, _08015894 @ =gBattlescriptCurrInstr - ldr r0, _08015898 @ =gUnknown_81D8901 - b _080158A0 - .align 2, 0 -_08015894: .4byte gBattlescriptCurrInstr -_08015898: .4byte gUnknown_81D8901 -_0801589C: - ldr r1, _080158AC @ =gBattlescriptCurrInstr - ldr r0, _080158B0 @ =gUnknown_81D890F -_080158A0: - str r0, [r1] - ldr r1, _080158B4 @ =gBattleMainFunc - ldr r0, _080158B8 @ =sub_8015910 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080158AC: .4byte gBattlescriptCurrInstr -_080158B0: .4byte gUnknown_81D890F -_080158B4: .4byte gBattleMainFunc -_080158B8: .4byte sub_8015910 - thumb_func_end sub_8015850 - - thumb_func_start sub_80158BC -sub_80158BC: @ 80158BC - ldr r1, _080158F0 @ =gCurrentActionFuncId - movs r0, 0 - strb r0, [r1] - ldr r1, _080158F4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, _080158F8 @ =gBattlerAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, _080158FC @ =gBattlerPartyIndexes - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08015900 @ =gBattlescriptCurrInstr - ldr r0, _08015904 @ =gUnknown_81D891D - str r0, [r1] - ldr r1, _08015908 @ =gBattleMainFunc - ldr r0, _0801590C @ =sub_8015910 - str r0, [r1] - bx lr - .align 2, 0 -_080158F0: .4byte gCurrentActionFuncId -_080158F4: .4byte gBattleTextBuff1 -_080158F8: .4byte gBattlerAttacker -_080158FC: .4byte gBattlerPartyIndexes -_08015900: .4byte gBattlescriptCurrInstr -_08015904: .4byte gUnknown_81D891D -_08015908: .4byte gBattleMainFunc -_0801590C: .4byte sub_8015910 - thumb_func_end sub_80158BC - - thumb_func_start sub_8015910 -sub_8015910: @ 8015910 - push {r4-r7,lr} - ldr r0, _08015974 @ =gCurrentActionFuncId - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08015A04 - ldr r0, _08015978 @ =gBattleTypeFlags - ldr r1, [r0] - ldr r0, _0801597C @ =0x00080b92 - ands r1, r0 - cmp r1, 0 - bne _080159BC - ldr r2, _08015980 @ =gActiveBattler - strb r1, [r2] - ldr r0, _08015984 @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _080159BC - adds r4, r2, 0 - ldr r6, _08015988 @ =gBattleMons - movs r5, 0x58 - adds r7, r6, 0 - adds r7, 0x30 -_08015942: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080159AA - ldr r2, _0801598C @ =gBattleResults - ldrh r0, [r2, 0x6] - cmp r0, 0 - bne _08015990 - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r2, 0x6] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r7 - adds r0, r2, 0 - adds r0, 0x8 - bl StringCopy - b _080159AA - .align 2, 0 -_08015974: .4byte gCurrentActionFuncId -_08015978: .4byte gBattleTypeFlags -_0801597C: .4byte 0x00080b92 -_08015980: .4byte gActiveBattler -_08015984: .4byte gBattlersCount -_08015988: .4byte gBattleMons -_0801598C: .4byte gBattleResults -_08015990: - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r2, 0x26] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r7 - adds r0, r2, 0 - adds r0, 0x14 - bl StringCopy -_080159AA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080159EC @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08015942 -_080159BC: - bl sub_812BFDC - ldr r0, _080159F0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080159D0 - bl sub_810CB90 -_080159D0: - movs r0, 0x3 - bl BeginFastPaletteFade - movs r0, 0x5 - bl FadeOutMapMusic - ldr r1, _080159F4 @ =gBattleMainFunc - ldr r0, _080159F8 @ =sub_8015A30 - str r0, [r1] - ldr r1, _080159FC @ =gUnknown_300537C - ldr r0, _08015A00 @ =BattleMainCB2 - str r0, [r1] - b _08015A1E - .align 2, 0 -_080159EC: .4byte gBattlersCount -_080159F0: .4byte gBattleTypeFlags -_080159F4: .4byte gBattleMainFunc -_080159F8: .4byte sub_8015A30 -_080159FC: .4byte gUnknown_300537C -_08015A00: .4byte BattleMainCB2 -_08015A04: - ldr r0, _08015A24 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08015A1E - ldr r1, _08015A28 @ =gBattleScriptingCommandsTable - ldr r0, _08015A2C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_08015A1E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015A24: .4byte gBattleControllerExecFlags -_08015A28: .4byte gBattleScriptingCommandsTable -_08015A2C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8015910 - - thumb_func_start sub_8015A30 -sub_8015A30: @ 8015A30 - push {lr} - ldr r0, _08015A58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08015A8E - bl ResetSpriteData - ldr r0, _08015A5C @ =gLeveledUpInBattle - ldrb r0, [r0] - cmp r0, 0 - beq _08015A52 - ldr r0, _08015A60 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _08015A6C -_08015A52: - ldr r1, _08015A64 @ =gBattleMainFunc - ldr r0, _08015A68 @ =ReturnFromBattleToOverworld - b _08015A70 - .align 2, 0 -_08015A58: .4byte gPaletteFade -_08015A5C: .4byte gLeveledUpInBattle -_08015A60: .4byte gBattleOutcome -_08015A64: .4byte gBattleMainFunc -_08015A68: .4byte ReturnFromBattleToOverworld -_08015A6C: - ldr r1, _08015A94 @ =gBattleMainFunc - ldr r0, _08015A98 @ =sub_8015AA0 -_08015A70: - str r0, [r1] - bl FreeAllWindowBuffers - ldr r0, _08015A9C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08015A8E - bl FreeMonSpritesGfx - bl FreeBattleSpritesData - bl FreeBattleResources -_08015A8E: - pop {r0} - bx r0 - .align 2, 0 -_08015A94: .4byte gBattleMainFunc -_08015A98: .4byte sub_8015AA0 -_08015A9C: .4byte gBattleTypeFlags - thumb_func_end sub_8015A30 - - thumb_func_start sub_8015AA0 -sub_8015AA0: @ 8015AA0 - push {r4,r5,lr} - ldr r0, _08015AF4 @ =gLeveledUpInBattle - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0 - beq _08015B16 -_08015AAC: - movs r5, 0 -_08015AAE: - ldrb r2, [r3] - ldr r0, _08015AF8 @ =gBitTable - lsls r1, r5, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08015B08 - bics r2, r1 - strb r2, [r3] - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08015AFC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08015B08 - ldr r0, _08015B00 @ =gBattleMainFunc - ldr r1, _08015B04 @ =sub_8015B30 - str r1, [r0] - lsls r3, r5, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r2, 0 - movs r2, 0x81 - bl EvolutionScene - b _08015B1C - .align 2, 0 -_08015AF4: .4byte gLeveledUpInBattle -_08015AF8: .4byte gBitTable -_08015AFC: .4byte gPlayerParty -_08015B00: .4byte gBattleMainFunc -_08015B04: .4byte sub_8015B30 -_08015B08: - adds r5, 0x1 - ldr r3, _08015B24 @ =gLeveledUpInBattle - cmp r5, 0x5 - ble _08015AAE - ldrb r0, [r3] - cmp r0, 0 - bne _08015AAC -_08015B16: - ldr r1, _08015B28 @ =gBattleMainFunc - ldr r0, _08015B2C @ =ReturnFromBattleToOverworld - str r0, [r1] -_08015B1C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08015B24: .4byte gLeveledUpInBattle -_08015B28: .4byte gBattleMainFunc -_08015B2C: .4byte ReturnFromBattleToOverworld - thumb_func_end sub_8015AA0 - - thumb_func_start sub_8015B30 -sub_8015B30: @ 8015B30 - push {lr} - ldr r0, _08015B48 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08015B4C @ =BattleMainCB2 - cmp r1, r0 - bne _08015B42 - ldr r1, _08015B50 @ =gBattleMainFunc - ldr r0, _08015B54 @ =sub_8015AA0 - str r0, [r1] -_08015B42: - pop {r0} - bx r0 - .align 2, 0 -_08015B48: .4byte gMain -_08015B4C: .4byte BattleMainCB2 -_08015B50: .4byte gBattleMainFunc -_08015B54: .4byte sub_8015AA0 - thumb_func_end sub_8015B30 - - thumb_func_start ReturnFromBattleToOverworld -ReturnFromBattleToOverworld: @ 8015B58 - push {r4-r6,lr} - ldr r6, _08015BDC @ =gBattleTypeFlags - ldr r0, [r6] - movs r5, 0x2 - ands r0, r5 - cmp r0, 0 - bne _08015B74 - ldr r4, _08015BE0 @ =gPlayerParty - adds r0, r4, 0 - bl sub_8043A68 - adds r0, r4, 0 - bl sub_8043B40 -_08015B74: - ldr r4, [r6] - adds r0, r4, 0 - ands r0, r5 - cmp r0, 0 - beq _08015B86 - ldr r0, _08015BE4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08015BD4 -_08015B86: - ldr r1, _08015BE8 @ =gSpecialVar_Result - ldr r5, _08015BEC @ =gBattleOutcome - ldrb r0, [r5] - strh r0, [r1] - ldr r3, _08015BF0 @ =gMain - ldr r0, _08015BF4 @ =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _08015BF8 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - movs r0, 0x80 - lsls r0, 3 - ands r4, r0 - cmp r4, 0 - beq _08015BC6 - ldr r0, _08015BFC @ =gEnemyParty - bl UpdateRoamerHPStatus - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08015BC2 - cmp r1, 0x7 - bne _08015BC6 -_08015BC2: - bl SetRoamerInactive -_08015BC6: - movs r0, 0x53 - bl m4aSongNumStop - ldr r0, _08015BF0 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08015BD4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08015BDC: .4byte gBattleTypeFlags -_08015BE0: .4byte gPlayerParty -_08015BE4: .4byte gReceivedRemoteLinkPlayers -_08015BE8: .4byte gSpecialVar_Result -_08015BEC: .4byte gBattleOutcome -_08015BF0: .4byte gMain -_08015BF4: .4byte 0x00000439 -_08015BF8: .4byte gPreBattleCallback1 -_08015BFC: .4byte gEnemyParty - thumb_func_end ReturnFromBattleToOverworld - - thumb_func_start RunBattleScriptCommands_PopCallbacksStack -RunBattleScriptCommands_PopCallbacksStack: @ 8015C00 - push {lr} - ldr r0, _08015C3C @ =gCurrentActionFuncId - ldrb r0, [r0] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08015C48 - ldr r3, _08015C40 @ =gBattleResources - ldr r0, [r3] - ldr r0, [r0, 0xC] - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _08015C24 - subs r0, 0x1 - strb r0, [r1] -_08015C24: - ldr r2, _08015C44 @ =gBattleMainFunc - ldr r0, [r3] - ldr r1, [r0, 0xC] - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - b _08015C62 - .align 2, 0 -_08015C3C: .4byte gCurrentActionFuncId -_08015C40: .4byte gBattleResources -_08015C44: .4byte gBattleMainFunc -_08015C48: - ldr r0, _08015C68 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08015C62 - ldr r1, _08015C6C @ =gBattleScriptingCommandsTable - ldr r0, _08015C70 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_08015C62: - pop {r0} - bx r0 - .align 2, 0 -_08015C68: .4byte gBattleControllerExecFlags -_08015C6C: .4byte gBattleScriptingCommandsTable -_08015C70: .4byte gBattlescriptCurrInstr - thumb_func_end RunBattleScriptCommands_PopCallbacksStack - - thumb_func_start RunBattleScriptCommands -RunBattleScriptCommands: @ 8015C74 - push {lr} - ldr r0, _08015C94 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08015C90 - ldr r1, _08015C98 @ =gBattleScriptingCommandsTable - ldr r0, _08015C9C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_08015C90: - pop {r0} - bx r0 - .align 2, 0 -_08015C94: .4byte gBattleControllerExecFlags -_08015C98: .4byte gBattleScriptingCommandsTable -_08015C9C: .4byte gBattlescriptCurrInstr - thumb_func_end RunBattleScriptCommands - - thumb_func_start sub_8015CA0 -sub_8015CA0: @ 8015CA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0x4 - str r0, [sp] - ldr r6, _08015CE0 @ =gBattlerAttacker - ldr r1, _08015CE4 @ =gBattlerByTurnOrder - ldr r0, _08015CE8 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6] - ldr r1, _08015CEC @ =gBattleStruct - ldr r3, [r1] - adds r0, r3, 0 - adds r0, 0x91 - ldrb r2, [r0] - ldr r1, _08015CF0 @ =gBitTable - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _08015CF8 - ldr r1, _08015CF4 @ =gCurrentActionFuncId - movs r0, 0xC - b _0801634C - .align 2, 0 -_08015CE0: .4byte gBattlerAttacker -_08015CE4: .4byte gBattlerByTurnOrder -_08015CE8: .4byte gCurrentTurnActionNumber -_08015CEC: .4byte gBattleStruct -_08015CF0: .4byte gBitTable -_08015CF4: .4byte gCurrentActionFuncId -_08015CF8: - ldr r1, _08015D6C @ =gCritMultiplier - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08015D70 @ =gBattleScripting - movs r0, 0x1 - strb r0, [r1, 0xE] - adds r0, r3, 0 - adds r0, 0xB7 - strb r2, [r0] - ldr r0, _08015D74 @ =gMoveResultFlags - strb r2, [r0] - ldr r0, _08015D78 @ =gMultiHitCounter - strb r2, [r0] - ldr r0, _08015D7C @ =gBattleCommunication - strb r2, [r0, 0x6] - ldr r2, _08015D80 @ =gCurrMovePos - ldr r3, _08015D84 @ =gChosenMovePos - mov r9, r3 - ldrb r0, [r6] - ldr r4, _08015D88 @ =gBattleStruct - ldr r1, [r4] - adds r0, r1 - adds r0, 0x80 - ldrb r0, [r0] - strb r0, [r3] - strb r0, [r2] - ldr r1, _08015D8C @ =gProtectStructs - ldrb r4, [r6] - lsls r0, r4, 4 - adds r3, r0, r1 - ldrb r1, [r3] - lsls r0, r1, 29 - mov r8, r2 - cmp r0, 0 - bge _08015D9C - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r2, _08015D90 @ =gCurrentMove - ldr r1, _08015D94 @ =gChosenMove - movs r0, 0xA5 - strh r0, [r1] - strh r0, [r2] - ldr r2, _08015D98 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 4 - orrs r0, r1 - str r0, [r2] - movs r0, 0xA5 - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, _08015D88 @ =gBattleStruct - ldr r2, [r3] - b _08015EF6 - .align 2, 0 -_08015D6C: .4byte gCritMultiplier -_08015D70: .4byte gBattleScripting -_08015D74: .4byte gMoveResultFlags -_08015D78: .4byte gMultiHitCounter -_08015D7C: .4byte gBattleCommunication -_08015D80: .4byte gCurrMovePos -_08015D84: .4byte gChosenMovePos -_08015D88: .4byte gBattleStruct -_08015D8C: .4byte gProtectStructs -_08015D90: .4byte gCurrentMove -_08015D94: .4byte gChosenMove -_08015D98: .4byte gHitMarker -_08015D9C: - ldr r0, _08015DD4 @ =gBattleMons - movs r1, 0x58 - adds r5, r4, 0 - muls r5, r1 - adds r1, r0, 0 - adds r1, 0x50 - adds r1, r5, r1 - ldr r2, [r1] - movs r1, 0x80 - lsls r1, 5 - ands r1, r2 - mov r10, r0 - cmp r1, 0 - bne _08015DC2 - movs r7, 0x80 - lsls r7, 15 - ands r7, r2 - cmp r7, 0 - beq _08015DE4 -_08015DC2: - ldr r3, _08015DD8 @ =gCurrentMove - ldr r2, _08015DDC @ =gChosenMove - ldr r1, _08015DE0 @ =gLockedMoves - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - b _08015F18 - .align 2, 0 -_08015DD4: .4byte gBattleMons -_08015DD8: .4byte gCurrentMove -_08015DDC: .4byte gChosenMove -_08015DE0: .4byte gLockedMoves -_08015DE4: - ldr r3, _08015E38 @ =gDisableStructs - mov r12, r3 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r12 - ldrh r4, [r0, 0x6] - adds r2, r4, 0 - cmp r2, 0 - beq _08015EBC - ldrb r3, [r0, 0xC] - lsls r0, r3, 1 - adds r0, r5 - mov r5, r10 - adds r5, 0xC - adds r0, r5 - ldrh r1, [r0] - cmp r2, r1 - bne _08015E48 - ldr r2, _08015E3C @ =gCurrentMove - ldr r0, _08015E40 @ =gChosenMove - strh r4, [r0] - strh r4, [r2] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xC] - mov r4, r9 - strb r0, [r4] - mov r1, r8 - strb r0, [r1] - ldrh r0, [r2] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, _08015E44 @ =gBattleStruct - ldr r2, [r3] - b _08015EF6 - .align 2, 0 -_08015E38: .4byte gDisableStructs -_08015E3C: .4byte gCurrentMove -_08015E40: .4byte gChosenMove -_08015E44: .4byte gBattleStruct -_08015E48: - cmp r2, 0 - beq _08015EBC - cmp r2, r1 - beq _08015EBC - mov r4, r9 - strb r3, [r4] - mov r0, r8 - strb r3, [r0] - ldr r3, _08015EB0 @ =gCurrentMove - ldr r2, _08015EB4 @ =gChosenMove - ldrb r0, [r0] - lsls r0, 1 - ldrb r1, [r6] - movs r4, 0x58 - muls r1, r4 - adds r0, r1 - adds r0, r5 - ldrh r0, [r0] - strh r0, [r2] - strh r0, [r3] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - movs r2, 0 - strh r7, [r0, 0x6] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r2, [r0, 0xC] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - ldrh r0, [r3] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r6] - ldr r3, _08015EB8 @ =gBattleStruct - ldr r2, [r3] - b _08015EF6 - .align 2, 0 -_08015EB0: .4byte gCurrentMove -_08015EB4: .4byte gChosenMove -_08015EB8: .4byte gBattleStruct -_08015EBC: - mov r4, r8 - ldrb r0, [r4] - lsls r0, 1 - ldr r4, _08015EFC @ =gBattlerAttacker - ldrb r2, [r4] - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - mov r1, r10 - adds r1, 0xC - adds r0, r1 - ldr r1, _08015F00 @ =gChosenMoveByBattler - lsls r2, 1 - adds r2, r1 - ldrh r3, [r0] - ldrh r2, [r2] - cmp r3, r2 - beq _08015F10 - ldr r1, _08015F04 @ =gCurrentMove - ldr r0, _08015F08 @ =gChosenMove - strh r3, [r0] - strh r3, [r1] - ldrh r0, [r1] - movs r1, 0 - bl GetMoveTarget - ldrb r1, [r4] - ldr r2, _08015F0C @ =gBattleStruct - ldr r2, [r2] -_08015EF6: - adds r1, r2 - strb r0, [r1, 0xC] - b _08015F18 - .align 2, 0 -_08015EFC: .4byte gBattlerAttacker -_08015F00: .4byte gChosenMoveByBattler -_08015F04: .4byte gCurrentMove -_08015F08: .4byte gChosenMove -_08015F0C: .4byte gBattleStruct -_08015F10: - ldr r1, _08015F30 @ =gCurrentMove - ldr r0, _08015F34 @ =gChosenMove - strh r3, [r0] - strh r3, [r1] -_08015F18: - ldr r0, _08015F38 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08015F40 - ldr r0, _08015F3C @ =gBattleResults - ldr r1, _08015F30 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x22] - b _08015F48 - .align 2, 0 -_08015F30: .4byte gCurrentMove -_08015F34: .4byte gChosenMove -_08015F38: .4byte gBattlerAttacker -_08015F3C: .4byte gBattleResults -_08015F40: - ldr r0, _08015FAC @ =gBattleResults - ldr r1, _08015FB0 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0, 0x24] -_08015F48: - ldr r4, _08015FB4 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08015FB8 @ =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r1 - ldrb r0, [r5, 0x8] - adds r3, r4, 0 - cmp r0, 0 - beq _08015FC8 - ldr r2, _08015FBC @ =gBattleMoves - ldr r0, _08015FB0 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _08015FC8 - ldrb r0, [r3] - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r5, 0x9] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08015FC8 - ldr r1, _08015FC0 @ =gBattleMons - ldrb r2, [r5, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08015FC8 - ldr r0, _08015FC4 @ =gBattlerTarget - strb r2, [r0] - b _0801632C - .align 2, 0 -_08015FAC: .4byte gBattleResults -_08015FB0: .4byte gCurrentMove -_08015FB4: .4byte gBattlerAttacker -_08015FB8: .4byte gSideTimers -_08015FBC: .4byte gBattleMoves -_08015FC0: .4byte gBattleMons -_08015FC4: .4byte gBattlerTarget -_08015FC8: - ldr r2, _080160E4 @ =gBattleTypeFlags - ldr r1, [r2] - movs r0, 0x1 - ands r1, r0 - ldr r3, _080160E8 @ =gBattlerAttacker - adds r7, r2, 0 - cmp r1, 0 - bne _08015FDA - b _080162A0 -_08015FDA: - ldr r1, _080160EC @ =gSideTimers - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x8] - cmp r5, 0 - beq _08015FEC - b _080161F8 -_08015FEC: - ldr r2, _080160F0 @ =gBattleMoves - ldr r0, _080160F4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08016008 - ldrb r0, [r4, 0x6] - cmp r0, 0x10 - bne _08016008 - b _080161F8 -_08016008: - ldr r3, _080160F8 @ =gBattleMons - ldr r2, _080160E8 @ =gBattlerAttacker - ldrb r6, [r2] - ldr r0, _080160FC @ =gBattleStruct - ldr r0, [r0] - adds r0, r6, r0 - ldrb r1, [r0, 0xC] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - adds r3, r2, 0 - cmp r0, 0x1F - bne _08016028 - b _080161F8 -_08016028: - ldrb r0, [r4, 0x2] - cmp r0, 0xD - beq _08016030 - b _080161F8 -_08016030: - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08016100 @ =gActiveBattler - strb r5, [r1] - ldr r0, _08016104 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bcs _080160A8 - adds r4, r1, 0 -_08016048: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _08016096 - ldr r0, _080160E8 @ =gBattlerAttacker - ldrb r1, [r0] - ldr r0, _080160FC @ =gBattleStruct - ldr r0, [r0] - adds r1, r0 - ldrb r0, [r1, 0xC] - ldrb r1, [r4] - cmp r0, r1 - beq _08016096 - ldr r1, _080160F8 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1F - bne _08016096 - adds r0, r2, 0 - bl GetBattlerTurnOrderNum - lsls r0, 24 - lsrs r0, 24 - ldr r3, [sp] - cmp r0, r3 - bcs _08016096 - ldrb r0, [r4] - bl GetBattlerTurnOrderNum - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] -_08016096: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08016104 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08016048 -_080160A8: - ldr r4, [sp] - cmp r4, 0x4 - beq _080160B0 - b _080161AA -_080160B0: - ldr r2, _080160F0 @ =gBattleMoves - ldr r0, _08016108 @ =gChosenMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - ands r4, r0 - cmp r4, 0 - beq _08016130 - ldr r0, _080160E8 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08016110 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0801610C - movs r0, 0x1 - b _08016122 - .align 2, 0 -_080160E4: .4byte gBattleTypeFlags -_080160E8: .4byte gBattlerAttacker -_080160EC: .4byte gSideTimers -_080160F0: .4byte gBattleMoves -_080160F4: .4byte gCurrentMove -_080160F8: .4byte gBattleMons -_080160FC: .4byte gBattleStruct -_08016100: .4byte gActiveBattler -_08016104: .4byte gBattlersCount -_08016108: .4byte gChosenMove -_0801610C: - movs r0, 0x3 - b _08016122 -_08016110: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08016120 - movs r0, 0 - b _08016122 -_08016120: - movs r0, 0x2 -_08016122: - bl GetBattlerAtPosition - ldr r1, _0801612C @ =gBattlerTarget - strb r0, [r1] - b _08016140 - .align 2, 0 -_0801612C: .4byte gBattlerTarget -_08016130: - ldr r2, _08016178 @ =gBattlerTarget - ldr r0, _0801617C @ =gBattlerAttacker - ldrb r0, [r0] - ldr r1, _08016180 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_08016140: - ldr r7, _08016184 @ =gAbsentBattlerFlags - ldrb r0, [r7] - ldr r1, _08016188 @ =gBitTable - mov r8, r1 - ldr r5, _08016178 @ =gBattlerTarget - ldrb r1, [r5] - lsls r1, 2 - add r1, r8 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _0801615A - b _0801632C -_0801615A: - ldr r6, _0801617C @ =gBattlerAttacker - ldrb r0, [r6] - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0801618C - ldrb r0, [r5] - b _0801631A - .align 2, 0 -_08016178: .4byte gBattlerTarget -_0801617C: .4byte gBattlerAttacker -_08016180: .4byte gBattleStruct -_08016184: .4byte gAbsentBattlerFlags -_08016188: .4byte gBitTable -_0801618C: - ldrb r0, [r6] - bl GetBattlerPosition - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - strb r0, [r5] - ldrb r1, [r7] - ldrb r2, [r5] - lsls r0, r2, 2 - add r0, r8 - b _08016310 -_080161AA: - ldr r4, _080161E4 @ =gActiveBattler - ldr r0, _080161E8 @ =gBattlerByTurnOrder - ldr r3, [sp] - adds r0, r3, r0 - ldrb r0, [r0] - strb r0, [r4] - ldrb r0, [r4] - ldr r2, _080161EC @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r2, _080161F0 @ =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r1, _080161F4 @ =gBattlerTarget - ldrb r0, [r4] - strb r0, [r1] - b _0801632C - .align 2, 0 -_080161E4: .4byte gActiveBattler -_080161E8: .4byte gBattlerByTurnOrder -_080161EC: .4byte gBattleMons -_080161F0: .4byte gSpecialStatuses -_080161F4: .4byte gBattlerTarget -_080161F8: - ldr r0, [r7] - movs r4, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080162A0 - ldr r2, _08016238 @ =gBattleMoves - ldr r0, _0801623C @ =gChosenMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080162A0 - ldrb r0, [r3] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08016244 - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _08016240 - movs r0, 0x1 - b _08016256 - .align 2, 0 -_08016238: .4byte gBattleMoves -_0801623C: .4byte gChosenMove -_08016240: - movs r0, 0x3 - b _08016256 -_08016244: - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _08016254 - movs r0, 0 - b _08016256 -_08016254: - movs r0, 0x2 -_08016256: - bl GetBattlerAtPosition - ldr r1, _08016290 @ =gBattlerTarget - strb r0, [r1] - ldr r0, _08016294 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08016298 @ =gBitTable - ldr r5, _08016290 @ =gBattlerTarget - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801632C - ldr r0, _0801629C @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0801632C - ldrb r0, [r5] - b _0801631A - .align 2, 0 -_08016290: .4byte gBattlerTarget -_08016294: .4byte gAbsentBattlerFlags -_08016298: .4byte gBitTable -_0801629C: .4byte gBattlerAttacker -_080162A0: - ldr r5, _080162E4 @ =gBattlerTarget - adds r2, r3, 0 - ldrb r0, [r2] - ldr r1, _080162E8 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r5] - ldr r6, _080162EC @ =gAbsentBattlerFlags - ldrb r1, [r6] - ldr r7, _080162F0 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801632C - ldrb r0, [r2] - str r3, [sp, 0x4] - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - ldr r3, [sp, 0x4] - cmp r4, r0 - beq _080162F4 - ldrb r0, [r5] - b _0801631A - .align 2, 0 -_080162E4: .4byte gBattlerTarget -_080162E8: .4byte gBattleStruct -_080162EC: .4byte gAbsentBattlerFlags -_080162F0: .4byte gBitTable -_080162F4: - ldrb r0, [r3] - bl GetBattlerPosition - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - strb r0, [r5] - ldrb r1, [r6] - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r7 -_08016310: - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801632C - adds r0, r2, 0 -_0801631A: - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - strb r0, [r5] -_0801632C: - ldr r4, _08016360 @ =gBattlescriptCurrInstr - ldr r3, _08016364 @ =gBattleScriptsForMoveEffects - ldr r2, _08016368 @ =gBattleMoves - ldr r0, _0801636C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] - ldr r1, _08016370 @ =gCurrentActionFuncId - movs r0, 0xA -_0801634C: - strb r0, [r1] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016360: .4byte gBattlescriptCurrInstr -_08016364: .4byte gBattleScriptsForMoveEffects -_08016368: .4byte gBattleMoves -_0801636C: .4byte gCurrentMove -_08016370: .4byte gCurrentActionFuncId - thumb_func_end sub_8015CA0 - - thumb_func_start sub_8016374 -sub_8016374: @ 8016374 - push {r4,lr} - ldr r3, _080163E0 @ =gBattlerAttacker - ldr r1, _080163E4 @ =gBattlerByTurnOrder - ldr r0, _080163E8 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r3] - ldr r0, _080163EC @ =gBattle_BG0_X - movs r2, 0 - strh r2, [r0] - ldr r0, _080163F0 @ =gBattle_BG0_Y - strh r2, [r0] - ldr r1, _080163F4 @ =gActionSelectionCursor - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r1, _080163F8 @ =gMoveSelectionCursor - ldrb r0, [r3] - adds r0, r1 - strb r2, [r0] - ldr r2, _080163FC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldrb r4, [r3] - strb r4, [r2, 0x2] - ldrb r0, [r3] - ldr r1, _08016400 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x58 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - ldr r0, _08016404 @ =gBattleScripting - strb r4, [r0, 0x17] - ldr r1, _08016408 @ =gBattlescriptCurrInstr - ldr r0, _0801640C @ =gUnknown_81D894D - str r0, [r1] - ldr r1, _08016410 @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - ldr r1, _08016414 @ =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _080163DA - adds r0, 0x1 - strb r0, [r1, 0x2] -_080163DA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080163E0: .4byte gBattlerAttacker -_080163E4: .4byte gBattlerByTurnOrder -_080163E8: .4byte gCurrentTurnActionNumber -_080163EC: .4byte gBattle_BG0_X -_080163F0: .4byte gBattle_BG0_Y -_080163F4: .4byte gActionSelectionCursor -_080163F8: .4byte gMoveSelectionCursor -_080163FC: .4byte gBattleTextBuff1 -_08016400: .4byte gBattleStruct -_08016404: .4byte gBattleScripting -_08016408: .4byte gBattlescriptCurrInstr -_0801640C: .4byte gUnknown_81D894D -_08016410: .4byte gCurrentActionFuncId -_08016414: .4byte gBattleResults - thumb_func_end sub_8016374 - - thumb_func_start sub_8016418 -sub_8016418: @ 8016418 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08016474 @ =gBattlerAttacker - ldr r2, _08016478 @ =gBattlerTarget - ldr r1, _0801647C @ =gBattlerByTurnOrder - ldr r0, _08016480 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r4] - ldr r0, _08016484 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08016488 @ =gBattle_BG0_Y - strh r1, [r0] - ldrb r0, [r4] - bl ClearFuryCutterDestinyBondGrudge - ldr r5, _0801648C @ =gLastUsedItem - ldr r2, _08016490 @ =gBattleBufferB - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - strh r3, [r5] - adds r1, r3, 0 - cmp r1, 0xC - bhi _0801649C - ldr r2, _08016494 @ =gBattlescriptCurrInstr - ldr r1, _08016498 @ =gUnknown_81D99B0 - ldrh r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - b _080164FC - .align 2, 0 -_08016474: .4byte gBattlerAttacker -_08016478: .4byte gBattlerTarget -_0801647C: .4byte gBattlerByTurnOrder -_08016480: .4byte gCurrentTurnActionNumber -_08016484: .4byte gBattle_BG0_X -_08016488: .4byte gBattle_BG0_Y -_0801648C: .4byte gLastUsedItem -_08016490: .4byte gBattleBufferB -_08016494: .4byte gBattlescriptCurrInstr -_08016498: .4byte gUnknown_81D99B0 -_0801649C: - adds r0, r3, 0 - subs r0, 0x50 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080164C4 - ldr r0, _080164B8 @ =gBattlescriptCurrInstr - ldr r1, _080164BC @ =gUnknown_81D99FC - ldr r1, [r1] - str r1, [r0] - ldr r1, _080164C0 @ =gCurrentActionFuncId - mov r10, r1 - b _0801671E - .align 2, 0 -_080164B8: .4byte gBattlescriptCurrInstr -_080164BC: .4byte gUnknown_81D99FC -_080164C0: .4byte gCurrentActionFuncId -_080164C4: - movs r0, 0xAF - lsls r0, 1 - cmp r1, r0 - bne _080164E8 - ldr r0, _080164DC @ =gBattlescriptCurrInstr - ldr r1, _080164E0 @ =gUnknown_81D99FC - ldr r1, [r1, 0x4] - str r1, [r0] - ldr r2, _080164E4 @ =gCurrentActionFuncId - mov r10, r2 - b _0801671E - .align 2, 0 -_080164DC: .4byte gBattlescriptCurrInstr -_080164E0: .4byte gUnknown_81D99FC -_080164E4: .4byte gCurrentActionFuncId -_080164E8: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08016510 - ldr r0, _08016504 @ =gBattlescriptCurrInstr - ldr r1, _08016508 @ =gUnknown_81D99E4 - ldr r1, [r1] - str r1, [r0] -_080164FC: - ldr r0, _0801650C @ =gCurrentActionFuncId - mov r10, r0 - b _0801671E - .align 2, 0 -_08016504: .4byte gBattlescriptCurrInstr -_08016508: .4byte gUnknown_81D99E4 -_0801650C: .4byte gCurrentActionFuncId -_08016510: - ldr r3, _08016548 @ =gBattleScripting - ldrb r0, [r4] - strb r0, [r3, 0x17] - lsls r0, 24 - lsrs r0, 25 - ldr r2, _0801654C @ =gBattleStruct - ldr r1, [r2] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - subs r0, 0x1 - mov r8, r4 - ldr r1, _08016550 @ =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, _08016554 @ =gUnknown_81D99E4 - mov r12, r3 - adds r7, r2, 0 - ldr r2, _08016558 @ =gCurrentActionFuncId - mov r10, r2 - cmp r0, 0x4 - bls _0801653C - b _08016706 -_0801653C: - lsls r0, 2 - ldr r1, _0801655C @ =_08016560 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08016548: .4byte gBattleScripting -_0801654C: .4byte gBattleStruct -_08016550: .4byte gBattlescriptCurrInstr -_08016554: .4byte gUnknown_81D99E4 -_08016558: .4byte gCurrentActionFuncId -_0801655C: .4byte _08016560 - .align 2, 0 -_08016560: - .4byte _08016706 - .4byte _08016706 - .4byte _08016574 - .4byte _08016608 - .4byte _080166D8 -_08016574: - ldr r5, _080165AC @ =gBattleCommunication - movs r0, 0 - strb r0, [r5, 0x5] - ldr r2, _080165B0 @ =gBattlerAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080165C0 - movs r0, 0x3E - ands r0, r1 - ldr r1, _080165B4 @ =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, _080165B8 @ =gUnknown_81D99E4 - ldr r2, _080165BC @ =gCurrentActionFuncId - mov r10, r2 - cmp r0, 0 - bne _080165A6 - b _08016706 -_080165A6: - movs r0, 0x5 - strb r0, [r5, 0x5] - b _08016706 - .align 2, 0 -_080165AC: .4byte gBattleCommunication -_080165B0: .4byte gBattlerAttacker -_080165B4: .4byte gBattlescriptCurrInstr -_080165B8: .4byte gUnknown_81D99E4 -_080165BC: .4byte gCurrentActionFuncId -_080165C0: - ldr r0, _080165FC @ =gBattlescriptCurrInstr - mov r9, r0 - ldr r6, _08016600 @ =gUnknown_81D99E4 - ldr r1, _08016604 @ =gCurrentActionFuncId - mov r10, r1 - mov r4, r8 - adds r3, r7, 0 - adds r2, r5, 0 -_080165D0: - ldrb r1, [r4] - lsrs r1, 1 - ldr r0, [r3] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x5] - adds r0, 0x1 - strb r0, [r2, 0x5] - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080165D0 - b _08016706 - .align 2, 0 -_080165FC: .4byte gBattlescriptCurrInstr -_08016600: .4byte gUnknown_81D99E4 -_08016604: .4byte gCurrentActionFuncId -_08016608: - ldr r3, _0801663C @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r3, 0x5] - ldr r2, _08016640 @ =gBattlerAttacker - ldrb r0, [r2] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r6, r0, 0 - adds r6, 0xC6 - ldrb r1, [r6] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r8, r2 - cmp r5, 0 - beq _08016650 - movs r0, 0x5 - strb r0, [r3, 0x5] - ldr r2, _08016644 @ =gBattlescriptCurrInstr - mov r9, r2 - ldr r6, _08016648 @ =gUnknown_81D99E4 - ldr r0, _0801664C @ =gCurrentActionFuncId - mov r10, r0 - b _08016706 - .align 2, 0 -_0801663C: .4byte gBattleCommunication -_08016640: .4byte gBattlerAttacker -_08016644: .4byte gBattlescriptCurrInstr -_08016648: .4byte gUnknown_81D99E4 -_0801664C: .4byte gCurrentActionFuncId -_08016650: - ldr r3, _080166C4 @ =gBattleTextBuff1 - movs r4, 0xFD - strb r4, [r3] - movs r0, 0x5 - strb r0, [r3, 0x1] - movs r2, 0x1 - strb r2, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - ldr r1, _080166C8 @ =gBattleTextBuff2 - strb r4, [r1] - strb r5, [r1, 0x1] - movs r0, 0xD2 - strb r0, [r1, 0x2] - strb r5, [r1, 0x3] - subs r0, 0xD3 - strb r0, [r1, 0x4] - ldrb r0, [r6] - ands r2, r0 - ldr r1, _080166CC @ =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, _080166D0 @ =gUnknown_81D99E4 - ldr r0, _080166D4 @ =gCurrentActionFuncId - mov r10, r0 - cmp r2, 0 - bne _080166B4 - mov r5, r8 - adds r4, r7, 0 - adds r2, r3, 0 -_0801668A: - ldrb r1, [r5] - lsrs r1, 1 - ldr r0, [r4] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldrb r0, [r2, 0x2] - adds r0, 0x1 - strb r0, [r2, 0x2] - ldrb r0, [r5] - lsrs r0, 1 - ldr r1, [r4] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801668A -_080166B4: - ldrb r0, [r3, 0x2] - adds r0, 0xE - movs r1, 0 - mov r2, r12 - strb r0, [r2, 0x10] - strb r1, [r2, 0x11] - b _08016706 - .align 2, 0 -_080166C4: .4byte gBattleTextBuff1 -_080166C8: .4byte gBattleTextBuff2 -_080166CC: .4byte gBattlescriptCurrInstr -_080166D0: .4byte gUnknown_81D99E4 -_080166D4: .4byte gCurrentActionFuncId -_080166D8: - ldr r0, _080166EC @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080166F4 - ldr r1, _080166F0 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _080166F8 - .align 2, 0 -_080166EC: .4byte gBattleTypeFlags -_080166F0: .4byte gBattleCommunication -_080166F4: - ldr r0, _08016734 @ =gBattleCommunication - strb r1, [r0, 0x5] -_080166F8: - ldr r0, _08016738 @ =gBattlerAttacker - mov r8, r0 - ldr r1, _0801673C @ =gBattlescriptCurrInstr - mov r9, r1 - ldr r6, _08016740 @ =gUnknown_81D99E4 - ldr r2, _08016744 @ =gCurrentActionFuncId - mov r10, r2 -_08016706: - mov r1, r8 - ldrb r0, [r1] - lsrs r0, 1 - ldr r1, [r7] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r9 - str r0, [r2] -_0801671E: - movs r0, 0xA - mov r1, r10 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016734: .4byte gBattleCommunication -_08016738: .4byte gBattlerAttacker -_0801673C: .4byte gBattlescriptCurrInstr -_08016740: .4byte gUnknown_81D99E4 -_08016744: .4byte gCurrentActionFuncId - thumb_func_end sub_8016418 - - thumb_func_start TryRunFromBattle -TryRunFromBattle: @ 8016748 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r6, 0 - ldr r1, _0801676C @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08016774 - ldr r1, _08016770 @ =gEnigmaBerries - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x7] - b _0801677E - .align 2, 0 -_0801676C: .4byte gBattleMons -_08016770: .4byte gEnigmaBerries -_08016774: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r1, r0, 24 -_0801677E: - ldr r0, _080167AC @ =gPotentialItemEffectBattler - strb r4, [r0] - cmp r1, 0x25 - bne _080167BC - ldr r2, _080167B0 @ =gLastUsedItem - ldr r1, _080167B4 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r0, _080167B8 @ =gProtectStructs - lsls r2, r4, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x1] - b _08016816 - .align 2, 0 -_080167AC: .4byte gPotentialItemEffectBattler -_080167B0: .4byte gLastUsedItem -_080167B4: .4byte gBattleMons -_080167B8: .4byte gProtectStructs -_080167BC: - ldr r7, _080167EC @ =gBattleMons - movs r2, 0x58 - adds r0, r4, 0 - muls r0, r2 - adds r5, r0, r7 - adds r0, r5, 0 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x32 - bne _080167F8 - ldr r0, _080167F0 @ =gLastUsedAbility - strb r1, [r0] - ldr r0, _080167F4 @ =gProtectStructs - lsls r2, r4, 4 - adds r2, r0 - ldrb r1, [r2, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - b _08016816 - .align 2, 0 -_080167EC: .4byte gBattleMons -_080167F0: .4byte gLastUsedAbility -_080167F4: .4byte gProtectStructs -_080167F8: - ldr r0, _08016820 @ =gBattleTypeFlags - ldr r3, [r0] - movs r0, 0xA0 - lsls r0, 8 - ands r0, r3 - movs r1, 0x80 - lsls r1, 8 - cmp r0, r1 - bne _08016824 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801687A -_08016816: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - b _0801687A - .align 2, 0 -_08016820: .4byte gBattleTypeFlags -_08016824: - movs r0, 0x1 - ands r3, r0 - cmp r3, 0 - bne _0801686E - movs r1, 0x1 - adds r0, r4, 0 - eors r0, r1 - muls r0, r2 - adds r2, r0, r7 - ldrh r0, [r5, 0x6] - ldrh r1, [r2, 0x6] - cmp r0, r1 - bcs _08016868 - lsls r0, 7 - ldrh r1, [r2, 0x6] - bl __divsi3 - adds r4, r0, 0 - ldr r0, _08016894 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x6C - ldrb r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 1 - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - bl Random - movs r1, 0xFF - ands r1, r0 - cmp r4, r1 - bls _0801686E -_08016868: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801686E: - ldr r0, _08016894 @ =gBattleStruct - ldr r1, [r0] - adds r1, 0x6C - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0801687A: - cmp r6, 0 - beq _0801688C - ldr r1, _08016898 @ =gCurrentTurnActionNumber - ldr r0, _0801689C @ =gBattlersCount - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _080168A0 @ =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] -_0801688C: - adds r0, r6, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08016894: .4byte gBattleStruct -_08016898: .4byte gCurrentTurnActionNumber -_0801689C: .4byte gBattlersCount -_080168A0: .4byte gBattleOutcome - thumb_func_end TryRunFromBattle - - thumb_func_start sub_80168A4 -sub_80168A4: @ 80168A4 - push {r4-r6,lr} - ldr r4, _080168F4 @ =gBattlerAttacker - ldr r1, _080168F8 @ =gBattlerByTurnOrder - ldr r5, _080168FC @ =gCurrentTurnActionNumber - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, _08016900 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801694C - ldr r0, _08016904 @ =gBattlersCount - ldrb r1, [r0] - strb r1, [r5] - ldr r2, _08016908 @ =gActiveBattler - movs r0, 0 - strb r0, [r2] - lsls r1, 24 - cmp r1, 0 - beq _08016938 - adds r4, r2, 0 - ldr r6, _0801690C @ =gChosenActionByBattler - ldr r5, _08016910 @ =gBattleOutcome -_080168D8: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08016914 - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08016926 - ldrb r0, [r5] - movs r1, 0x2 - b _08016922 - .align 2, 0 -_080168F4: .4byte gBattlerAttacker -_080168F8: .4byte gBattlerByTurnOrder -_080168FC: .4byte gCurrentTurnActionNumber -_08016900: .4byte gBattleTypeFlags -_08016904: .4byte gBattlersCount -_08016908: .4byte gActiveBattler -_0801690C: .4byte gChosenActionByBattler -_08016910: .4byte gBattleOutcome -_08016914: - ldrb r0, [r4] - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08016926 - ldrb r0, [r5] - movs r1, 0x1 -_08016922: - orrs r0, r1 - strb r0, [r5] -_08016926: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08016944 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _080168D8 -_08016938: - ldr r0, _08016948 @ =gBattleOutcome - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _080169D8 - .align 2, 0 -_08016944: .4byte gBattlersCount -_08016948: .4byte gBattleOutcome -_0801694C: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801698C - ldrb r0, [r4] - bl TryRunFromBattle - lsls r0, 24 - cmp r0, 0 - bne _080169D8 - ldrb r0, [r4] - bl ClearFuryCutterDestinyBondGrudge - ldr r1, _0801697C @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r1, _08016980 @ =gBattlescriptCurrInstr - ldr r0, _08016984 @ =gUnknown_81D893A - str r0, [r1] - ldr r1, _08016988 @ =gCurrentActionFuncId - movs r0, 0xA - b _080169D6 - .align 2, 0 -_0801697C: .4byte gBattleCommunication -_08016980: .4byte gBattlescriptCurrInstr -_08016984: .4byte gUnknown_81D893A -_08016988: .4byte gCurrentActionFuncId -_0801698C: - ldr r1, _080169B4 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080169B8 @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - beq _080169CC - ldr r1, _080169BC @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r1, _080169C0 @ =gBattlescriptCurrInstr - ldr r0, _080169C4 @ =gUnknown_81D893A - str r0, [r1] - ldr r1, _080169C8 @ =gCurrentActionFuncId - movs r0, 0xA - b _080169D6 - .align 2, 0 -_080169B4: .4byte gBattleMons -_080169B8: .4byte 0x0400e000 -_080169BC: .4byte gBattleCommunication -_080169C0: .4byte gBattlescriptCurrInstr -_080169C4: .4byte gUnknown_81D893A -_080169C8: .4byte gCurrentActionFuncId -_080169CC: - ldr r0, _080169E0 @ =gBattlersCount - ldrb r0, [r0] - strb r0, [r5] - ldr r1, _080169E4 @ =gBattleOutcome - movs r0, 0x6 -_080169D6: - strb r0, [r1] -_080169D8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080169E0: .4byte gBattlersCount -_080169E4: .4byte gBattleOutcome - thumb_func_end sub_80168A4 - - thumb_func_start sub_80169E8 -sub_80169E8: @ 80169E8 - push {r4,r5,lr} - ldr r2, _08016A44 @ =gBattlerAttacker - ldr r1, _08016A48 @ =gBattlerByTurnOrder - ldr r0, _08016A4C @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _08016A50 @ =gBattle_BG0_X - movs r5, 0 - strh r5, [r0] - ldr r0, _08016A54 @ =gBattle_BG0_Y - strh r5, [r0] - ldr r4, _08016A58 @ =gBattleStruct - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0x79 - ldrb r0, [r2] - cmp r0, 0 - beq _08016A74 - subs r0, 0x1 - strb r0, [r2] - ldr r0, [r4] - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0 - bne _08016A68 - ldr r0, _08016A5C @ =gEnemyParty - movs r1, 0xB - bl GetMonData - ldr r4, [r4] - adds r4, 0x7C - ldr r2, _08016A60 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08016A64 @ =0x000004fb - bl __divsi3 - strb r0, [r4] - b _08016A98 - .align 2, 0 -_08016A44: .4byte gBattlerAttacker -_08016A48: .4byte gBattlerByTurnOrder -_08016A4C: .4byte gCurrentTurnActionNumber -_08016A50: .4byte gBattle_BG0_X -_08016A54: .4byte gBattle_BG0_Y -_08016A58: .4byte gBattleStruct -_08016A5C: .4byte gEnemyParty -_08016A60: .4byte gBaseStats -_08016A64: .4byte 0x000004fb -_08016A68: - ldr r1, _08016A70 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08016A9C - .align 2, 0 -_08016A70: .4byte gBattleCommunication -_08016A74: - adds r1, 0x7A - ldrb r0, [r1] - cmp r0, 0 - beq _08016A98 - subs r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x7A - ldrb r0, [r0] - cmp r0, 0 - beq _08016A98 - ldr r1, _08016A94 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08016A9C - .align 2, 0 -_08016A94: .4byte gBattleCommunication -_08016A98: - ldr r0, _08016AB0 @ =gBattleCommunication - strb r5, [r0, 0x5] -_08016A9C: - ldr r1, _08016AB4 @ =gBattlescriptCurrInstr - ldr r0, _08016AB8 @ =gUnknown_81D9A04 - ldr r0, [r0] - str r0, [r1] - ldr r1, _08016ABC @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08016AB0: .4byte gBattleCommunication -_08016AB4: .4byte gBattlescriptCurrInstr -_08016AB8: .4byte gUnknown_81D9A04 -_08016ABC: .4byte gCurrentActionFuncId - thumb_func_end sub_80169E8 - - thumb_func_start sub_8016AC0 -sub_8016AC0: @ 8016AC0 - ldr r2, _08016AF8 @ =gBattlerAttacker - ldr r1, _08016AFC @ =gBattlerByTurnOrder - ldr r0, _08016B00 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _08016B04 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08016B08 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r1, _08016B0C @ =gNumSafariBalls - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - ldr r1, _08016B10 @ =gLastUsedItem - movs r0, 0x5 - strh r0, [r1] - ldr r1, _08016B14 @ =gBattlescriptCurrInstr - ldr r0, _08016B18 @ =gUnknown_81D99B0 - ldr r0, [r0, 0x14] - str r0, [r1] - ldr r1, _08016B1C @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - bx lr - .align 2, 0 -_08016AF8: .4byte gBattlerAttacker -_08016AFC: .4byte gBattlerByTurnOrder -_08016B00: .4byte gCurrentTurnActionNumber -_08016B04: .4byte gBattle_BG0_X -_08016B08: .4byte gBattle_BG0_Y -_08016B0C: .4byte gNumSafariBalls -_08016B10: .4byte gLastUsedItem -_08016B14: .4byte gBattlescriptCurrInstr -_08016B18: .4byte gUnknown_81D99B0 -_08016B1C: .4byte gCurrentActionFuncId - thumb_func_end sub_8016AC0 - - thumb_func_start sub_8016B20 -sub_8016B20: @ 8016B20 - push {r4-r7,lr} - ldr r2, _08016B9C @ =gBattlerAttacker - ldr r1, _08016BA0 @ =gBattlerByTurnOrder - ldr r0, _08016BA4 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _08016BA8 @ =gBattle_BG0_X - movs r7, 0 - strh r7, [r0] - ldr r0, _08016BAC @ =gBattle_BG0_Y - strh r7, [r0] - bl Random - ldr r6, _08016BB0 @ =gBattleStruct - ldr r5, [r6] - adds r5, 0x7A - ldrb r4, [r5] - adds r4, 0x2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - adds r0, r4 - strb r0, [r5] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x7A - ldrb r0, [r1] - cmp r0, 0x6 - bls _08016B66 - movs r0, 0x6 - strb r0, [r1] -_08016B66: - ldr r0, [r6] - adds r0, 0x79 - strb r7, [r0] - ldr r1, [r6] - adds r1, 0x7C - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x7C - ldrb r0, [r1] - cmp r0, 0x2 - bhi _08016B86 - movs r0, 0x3 - strb r0, [r1] -_08016B86: - ldr r1, _08016BB4 @ =gBattlescriptCurrInstr - ldr r0, _08016BB8 @ =gUnknown_81D9A04 - ldr r0, [r0, 0x8] - str r0, [r1] - ldr r1, _08016BBC @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016B9C: .4byte gBattlerAttacker -_08016BA0: .4byte gBattlerByTurnOrder -_08016BA4: .4byte gCurrentTurnActionNumber -_08016BA8: .4byte gBattle_BG0_X -_08016BAC: .4byte gBattle_BG0_Y -_08016BB0: .4byte gBattleStruct -_08016BB4: .4byte gBattlescriptCurrInstr -_08016BB8: .4byte gUnknown_81D9A04 -_08016BBC: .4byte gCurrentActionFuncId - thumb_func_end sub_8016B20 - - thumb_func_start sub_8016BC0 -sub_8016BC0: @ 8016BC0 - push {r4-r7,lr} - ldr r2, _08016C3C @ =gBattlerAttacker - ldr r1, _08016C40 @ =gBattlerByTurnOrder - ldr r0, _08016C44 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _08016C48 @ =gBattle_BG0_X - movs r7, 0 - strh r7, [r0] - ldr r0, _08016C4C @ =gBattle_BG0_Y - strh r7, [r0] - bl Random - ldr r6, _08016C50 @ =gBattleStruct - ldr r5, [r6] - adds r5, 0x79 - ldrb r4, [r5] - adds r4, 0x2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - adds r0, r4 - strb r0, [r5] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x79 - ldrb r0, [r1] - cmp r0, 0x6 - bls _08016C06 - movs r0, 0x6 - strb r0, [r1] -_08016C06: - ldr r0, [r6] - adds r0, 0x7A - strb r7, [r0] - ldr r1, [r6] - adds r1, 0x7C - ldrb r0, [r1] - lsls r0, 1 - strb r0, [r1] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x7C - ldrb r0, [r1] - cmp r0, 0x14 - bls _08016C26 - movs r0, 0x14 - strb r0, [r1] -_08016C26: - ldr r1, _08016C54 @ =gBattlescriptCurrInstr - ldr r0, _08016C58 @ =gUnknown_81D9A04 - ldr r0, [r0, 0x4] - str r0, [r1] - ldr r1, _08016C5C @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016C3C: .4byte gBattlerAttacker -_08016C40: .4byte gBattlerByTurnOrder -_08016C44: .4byte gCurrentTurnActionNumber -_08016C48: .4byte gBattle_BG0_X -_08016C4C: .4byte gBattle_BG0_Y -_08016C50: .4byte gBattleStruct -_08016C54: .4byte gBattlescriptCurrInstr -_08016C58: .4byte gUnknown_81D9A04 -_08016C5C: .4byte gCurrentActionFuncId - thumb_func_end sub_8016BC0 - - thumb_func_start HandleAction_SafriZoneRun -HandleAction_SafriZoneRun: @ 8016C60 - push {r4,lr} - ldr r2, _08016C88 @ =gBattlerAttacker - ldr r1, _08016C8C @ =gBattlerByTurnOrder - ldr r4, _08016C90 @ =gCurrentTurnActionNumber - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x11 - bl PlaySE - ldr r0, _08016C94 @ =gBattlersCount - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _08016C98 @ =gBattleOutcome - movs r0, 0x4 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08016C88: .4byte gBattlerAttacker -_08016C8C: .4byte gBattlerByTurnOrder -_08016C90: .4byte gCurrentTurnActionNumber -_08016C94: .4byte gBattlersCount -_08016C98: .4byte gBattleOutcome - thumb_func_end HandleAction_SafriZoneRun - - thumb_func_start HandleAction_Action9 -HandleAction_Action9: @ 8016C9C - ldr r3, _08016CE8 @ =gBattlerAttacker - ldr r1, _08016CEC @ =gBattlerByTurnOrder - ldr r0, _08016CF0 @ =gCurrentTurnActionNumber - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - strb r2, [r3] - ldr r0, _08016CF4 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08016CF8 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r1, _08016CFC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, _08016D00 @ =gBattlerPartyIndexes - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08016D04 @ =gBattlescriptCurrInstr - ldr r0, _08016D08 @ =gUnknown_81D9A04 - ldr r0, [r0, 0xC] - str r0, [r1] - ldr r1, _08016D0C @ =gCurrentActionFuncId - movs r0, 0xA - strb r0, [r1] - ldr r1, _08016D10 @ =gActionsByTurnOrder - movs r0, 0xC - strb r0, [r1, 0x1] - bx lr - .align 2, 0 -_08016CE8: .4byte gBattlerAttacker -_08016CEC: .4byte gBattlerByTurnOrder -_08016CF0: .4byte gCurrentTurnActionNumber -_08016CF4: .4byte gBattle_BG0_X -_08016CF8: .4byte gBattle_BG0_Y -_08016CFC: .4byte gBattleTextBuff1 -_08016D00: .4byte gBattlerPartyIndexes -_08016D04: .4byte gBattlescriptCurrInstr -_08016D08: .4byte gUnknown_81D9A04 -_08016D0C: .4byte gCurrentActionFuncId -_08016D10: .4byte gActionsByTurnOrder - thumb_func_end HandleAction_Action9 - - thumb_func_start HandleAction_Action11 -HandleAction_Action11: @ 8016D14 - push {lr} - bl HandleFaintedMonActions - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08016D30 - ldr r0, _08016D34 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4D - strb r1, [r0] - ldr r1, _08016D38 @ =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] -_08016D30: - pop {r0} - bx r0 - .align 2, 0 -_08016D34: .4byte gBattleStruct -_08016D38: .4byte gCurrentActionFuncId - thumb_func_end HandleAction_Action11 - - thumb_func_start HandleAction_NothingIsFainted -HandleAction_NothingIsFainted: @ 8016D3C - ldr r1, _08016D5C @ =gCurrentTurnActionNumber - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r3, _08016D60 @ =gCurrentActionFuncId - ldr r2, _08016D64 @ =gActionsByTurnOrder - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r3] - ldr r2, _08016D68 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08016D6C @ =0xf1e892af - ands r0, r1 - str r0, [r2] - bx lr - .align 2, 0 -_08016D5C: .4byte gCurrentTurnActionNumber -_08016D60: .4byte gCurrentActionFuncId -_08016D64: .4byte gActionsByTurnOrder -_08016D68: .4byte gHitMarker -_08016D6C: .4byte 0xf1e892af - thumb_func_end HandleAction_NothingIsFainted - - thumb_func_start HandleAction_ActionFinished -HandleAction_ActionFinished: @ 8016D70 - push {r4,r5,lr} - ldr r1, _08016DE4 @ =gCurrentTurnActionNumber - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r3, _08016DE8 @ =gCurrentActionFuncId - ldr r2, _08016DEC @ =gActionsByTurnOrder - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r3] - bl SpecialStatusesClear - ldr r2, _08016DF0 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08016DF4 @ =0xf1e892af - ands r0, r1 - str r0, [r2] - ldr r0, _08016DF8 @ =gCurrentMove - movs r1, 0 - strh r1, [r0] - ldr r0, _08016DFC @ =gBattleMoveDamage - movs r4, 0 - str r4, [r0] - ldr r0, _08016E00 @ =gMoveResultFlags - strb r1, [r0] - ldr r5, _08016E04 @ =gBattleScripting - strb r1, [r5, 0x18] - strb r1, [r5, 0x19] - ldr r2, _08016E08 @ =gLastLandedMoves - ldr r3, _08016E0C @ =gBattlerAttacker - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r2, _08016E10 @ =gLastHitByType - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - strh r4, [r0] - ldr r0, _08016E14 @ =gBattleStruct - ldr r0, [r0] - strb r1, [r0, 0x13] - ldr r0, _08016E18 @ =gDynamicBasePower - strh r4, [r0] - strb r1, [r5, 0x14] - ldr r0, _08016E1C @ =gBattleCommunication - strb r1, [r0, 0x3] - strb r1, [r0, 0x4] - strb r1, [r5, 0x16] - ldr r0, _08016E20 @ =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x20 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08016DE4: .4byte gCurrentTurnActionNumber -_08016DE8: .4byte gCurrentActionFuncId -_08016DEC: .4byte gActionsByTurnOrder -_08016DF0: .4byte gHitMarker -_08016DF4: .4byte 0xf1e892af -_08016DF8: .4byte gCurrentMove -_08016DFC: .4byte gBattleMoveDamage -_08016E00: .4byte gMoveResultFlags -_08016E04: .4byte gBattleScripting -_08016E08: .4byte gLastLandedMoves -_08016E0C: .4byte gBattlerAttacker -_08016E10: .4byte gLastHitByType -_08016E14: .4byte gBattleStruct -_08016E18: .4byte gDynamicBasePower -_08016E1C: .4byte gBattleCommunication -_08016E20: .4byte gBattleResources - thumb_func_end HandleAction_ActionFinished - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim.s b/asm/battle_anim.s index d5e389807..d9471c9dd 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -281,9 +281,9 @@ _08072706: strh r1, [r0] ldr r0, _08072734 @ =gBattle_WIN0V strh r1, [r0] - ldr r0, _08072738 @ =gUnknown_2022988 + ldr r0, _08072738 @ =gBattle_WIN1H strh r1, [r0] - ldr r0, _0807273C @ =gUnknown_202298A + ldr r0, _0807273C @ =gBattle_WIN1V strh r1, [r0] add sp, 0x4 pop {r3-r5} @@ -298,8 +298,8 @@ _08072728: .4byte 0x0000ffff _0807272C: .4byte gMPlayInfo_BGM _08072730: .4byte gBattle_WIN0H _08072734: .4byte gBattle_WIN0V -_08072738: .4byte gUnknown_2022988 -_0807273C: .4byte gUnknown_202298A +_08072738: .4byte gBattle_WIN1H +_0807273C: .4byte gBattle_WIN1V thumb_func_end LaunchBattleAnimation thumb_func_start DestroyAnimSprite diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index 67ac6a13e..24921239f 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -3902,7 +3902,7 @@ _080A8C60: subs r0, r4 strh r0, [r1] _080A8C6A: - ldr r1, _080A8C80 @ =sub_8075D9C + ldr r1, _080A8C80 @ =AnimSpriteOnMonPos str r1, [r6, 0x1C] adds r0, r6, 0 bl _call_via_r1 @@ -3912,7 +3912,7 @@ _080A8C6A: bx r0 .align 2, 0 _080A8C7C: .4byte gBattleAnimArgs -_080A8C80: .4byte sub_8075D9C +_080A8C80: .4byte AnimSpriteOnMonPos thumb_func_end sub_80A8BC4 thumb_func_start sub_80A8C84 @@ -4233,7 +4233,7 @@ _080A8F0E: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r1, _080A8F34 @ =sub_8075D9C + ldr r1, _080A8F34 @ =AnimSpriteOnMonPos str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -4244,7 +4244,7 @@ _080A8F0E: _080A8F28: .4byte 0x000027db _080A8F2C: .4byte 0x01010000 _080A8F30: .4byte gBattleAnimArgs -_080A8F34: .4byte sub_8075D9C +_080A8F34: .4byte AnimSpriteOnMonPos thumb_func_end sub_80A8EE8 thumb_func_start sub_80A8F38 diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index 004ad8786..9c98d7f36 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -1481,11 +1481,11 @@ sub_80DEDD8: @ 80DEDD8 ldr r1, _080DEE14 @ =0x00001f3f movs r0, 0x48 bl SetGpuReg - ldr r1, _080DEE18 @ =gUnknown_2022988 + ldr r1, _080DEE18 @ =gBattle_WIN1H ldr r2, _080DEE1C @ =0x000098f0 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080DEE20 @ =gUnknown_202298A + ldr r1, _080DEE20 @ =gBattle_WIN1V movs r0, 0xA0 strh r0, [r1] ldr r0, _080DEE24 @ =gBattle_WIN0H @@ -1499,19 +1499,19 @@ sub_80DEDD8: @ 80DEDD8 b _080DEE5C .align 2, 0 _080DEE14: .4byte 0x00001f3f -_080DEE18: .4byte gUnknown_2022988 +_080DEE18: .4byte gBattle_WIN1H _080DEE1C: .4byte 0x000098f0 -_080DEE20: .4byte gUnknown_202298A +_080DEE20: .4byte gBattle_WIN1V _080DEE24: .4byte gBattle_WIN0H _080DEE28: .4byte gBattle_WIN0V _080DEE2C: ldr r1, _080DEE68 @ =0x00001f3f movs r0, 0x48 bl SetGpuReg - ldr r1, _080DEE6C @ =gUnknown_2022988 + ldr r1, _080DEE6C @ =gBattle_WIN1H movs r0, 0xF0 strh r0, [r1] - ldr r4, _080DEE70 @ =gUnknown_202298A + ldr r4, _080DEE70 @ =gBattle_WIN1V ldr r1, _080DEE74 @ =0x000078a0 adds r0, r1, 0 strh r0, [r4] @@ -1533,8 +1533,8 @@ _080DEE5C: bx r0 .align 2, 0 _080DEE68: .4byte 0x00001f3f -_080DEE6C: .4byte gUnknown_2022988 -_080DEE70: .4byte gUnknown_202298A +_080DEE6C: .4byte gBattle_WIN1H +_080DEE70: .4byte gBattle_WIN1V _080DEE74: .4byte 0x000078a0 thumb_func_end sub_80DEDD8 @@ -1546,10 +1546,10 @@ sub_80DEE78: @ 80DEE78 ldr r1, _080DEEB0 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg - ldr r0, _080DEEB4 @ =gUnknown_2022988 + ldr r0, _080DEEB4 @ =gBattle_WIN1H movs r1, 0 strh r1, [r0] - ldr r0, _080DEEB8 @ =gUnknown_202298A + ldr r0, _080DEEB8 @ =gBattle_WIN1V strh r1, [r0] bl IsContest lsls r0, 24 @@ -1567,8 +1567,8 @@ _080DEEA4: bx r0 .align 2, 0 _080DEEB0: .4byte 0x00003f3f -_080DEEB4: .4byte gUnknown_2022988 -_080DEEB8: .4byte gUnknown_202298A +_080DEEB4: .4byte gBattle_WIN1H +_080DEEB8: .4byte gBattle_WIN1V thumb_func_end sub_80DEE78 thumb_func_start sub_80DEEBC diff --git a/asm/battle_1.s b/asm/battle_bg.s index 0b8ad7365..6db40cb4d 100644 --- a/asm/battle_1.s +++ b/asm/battle_bg.s @@ -179,7 +179,7 @@ sub_800F324: @ 800F324 push {lr} movs r0, 0 bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0800F344 @ =gUnknown_8248320 + ldr r1, _0800F344 @ =gBattleBgTemplates movs r0, 0 movs r2, 0x4 bl InitBgsFromTemplates @@ -189,7 +189,7 @@ sub_800F324: @ 800F324 pop {r0} bx r0 .align 2, 0 -_0800F344: .4byte gUnknown_8248320 +_0800F344: .4byte gBattleBgTemplates _0800F348: .4byte gUnknown_8248330 thumb_func_end sub_800F324 @@ -217,8 +217,8 @@ sub_800F34C: @ 800F34C _0800F37C: .4byte 0x0000b040 thumb_func_end sub_800F34C - thumb_func_start sub_800F380 -sub_800F380: @ 800F380 + thumb_func_start LoadBattleMenuWindowGfx +LoadBattleMenuWindowGfx: @ 800F380 push {r4,r5,lr} movs r0, 0x2 movs r1, 0x12 @@ -278,7 +278,7 @@ _0800F3FC: .4byte 0x0000675a _0800F400: .4byte gPlttBufferFaded + 0xB8 _0800F404: .4byte gBattleTypeFlags _0800F408: .4byte 0x00010010 - thumb_func_end sub_800F380 + thumb_func_end LoadBattleMenuWindowGfx thumb_func_start sub_800F40C sub_800F40C: @ 800F40C @@ -309,7 +309,7 @@ LoadBattleTextboxAndBackground: @ 800F420 movs r1, 0 movs r2, 0x40 bl LoadCompressedPalette - bl sub_800F380 + bl LoadBattleMenuWindowGfx bl sub_800F40C pop {r0} bx r0 @@ -1143,8 +1143,8 @@ _0800FAD8: .4byte 0x000003ff _0800FADC: .4byte 0xfffffc00 thumb_func_end sub_800F6FC - thumb_func_start sub_800FAE0 -sub_800FAE0: @ 800FAE0 + thumb_func_start DrawBattleEntryBackground +DrawBattleEntryBackground: @ 800FAE0 push {r4,lr} ldr r0, _0800FB64 @ =gBattleTypeFlags ldr r1, [r0] @@ -1287,7 +1287,7 @@ _0800FC26: pop {r4} pop {r0} bx r0 - thumb_func_end sub_800FAE0 + thumb_func_end DrawBattleEntryBackground thumb_func_start sub_800FC2C sub_800FC2C: @ 800FC2C @@ -1459,7 +1459,7 @@ _0800FD68: .align 2, 0 _0800FD88: .4byte gUnknown_824EE34 _0800FD8C: - bl sub_800F380 + bl LoadBattleMenuWindowGfx b _0800FD94 _0800FD92: movs r4, 0x1 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s deleted file mode 100644 index 47230be60..000000000 --- a/asm/battle_controller_oak.s +++ /dev/null @@ -1,7887 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_81 -nullsub_81: @ 80E75AC - bx lr - thumb_func_end nullsub_81 - - thumb_func_start SetControllerToOakOrOldman -SetControllerToOakOrOldman: @ 80E75B0 - ldr r1, _080E75DC @ =gBattlerControllerFuncs - ldr r0, _080E75E0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E75E4 @ =sub_80E75EC - str r1, [r0] - ldr r2, _080E75E8 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x94 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x95 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x96 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x97 - strb r1, [r0] - bx lr - .align 2, 0 -_080E75DC: .4byte gBattlerControllerFuncs -_080E75E0: .4byte gActiveBattler -_080E75E4: .4byte sub_80E75EC -_080E75E8: .4byte gBattleStruct - thumb_func_end SetControllerToOakOrOldman - - thumb_func_start sub_80E75EC -sub_80E75EC: @ 80E75EC - push {lr} - ldr r2, _080E7620 @ =gBattleControllerExecFlags - ldr r1, _080E7624 @ =gBitTable - ldr r0, _080E7628 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080E7638 - ldr r0, _080E762C @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _080E7634 - ldr r0, _080E7630 @ =gUnknown_84020F8 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _080E7638 - .align 2, 0 -_080E7620: .4byte gBattleControllerExecFlags -_080E7624: .4byte gBitTable -_080E7628: .4byte gActiveBattler -_080E762C: .4byte gBattleBufferA -_080E7630: .4byte gUnknown_84020F8 -_080E7634: - bl WallyBufferExecCompleted -_080E7638: - pop {r0} - bx r0 - thumb_func_end sub_80E75EC - - thumb_func_start sub_80E763C -sub_80E763C: @ 80E763C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _080E769C @ =gBattleBufferA - ldr r4, _080E76A0 @ =gActiveBattler - ldrb r0, [r4] - lsls r2, r0, 9 - adds r1, r7, 0x2 - adds r1, r2, r1 - ldrb r5, [r1] - adds r1, r7, 0x3 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r5, r1 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect - ldr r0, _080E76A4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080E76D4 - movs r0, 0x5 - bl PlaySE - ldr r1, _080E76A8 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080E76BC - cmp r0, 0x1 - bgt _080E76AC - cmp r0, 0 - beq _080E76B6 - b _080E781A - .align 2, 0 -_080E769C: .4byte gBattleBufferA -_080E76A0: .4byte gActiveBattler -_080E76A4: .4byte gMain -_080E76A8: .4byte gActionSelectionCursor -_080E76AC: - cmp r0, 0x2 - beq _080E76C2 - cmp r0, 0x3 - beq _080E76C8 - b _080E781A -_080E76B6: - movs r0, 0x1 - movs r1, 0 - b _080E7814 -_080E76BC: - movs r0, 0x1 - movs r1, 0x1 - b _080E7814 -_080E76C2: - movs r0, 0x1 - movs r1, 0x2 - b _080E7814 -_080E76C8: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - b _080E781A -_080E76D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080E770C - ldr r5, _080E7708 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080E76EE - b _080E7838 -_080E76EE: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080E7794 - .align 2, 0 -_080E7708: .4byte gActionSelectionCursor -_080E770C: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7744 - ldr r5, _080E7740 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7726 - b _080E7838 -_080E7726: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080E7794 - .align 2, 0 -_080E7740: .4byte gActionSelectionCursor -_080E7744: - movs r0, 0x40 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _080E7764 - ldr r5, _080E7760 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E7838 - b _080E777C - .align 2, 0 -_080E7760: .4byte gActionSelectionCursor -_080E7764: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E77AC - ldr r5, _080E77A8 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080E7838 -_080E777C: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_080E7794: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - b _080E7838 - .align 2, 0 -_080E77A8: .4byte gActionSelectionCursor -_080E77AC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E782C - ldr r6, _080E7820 @ =gBattleTypeFlags - ldr r0, [r6] - ands r0, r2 - cmp r0, 0 - beq _080E7838 - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080E7838 - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080E7824 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _080E7828 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080E7838 - ldr r0, [r6] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _080E7838 - ldrb r0, [r4] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080E780A - cmp r5, 0xC - bhi _080E7838 - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem -_080E780A: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0xC -_080E7814: - movs r2, 0 - bl BtlController_EmitTwoReturnValues -_080E781A: - bl WallyBufferExecCompleted - b _080E7838 - .align 2, 0 -_080E7820: .4byte gBattleTypeFlags -_080E7824: .4byte gAbsentBattlerFlags -_080E7828: .4byte gBitTable -_080E782C: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080E7838 - bl SwapHpBarsWithHpText -_080E7838: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E763C - - thumb_func_start sub_80E7844 -sub_80E7844: @ 80E7844 - push {r4,lr} - ldr r1, _080E7860 @ =gBattleStruct - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0x94 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x1 - beq _080E787C - cmp r0, 0x1 - bgt _080E7864 - cmp r0, 0 - beq _080E786A - b _080E78D8 - .align 2, 0 -_080E7860: .4byte gBattleStruct -_080E7864: - cmp r0, 0x2 - beq _080E78B4 - b _080E78D8 -_080E786A: - adds r1, r2, 0 - adds r1, 0x96 - movs r0, 0x40 - strb r0, [r1] - ldr r1, [r4] - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080E787C: - ldr r1, [r4] - adds r1, 0x96 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080E78D8 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl ActionSelectionDestroyCursorAt - movs r0, 0x1 - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, [r4] - adds r0, 0x96 - movs r1, 0x40 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E78D8 -_080E78B4: - adds r1, r2, 0 - adds r1, 0x96 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080E78D8 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - bl WallyBufferExecCompleted -_080E78D8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E7844 - - thumb_func_start sub_80E78E0 -sub_80E78E0: @ 80E78E0 - push {lr} - ldr r2, _080E7908 @ =gSprites - ldr r1, _080E790C @ =gBattlerSpriteIds - ldr r0, _080E7910 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E7914 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E7904 - bl WallyBufferExecCompleted -_080E7904: - pop {r0} - bx r0 - .align 2, 0 -_080E7908: .4byte gSprites -_080E790C: .4byte gBattlerSpriteIds -_080E7910: .4byte gActiveBattler -_080E7914: .4byte SpriteCallbackDummy - thumb_func_end sub_80E78E0 - - thumb_func_start sub_80E7918 -sub_80E7918: @ 80E7918 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E792A - bl WallyBufferExecCompleted -_080E792A: - pop {r0} - bx r0 - thumb_func_end sub_80E7918 - - thumb_func_start sub_80E7930 -sub_80E7930: @ 80E7930 - push {lr} - ldr r0, _080E7960 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E795A - ldr r2, _080E7964 @ =gMain - ldr r0, _080E7968 @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _080E796C @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_080E795A: - pop {r0} - bx r0 - .align 2, 0 -_080E7960: .4byte gPaletteFade -_080E7964: .4byte gMain -_080E7968: .4byte 0x00000439 -_080E796C: .4byte gPreBattleCallback1 - thumb_func_end sub_80E7930 - - thumb_func_start sub_80E7970 -sub_80E7970: @ 80E7970 - push {lr} - ldr r0, _080E7984 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - bne _080E797E - bl WallyBufferExecCompleted -_080E797E: - pop {r0} - bx r0 - .align 2, 0 -_080E7984: .4byte gDoingBattleAnim - thumb_func_end sub_80E7970 - - thumb_func_start sub_80E7988 -sub_80E7988: @ 80E7988 - push {lr} - bl HandleInputChooseMove - ldr r2, _080E79AC @ =gBattleControllerExecFlags - ldr r1, _080E79B0 @ =gBitTable - ldr r0, _080E79B4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080E79A8 - bl WallyBufferExecCompleted -_080E79A8: - pop {r0} - bx r0 - .align 2, 0 -_080E79AC: .4byte gBattleControllerExecFlags -_080E79B0: .4byte gBitTable -_080E79B4: .4byte gActiveBattler - thumb_func_end sub_80E7988 - - thumb_func_start sub_80E79B8 -sub_80E79B8: @ 80E79B8 - push {r4,lr} - ldr r0, _080E79FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E79F6 - ldr r1, _080E7A00 @ =gBattlerControllerFuncs - ldr r2, _080E7A04 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7A08 @ =sub_80E7A14 - str r1, [r0] - ldr r3, _080E7A0C @ =gTasks - ldr r1, _080E7A10 @ =gUnknown_3004FFC - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldrb r4, [r1, 0x8] - bl DestroyTask - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl OpenPartyMenuInBattle -_080E79F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E79FC: .4byte gPaletteFade -_080E7A00: .4byte gBattlerControllerFuncs -_080E7A04: .4byte gActiveBattler -_080E7A08: .4byte sub_80E7A14 -_080E7A0C: .4byte gTasks -_080E7A10: .4byte gUnknown_3004FFC - thumb_func_end sub_80E79B8 - - thumb_func_start sub_80E7A14 -sub_80E7A14: @ 80E7A14 - push {lr} - ldr r0, _080E7A44 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080E7A48 @ =BattleMainCB2 - cmp r1, r0 - bne _080E7A6A - ldr r0, _080E7A4C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7A6A - ldr r0, _080E7A50 @ =gUnknown_203B0C0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080E7A5C - ldr r0, _080E7A54 @ =gUnknown_203B0C1 - ldrb r1, [r0] - ldr r2, _080E7A58 @ =gUnknown_203B0DC - movs r0, 0x1 - bl BtlController_EmitChosenMonReturnValue - b _080E7A66 - .align 2, 0 -_080E7A44: .4byte gMain -_080E7A48: .4byte BattleMainCB2 -_080E7A4C: .4byte gPaletteFade -_080E7A50: .4byte gUnknown_203B0C0 -_080E7A54: .4byte gUnknown_203B0C1 -_080E7A58: .4byte gUnknown_203B0DC -_080E7A5C: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue -_080E7A66: - bl WallyBufferExecCompleted -_080E7A6A: - pop {r0} - bx r0 - thumb_func_end sub_80E7A14 - - thumb_func_start sub_80E7A70 -sub_80E7A70: @ 80E7A70 - push {lr} - ldr r0, _080E7AA8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7AC0 - ldr r1, _080E7AAC @ =gBattlerControllerFuncs - ldr r0, _080E7AB0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7AB4 @ =sub_80E7AC4 - str r1, [r0] - bl nullsub_44 - bl FreeAllWindowBuffers - ldr r0, _080E7AB8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7ABC - bl sub_8107ECC - b _080E7AC0 - .align 2, 0 -_080E7AA8: .4byte gPaletteFade -_080E7AAC: .4byte gBattlerControllerFuncs -_080E7AB0: .4byte gActiveBattler -_080E7AB4: .4byte sub_80E7AC4 -_080E7AB8: .4byte gBattleTypeFlags -_080E7ABC: - bl sub_810AF74 -_080E7AC0: - pop {r0} - bx r0 - thumb_func_end sub_80E7A70 - - thumb_func_start sub_80E7AC4 -sub_80E7AC4: @ 80E7AC4 - push {lr} - ldr r0, _080E7B14 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080E7B18 @ =BattleMainCB2 - cmp r1, r0 - bne _080E7B42 - ldr r0, _080E7B1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7B42 - movs r0, 0x4 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _080E7B34 - ldr r0, _080E7B20 @ =gSpecialVar_ItemId - ldrh r0, [r0] - cmp r0, 0xD - bne _080E7B34 - ldr r0, _080E7B24 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7B34 - movs r0, 0x4 - bl sub_80EB2F4 - ldr r1, _080E7B28 @ =gBattlerControllerFuncs - ldr r0, _080E7B2C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7B30 @ =sub_80E8704 - str r1, [r0] - b _080E7B42 - .align 2, 0 -_080E7B14: .4byte gMain -_080E7B18: .4byte BattleMainCB2 -_080E7B1C: .4byte gPaletteFade -_080E7B20: .4byte gSpecialVar_ItemId -_080E7B24: .4byte gBattleTypeFlags -_080E7B28: .4byte gBattlerControllerFuncs -_080E7B2C: .4byte gActiveBattler -_080E7B30: .4byte sub_80E8704 -_080E7B34: - ldr r0, _080E7B48 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl WallyBufferExecCompleted -_080E7B42: - pop {r0} - bx r0 - .align 2, 0 -_080E7B48: .4byte gSpecialVar_ItemId - thumb_func_end sub_80E7AC4 - - thumb_func_start sub_80E7B4C -sub_80E7B4C: @ 80E7B4C - push {r4-r7,lr} - ldr r4, _080E7CB0 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r5, _080E7CB4 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7B80 - ldr r0, _080E7CB8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080E7CBC @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_080E7B80: - ldr r1, [r4] - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7BB2 - ldr r0, _080E7CB8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080E7CBC @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_080E7BB2: - ldr r0, [r4] - ldrb r2, [r5] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - movs r4, 0x8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7CA8 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7CA8 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E7C46 - ldr r0, _080E7CC0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E7C46 - ldr r1, _080E7CC4 @ =gUnknown_3004FFC - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E7CC8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _080E7CCC @ =gHealthboxSpriteIds - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _080E7CB8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080E7CBC @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - eors r0, r6 - bl sub_804BD94 - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible -_080E7C46: - ldr r1, _080E7CC4 @ =gUnknown_3004FFC - ldr r4, _080E7CB4 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E7CC8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _080E7CCC @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _080E7CB8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080E7CBC @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _080E7CB0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080E7CD0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7CD4 @ =sub_80E7CD8 - str r1, [r0] -_080E7CA8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7CB0: .4byte gBattleSpritesDataPtr -_080E7CB4: .4byte gActiveBattler -_080E7CB8: .4byte gBattlerPartyIndexes -_080E7CBC: .4byte gPlayerParty -_080E7CC0: .4byte gBattleTypeFlags -_080E7CC4: .4byte gUnknown_3004FFC -_080E7CC8: .4byte gSprites -_080E7CCC: .4byte gHealthboxSpriteIds -_080E7CD0: .4byte gBattlerControllerFuncs -_080E7CD4: .4byte sub_80E7CD8 - thumb_func_end sub_80E7B4C - - thumb_func_start sub_80E7CD8 -sub_80E7CD8: @ 80E7CD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r2, _080E7DD8 @ =gSprites - ldr r0, _080E7DDC @ =gHealthboxSpriteIds - ldr r1, _080E7DE0 @ =gActiveBattler - mov r8, r1 - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E7DE4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E7D02 - movs r4, 0x1 -_080E7D02: - cmp r4, 0 - beq _080E7DCE - ldr r7, _080E7DE8 @ =gBattleSpritesDataPtr - ldr r0, [r7] - ldr r4, [r0, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r4 - ldrb r1, [r2, 0x1] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7DCE - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7DCE - ldrb r1, [r2] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r7] - mov r1, r8 - ldrb r2, [r1] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _080E7DEC @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _080E7DF0 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _080E7DF4 @ =gBattlerPartyIndexes - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E7DF8 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - ldr r1, _080E7DFC @ =gBattlerControllerFuncs - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7E00 @ =sub_80E835C - str r1, [r0] -_080E7DCE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7DD8: .4byte gSprites -_080E7DDC: .4byte gHealthboxSpriteIds -_080E7DE0: .4byte gActiveBattler -_080E7DE4: .4byte SpriteCallbackDummy -_080E7DE8: .4byte gBattleSpritesDataPtr -_080E7DEC: .4byte 0x000027f9 -_080E7DF0: .4byte c3_0802FDF4 -_080E7DF4: .4byte gBattlerPartyIndexes -_080E7DF8: .4byte gPlayerParty -_080E7DFC: .4byte gBattlerControllerFuncs -_080E7E00: .4byte sub_80E835C - thumb_func_end sub_80E7CD8 - - thumb_func_start sub_80E7E04 -sub_80E7E04: @ 80E7E04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080E7F04 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080E7E4A - ldr r1, _080E7F08 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _080E7E4A - b _080E7F60 -_080E7E4A: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _080E7F0C @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _080E7F10 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _080E7F14 @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _080E7F38 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _080E7F18 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E7F20 - ldr r2, _080E7F08 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _080E7EFE - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _080E7F20 -_080E7EFE: - ldr r0, _080E7F1C @ =sub_80E8190 - b _080E7F62 - .align 2, 0 -_080E7F04: .4byte gTasks -_080E7F08: .4byte gBattlerPartyIndexes -_080E7F0C: .4byte gPlayerParty -_080E7F10: .4byte gExperienceTables -_080E7F14: .4byte gBaseStats -_080E7F18: .4byte gActiveBattler -_080E7F1C: .4byte sub_80E8190 -_080E7F20: - ldr r0, _080E7F30 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E7F34 @ =sub_80E82A8 - b _080E7F64 - .align 2, 0 -_080E7F30: .4byte gTasks -_080E7F34: .4byte sub_80E82A8 -_080E7F38: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _080E7F58 @ =gBattlerControllerFuncs - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _080E7F5C @ =sub_80E8930 - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _080E7F66 - .align 2, 0 -_080E7F58: .4byte gBattlerControllerFuncs -_080E7F5C: .4byte sub_80E8930 -_080E7F60: - ldr r0, _080E7F78 @ =sub_80E7F7C -_080E7F62: - mov r1, r8 -_080E7F64: - str r0, [r1] -_080E7F66: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7F78: .4byte sub_80E7F7C - thumb_func_end sub_80E7E04 - - thumb_func_start sub_80E7F7C -sub_80E7F7C: @ 80E7F7C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E8034 @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _080E8038 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _080E803C @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _080E8040 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _080E8044 @ =gHealthboxSpriteIds - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl SetBattleBarStruct - movs r0, 0x1B - bl PlaySE - ldr r0, _080E8048 @ =sub_80E804C - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8034: .4byte gTasks -_080E8038: .4byte gPlayerParty -_080E803C: .4byte gExperienceTables -_080E8040: .4byte gBaseStats -_080E8044: .4byte gHealthboxSpriteIds -_080E8048: .4byte sub_80E804C - thumb_func_end sub_80E7F7C - - thumb_func_start sub_80E804C -sub_80E804C: @ 80E804C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080E8078 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _080E807C - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _080E8178 - .align 2, 0 -_080E8078: .4byte gTasks -_080E807C: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _080E8144 @ =gHealthboxSpriteIds - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _080E8178 - movs r0, 0x1B - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _080E8148 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080E814C @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _080E8150 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _080E815C - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _080E8154 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - ldr r0, _080E8158 @ =sub_80E8190 - str r0, [r6] - b _080E8178 - .align 2, 0 -_080E8144: .4byte gHealthboxSpriteIds -_080E8148: .4byte gPlayerParty -_080E814C: .4byte gExperienceTables -_080E8150: .4byte gBaseStats -_080E8154: .4byte gActiveBattler -_080E8158: .4byte sub_80E8190 -_080E815C: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _080E8188 @ =gBattlerControllerFuncs - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _080E818C @ =sub_80E8930 - str r1, [r0] - mov r0, r8 - bl DestroyTask -_080E8178: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E8188: .4byte gBattlerControllerFuncs -_080E818C: .4byte sub_80E8930 - thumb_func_end sub_80E804C - - thumb_func_start sub_80E8190 -sub_80E8190: @ 80E8190 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E81E4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E81C4 - ldr r1, _080E81E8 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _080E81C4 - adds r4, r2, 0 -_080E81C4: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl InitAndLaunchSpecialAnimation - ldr r0, _080E81E4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E81EC @ =sub_80E81F0 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E81E4: .4byte gTasks -_080E81E8: .4byte gBattlerPartyIndexes -_080E81EC: .4byte sub_80E81F0 - thumb_func_end sub_80E8190 - - thumb_func_start sub_80E81F0 -sub_80E81F0: @ 80E81F0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E825C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - ldr r0, _080E8260 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E8292 - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _080E8264 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E8270 - ldr r1, _080E8268 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _080E8270 - ldr r0, _080E826C @ =gHealthboxSpriteIds - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl UpdateHealthboxAttribute - b _080E8284 - .align 2, 0 -_080E825C: .4byte gTasks -_080E8260: .4byte gBattleSpritesDataPtr -_080E8264: .4byte gPlayerParty -_080E8268: .4byte gBattlerPartyIndexes -_080E826C: .4byte gHealthboxSpriteIds -_080E8270: - ldr r0, _080E8298 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _080E829C @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_080E8284: - ldr r0, _080E82A0 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E82A4 @ =sub_80E82A8 - str r0, [r1] -_080E8292: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E8298: .4byte gHealthboxSpriteIds -_080E829C: .4byte gPlayerParty -_080E82A0: .4byte gTasks -_080E82A4: .4byte sub_80E82A8 - thumb_func_end sub_80E81F0 - - thumb_func_start sub_80E82A8 -sub_80E82A8: @ 80E82A8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080E82E4 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E82E8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - ldrb r0, [r4, 0xC] - ldr r1, _080E82EC @ =gBattlerControllerFuncs - lsls r0, 2 - adds r0, r1 - ldr r1, _080E82F0 @ =sub_80E8930 - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E82E4: .4byte gTasks -_080E82E8: .4byte gPlayerParty -_080E82EC: .4byte gBattlerControllerFuncs -_080E82F0: .4byte sub_80E8930 - thumb_func_end sub_80E82A8 - - thumb_func_start sub_80E82F4 -sub_80E82F4: @ 80E82F4 - push {r4-r6,lr} - ldr r6, _080E834C @ =gSprites - ldr r5, _080E8350 @ =gBattlerSpriteIds - ldr r4, _080E8354 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r6 - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - cmp r0, 0xA0 - ble _080E8344 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _080E8358 @ =gHealthboxSpriteIds - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl WallyBufferExecCompleted -_080E8344: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E834C: .4byte gSprites -_080E8350: .4byte gBattlerSpriteIds -_080E8354: .4byte gActiveBattler -_080E8358: .4byte gHealthboxSpriteIds - thumb_func_end sub_80E82F4 - - thumb_func_start sub_80E835C -sub_80E835C: @ 80E835C - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _080E837C @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x8 - bls _080E8370 - b _080E855E -_080E8370: - lsls r0, 2 - ldr r1, _080E8380 @ =_080E8384 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E837C: .4byte gBattleStruct -_080E8380: .4byte _080E8384 - .align 2, 0 -_080E8384: - .4byte _080E83A8 - .4byte _080E83F0 - .4byte _080E8408 - .4byte _080E8420 - .4byte _080E8468 - .4byte _080E8490 - .4byte _080E84D8 - .4byte _080E8500 - .4byte _080E8530 -_080E83A8: - ldr r0, _080E83EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080E83BA - b _080E855E -_080E83BA: - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x95 - adds r4, 0x97 - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80EEFC8 - movs r0, 0x82 - negs r0, r0 - str r6, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r7] - b _080E8522 - .align 2, 0 -_080E83EC: .4byte gPaletteFade -_080E83F0: - ldr r0, _080E8404 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E83FE - b _080E855E -_080E83FE: - bl sub_80EB30C - b _080E851E - .align 2, 0 -_080E8404: .4byte gPaletteFade -_080E8408: - ldr r0, _080E8418 @ =gUnknown_83FDAE2 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E841C @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E8418: .4byte gUnknown_83FDAE2 -_080E841C: .4byte gDisplayedStringBattle -_080E8420: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080E8430 - b _080E855E -_080E8430: - ldr r2, _080E8460 @ =gBitTable - ldr r4, _080E8464 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E8522 - .align 2, 0 -_080E8460: .4byte gBitTable -_080E8464: .4byte gBattleStruct -_080E8468: - ldr r0, _080E8484 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E855E - ldr r0, _080E8488 @ =gUnknown_83FDB92 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E848C @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E8484: .4byte gPaletteFade -_080E8488: .4byte gUnknown_83FDB92 -_080E848C: .4byte gDisplayedStringBattle -_080E8490: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080E855E - ldr r2, _080E84D0 @ =gBitTable - ldr r4, _080E84D4 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E8522 - .align 2, 0 -_080E84D0: .4byte gBitTable -_080E84D4: .4byte gBattleStruct -_080E84D8: - ldr r0, _080E84F4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E855E - ldr r0, _080E84F8 @ =gUnknown_83FDBEF - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E84FC @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E84F4: .4byte gPaletteFade -_080E84F8: .4byte gUnknown_83FDBEF -_080E84FC: .4byte gDisplayedStringBattle -_080E8500: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080E855E - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E851E: - ldr r0, _080E852C @ =gBattleStruct - ldr r1, [r0] -_080E8522: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E855E - .align 2, 0 -_080E852C: .4byte gBattleStruct -_080E8530: - ldr r0, _080E8568 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080E855E - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_80EF0E0 - bl sub_80EB524 - ldr r0, _080E856C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r4, [r0] - bl WallyBufferExecCompleted -_080E855E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E8568: .4byte gPaletteFade -_080E856C: .4byte gBattleStruct - thumb_func_end sub_80E835C - - thumb_func_start sub_80E8570 -sub_80E8570: @ 80E8570 - push {lr} - ldr r0, _080E8580 @ =gUnknown_83FDC58 - movs r1, 0x1 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E8580: .4byte gUnknown_83FDC58 - thumb_func_end sub_80E8570 - - thumb_func_start sub_80E8584 -sub_80E8584: @ 80E8584 - push {lr} - ldr r0, _080E8594 @ =gUnknown_83FDC95 - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E8594: .4byte gUnknown_83FDC95 - thumb_func_end sub_80E8584 - - thumb_func_start sub_80E8598 -sub_80E8598: @ 80E8598 - push {lr} - ldr r0, _080E85A8 @ =gUnknown_83FDD23 - movs r1, 0x1 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85A8: .4byte gUnknown_83FDD23 - thumb_func_end sub_80E8598 - - thumb_func_start sub_80E85AC -sub_80E85AC: @ 80E85AC - push {lr} - ldr r0, _080E85BC @ =gUnknown_83FDD64 - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85BC: .4byte gUnknown_83FDD64 - thumb_func_end sub_80E85AC - - thumb_func_start sub_80E85C0 -sub_80E85C0: @ 80E85C0 - push {lr} - ldr r0, _080E85D0 @ =gUnknown_83FDDEB - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85D0: .4byte gUnknown_83FDDEB - thumb_func_end sub_80E85C0 - - thumb_func_start sub_80E85D4 -sub_80E85D4: @ 80E85D4 - push {r4,r5,lr} - sub sp, 0x4 - adds r2, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r1, _080E85F8 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bls _080E85EE - b _080E86F2 -_080E85EE: - lsls r0, 2 - ldr r1, _080E85FC @ =_080E8600 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E85F8: .4byte gBattleStruct -_080E85FC: .4byte _080E8600 - .align 2, 0 -_080E8600: - .4byte _080E8618 - .4byte _080E8634 - .4byte _080E865A - .4byte _080E8670 - .4byte _080E8684 - .4byte _080E86B4 -_080E8618: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E86F2 - ldr r1, _080E8630 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x97 - strb r4, [r0] - ldr r1, [r1] - b _080E86A6 - .align 2, 0 -_080E8630: .4byte gBattleStruct -_080E8634: - ldr r1, [r5] - adds r1, 0x97 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E86F2 - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E86A6 -_080E865A: - ldr r0, _080E866C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E86F2 - bl sub_80EB30C - b _080E86A2 - .align 2, 0 -_080E866C: .4byte gPaletteFade -_080E8670: - adds r0, r2, 0 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E8680 @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E86A2 - .align 2, 0 -_080E8680: .4byte gDisplayedStringBattle -_080E8684: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080E86F2 - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E86A2: - ldr r0, _080E86B0 @ =gBattleStruct - ldr r1, [r0] -_080E86A6: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E86F2 - .align 2, 0 -_080E86B0: .4byte gBattleStruct -_080E86B4: - ldr r0, _080E86D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E86F2 - bl sub_80EB524 - ldr r0, _080E86DC @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E86E0 - bl WallyBufferExecCompleted - b _080E86E4 - .align 2, 0 -_080E86D8: .4byte gPaletteFade -_080E86DC: .4byte gActiveBattler -_080E86E0: - bl OpponentBufferExecCompleted -_080E86E4: - ldr r0, _080E86FC @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x7] - ldr r0, _080E8700 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r1, [r0] -_080E86F2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E86FC: .4byte gBattleCommunication -_080E8700: .4byte gBattleStruct - thumb_func_end sub_80E85D4 - - thumb_func_start sub_80E8704 -sub_80E8704: @ 80E8704 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _080E8724 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x6 - bls _080E8718 - b _080E88AA -_080E8718: - lsls r0, 2 - ldr r1, _080E8728 @ =_080E872C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E8724: .4byte gBattleStruct -_080E8728: .4byte _080E872C - .align 2, 0 -_080E872C: - .4byte _080E8748 - .4byte _080E8788 - .4byte _080E87D0 - .4byte _080E87E8 - .4byte _080E8800 - .4byte _080E8848 - .4byte _080E8880 -_080E8748: - ldr r0, _080E8780 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080E875A - b _080E88AA -_080E875A: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x95 - adds r1, 0x97 - ldr r2, _080E8784 @ =gActiveBattler - ldrb r2, [r2] - bl sub_80EEFC8 - movs r0, 0x82 - negs r0, r0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E886C - .align 2, 0 -_080E8780: .4byte gPaletteFade -_080E8784: .4byte gActiveBattler -_080E8788: - ldr r0, _080E87C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080E879A - b _080E88AA -_080E879A: - ldr r2, _080E87CC @ =gBitTable - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E886C - .align 2, 0 -_080E87C8: .4byte gPaletteFade -_080E87CC: .4byte gBitTable -_080E87D0: - ldr r0, _080E87E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E88AA - bl sub_80EB30C - b _080E8868 - .align 2, 0 -_080E87E4: .4byte gPaletteFade -_080E87E8: - ldr r0, _080E87F8 @ =gUnknown_83FDCD2 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E87FC @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E8868 - .align 2, 0 -_080E87F8: .4byte gUnknown_83FDCD2 -_080E87FC: .4byte gDisplayedStringBattle -_080E8800: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080E88AA - ldr r2, _080E8840 @ =gBitTable - ldr r4, _080E8844 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E886C - .align 2, 0 -_080E8840: .4byte gBitTable -_080E8844: .4byte gBattleStruct -_080E8848: - ldr r0, _080E8878 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E88AA - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E8868: - ldr r0, _080E887C @ =gBattleStruct - ldr r1, [r0] -_080E886C: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E88AA - .align 2, 0 -_080E8878: .4byte gPaletteFade -_080E887C: .4byte gBattleStruct -_080E8880: - ldr r0, _080E88B4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080E88AA - bl sub_80EB524 - ldr r0, _080E88B8 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl WallyBufferExecCompleted - ldr r0, _080E88BC @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r4, [r0] -_080E88AA: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E88B4: .4byte gPaletteFade -_080E88B8: .4byte gSpecialVar_ItemId -_080E88BC: .4byte gBattleStruct - thumb_func_end sub_80E8704 - - thumb_func_start sub_80E88C0 -sub_80E88C0: @ 80E88C0 - push {r4-r6,lr} - ldr r5, _080E8900 @ =gActiveBattler - ldrb r0, [r5] - ldr r6, _080E8904 @ =gHealthboxSpriteIds - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080E8908 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _080E8922 - .align 2, 0 -_080E8900: .4byte gActiveBattler -_080E8904: .4byte gHealthboxSpriteIds -_080E8908: - ldr r2, _080E8928 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E892C @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl WallyBufferExecCompleted -_080E8922: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8928: .4byte gBattlerPartyIndexes -_080E892C: .4byte gPlayerParty - thumb_func_end sub_80E88C0 - - thumb_func_start sub_80E8930 -sub_80E8930: @ 80E8930 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E8942 - bl WallyBufferExecCompleted -_080E8942: - pop {r0} - bx r0 - thumb_func_end sub_80E8930 - - thumb_func_start DoHitAnimBlinkSpriteEffect_3 -DoHitAnimBlinkSpriteEffect_3: @ 80E8948 - push {r4,lr} - ldr r1, _080E8984 @ =gBattlerSpriteIds - ldr r0, _080E8988 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080E898C @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _080E8994 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _080E8990 @ =gDoingBattleAnim - strb r3, [r0] - bl WallyBufferExecCompleted - b _080E89BE - .align 2, 0 -_080E8984: .4byte gBattlerSpriteIds -_080E8988: .4byte gActiveBattler -_080E898C: .4byte gSprites -_080E8990: .4byte gDoingBattleAnim -_080E8994: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080E89B8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080E89B8: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080E89BE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DoHitAnimBlinkSpriteEffect_3 - - thumb_func_start sub_80E89C4 -sub_80E89C4: @ 80E89C4 - push {r4-r6,lr} - ldr r0, _080E8A20 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _080E8A24 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E8A18 - ldr r5, _080E8A28 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080E8A2C @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080E8A30 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl WallyBufferExecCompleted -_080E8A18: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8A20: .4byte gBattleSpritesDataPtr -_080E8A24: .4byte gActiveBattler -_080E8A28: .4byte gBattlerSpriteIds -_080E8A2C: .4byte gSprites -_080E8A30: .4byte gHealthboxSpriteIds - thumb_func_end sub_80E89C4 - - thumb_func_start sub_80E8A34 -sub_80E8A34: @ 80E8A34 - push {lr} - ldr r2, _080E8A5C @ =gSprites - ldr r1, _080E8A60 @ =gBattlerSpriteIds - ldr r0, _080E8A64 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E8A68 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E8A58 - bl WallyBufferExecCompleted -_080E8A58: - pop {r0} - bx r0 - .align 2, 0 -_080E8A5C: .4byte gSprites -_080E8A60: .4byte gBattlerSpriteIds -_080E8A64: .4byte gActiveBattler -_080E8A68: .4byte SpriteCallbackDummy - thumb_func_end sub_80E8A34 - - thumb_func_start CompleteOnFinishedBattleAnimation_4 -CompleteOnFinishedBattleAnimation_4: @ 80E8A6C - push {lr} - ldr r0, _080E8A94 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080E8A98 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080E8A8E - bl WallyBufferExecCompleted -_080E8A8E: - pop {r0} - bx r0 - .align 2, 0 -_080E8A94: .4byte gBattleSpritesDataPtr -_080E8A98: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation_4 - - thumb_func_start WallyBufferExecCompleted -WallyBufferExecCompleted: @ 80E8A9C - push {r4,lr} - sub sp, 0x4 - ldr r1, _080E8ADC @ =gBattlerControllerFuncs - ldr r4, _080E8AE0 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E8AE4 @ =sub_80E75EC - str r1, [r0] - ldr r0, _080E8AE8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E8AF0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _080E8AEC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _080E8B02 - .align 2, 0 -_080E8ADC: .4byte gBattlerControllerFuncs -_080E8AE0: .4byte gActiveBattler -_080E8AE4: .4byte sub_80E75EC -_080E8AE8: .4byte gBattleTypeFlags -_080E8AEC: .4byte gBattleBufferA -_080E8AF0: - ldr r2, _080E8B0C @ =gBattleControllerExecFlags - ldr r1, _080E8B10 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_080E8B02: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E8B0C: .4byte gBattleControllerExecFlags -_080E8B10: .4byte gBitTable - thumb_func_end WallyBufferExecCompleted - - thumb_func_start CompleteOnFinishedStatusAnimation_4 -CompleteOnFinishedStatusAnimation_4: @ 80E8B14 - push {lr} - ldr r0, _080E8B3C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080E8B40 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080E8B36 - bl WallyBufferExecCompleted -_080E8B36: - pop {r0} - bx r0 - .align 2, 0 -_080E8B3C: .4byte gBattleSpritesDataPtr -_080E8B40: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation_4 - - thumb_func_start WallyHandleGetMonData -WallyHandleGetMonData: @ 80E8B44 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _080E8B70 @ =gBattleBufferA - ldr r0, _080E8B74 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080E8B7C - ldr r0, _080E8B78 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl CopyWallyMonData - adds r6, r0, 0 - b _080E8B9E - .align 2, 0 -_080E8B70: .4byte gBattleBufferA -_080E8B74: .4byte gActiveBattler -_080E8B78: .4byte gBattlerPartyIndexes -_080E8B7C: - ldrb r4, [r1] - movs r5, 0 -_080E8B80: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080E8B96 - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl CopyWallyMonData - adds r6, r0 -_080E8B96: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _080E8B80 -_080E8B9E: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl WallyBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end WallyHandleGetMonData - - thumb_func_start CopyWallyMonData -CopyWallyMonData: @ 80E8BB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _080E8BEC @ =gBattleBufferA - ldr r3, _080E8BF0 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _080E8BE2 - bl _080E934E -_080E8BE2: - lsls r0, 2 - ldr r1, _080E8BF4 @ =_080E8BF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E8BEC: .4byte gBattleBufferA -_080E8BF0: .4byte gActiveBattler -_080E8BF4: .4byte _080E8BF8 - .align 2, 0 -_080E8BF8: - .4byte _080E8CE8 - .4byte _080E8F0C - .4byte _080E8F1C - .4byte _080E8F2C - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8FB0 - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E934E - .4byte _080E934E - .4byte _080E934E - .4byte _080E934E - .4byte _080E9008 - .4byte _080E9018 - .4byte _080E9048 - .4byte _080E9058 - .4byte _080E9068 - .4byte _080E9078 - .4byte _080E9088 - .4byte _080E9098 - .4byte _080E90A8 - .4byte _080E90B8 - .4byte _080E90C8 - .4byte _080E90D8 - .4byte _080E90E8 - .4byte _080E90F8 - .4byte _080E9108 - .4byte _080E9158 - .4byte _080E9168 - .4byte _080E9178 - .4byte _080E9188 - .4byte _080E9198 - .4byte _080E91A8 - .4byte _080E91B8 - .4byte _080E91C8 - .4byte _080E91D8 - .4byte _080E920C - .4byte _080E921C - .4byte _080E922C - .4byte _080E923C - .4byte _080E924C - .4byte _080E925C - .4byte _080E926C - .4byte _080E927C - .4byte _080E929C - .4byte _080E92AC - .4byte _080E92BC - .4byte _080E92CC - .4byte _080E92DC - .4byte _080E92EC - .4byte _080E92FC - .4byte _080E930C - .4byte _080E931C - .4byte _080E932C - .4byte _080E933C -_080E8CE8: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E8EFC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_080E8D34: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8D34 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E8EFC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _080E8F00 @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _080E8F04 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _080E8F08 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_080E8EEC: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _080E8EEC - b _080E934E - .align 2, 0 -_080E8EFC: .4byte gPlayerParty -_080E8F00: .4byte 0xfffffc1f -_080E8F04: .4byte 0xfff07fff -_080E8F08: .4byte 0xfffffe0f -_080E8F0C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F18 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - b _080E9286 - .align 2, 0 -_080E8F18: .4byte gPlayerParty -_080E8F1C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F28 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - b _080E9286 - .align 2, 0 -_080E8F28: .4byte gPlayerParty -_080E8F2C: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080E8F90 @ =gPlayerParty - adds r4, r1, r0 - mov r8, r9 -_080E8F42: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8F42 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F90 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_080E8F80: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _080E8F80 - b _080E934E - .align 2, 0 -_080E8F90: .4byte gPlayerParty -_080E8F94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8FAC @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _080E9286 - .align 2, 0 -_080E8FAC: .4byte gPlayerParty -_080E8FB0: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _080E8FE8 @ =gPlayerParty - mov r8, r2 -_080E8FBC: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8FBC - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8FE8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _080E934E - .align 2, 0 -_080E8FE8: .4byte gPlayerParty -_080E8FEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9004 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _080E9346 - .align 2, 0 -_080E9004: .4byte gPlayerParty -_080E9008: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9014 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - b _080E9022 - .align 2, 0 -_080E9014: .4byte gPlayerParty -_080E9018: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9044 @ =gPlayerParty - adds r0, r1 - movs r1, 0x19 -_080E9022: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _080E934E - .align 2, 0 -_080E9044: .4byte gPlayerParty -_080E9048: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9054 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1A - b _080E9346 - .align 2, 0 -_080E9054: .4byte gPlayerParty -_080E9058: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9064 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1B - b _080E9346 - .align 2, 0 -_080E9064: .4byte gPlayerParty -_080E9068: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9074 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1C - b _080E9346 - .align 2, 0 -_080E9074: .4byte gPlayerParty -_080E9078: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9084 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1D - b _080E9346 - .align 2, 0 -_080E9084: .4byte gPlayerParty -_080E9088: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9094 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1E - b _080E9346 - .align 2, 0 -_080E9094: .4byte gPlayerParty -_080E9098: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1F - b _080E9346 - .align 2, 0 -_080E90A4: .4byte gPlayerParty -_080E90A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x20 - b _080E9346 - .align 2, 0 -_080E90B4: .4byte gPlayerParty -_080E90B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x22 - b _080E9346 - .align 2, 0 -_080E90C4: .4byte gPlayerParty -_080E90C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - b _080E9346 - .align 2, 0 -_080E90D4: .4byte gPlayerParty -_080E90D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90E4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x24 - b _080E9346 - .align 2, 0 -_080E90E4: .4byte gPlayerParty -_080E90E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90F4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x25 - b _080E9346 - .align 2, 0 -_080E90F4: .4byte gPlayerParty -_080E90F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9104 @ =gPlayerParty - adds r0, r1 - movs r1, 0x26 - b _080E9346 - .align 2, 0 -_080E9104: .4byte gPlayerParty -_080E9108: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9154 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _080E934E - .align 2, 0 -_080E9154: .4byte gPlayerParty -_080E9158: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9164 @ =gPlayerParty - adds r0, r1 - movs r1, 0x27 - b _080E9346 - .align 2, 0 -_080E9164: .4byte gPlayerParty -_080E9168: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9174 @ =gPlayerParty - adds r0, r1 - movs r1, 0x28 - b _080E9346 - .align 2, 0 -_080E9174: .4byte gPlayerParty -_080E9178: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9184 @ =gPlayerParty - adds r0, r1 - movs r1, 0x29 - b _080E9346 - .align 2, 0 -_080E9184: .4byte gPlayerParty -_080E9188: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9194 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2A - b _080E9346 - .align 2, 0 -_080E9194: .4byte gPlayerParty -_080E9198: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2B - b _080E9346 - .align 2, 0 -_080E91A4: .4byte gPlayerParty -_080E91A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2C - b _080E9346 - .align 2, 0 -_080E91B4: .4byte gPlayerParty -_080E91B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - b _080E91E2 - .align 2, 0 -_080E91C4: .4byte gPlayerParty -_080E91C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - b _080E9286 - .align 2, 0 -_080E91D4: .4byte gPlayerParty -_080E91D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9208 @ =gPlayerParty - adds r0, r1 - movs r1, 0x37 -_080E91E2: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _080E934E - .align 2, 0 -_080E9208: .4byte gPlayerParty -_080E920C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9218 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - b _080E9346 - .align 2, 0 -_080E9218: .4byte gPlayerParty -_080E921C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9228 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - b _080E9286 - .align 2, 0 -_080E9228: .4byte gPlayerParty -_080E922C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9238 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - b _080E9286 - .align 2, 0 -_080E9238: .4byte gPlayerParty -_080E923C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9248 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3B - b _080E9286 - .align 2, 0 -_080E9248: .4byte gPlayerParty -_080E924C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9258 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3C - b _080E9286 - .align 2, 0 -_080E9258: .4byte gPlayerParty -_080E925C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9268 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3D - b _080E9286 - .align 2, 0 -_080E9268: .4byte gPlayerParty -_080E926C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9278 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3E - b _080E9286 - .align 2, 0 -_080E9278: .4byte gPlayerParty -_080E927C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9298 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3F -_080E9286: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _080E934E - .align 2, 0 -_080E9298: .4byte gPlayerParty -_080E929C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92A8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x16 - b _080E9346 - .align 2, 0 -_080E92A8: .4byte gPlayerParty -_080E92AC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92B8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x17 - b _080E9346 - .align 2, 0 -_080E92B8: .4byte gPlayerParty -_080E92BC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92C8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x18 - b _080E9346 - .align 2, 0 -_080E92C8: .4byte gPlayerParty -_080E92CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92D8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x21 - b _080E9346 - .align 2, 0 -_080E92D8: .4byte gPlayerParty -_080E92DC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92E8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2F - b _080E9346 - .align 2, 0 -_080E92E8: .4byte gPlayerParty -_080E92EC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92F8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x30 - b _080E9346 - .align 2, 0 -_080E92F8: .4byte gPlayerParty -_080E92FC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9308 @ =gPlayerParty - adds r0, r1 - movs r1, 0x32 - b _080E9346 - .align 2, 0 -_080E9308: .4byte gPlayerParty -_080E930C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9318 @ =gPlayerParty - adds r0, r1 - movs r1, 0x33 - b _080E9346 - .align 2, 0 -_080E9318: .4byte gPlayerParty -_080E931C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9328 @ =gPlayerParty - adds r0, r1 - movs r1, 0x34 - b _080E9346 - .align 2, 0 -_080E9328: .4byte gPlayerParty -_080E932C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9338 @ =gPlayerParty - adds r0, r1 - movs r1, 0x35 - b _080E9346 - .align 2, 0 -_080E9338: .4byte gPlayerParty -_080E933C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9360 @ =gPlayerParty - adds r0, r1 - movs r1, 0x36 -_080E9346: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_080E934E: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080E9360: .4byte gPlayerParty - thumb_func_end CopyWallyMonData - - thumb_func_start WallyHandleGetRawMonData -WallyHandleGetRawMonData: @ 80E9364 - push {lr} - bl PlayerHandleGetRawMonData - pop {r0} - bx r0 - thumb_func_end WallyHandleGetRawMonData - - thumb_func_start WallyHandleSetMonData -WallyHandleSetMonData: @ 80E9370 - push {r4,r5,lr} - ldr r1, _080E9394 @ =gBattleBufferA - ldr r0, _080E9398 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080E93A0 - ldr r0, _080E939C @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl SetWallyMonData - b _080E93BE - .align 2, 0 -_080E9394: .4byte gBattleBufferA -_080E9398: .4byte gActiveBattler -_080E939C: .4byte gBattlerPartyIndexes -_080E93A0: - ldrb r4, [r1] - movs r5, 0 -_080E93A4: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080E93B2 - adds r0, r5, 0 - bl SetWallyMonData -_080E93B2: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080E93A4 -_080E93BE: - bl WallyBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end WallyHandleSetMonData - - thumb_func_start SetWallyMonData -SetWallyMonData: @ 80E93C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E9400 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r2, _080E9404 @ =gUnknown_2022BC7 - adds r3, r0, r2 - adds r6, r3, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r2, 0 - cmp r0, 0x3B - bls _080E93F4 - bl _080E9D8E -_080E93F4: - lsls r0, 2 - ldr r1, _080E9408 @ =_080E940C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E9400: .4byte gActiveBattler -_080E9404: .4byte gUnknown_2022BC7 -_080E9408: .4byte _080E940C - .align 2, 0 -_080E940C: - .4byte _080E94FC - .4byte _080E9694 - .4byte _080E96B4 - .4byte _080E96D4 - .4byte _080E972C - .4byte _080E972C - .4byte _080E972C - .4byte _080E972C - .4byte _080E9754 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E97E8 - .4byte _080E9808 - .4byte _080E9828 - .4byte _080E9848 - .4byte _080E9868 - .4byte _080E9888 - .4byte _080E98A8 - .4byte _080E98C8 - .4byte _080E98E8 - .4byte _080E9908 - .4byte _080E9928 - .4byte _080E9948 - .4byte _080E9968 - .4byte _080E9988 - .4byte _080E99A8 - .4byte _080E9A18 - .4byte _080E9A38 - .4byte _080E9A58 - .4byte _080E9A78 - .4byte _080E9A98 - .4byte _080E9AB8 - .4byte _080E9AD8 - .4byte _080E9AF8 - .4byte _080E9B18 - .4byte _080E9B38 - .4byte _080E9B58 - .4byte _080E9B78 - .4byte _080E9B98 - .4byte _080E9BB8 - .4byte _080E9BD8 - .4byte _080E9BF8 - .4byte _080E9C18 - .4byte _080E9C38 - .4byte _080E9C58 - .4byte _080E9C78 - .4byte _080E9C98 - .4byte _080E9CB8 - .4byte _080E9CD8 - .4byte _080E9CF8 - .4byte _080E9D18 - .4byte _080E9D38 - .4byte _080E9D58 - .4byte _080E9D78 -_080E94FC: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9690 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r6, 0 - bl SetMonData - adds r2, r6, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r6 - mov r10, r0 - adds r0, r6, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r6, 0x2 - str r0, [sp, 0x4] - adds r0, r6, 0x4 - str r0, [sp, 0x8] - adds r0, r6, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r7, r6, 0 - adds r7, 0x24 - adds r4, r6, 0 - adds r4, 0xC -_080E9562: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080E9562 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9690 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r6, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r6, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9690: .4byte gPlayerParty -_080E9694: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E96AC @ =gPlayerParty - adds r0, r1 - ldr r1, _080E96B0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xB - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E96AC: .4byte gPlayerParty -_080E96B0: .4byte gActiveBattler -_080E96B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E96CC @ =gPlayerParty - adds r0, r1 - ldr r1, _080E96D0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xC - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E96CC: .4byte gPlayerParty -_080E96D0: .4byte gActiveBattler -_080E96D4: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r3 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080E9728 @ =gPlayerParty - adds r7, r1, r0 - adds r6, r3, 0 - adds r6, 0x8 - adds r4, r3, 0 -_080E96EE: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080E96EE - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9728 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9728: .4byte gPlayerParty -_080E972C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9748 @ =gPlayerParty - adds r0, r1 - ldr r3, _080E974C @ =gBattleBufferA - ldr r1, _080E9750 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _080E97D0 - .align 2, 0 -_080E9748: .4byte gPlayerParty -_080E974C: .4byte gBattleBufferA -_080E9750: .4byte gActiveBattler -_080E9754: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E97B0 @ =gPlayerParty - adds r4, r0 - ldr r5, _080E97B4 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x11 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E97B0: .4byte gPlayerParty -_080E97B4: .4byte gActiveBattler -_080E97B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E97DC @ =gPlayerParty - adds r0, r1 - ldr r3, _080E97E0 @ =gBattleBufferA - ldr r1, _080E97E4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_080E97D0: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E97DC: .4byte gPlayerParty -_080E97E0: .4byte gBattleBufferA -_080E97E4: .4byte gActiveBattler -_080E97E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9800 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9804 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9800: .4byte gPlayerParty -_080E9804: .4byte gActiveBattler -_080E9808: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9820 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9824 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x19 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9820: .4byte gPlayerParty -_080E9824: .4byte gActiveBattler -_080E9828: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9840 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9844 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9840: .4byte gPlayerParty -_080E9844: .4byte gActiveBattler -_080E9848: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9860 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9864 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9860: .4byte gPlayerParty -_080E9864: .4byte gActiveBattler -_080E9868: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9880 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9884 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9880: .4byte gPlayerParty -_080E9884: .4byte gActiveBattler -_080E9888: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98A0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98A4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1D - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98A0: .4byte gPlayerParty -_080E98A4: .4byte gActiveBattler -_080E98A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98C0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98C4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1E - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98C0: .4byte gPlayerParty -_080E98C4: .4byte gActiveBattler -_080E98C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98E0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98E4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98E0: .4byte gPlayerParty -_080E98E4: .4byte gActiveBattler -_080E98E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9900 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9904 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x20 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9900: .4byte gPlayerParty -_080E9904: .4byte gActiveBattler -_080E9908: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9920 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9924 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x22 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9920: .4byte gPlayerParty -_080E9924: .4byte gActiveBattler -_080E9928: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9940 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9944 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x23 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9940: .4byte gPlayerParty -_080E9944: .4byte gActiveBattler -_080E9948: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9960 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9964 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x24 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9960: .4byte gPlayerParty -_080E9964: .4byte gActiveBattler -_080E9968: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9980 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9984 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x25 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9980: .4byte gPlayerParty -_080E9984: .4byte gActiveBattler -_080E9988: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E99A0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E99A4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x26 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E99A0: .4byte gPlayerParty -_080E99A4: .4byte gActiveBattler -_080E99A8: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9A10 @ =gPlayerParty - adds r4, r0 - ldr r5, _080E9A14 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x27 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _080E9AC8 - .align 2, 0 -_080E9A10: .4byte gPlayerParty -_080E9A14: .4byte gActiveBattler -_080E9A18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x27 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A30: .4byte gPlayerParty -_080E9A34: .4byte gActiveBattler -_080E9A38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x28 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A50: .4byte gPlayerParty -_080E9A54: .4byte gActiveBattler -_080E9A58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x29 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A70: .4byte gPlayerParty -_080E9A74: .4byte gActiveBattler -_080E9A78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A90: .4byte gPlayerParty -_080E9A94: .4byte gActiveBattler -_080E9A98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AB0: .4byte gPlayerParty -_080E9AB4: .4byte gActiveBattler -_080E9AB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 -_080E9AC8: - movs r1, 0x2C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AD0: .4byte gPlayerParty -_080E9AD4: .4byte gActiveBattler -_080E9AD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AF0: .4byte gPlayerParty -_080E9AF4: .4byte gActiveBattler -_080E9AF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x9 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B10: .4byte gPlayerParty -_080E9B14: .4byte gActiveBattler -_080E9B18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x37 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B30: .4byte gPlayerParty -_080E9B34: .4byte gActiveBattler -_080E9B38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x38 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B50: .4byte gPlayerParty -_080E9B54: .4byte gActiveBattler -_080E9B58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x39 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B70: .4byte gPlayerParty -_080E9B74: .4byte gActiveBattler -_080E9B78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B90: .4byte gPlayerParty -_080E9B94: .4byte gActiveBattler -_080E9B98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BB0: .4byte gPlayerParty -_080E9BB4: .4byte gActiveBattler -_080E9BB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BD0: .4byte gPlayerParty -_080E9BD4: .4byte gActiveBattler -_080E9BD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3D - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BF0: .4byte gPlayerParty -_080E9BF4: .4byte gActiveBattler -_080E9BF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3E - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C10: .4byte gPlayerParty -_080E9C14: .4byte gActiveBattler -_080E9C18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C30: .4byte gPlayerParty -_080E9C34: .4byte gActiveBattler -_080E9C38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x16 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C50: .4byte gPlayerParty -_080E9C54: .4byte gActiveBattler -_080E9C58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x17 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C70: .4byte gPlayerParty -_080E9C74: .4byte gActiveBattler -_080E9C78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x18 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C90: .4byte gPlayerParty -_080E9C94: .4byte gActiveBattler -_080E9C98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x21 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CB0: .4byte gPlayerParty -_080E9CB4: .4byte gActiveBattler -_080E9CB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CD0: .4byte gPlayerParty -_080E9CD4: .4byte gActiveBattler -_080E9CD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x30 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CF0: .4byte gPlayerParty -_080E9CF4: .4byte gActiveBattler -_080E9CF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x32 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D10: .4byte gPlayerParty -_080E9D14: .4byte gActiveBattler -_080E9D18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x33 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D30: .4byte gPlayerParty -_080E9D34: .4byte gActiveBattler -_080E9D38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x34 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D50: .4byte gPlayerParty -_080E9D54: .4byte gActiveBattler -_080E9D58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x35 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D70: .4byte gPlayerParty -_080E9D74: .4byte gActiveBattler -_080E9D78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9DB8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9DBC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x36 - bl SetMonData -_080E9D8E: - ldr r2, _080E9DC0 @ =gBattlerPartyIndexes - ldr r0, _080E9DBC @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E9DB8 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E9DB8: .4byte gPlayerParty -_080E9DBC: .4byte gActiveBattler -_080E9DC0: .4byte gBattlerPartyIndexes - thumb_func_end SetWallyMonData - - thumb_func_start sub_80E9DC4 -sub_80E9DC4: @ 80E9DC4 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80E9DC4 - - thumb_func_start sub_80E9DD0 -sub_80E9DD0: @ 80E9DD0 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80E9DD0 - - thumb_func_start sub_80E9DDC -sub_80E9DDC: @ 80E9DDC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80E9DDC - - thumb_func_start WallyHandleReturnMonToBall -WallyHandleReturnMonToBall: @ 80E9DE8 - push {r4-r6,lr} - ldr r0, _080E9E14 @ =gBattleBufferA - ldr r6, _080E9E18 @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _080E9E24 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl InitAndLaunchSpecialAnimation - ldr r0, _080E9E1C @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080E9E20 @ =sub_80E89C4 - str r0, [r1] - b _080E9E5A - .align 2, 0 -_080E9E14: .4byte gBattleBufferA -_080E9E18: .4byte gActiveBattler -_080E9E1C: .4byte gBattlerControllerFuncs -_080E9E20: .4byte sub_80E89C4 -_080E9E24: - ldr r5, _080E9E60 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080E9E64 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080E9E68 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl WallyBufferExecCompleted -_080E9E5A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E9E60: .4byte gBattlerSpriteIds -_080E9E64: .4byte gSprites -_080E9E68: .4byte gHealthboxSpriteIds - thumb_func_end WallyHandleReturnMonToBall - - thumb_func_start sub_80E9E6C -sub_80E9E6C: @ 80E9E6C - push {r4-r6,lr} - ldr r0, _080E9EC8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E9EE0 - ldr r4, _080E9ECC @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrb r0, [r0, 0x8] - ldr r6, _080E9ED0 @ =gActiveBattler - ldrb r1, [r6] - bl DecompressTrainerBackPalette - ldr r0, [r4] - ldrb r5, [r0, 0x8] - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080E9ED4 @ =gMultiuseSpriteTemplate - ldr r2, _080E9ED8 @ =gTrainerBackPicCoords - ldr r1, [r4] - ldrb r1, [r1, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080E9EDC @ =gBattlerSpriteIds - ldrb r1, [r6] - b _080E9F1C - .align 2, 0 -_080E9EC8: .4byte gBattleTypeFlags -_080E9ECC: .4byte gSaveBlock2Ptr -_080E9ED0: .4byte gActiveBattler -_080E9ED4: .4byte gMultiuseSpriteTemplate -_080E9ED8: .4byte gTrainerBackPicCoords -_080E9EDC: .4byte gBattlerSpriteIds -_080E9EE0: - ldr r4, _080E9F8C @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0x5 - bl DecompressTrainerBackPalette - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080E9F90 @ =gMultiuseSpriteTemplate - ldr r1, _080E9F94 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x14] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080E9F98 @ =gBattlerSpriteIds - ldrb r1, [r4] -_080E9F1C: - adds r1, r2 - strb r0, [r1] - ldr r4, _080E9F9C @ =gSprites - ldr r5, _080E9F98 @ =gBattlerSpriteIds - ldr r6, _080E9F8C @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080E9FA0 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080E9FA4 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080E9FA8 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E9FAC @ =sub_80E78E0 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E9F8C: .4byte gActiveBattler -_080E9F90: .4byte gMultiuseSpriteTemplate -_080E9F94: .4byte gTrainerBackPicCoords -_080E9F98: .4byte gBattlerSpriteIds -_080E9F9C: .4byte gSprites -_080E9FA0: .4byte 0x0000fffe -_080E9FA4: .4byte sub_8033EEC -_080E9FA8: .4byte gBattlerControllerFuncs -_080E9FAC: .4byte sub_80E78E0 - thumb_func_end sub_80E9E6C - - thumb_func_start sub_80E9FB0 -sub_80E9FB0: @ 80E9FB0 - push {r4-r6,lr} - ldr r0, _080EA00C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA024 - ldr r4, _080EA010 @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrb r0, [r0, 0x8] - ldr r6, _080EA014 @ =gActiveBattler - ldrb r1, [r6] - bl DecompressTrainerBackPalette - ldr r0, [r4] - ldrb r5, [r0, 0x8] - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080EA018 @ =gMultiuseSpriteTemplate - ldr r2, _080EA01C @ =gTrainerBackPicCoords - ldr r1, [r4] - ldrb r1, [r1, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080EA020 @ =gBattlerSpriteIds - ldrb r1, [r6] - b _080EA060 - .align 2, 0 -_080EA00C: .4byte gBattleTypeFlags -_080EA010: .4byte gSaveBlock2Ptr -_080EA014: .4byte gActiveBattler -_080EA018: .4byte gMultiuseSpriteTemplate -_080EA01C: .4byte gTrainerBackPicCoords -_080EA020: .4byte gBattlerSpriteIds -_080EA024: - ldr r4, _080EA0D0 @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0x5 - bl DecompressTrainerBackPalette - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080EA0D4 @ =gMultiuseSpriteTemplate - ldr r1, _080EA0D8 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x14] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080EA0DC @ =gBattlerSpriteIds - ldrb r1, [r4] -_080EA060: - adds r1, r2 - strb r0, [r1] - ldr r4, _080EA0E0 @ =gSprites - ldr r5, _080EA0DC @ =gBattlerSpriteIds - ldr r6, _080EA0D0 @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080EA0E4 @ =0x0000ffa0 - strh r1, [r0, 0x24] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080EA0E8 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080EA0EC @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA0F0 @ =sub_80E8A34 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA0D0: .4byte gActiveBattler -_080EA0D4: .4byte gMultiuseSpriteTemplate -_080EA0D8: .4byte gTrainerBackPicCoords -_080EA0DC: .4byte gBattlerSpriteIds -_080EA0E0: .4byte gSprites -_080EA0E4: .4byte 0x0000ffa0 -_080EA0E8: .4byte sub_8033EEC -_080EA0EC: .4byte gBattlerControllerFuncs -_080EA0F0: .4byte sub_80E8A34 - thumb_func_end sub_80E9FB0 - - thumb_func_start sub_80EA0F4 -sub_80EA0F4: @ 80EA0F4 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EA0F4 - - thumb_func_start sub_80EA100 -sub_80EA100: @ 80EA100 - push {r4-r6,lr} - ldr r6, _080EA14C @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _080EA150 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _080EA154 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA134 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080EA134: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _080EA1CA - .align 2, 0 -_080EA14C: .4byte gBattleSpritesDataPtr -_080EA150: .4byte gActiveBattler -_080EA154: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080EA1CA - strb r4, [r3, 0x4] - ldr r2, _080EA1D0 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080EA1D4 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _080EA1D8 @ =gSprites - ldr r3, _080EA1DC @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x30] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x32] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080EA1E0 @ =sub_8012110 - str r1, [r0] - ldr r1, _080EA1E4 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA1E8 @ =sub_80E82F4 - str r1, [r0] -_080EA1CA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA1D0: .4byte gBattlerPartyIndexes -_080EA1D4: .4byte gPlayerParty -_080EA1D8: .4byte gSprites -_080EA1DC: .4byte gBattlerSpriteIds -_080EA1E0: .4byte sub_8012110 -_080EA1E4: .4byte gBattlerControllerFuncs -_080EA1E8: .4byte sub_80E82F4 - thumb_func_end sub_80EA100 - - thumb_func_start sub_80EA1EC -sub_80EA1EC: @ 80EA1EC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EA1EC - - thumb_func_start sub_80EA1F8 -sub_80EA1F8: @ 80EA1F8 - push {r4,r5,lr} - ldr r0, _080EA238 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _080EA23C @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _080EA240 @ =gActiveBattler - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080EA244 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA248 @ =sub_80E7970 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA238: .4byte gBattleSpritesDataPtr -_080EA23C: .4byte gDoingBattleAnim -_080EA240: .4byte gActiveBattler -_080EA244: .4byte gBattlerControllerFuncs -_080EA248: .4byte sub_80E7970 - thumb_func_end sub_80EA1F8 - - thumb_func_start sub_80EA24C -sub_80EA24C: @ 80EA24C - push {r4,r5,lr} - ldr r1, _080EA294 @ =gBattleBufferA - ldr r5, _080EA298 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _080EA29C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strb r1, [r0, 0x8] - ldr r1, _080EA2A0 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080EA2A4 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA2A8 @ =sub_80E7970 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA294: .4byte gBattleBufferA -_080EA298: .4byte gActiveBattler -_080EA29C: .4byte gBattleSpritesDataPtr -_080EA2A0: .4byte gDoingBattleAnim -_080EA2A4: .4byte gBattlerControllerFuncs -_080EA2A8: .4byte sub_80E7970 - thumb_func_end sub_80EA24C - - thumb_func_start sub_80EA2AC -sub_80EA2AC: @ 80EA2AC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EA2AC - - thumb_func_start sub_80EA2B8 -sub_80EA2B8: @ 80EA2B8 - push {r4-r6,lr} - ldr r0, _080EA38C @ =gBattleBufferA - mov r12, r0 - ldr r6, _080EA390 @ =gActiveBattler - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _080EA394 @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _080EA398 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _080EA39C @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _080EA3A0 @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _080EA3A4 @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _080EA3A8 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _080EA3AC @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080EA3B0 - bl WallyBufferExecCompleted - b _080EA3CE - .align 2, 0 -_080EA38C: .4byte gBattleBufferA -_080EA390: .4byte gActiveBattler -_080EA394: .4byte gAnimMoveTurn -_080EA398: .4byte gAnimMovePower -_080EA39C: .4byte gAnimMoveDmg -_080EA3A0: .4byte gAnimFriendship -_080EA3A4: .4byte gWeatherMoveAnim -_080EA3A8: .4byte gAnimDisableStructPtr -_080EA3AC: .4byte gTransformedPersonalities -_080EA3B0: - ldr r0, _080EA3D4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _080EA3D8 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA3DC @ =sub_80EA3E0 - str r1, [r0] -_080EA3CE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA3D4: .4byte gBattleSpritesDataPtr -_080EA3D8: .4byte gBattlerControllerFuncs -_080EA3DC: .4byte sub_80EA3E0 - thumb_func_end sub_80EA2B8 - - thumb_func_start sub_80EA3E0 -sub_80EA3E0: @ 80EA3E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _080EA424 @ =gBattleBufferA - ldr r6, _080EA428 @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r9, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r2, 0x2 - mov r8, r2 - add r1, r8 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r7, _080EA42C @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _080EA46A - cmp r2, 0x1 - bgt _080EA430 - cmp r2, 0 - beq _080EA43A - b _080EA520 - .align 2, 0 -_080EA424: .4byte gBattleBufferA -_080EA428: .4byte gActiveBattler -_080EA42C: .4byte gBattleSpritesDataPtr -_080EA430: - cmp r2, 0x2 - beq _080EA494 - cmp r2, 0x3 - beq _080EA4E4 - b _080EA520 -_080EA43A: - ldr r1, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA456 - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080EA456: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _080EA520 -_080EA46A: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080EA520 - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _080EA520 -_080EA494: - ldr r0, _080EA4DC @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080EA4E0 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080EA520 - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA4C8 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_080EA4C8: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _080EA520 - .align 2, 0 -_080EA4DC: .4byte gAnimScriptCallback -_080EA4E0: .4byte gAnimScriptActive -_080EA4E4: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080EA520 - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r9 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r8 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl WallyBufferExecCompleted -_080EA520: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EA3E0 - - thumb_func_start sub_80EA52C -sub_80EA52C: @ 80EA52C - push {r4,lr} - ldr r0, _080EA55C @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080EA560 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080EA564 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r1, _080EA568 @ =gUnknown_2022BC6 - adds r4, r0, r1 - ldr r0, _080EA56C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080EA570 - ldrh r0, [r4] - cmp r0, 0x1 - bne _080EA570 - bl WallyBufferExecCompleted - b _080EA65A - .align 2, 0 -_080EA55C: .4byte gBattle_BG0_X -_080EA560: .4byte gBattle_BG0_Y -_080EA564: .4byte gActiveBattler -_080EA568: .4byte gUnknown_2022BC6 -_080EA56C: .4byte gBattleTypeFlags -_080EA570: - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _080EA590 - ldr r0, _080EA58C @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _080EA598 - .align 2, 0 -_080EA58C: .4byte gDisplayedStringBattle -_080EA590: - ldr r0, _080EA5B4 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_080EA598: - ldr r0, _080EA5B8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA64C - ldrh r1, [r4] - cmp r1, 0xD8 - beq _080EA5CC - cmp r1, 0xD8 - bgt _080EA5BC - cmp r1, 0x1E - beq _080EA5F8 - b _080EA64C - .align 2, 0 -_080EA5B4: .4byte gDisplayedStringBattle -_080EA5B8: .4byte gBattleTypeFlags -_080EA5BC: - cmp r1, 0xE3 - beq _080EA630 - ldr r0, _080EA5C8 @ =0x0000017f - cmp r1, r0 - beq _080EA614 - b _080EA64C - .align 2, 0 -_080EA5C8: .4byte 0x0000017f -_080EA5CC: - movs r0, 0x2 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _080EA64C - movs r0, 0x2 - bl sub_80EB2F4 - ldr r1, _080EA5EC @ =gBattlerControllerFuncs - ldr r0, _080EA5F0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA5F4 @ =sub_80E8584 - b _080EA658 - .align 2, 0 -_080EA5EC: .4byte gBattlerControllerFuncs -_080EA5F0: .4byte gActiveBattler -_080EA5F4: .4byte sub_80E8584 -_080EA5F8: - ldr r1, _080EA608 @ =gBattlerControllerFuncs - ldr r0, _080EA60C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA610 @ =sub_80E85AC - b _080EA658 - .align 2, 0 -_080EA608: .4byte gBattlerControllerFuncs -_080EA60C: .4byte gActiveBattler -_080EA610: .4byte sub_80E85AC -_080EA614: - ldr r1, _080EA624 @ =gBattlerControllerFuncs - ldr r0, _080EA628 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA62C @ =sub_80E85C0 - b _080EA658 - .align 2, 0 -_080EA624: .4byte gBattlerControllerFuncs -_080EA628: .4byte gActiveBattler -_080EA62C: .4byte sub_80E85C0 -_080EA630: - ldr r1, _080EA640 @ =gBattlerControllerFuncs - ldr r0, _080EA644 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA648 @ =sub_80E8598 - b _080EA658 - .align 2, 0 -_080EA640: .4byte gBattlerControllerFuncs -_080EA644: .4byte gActiveBattler -_080EA648: .4byte sub_80E8598 -_080EA64C: - ldr r1, _080EA660 @ =gBattlerControllerFuncs - ldr r0, _080EA664 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA668 @ =sub_80E7918 -_080EA658: - str r1, [r0] -_080EA65A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA660: .4byte gBattlerControllerFuncs -_080EA664: .4byte gActiveBattler -_080EA668: .4byte sub_80E7918 - thumb_func_end sub_80EA52C - - thumb_func_start sub_80EA66C -sub_80EA66C: @ 80EA66C - push {lr} - ldr r0, _080EA684 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EA688 - bl sub_80EA52C - b _080EA68C - .align 2, 0 -_080EA684: .4byte gActiveBattler -_080EA688: - bl WallyBufferExecCompleted -_080EA68C: - pop {r0} - bx r0 - thumb_func_end sub_80EA66C - - thumb_func_start sub_80EA690 -sub_80EA690: @ 80EA690 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080EA6EA - ldr r0, _080EA6C4 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _080EA6C8 @ =gBattle_BG0_Y - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080EA6CC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA6DC - ldr r1, _080EA6D0 @ =gBattlerControllerFuncs - ldr r0, _080EA6D4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA6D8 @ =sub_80E763C - b _080EA6E8 - .align 2, 0 -_080EA6C4: .4byte gBattle_BG0_X -_080EA6C8: .4byte gBattle_BG0_Y -_080EA6CC: .4byte gBattleTypeFlags -_080EA6D0: .4byte gBattlerControllerFuncs -_080EA6D4: .4byte gActiveBattler -_080EA6D8: .4byte sub_80E763C -_080EA6DC: - ldr r1, _080EA6F0 @ =gBattlerControllerFuncs - ldr r0, _080EA6F4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA6F8 @ =sub_80E7844 -_080EA6E8: - str r1, [r0] -_080EA6EA: - pop {r0} - bx r0 - .align 2, 0 -_080EA6F0: .4byte gBattlerControllerFuncs -_080EA6F4: .4byte gActiveBattler -_080EA6F8: .4byte sub_80E7844 - thumb_func_end sub_80EA690 - - thumb_func_start sub_80EA6FC -sub_80EA6FC: @ 80EA6FC - push {r4,lr} - ldr r1, _080EA750 @ =gBattlerControllerFuncs - ldr r0, _080EA754 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA758 @ =sub_80EA690 - str r1, [r0] - ldr r0, _080EA75C @ =gUnknown_83FDA4C - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080EA760 @ =gUnknown_83FE725 - movs r1, 0x2 - bl BattlePutTextOnWindow - movs r4, 0 -_080EA71E: - lsls r0, r4, 24 - lsrs r0, 24 - bl ActionSelectionDestroyCursorAt - adds r4, 0x1 - cmp r4, 0x3 - ble _080EA71E - ldr r1, _080EA764 @ =gActionSelectionCursor - ldr r0, _080EA754 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _080EA768 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA770 - ldr r0, _080EA76C @ =gText_WhatWillPkmnDo - bl BattleStringExpandPlaceholdersToDisplayedString - b _080EA776 - .align 2, 0 -_080EA750: .4byte gBattlerControllerFuncs -_080EA754: .4byte gActiveBattler -_080EA758: .4byte sub_80EA690 -_080EA75C: .4byte gUnknown_83FDA4C -_080EA760: .4byte gUnknown_83FE725 -_080EA764: .4byte gActionSelectionCursor -_080EA768: .4byte gBattleTypeFlags -_080EA76C: .4byte gText_WhatWillPkmnDo -_080EA770: - ldr r0, _080EA784 @ =gUnknown_83FE6FA - bl BattleStringExpandPlaceholdersToDisplayedString -_080EA776: - ldr r0, _080EA788 @ =gDisplayedStringBattle - movs r1, 0x1 - bl BattlePutTextOnWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA784: .4byte gUnknown_83FE6FA -_080EA788: .4byte gDisplayedStringBattle - thumb_func_end sub_80EA6FC - - thumb_func_start sub_80EA78C -sub_80EA78C: @ 80EA78C - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EA78C - - thumb_func_start sub_80EA798 -sub_80EA798: @ 80EA798 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080EA7C2 - ldr r0, _080EA7C8 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _080EA7CC @ =gBattle_BG0_Y - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080EA7D0 @ =gBattlerControllerFuncs - ldr r0, _080EA7D4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA7D8 @ =sub_80E7988 - str r1, [r0] -_080EA7C2: - pop {r0} - bx r0 - .align 2, 0 -_080EA7C8: .4byte gBattle_BG0_X -_080EA7CC: .4byte gBattle_BG0_Y -_080EA7D0: .4byte gBattlerControllerFuncs -_080EA7D4: .4byte gActiveBattler -_080EA7D8: .4byte sub_80E7988 - thumb_func_end sub_80EA798 - - thumb_func_start sub_80EA7DC -sub_80EA7DC: @ 80EA7DC - push {r4,lr} - ldr r0, _080EA800 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA810 - bl InitMoveSelectionsVarsAndStrings - ldr r1, _080EA804 @ =gBattlerControllerFuncs - ldr r0, _080EA808 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA80C @ =sub_80EA798 - str r1, [r0] - b _080EA866 - .align 2, 0 -_080EA800: .4byte gBattleTypeFlags -_080EA804: .4byte gBattlerControllerFuncs -_080EA808: .4byte gActiveBattler -_080EA80C: .4byte sub_80EA798 -_080EA810: - ldr r4, _080EA824 @ =gBattleStruct - ldr r0, [r4] - adds r0, 0x95 - ldrb r0, [r0] - cmp r0, 0 - beq _080EA828 - cmp r0, 0x1 - beq _080EA83E - b _080EA866 - .align 2, 0 -_080EA824: .4byte gBattleStruct -_080EA828: - bl InitMoveSelectionsVarsAndStrings - ldr r1, [r4] - adds r1, 0x95 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x97 - movs r1, 0x50 - strb r1, [r0] -_080EA83E: - ldr r0, _080EA86C @ =gBattleStruct - ldr r1, [r0] - adds r1, 0x97 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080EA866 - movs r0, 0x5 - bl PlaySE - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - bl WallyBufferExecCompleted -_080EA866: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA86C: .4byte gBattleStruct - thumb_func_end sub_80EA7DC - - thumb_func_start sub_80EA870 -sub_80EA870: @ 80EA870 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080EA8BC @ =gBattlerControllerFuncs - ldr r2, _080EA8C0 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA8C4 @ =sub_80E7A70 - str r1, [r0] - ldr r1, _080EA8C8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _080EA8CC @ =gUnknown_203B0DC - ldr r4, _080EA8D0 @ =gBattleBufferA -_080EA89E: - adds r0, r3, r5 - ldrb r1, [r2] - lsls r1, 9 - adds r1, 0x1 - adds r1, r3, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _080EA89E - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA8BC: .4byte gBattlerControllerFuncs -_080EA8C0: .4byte gActiveBattler -_080EA8C4: .4byte sub_80E7A70 -_080EA8C8: .4byte gBattlerInMenuId -_080EA8CC: .4byte gUnknown_203B0DC -_080EA8D0: .4byte gBattleBufferA - thumb_func_end sub_80EA870 - - thumb_func_start sub_80EA8D4 -sub_80EA8D4: @ 80EA8D4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _080EA984 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _080EA988 @ =gUnknown_3004FFC - ldr r4, _080EA98C @ =gActiveBattler - ldrb r1, [r4] - adds r1, r3 - strb r0, [r1] - ldr r5, _080EA990 @ =gTasks - ldrb r2, [r4] - adds r3, r2, r3 - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldr r5, _080EA994 @ =gBattleBufferA - lsls r2, 9 - adds r6, r5, 0x1 - adds r2, r6 - ldrb r2, [r2] - movs r0, 0xF - ands r0, r2 - strh r0, [r1, 0x8] - ldr r3, _080EA998 @ =gBattleStruct - ldr r1, [r3] - adds r1, 0x49 - ldrb r0, [r4] - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - lsrs r0, 4 - strb r0, [r1] - ldr r2, [r3] - adds r2, 0x8B - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, [r3] - adds r2, 0xAC - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x3 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r2, 0 - ldr r3, _080EA99C @ =gUnknown_203B0DC -_080EA940: - adds r0, r2, r3 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _080EA940 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080EA9A0 @ =gBattlerControllerFuncs - ldr r2, _080EA98C @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA9A4 @ =sub_80E79B8 - str r1, [r0] - ldr r1, _080EA9A8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA984: .4byte TaskDummy -_080EA988: .4byte gUnknown_3004FFC -_080EA98C: .4byte gActiveBattler -_080EA990: .4byte gTasks -_080EA994: .4byte gBattleBufferA -_080EA998: .4byte gBattleStruct -_080EA99C: .4byte gUnknown_203B0DC -_080EA9A0: .4byte gBattlerControllerFuncs -_080EA9A4: .4byte sub_80E79B8 -_080EA9A8: .4byte gBattlerInMenuId - thumb_func_end sub_80EA8D4 - - thumb_func_start sub_80EA9AC -sub_80EA9AC: @ 80EA9AC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EA9AC - - thumb_func_start sub_80EA9B8 -sub_80EA9B8: @ 80EA9B8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _080EAA30 @ =gBattleBufferA - ldr r0, _080EAA34 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _080EAA38 @ =0x00007fff - cmp r7, r0 - beq _080EAA48 - ldr r6, _080EAA3C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080EAA40 @ =gPlayerParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _080EAA44 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _080EAA82 - .align 2, 0 -_080EAA30: .4byte gBattleBufferA -_080EAA34: .4byte gActiveBattler -_080EAA38: .4byte 0x00007fff -_080EAA3C: .4byte gBattlerPartyIndexes -_080EAA40: .4byte gPlayerParty -_080EAA44: .4byte gHealthboxSpriteIds -_080EAA48: - ldr r1, _080EAAA0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EAAA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r4, _080EAAA8 @ =gHealthboxSpriteIds - adds r1, r0, r4 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct - mov r1, r9 - ldrb r0, [r1] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl UpdateHpTextInHealthbox -_080EAA82: - ldr r1, _080EAAAC @ =gBattlerControllerFuncs - ldr r0, _080EAAB0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAAB4 @ =sub_80E88C0 - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAAA0: .4byte gBattlerPartyIndexes -_080EAAA4: .4byte gPlayerParty -_080EAAA8: .4byte gHealthboxSpriteIds -_080EAAAC: .4byte gBattlerControllerFuncs -_080EAAB0: .4byte gActiveBattler -_080EAAB4: .4byte sub_80E88C0 - thumb_func_end sub_80EA9B8 - - thumb_func_start sub_80EAAB8 -sub_80EAAB8: @ 80EAAB8 - push {r4-r7,lr} - ldr r5, _080EAAE4 @ =gBattleBufferA - ldr r6, _080EAAE8 @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 9 - adds r1, r5, 0x1 - adds r0, r1 - ldrb r7, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080EAAEC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _080EAAF0 - bl WallyBufferExecCompleted - b _080EAB3C - .align 2, 0 -_080EAAE4: .4byte gBattleBufferA -_080EAAE8: .4byte gActiveBattler -_080EAAEC: .4byte gPlayerParty -_080EAAF0: - movs r0, 0x1 - bl LoadBattleBarGfx - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r6] - lsls r1, 9 - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r0, r5, 0x3 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r0, _080EAB44 @ =sub_80E7E04 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EAB48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r7, [r1, 0x8] - strh r4, [r1, 0xA] - ldrb r0, [r6] - strh r0, [r1, 0xC] - ldr r1, _080EAB4C @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAB50 @ =nullsub_81 - str r1, [r0] -_080EAB3C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAB44: .4byte sub_80E7E04 -_080EAB48: .4byte gTasks -_080EAB4C: .4byte gBattlerControllerFuncs -_080EAB50: .4byte nullsub_81 - thumb_func_end sub_80EAAB8 - - thumb_func_start sub_80EAB54 -sub_80EAB54: @ 80EAB54 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB54 - - thumb_func_start sub_80EAB60 -sub_80EAB60: @ 80EAB60 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB60 - - thumb_func_start sub_80EAB6C -sub_80EAB6C: @ 80EAB6C - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB6C - - thumb_func_start sub_80EAB78 -sub_80EAB78: @ 80EAB78 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB78 - - thumb_func_start sub_80EAB84 -sub_80EAB84: @ 80EAB84 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB84 - - thumb_func_start sub_80EAB90 -sub_80EAB90: @ 80EAB90 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB90 - - thumb_func_start sub_80EAB9C -sub_80EAB9C: @ 80EAB9C - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAB9C - - thumb_func_start sub_80EABA8 -sub_80EABA8: @ 80EABA8 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABA8 - - thumb_func_start sub_80EABB4 -sub_80EABB4: @ 80EABB4 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABB4 - - thumb_func_start sub_80EABC0 -sub_80EABC0: @ 80EABC0 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABC0 - - thumb_func_start sub_80EABCC -sub_80EABCC: @ 80EABCC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABCC - - thumb_func_start sub_80EABD8 -sub_80EABD8: @ 80EABD8 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABD8 - - thumb_func_start sub_80EABE4 -sub_80EABE4: @ 80EABE4 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABE4 - - thumb_func_start sub_80EABF0 -sub_80EABF0: @ 80EABF0 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABF0 - - thumb_func_start sub_80EABFC -sub_80EABFC: @ 80EABFC - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EABFC - - thumb_func_start sub_80EAC08 -sub_80EAC08: @ 80EAC08 - push {r4,lr} - ldr r3, _080EAC30 @ =gSprites - ldr r2, _080EAC34 @ =gBattlerSpriteIds - ldr r4, _080EAC38 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080EAC3C - bl WallyBufferExecCompleted - b _080EAC66 - .align 2, 0 -_080EAC30: .4byte gSprites -_080EAC34: .4byte gBattlerSpriteIds -_080EAC38: .4byte gActiveBattler -_080EAC3C: - ldr r1, _080EAC6C @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _080EAC70 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAC74 @ =DoHitAnimBlinkSpriteEffect_3 - str r1, [r0] -_080EAC66: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EAC6C: .4byte gDoingBattleAnim -_080EAC70: .4byte gBattlerControllerFuncs -_080EAC74: .4byte DoHitAnimBlinkSpriteEffect_3 - thumb_func_end sub_80EAC08 - - thumb_func_start sub_80EAC78 -sub_80EAC78: @ 80EAC78 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EAC78 - - thumb_func_start sub_80EAC84 -sub_80EAC84: @ 80EAC84 - push {lr} - ldr r2, _080EACAC @ =gBattleBufferA - ldr r0, _080EACB0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlaySE - bl WallyBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EACAC: .4byte gBattleBufferA -_080EACB0: .4byte gActiveBattler - thumb_func_end sub_80EAC84 - - thumb_func_start sub_80EACB4 -sub_80EACB4: @ 80EACB4 - push {lr} - ldr r2, _080EACDC @ =gBattleBufferA - ldr r0, _080EACE0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl WallyBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EACDC: .4byte gBattleBufferA -_080EACE0: .4byte gActiveBattler - thumb_func_end sub_80EACB4 - - thumb_func_start sub_80EACE4 -sub_80EACE4: @ 80EACE4 - push {lr} - ldr r1, _080EAD14 @ =gBattlerPartyIndexes - ldr r0, _080EAD18 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EAD1C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl PlayCry1 - bl WallyBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EAD14: .4byte gBattlerPartyIndexes -_080EAD18: .4byte gActiveBattler -_080EAD1C: .4byte gPlayerParty - thumb_func_end sub_80EACE4 - - thumb_func_start sub_80EAD20 -sub_80EAD20: @ 80EAD20 - push {lr} - ldr r1, _080EAD48 @ =gBattleBufferA - ldr r0, _080EAD4C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _080EAD50 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl WallyBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EAD48: .4byte gBattleBufferA -_080EAD4C: .4byte gActiveBattler -_080EAD50: .4byte gIntroSlideFlags - thumb_func_end sub_80EAD20 - - thumb_func_start sub_80EAD54 -sub_80EAD54: @ 80EAD54 - push {r4-r7,lr} - ldr r0, _080EAEA0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080EAD64 - b _080EAEE4 -_080EAD64: - ldr r6, _080EAEA4 @ =gBattlerSpriteIds - ldr r7, _080EAEA8 @ =gActiveBattler - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080EAEAC @ =gSprites - adds r0, r5 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EAEB0 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EAEB4 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r2, [r7] - adds r0, r2, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x38] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EAEB8 @ =sub_80335F8 - bl StoreSpriteCallbackInData6 - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080EAEBC @ =0x0000d6f8 - bl AllocSpritePalette - adds r4, r0, 0 - lsls r4, 24 - ldr r1, _080EAEC0 @ =gTrainerBackPicPaletteTable - ldr r0, _080EAEC4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - lsrs r4, 20 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - movs r2, 0x20 - bl LoadCompressedPalette - ldrb r0, [r7] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x5] - ldr r0, _080EAEC8 @ =sub_80EB0A8 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080EAECC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r7] - strh r0, [r1, 0x8] - ldr r3, _080EAED0 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r7] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EAE84 - ldr r0, _080EAED4 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _080EAED8 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080EAE84: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080EAEDC @ =gBattlerControllerFuncs - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAEE0 @ =nullsub_13 - str r1, [r0] - b _080EAF18 - .align 2, 0 -_080EAEA0: .4byte gBattleTypeFlags -_080EAEA4: .4byte gBattlerSpriteIds -_080EAEA8: .4byte gActiveBattler -_080EAEAC: .4byte gSprites -_080EAEB0: .4byte 0x0000ffd8 -_080EAEB4: .4byte StartAnimLinearTranslation -_080EAEB8: .4byte sub_80335F8 -_080EAEBC: .4byte 0x0000d6f8 -_080EAEC0: .4byte gTrainerBackPicPaletteTable -_080EAEC4: .4byte gSaveBlock2Ptr -_080EAEC8: .4byte sub_80EB0A8 -_080EAECC: .4byte gTasks -_080EAED0: .4byte gBattleSpritesDataPtr -_080EAED4: .4byte gBattlerStatusSummaryTaskId -_080EAED8: .4byte Task_HidePartyStatusSummary -_080EAEDC: .4byte gBattlerControllerFuncs -_080EAEE0: .4byte nullsub_13 -_080EAEE4: - ldr r0, _080EAF20 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080EAF24 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EAF14 - ldr r2, _080EAF28 @ =gTasks - ldr r0, _080EAF2C @ =gBattlerStatusSummaryTaskId - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080EAF30 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080EAF14: - bl WallyBufferExecCompleted -_080EAF18: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAF20: .4byte gBattleSpritesDataPtr -_080EAF24: .4byte gActiveBattler -_080EAF28: .4byte gTasks -_080EAF2C: .4byte gBattlerStatusSummaryTaskId -_080EAF30: .4byte Task_HidePartyStatusSummary - thumb_func_end sub_80EAD54 - - thumb_func_start sub_80EAF34 -sub_80EAF34: @ 80EAF34 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EB07C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _080EB080 @ =gBattlerPartyIndexes - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _080EB084 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r2] - ldrh r1, [r2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EB088 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080EB08C @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _080EB090 @ =gUnknown_3004FFC - mov r9, r1 - add r9, r6 - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080EB094 @ =gMultiuseSpriteTemplate - mov r10, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r10 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080EB098 @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _080EB09C @ =gSprites - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EB0A0 @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EB0A4 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFF - bl DoPokeballSendOutAnimation - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB07C: .4byte gBattleSpritesDataPtr -_080EB080: .4byte gBattlerPartyIndexes -_080EB084: .4byte gBattleBufferA -_080EB088: .4byte gPlayerParty -_080EB08C: .4byte sub_8033E3C -_080EB090: .4byte gUnknown_3004FFC -_080EB094: .4byte gMultiuseSpriteTemplate -_080EB098: .4byte gBattlerSpriteIds -_080EB09C: .4byte gSprites -_080EB0A0: .4byte gBattleMonForms -_080EB0A4: .4byte SpriteCallbackDummy - thumb_func_end sub_80EAF34 - - thumb_func_start sub_80EB0A8 -sub_80EB0A8: @ 80EB0A8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EB0C8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x1E - bgt _080EB0CC - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _080EB102 - .align 2, 0 -_080EB0C8: .4byte gTasks -_080EB0CC: - ldr r4, _080EB108 @ =gActiveBattler - ldrb r5, [r4] - ldrh r0, [r1, 0x8] - strb r0, [r4] - ldr r0, _080EB10C @ =gBattleBufferA - ldrb r1, [r4] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _080EB110 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r4] - bl sub_80EAF34 - ldr r1, _080EB114 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EB118 @ =sub_80E7B4C - str r1, [r0] - strb r5, [r4] - adds r0, r6, 0 - bl DestroyTask -_080EB102: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB108: .4byte gActiveBattler -_080EB10C: .4byte gBattleBufferA -_080EB110: .4byte gBattlerPartyIndexes -_080EB114: .4byte gBattlerControllerFuncs -_080EB118: .4byte sub_80E7B4C - thumb_func_end sub_80EB0A8 - - thumb_func_start sub_80EB11C -sub_80EB11C: @ 80EB11C - push {r4,r5,lr} - ldr r1, _080EB144 @ =gBattleBufferA - ldr r0, _080EB148 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080EB14C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EB14C - bl WallyBufferExecCompleted - b _080EB18A - .align 2, 0 -_080EB144: .4byte gBattleBufferA -_080EB148: .4byte gActiveBattler -_080EB14C: - ldr r0, _080EB190 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r5, _080EB194 @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r5] - lsls r4, r0, 9 - ldr r3, _080EB198 @ =gUnknown_2022BC8 - adds r1, r4, r3 - subs r2, r3, 0x3 - adds r2, r4, r2 - ldrb r2, [r2] - subs r3, 0x2 - adds r4, r3 - ldrb r3, [r4] - bl CreatePartyStatusSummarySprites - ldr r2, _080EB19C @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - strb r0, [r1] - bl WallyBufferExecCompleted -_080EB18A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EB190: .4byte gBattleSpritesDataPtr -_080EB194: .4byte gActiveBattler -_080EB198: .4byte gUnknown_2022BC8 -_080EB19C: .4byte gBattlerStatusSummaryTaskId - thumb_func_end sub_80EB11C - - thumb_func_start sub_80EB1A0 -sub_80EB1A0: @ 80EB1A0 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EB1A0 - - thumb_func_start sub_80EB1AC -sub_80EB1AC: @ 80EB1AC - push {r4,lr} - ldr r4, _080EB1CC @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect - bl WallyBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB1CC: .4byte gActiveBattler - thumb_func_end sub_80EB1AC - - thumb_func_start sub_80EB1D0 -sub_80EB1D0: @ 80EB1D0 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EB1D0 - - thumb_func_start sub_80EB1DC -sub_80EB1DC: @ 80EB1DC - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _080EB214 @ =gBattleBufferA - ldr r6, _080EB218 @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _080EB21C - bl WallyBufferExecCompleted - b _080EB228 - .align 2, 0 -_080EB214: .4byte gBattleBufferA -_080EB218: .4byte gActiveBattler -_080EB21C: - ldr r0, _080EB230 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080EB234 @ =CompleteOnFinishedBattleAnimation_4 - str r0, [r1] -_080EB228: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB230: .4byte gBattlerControllerFuncs -_080EB234: .4byte CompleteOnFinishedBattleAnimation_4 - thumb_func_end sub_80EB1DC - - thumb_func_start sub_80EB238 -sub_80EB238: @ 80EB238 - push {r4,lr} - ldr r1, _080EB26C @ =gBattleBufferA - ldr r4, _080EB270 @ =gActiveBattler - ldrb r2, [r4] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - blt _080EB260 - cmp r0, 0x1 - bgt _080EB260 - adds r0, r2, 0 - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect -_080EB260: - bl WallyBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB26C: .4byte gBattleBufferA -_080EB270: .4byte gActiveBattler - thumb_func_end sub_80EB238 - - thumb_func_start sub_80EB274 -sub_80EB274: @ 80EB274 - push {lr} - bl WallyBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80EB274 - - thumb_func_start sub_80EB280 -sub_80EB280: @ 80EB280 - push {r4,lr} - ldr r2, _080EB2C4 @ =gBattleOutcome - ldr r1, _080EB2C8 @ =gBattleBufferA - ldr r4, _080EB2CC @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl WallyBufferExecCompleted - ldr r0, _080EB2D0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _080EB2BC - ldr r0, _080EB2D4 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080EB2D8 @ =sub_80E7930 - str r0, [r1] -_080EB2BC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB2C4: .4byte gBattleOutcome -_080EB2C8: .4byte gBattleBufferA -_080EB2CC: .4byte gActiveBattler -_080EB2D0: .4byte gBattleTypeFlags -_080EB2D4: .4byte gBattlerControllerFuncs -_080EB2D8: .4byte sub_80E7930 - thumb_func_end sub_80EB280 - - thumb_func_start nullsub_82 -nullsub_82: @ 80EB2DC - bx lr - thumb_func_end nullsub_82 - - thumb_func_start sub_80EB2E0 -sub_80EB2E0: @ 80EB2E0 - adds r1, r0, 0 - ldr r0, _080EB2F0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x96 - ldrb r0, [r0] - ands r0, r1 - bx lr - .align 2, 0 -_080EB2F0: .4byte gBattleStruct - thumb_func_end sub_80EB2E0 - - thumb_func_start sub_80EB2F4 -sub_80EB2F4: @ 80EB2F4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080EB308 @ =gBattleStruct - ldr r1, [r1] - adds r1, 0x96 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080EB308: .4byte gBattleStruct - thumb_func_end sub_80EB2F4 - - thumb_func_start sub_80EB30C -sub_80EB30C: @ 80EB30C - push {r4-r6,lr} - sub sp, 0xC - movs r6, 0x1A - movs r5, 0x7 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x30 - movs r2, 0 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x31 - movs r2, 0x1 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r6, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x32 - movs r2, 0x2 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x33 - movs r2, 0x1C - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x34 - movs r2, 0x1D - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x35 - movs r2, 0 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x36 - movs r2, 0x1 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x38 - movs r2, 0x1C - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1D - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3A - movs r2, 0 - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3B - movs r2, 0x1 - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3C - movs r2, 0x1C - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3D - movs r2, 0x1D - movs r3, 0x10 - bl FillBgTilemapBufferRect - ldr r1, _080EB4F4 @ =0x0000083a - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB4F8 @ =0x0000083b - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB4FC @ =0x0000083c - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB500 @ =0x0000083d - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB504 @ =0x00000835 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB508 @ =0x00000836 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB50C @ =0x00000838 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB510 @ =0x00000839 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x12 - bl FillBgTilemapBufferRect - movs r1, 0x83 - lsls r1, 4 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB514 @ =0x00000831 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB518 @ =0x00000832 - str r6, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB51C @ =0x00000833 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB520 @ =0x00000834 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x13 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB4F4: .4byte 0x0000083a -_080EB4F8: .4byte 0x0000083b -_080EB4FC: .4byte 0x0000083c -_080EB500: .4byte 0x0000083d -_080EB504: .4byte 0x00000835 -_080EB508: .4byte 0x00000836 -_080EB50C: .4byte 0x00000838 -_080EB510: .4byte 0x00000839 -_080EB514: .4byte 0x00000831 -_080EB518: .4byte 0x00000832 -_080EB51C: .4byte 0x00000833 -_080EB520: .4byte 0x00000834 - thumb_func_end sub_80EB30C - - thumb_func_start sub_80EB524 -sub_80EB524: @ 80EB524 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r5, 0 - movs r0, 0x1A - mov r8, r0 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0xE - bl FillBgTilemapBufferRect - movs r6, 0x4 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x4 - movs r2, 0x1 - movs r3, 0xE - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x5 - movs r2, 0x2 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x6 - movs r2, 0x1C - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x8 - movs r2, 0 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x9 - movs r2, 0x1 - movs r3, 0xF - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xA - movs r2, 0x2 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xB - movs r2, 0x1C - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xC - movs r2, 0x1D - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xD - movs r2, 0 - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xF - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x11 - movs r2, 0x1D - movs r3, 0x13 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EB524 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 1857d92c8..e685d786d 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -10,8 +10,8 @@ nullsub_99: @ 81560A0 bx lr thumb_func_end nullsub_99 - thumb_func_start SetControllerToPokedude -SetControllerToPokedude: @ 81560A4 + thumb_func_start SetControllerToPokeDude +SetControllerToPokeDude: @ 81560A4 ldr r1, _081560C8 @ =gBattlerControllerFuncs ldr r0, _081560CC @ =gActiveBattler ldrb r0, [r0] @@ -36,7 +36,7 @@ _081560CC: .4byte gActiveBattler _081560D0: .4byte sub_81560DC _081560D4: .4byte gBattleStruct _081560D8: .4byte gSpecialVar_0x8004 - thumb_func_end SetControllerToPokedude + thumb_func_end SetControllerToPokeDude thumb_func_start sub_81560DC sub_81560DC: @ 81560DC @@ -2862,7 +2862,7 @@ sub_81577B4: @ 81577B4 ldr r0, _081577E4 @ =gActiveBattler ldrb r0, [r0] lsls r2, r0, 9 - ldr r1, _081577E8 @ =gUnknown_2022BC7 + ldr r1, _081577E8 @ =gBattleBufferA + 3 adds r5, r2, r1 mov r8, r5 bl GetBattlerSide @@ -2876,7 +2876,7 @@ sub_81577B4: @ 81577B4 b _081577F8 .align 2, 0 _081577E4: .4byte gActiveBattler -_081577E8: .4byte gUnknown_2022BC7 +_081577E8: .4byte gBattleBufferA + 3 _081577EC: .4byte gPlayerParty _081577F0: movs r0, 0x64 @@ -3148,7 +3148,7 @@ _08157AA4: ldr r0, _08157AB8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157ABC @ =gUnknown_2022BC7 + ldr r0, _08157ABC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0xB @@ -3156,12 +3156,12 @@ _08157AA4: b _0815809A .align 2, 0 _08157AB8: .4byte gActiveBattler -_08157ABC: .4byte gUnknown_2022BC7 +_08157ABC: .4byte gBattleBufferA + 3 _08157AC0: ldr r0, _08157AD4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157AD8 @ =gUnknown_2022BC7 + ldr r0, _08157AD8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0xC @@ -3169,7 +3169,7 @@ _08157AC0: b _0815809A .align 2, 0 _08157AD4: .4byte gActiveBattler -_08157AD8: .4byte gUnknown_2022BC7 +_08157AD8: .4byte gBattleBufferA + 3 _08157ADC: movs r4, 0 movs r0, 0xC @@ -3213,7 +3213,7 @@ _08157B2C: ldr r5, _08157B80 @ =gActiveBattler ldrb r2, [r5] lsls r2, 9 - ldr r4, _08157B84 @ =gUnknown_2022BC7 + ldr r4, _08157B84 @ =gBattleBufferA + 3 adds r2, r4 adds r0, r6, 0 movs r1, 0x11 @@ -3249,7 +3249,7 @@ _08157B2C: b _0815809A .align 2, 0 _08157B80: .4byte gActiveBattler -_08157B84: .4byte gUnknown_2022BC7 +_08157B84: .4byte gBattleBufferA + 3 _08157B88: ldr r0, _08157BA4 @ =gActiveBattler ldrb r2, [r0] @@ -3270,7 +3270,7 @@ _08157BA8: ldr r0, _08157BBC @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157BC0 @ =gUnknown_2022BC7 + ldr r0, _08157BC0 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1 @@ -3278,12 +3278,12 @@ _08157BA8: b _0815809A .align 2, 0 _08157BBC: .4byte gActiveBattler -_08157BC0: .4byte gUnknown_2022BC7 +_08157BC0: .4byte gBattleBufferA + 3 _08157BC4: ldr r0, _08157BD8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157BDC @ =gUnknown_2022BC7 + ldr r0, _08157BDC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x19 @@ -3291,12 +3291,12 @@ _08157BC4: b _0815809A .align 2, 0 _08157BD8: .4byte gActiveBattler -_08157BDC: .4byte gUnknown_2022BC7 +_08157BDC: .4byte gBattleBufferA + 3 _08157BE0: ldr r0, _08157BF4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157BF8 @ =gUnknown_2022BC7 + ldr r0, _08157BF8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1A @@ -3304,12 +3304,12 @@ _08157BE0: b _0815809A .align 2, 0 _08157BF4: .4byte gActiveBattler -_08157BF8: .4byte gUnknown_2022BC7 +_08157BF8: .4byte gBattleBufferA + 3 _08157BFC: ldr r0, _08157C10 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157C14 @ =gUnknown_2022BC7 + ldr r0, _08157C14 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1B @@ -3317,12 +3317,12 @@ _08157BFC: b _0815809A .align 2, 0 _08157C10: .4byte gActiveBattler -_08157C14: .4byte gUnknown_2022BC7 +_08157C14: .4byte gBattleBufferA + 3 _08157C18: ldr r0, _08157C2C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157C30 @ =gUnknown_2022BC7 + ldr r0, _08157C30 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1C @@ -3330,12 +3330,12 @@ _08157C18: b _0815809A .align 2, 0 _08157C2C: .4byte gActiveBattler -_08157C30: .4byte gUnknown_2022BC7 +_08157C30: .4byte gBattleBufferA + 3 _08157C34: ldr r0, _08157C48 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157C4C @ =gUnknown_2022BC7 + ldr r0, _08157C4C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1D @@ -3343,12 +3343,12 @@ _08157C34: b _0815809A .align 2, 0 _08157C48: .4byte gActiveBattler -_08157C4C: .4byte gUnknown_2022BC7 +_08157C4C: .4byte gBattleBufferA + 3 _08157C50: ldr r0, _08157C64 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157C68 @ =gUnknown_2022BC7 + ldr r0, _08157C68 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1E @@ -3356,12 +3356,12 @@ _08157C50: b _0815809A .align 2, 0 _08157C64: .4byte gActiveBattler -_08157C68: .4byte gUnknown_2022BC7 +_08157C68: .4byte gBattleBufferA + 3 _08157C6C: ldr r0, _08157C80 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157C84 @ =gUnknown_2022BC7 + ldr r0, _08157C84 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x1F @@ -3369,12 +3369,12 @@ _08157C6C: b _0815809A .align 2, 0 _08157C80: .4byte gActiveBattler -_08157C84: .4byte gUnknown_2022BC7 +_08157C84: .4byte gBattleBufferA + 3 _08157C88: ldr r0, _08157C9C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157CA0 @ =gUnknown_2022BC7 + ldr r0, _08157CA0 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x20 @@ -3382,12 +3382,12 @@ _08157C88: b _0815809A .align 2, 0 _08157C9C: .4byte gActiveBattler -_08157CA0: .4byte gUnknown_2022BC7 +_08157CA0: .4byte gBattleBufferA + 3 _08157CA4: ldr r0, _08157CB8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157CBC @ =gUnknown_2022BC7 + ldr r0, _08157CBC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x22 @@ -3395,12 +3395,12 @@ _08157CA4: b _0815809A .align 2, 0 _08157CB8: .4byte gActiveBattler -_08157CBC: .4byte gUnknown_2022BC7 +_08157CBC: .4byte gBattleBufferA + 3 _08157CC0: ldr r0, _08157CD4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157CD8 @ =gUnknown_2022BC7 + ldr r0, _08157CD8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x23 @@ -3408,12 +3408,12 @@ _08157CC0: b _0815809A .align 2, 0 _08157CD4: .4byte gActiveBattler -_08157CD8: .4byte gUnknown_2022BC7 +_08157CD8: .4byte gBattleBufferA + 3 _08157CDC: ldr r0, _08157CF0 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157CF4 @ =gUnknown_2022BC7 + ldr r0, _08157CF4 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x24 @@ -3421,12 +3421,12 @@ _08157CDC: b _0815809A .align 2, 0 _08157CF0: .4byte gActiveBattler -_08157CF4: .4byte gUnknown_2022BC7 +_08157CF4: .4byte gBattleBufferA + 3 _08157CF8: ldr r0, _08157D0C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157D10 @ =gUnknown_2022BC7 + ldr r0, _08157D10 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x25 @@ -3434,12 +3434,12 @@ _08157CF8: b _0815809A .align 2, 0 _08157D0C: .4byte gActiveBattler -_08157D10: .4byte gUnknown_2022BC7 +_08157D10: .4byte gBattleBufferA + 3 _08157D14: ldr r0, _08157D28 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157D2C @ =gUnknown_2022BC7 + ldr r0, _08157D2C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x26 @@ -3447,12 +3447,12 @@ _08157D14: b _0815809A .align 2, 0 _08157D28: .4byte gActiveBattler -_08157D2C: .4byte gUnknown_2022BC7 +_08157D2C: .4byte gBattleBufferA + 3 _08157D30: ldr r5, _08157D8C @ =gActiveBattler ldrb r2, [r5] lsls r2, 9 - ldr r4, _08157D90 @ =gUnknown_2022BC7 + ldr r4, _08157D90 @ =gBattleBufferA + 3 adds r2, r4 adds r0, r6, 0 movs r1, 0x27 @@ -3492,12 +3492,12 @@ _08157D30: b _08157E2A .align 2, 0 _08157D8C: .4byte gActiveBattler -_08157D90: .4byte gUnknown_2022BC7 +_08157D90: .4byte gBattleBufferA + 3 _08157D94: ldr r0, _08157DA8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157DAC @ =gUnknown_2022BC7 + ldr r0, _08157DAC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x27 @@ -3505,12 +3505,12 @@ _08157D94: b _0815809A .align 2, 0 _08157DA8: .4byte gActiveBattler -_08157DAC: .4byte gUnknown_2022BC7 +_08157DAC: .4byte gBattleBufferA + 3 _08157DB0: ldr r0, _08157DC4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157DC8 @ =gUnknown_2022BC7 + ldr r0, _08157DC8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x28 @@ -3518,12 +3518,12 @@ _08157DB0: b _0815809A .align 2, 0 _08157DC4: .4byte gActiveBattler -_08157DC8: .4byte gUnknown_2022BC7 +_08157DC8: .4byte gBattleBufferA + 3 _08157DCC: ldr r0, _08157DE0 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157DE4 @ =gUnknown_2022BC7 + ldr r0, _08157DE4 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x29 @@ -3531,12 +3531,12 @@ _08157DCC: b _0815809A .align 2, 0 _08157DE0: .4byte gActiveBattler -_08157DE4: .4byte gUnknown_2022BC7 +_08157DE4: .4byte gBattleBufferA + 3 _08157DE8: ldr r0, _08157DFC @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E00 @ =gUnknown_2022BC7 + ldr r0, _08157E00 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x2A @@ -3544,12 +3544,12 @@ _08157DE8: b _0815809A .align 2, 0 _08157DFC: .4byte gActiveBattler -_08157E00: .4byte gUnknown_2022BC7 +_08157E00: .4byte gBattleBufferA + 3 _08157E04: ldr r0, _08157E18 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E1C @ =gUnknown_2022BC7 + ldr r0, _08157E1C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x2B @@ -3557,12 +3557,12 @@ _08157E04: b _0815809A .align 2, 0 _08157E18: .4byte gActiveBattler -_08157E1C: .4byte gUnknown_2022BC7 +_08157E1C: .4byte gBattleBufferA + 3 _08157E20: ldr r0, _08157E34 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E38 @ =gUnknown_2022BC7 + ldr r0, _08157E38 @ =gBattleBufferA + 3 adds r2, r0 _08157E2A: adds r0, r6, 0 @@ -3571,12 +3571,12 @@ _08157E2A: b _0815809A .align 2, 0 _08157E34: .4byte gActiveBattler -_08157E38: .4byte gUnknown_2022BC7 +_08157E38: .4byte gBattleBufferA + 3 _08157E3C: ldr r0, _08157E50 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E54 @ =gUnknown_2022BC7 + ldr r0, _08157E54 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0 @@ -3584,12 +3584,12 @@ _08157E3C: b _0815809A .align 2, 0 _08157E50: .4byte gActiveBattler -_08157E54: .4byte gUnknown_2022BC7 +_08157E54: .4byte gBattleBufferA + 3 _08157E58: ldr r0, _08157E6C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E70 @ =gUnknown_2022BC7 + ldr r0, _08157E70 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x9 @@ -3597,12 +3597,12 @@ _08157E58: b _0815809A .align 2, 0 _08157E6C: .4byte gActiveBattler -_08157E70: .4byte gUnknown_2022BC7 +_08157E70: .4byte gBattleBufferA + 3 _08157E74: ldr r0, _08157E88 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157E8C @ =gUnknown_2022BC7 + ldr r0, _08157E8C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x37 @@ -3610,12 +3610,12 @@ _08157E74: b _0815809A .align 2, 0 _08157E88: .4byte gActiveBattler -_08157E8C: .4byte gUnknown_2022BC7 +_08157E8C: .4byte gBattleBufferA + 3 _08157E90: ldr r0, _08157EA4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157EA8 @ =gUnknown_2022BC7 + ldr r0, _08157EA8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x38 @@ -3623,12 +3623,12 @@ _08157E90: b _0815809A .align 2, 0 _08157EA4: .4byte gActiveBattler -_08157EA8: .4byte gUnknown_2022BC7 +_08157EA8: .4byte gBattleBufferA + 3 _08157EAC: ldr r0, _08157EC0 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157EC4 @ =gUnknown_2022BC7 + ldr r0, _08157EC4 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x39 @@ -3636,12 +3636,12 @@ _08157EAC: b _0815809A .align 2, 0 _08157EC0: .4byte gActiveBattler -_08157EC4: .4byte gUnknown_2022BC7 +_08157EC4: .4byte gBattleBufferA + 3 _08157EC8: ldr r0, _08157EDC @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157EE0 @ =gUnknown_2022BC7 + ldr r0, _08157EE0 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3A @@ -3649,12 +3649,12 @@ _08157EC8: b _0815809A .align 2, 0 _08157EDC: .4byte gActiveBattler -_08157EE0: .4byte gUnknown_2022BC7 +_08157EE0: .4byte gBattleBufferA + 3 _08157EE4: ldr r0, _08157EF8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157EFC @ =gUnknown_2022BC7 + ldr r0, _08157EFC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3B @@ -3662,12 +3662,12 @@ _08157EE4: b _0815809A .align 2, 0 _08157EF8: .4byte gActiveBattler -_08157EFC: .4byte gUnknown_2022BC7 +_08157EFC: .4byte gBattleBufferA + 3 _08157F00: ldr r0, _08157F14 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157F18 @ =gUnknown_2022BC7 + ldr r0, _08157F18 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3C @@ -3675,12 +3675,12 @@ _08157F00: b _0815809A .align 2, 0 _08157F14: .4byte gActiveBattler -_08157F18: .4byte gUnknown_2022BC7 +_08157F18: .4byte gBattleBufferA + 3 _08157F1C: ldr r0, _08157F30 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157F34 @ =gUnknown_2022BC7 + ldr r0, _08157F34 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3D @@ -3688,12 +3688,12 @@ _08157F1C: b _0815809A .align 2, 0 _08157F30: .4byte gActiveBattler -_08157F34: .4byte gUnknown_2022BC7 +_08157F34: .4byte gBattleBufferA + 3 _08157F38: ldr r0, _08157F4C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157F50 @ =gUnknown_2022BC7 + ldr r0, _08157F50 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3E @@ -3701,12 +3701,12 @@ _08157F38: b _0815809A .align 2, 0 _08157F4C: .4byte gActiveBattler -_08157F50: .4byte gUnknown_2022BC7 +_08157F50: .4byte gBattleBufferA + 3 _08157F54: ldr r0, _08157F68 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157F6C @ =gUnknown_2022BC7 + ldr r0, _08157F6C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x3F @@ -3714,12 +3714,12 @@ _08157F54: b _0815809A .align 2, 0 _08157F68: .4byte gActiveBattler -_08157F6C: .4byte gUnknown_2022BC7 +_08157F6C: .4byte gBattleBufferA + 3 _08157F70: ldr r0, _08157F84 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157F88 @ =gUnknown_2022BC7 + ldr r0, _08157F88 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x16 @@ -3727,12 +3727,12 @@ _08157F70: b _0815809A .align 2, 0 _08157F84: .4byte gActiveBattler -_08157F88: .4byte gUnknown_2022BC7 +_08157F88: .4byte gBattleBufferA + 3 _08157F8C: ldr r0, _08157FA0 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157FA4 @ =gUnknown_2022BC7 + ldr r0, _08157FA4 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x17 @@ -3740,12 +3740,12 @@ _08157F8C: b _0815809A .align 2, 0 _08157FA0: .4byte gActiveBattler -_08157FA4: .4byte gUnknown_2022BC7 +_08157FA4: .4byte gBattleBufferA + 3 _08157FA8: ldr r0, _08157FBC @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157FC0 @ =gUnknown_2022BC7 + ldr r0, _08157FC0 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x18 @@ -3753,12 +3753,12 @@ _08157FA8: b _0815809A .align 2, 0 _08157FBC: .4byte gActiveBattler -_08157FC0: .4byte gUnknown_2022BC7 +_08157FC0: .4byte gBattleBufferA + 3 _08157FC4: ldr r0, _08157FD8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157FDC @ =gUnknown_2022BC7 + ldr r0, _08157FDC @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x21 @@ -3766,12 +3766,12 @@ _08157FC4: b _0815809A .align 2, 0 _08157FD8: .4byte gActiveBattler -_08157FDC: .4byte gUnknown_2022BC7 +_08157FDC: .4byte gBattleBufferA + 3 _08157FE0: ldr r0, _08157FF4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08157FF8 @ =gUnknown_2022BC7 + ldr r0, _08157FF8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x2F @@ -3779,12 +3779,12 @@ _08157FE0: b _0815809A .align 2, 0 _08157FF4: .4byte gActiveBattler -_08157FF8: .4byte gUnknown_2022BC7 +_08157FF8: .4byte gBattleBufferA + 3 _08157FFC: ldr r0, _08158010 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08158014 @ =gUnknown_2022BC7 + ldr r0, _08158014 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x30 @@ -3792,12 +3792,12 @@ _08157FFC: b _0815809A .align 2, 0 _08158010: .4byte gActiveBattler -_08158014: .4byte gUnknown_2022BC7 +_08158014: .4byte gBattleBufferA + 3 _08158018: ldr r0, _0815802C @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08158030 @ =gUnknown_2022BC7 + ldr r0, _08158030 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x32 @@ -3805,12 +3805,12 @@ _08158018: b _0815809A .align 2, 0 _0815802C: .4byte gActiveBattler -_08158030: .4byte gUnknown_2022BC7 +_08158030: .4byte gBattleBufferA + 3 _08158034: ldr r0, _08158048 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _0815804C @ =gUnknown_2022BC7 + ldr r0, _0815804C @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x33 @@ -3818,12 +3818,12 @@ _08158034: b _0815809A .align 2, 0 _08158048: .4byte gActiveBattler -_0815804C: .4byte gUnknown_2022BC7 +_0815804C: .4byte gBattleBufferA + 3 _08158050: ldr r0, _08158064 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08158068 @ =gUnknown_2022BC7 + ldr r0, _08158068 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x34 @@ -3831,12 +3831,12 @@ _08158050: b _0815809A .align 2, 0 _08158064: .4byte gActiveBattler -_08158068: .4byte gUnknown_2022BC7 +_08158068: .4byte gBattleBufferA + 3 _0815806C: ldr r0, _08158080 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _08158084 @ =gUnknown_2022BC7 + ldr r0, _08158084 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x35 @@ -3844,12 +3844,12 @@ _0815806C: b _0815809A .align 2, 0 _08158080: .4byte gActiveBattler -_08158084: .4byte gUnknown_2022BC7 +_08158084: .4byte gBattleBufferA + 3 _08158088: ldr r0, _081580C4 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 - ldr r0, _081580C8 @ =gUnknown_2022BC7 + ldr r0, _081580C8 @ =gBattleBufferA + 3 adds r2, r0 adds r0, r6, 0 movs r1, 0x36 @@ -3876,7 +3876,7 @@ _0815809A: bx r0 .align 2, 0 _081580C4: .4byte gActiveBattler -_081580C8: .4byte gUnknown_2022BC7 +_081580C8: .4byte gBattleBufferA + 3 _081580CC: .4byte gBattlerPartyIndexes _081580D0: .4byte gPlayerParty thumb_func_end sub_81577B4 @@ -5063,7 +5063,7 @@ sub_8158A88: @ 8158A88 ldr r0, _08158AC4 @ =gActiveBattler ldrb r4, [r0] lsls r4, 9 - ldr r0, _08158AC8 @ =gUnknown_2022BC6 + ldr r0, _08158AC8 @ =gBattleBufferA + 2 adds r4, r0 ldrh r0, [r4] bl BufferStringBattle @@ -5080,7 +5080,7 @@ sub_8158A88: @ 8158A88 _08158ABC: .4byte gBattle_BG0_X _08158AC0: .4byte gBattle_BG0_Y _08158AC4: .4byte gActiveBattler -_08158AC8: .4byte gUnknown_2022BC6 +_08158AC8: .4byte gBattleBufferA + 2 _08158ACC: .4byte gDisplayedStringBattle _08158AD0: ldr r0, _08158AEC @ =gDisplayedStringBattle @@ -6552,7 +6552,7 @@ _08159690: strb r1, [r0] ldrb r0, [r5] lsls r4, r0, 9 - ldr r3, _081596DC @ =gUnknown_2022BC8 + ldr r3, _081596DC @ =gBattleBufferA + 4 adds r1, r4, r3 subs r2, r3, 0x3 adds r2, r4, r2 @@ -6573,7 +6573,7 @@ _081596CE: .align 2, 0 _081596D4: .4byte gBattleSpritesDataPtr _081596D8: .4byte gActiveBattler -_081596DC: .4byte gUnknown_2022BC8 +_081596DC: .4byte gBattleBufferA + 4 _081596E0: .4byte gBattlerStatusSummaryTaskId thumb_func_end sub_8159660 @@ -7081,7 +7081,7 @@ sub_8159AB8: @ 8159AB8 ldr r3, _08159B5C @ =gActiveBattler ldrb r5, [r3] lsls r1, r5, 9 - ldr r0, _08159B60 @ =gUnknown_2022BC6 + ldr r0, _08159B60 @ =gBattleBufferA + 2 adds r7, r1, r0 mov r12, r7 subs r0, 0x2 @@ -7150,7 +7150,7 @@ _08159B04: _08159B54: .4byte gUnknown_8479198 _08159B58: .4byte gBattleStruct _08159B5C: .4byte gActiveBattler -_08159B60: .4byte gUnknown_2022BC6 +_08159B60: .4byte gBattleBufferA + 2 _08159B64: .4byte gBattlerControllerFuncs _08159B68: .4byte gUnknown_3005EE0 _08159B6C: diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 3de518630..671487d57 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -4304,7 +4304,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, _08049D84 @ =gUnknown_83FE81C + ldr r1, _08049D84 @ =gText_HighlightRed_Left mov r0, sp bl StringCopy ldr r1, _08049D88 @ =gNumSafariBalls @@ -4350,7 +4350,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10 pop {r0} bx r0 .align 2, 0 -_08049D84: .4byte gUnknown_83FE81C +_08049D84: .4byte gText_HighlightRed_Left _08049D88: .4byte gNumSafariBalls _08049D8C: .4byte gSprites _08049D90: .4byte 0x060102c0 diff --git a/asm/battle_message.s b/asm/battle_message.s index a7a52f5f7..28d7b196d 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -20,7 +20,7 @@ BufferStringBattle: @ 80D7274 mov r8, r0 ldrb r1, [r0] lsls r1, 9 - ldr r0, _080D7338 @ =gUnknown_2022BC8 + ldr r0, _080D7338 @ =gBattleBufferA + 4 adds r1, r0 str r1, [r4] ldr r2, _080D733C @ =gLastUsedItem @@ -107,7 +107,7 @@ _080D7326: .align 2, 0 _080D7330: .4byte gUnknown_2039A34 _080D7334: .4byte gActiveBattler -_080D7338: .4byte gUnknown_2022BC8 +_080D7338: .4byte gBattleBufferA + 4 _080D733C: .4byte gLastUsedItem _080D7340: .4byte gLastUsedAbility _080D7344: .4byte gBattleScripting @@ -744,7 +744,7 @@ _080D7834: ldr r5, [sp] ldr r4, [sp, 0x4] movs r3, 0 - ldr r2, _080D7850 @ =gUnknown_82500CC + ldr r2, _080D7850 @ =gStatusConditionStringsTable _080D783C: ldr r1, [r2] ldr r0, [r1] @@ -756,7 +756,7 @@ _080D783C: ldr r0, [r2, 0x4] b _080D785E .align 2, 0 -_080D7850: .4byte gUnknown_82500CC +_080D7850: .4byte gStatusConditionStringsTable _080D7854: adds r2, 0x8 adds r3, 0x1 @@ -1647,13 +1647,13 @@ _080D7FF0: ldrb r1, [r0] movs r0, 0xD muls r1, r0 - ldr r0, _080D8004 @ =gUnknown_824FC40 + ldr r0, _080D8004 @ =gAbilityNames adds r4, r1, r0 b _080D8382 .align 2, 0 _080D7FFC: .4byte gUnknown_2039A30 _080D8000: .4byte gEffectBattler -_080D8004: .4byte gUnknown_824FC40 +_080D8004: .4byte gAbilityNames _080D8008: ldr r3, _080D8020 @ =gTrainerBattleOpponent_A ldrh r1, [r3] @@ -1917,7 +1917,7 @@ _080D81E8: _080D8204: .4byte gBattleTypeFlags _080D8208: .4byte gStringVar4 _080D820C: - bl sub_80806EC + bl GetTrainerALoseText adds r4, r0, 0 b _080D8382 _080D8214: @@ -1937,7 +1937,7 @@ _080D8214: _080D8230: .4byte gBattleTypeFlags _080D8234: .4byte gStringVar4 _080D8238: - bl sub_8080710 + bl GetTrainerWonSpeech adds r4, r0, 0 b _080D8382 _080D8240: @@ -2430,7 +2430,7 @@ _080D860C: ldrb r1, [r0, 0x1] movs r0, 0xD muls r1, r0 - ldr r0, _080D8624 @ =gUnknown_824FC40 + ldr r0, _080D8624 @ =gAbilityNames _080D8616: adds r1, r0 _080D8618: @@ -2439,7 +2439,7 @@ _080D8618: adds r5, 0x2 b _080D86B0 .align 2, 0 -_080D8624: .4byte gUnknown_824FC40 +_080D8624: .4byte gAbilityNames _080D8628: adds r0, r5, r7 ldrb r2, [r0, 0x1] @@ -2943,7 +2943,7 @@ SetPpNumbersPaletteInMoveSelection: @ 80D89DC ldr r0, _080D8A38 @ =gActiveBattler ldrb r2, [r0] lsls r1, r2, 9 - ldr r0, _080D8A3C @ =gUnknown_2022BC8 + ldr r0, _080D8A3C @ =gBattleBufferA + 4 adds r1, r0 ldr r4, _080D8A40 @ =gUnknown_8D2FBB4 ldr r0, _080D8A44 @ =gMoveSelectionCursor @@ -2983,7 +2983,7 @@ SetPpNumbersPaletteInMoveSelection: @ 80D89DC bx r0 .align 2, 0 _080D8A38: .4byte gActiveBattler -_080D8A3C: .4byte gUnknown_2022BC8 +_080D8A3C: .4byte gBattleBufferA + 4 _080D8A40: .4byte gUnknown_8D2FBB4 _080D8A44: .4byte gMoveSelectionCursor _080D8A48: .4byte gPlttBufferUnfaded diff --git a/asm/battle_setup.s b/asm/battle_setup.s deleted file mode 100644 index 5b2dd8144..000000000 --- a/asm/battle_setup.s +++ /dev/null @@ -1,2183 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_807F620 -sub_807F620: @ 807F620 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807F640 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0807F644 - cmp r0, 0x1 - beq _0807F65E - b _0807F686 - .align 2, 0 -_0807F640: .4byte gTasks+0x8 -_0807F644: - bl FldEffPoison_IsActive - cmp r0, 0 - bne _0807F686 - bl HelpSystem_Disable - ldrb r0, [r4, 0x2] - bl BT_StartOnField - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0807F686 -_0807F65E: - bl BT_IsDone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807F686 - bl HelpSystem_Enable - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0807F68C @ =sub_800FD9C - bl SetMainCallback2 - bl sub_806D7E8 - bl ClearPoisonStepCounter - adds r0, r5, 0 - bl DestroyTask -_0807F686: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807F68C: .4byte sub_800FD9C - thumb_func_end sub_807F620 - - thumb_func_start sub_807F690 -sub_807F690: @ 807F690 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _0807F6C4 @ =sub_807F620 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807F6C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - adds r0, r5, 0 - bl PlayMapChosenOrBattleBGM - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807F6C4: .4byte sub_807F620 -_0807F6C8: .4byte gTasks - thumb_func_end sub_807F690 - - thumb_func_start sub_807F6CC -sub_807F6CC: @ 807F6CC - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r0, 0x1 - bne _0807F6FC - adds r0, r1, 0 - subs r0, 0x58 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bhi _0807F6FC - ldr r0, _0807F6F8 @ =0x00000167 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - bne _0807F6FC - movs r0, 0x1 - b _0807F6FE - .align 2, 0 -_0807F6F8: .4byte 0x00000167 -_0807F6FC: - movs r0, 0 -_0807F6FE: - pop {r1} - bx r1 - thumb_func_end sub_807F6CC - - thumb_func_start sub_807F704 -sub_807F704: @ 807F704 - push {lr} - bl GetSafariZoneFlag - cmp r0, 0 - beq _0807F714 - bl sub_807F7D8 - b _0807F744 -_0807F714: - ldr r0, _0807F73C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl sub_807F6CC - lsls r0, 24 - cmp r0, 0 - beq _0807F740 - bl sub_807F810 - b _0807F744 - .align 2, 0 -_0807F73C: .4byte gSaveBlock1Ptr -_0807F740: - bl sub_807F748 -_0807F744: - pop {r0} - bx r0 - thumb_func_end sub_807F704 - - thumb_func_start sub_807F748 -sub_807F748: @ 807F748 - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_805C780 - ldr r1, _0807F780 @ =gMain - ldr r0, _0807F784 @ =sub_807FB40 - str r0, [r1, 0x8] - ldr r1, _0807F788 @ =gBattleTypeFlags - movs r0, 0 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807F780: .4byte gMain -_0807F784: .4byte sub_807FB40 -_0807F788: .4byte gBattleTypeFlags - thumb_func_end sub_807F748 - - thumb_func_start sub_807F78C -sub_807F78C: @ 807F78C - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_805C780 - ldr r1, _0807F7C8 @ =gMain - ldr r0, _0807F7CC @ =sub_807FB40 - str r0, [r1, 0x8] - ldr r1, _0807F7D0 @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 3 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0807F7D4 @ =0x00000155 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807F7C8: .4byte gMain -_0807F7CC: .4byte sub_807FB40 -_0807F7D0: .4byte gBattleTypeFlags -_0807F7D4: .4byte 0x00000155 - thumb_func_end sub_807F78C - - thumb_func_start sub_807F7D8 -sub_807F7D8: @ 807F7D8 - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_805C780 - ldr r1, _0807F804 @ =gMain - ldr r0, _0807F808 @ =CB2_EndSafariBattle - str r0, [r1, 0x8] - ldr r1, _0807F80C @ =gBattleTypeFlags - movs r0, 0x80 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - pop {r0} - bx r0 - .align 2, 0 -_0807F804: .4byte gMain -_0807F808: .4byte CB2_EndSafariBattle -_0807F80C: .4byte gBattleTypeFlags - thumb_func_end sub_807F7D8 - - thumb_func_start sub_807F810 -sub_807F810: @ 807F810 - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_805C780 - ldr r1, _0807F854 @ =gMain - ldr r0, _0807F858 @ =sub_807FB40 - str r0, [r1, 0x8] - ldr r1, _0807F85C @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 8 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - ldr r0, _0807F860 @ =gEnemyParty - ldr r2, _0807F864 @ =gUnknown_841D148 - movs r1, 0x2 - bl SetMonData - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807F854: .4byte gMain -_0807F858: .4byte sub_807FB40 -_0807F85C: .4byte gBattleTypeFlags -_0807F860: .4byte gEnemyParty -_0807F864: .4byte gUnknown_841D148 - thumb_func_end sub_807F810 - - thumb_func_start sub_807F868 -sub_807F868: @ 807F868 - push {lr} - bl sub_807FF80 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x9 - bl IncrementGameStat - pop {r0} - bx r0 - thumb_func_end sub_807F868 - - thumb_func_start ScrSpecial_StartOldManTutorialBattle -ScrSpecial_StartOldManTutorialBattle: @ 807F888 - push {lr} - ldr r0, _0807F8B4 @ =gEnemyParty - movs r1, 0xD - movs r2, 0x5 - bl CreateMaleMon - bl ScriptContext2_Enable - ldr r1, _0807F8B8 @ =gMain - ldr r0, _0807F8BC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - str r0, [r1, 0x8] - ldr r1, _0807F8C0 @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 2 - str r0, [r1] - movs r0, 0x8 - movs r1, 0 - bl sub_807F690 - pop {r0} - bx r0 - .align 2, 0 -_0807F8B4: .4byte gEnemyParty -_0807F8B8: .4byte gMain -_0807F8BC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_0807F8C0: .4byte gBattleTypeFlags - thumb_func_end ScrSpecial_StartOldManTutorialBattle - - thumb_func_start BattleSetup_StartScriptedWildBattle -BattleSetup_StartScriptedWildBattle: @ 807F8C4 - push {lr} - bl ScriptContext2_Enable - ldr r1, _0807F8F8 @ =gMain - ldr r0, _0807F8FC @ =sub_807FBA0 - str r0, [r1, 0x8] - ldr r1, _0807F900 @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 10 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807F8F8: .4byte gMain -_0807F8FC: .4byte sub_807FBA0 -_0807F900: .4byte gBattleTypeFlags - thumb_func_end BattleSetup_StartScriptedWildBattle - - thumb_func_start ScrSpecial_StartMarowakBattle -ScrSpecial_StartMarowakBattle: @ 807F904 - push {lr} - sub sp, 0xC - bl ScriptContext2_Enable - ldr r1, _0807F944 @ =gMain - ldr r0, _0807F948 @ =sub_807FBF0 - str r0, [r1, 0x8] - ldr r0, _0807F94C @ =0x00000167 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - beq _0807F958 - ldr r1, _0807F950 @ =gBattleTypeFlags - movs r0, 0xA0 - lsls r0, 8 - str r0, [r1] - ldr r0, _0807F954 @ =gEnemyParty - movs r1, 0xFE - str r1, [sp] - movs r1, 0xC - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x69 - movs r2, 0x1E - movs r3, 0x1F - bl CreateMonWithGenderNatureLetter - b _0807F960 - .align 2, 0 -_0807F944: .4byte gMain -_0807F948: .4byte sub_807FBF0 -_0807F94C: .4byte 0x00000167 -_0807F950: .4byte gBattleTypeFlags -_0807F954: .4byte gEnemyParty -_0807F958: - ldr r1, _0807F98C @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 8 - str r0, [r1] -_0807F960: - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - ldr r0, _0807F990 @ =gEnemyParty - ldr r2, _0807F994 @ =gUnknown_841D148 - movs r1, 0x2 - bl SetMonData - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0807F98C: .4byte gBattleTypeFlags -_0807F990: .4byte gEnemyParty -_0807F994: .4byte gUnknown_841D148 - thumb_func_end ScrSpecial_StartMarowakBattle - - thumb_func_start ScrSpecial_StartSouthernIslandBattle -ScrSpecial_StartSouthernIslandBattle: @ 807F998 - push {lr} - bl ScriptContext2_Enable - ldr r1, _0807F9CC @ =gMain - ldr r0, _0807F9D0 @ =sub_807FBA0 - str r0, [r1, 0x8] - ldr r1, _0807F9D4 @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 6 - str r0, [r1] - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807F9CC: .4byte gMain -_0807F9D0: .4byte sub_807FBA0 -_0807F9D4: .4byte gBattleTypeFlags - thumb_func_end ScrSpecial_StartSouthernIslandBattle - - thumb_func_start Special_StartLegendaryBattle -Special_StartLegendaryBattle: @ 807F9D8 - push {lr} - bl ScriptContext2_Enable - ldr r1, _0807FA0C @ =gMain - ldr r0, _0807FA10 @ =sub_807FBA0 - str r0, [r1, 0x8] - ldr r1, _0807FA14 @ =gBattleTypeFlags - movs r0, 0x84 - lsls r0, 11 - str r0, [r1] - ldr r0, _0807FA18 @ =gEnemyParty - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x96 - beq _0807FA2E - cmp r0, 0x96 - bgt _0807FA1C - cmp r0, 0x92 - bgt _0807FA4C - cmp r0, 0x90 - blt _0807FA4C - b _0807FA3C - .align 2, 0 -_0807FA0C: .4byte gMain -_0807FA10: .4byte sub_807FBA0 -_0807FA14: .4byte gBattleTypeFlags -_0807FA18: .4byte gEnemyParty -_0807FA1C: - cmp r1, 0xF9 - blt _0807FA4C - cmp r1, 0xFA - ble _0807FA3C - movs r0, 0xCD - lsls r0, 1 - cmp r1, r0 - beq _0807FA34 - b _0807FA4C -_0807FA2E: - movs r1, 0xAA - lsls r1, 1 - b _0807FA3E -_0807FA34: - ldr r1, _0807FA38 @ =0x00000153 - b _0807FA3E - .align 2, 0 -_0807FA38: .4byte 0x00000153 -_0807FA3C: - ldr r1, _0807FA48 @ =0x00000155 -_0807FA3E: - movs r0, 0 - bl sub_807F690 - b _0807FA56 - .align 2, 0 -_0807FA48: .4byte 0x00000155 -_0807FA4C: - movs r1, 0x85 - lsls r1, 1 - movs r0, 0 - bl sub_807F690 -_0807FA56: - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - thumb_func_end Special_StartLegendaryBattle - - thumb_func_start Special_StartGroudonKyogreBattle -Special_StartGroudonKyogreBattle: @ 807FA68 - push {lr} - bl ScriptContext2_Enable - ldr r1, _0807FA90 @ =gMain - ldr r0, _0807FA94 @ =sub_807FBA0 - str r0, [r1, 0x8] - ldr r1, _0807FA98 @ =gBattleTypeFlags - movs r0, 0xC0 - lsls r0, 6 - str r0, [r1] - ldr r0, _0807FA9C @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x4 - bne _0807FAA0 - movs r1, 0x85 - lsls r1, 1 - movs r0, 0xB - bl sub_807F690 - b _0807FAAA - .align 2, 0 -_0807FA90: .4byte gMain -_0807FA94: .4byte sub_807FBA0 -_0807FA98: .4byte gBattleTypeFlags -_0807FA9C: .4byte gGameVersion -_0807FAA0: - movs r1, 0x85 - lsls r1, 1 - movs r0, 0xB - bl sub_807F690 -_0807FAAA: - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - thumb_func_end Special_StartGroudonKyogreBattle - - thumb_func_start Special_StartRegiBattle -Special_StartRegiBattle: @ 807FABC - push {lr} - bl ScriptContext2_Enable - ldr r1, _0807FAEC @ =gMain - ldr r0, _0807FAF0 @ =sub_807FBA0 - str r0, [r1, 0x8] - ldr r1, _0807FAF4 @ =gBattleTypeFlags - movs r0, 0xC0 - lsls r0, 7 - str r0, [r1] - movs r1, 0x85 - lsls r1, 1 - movs r0, 0 - bl sub_807F690 - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - pop {r0} - bx r0 - .align 2, 0 -_0807FAEC: .4byte gMain -_0807FAF0: .4byte sub_807FBA0 -_0807FAF4: .4byte gBattleTypeFlags - thumb_func_end Special_StartRegiBattle - - thumb_func_start sub_807FAF8 -sub_807FAF8: @ 807FAF8 - push {lr} - bl LoadPlayerParty - bl sub_807FB40 - pop {r0} - bx r0 - thumb_func_end sub_807FAF8 - - thumb_func_start sub_807FB08 -sub_807FB08: @ 807FB08 - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_805C780 - ldr r1, _0807FB38 @ =gMain - ldr r0, _0807FB3C @ =sub_807FAF8 - str r0, [r1, 0x8] - bl SavePlayerParty - bl InitPokedudePartyAndOpponent - bl GetWildBattleTransition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_807F690 - pop {r0} - bx r0 - .align 2, 0 -_0807FB38: .4byte gMain -_0807FB3C: .4byte sub_807FAF8 - thumb_func_end sub_807FB08 - - thumb_func_start sub_807FB40 -sub_807FB40: @ 807FB40 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _0807FB74 @ =0x01000100 - mov r0, sp - bl CpuSet - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - ldr r0, _0807FB78 @ =gBattleOutcome - ldrb r0, [r0] - bl IsPlayerDefeated - cmp r0, 0x1 - bne _0807FB80 - ldr r0, _0807FB7C @ =c2_whiteout - bl SetMainCallback2 - b _0807FB8C - .align 2, 0 -_0807FB74: .4byte 0x01000100 -_0807FB78: .4byte gBattleOutcome -_0807FB7C: .4byte c2_whiteout -_0807FB80: - ldr r0, _0807FB94 @ =CB2_ReturnToField - bl SetMainCallback2 - ldr r1, _0807FB98 @ =gFieldCallback - ldr r0, _0807FB9C @ =sub_807E3EC - str r0, [r1] -_0807FB8C: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0807FB94: .4byte CB2_ReturnToField -_0807FB98: .4byte gFieldCallback -_0807FB9C: .4byte sub_807E3EC - thumb_func_end sub_807FB40 - - thumb_func_start sub_807FBA0 -sub_807FBA0: @ 807FBA0 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _0807FBD4 @ =0x01000100 - mov r0, sp - bl CpuSet - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - ldr r0, _0807FBD8 @ =gBattleOutcome - ldrb r0, [r0] - bl IsPlayerDefeated - cmp r0, 0x1 - bne _0807FBE0 - ldr r0, _0807FBDC @ =c2_whiteout - bl SetMainCallback2 - b _0807FBE6 - .align 2, 0 -_0807FBD4: .4byte 0x01000100 -_0807FBD8: .4byte gBattleOutcome -_0807FBDC: .4byte c2_whiteout -_0807FBE0: - ldr r0, _0807FBEC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 -_0807FBE6: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0807FBEC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end sub_807FBA0 - - thumb_func_start sub_807FBF0 -sub_807FBF0: @ 807FBF0 - push {r4,lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _0807FC24 @ =0x01000100 - mov r0, sp - bl CpuSet - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - ldr r4, _0807FC28 @ =gBattleOutcome - ldrb r0, [r4] - bl IsPlayerDefeated - adds r1, r0, 0 - cmp r1, 0 - beq _0807FC30 - ldr r0, _0807FC2C @ =c2_whiteout - bl SetMainCallback2 - b _0807FC4C - .align 2, 0 -_0807FC24: .4byte 0x01000100 -_0807FC28: .4byte gBattleOutcome -_0807FC2C: .4byte c2_whiteout -_0807FC30: - ldrb r0, [r4] - cmp r0, 0x1 - bne _0807FC40 - ldr r0, _0807FC3C @ =gSpecialVar_Result - strh r1, [r0] - b _0807FC46 - .align 2, 0 -_0807FC3C: .4byte gSpecialVar_Result -_0807FC40: - ldr r1, _0807FC54 @ =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_0807FC46: - ldr r0, _0807FC58 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 -_0807FC4C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807FC54: .4byte gSpecialVar_Result -_0807FC58: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end sub_807FBF0 - - thumb_func_start sub_807FC5C -sub_807FC5C: @ 807FC5C - push {r4,r5,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsTallGrass_2 - lsls r0, 24 - cmp r0, 0 - beq _0807FC92 - movs r0, 0 - b _0807FD88 -_0807FC92: - adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_3 - lsls r0, 24 - cmp r0, 0 - beq _0807FCA2 - movs r0, 0x1 - b _0807FD88 -_0807FCA2: - adds r0, r4, 0 - bl MetatileBehavior_IsMB21OrWaterfallBottom - lsls r0, 24 - cmp r0, 0 - beq _0807FCB2 - movs r0, 0x2 - b _0807FD88 -_0807FCB2: - ldr r0, _0807FCC8 @ =gMapHeader - ldrb r0, [r0, 0x17] - subs r0, 0x1 - cmp r0, 0x8 - bhi _0807FD2C - lsls r0, 2 - ldr r1, _0807FCCC @ =_0807FCD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807FCC8: .4byte gMapHeader -_0807FCCC: .4byte _0807FCD0 - .align 2, 0 -_0807FCD0: - .4byte _0807FD2C - .4byte _0807FD2C - .4byte _0807FD2C - .4byte _0807FCF4 - .4byte _0807FD18 - .4byte _0807FD1C - .4byte _0807FD2C - .4byte _0807FD04 - .4byte _0807FD04 -_0807FCF4: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsMB0B - lsls r0, 24 - cmp r0, 0 - beq _0807FD08 -_0807FD04: - movs r0, 0x8 - b _0807FD88 -_0807FD08: - adds r0, r4, 0 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0807FD70 - movs r0, 0x7 - b _0807FD88 -_0807FD18: - movs r0, 0x3 - b _0807FD88 -_0807FD1C: - lsls r0, r5, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0807FD82 - b _0807FD86 -_0807FD2C: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsDeepSemiDeepOrSplashingWater - lsls r0, 24 - cmp r0, 0 - bne _0807FD82 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0807FD70 - adds r0, r4, 0 - bl MetatileBehavior_IsMB0C - lsls r0, 24 - cmp r0, 0 - beq _0807FD58 - movs r0, 0x6 - b _0807FD88 -_0807FD58: - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0807FD86 - adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_7 - lsls r0, 24 - cmp r0, 0 - beq _0807FD74 -_0807FD70: - movs r0, 0x5 - b _0807FD88 -_0807FD74: - adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807FD86 -_0807FD82: - movs r0, 0x4 - b _0807FD88 -_0807FD86: - movs r0, 0x9 -_0807FD88: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807FC5C - - thumb_func_start GetBattleTransitionTypeByMap -GetBattleTransitionTypeByMap: @ 807FD90 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r4, r0, 16 - bl sav1_get_flash_used_on_map - lsls r0, 24 - cmp r0, 0 - beq _0807FDC0 - movs r0, 0x2 - b _0807FDEA -_0807FDC0: - lsls r0, r4, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0807FDE8 - ldr r0, _0807FDE0 @ =gMapHeader - ldrb r0, [r0, 0x17] - cmp r0, 0x4 - beq _0807FDE4 - cmp r0, 0x5 - beq _0807FDE8 - movs r0, 0 - b _0807FDEA - .align 2, 0 -_0807FDE0: .4byte gMapHeader -_0807FDE4: - movs r0, 0x1 - b _0807FDEA -_0807FDE8: - movs r0, 0x3 -_0807FDEA: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetBattleTransitionTypeByMap - - thumb_func_start GetSumOfPlayerPartyLevel -GetSumOfPlayerPartyLevel: @ 807FDF4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - movs r6, 0 -_0807FDFE: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _0807FE50 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - adds r1, r0, 0 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0807FE42 - cmp r1, 0 - beq _0807FE42 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0807FE42 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - adds r0, r7, r0 - lsls r0, 24 - lsrs r7, r0, 24 - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0807FE48 -_0807FE42: - adds r6, 0x1 - cmp r6, 0x5 - ble _0807FDFE -_0807FE48: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807FE50: .4byte gPlayerParty - thumb_func_end GetSumOfPlayerPartyLevel - - thumb_func_start reads_trainer_data_byte0 -reads_trainer_data_byte0: @ 807FE54 - push {r4,r5,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, _0807FE88 @ =gTrainers - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r5 - adds r0, r2, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r4 - bcs _0807FE74 - adds r4, r0, 0 -_0807FE74: - movs r3, 0 - ldrb r0, [r2] - cmp r0, 0x1 - beq _0807FEBC - cmp r0, 0x1 - bgt _0807FE8C - cmp r0, 0 - beq _0807FE96 - b _0807FF2C - .align 2, 0 -_0807FE88: .4byte gTrainers -_0807FE8C: - cmp r0, 0x2 - beq _0807FEE2 - cmp r0, 0x3 - beq _0807FF08 - b _0807FF2C -_0807FE96: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _0807FF2C -_0807FEA4: - lsls r0, r2, 3 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _0807FEA4 - b _0807FF2C -_0807FEBC: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _0807FF2C -_0807FECA: - lsls r0, r2, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _0807FECA - b _0807FF2C -_0807FEE2: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _0807FF2C -_0807FEF0: - lsls r0, r2, 3 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _0807FEF0 - b _0807FF2C -_0807FF08: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _0807FF2C -_0807FF16: - lsls r0, r2, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _0807FF16 -_0807FF2C: - adds r0, r3, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end reads_trainer_data_byte0 - - thumb_func_start GetWildBattleTransition -GetWildBattleTransition: @ 807FF34 - push {r4,r5,lr} - bl GetBattleTransitionTypeByMap - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0807FF64 @ =gEnemyParty - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetSumOfPlayerPartyLevel - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _0807FF6C - ldr r0, _0807FF68 @ =gUnknown_83C68F0 - lsls r1, r5, 1 - adds r0, 0x1 - b _0807FF70 - .align 2, 0 -_0807FF64: .4byte gEnemyParty -_0807FF68: .4byte gUnknown_83C68F0 -_0807FF6C: - ldr r0, _0807FF7C @ =gUnknown_83C68F0 - lsls r1, r5, 1 -_0807FF70: - adds r1, r0 - ldrb r0, [r1] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0807FF7C: .4byte gUnknown_83C68F0 - thumb_func_end GetWildBattleTransition - - thumb_func_start sub_807FF80 -sub_807FF80: @ 807FF80 - push {r4-r6,lr} - ldr r4, _0807FFB4 @ =gTrainerBattleOpponent_A - ldrh r1, [r4] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0808000C - ldr r1, _0807FFB8 @ =gTrainers - ldrh r2, [r4] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x1] - cmp r1, 0x57 - bne _08080008 - adds r1, r2, 0 - movs r0, 0xCD - lsls r0, 1 - cmp r1, r0 - beq _0807FFB0 - ldr r0, _0807FFBC @ =0x000002df - cmp r1, r0 - bne _0807FFC0 -_0807FFB0: - movs r0, 0xC - b _08080054 - .align 2, 0 -_0807FFB4: .4byte gTrainerBattleOpponent_A -_0807FFB8: .4byte gTrainers -_0807FFBC: .4byte 0x000002df -_0807FFC0: - ldr r0, _0807FFD4 @ =0x0000019b - cmp r1, r0 - beq _0807FFCE - movs r0, 0xB8 - lsls r0, 2 - cmp r1, r0 - bne _0807FFD8 -_0807FFCE: - movs r0, 0xD - b _08080054 - .align 2, 0 -_0807FFD4: .4byte 0x0000019b -_0807FFD8: - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0807FFE6 - ldr r0, _0807FFEC @ =0x000002e1 - cmp r1, r0 - bne _0807FFF0 -_0807FFE6: - movs r0, 0xE - b _08080054 - .align 2, 0 -_0807FFEC: .4byte 0x000002e1 -_0807FFF0: - ldr r0, _08080000 @ =0x0000019d - cmp r1, r0 - beq _0807FFFC - ldr r0, _08080004 @ =0x000002e2 - cmp r1, r0 - bne _0808000C -_0807FFFC: - movs r0, 0xF - b _08080054 - .align 2, 0 -_08080000: .4byte 0x0000019d -_08080004: .4byte 0x000002e2 -_08080008: - cmp r1, 0x5A - bne _08080010 -_0808000C: - movs r0, 0x10 - b _08080054 -_08080010: - ldrb r0, [r0, 0x18] - movs r5, 0x1 - cmp r0, 0x1 - bne _0808001A - movs r5, 0x2 -_0808001A: - bl GetBattleTransitionTypeByMap - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4] - adds r1, r5, 0 - bl reads_trainer_data_byte0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl GetSumOfPlayerPartyLevel - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _0808004C - ldr r0, _08080048 @ =gUnknown_83C68F8 - lsls r1, r6, 1 - adds r0, 0x1 - b _08080050 - .align 2, 0 -_08080048: .4byte gUnknown_83C68F8 -_0808004C: - ldr r0, _0808005C @ =gUnknown_83C68F8 - lsls r1, r6, 1 -_08080050: - adds r1, r0 - ldrb r0, [r1] -_08080054: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0808005C: .4byte gUnknown_83C68F8 - thumb_func_end sub_807FF80 - - thumb_func_start sub_8080060 -sub_8080060: @ 8080060 - push {r4,lr} - ldr r0, _08080084 @ =gEnemyParty - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetSumOfPlayerPartyLevel - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _08080088 - movs r0, 0x3 - b _0808008A - .align 2, 0 -_08080084: .4byte gEnemyParty -_08080088: - movs r0, 0x4 -_0808008A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8080060 - - thumb_func_start TrainerBattleLoadArg32 -TrainerBattleLoadArg32: @ 8080090 - adds r2, r0, 0 - ldrb r0, [r2] - ldrb r1, [r2, 0x1] - lsls r1, 8 - orrs r0, r1 - ldrb r1, [r2, 0x2] - lsls r1, 16 - orrs r0, r1 - ldrb r1, [r2, 0x3] - lsls r1, 24 - orrs r0, r1 - bx lr - thumb_func_end TrainerBattleLoadArg32 - - thumb_func_start TrainerBattleLoadArg16 -TrainerBattleLoadArg16: @ 80800A8 - adds r1, r0, 0 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - lsls r1, 8 - orrs r0, r1 - bx lr - thumb_func_end TrainerBattleLoadArg16 - - thumb_func_start TrainerBattleLoadArg8 -TrainerBattleLoadArg8: @ 80800B4 - ldrb r0, [r0] - bx lr - thumb_func_end TrainerBattleLoadArg8 - - thumb_func_start trainerflag_opponent -trainerflag_opponent: @ 80800B8 - ldr r1, _080800CC @ =gTrainerBattleOpponent_A - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .align 2, 0 -_080800CC: .4byte gTrainerBattleOpponent_A - thumb_func_end trainerflag_opponent - - thumb_func_start IsPlayerDefeated -IsPlayerDefeated: @ 80800D0 - push {lr} - subs r0, 0x1 - cmp r0, 0x6 - bhi _08080108 - lsls r0, 2 - ldr r1, _080800E4 @ =_080800E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080800E4: .4byte _080800E8 - .align 2, 0 -_080800E8: - .4byte _08080108 - .4byte _08080104 - .4byte _08080104 - .4byte _08080108 - .4byte _08080108 - .4byte _08080108 - .4byte _08080108 -_08080104: - movs r0, 0x1 - b _0808010A -_08080108: - movs r0, 0 -_0808010A: - pop {r1} - bx r1 - thumb_func_end IsPlayerDefeated - - thumb_func_start sub_8080110 -sub_8080110: @ 8080110 - ldr r0, _08080140 @ =gUnknown_20386AC - movs r1, 0 - strh r1, [r0] - ldr r0, _08080144 @ =gTrainerBattleOpponent_A - strh r1, [r0] - ldr r0, _08080148 @ =gUnknown_20386B0 - strh r1, [r0] - ldr r0, _0808014C @ =gUnknown_20386B4 - movs r1, 0 - str r1, [r0] - ldr r0, _08080150 @ =gUnknown_20386B8 - str r1, [r0] - ldr r0, _08080154 @ =gUnknown_20386BC - str r1, [r0] - ldr r0, _08080158 @ =gUnknown_20386C0 - str r1, [r0] - ldr r0, _0808015C @ =gUnknown_20386C4 - str r1, [r0] - ldr r0, _08080160 @ =gUnknown_20386C8 - str r1, [r0] - ldr r0, _08080164 @ =gUnknown_20386CC - strh r1, [r0] - bx lr - .align 2, 0 -_08080140: .4byte gUnknown_20386AC -_08080144: .4byte gTrainerBattleOpponent_A -_08080148: .4byte gUnknown_20386B0 -_0808014C: .4byte gUnknown_20386B4 -_08080150: .4byte gUnknown_20386B8 -_08080154: .4byte gUnknown_20386BC -_08080158: .4byte gUnknown_20386C0 -_0808015C: .4byte gUnknown_20386C4 -_08080160: .4byte gUnknown_20386C8 -_08080164: .4byte gUnknown_20386CC - thumb_func_end sub_8080110 - - thumb_func_start TrainerBattleLoadArgs -TrainerBattleLoadArgs: @ 8080168 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 -_0808016E: - ldrb r0, [r4, 0x4] - cmp r0, 0x6 - bhi _080801E0 - lsls r0, 2 - ldr r1, _08080180 @ =_08080184 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08080180: .4byte _08080184 - .align 2, 0 -_08080184: - .4byte _080801A0 - .4byte _080801AE - .4byte _080801BC - .4byte _080801CA - .4byte _080801D2 - .4byte _080801DA - .4byte _080801E4 -_080801A0: - adds r0, r5, 0 - bl TrainerBattleLoadArg8 - ldr r1, [r4] - strb r0, [r1] - adds r5, 0x1 - b _080801E0 -_080801AE: - adds r0, r5, 0 - bl TrainerBattleLoadArg16 - ldr r1, [r4] - strh r0, [r1] - adds r5, 0x2 - b _080801E0 -_080801BC: - adds r0, r5, 0 - bl TrainerBattleLoadArg32 - ldr r1, [r4] - str r0, [r1] - adds r5, 0x4 - b _080801E0 -_080801CA: - ldr r1, [r4] - movs r0, 0 - strb r0, [r1] - b _080801E0 -_080801D2: - ldr r1, [r4] - movs r0, 0 - strh r0, [r1] - b _080801E0 -_080801DA: - ldr r1, [r4] - movs r0, 0 - str r0, [r1] -_080801E0: - adds r4, 0x8 - b _0808016E -_080801E4: - ldr r0, [r4] - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end TrainerBattleLoadArgs - - thumb_func_start battle_80801F0 -battle_80801F0: @ 80801F0 - push {lr} - ldr r0, _08080218 @ =gUnknown_20386B0 - ldrh r1, [r0] - cmp r1, 0 - beq _08080212 - ldr r0, _0808021C @ =gSpecialVar_LastTalked - strh r1, [r0] - lsls r0, r1, 24 - lsrs r0, 24 - ldr r1, _08080220 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl GetFieldObjectIdByLocalIdAndMap - ldr r1, _08080224 @ =gSelectedEventObject - strb r0, [r1] -_08080212: - pop {r0} - bx r0 - .align 2, 0 -_08080218: .4byte gUnknown_20386B0 -_0808021C: .4byte gSpecialVar_LastTalked -_08080220: .4byte gSaveBlock1Ptr -_08080224: .4byte gSelectedEventObject - thumb_func_end battle_80801F0 - - thumb_func_start BattleSetup_ConfigureTrainerBattle -BattleSetup_ConfigureTrainerBattle: @ 8080228 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8080110 - ldr r4, _08080250 @ =gUnknown_20386AC - adds r0, r5, 0 - bl TrainerBattleLoadArg8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - ldrh r0, [r4] - subs r0, 0x1 - cmp r0, 0x8 - bhi _08080318 - lsls r0, 2 - ldr r1, _08080254 @ =_08080258 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08080250: .4byte gUnknown_20386AC -_08080254: .4byte _08080258 - .align 2, 0 -_08080258: - .4byte _0808028C - .4byte _0808028C - .4byte _0808027C - .4byte _08080284 - .4byte _080802D8 - .4byte _08080294 - .4byte _080802AC - .4byte _08080294 - .4byte _08080304 -_0808027C: - ldr r0, _08080280 @ =gUnknown_83C69D8 - b _08080306 - .align 2, 0 -_08080280: .4byte gUnknown_83C69D8 -_08080284: - ldr r0, _08080288 @ =gUnknown_83C6990 - b _08080296 - .align 2, 0 -_08080288: .4byte gUnknown_83C6990 -_0808028C: - ldr r0, _08080290 @ =gUnknown_83C6948 - b _0808031A - .align 2, 0 -_08080290: .4byte gUnknown_83C6948 -_08080294: - ldr r0, _080802A4 @ =gUnknown_83C6A68 -_08080296: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r0, _080802A8 @ =gUnknown_81A4EE9 - b _08080326 - .align 2, 0 -_080802A4: .4byte gUnknown_83C6A68 -_080802A8: .4byte gUnknown_81A4EE9 -_080802AC: - bl sub_811231C - ldr r0, _080802CC @ =gUnknown_83C6990 - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r4, _080802D0 @ =gTrainerBattleOpponent_A - ldrh r0, [r4] - bl sub_810CE64 - strh r0, [r4] - ldr r0, _080802D4 @ =gUnknown_81A4F73 - b _08080326 - .align 2, 0 -_080802CC: .4byte gUnknown_83C6990 -_080802D0: .4byte gTrainerBattleOpponent_A -_080802D4: .4byte gUnknown_81A4F73 -_080802D8: - bl sub_811231C - ldr r0, _080802F8 @ =gUnknown_83C6900 - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r4, _080802FC @ =gTrainerBattleOpponent_A - ldrh r0, [r4] - bl sub_810CE64 - strh r0, [r4] - ldr r0, _08080300 @ =gUnknown_81A4F3E - b _08080326 - .align 2, 0 -_080802F8: .4byte gUnknown_83C6900 -_080802FC: .4byte gTrainerBattleOpponent_A -_08080300: .4byte gUnknown_81A4F3E -_08080304: - ldr r0, _08080310 @ =gUnknown_83C6A20 -_08080306: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - ldr r0, _08080314 @ =gUnknown_81A4F21 - b _08080326 - .align 2, 0 -_08080310: .4byte gUnknown_83C6A20 -_08080314: .4byte gUnknown_81A4F21 -_08080318: - ldr r0, _0808032C @ =gUnknown_83C6900 -_0808031A: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r0, _08080330 @ =gUnknown_81A4EC1 -_08080326: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808032C: .4byte gUnknown_83C6900 -_08080330: .4byte gUnknown_81A4EC1 - thumb_func_end BattleSetup_ConfigureTrainerBattle - - thumb_func_start TrainerWantsBattle -TrainerWantsBattle: @ 8080334 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08080368 @ =gSelectedEventObject - strb r0, [r2] - ldr r4, _0808036C @ =gSpecialVar_LastTalked - ldr r3, _08080370 @ =gMapObjects - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r0, [r2, 0x8] - strh r0, [r4] - adds r1, 0x1 - adds r0, r1, 0 - bl BattleSetup_ConfigureTrainerBattle - ldr r0, _08080374 @ =gUnknown_81A4EB4 - bl ScriptContext1_SetupScript - bl ScriptContext2_Enable - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08080368: .4byte gSelectedEventObject -_0808036C: .4byte gSpecialVar_LastTalked -_08080370: .4byte gMapObjects -_08080374: .4byte gUnknown_81A4EB4 - thumb_func_end TrainerWantsBattle - - thumb_func_start GetTrainerFlagFromScriptPointer -GetTrainerFlagFromScriptPointer: @ 8080378 - push {lr} - adds r0, 0x2 - bl TrainerBattleLoadArg16 - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetTrainerFlagFromScriptPointer - - thumb_func_start sub_8080398 -sub_8080398: @ 8080398 - push {r4,lr} - ldr r0, _080803C4 @ =gSelectedEventObject - ldrb r0, [r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _080803C8 @ =gMapObjects - adds r4, r0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl npc_set_running_behaviour_etc - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080803C4: .4byte gSelectedEventObject -_080803C8: .4byte gMapObjects - thumb_func_end sub_8080398 - - thumb_func_start ScrSpecial_GetTrainerBattleMode -ScrSpecial_GetTrainerBattleMode: @ 80803CC - ldr r0, _080803D4 @ =gUnknown_20386AC - ldrb r0, [r0] - bx lr - .align 2, 0 -_080803D4: .4byte gUnknown_20386AC - thumb_func_end ScrSpecial_GetTrainerBattleMode - - thumb_func_start sub_80803D8 -sub_80803D8: @ 80803D8 - ldr r0, _080803E0 @ =gUnknown_20386CC - ldrh r0, [r0] - bx lr - .align 2, 0 -_080803E0: .4byte gUnknown_20386CC - thumb_func_end sub_80803D8 - - thumb_func_start ScrSpecial_HasTrainerBeenFought -ScrSpecial_HasTrainerBeenFought: @ 80803E4 - push {lr} - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end ScrSpecial_HasTrainerBeenFought - - thumb_func_start sub_80803FC -sub_80803FC: @ 80803FC - push {lr} - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end sub_80803FC - - thumb_func_start sub_8080410 -sub_8080410: @ 8080410 - push {lr} - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end sub_8080410 - - thumb_func_start HasTrainerAlreadyBeenFought -HasTrainerAlreadyBeenFought: @ 8080424 - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end HasTrainerAlreadyBeenFought - - thumb_func_start SetTrainerFlag -SetTrainerFlag: @ 808043C - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end SetTrainerFlag - - thumb_func_start ClearTrainerFlag -ClearTrainerFlag: @ 8080450 - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagClear - pop {r0} - bx r0 - thumb_func_end ClearTrainerFlag - - thumb_func_start BattleSetup_StartTrainerBattle -BattleSetup_StartTrainerBattle: @ 8080464 - push {r4,lr} - ldr r4, _080804A0 @ =gBattleTypeFlags - movs r0, 0x8 - str r0, [r4] - bl ScrSpecial_GetTrainerBattleMode - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bne _0808048C - bl sub_80803D8 - movs r1, 0x3 - ands r1, r0 - cmp r1, 0 - beq _0808048C - ldr r0, [r4] - movs r1, 0x10 - orrs r0, r1 - str r0, [r4] -_0808048C: - ldr r1, _080804A4 @ =gMain - ldr r0, _080804A8 @ =sub_80804AC - str r0, [r1, 0x8] - bl sub_807F868 - bl ScriptContext1_Stop - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080804A0: .4byte gBattleTypeFlags -_080804A4: .4byte gMain -_080804A8: .4byte sub_80804AC - thumb_func_end BattleSetup_StartTrainerBattle - - thumb_func_start sub_80804AC -sub_80804AC: @ 80804AC - push {lr} - ldr r0, _080804D8 @ =gUnknown_20386AC - ldrh r0, [r0] - cmp r0, 0x9 - bne _08080508 - ldr r0, _080804DC @ =gBattleOutcome - ldrb r0, [r0] - bl IsPlayerDefeated - adds r1, r0, 0 - cmp r1, 0x1 - bne _080804E8 - ldr r0, _080804E0 @ =gSpecialVar_Result - strh r1, [r0] - ldr r0, _080804E4 @ =gUnknown_20386CC - ldrh r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08080530 - bl sp000_heal_pokemon - b _080804EE - .align 2, 0 -_080804D8: .4byte gUnknown_20386AC -_080804DC: .4byte gBattleOutcome -_080804E0: .4byte gSpecialVar_Result -_080804E4: .4byte gUnknown_20386CC -_080804E8: - ldr r0, _08080500 @ =gSpecialVar_Result - movs r1, 0 - strh r1, [r0] -_080804EE: - ldr r0, _08080504 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - bl sub_80803FC - bl sub_81139BC - b _0808054E - .align 2, 0 -_08080500: .4byte gSpecialVar_Result -_08080504: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08080508: - ldr r0, _0808051C @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08080524 - ldr r0, _08080520 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - b _0808054E - .align 2, 0 -_0808051C: .4byte gTrainerBattleOpponent_A -_08080520: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08080524: - ldr r0, _08080538 @ =gBattleOutcome - ldrb r0, [r0] - bl IsPlayerDefeated - cmp r0, 0x1 - bne _08080540 -_08080530: - ldr r0, _0808053C @ =c2_whiteout - bl SetMainCallback2 - b _0808054E - .align 2, 0 -_08080538: .4byte gBattleOutcome -_0808053C: .4byte c2_whiteout -_08080540: - ldr r0, _08080554 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - bl sub_80803FC - bl sub_81139BC -_0808054E: - pop {r0} - bx r0 - .align 2, 0 -_08080554: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end sub_80804AC - - thumb_func_start sub_8080558 -sub_8080558: @ 8080558 - push {lr} - ldr r0, _08080570 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08080578 - ldr r0, _08080574 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - b _080805A6 - .align 2, 0 -_08080570: .4byte gTrainerBattleOpponent_A -_08080574: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08080578: - ldr r0, _0808058C @ =gBattleOutcome - ldrb r0, [r0] - bl IsPlayerDefeated - cmp r0, 0x1 - bne _08080594 - ldr r0, _08080590 @ =c2_whiteout - bl SetMainCallback2 - b _080805A6 - .align 2, 0 -_0808058C: .4byte gBattleOutcome -_08080590: .4byte c2_whiteout -_08080594: - ldr r0, _080805AC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - bl sub_80803FC - bl sub_810CDE8 - bl sub_81138F8 -_080805A6: - pop {r0} - bx r0 - .align 2, 0 -_080805AC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end sub_8080558 - - thumb_func_start ScrSpecial_StartTrainerEyeRematch -ScrSpecial_StartTrainerEyeRematch: @ 80805B0 - push {lr} - ldr r1, _080805CC @ =gBattleTypeFlags - movs r0, 0x8 - str r0, [r1] - ldr r1, _080805D0 @ =gMain - ldr r0, _080805D4 @ =sub_8080558 - str r0, [r1, 0x8] - bl sub_807F868 - bl ScriptContext1_Stop - pop {r0} - bx r0 - .align 2, 0 -_080805CC: .4byte gBattleTypeFlags -_080805D0: .4byte gMain -_080805D4: .4byte sub_8080558 - thumb_func_end ScrSpecial_StartTrainerEyeRematch - - thumb_func_start ScrSpecial_ShowTrainerIntroSpeech -ScrSpecial_ShowTrainerIntroSpeech: @ 80805D8 - push {lr} - bl sub_80806D8 - bl ShowFieldMessage - pop {r0} - bx r0 - thumb_func_end ScrSpecial_ShowTrainerIntroSpeech - - thumb_func_start BattleSetup_GetScriptAddrAfterBattle -BattleSetup_GetScriptAddrAfterBattle: @ 80805E8 - push {lr} - ldr r0, _080805F8 @ =gUnknown_20386C4 - ldr r0, [r0] - cmp r0, 0 - bne _080805F4 - ldr r0, _080805FC @ =EventScript_1C555B -_080805F4: - pop {r1} - bx r1 - .align 2, 0 -_080805F8: .4byte gUnknown_20386C4 -_080805FC: .4byte EventScript_1C555B - thumb_func_end BattleSetup_GetScriptAddrAfterBattle - - thumb_func_start BattleSetup_GetTrainerPostBattleScript -BattleSetup_GetTrainerPostBattleScript: @ 8080600 - push {lr} - ldr r0, _08080610 @ =gUnknown_20386C8 - ldr r0, [r0] - cmp r0, 0 - bne _0808060C - ldr r0, _08080614 @ =EventScript_1C555B -_0808060C: - pop {r1} - bx r1 - .align 2, 0 -_08080610: .4byte gUnknown_20386C8 -_08080614: .4byte EventScript_1C555B - thumb_func_end BattleSetup_GetTrainerPostBattleScript - - thumb_func_start ScrSpecial_ShowTrainerNonBattlingSpeech -ScrSpecial_ShowTrainerNonBattlingSpeech: @ 8080618 - push {lr} - bl sub_8080734 - bl ShowFieldMessage - pop {r0} - bx r0 - thumb_func_end ScrSpecial_ShowTrainerNonBattlingSpeech - - thumb_func_start PlayTrainerEncounterMusic -PlayTrainerEncounterMusic: @ 8080628 - push {lr} - ldr r0, _08080660 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080806BE - ldr r0, _08080664 @ =gUnknown_20386AC - ldrh r0, [r0] - cmp r0, 0x1 - beq _080806BE - cmp r0, 0x8 - beq _080806BE - ldr r0, _08080668 @ =gTrainerBattleOpponent_A - ldrh r0, [r0] - bl GetTrainerEncounterMusicId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bhi _080806B8 - lsls r0, 2 - ldr r1, _0808066C @ =_08080670 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08080660: .4byte gUnknown_203ADFA -_08080664: .4byte gUnknown_20386AC -_08080668: .4byte gTrainerBattleOpponent_A -_0808066C: .4byte _08080670 - .align 2, 0 -_08080670: - .4byte _080806AE - .4byte _080806A8 - .4byte _080806A8 - .4byte _080806B8 - .4byte _080806AE - .4byte _080806AE - .4byte _080806B8 - .4byte _080806B8 - .4byte _080806AE - .4byte _080806A8 - .4byte _080806AE - .4byte _080806AE - .4byte _080806AE - .4byte _080806AE -_080806A8: - @ MUS_SHOUJO - movs r0, 0x8E - lsls r0, 1 - b _080806BA -_080806AE: - @ MUS_SHOUNEN - ldr r0, _080806B4 @ =0x0000011d - b _080806BA - .align 2, 0 -_080806B4: .4byte 0x0000011d -_080806B8: - @ MUS_ROCKET - ldr r0, _080806C4 @ =0x0000011b -_080806BA: - bl PlayNewMapMusic -_080806BE: - pop {r0} - bx r0 - .align 2, 0 -_080806C4: .4byte 0x0000011b - thumb_func_end PlayTrainerEncounterMusic - - thumb_func_start sub_80806C8 -sub_80806C8: @ 80806C8 - push {lr} - cmp r0, 0 - bne _080806D0 - ldr r0, _080806D4 @ =gString_Dummy -_080806D0: - pop {r1} - bx r1 - .align 2, 0 -_080806D4: .4byte gString_Dummy - thumb_func_end sub_80806C8 - - thumb_func_start sub_80806D8 -sub_80806D8: @ 80806D8 - push {lr} - ldr r0, _080806E8 @ =gUnknown_20386B4 - ldr r0, [r0] - bl sub_80806C8 - pop {r1} - bx r1 - .align 2, 0 -_080806E8: .4byte gUnknown_20386B4 - thumb_func_end sub_80806D8 - - thumb_func_start sub_80806EC -sub_80806EC: @ 80806EC - push {r4,lr} - ldr r0, _08080708 @ =gUnknown_20386B8 - ldr r0, [r0] - ldr r4, _0808070C @ =gStringVar4 - bl sub_80806C8 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08080708: .4byte gUnknown_20386B8 -_0808070C: .4byte gStringVar4 - thumb_func_end sub_80806EC - - thumb_func_start sub_8080710 -sub_8080710: @ 8080710 - push {r4,lr} - ldr r4, _0808072C @ =gStringVar4 - ldr r0, _08080730 @ =gUnknown_20386BC - ldr r0, [r0] - bl sub_80806C8 - adds r1, r0, 0 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0808072C: .4byte gStringVar4 -_08080730: .4byte gUnknown_20386BC - thumb_func_end sub_8080710 - - thumb_func_start sub_8080734 -sub_8080734: @ 8080734 - push {lr} - ldr r0, _08080744 @ =gUnknown_20386C0 - ldr r0, [r0] - bl sub_80806C8 - pop {r1} - bx r1 - .align 2, 0 -_08080744: .4byte gUnknown_20386C0 - thumb_func_end sub_8080734 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 72cba63a3..eddc03f83 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2034,7 +2034,7 @@ sub_80E68C4: @ 80E68C4 ldr r1, _080E68F8 @ =sub_80E6854 str r1, [r0, 0x8] bl CleanupOverworldWindowsAndTilemaps - ldr r0, _080E68FC @ =sub_800FD9C + ldr r0, _080E68FC @ =CB2_InitBattle bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -2045,7 +2045,7 @@ _080E68EC: .align 2, 0 _080E68F4: .4byte gMain _080E68F8: .4byte sub_80E6854 -_080E68FC: .4byte sub_800FD9C +_080E68FC: .4byte CB2_InitBattle thumb_func_end sub_80E68C4 thumb_func_start StartSpecialBattle diff --git a/asm/cable_club.s b/asm/cable_club.s index 4c265b65f..01aa8d217 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1637,7 +1637,7 @@ _0808141A: lsls r2, 4 adds r0, r2, 0 strh r0, [r1] - ldr r0, _08081448 @ =sub_800FD9C + ldr r0, _08081448 @ =CB2_InitBattle bl SetMainCallback2 ldr r1, _0808144C @ =gMain ldr r0, _08081450 @ =sub_8081668 @@ -1651,7 +1651,7 @@ _0808143A: .align 2, 0 _08081440: .4byte gBattleTypeFlags _08081444: .4byte gTrainerBattleOpponent_A -_08081448: .4byte sub_800FD9C +_08081448: .4byte CB2_InitBattle _0808144C: .4byte gMain _08081450: .4byte sub_8081668 thumb_func_end sub_8081318 @@ -1860,7 +1860,7 @@ _080815EA: lsls r3, 4 adds r0, r3, 0 strh r0, [r1] - ldr r0, _08081618 @ =sub_800FD9C + ldr r0, _08081618 @ =CB2_InitBattle bl SetMainCallback2 ldr r1, _0808161C @ =gMain ldr r0, _08081620 @ =sub_8081668 @@ -1874,7 +1874,7 @@ _0808160A: .align 2, 0 _08081610: .4byte gBattleTypeFlags _08081614: .4byte gTrainerBattleOpponent_A -_08081618: .4byte sub_800FD9C +_08081618: .4byte CB2_InitBattle _0808161C: .4byte gMain _08081620: .4byte sub_8081668 thumb_func_end sub_8081454 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index d8651a24c..b718deee6 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -278,7 +278,7 @@ EvolutionScene: @ 80CDDF4 adds r6, r7, 0 adds r6, 0x1C adds r0, r1, r6 - ldr r2, _080CE0CC @ =nullsub_10 + ldr r2, _080CE0CC @ =SpriteCallbackDummy2 str r2, [r0] adds r1, r7 ldrb r2, [r1, 0x5] @@ -331,7 +331,7 @@ EvolutionScene: @ 80CDDF4 adds r1, r3 lsls r1, 2 adds r6, r1, r6 - ldr r2, _080CE0CC @ =nullsub_10 + ldr r2, _080CE0CC @ =SpriteCallbackDummy2 str r2, [r6] adds r1, r7 ldrb r0, [r1, 0x5] @@ -420,7 +420,7 @@ _080CE0BC: .4byte gMonSpritesGfxPtr _080CE0C0: .4byte gMultiuseSpriteTemplate _080CE0C4: .4byte gDummySpriteAffineAnimTable _080CE0C8: .4byte gSprites -_080CE0CC: .4byte nullsub_10 +_080CE0CC: .4byte SpriteCallbackDummy2 _080CE0D0: .4byte sub_80CE8DC _080CE0D4: .4byte gTasks _080CE0D8: .4byte gPlttBufferUnfaded + 0x40 @@ -562,7 +562,7 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 - ldr r2, _080CE2CC @ =nullsub_10 + ldr r2, _080CE2CC @ =SpriteCallbackDummy2 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] @@ -623,7 +623,7 @@ _080CE2BC: .4byte gMonSpritesGfxPtr _080CE2C0: .4byte gMultiuseSpriteTemplate _080CE2C4: .4byte gDummySpriteAffineAnimTable _080CE2C8: .4byte gSprites -_080CE2CC: .4byte nullsub_10 +_080CE2CC: .4byte SpriteCallbackDummy2 _080CE2D0: .4byte nullsub_76 _080CE2D4: .4byte sub_80D0050 _080CE2D8: .4byte sub_80CE710 @@ -813,7 +813,7 @@ _080CE45C: adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 - ldr r2, _080CE4C4 @ =nullsub_10 + ldr r2, _080CE4C4 @ =SpriteCallbackDummy2 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] @@ -836,7 +836,7 @@ _080CE4B4: .4byte gMultiuseSpriteTemplate _080CE4B8: .4byte gDummySpriteAffineAnimTable _080CE4BC: .4byte gUnknown_2039A20 _080CE4C0: .4byte gSprites -_080CE4C4: .4byte nullsub_10 +_080CE4C4: .4byte SpriteCallbackDummy2 _080CE4C8: .4byte gMain _080CE4CC: ldr r0, _080CE4FC @ =gWirelessCommType @@ -989,7 +989,7 @@ TradeEvolutionScene: @ 80CE540 adds r0, r3, 0 adds r0, 0x1C adds r0, r1, r0 - ldr r2, _080CE6D8 @ =nullsub_10 + ldr r2, _080CE6D8 @ =SpriteCallbackDummy2 str r2, [r0] adds r1, r3 ldrb r2, [r1, 0x5] @@ -1074,7 +1074,7 @@ _080CE6C8: .4byte gMonSpritesGfxPtr _080CE6CC: .4byte gMultiuseSpriteTemplate _080CE6D0: .4byte gDummySpriteAffineAnimTable _080CE6D4: .4byte gSprites -_080CE6D8: .4byte nullsub_10 +_080CE6D8: .4byte SpriteCallbackDummy2 _080CE6DC: .4byte sub_80CF53C _080CE6E0: .4byte gTasks _080CE6E4: .4byte gBattle_BG0_X @@ -1962,14 +1962,14 @@ _080CEEA0: bl Free str r6, [r4] bl FreeAllWindowBuffers - ldr r0, _080CEECC @ =gUnknown_300537C + ldr r0, _080CEECC @ =gCB2_AfterEvolution ldr r0, [r0] bl SetMainCallback2 b _080CF528 .align 2, 0 _080CEEC4: .4byte gPaletteFade _080CEEC8: .4byte gUnknown_2039A20 -_080CEECC: .4byte gUnknown_300537C +_080CEECC: .4byte gCB2_AfterEvolution _080CEED0: ldr r0, _080CEF04 @ =gBattleCommunication ldrb r1, [r0, 0x2] @@ -3252,14 +3252,14 @@ _080CF9E0: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, _080CFA10 @ =gUnknown_300537C + ldr r0, _080CFA10 @ =gCB2_AfterEvolution ldr r0, [r0] bl SetMainCallback2 b _080D003A .align 2, 0 _080CFA08: .4byte gUnknown_2039A20 _080CFA0C: .4byte gTextFlags -_080CFA10: .4byte gUnknown_300537C +_080CFA10: .4byte gCB2_AfterEvolution _080CFA14: ldr r0, _080CFA60 @ =gBattleCommunication ldrb r1, [r0, 0x2] diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index c265d7d01..46587dc52 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1953,13 +1953,13 @@ _0806D7E2: bx r1 thumb_func_end DoPoisonFieldEffect_step - thumb_func_start sub_806D7E8 -sub_806D7E8: @ 806D7E8 + thumb_func_start RestartWildEncounterImmunitySteps +RestartWildEncounterImmunitySteps: @ 806D7E8 push {lr} bl sub_80832D4 pop {r0} bx r0 - thumb_func_end sub_806D7E8 + thumb_func_end RestartWildEncounterImmunitySteps thumb_func_start is_it_battle_time_3 is_it_battle_time_3: @ 806D7F4 diff --git a/asm/field_effect.s b/asm/field_effect.s index 9919ccc24..a8542fcc3 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -1989,7 +1989,7 @@ mapldr_080842E8: @ 80842E8 movs r1, 0 bl CreateTask bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r1, _0808430C @ =gFieldCallback movs r0, 0 str r0, [r1] @@ -2092,7 +2092,7 @@ mapldr_08084390: @ 8084390 bl FieldObjectTurn _080843D2: bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r1, _080843F4 @ =gFieldCallback movs r0, 0 str r0, [r1] @@ -2158,7 +2158,7 @@ sub_8084454: @ 8084454 bl pal_fill_for_maplights bl sub_8111CF0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r0, _0808447C @ =sub_8084484 movs r1, 0 bl CreateTask @@ -2626,7 +2626,7 @@ _080847F4: .4byte gUnknown_83CC050 sub_80847F8: @ 80847F8 push {r4,lr} adds r4, r0, 0 - bl player_bitmagic + bl FreezeEventObjects bl CameraObjectReset2 ldrb r0, [r4, 0xA] bl sub_809C448 @@ -2889,7 +2889,7 @@ sub_80849F4: @ 80849F4 bl pal_fill_for_maplights bl sub_8111CF0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r0, _08084A1C @ =sub_8084A24 movs r1, 0 bl CreateTask @@ -3630,7 +3630,7 @@ sub_8084FA0: @ 8084FA0 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 - bl player_bitmagic + bl FreezeEventObjects bl CameraObjectReset2 movs r0, 0 bl SetCameraPanningCallback @@ -3977,7 +3977,7 @@ sub_8085244: @ 8085244 adds r5, r0, 0 adds r4, r1, 0 bl CameraObjectReset2 - bl player_bitmagic + bl FreezeEventObjects ldr r1, _08085270 @ =gPlayerAvatar movs r0, 0x1 strb r0, [r1, 0x6] @@ -4239,7 +4239,7 @@ sub_8085440: @ 8085440 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 - bl player_bitmagic + bl FreezeEventObjects bl CameraObjectReset2 ldr r1, _0808546C @ =gPlayerAvatar movs r0, 0x1 @@ -4482,7 +4482,7 @@ _0808561C: sub_8085620: @ 8085620 push {lr} bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r0, _08085638 @ =sub_808563C movs r1, 0x50 bl CreateTask @@ -4969,7 +4969,7 @@ sub_80859D4: @ 80859D4 bl pal_fill_for_maplights bl sub_8111CF0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r1, _08085A14 @ =gFieldCallback movs r0, 0 str r0, [r1] @@ -5198,7 +5198,7 @@ sub_8085BA8: @ 8085BA8 push {r4,lr} adds r4, r0, 0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects bl CameraObjectReset2 bl GetPlayerFacingDirection lsls r0, 24 @@ -5435,7 +5435,7 @@ mapldr_08085D88: @ 8085D88 bl pal_fill_for_maplights bl sub_8111CF0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r1, _08085DCC @ =gFieldCallback movs r0, 0 str r0, [r1] @@ -7000,7 +7000,7 @@ sub_80869C0: @ 80869C0 push {r6} adds r4, r0, 0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r5, _08086A18 @ =gPlayerAvatar movs r0, 0x1 strb r0, [r5, 0x6] @@ -7276,7 +7276,7 @@ sub_8086C00: @ 8086C00 push {r4,lr} adds r4, r0, 0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r1, _08086C20 @ =gPlayerAvatar movs r0, 0x1 strb r0, [r1, 0x6] diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index be79c3b21..7003a10f2 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -134,13 +134,13 @@ npc_pal_op: @ 80DAE54 cmp r0, 0 bne _080DAEB0 ldrb r0, [r5, 0x1F] - bl MetatileBehavior_ReturnFalse_7 + bl MetatileBehavior_GetBridgeType lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _080DAE96 ldrb r0, [r5, 0x1E] - bl MetatileBehavior_ReturnFalse_7 + bl MetatileBehavior_GetBridgeType lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -1251,7 +1251,7 @@ _080DB6E8: cmp r0, 0 bne _080DB73C adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_3 + bl MetatileBehavior_IsLongGrass lsls r0, 24 cmp r0, 0 beq _080DB73C diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s index 56af66346..b5ec3a622 100644 --- a/asm/field_ground_effect.s +++ b/asm/field_ground_effect.s @@ -224,7 +224,7 @@ GetGroundEffectFlags_LongGrassOnSpawn: @ 8067CE8 push {r4,lr} adds r4, r1, 0 ldrb r0, [r0, 0x1E] - bl MetatileBehavior_ReturnFalse_3 + bl MetatileBehavior_IsLongGrass lsls r0, 24 cmp r0, 0 beq _08067D00 @@ -243,7 +243,7 @@ GetGroundEffectFlags_LongGrassOnBeginStep: @ 8067D08 push {r4,lr} adds r4, r1, 0 ldrb r0, [r0, 0x1E] - bl MetatileBehavior_ReturnFalse_3 + bl MetatileBehavior_IsLongGrass lsls r0, 24 cmp r0, 0 beq _08067D20 @@ -838,12 +838,12 @@ FieldObjectSetSpriteOamTableForLongGrass: @ 8068154 cmp r0, 0 blt _080681A8 ldrb r0, [r5, 0x1E] - bl MetatileBehavior_ReturnFalse_3 + bl MetatileBehavior_IsLongGrass lsls r0, 24 cmp r0, 0 beq _080681A8 ldrb r0, [r5, 0x1F] - bl MetatileBehavior_ReturnFalse_3 + bl MetatileBehavior_IsLongGrass lsls r0, 24 cmp r0, 0 beq _080681A8 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 57f7fbe1c..8787ff647 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -12214,8 +12214,8 @@ _0806360C: bx r1 thumb_func_end sub_80635DC - thumb_func_start npc_set_running_behaviour_etc -npc_set_running_behaviour_etc: @ 8063610 + thumb_func_start SetTrainerMovementType +SetTrainerMovementType: @ 8063610 push {r4,lr} mov r12, r0 lsls r1, 24 @@ -12253,10 +12253,10 @@ npc_set_running_behaviour_etc: @ 8063610 .align 2, 0 _08063654: .4byte gSprites _08063658: .4byte gUnknown_839FBC8 - thumb_func_end npc_set_running_behaviour_etc + thumb_func_end SetTrainerMovementType - thumb_func_start npc_running_behaviour_by_direction -npc_running_behaviour_by_direction: @ 806365C + thumb_func_start GetTrainerFacingDirectionMovementType +GetTrainerFacingDirectionMovementType: @ 806365C lsls r0, 24 lsrs r0, 24 ldr r1, _08063668 @ =gUnknown_83A649C @@ -12265,7 +12265,7 @@ npc_running_behaviour_by_direction: @ 806365C bx lr .align 2, 0 _08063668: .4byte gUnknown_83A649C - thumb_func_end npc_running_behaviour_by_direction + thumb_func_end GetTrainerFacingDirectionMovementType thumb_func_start npc_block_way__next_tile npc_block_way__next_tile: @ 806366C diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index c753fb948..5e7f64670 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -3964,7 +3964,7 @@ sub_805D0F8: @ 805D0F8 lsls r4, 24 lsrs r4, 24 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects bl sav1_reset_battle_music_maybe bl Overworld_ChangeMusicToDefault ldr r2, _0805D148 @ =gPlayerAvatar @@ -4005,7 +4005,7 @@ sub_805D154: @ 805D154 lsls r4, 24 lsrs r4, 24 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects ldr r2, _0805D19C @ =gPlayerAvatar ldrb r1, [r2] movs r0, 0xF7 diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s index f8c0970c9..8d07f3779 100644 --- a/asm/field_screen_effect.s +++ b/asm/field_screen_effect.s @@ -306,7 +306,7 @@ sub_807F028: @ 807F028 lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 - bl sav1_get_flash_used_on_map + bl Overworld_GetFlashLevel lsls r0, 24 lsrs r0, 24 movs r5, 0 diff --git a/asm/item_menu.s b/asm/item_menu.s index 9b1ab2492..a143d2776 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -5845,7 +5845,7 @@ _0810AD1E: cmp r6, 0x1 bne _0810AD90 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeEventObjects bl sub_805C270 bl sub_805C780 ldr r2, _0810AD88 @ =gSpecialVar_ItemId diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index fd1cf3dc6..8f896ea7c 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -4012,8 +4012,8 @@ GetRfuPlayerCount: @ 80FA4EC _080FA4F4: .4byte gUnknown_3005450 thumb_func_end GetRfuPlayerCount - thumb_func_start IsRfuTaskFinished -IsRfuTaskFinished: @ 80FA4F8 + thumb_func_start IsLinkRfuTaskFinished +IsLinkRfuTaskFinished: @ 80FA4F8 push {lr} movs r1, 0 ldr r0, _080FA50C @ =gUnknown_3005450 @@ -4027,7 +4027,7 @@ _080FA506: bx r1 .align 2, 0 _080FA50C: .4byte gUnknown_3005450 - thumb_func_end IsRfuTaskFinished + thumb_func_end IsLinkRfuTaskFinished thumb_func_start sub_80FA510 sub_80FA510: @ 80FA510 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 94a07fdaf..9fc1f72cc 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -12709,7 +12709,7 @@ _0811C096: lsls r2, 4 adds r1, r2, 0 strh r1, [r0] - ldr r0, _0811C0DC @ =sub_800FD9C + ldr r0, _0811C0DC @ =CB2_InitBattle bl SetMainCallback2 pop {r4-r7} pop {r0} @@ -12719,7 +12719,7 @@ _0811C0CC: .4byte gPlayerParty _0811C0D0: .4byte gEnemyParty _0811C0D4: .4byte gUnknown_203B0D4 _0811C0D8: .4byte gTrainerBattleOpponent_A -_0811C0DC: .4byte sub_800FD9C +_0811C0DC: .4byte CB2_InitBattle thumb_func_end sub_811C04C thumb_func_start sub_811C0E0 diff --git a/asm/map_obj_80688E4.s b/asm/map_obj_80688E4.s index bc06896bc..04df8c938 100644 --- a/asm/map_obj_80688E4.s +++ b/asm/map_obj_80688E4.s @@ -82,8 +82,8 @@ _0806896E: bx r1 thumb_func_end FreezeMapObject - thumb_func_start player_bitmagic -player_bitmagic: @ 8068974 + thumb_func_start FreezeEventObjects +FreezeEventObjects: @ 8068974 push {r4,r5,lr} movs r4, 0 ldr r5, _080689A8 @ =gMapObjects @@ -114,7 +114,7 @@ _08068998: .align 2, 0 _080689A8: .4byte gMapObjects _080689AC: .4byte gPlayerAvatar - thumb_func_end player_bitmagic + thumb_func_end FreezeEventObjects thumb_func_start FreezeMapObjectsExceptOne FreezeMapObjectsExceptOne: @ 80689B0 diff --git a/asm/overworld.s b/asm/overworld.s index 553ad6aef..9b9fe037f 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1708,7 +1708,7 @@ sub_8055864: @ 8055864 bl TrySetMapSaveWarpStatus bl sub_806E110 bl nullsub_74 - bl sub_806D7E8 + bl RestartWildEncounterImmunitySteps adds r0, r5, 0 adds r1, r4, 0 bl sub_810C578 @@ -1771,7 +1771,7 @@ sub_8055920: @ 8055920 bl TrySetMapSaveWarpStatus bl sub_806E110 bl nullsub_74 - bl sub_806D7E8 + bl RestartWildEncounterImmunitySteps ldr r0, _080559A0 @ =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0x4 @@ -2284,8 +2284,8 @@ _08055D28: .4byte gUnknown_83C68E0 _08055D2C: .4byte gSaveBlock1Ptr thumb_func_end Overworld_SetFlashLevel - thumb_func_start sav1_get_flash_used_on_map -sav1_get_flash_used_on_map: @ 8055D30 + thumb_func_start Overworld_GetFlashLevel +Overworld_GetFlashLevel: @ 8055D30 ldr r0, _08055D3C @ =gSaveBlock1Ptr ldr r0, [r0] adds r0, 0x30 @@ -2293,7 +2293,7 @@ sav1_get_flash_used_on_map: @ 8055D30 bx lr .align 2, 0 _08055D3C: .4byte gSaveBlock1Ptr - thumb_func_end sav1_get_flash_used_on_map + thumb_func_end Overworld_GetFlashLevel thumb_func_start SetCurrentMapLayout SetCurrentMapLayout: @ 8055D40 @@ -3522,8 +3522,8 @@ _0805669C: .4byte sub_8056534 _080566A0: .4byte sub_80565B4 thumb_func_end CB2_NewGame - thumb_func_start c2_whiteout -c2_whiteout: @ 80566A4 + thumb_func_start CB2_WhiteOut +CB2_WhiteOut: @ 80566A4 push {lr} sub sp, 0x4 ldr r1, _08056708 @ =gMain @@ -3569,7 +3569,7 @@ _0805670C: .4byte gFieldCallback _08056710: .4byte sub_807F5F0 _08056714: .4byte sub_8056534 _08056718: .4byte sub_80565B4 - thumb_func_end c2_whiteout + thumb_func_end CB2_WhiteOut thumb_func_start CB2_LoadMap CB2_LoadMap: @ 805671C @@ -3944,7 +3944,7 @@ VBlankCB_Field: @ 8056A14 thumb_func_start sub_8056A34 sub_8056A34: @ 8056A34 push {lr} - bl sav1_get_flash_used_on_map + bl Overworld_GetFlashLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index 946d184e6..25befd61d 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15699,7 +15699,7 @@ sub_8126704: @ 8126704 cmp r4, 0 beq _08126754 bl sub_811F070 - ldr r0, _08126750 @ =gUnknown_300537C + ldr r0, _08126750 @ =gCB2_AfterEvolution ldr r1, [r6] str r1, [r0] ldrb r3, [r6, 0x9] @@ -15713,7 +15713,7 @@ sub_8126704: @ 8126704 .align 2, 0 _08126748: .4byte gUnknown_203B0A0 _0812674C: .4byte gPlayerParty -_08126750: .4byte gUnknown_300537C +_08126750: .4byte gCB2_AfterEvolution _08126754: ldr r0, _08126768 @ =gTasks lsls r1, r5, 2 @@ -16248,7 +16248,7 @@ _08126BCE: thumb_func_start sub_8126BD4 sub_8126BD4: @ 8126BD4 push {r4,r5,lr} - ldr r1, _08126C10 @ =gUnknown_300537C + ldr r1, _08126C10 @ =gCB2_AfterEvolution ldr r4, _08126C14 @ =gUnknown_203B0A0 ldr r0, [r4] str r0, [r1] @@ -16274,7 +16274,7 @@ sub_8126BD4: @ 8126BD4 pop {r0} bx r0 .align 2, 0 -_08126C10: .4byte gUnknown_300537C +_08126C10: .4byte gCB2_AfterEvolution _08126C14: .4byte gUnknown_203B0A0 _08126C18: .4byte gSpecialVar_ItemId _08126C1C: .4byte gPlayerParty diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index d9ef35bd4..4c090a2d9 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -4033,13 +4033,13 @@ _081366B8: adds r0, r1 movs r1, 0xD muls r1, r4 - ldr r2, _081367A0 @ =gUnknown_824FC40 + ldr r2, _081367A0 @ =gAbilityNames adds r1, r2 bl StringCopy ldr r0, [r6] ldr r2, _081367A4 @ =0x000031cc adds r0, r2 - ldr r1, _081367A8 @ =gUnknown_824FB08 + ldr r1, _081367A8 @ =gAbilityDescriptionPointers lsls r4, 2 adds r4, r1 ldr r1, [r4] @@ -4088,9 +4088,9 @@ _08136790: .4byte gExperienceTables _08136794: .4byte gBaseStats _08136798: .4byte 0x000031b0 _0813679C: .4byte 0x000031bc -_081367A0: .4byte gUnknown_824FC40 +_081367A0: .4byte gAbilityNames _081367A4: .4byte 0x000031cc -_081367A8: .4byte gUnknown_824FB08 +_081367A8: .4byte gAbilityDescriptionPointers _081367AC: .4byte 0x0000326c thumb_func_end sub_8136350 diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s index a96501d7b..be7554fd0 100644 --- a/asm/post_battle_event_funcs.s +++ b/asm/post_battle_event_funcs.s @@ -109,13 +109,13 @@ _080CA3C0: .4byte CB2_DoHallOfFameScreen thumb_func_start sp0C8_whiteout_maybe sp0C8_whiteout_maybe: @ 80CA3C4 push {lr} - ldr r0, _080CA3D4 @ =c2_whiteout + ldr r0, _080CA3D4 @ =CB2_WhiteOut bl SetMainCallback2 movs r0, 0 pop {r1} bx r1 .align 2, 0 -_080CA3D4: .4byte c2_whiteout +_080CA3D4: .4byte CB2_WhiteOut thumb_func_end sp0C8_whiteout_maybe .align 2, 0 @ Don't pad with nop. diff --git a/asm/trade.s b/asm/trade.s index 8dd3809f1..5467aec2f 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -422,7 +422,7 @@ _0804C9B0: ldrb r0, [r0] cmp r0, 0 beq _0804C9E8 - bl IsRfuTaskFinished + bl IsLinkRfuTaskFinished lsls r0, 24 cmp r0, 0 bne _0804C9C4 @@ -1832,7 +1832,7 @@ sub_804D5A4: @ 804D5A4 ldrb r0, [r0] cmp r0, 0 beq _0804D5FC - bl IsRfuTaskFinished + bl IsLinkRfuTaskFinished lsls r0, 24 cmp r0, 0 beq _0804D620 @@ -11052,7 +11052,7 @@ _0805223C: ldrb r0, [r0] movs r1, 0 bl sub_805080C - ldr r1, _08052284 @ =gUnknown_300537C + ldr r1, _08052284 @ =gCB2_AfterEvolution ldr r0, _08052288 @ =sub_8050948 str r0, [r1] ldr r7, _0805228C @ =gUnknown_2031DA4 @@ -11081,7 +11081,7 @@ _0805223C: b _080522A8 .align 2, 0 _08052280: .4byte gSpecialVar_0x8005 -_08052284: .4byte gUnknown_300537C +_08052284: .4byte gCB2_AfterEvolution _08052288: .4byte sub_8050948 _0805228C: .4byte gUnknown_2031DA4 _08052290: .4byte gPlayerParty @@ -13277,7 +13277,7 @@ _08053698: ldrb r0, [r0] movs r1, 0 bl sub_805080C - ldr r1, _080536E0 @ =gUnknown_300537C + ldr r1, _080536E0 @ =gCB2_AfterEvolution ldr r0, _080536E4 @ =sub_8050948 str r0, [r1] ldr r7, _080536E8 @ =gUnknown_2031DA4 @@ -13306,7 +13306,7 @@ _08053698: b _08053704 .align 2, 0 _080536DC: .4byte gSpecialVar_0x8005 -_080536E0: .4byte gUnknown_300537C +_080536E0: .4byte gCB2_AfterEvolution _080536E4: .4byte sub_8050948 _080536E8: .4byte gUnknown_2031DA4 _080536EC: .4byte gPlayerParty @@ -13404,7 +13404,7 @@ _080537A8: .align 2, 0 _080537B4: .4byte gSoftResetDisabled _080537B8: - ldr r0, _080537F4 @ =gUnknown_300537C + ldr r0, _080537F4 @ =gCB2_AfterEvolution ldr r1, _080537F8 @ =sub_8053E8C mov r8, r1 str r1, [r0] @@ -13433,7 +13433,7 @@ _080537B8: bl TradeEvolutionScene b _0805380E .align 2, 0 -_080537F4: .4byte gUnknown_300537C +_080537F4: .4byte gCB2_AfterEvolution _080537F8: .4byte sub_8053E8C _080537FC: .4byte gUnknown_2031DA4 _08053800: .4byte gPlayerParty @@ -14745,7 +14745,7 @@ _0805434C: ldr r0, _08054378 @ =sub_804C718 cmp r1, r0 bne _08054384 - bl IsRfuTaskFinished + bl IsLinkRfuTaskFinished lsls r0, 24 cmp r0, 0 beq _08054396 diff --git a/asm/trainer_see.s b/asm/trainer_see.s index c52229215..659e96c32 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -87,7 +87,7 @@ sub_8081B84: @ 8081B84 _08081BC0: adds r0, r5, 0 adds r1, r6, 0 - bl TrainerWantsBattle + bl ConfigureAndSetUpOneTrainerBattle adds r0, r4, r5 lsls r0, 2 ldr r1, _08081BE0 @ =gMapObjects @@ -718,16 +718,16 @@ _0808204A: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl npc_running_behaviour_by_direction + bl GetTrainerFacingDirectionMovementType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl npc_set_running_behaviour_etc + bl SetTrainerMovementType ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl npc_running_behaviour_by_direction + bl GetTrainerFacingDirectionMovementType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -1277,17 +1277,17 @@ _0808246E: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl npc_running_behaviour_by_direction + bl GetTrainerFacingDirectionMovementType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl npc_set_running_behaviour_etc + bl SetTrainerMovementType ldr r4, [sp] ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 - bl npc_running_behaviour_by_direction + bl GetTrainerFacingDirectionMovementType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index dedcfa761..86e3d964f 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -878,7 +878,7 @@ _08082D78: bl sub_8058F1C lsls r0, 24 lsrs r0, 24 - bl MetatileBehavior_ReturnFalse_6 + bl MetatileBehavior_IsBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -932,7 +932,7 @@ _08082DFA: lsls r0, 24 cmp r0, 0 beq _08082E46 - bl sub_807F78C + bl BattleSetup_StartRoamerBattle movs r0, 0x1 b _08082E48 .align 2, 0 @@ -950,7 +950,7 @@ _08082E24: cmp r0, 0x1 bne _08082E40 _08082E38: - bl sub_807F704 + bl BattleSetup_StartWildBattle movs r0, 0x1 b _08082E48 _08082E40: @@ -999,7 +999,7 @@ Special_RockSmashEncounter: @ 8082E54 lsrs r4, r0, 24 cmp r4, 0x1 bne _08082EB0 - bl sub_807F704 + bl BattleSetup_StartWildBattle _08082E9C: ldr r0, _08082EAC @ =gSpecialVar_Result strh r4, [r0] @@ -1079,7 +1079,7 @@ _08082F1C: cmp r0, 0x1 bne _08082F44 _08082F3C: - bl sub_807F78C + bl BattleSetup_StartRoamerBattle movs r0, 0x1 b _08082F6E _08082F44: @@ -1096,7 +1096,7 @@ _08082F44: _08082F58: movs r2, 0 bl sub_8082AEC - bl sub_807F704 + bl BattleSetup_StartWildBattle movs r0, 0x1 b _08082F6E .align 2, 0 @@ -1160,7 +1160,7 @@ sub_8082FB0: @ 8082FB0 bl sub_8082B64 movs r0, 0xC bl IncrementGameStat - bl sub_807F704 + bl BattleSetup_StartWildBattle pop {r4,r5} pop {r0} bx r0 diff --git a/common_syms/battle_main.txt b/common_syms/battle_main.txt new file mode 100644 index 000000000..36f7596e2 --- /dev/null +++ b/common_syms/battle_main.txt @@ -0,0 +1,9 @@ +gPreBattleCallback1 +gBattleMainFunc +gBattleResults +gLeveledUpInBattle +gBattlerControllerFuncs +gHealthboxSpriteIds +gMultiUsePlayerCursor +gNumberOfMovesToChoose +gUnknown_3004FFC diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0fd65d2e0..8c049f4e0 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -42,46 +42,46 @@ BattleScript_GiveExp:: @ 81D8694 BattleScript_HandleFaintedMon:: @ 81D869D .incbin "baserom.gba", 0x1D869D, 0x152 -gUnknown_81D87EF:: @ 81D87EF +BattleScript_LocalTrainerBattleWon:: @ 81D87EF .incbin "baserom.gba", 0x1D87EF, 0x14 -gUnknown_81D8803:: @ 81D8803 +BattleScript_PayDayMoneyAndPickUpItems:: @ 81D8803 .incbin "baserom.gba", 0x1D8803, 0x3 -gUnknown_81D8806:: @ 81D8806 +BattleScript_LocalBattleLost:: @ 81D8806 .incbin "baserom.gba", 0x1D8806, 0xC6 -gUnknown_81D88CC:: @ 81D88CC +BattleScript_LinkBattleWonOrLost:: @ 81D88CC .incbin "baserom.gba", 0x1D88CC, 0xB gUnknown_81D88D7:: @ 81D88D7 .incbin "baserom.gba", 0x1D88D7, 0x2A -gUnknown_81D8901:: @ 81D8901 +BattleScript_SmokeBallEscape:: @ 81D8901 .incbin "baserom.gba", 0x1D8901, 0xE -gUnknown_81D890F:: @ 81D890F +BattleScript_RanAwayUsingMonAbility:: @ 81D890F .incbin "baserom.gba", 0x1D890F, 0x7 -gUnknown_81D8916:: @ 81D8916 +BattleScript_GotAwaySafely:: @ 81D8916 .incbin "baserom.gba", 0x1D8916, 0x7 -gUnknown_81D891D:: @ 81D891D +BattleScript_WildMonFled:: @ 81D891D .incbin "baserom.gba", 0x1D891D, 0x7 -gUnknown_81D8924:: @ 81D8924 +BattleScript_PrintCantRunFromTrainer:: @ 81D8924 .incbin "baserom.gba", 0x1D8924, 0x16 -gUnknown_81D893A:: @ 81D893A +BattleScript_PrintFailedToRunString:: @ 81D893A .incbin "baserom.gba", 0x1D893A, 0x9 -gUnknown_81D8943:: @ 81D8943 +BattleScript_PrintCantEscapeFromBattle:: @ 81D8943 .incbin "baserom.gba", 0x1D8943, 0x6 -gUnknown_81D8949:: @ 81D8949 +BattleScript_PrintFullBox:: @ 81D8949 .incbin "baserom.gba", 0x1D8949, 0x4 -gUnknown_81D894D:: @ 81D894D +BattleScript_ActionSwitch:: @ 81D894D .incbin "baserom.gba", 0x1D894D, 0xA4 BattleScript_Pausex20:: @ 81D89F1 @@ -237,7 +237,7 @@ BattleScript_OneHitKOMsg:: @ 81D8FE4 BattleScript_SAtkDown2:: @ 81D8FEB .incbin "baserom.gba", 0x1D8FEB, 0x2A -gUnknown_81D9015:: @ 81D9015 +BattleScript_FocusPunchSetUp:: @ 81D9015 .incbin "baserom.gba", 0x1D9015, 0x14 BattleScript_MoveUsedIsAsleep:: @ 81D9029 @@ -549,7 +549,7 @@ BattleScript_BerryStatRaiseEnd2:: @ 81D9679 BattleScript_BerryFocusEnergyEnd2:: @ 81D9694 .incbin "baserom.gba", 0x1D9694, 0x10 -gUnknown_81D96A4:: @ 81D96A4 +BattleScript_ActionSelectionItemsCantBeUsed:: @ 81D96A4 .incbin "baserom.gba", 0x1D96A4, 0x4 BattleScript_FlushMessageBox:: @ 81D96A8 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index c3747cd8d..199fd0c78 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -1,15 +1,15 @@ .section script_data, "aw", %progbits -gUnknown_81D99B0:: @ 81D99B0 +gBattlescriptsForBallThrow:: @ 81D99B0 .incbin "baserom.gba", 0x1D99B0, 0x34 -gUnknown_81D99E4:: @ 81D99E4 +gBattlescriptsForUsingItem:: @ 81D99E4 .incbin "baserom.gba", 0x1D99E4, 0x18 -gUnknown_81D99FC:: @ 81D99FC +gBattlescriptsForRunningByItem:: @ 81D99FC .incbin "baserom.gba", 0x1D99FC, 0x8 -gUnknown_81D9A04:: @ 81D9A04 +gBattlescriptsForSafariActions:: @ 81D9A04 .incbin "baserom.gba", 0x1D9A04, 0x3E BattleScript_SuccessBallThrow:: @ 81D9A42 diff --git a/data/data.s b/data/data.s index 366d6bf46..72c9374b9 100644 --- a/data/data.s +++ b/data/data.s @@ -22,7 +22,7 @@ gUnknown_8248300:: @ 8248300 gUnknown_8248318:: @ 8248318 .incbin "baserom.gba", 0x248318, 0x8 -gUnknown_8248320:: @ 8248320 +gBattleBgTemplates:: @ 8248320 .incbin "baserom.gba", 0x248320, 0x10 gUnknown_8248330:: @ 8248330 @@ -33,73 +33,7 @@ gUnknown_824EE34:: @ 824EE34 gUnknown_824EFC4:: @ 824EFC4 .incbin "baserom.gba", 0x24EFC4, 0x20 - -gUnknown_824EFE4:: @ 824EFE4 - .incbin "baserom.gba", 0x24EFE4, 0xC - -gUnknown_824EFF0:: @ 824EFF0 - .incbin "baserom.gba", 0x24EFF0, 0x18 - -gUnknown_824F008:: @ 824F008 - .incbin "baserom.gba", 0x24F008, 0x8 - -gUnknown_824F010:: @ 824F010 - .incbin "baserom.gba", 0x24F010, 0x8 - -gUnknown_824F018:: @ 824F018 - .incbin "baserom.gba", 0x24F018, 0x8 - -gUnknown_824F020:: @ 824F020 - .incbin "baserom.gba", 0x24F020, 0x28 - -gUnknown_824F048:: @ 824F048 - .incbin "baserom.gba", 0x24F048, 0x8 - -gTypeEffectiveness:: @ 824F050 - .incbin "baserom.gba", 0x24F050, 0x150 - -gTypeNames:: @ 824F1A0 - .incbin "baserom.gba", 0x24F1A0, 0x80 - -gTrainerMoneyTable:: @ 824F220 - .incbin "baserom.gba", 0x24F220, 0x8E8 - -gUnknown_824FB08:: @ 824FB08 - .incbin "baserom.gba", 0x24FB08, 0x138 - -gUnknown_824FC40:: @ 824FC40 - .incbin "baserom.gba", 0x24FC40, 0x3F8 - -gUnknown_8250038:: @ 8250038 - .incbin "baserom.gba", 0x250038, 0x38 - -gUnknown_8250070:: @ 8250070 - .incbin "baserom.gba", 0x250070, 0x24 - -gStatusConditionString_PoisonJpn:: @ 8250094 - .incbin "baserom.gba", 0x250094, 0x8 - -gStatusConditionString_SleepJpn:: @ 825009C - .incbin "baserom.gba", 0x25009C, 0x8 - -gStatusConditionString_ParalysisJpn:: @ 82500A4 - .incbin "baserom.gba", 0x2500A4, 0x8 - -gStatusConditionString_BurnJpn:: @ 82500AC - .incbin "baserom.gba", 0x2500AC, 0x8 - -gStatusConditionString_IceJpn:: @ 82500B4 - .incbin "baserom.gba", 0x2500B4, 0x8 - -gStatusConditionString_ConfusionJpn:: @ 82500BC - .incbin "baserom.gba", 0x2500BC, 0x8 - -gStatusConditionString_LoveJpn:: @ 82500C4 - .incbin "baserom.gba", 0x2500C4, 0x8 - -gUnknown_82500CC:: @ 82500CC - .incbin "baserom.gba", 0x2500CC, 0x38 - + .section .rodata.8260270 gUnknown_8260270:: @ 8260270 diff --git a/data/data_835B488.s b/data/data_835B488.s index 61e8e3cfd..88c12b035 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -13,29 +13,7 @@ gUnknown_83C68E4:: @ 83C68E4 gUnknown_83C68EC:: @ 83C68EC .incbin "baserom.gba", 0x3C68EC, 0x4 -gUnknown_83C68F0:: @ 83C68F0 - .incbin "baserom.gba", 0x3C68F0, 0x8 - -gUnknown_83C68F8:: @ 83C68F8 - .incbin "baserom.gba", 0x3C68F8, 0x8 - -gUnknown_83C6900:: @ 83C6900 - .incbin "baserom.gba", 0x3C6900, 0x48 - -gUnknown_83C6948:: @ 83C6948 - .incbin "baserom.gba", 0x3C6948, 0x48 - -gUnknown_83C6990:: @ 83C6990 - .incbin "baserom.gba", 0x3C6990, 0x48 - -gUnknown_83C69D8:: @ 83C69D8 - .incbin "baserom.gba", 0x3C69D8, 0x48 - -gUnknown_83C6A20:: @ 83C6A20 - .incbin "baserom.gba", 0x3C6A20, 0x48 - -gUnknown_83C6A68:: @ 83C6A68 - .incbin "baserom.gba", 0x3C6A68, 0x48 + .section .rodata.83C6AB0 gUnknown_83C6AB0:: @ 83C6AB0 .incbin "baserom.gba", 0x3C6AB0, 0x8 diff --git a/data/data_83F5738.s b/data/data_83F5738.s index da25ada76..b7b09e748 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -344,8 +344,32 @@ gText_BattleSwitchWhich:: @ 83FE7A0 gUnknown_83FE80C:: @ 83FE80C .incbin "baserom.gba", 0x3FE80C, 0x10 -gUnknown_83FE81C:: @ 83FE81C - .incbin "baserom.gba", 0x3FE81C, 0x3D +gText_HighlightRed_Left:: @ 83FE81C + .string "{HIGHLIGHT RED}Left: $" + +gText_HighlightRed:: + .string "{HIGHLIGHT RED}$" + +gText_Sleep:: + .string "sleep$" + +gText_Poison:: + .string "poison$" + +gText_Burn:: + .string "burn$" + +gText_Paralysis:: + .string "paralysis$" + +gText_Ice:: + .string "ice$" + +gText_Confusion:: + .string "confusion$" + +gText_Love:: + .string "love$" gUnknown_83FE859:: @ 83FE859 .incbin "baserom.gba", 0x3FE859, 0x3 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 43fbd003f..67964b9b9 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -137,9 +137,6 @@ gUnknown_84020DA:: @ 84020DA gUnknown_84020E6:: @ 84020E6 .incbin "baserom.gba", 0x4020E6, 0x12 -gUnknown_84020F8:: @ 84020F8 - .incbin "baserom.gba", 0x4020F8, 0xE4 - .section .rodata.battle_anim_special gUnknown_840BF3C:: @ 840BF3C diff --git a/data/event_scripts.s b/data/event_scripts.s index 51ae70416..a3943d494 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -17,6 +17,7 @@ #include "constants/seagallop.h" #include "constants/game_stat.h" #include "constants/menu.h" +#include "constants/battle_setup.h" .include "asm/macros.inc" .include "asm/macros/event.inc" .set FALSE, 0 @@ -848,7 +849,7 @@ gUnknown_81A4EB4:: @ 81A4EB4 waitstate goto EventScript_1A4FC7 -gUnknown_81A4EC1:: @ 81A4EC1 +EventScript_TryDoNormalTrainerBattle:: @ 81A4EC1 lock faceplayer applymovement VAR_LAST_TALKED, Movement_1A4FC5 @@ -857,13 +858,13 @@ gUnknown_81A4EC1:: @ 81A4EC1 compare_var_to_value VAR_RESULT, 0 goto_if ne, EventScript_1A4EE8 special PlayTrainerEncounterMusic - special sub_8080398 + special SetUpTrainerMovement goto EventScript_1A4FC7 EventScript_1A4EE8:: @ 81A4EE8 ontrainerbattleend -gUnknown_81A4EE9:: @ 81A4EE9 +EventScript_TryDoDoubleTrainerBattle:: @ 81A4EE9 lock faceplayer call EventScript_1A4FBA @@ -874,7 +875,7 @@ gUnknown_81A4EE9:: @ 81A4EE9 compare_var_to_value VAR_RESULT, 0 goto_if ne, EventScript_1A4F19 special PlayTrainerEncounterMusic - special sub_8080398 + special SetUpTrainerMovement goto EventScript_1A4FC7 EventScript_1A4F19:: @ 81A4F19 @@ -887,7 +888,7 @@ EventScript_1A4F19:: @ 81A4F19 EventScript_1A4F20:: @ 81A4F20 ontrainerbattleend -gUnknown_81A4F21:: @ 81A4F21 +EventScript_DoTrainerBattle:: @ 81A4F21 applymovement VAR_LAST_TALKED, Movement_1A4FC5 waitmovement 0 special PlayTrainerEncounterMusic @@ -897,13 +898,13 @@ gUnknown_81A4F21:: @ 81A4F21 battlebegin ontrainerbattleend -gUnknown_81A4F3E:: @ 81A4F3E +EventScript_TryDoRematchBattle:: @ 81A4F3E call EventScript_1A4FBA specialvar VAR_RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare_var_to_value VAR_RESULT, 0 goto_if eq, EventScript_1A4F72 special PlayTrainerEncounterMusic - special sub_8080398 + special SetUpTrainerMovement special ScrSpecial_ShowTrainerIntroSpeech waitmessage waitbuttonpress @@ -918,7 +919,7 @@ gUnknown_81A4F3E:: @ 81A4F3E EventScript_1A4F72:: @ 81A4F72 ontrainerbattleend -gUnknown_81A4F73:: @ 81A4F73 +EventScript_TryDoDoubleRematchBattle:: @ 81A4F73 specialvar VAR_RESULT, ScrSpecial_GetTrainerEyeRematchFlag compare_var_to_value VAR_RESULT, 0 goto_if eq, EventScript_1A4FB0 @@ -926,7 +927,7 @@ gUnknown_81A4F73:: @ 81A4F73 compare_var_to_value VAR_RESULT, 0 goto_if ne, EventScript_1A4FB1 special PlayTrainerEncounterMusic - special sub_8080398 + special SetUpTrainerMovement special ScrSpecial_ShowTrainerIntroSpeech waitmessage waitbuttonpress @@ -989,7 +990,7 @@ EventScript_1A5019:: @ 81A5019 ontrainerbattleendgoto EventScript_1A501A:: @ 81A501A - special sub_80803FC + special SetBattledTrainerFlag releaseall end @@ -4526,7 +4527,7 @@ gUnknown_81A93C0:: @ 81A93C0 .braille "FOR YOU.$" Route3_EventScript_1A93C9:: @ 81A93C9 - trainerbattle 0, TRAINER_YOUNGSTER_BEN, 0, Text_183560, Text_1835A0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_BEN, 0, Text_183560, Text_1835A0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A93F0 @@ -4534,12 +4535,12 @@ Route3_EventScript_1A93C9:: @ 81A93C9 end EventScript_1A93F0:: @ 81A93F0 - trainerbattle 5, TRAINER_YOUNGSTER_BEN, 0, Text_1C149D, Text_1835A0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_BEN, 0, Text_1C149D, Text_1835A0 msgbox Text_1835B4, 6 end Route3_EventScript_1A9407:: @ 81A9407 - trainerbattle 0, TRAINER_YOUNGSTER_CALVIN, 0, Text_183786, Text_1837BD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_CALVIN, 0, Text_183786, Text_1837BD specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A942E @@ -4547,12 +4548,12 @@ Route3_EventScript_1A9407:: @ 81A9407 end EventScript_1A942E:: @ 81A942E - trainerbattle 5, TRAINER_YOUNGSTER_CALVIN, 0, Text_1C1588, Text_1837BD + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_CALVIN, 0, Text_1C1588, Text_1837BD msgbox Text_1837CF, 6 end Route3_EventScript_1A9445:: @ 81A9445 - trainerbattle 0, TRAINER_BUG_CATCHER_COLTON, 0, Text_1834E6, Text_183509 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_COLTON, 0, Text_1834E6, Text_183509 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A946C @@ -4560,12 +4561,12 @@ Route3_EventScript_1A9445:: @ 81A9445 end EventScript_1A946C:: @ 81A946C - trainerbattle 5, TRAINER_BUG_CATCHER_COLTON, 0, Text_1C147A, Text_183509 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_COLTON, 0, Text_1C147A, Text_183509 msgbox Text_18351C, 6 end Route3_EventScript_1A9483:: @ 81A9483 - trainerbattle 0, TRAINER_BUG_CATCHER_GREG, 0, Text_183682, Text_1836B3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_GREG, 0, Text_183682, Text_1836B3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A94AA @@ -4573,12 +4574,12 @@ Route3_EventScript_1A9483:: @ 81A9483 end EventScript_1A94AA:: @ 81A94AA - trainerbattle 5, TRAINER_BUG_CATCHER_GREG, 0, Text_1C1521, Text_1836B3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_GREG, 0, Text_1C1521, Text_1836B3 msgbox Text_1836D9, 6 end Route3_EventScript_1A94C1:: @ 81A94C1 - trainerbattle 0, TRAINER_BUG_CATCHER_JAMES, 0, Text_183807, Text_183837 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_JAMES, 0, Text_183807, Text_183837 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A94E8 @@ -4586,12 +4587,12 @@ Route3_EventScript_1A94C1:: @ 81A94C1 end EventScript_1A94E8:: @ 81A94E8 - trainerbattle 5, TRAINER_BUG_CATCHER_JAMES, 0, Text_1C15C5, Text_183837 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_JAMES, 0, Text_1C15C5, Text_183837 msgbox Text_183849, 6 end Route3_EventScript_1A94FF:: @ 81A94FF - trainerbattle 0, TRAINER_LASS_JANICE, 0, Text_183616, Text_18363F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_JANICE, 0, Text_183616, Text_18363F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9526 @@ -4599,12 +4600,12 @@ Route3_EventScript_1A94FF:: @ 81A94FF end EventScript_1A9526:: @ 81A9526 - trainerbattle 5, TRAINER_LASS_JANICE, 0, Text_1C14F3, Text_18363F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_JANICE, 0, Text_1C14F3, Text_18363F msgbox Text_18364C, 6 end Route3_EventScript_1A953D:: @ 81A953D - trainerbattle 0, TRAINER_LASS_SALLY, 0, Text_18371B, Text_183746 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_SALLY, 0, Text_18371B, Text_183746 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9564 @@ -4612,12 +4613,12 @@ Route3_EventScript_1A953D:: @ 81A953D end EventScript_1A9564:: @ 81A9564 - trainerbattle 5, TRAINER_LASS_SALLY, 0, Text_1C155D, Text_183746 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_SALLY, 0, Text_1C155D, Text_183746 msgbox Text_18374F, 6 end Route3_EventScript_1A957B:: @ 81A957B - trainerbattle 0, TRAINER_LASS_ROBIN, 0, Text_18387A, Text_183891 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_ROBIN, 0, Text_18387A, Text_183891 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A95A2 @@ -4625,12 +4626,12 @@ Route3_EventScript_1A957B:: @ 81A957B end EventScript_1A95A2:: @ 81A95A2 - trainerbattle 5, TRAINER_LASS_ROBIN, 0, Text_1C15F9, Text_183891 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_ROBIN, 0, Text_1C15F9, Text_183891 msgbox Text_18389C, 6 end Route4_EventScript_1A95B9:: @ 81A95B9 - trainerbattle 0, TRAINER_LASS_CRISSY, 0, Text_183906, Text_183938 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_CRISSY, 0, Text_183906, Text_183938 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A95E0 @@ -4638,12 +4639,12 @@ Route4_EventScript_1A95B9:: @ 81A95B9 end EventScript_1A95E0:: @ 81A95E0 - trainerbattle 5, TRAINER_LASS_CRISSY, 0, Text_1C160F, Text_183938 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_CRISSY, 0, Text_1C160F, Text_183938 msgbox Text_183957, 6 end Route24_EventScript_1A95F7:: @ 81A95F7 - trainerbattle 0, TRAINER_YOUNGSTER_TIMMY, 0, Text_188F76, Text_188F95 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_TIMMY, 0, Text_188F76, Text_188F95 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A961E @@ -4651,12 +4652,12 @@ Route24_EventScript_1A95F7:: @ 81A95F7 end EventScript_1A961E:: @ 81A961E - trainerbattle 5, TRAINER_YOUNGSTER_TIMMY, 0, Text_1C3657, Text_188F95 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_TIMMY, 0, Text_1C3657, Text_188F95 msgbox Text_188FA7, 6 end Route24_EventScript_1A9635:: @ 81A9635 - trainerbattle 0, TRAINER_BUG_CATCHER_CALE, 0, Text_18901B, Text_18908C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_CALE, 0, Text_18901B, Text_18908C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A965C @@ -4664,12 +4665,12 @@ Route24_EventScript_1A9635:: @ 81A9635 end EventScript_1A965C:: @ 81A965C - trainerbattle 5, TRAINER_BUG_CATCHER_CALE, 0, Text_1C36DA, Text_18908C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_CALE, 0, Text_1C36DA, Text_18908C msgbox Text_18909E, 6 end Route24_EventScript_1A9673:: @ 81A9673 - trainerbattle 0, TRAINER_LASS_RELI, 0, Text_188F2C, Text_188F46 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_RELI, 0, Text_188F2C, Text_188F46 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A969A @@ -4677,12 +4678,12 @@ Route24_EventScript_1A9673:: @ 81A9673 end EventScript_1A969A:: @ 81A969A - trainerbattle 5, TRAINER_LASS_RELI, 0, Text_1C3624, Text_188F46 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_RELI, 0, Text_1C3624, Text_188F46 msgbox Text_188F53, 6 end Route24_EventScript_1A96B1:: @ 81A96B1 - trainerbattle 0, TRAINER_LASS_ALI, 0, Text_188FC9, Text_188FE7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_ALI, 0, Text_188FC9, Text_188FE7 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A96D8 @@ -4690,12 +4691,12 @@ Route24_EventScript_1A96B1:: @ 81A96B1 end EventScript_1A96D8:: @ 81A96D8 - trainerbattle 5, TRAINER_LASS_ALI, 0, Text_1C3685, Text_188FE7 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_ALI, 0, Text_1C3685, Text_188FE7 msgbox Text_188FF9, 6 end Route24_EventScript_1A96EF:: @ 81A96EF - trainerbattle 0, TRAINER_CAMPER_SHANE, 0, Text_188E74, Text_188E94 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_SHANE, 0, Text_188E74, Text_188E94 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9716 @@ -4703,12 +4704,12 @@ Route24_EventScript_1A96EF:: @ 81A96EF end EventScript_1A9716:: @ 81A9716 - trainerbattle 5, TRAINER_CAMPER_SHANE, 0, Text_1C35EE, Text_188E94 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_SHANE, 0, Text_1C35EE, Text_188E94 msgbox Text_188EA3, 6 end Route24_EventScript_1A972D:: @ 81A972D - trainerbattle 0, TRAINER_CAMPER_ETHAN, 0, Text_188ED9, Text_188EFA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_ETHAN, 0, Text_188ED9, Text_188EFA specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9754 @@ -4716,12 +4717,12 @@ Route24_EventScript_1A972D:: @ 81A972D end EventScript_1A9754:: @ 81A9754 - trainerbattle 5, TRAINER_CAMPER_ETHAN, 0, Text_1C360E, Text_188EFA + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_ETHAN, 0, Text_1C360E, Text_188EFA msgbox Text_188F0A, 6 end Route25_EventScript_1A976B:: @ 81A976B - trainerbattle 0, TRAINER_YOUNGSTER_JOEY, 0, Text_1890C0, Text_1890E6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_JOEY, 0, Text_1890C0, Text_1890E6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9792 @@ -4729,12 +4730,12 @@ Route25_EventScript_1A976B:: @ 81A976B end EventScript_1A9792:: @ 81A9792 - trainerbattle 5, TRAINER_YOUNGSTER_JOEY, 0, Text_1C33E7, Text_1890E6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_JOEY, 0, Text_1C33E7, Text_1890E6 msgbox Text_1890F5, 6 end Route25_EventScript_1A97A9:: @ 81A97A9 - trainerbattle 0, TRAINER_YOUNGSTER_DAN, 0, Text_189165, Text_1891A6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_DAN, 0, Text_189165, Text_1891A6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A97D0 @@ -4742,12 +4743,12 @@ Route25_EventScript_1A97A9:: @ 81A97A9 end EventScript_1A97D0:: @ 81A97D0 - trainerbattle 5, TRAINER_YOUNGSTER_DAN, 0, Text_1C3404, Text_1891A6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_DAN, 0, Text_1C3404, Text_1891A6 msgbox Text_1891B3, 6 end Route25_EventScript_1A97E7:: @ 81A97E7 - trainerbattle 0, TRAINER_YOUNGSTER_CHAD, 0, Text_1892A9, Text_1892D9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_CHAD, 0, Text_1892A9, Text_1892D9 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A980E @@ -4755,12 +4756,12 @@ Route25_EventScript_1A97E7:: @ 81A97E7 end EventScript_1A980E:: @ 81A980E - trainerbattle 5, TRAINER_YOUNGSTER_CHAD, 0, Text_1C34D4, Text_1892D9 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_CHAD, 0, Text_1C34D4, Text_1892D9 msgbox Text_1892EF, 6 end Route25_EventScript_1A9825:: @ 81A9825 - trainerbattle 0, TRAINER_PICNICKER_KELSEY, 0, Text_189247, Text_189261 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_KELSEY, 0, Text_189247, Text_189261 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A984C @@ -4768,12 +4769,12 @@ Route25_EventScript_1A9825:: @ 81A9825 end EventScript_1A984C:: @ 81A984C - trainerbattle 5, TRAINER_PICNICKER_KELSEY, 0, Text_1C349C, Text_189261 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_KELSEY, 0, Text_1C349C, Text_189261 msgbox Text_189281, 6 end Route25_EventScript_1A9863:: @ 81A9863 - trainerbattle 0, TRAINER_LASS_HALEY, 0, Text_189333, Text_189364 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_HALEY, 0, Text_189333, Text_189364 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A988A @@ -4781,12 +4782,12 @@ Route25_EventScript_1A9863:: @ 81A9863 end EventScript_1A988A:: @ 81A988A - trainerbattle 5, TRAINER_LASS_HALEY, 0, Text_1C350A, Text_189364 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_HALEY, 0, Text_1C350A, Text_189364 msgbox Text_189378, 6 end Route25_EventScript_1A98A1:: @ 81A98A1 - trainerbattle 0, TRAINER_HIKER_FRANKLIN, 0, Text_1893A7, Text_1893EA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_FRANKLIN, 0, Text_1893A7, Text_1893EA specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A98C8 @@ -4794,12 +4795,12 @@ Route25_EventScript_1A98A1:: @ 81A98A1 end EventScript_1A98C8:: @ 81A98C8 - trainerbattle 5, TRAINER_HIKER_FRANKLIN, 0, Text_1C353B, Text_1893EA + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_FRANKLIN, 0, Text_1C353B, Text_1893EA msgbox Text_1893FB, 6 end Route25_EventScript_1A98DF:: @ 81A98DF - trainerbattle 0, TRAINER_HIKER_NOB, 0, Text_189423, Text_189459 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_NOB, 0, Text_189423, Text_189459 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9906 @@ -4807,12 +4808,12 @@ Route25_EventScript_1A98DF:: @ 81A98DF end EventScript_1A9906:: @ 81A9906 - trainerbattle 5, TRAINER_HIKER_NOB, 0, Text_1C357E, Text_189459 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_NOB, 0, Text_1C357E, Text_189459 msgbox Text_18947E, 6 end Route25_EventScript_1A991D:: @ 81A991D - trainerbattle 0, TRAINER_HIKER_WAYNE, 0, Text_1894DE, Text_18950A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_WAYNE, 0, Text_1894DE, Text_18950A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9944 @@ -4820,12 +4821,12 @@ Route25_EventScript_1A991D:: @ 81A991D end EventScript_1A9944:: @ 81A9944 - trainerbattle 5, TRAINER_HIKER_WAYNE, 0, Text_1C35BC, Text_18950A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_WAYNE, 0, Text_1C35BC, Text_18950A msgbox Text_18951C, 6 end Route25_EventScript_1A995B:: @ 81A995B - trainerbattle 0, TRAINER_CAMPER_FLINT, 0, Text_1891EB, Text_189212 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_FLINT, 0, Text_1891EB, Text_189212 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9982 @@ -4833,12 +4834,12 @@ Route25_EventScript_1A995B:: @ 81A995B end EventScript_1A9982:: @ 81A9982 - trainerbattle 5, TRAINER_CAMPER_FLINT, 0, Text_1C3445, Text_189212 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_FLINT, 0, Text_1C3445, Text_189212 msgbox Text_18921D, 6 end Route6_EventScript_1A9999:: @ 81A9999 - trainerbattle 0, TRAINER_BUG_CATCHER_KEIGO, 0, Text_183E9F, Text_183EC0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_KEIGO, 0, Text_183E9F, Text_183EC0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A99C0 @@ -4846,12 +4847,12 @@ Route6_EventScript_1A9999:: @ 81A9999 end EventScript_1A99C0:: @ 81A99C0 - trainerbattle 5, TRAINER_BUG_CATCHER_KEIGO, 0, Text_1C16E2, Text_183EC0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_KEIGO, 0, Text_1C16E2, Text_183EC0 msgbox Text_183ED4, 6 end Route6_EventScript_1A99D7:: @ 81A99D7 - trainerbattle 0, TRAINER_BUG_CATCHER_ELIJAH, 0, Text_183FF0, Text_18401A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_ELIJAH, 0, Text_183FF0, Text_18401A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A99FE @@ -4859,12 +4860,12 @@ Route6_EventScript_1A99D7:: @ 81A99D7 end EventScript_1A99FE:: @ 81A99FE - trainerbattle 5, TRAINER_BUG_CATCHER_ELIJAH, 0, Text_1C176B, Text_18401A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_ELIJAH, 0, Text_1C176B, Text_18401A msgbox Text_18402B, 6 end Route6_EventScript_1A9A15:: @ 81A9A15 - trainerbattle 0, TRAINER_CAMPER_RICKY, 0, Text_183E04, Text_183E2A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_RICKY, 0, Text_183E04, Text_183E2A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9A3C @@ -4872,12 +4873,12 @@ Route6_EventScript_1A9A15:: @ 81A9A15 end EventScript_1A9A3C:: @ 81A9A3C - trainerbattle 5, TRAINER_CAMPER_RICKY, 0, Text_1C163C, Text_183E2A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_RICKY, 0, Text_1C163C, Text_183E2A msgbox Text_183E3C, 6 end Route6_EventScript_1A9A53:: @ 81A9A53 - trainerbattle 0, TRAINER_CAMPER_JEFF, 0, Text_183F07, Text_183F24 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_JEFF, 0, Text_183F07, Text_183F24 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9A7A @@ -4885,12 +4886,12 @@ Route6_EventScript_1A9A53:: @ 81A9A53 end EventScript_1A9A7A:: @ 81A9A7A - trainerbattle 5, TRAINER_CAMPER_JEFF, 0, Text_1C1723, Text_183F24 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_JEFF, 0, Text_1C1723, Text_183F24 msgbox Text_183F51, 6 end Route6_EventScript_1A9A91:: @ 81A9A91 - trainerbattle 0, TRAINER_PICNICKER_NANCY, 0, Text_183E4E, Text_183E79 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_NANCY, 0, Text_183E4E, Text_183E79 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9AB8 @@ -4898,12 +4899,12 @@ Route6_EventScript_1A9A91:: @ 81A9A91 end EventScript_1A9AB8:: @ 81A9AB8 - trainerbattle 5, TRAINER_PICNICKER_NANCY, 0, Text_1C166D, Text_183E79 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_NANCY, 0, Text_1C166D, Text_183E79 msgbox Text_183E8D, 6 end Route6_EventScript_1A9ACF:: @ 81A9ACF - trainerbattle 0, TRAINER_PICNICKER_ISABELLE, 0, Text_183F90, Text_183FAB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_ISABELLE, 0, Text_183F90, Text_183FAB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9AF6 @@ -4911,12 +4912,12 @@ Route6_EventScript_1A9ACF:: @ 81A9ACF end EventScript_1A9AF6:: @ 81A9AF6 - trainerbattle 5, TRAINER_PICNICKER_ISABELLE, 0, Text_1C1746, Text_183FAB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_ISABELLE, 0, Text_1C1746, Text_183FAB msgbox Text_183FC4, 6 end Route11_EventScript_1A9B0D:: @ 81A9B0D - trainerbattle 0, TRAINER_YOUNGSTER_EDDIE, 0, Text_184FBD, Text_184FD8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_EDDIE, 0, Text_184FBD, Text_184FD8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9B34 @@ -4924,12 +4925,12 @@ Route11_EventScript_1A9B0D:: @ 81A9B0D end EventScript_1A9B34:: @ 81A9B34 - trainerbattle 5, TRAINER_YOUNGSTER_EDDIE, 0, Text_1C1DB5, Text_184FD8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_EDDIE, 0, Text_1C1DB5, Text_184FD8 msgbox Text_184FEF, 6 end Route11_EventScript_1A9B4B:: @ 81A9B4B - trainerbattle 0, TRAINER_YOUNGSTER_DILLON, 0, Text_18506A, Text_18509B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_DILLON, 0, Text_18506A, Text_18509B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9B72 @@ -4937,12 +4938,12 @@ Route11_EventScript_1A9B4B:: @ 81A9B4B end EventScript_1A9B72:: @ 81A9B72 - trainerbattle 5, TRAINER_YOUNGSTER_DILLON, 0, Text_1C1E1F, Text_18509B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_DILLON, 0, Text_1C1E1F, Text_18509B msgbox Text_1850CF, 6 end Route11_EventScript_1A9B89:: @ 81A9B89 - trainerbattle 0, TRAINER_YOUNGSTER_YASU, 0, Text_18517B, Text_1851AC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_YASU, 0, Text_18517B, Text_1851AC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9BB0 @@ -4950,12 +4951,12 @@ Route11_EventScript_1A9B89:: @ 81A9B89 end EventScript_1A9BB0:: @ 81A9BB0 - trainerbattle 5, TRAINER_YOUNGSTER_YASU, 0, Text_1C1EE2, Text_1851AC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_YASU, 0, Text_1C1EE2, Text_1851AC msgbox Text_1851D2, 6 end Route11_EventScript_1A9BC7:: @ 81A9BC7 - trainerbattle 0, TRAINER_YOUNGSTER_DAVE, 0, Text_185285, Text_1852C1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_DAVE, 0, Text_185285, Text_1852C1 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9BEE @@ -4963,12 +4964,12 @@ Route11_EventScript_1A9BC7:: @ 81A9BC7 end EventScript_1A9BEE:: @ 81A9BEE - trainerbattle 5, TRAINER_YOUNGSTER_DAVE, 0, Text_1C1F40, Text_1852C1 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_DAVE, 0, Text_1C1F40, Text_1852C1 msgbox Text_1852E3, 6 end Route11_EventScript_1A9C05:: @ 81A9C05 - trainerbattle 0, TRAINER_ENGINEER_BRAXTON, 0, Text_185011, Text_185037 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_ENGINEER_BRAXTON, 0, Text_185011, Text_185037 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9C2C @@ -4976,12 +4977,12 @@ Route11_EventScript_1A9C05:: @ 81A9C05 end EventScript_1A9C2C:: @ 81A9C2C - trainerbattle 5, TRAINER_ENGINEER_BRAXTON, 0, Text_1C1DE1, Text_185037 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_ENGINEER_BRAXTON, 0, Text_1C1DE1, Text_185037 msgbox Text_18504A, 6 end Route11_EventScript_1A9C43:: @ 81A9C43 - trainerbattle 0, TRAINER_ENGINEER_BERNIE, 0, Text_185236, Text_185250 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_ENGINEER_BERNIE, 0, Text_185236, Text_185250 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9C6A @@ -4989,12 +4990,12 @@ Route11_EventScript_1A9C43:: @ 81A9C43 end EventScript_1A9C6A:: @ 81A9C6A - trainerbattle 5, TRAINER_ENGINEER_BERNIE, 0, Text_1C1F1D, Text_185250 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_ENGINEER_BERNIE, 0, Text_1C1F1D, Text_185250 msgbox Text_185266, 6 end Route11_EventScript_1A9C81:: @ 81A9C81 - trainerbattle 0, TRAINER_GAMER_HUGO, 0, Text_184F01, Text_184F15 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_HUGO, 0, Text_184F01, Text_184F15 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9CA8 @@ -5002,12 +5003,12 @@ Route11_EventScript_1A9C81:: @ 81A9C81 end EventScript_1A9CA8:: @ 81A9CA8 - trainerbattle 5, TRAINER_GAMER_HUGO, 0, Text_1C1D50, Text_184F15 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_HUGO, 0, Text_1C1D50, Text_184F15 msgbox Text_184F2E, 6 end Route11_EventScript_1A9CBF:: @ 81A9CBF - trainerbattle 0, TRAINER_GAMER_JASPER, 0, Text_184F5D, Text_184F7E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_JASPER, 0, Text_184F5D, Text_184F7E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9CE6 @@ -5015,12 +5016,12 @@ Route11_EventScript_1A9CBF:: @ 81A9CBF end EventScript_1A9CE6:: @ 81A9CE6 - trainerbattle 5, TRAINER_GAMER_JASPER, 0, Text_1C1D79, Text_184F7E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_JASPER, 0, Text_1C1D79, Text_184F7E msgbox Text_184F8E, 6 end Route11_EventScript_1A9CFD:: @ 81A9CFD - trainerbattle 0, TRAINER_GAMER_DIRK, 0, Text_1850E9, Text_185105 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_DIRK, 0, Text_1850E9, Text_185105 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9D24 @@ -5028,12 +5029,12 @@ Route11_EventScript_1A9CFD:: @ 81A9CFD end EventScript_1A9D24:: @ 81A9D24 - trainerbattle 5, TRAINER_GAMER_DIRK, 0, Text_1C1E57, Text_185105 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_DIRK, 0, Text_1C1E57, Text_185105 msgbox Text_185114, 6 end Route11_EventScript_1A9D3B:: @ 81A9D3B - trainerbattle 0, TRAINER_GAMER_DARIAN, 0, Text_185135, Text_18514E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_DARIAN, 0, Text_185135, Text_18514E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9D62 @@ -5041,12 +5042,12 @@ Route11_EventScript_1A9D3B:: @ 81A9D3B end EventScript_1A9D62:: @ 81A9D62 - trainerbattle 5, TRAINER_GAMER_DARIAN, 0, Text_1C1E9F, Text_18514E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_DARIAN, 0, Text_1C1E9F, Text_18514E msgbox Text_185161, 6 end Route9_EventScript_1A9D79:: @ 81A9D79 - trainerbattle 0, TRAINER_BUG_CATCHER_BRENT, 0, Text_184A2F, Text_184A6A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_BRENT, 0, Text_184A2F, Text_184A6A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9DA0 @@ -5054,12 +5055,12 @@ Route9_EventScript_1A9D79:: @ 81A9D79 end EventScript_1A9DA0:: @ 81A9DA0 - trainerbattle 5, TRAINER_BUG_CATCHER_BRENT, 0, Text_1C1B83, Text_184A6A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_BRENT, 0, Text_1C1B83, Text_184A6A msgbox Text_184A8C, 6 end Route9_EventScript_1A9DB7:: @ 81A9DB7 - trainerbattle 0, TRAINER_BUG_CATCHER_CONNER, 0, Text_184B18, Text_184B32 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_CONNER, 0, Text_184B18, Text_184B32 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9DDE @@ -5067,12 +5068,12 @@ Route9_EventScript_1A9DB7:: @ 81A9DB7 end EventScript_1A9DDE:: @ 81A9DDE - trainerbattle 5, TRAINER_BUG_CATCHER_CONNER, 0, Text_1C1BDC, Text_184B32 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BUG_CATCHER_CONNER, 0, Text_1C1BDC, Text_184B32 msgbox Text_184B3B, 6 end Route9_EventScript_1A9DF5:: @ 81A9DF5 - trainerbattle 0, TRAINER_CAMPER_CHRIS, 0, Text_184844, Text_18487E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_CHRIS, 0, Text_184844, Text_18487E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9E1C @@ -5080,12 +5081,12 @@ Route9_EventScript_1A9DF5:: @ 81A9DF5 end EventScript_1A9E1C:: @ 81A9E1C - trainerbattle 5, TRAINER_CAMPER_CHRIS, 0, Text_1C1A5D, Text_18487E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_CHRIS, 0, Text_1C1A5D, Text_18487E msgbox Text_184890, 6 end Route9_EventScript_1A9E33:: @ 81A9E33 - trainerbattle 0, TRAINER_CAMPER_DREW, 0, Text_18489E, Text_1848CC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_DREW, 0, Text_18489E, Text_1848CC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9E5A @@ -5093,12 +5094,12 @@ Route9_EventScript_1A9E33:: @ 81A9E33 end EventScript_1A9E5A:: @ 81A9E5A - trainerbattle 5, TRAINER_CAMPER_DREW, 0, Text_1C1A9B, Text_1848CC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_DREW, 0, Text_1C1A9B, Text_1848CC msgbox Text_1848DE, 6 end Route9_EventScript_1A9E71:: @ 81A9E71 - trainerbattle 0, TRAINER_PICNICKER_ALICIA, 0, Text_1847B7, Text_1847DF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_ALICIA, 0, Text_1847B7, Text_1847DF specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9E98 @@ -5106,12 +5107,12 @@ Route9_EventScript_1A9E71:: @ 81A9E71 end EventScript_1A9E98:: @ 81A9E98 - trainerbattle 5, TRAINER_PICNICKER_ALICIA, 0, Text_1C1A2E, Text_1847DF + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_ALICIA, 0, Text_1C1A2E, Text_1847DF msgbox Text_1847F0, 6 end Route9_EventScript_1A9EAF:: @ 81A9EAF - trainerbattle 0, TRAINER_PICNICKER_CAITLIN, 0, Text_1848FF, Text_18491C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_CAITLIN, 0, Text_1848FF, Text_18491C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9ED6 @@ -5119,12 +5120,12 @@ Route9_EventScript_1A9EAF:: @ 81A9EAF end EventScript_1A9ED6:: @ 81A9ED6 - trainerbattle 5, TRAINER_PICNICKER_CAITLIN, 0, Text_1C1AFB, Text_18491C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_CAITLIN, 0, Text_1C1AFB, Text_18491C msgbox Text_184931, 6 end Route9_EventScript_1A9EED:: @ 81A9EED - trainerbattle 0, TRAINER_HIKER_ALAN, 0, Text_184ABE, Text_184AD5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_ALAN, 0, Text_184ABE, Text_184AD5 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9F14 @@ -5132,12 +5133,12 @@ Route9_EventScript_1A9EED:: @ 81A9EED end EventScript_1A9F14:: @ 81A9F14 - trainerbattle 5, TRAINER_HIKER_ALAN, 0, Text_1C1BBE, Text_184AD5 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_ALAN, 0, Text_1C1BBE, Text_184AD5 msgbox Text_184AF1, 6 end Route9_EventScript_1A9F2B:: @ 81A9F2B - trainerbattle 0, TRAINER_HIKER_BRICE, 0, Text_1849DF, Text_184A04 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_BRICE, 0, Text_1849DF, Text_184A04 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9F52 @@ -5145,12 +5146,12 @@ Route9_EventScript_1A9F2B:: @ 81A9F2B end EventScript_1A9F52:: @ 81A9F52 - trainerbattle 5, TRAINER_HIKER_BRICE, 0, Text_1C1B5E, Text_184A04 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_BRICE, 0, Text_1C1B5E, Text_184A04 msgbox Text_184A11, 6 end Route9_EventScript_1A9F69:: @ 81A9F69 - trainerbattle 0, TRAINER_HIKER_JEREMY, 0, Text_18495E, Text_18497F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_JEREMY, 0, Text_18495E, Text_18497F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9F90 @@ -5158,12 +5159,12 @@ Route9_EventScript_1A9F69:: @ 81A9F69 end EventScript_1A9F90:: @ 81A9F90 - trainerbattle 5, TRAINER_HIKER_JEREMY, 0, Text_1C1B37, Text_18497F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_JEREMY, 0, Text_1C1B37, Text_18497F msgbox Text_1849B0, 6 end Route10_EventScript_1A9FA7:: @ 81A9FA7 - trainerbattle 0, TRAINER_PICNICKER_HEIDI, 0, Text_184CF1, Text_184D31 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_HEIDI, 0, Text_184CF1, Text_184D31 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1A9FCE @@ -5171,12 +5172,12 @@ Route10_EventScript_1A9FA7:: @ 81A9FA7 end EventScript_1A9FCE:: @ 81A9FCE - trainerbattle 5, TRAINER_PICNICKER_HEIDI, 0, Text_1C1C9A, Text_184D31 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_HEIDI, 0, Text_1C1C9A, Text_184D31 msgbox Text_184D4D, 6 end Route10_EventScript_1A9FE5:: @ 81A9FE5 - trainerbattle 0, TRAINER_PICNICKER_CAROL, 0, Text_184E04, Text_184E3B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_CAROL, 0, Text_184E04, Text_184E3B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA00C @@ -5184,12 +5185,12 @@ Route10_EventScript_1A9FE5:: @ 81A9FE5 end EventScript_1AA00C:: @ 81AA00C - trainerbattle 5, TRAINER_PICNICKER_CAROL, 0, Text_1C1D14, Text_184E3B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_CAROL, 0, Text_1C1D14, Text_184E3B msgbox Text_184E5E, 6 end Route10_EventScript_1AA023:: @ 81AA023 - trainerbattle 0, TRAINER_POKEMANIAC_MARK, 0, Text_184B8A, Text_184BE5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_MARK, 0, Text_184B8A, Text_184BE5 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA04A @@ -5197,12 +5198,12 @@ Route10_EventScript_1AA023:: @ 81AA023 end EventScript_1AA04A:: @ 81AA04A - trainerbattle 5, TRAINER_POKEMANIAC_MARK, 0, Text_1C1BFA, Text_184BE5 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_POKEMANIAC_MARK, 0, Text_1C1BFA, Text_184BE5 msgbox Text_184BFB, 6 end Route10_EventScript_1AA061:: @ 81AA061 - trainerbattle 0, TRAINER_POKEMANIAC_HERMAN, 0, Text_184C86, Text_184CA7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_HERMAN, 0, Text_184C86, Text_184CA7 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA088 @@ -5210,12 +5211,12 @@ Route10_EventScript_1AA061:: @ 81AA061 end EventScript_1AA088:: @ 81AA088 - trainerbattle 5, TRAINER_POKEMANIAC_HERMAN, 0, Text_1C1C76, Text_184CA7 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_POKEMANIAC_HERMAN, 0, Text_1C1C76, Text_184CA7 msgbox Text_184CBB, 6 end Route10_EventScript_1AA09F:: @ 81AA09F - trainerbattle 0, TRAINER_HIKER_CLARK, 0, Text_184C1D, Text_184C2D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_CLARK, 0, Text_184C1D, Text_184C2D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA0C6 @@ -5223,12 +5224,12 @@ Route10_EventScript_1AA09F:: @ 81AA09F end EventScript_1AA0C6:: @ 81AA0C6 - trainerbattle 5, TRAINER_HIKER_CLARK, 0, Text_1C1C4F, Text_184C2D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_CLARK, 0, Text_1C1C4F, Text_184C2D msgbox Text_184C60, 6 end Route10_EventScript_1AA0DD:: @ 81AA0DD - trainerbattle 0, TRAINER_HIKER_TRENT, 0, Text_184DAA, Text_184DCE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_TRENT, 0, Text_184DAA, Text_184DCE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA104 @@ -5236,12 +5237,12 @@ Route10_EventScript_1AA0DD:: @ 81AA0DD end EventScript_1AA104:: @ 81AA104 - trainerbattle 5, TRAINER_HIKER_TRENT, 0, Text_1C1CD3, Text_184DCE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_TRENT, 0, Text_1C1CD3, Text_184DCE msgbox Text_184DE4, 6 end Route8_EventScript_1AA11B:: @ 81AA11B - trainerbattle 0, TRAINER_LASS_PAIGE, 0, Text_1841ED, Text_184210 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_PAIGE, 0, Text_1841ED, Text_184210 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA142 @@ -5249,12 +5250,12 @@ Route8_EventScript_1AA11B:: @ 81AA11B end EventScript_1AA142:: @ 81AA142 - trainerbattle 5, TRAINER_LASS_PAIGE, 0, Text_1C1834, Text_184210 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_PAIGE, 0, Text_1C1834, Text_184210 msgbox Text_18421B, 6 end Route8_EventScript_1AA159:: @ 81AA159 - trainerbattle 0, TRAINER_LASS_ANDREA, 0, Text_184321, Text_184346 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_ANDREA, 0, Text_184321, Text_184346 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA180 @@ -5262,12 +5263,12 @@ Route8_EventScript_1AA159:: @ 81AA159 end EventScript_1AA180:: @ 81AA180 - trainerbattle 5, TRAINER_LASS_ANDREA, 0, Text_1C18AA, Text_184346 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_ANDREA, 0, Text_1C18AA, Text_184346 msgbox Text_184350, 6 end Route8_EventScript_1AA197:: @ 81AA197 - trainerbattle 0, TRAINER_LASS_MEGAN, 0, Text_18437A, Text_1843A6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_MEGAN, 0, Text_18437A, Text_1843A6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA1BE @@ -5275,12 +5276,12 @@ Route8_EventScript_1AA197:: @ 81AA197 end EventScript_1AA1BE:: @ 81AA1BE - trainerbattle 5, TRAINER_LASS_MEGAN, 0, Text_1C18DC, Text_1843A6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_MEGAN, 0, Text_1C18DC, Text_1843A6 msgbox Text_1843D2, 6 end Route8_EventScript_1AA1D5:: @ 81AA1D5 - trainerbattle 0, TRAINER_LASS_JULIA, 0, Text_1844AC, Text_1844D6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_JULIA, 0, Text_1844AC, Text_1844D6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA1FC @@ -5288,12 +5289,12 @@ Route8_EventScript_1AA1D5:: @ 81AA1D5 end EventScript_1AA1FC:: @ 81AA1FC - trainerbattle 5, TRAINER_LASS_JULIA, 0, Text_1C1955, Text_1844D6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LASS_JULIA, 0, Text_1C1955, Text_1844D6 msgbox Text_1844FD, 6 end Route8_EventScript_1AA213:: @ 81AA213 - trainerbattle 0, TRAINER_SUPER_NERD_AIDAN, 0, Text_1840C5, Text_184100 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SUPER_NERD_AIDAN, 0, Text_1840C5, Text_184100 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA23A @@ -5301,12 +5302,12 @@ Route8_EventScript_1AA213:: @ 81AA213 end EventScript_1AA23A:: @ 81AA23A - trainerbattle 5, TRAINER_SUPER_NERD_AIDAN, 0, Text_1C1793, Text_184100 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SUPER_NERD_AIDAN, 0, Text_1C1793, Text_184100 msgbox Text_18410E, 6 end Route8_EventScript_1AA251:: @ 81AA251 - trainerbattle 0, TRAINER_SUPER_NERD_GLENN, 0, Text_18417C, Text_1841B6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SUPER_NERD_GLENN, 0, Text_18417C, Text_1841B6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA278 @@ -5314,12 +5315,12 @@ Route8_EventScript_1AA251:: @ 81AA251 end EventScript_1AA278:: @ 81AA278 - trainerbattle 5, TRAINER_SUPER_NERD_GLENN, 0, Text_1C17F1, Text_1841B6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SUPER_NERD_GLENN, 0, Text_1C17F1, Text_1841B6 msgbox Text_1841C8, 6 end Route8_EventScript_1AA28F:: @ 81AA28F - trainerbattle 0, TRAINER_SUPER_NERD_LESLIE, 0, Text_184257, Text_18427A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SUPER_NERD_LESLIE, 0, Text_184257, Text_18427A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA2B6 @@ -5327,12 +5328,12 @@ Route8_EventScript_1AA28F:: @ 81AA28F end EventScript_1AA2B6:: @ 81AA2B6 - trainerbattle 5, TRAINER_SUPER_NERD_LESLIE, 0, Text_1C1873, Text_18427A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SUPER_NERD_LESLIE, 0, Text_1C1873, Text_18427A msgbox Text_1842B3, 6 end Route8_EventScript_1AA2CD:: @ 81AA2CD - trainerbattle 0, TRAINER_GAMER_STAN, 0, Text_18412F, Text_18414D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_STAN, 0, Text_18412F, Text_18414D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA2F4 @@ -5340,12 +5341,12 @@ Route8_EventScript_1AA2CD:: @ 81AA2CD end EventScript_1AA2F4:: @ 81AA2F4 - trainerbattle 5, TRAINER_GAMER_STAN, 0, Text_1C17CD, Text_18414D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_STAN, 0, Text_1C17CD, Text_18414D msgbox Text_184162, 6 end Route8_EventScript_1AA30B:: @ 81AA30B - trainerbattle 0, TRAINER_GAMER_RICH, 0, Text_184432, Text_18444F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GAMER_RICH, 0, Text_184432, Text_18444F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA332 @@ -5353,12 +5354,12 @@ Route8_EventScript_1AA30B:: @ 81AA30B end EventScript_1AA332:: @ 81AA332 - trainerbattle 5, TRAINER_GAMER_RICH, 0, Text_1C191F, Text_18444F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GAMER_RICH, 0, Text_1C191F, Text_18444F msgbox Text_184466, 6 end Route8_EventScript_1AA349:: @ 81AA349 - trainerbattle 4, TRAINER_TWINS_ELI_ANNE, 0, Text_1845A4, Text_1845D0, Text_184616 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_ELI_ANNE, 0, Text_1845A4, Text_1845D0, Text_184616 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA374 @@ -5366,12 +5367,12 @@ Route8_EventScript_1AA349:: @ 81AA349 end EventScript_1AA374:: @ 81AA374 - trainerbattle 7, TRAINER_TWINS_ELI_ANNE, 0, Text_1C19E5, Text_1845D0, Text_184616 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_ELI_ANNE, 0, Text_1C19E5, Text_1845D0, Text_184616 msgbox Text_1845F2, 6 end Route8_EventScript_1AA38F:: @ 81AA38F - trainerbattle 4, TRAINER_TWINS_ELI_ANNE, 0, Text_18464A, Text_184675, Text_1846AF + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_ELI_ANNE, 0, Text_18464A, Text_184675, Text_1846AF specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA3BA @@ -5379,12 +5380,12 @@ Route8_EventScript_1AA38F:: @ 81AA38F end EventScript_1AA3BA:: @ 81AA3BA - trainerbattle 7, TRAINER_TWINS_ELI_ANNE, 0, Text_1C1A0D, Text_184675, Text_1846AF + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_ELI_ANNE, 0, Text_1C1A0D, Text_184675, Text_1846AF msgbox Text_18468B, 6 end Route8_EventScript_1AA3D5:: @ 81AA3D5 - trainerbattle 0, TRAINER_BIKER_RICARDO, 0, Text_1846E2, Text_1846FC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_RICARDO, 0, Text_1846E2, Text_1846FC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA3FC @@ -5392,12 +5393,12 @@ Route8_EventScript_1AA3D5:: @ 81AA3D5 end EventScript_1AA3FC:: @ 81AA3FC - trainerbattle 5, TRAINER_BIKER_RICARDO, 0, Text_1C199C, Text_1846FC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_RICARDO, 0, Text_1C199C, Text_1846FC msgbox Text_184719, 6 end Route8_EventScript_1AA413:: @ 81AA413 - trainerbattle 0, TRAINER_BIKER_JAREN, 0, Text_184742, Text_184767 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_JAREN, 0, Text_184742, Text_184767 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA43A @@ -5405,12 +5406,12 @@ Route8_EventScript_1AA413:: @ 81AA413 end EventScript_1AA43A:: @ 81AA43A - trainerbattle 5, TRAINER_BIKER_JAREN, 0, Text_1C19BC, Text_184767 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_JAREN, 0, Text_1C19BC, Text_184767 msgbox Text_18477A, 6 end Route12_EventScript_1AA451:: @ 81AA451 - trainerbattle 0, TRAINER_FISHERMAN_NED, 0, Text_185402, Text_18541B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_NED, 0, Text_185402, Text_18541B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA478 @@ -5418,12 +5419,12 @@ Route12_EventScript_1AA451:: @ 81AA451 end EventScript_1AA478:: @ 81AA478 - trainerbattle 5, TRAINER_FISHERMAN_NED, 0, Text_1C1F9D, Text_18541B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_NED, 0, Text_1C1F9D, Text_18541B msgbox Text_185432, 6 end Route12_EventScript_1AA48F:: @ 81AA48F - trainerbattle 0, TRAINER_FISHERMAN_CHIP, 0, Text_18544E, Text_185475 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_CHIP, 0, Text_18544E, Text_185475 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA4B6 @@ -5431,12 +5432,12 @@ Route12_EventScript_1AA48F:: @ 81AA48F end EventScript_1AA4B6:: @ 81AA4B6 - trainerbattle 5, TRAINER_FISHERMAN_CHIP, 0, Text_1C1FD8, Text_185475 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_CHIP, 0, Text_1C1FD8, Text_185475 msgbox Text_185488, 6 end Route12_EventScript_1AA4CD:: @ 81AA4CD - trainerbattle 0, TRAINER_FISHERMAN_HANK, 0, Text_1855E1, Text_185606 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_HANK, 0, Text_1855E1, Text_185606 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA4F4 @@ -5444,12 +5445,12 @@ Route12_EventScript_1AA4CD:: @ 81AA4CD end EventScript_1AA4F4:: @ 81AA4F4 - trainerbattle 5, TRAINER_FISHERMAN_HANK, 0, Text_1C209C, Text_185606 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_HANK, 0, Text_1C209C, Text_185606 msgbox Text_185616, 6 end Route12_EventScript_1AA50B:: @ 81AA50B - trainerbattle 0, TRAINER_FISHERMAN_ELLIOT, 0, Text_185682, Text_1856D0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_ELLIOT, 0, Text_185682, Text_1856D0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA532 @@ -5457,12 +5458,12 @@ Route12_EventScript_1AA50B:: @ 81AA50B end EventScript_1AA532:: @ 81AA532 - trainerbattle 5, TRAINER_FISHERMAN_ELLIOT, 0, Text_1C20D4, Text_1856D0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_ELLIOT, 0, Text_1C20D4, Text_1856D0 msgbox Text_1856DF, 6 end Route12_EventScript_1AA549:: @ 81AA549 - trainerbattle 0, TRAINER_FISHERMAN_ANDREW, 0, Text_18570E, Text_185744 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_ANDREW, 0, Text_18570E, Text_185744 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA570 @@ -5470,12 +5471,12 @@ Route12_EventScript_1AA549:: @ 81AA549 end EventScript_1AA570:: @ 81AA570 - trainerbattle 5, TRAINER_FISHERMAN_ANDREW, 0, Text_1C2134, Text_185744 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_ANDREW, 0, Text_1C2134, Text_185744 msgbox Text_18574D, 6 end Route12_EventScript_1AA587:: @ 81AA587 - trainerbattle 0, TRAINER_ROCKER_LUCA, 0, Text_185547, Text_18559B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_ROCKER_LUCA, 0, Text_185547, Text_18559B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA5AE @@ -5483,12 +5484,12 @@ Route12_EventScript_1AA587:: @ 81AA587 end EventScript_1AA5AE:: @ 81AA5AE - trainerbattle 5, TRAINER_ROCKER_LUCA, 0, Text_1C203B, Text_18559B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_ROCKER_LUCA, 0, Text_1C203B, Text_18559B msgbox Text_1855A6, 6 end Route12_EventScript_1AA5C5:: @ 81AA5C5 - trainerbattle 0, TRAINER_CAMPER_JUSTIN, 0, Text_1854B9, Text_1854ED + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_JUSTIN, 0, Text_1854B9, Text_1854ED specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA5EC @@ -5496,12 +5497,12 @@ Route12_EventScript_1AA5C5:: @ 81AA5C5 end EventScript_1AA5EC:: @ 81AA5EC - trainerbattle 5, TRAINER_CAMPER_JUSTIN, 0, Text_1C2008, Text_1854ED + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_JUSTIN, 0, Text_1C2008, Text_1854ED msgbox Text_1854F2, 6 end Route12_EventScript_1AA603:: @ 81AA603 - trainerbattle 4, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1857C5, Text_1857F1, Text_185842 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1857C5, Text_1857F1, Text_185842 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA62E @@ -5509,12 +5510,12 @@ Route12_EventScript_1AA603:: @ 81AA603 end EventScript_1AA62E:: @ 81AA62E - trainerbattle 7, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1C216B, Text_1857F1, Text_185842 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1C216B, Text_1857F1, Text_185842 msgbox Text_18581F, 6 end Route12_EventScript_1AA649:: @ 81AA649 - trainerbattle 4, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1858A6, Text_1858D0, Text_185908 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1858A6, Text_1858D0, Text_185908 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA674 @@ -5522,12 +5523,12 @@ Route12_EventScript_1AA649:: @ 81AA649 end EventScript_1AA674:: @ 81AA674 - trainerbattle 7, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1C219B, Text_1858D0, Text_185908 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_GIA_JES, 0, Text_1C219B, Text_1858D0, Text_185908 msgbox Text_1858E2, 6 end Route13_EventScript_1AA68F:: @ 81AA68F - trainerbattle 0, TRAINER_BIKER_JARED, 0, Text_185D05, Text_185D1D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_JARED, 0, Text_185D05, Text_185D1D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA6B6 @@ -5535,12 +5536,12 @@ Route13_EventScript_1AA68F:: @ 81AA68F end EventScript_1AA6B6:: @ 81AA6B6 - trainerbattle 5, TRAINER_BIKER_JARED, 0, Text_1C236B, Text_185D1D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_JARED, 0, Text_1C236B, Text_185D1D msgbox Text_185D33, 6 end Route13_EventScript_1AA6CD:: @ 81AA6CD - trainerbattle 0, TRAINER_BEAUTY_LOLA, 0, Text_185BFC, Text_185C1F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_LOLA, 0, Text_185BFC, Text_185C1F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA6F4 @@ -5548,12 +5549,12 @@ Route13_EventScript_1AA6CD:: @ 81AA6CD end EventScript_1AA6F4:: @ 81AA6F4 - trainerbattle 5, TRAINER_BEAUTY_LOLA, 0, Text_1C2306, Text_185C1F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BEAUTY_LOLA, 0, Text_1C2306, Text_185C1F msgbox Text_185C35, 6 end Route13_EventScript_1AA70B:: @ 81AA70B - trainerbattle 0, TRAINER_BEAUTY_SHEILA, 0, Text_185C69, Text_185C95 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_SHEILA, 0, Text_185C69, Text_185C95 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA732 @@ -5561,12 +5562,12 @@ Route13_EventScript_1AA70B:: @ 81AA70B end EventScript_1AA732:: @ 81AA732 - trainerbattle 5, TRAINER_BEAUTY_SHEILA, 0, Text_1C2340, Text_185C95 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BEAUTY_SHEILA, 0, Text_1C2340, Text_185C95 msgbox Text_185CA8, 6 end Route13_EventScript_1AA749:: @ 81AA749 - trainerbattle 0, TRAINER_BIRD_KEEPER_SEBASTIAN, 0, Text_185955, Text_18597E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_SEBASTIAN, 0, Text_185955, Text_18597E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA770 @@ -5574,12 +5575,12 @@ Route13_EventScript_1AA749:: @ 81AA749 end EventScript_1AA770:: @ 81AA770 - trainerbattle 5, TRAINER_BIRD_KEEPER_SEBASTIAN, 0, Text_1C21EE, Text_18597E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_SEBASTIAN, 0, Text_1C21EE, Text_18597E msgbox Text_1859A2, 6 end Route13_EventScript_1AA787:: @ 81AA787 - trainerbattle 0, TRAINER_BIRD_KEEPER_PERRY, 0, Text_185B8F, Text_185BCA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_PERRY, 0, Text_185B8F, Text_185BCA specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA7AE @@ -5587,12 +5588,12 @@ Route13_EventScript_1AA787:: @ 81AA787 end EventScript_1AA7AE:: @ 81AA7AE - trainerbattle 5, TRAINER_BIRD_KEEPER_PERRY, 0, Text_1C22CA, Text_185BCA + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_PERRY, 0, Text_1C22CA, Text_185BCA msgbox Text_185BDB, 6 end Route13_EventScript_1AA7C5:: @ 81AA7C5 - trainerbattle 0, TRAINER_BIRD_KEEPER_ROBERT, 0, Text_185D3D, Text_185D7B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_ROBERT, 0, Text_185D3D, Text_185D7B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA7EC @@ -5600,12 +5601,12 @@ Route13_EventScript_1AA7C5:: @ 81AA7C5 end EventScript_1AA7EC:: @ 81AA7EC - trainerbattle 5, TRAINER_BIRD_KEEPER_ROBERT, 0, Text_1C2383, Text_185D7B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_ROBERT, 0, Text_1C2383, Text_185D7B msgbox Text_185D89, 6 end Route13_EventScript_1AA803:: @ 81AA803 - trainerbattle 0, TRAINER_PICNICKER_ALMA, 0, Text_185B12, Text_185B48 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_ALMA, 0, Text_185B12, Text_185B48 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA82A @@ -5613,12 +5614,12 @@ Route13_EventScript_1AA803:: @ 81AA803 end EventScript_1AA82A:: @ 81AA82A - trainerbattle 5, TRAINER_PICNICKER_ALMA, 0, Text_1C2299, Text_185B48 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_ALMA, 0, Text_1C2299, Text_185B48 msgbox Text_185B67, 6 end Route13_EventScript_1AA841:: @ 81AA841 - trainerbattle 0, TRAINER_PICNICKER_SUSIE, 0, Text_1859CF, Text_1859EC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_SUSIE, 0, Text_1859CF, Text_1859EC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA868 @@ -5626,12 +5627,12 @@ Route13_EventScript_1AA841:: @ 81AA841 end EventScript_1AA868:: @ 81AA868 - trainerbattle 5, TRAINER_PICNICKER_SUSIE, 0, Text_1C220C, Text_1859EC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_SUSIE, 0, Text_1C220C, Text_1859EC msgbox Text_1859F9, 6 end Route13_EventScript_1AA87F:: @ 81AA87F - trainerbattle 0, TRAINER_PICNICKER_VALERIE, 0, Text_185A37, Text_185A56 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_VALERIE, 0, Text_185A37, Text_185A56 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA8A6 @@ -5639,12 +5640,12 @@ Route13_EventScript_1AA87F:: @ 81AA87F end EventScript_1AA8A6:: @ 81AA8A6 - trainerbattle 5, TRAINER_PICNICKER_VALERIE, 0, Text_1C223C, Text_185A56 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_VALERIE, 0, Text_1C223C, Text_185A56 msgbox Text_185A62, 6 end Route13_EventScript_1AA8BD:: @ 81AA8BD - trainerbattle 0, TRAINER_PICNICKER_GWEN, 0, Text_185A91, Text_185AC1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_GWEN, 0, Text_185A91, Text_185AC1 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA8E4 @@ -5652,12 +5653,12 @@ Route13_EventScript_1AA8BD:: @ 81AA8BD end EventScript_1AA8E4:: @ 81AA8E4 - trainerbattle 5, TRAINER_PICNICKER_GWEN, 0, Text_1C225B, Text_185AC1 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_GWEN, 0, Text_1C225B, Text_185AC1 msgbox Text_185ADE, 6 end Route14_EventScript_1AA8FB:: @ 81AA8FB - trainerbattle 0, TRAINER_BIKER_MALIK, 0, Text_186344, Text_186362 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_MALIK, 0, Text_186344, Text_186362 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA922 @@ -5665,12 +5666,12 @@ Route14_EventScript_1AA8FB:: @ 81AA8FB end EventScript_1AA922:: @ 81AA922 - trainerbattle 5, TRAINER_BIKER_MALIK, 0, Text_1C25D6, Text_186362 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_MALIK, 0, Text_1C25D6, Text_186362 msgbox Text_18636E, 6 end Route14_EventScript_1AA939:: @ 81AA939 - trainerbattle 0, TRAINER_BIKER_LUKAS, 0, Text_1861F7, Text_186223 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_LUKAS, 0, Text_1861F7, Text_186223 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA960 @@ -5678,12 +5679,12 @@ Route14_EventScript_1AA939:: @ 81AA939 end EventScript_1AA960:: @ 81AA960 - trainerbattle 5, TRAINER_BIKER_LUKAS, 0, Text_1C2531, Text_186223 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_LUKAS, 0, Text_1C2531, Text_186223 msgbox Text_186239, 6 end Route14_EventScript_1AA977:: @ 81AA977 - trainerbattle 0, TRAINER_BIKER_ISAAC, 0, Text_186263, Text_186291 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_ISAAC, 0, Text_186263, Text_186291 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA99E @@ -5691,12 +5692,12 @@ Route14_EventScript_1AA977:: @ 81AA977 end EventScript_1AA99E:: @ 81AA99E - trainerbattle 5, TRAINER_BIKER_ISAAC, 0, Text_1C2572, Text_186291 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_ISAAC, 0, Text_1C2572, Text_186291 msgbox Text_18629D, 6 end Route14_EventScript_1AA9B5:: @ 81AA9B5 - trainerbattle 0, TRAINER_BIKER_GERALD, 0, Text_1862BD, Text_1862EF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_GERALD, 0, Text_1862BD, Text_1862EF specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AA9DC @@ -5704,12 +5705,12 @@ Route14_EventScript_1AA9B5:: @ 81AA9B5 end EventScript_1AA9DC:: @ 81AA9DC - trainerbattle 5, TRAINER_BIKER_GERALD, 0, Text_1C259E, Text_1862EF + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_GERALD, 0, Text_1C259E, Text_1862EF msgbox Text_1862F8, 6 end Route14_EventScript_1AA9F3:: @ 81AA9F3 - trainerbattle 0, TRAINER_BIRD_KEEPER_DONALD, 0, Text_1860D9, Text_18610A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_DONALD, 0, Text_1860D9, Text_18610A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAA1A @@ -5717,12 +5718,12 @@ Route14_EventScript_1AA9F3:: @ 81AA9F3 end EventScript_1AAA1A:: @ 81AAA1A - trainerbattle 5, TRAINER_BIRD_KEEPER_DONALD, 0, Text_1C24CB, Text_18610A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_DONALD, 0, Text_1C24CB, Text_18610A msgbox Text_18611D, 6 end Route14_EventScript_1AAA31:: @ 81AAA31 - trainerbattle 0, TRAINER_BIRD_KEEPER_BENNY, 0, Text_18618E, Text_1861B3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_BENNY, 0, Text_18618E, Text_1861B3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAA58 @@ -5730,12 +5731,12 @@ Route14_EventScript_1AAA31:: @ 81AAA31 end EventScript_1AAA58:: @ 81AAA58 - trainerbattle 5, TRAINER_BIRD_KEEPER_BENNY, 0, Text_1C2505, Text_1861B3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_BENNY, 0, Text_1C2505, Text_1861B3 msgbox Text_1861BE, 6 end Route14_EventScript_1AAA6F:: @ 81AAA6F - trainerbattle 0, TRAINER_BIRD_KEEPER_CARTER, 0, Text_185E4D, Text_185E81 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_CARTER, 0, Text_185E4D, Text_185E81 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAA96 @@ -5743,12 +5744,12 @@ Route14_EventScript_1AAA6F:: @ 81AAA6F end EventScript_1AAA96:: @ 81AAA96 - trainerbattle 5, TRAINER_BIRD_KEEPER_CARTER, 0, Text_1C23C1, Text_185E81 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_CARTER, 0, Text_1C23C1, Text_185E81 msgbox Text_185E9C, 6 end Route14_EventScript_1AAAAD:: @ 81AAAAD - trainerbattle 0, TRAINER_BIRD_KEEPER_MITCH, 0, Text_185EDF, Text_185F0B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_MITCH, 0, Text_185EDF, Text_185F0B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAAD4 @@ -5756,12 +5757,12 @@ Route14_EventScript_1AAAAD:: @ 81AAAAD end EventScript_1AAAD4:: @ 81AAAD4 - trainerbattle 5, TRAINER_BIRD_KEEPER_MITCH, 0, Text_1C23EF, Text_185F0B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_MITCH, 0, Text_1C23EF, Text_185F0B msgbox Text_185F1A, 6 end Route14_EventScript_1AAAEB:: @ 81AAAEB - trainerbattle 0, TRAINER_BIRD_KEEPER_BECK, 0, Text_185F46, Text_185FAE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_BECK, 0, Text_185F46, Text_185FAE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAB12 @@ -5769,12 +5770,12 @@ Route14_EventScript_1AAAEB:: @ 81AAAEB end EventScript_1AAB12:: @ 81AAB12 - trainerbattle 5, TRAINER_BIRD_KEEPER_BECK, 0, Text_1C2425, Text_185FAE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_BECK, 0, Text_1C2425, Text_185FAE msgbox Text_185FBB, 6 end Route14_EventScript_1AAB29:: @ 81AAB29 - trainerbattle 0, TRAINER_BIRD_KEEPER_MARLON, 0, Text_186021, Text_18607C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_MARLON, 0, Text_186021, Text_18607C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAB50 @@ -5782,12 +5783,12 @@ Route14_EventScript_1AAB29:: @ 81AAB29 end EventScript_1AAB50:: @ 81AAB50 - trainerbattle 5, TRAINER_BIRD_KEEPER_MARLON, 0, Text_1C2461, Text_18607C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_MARLON, 0, Text_1C2461, Text_18607C msgbox Text_186091, 6 end Route14_EventScript_1AAB67:: @ 81AAB67 - trainerbattle 4, TRAINER_TWINS_KIRI_JAN, 0, Text_1863B7, Text_1863EA, Text_18642E + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_KIRI_JAN, 0, Text_1863B7, Text_1863EA, Text_18642E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAB92 @@ -5795,12 +5796,12 @@ Route14_EventScript_1AAB67:: @ 81AAB67 end EventScript_1AAB92:: @ 81AAB92 - trainerbattle 7, TRAINER_TWINS_KIRI_JAN, 0, Text_1C25FB, Text_1863EA, Text_18642E + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_KIRI_JAN, 0, Text_1C25FB, Text_1863EA, Text_18642E msgbox Text_18640D, 6 end Route14_EventScript_1AABAD:: @ 81AABAD - trainerbattle 4, TRAINER_TWINS_KIRI_JAN, 0, Text_18645B, Text_186487, Text_1864D3 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_KIRI_JAN, 0, Text_18645B, Text_186487, Text_1864D3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AABD8 @@ -5808,12 +5809,12 @@ Route14_EventScript_1AABAD:: @ 81AABAD end EventScript_1AABD8:: @ 81AABD8 - trainerbattle 7, TRAINER_TWINS_KIRI_JAN, 0, Text_1C261B, Text_186487, Text_1864D3 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_KIRI_JAN, 0, Text_1C261B, Text_186487, Text_1864D3 msgbox Text_18649C, 6 end Route15_EventScript_1AABF3:: @ 81AABF3 - trainerbattle 0, TRAINER_BIKER_ERNEST, 0, Text_1868B6, Text_1868E8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_ERNEST, 0, Text_1868B6, Text_1868E8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAC1A @@ -5821,12 +5822,12 @@ Route15_EventScript_1AABF3:: @ 81AABF3 end EventScript_1AAC1A:: @ 81AAC1A - trainerbattle 5, TRAINER_BIKER_ERNEST, 0, Text_1C27E7, Text_1868E8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_ERNEST, 0, Text_1C27E7, Text_1868E8 msgbox Text_1868F1, 6 end Route15_EventScript_1AAC31:: @ 81AAC31 - trainerbattle 0, TRAINER_BIKER_ALEX, 0, Text_186936, Text_186968 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_ALEX, 0, Text_186936, Text_186968 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAC58 @@ -5834,12 +5835,12 @@ Route15_EventScript_1AAC31:: @ 81AAC31 end EventScript_1AAC58:: @ 81AAC58 - trainerbattle 5, TRAINER_BIKER_ALEX, 0, Text_1C2814, Text_186968 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_ALEX, 0, Text_1C2814, Text_186968 msgbox Text_18697C, 6 end Route15_EventScript_1AAC6F:: @ 81AAC6F - trainerbattle 0, TRAINER_BEAUTY_GRACE, 0, Text_18678B, Text_1867C1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_GRACE, 0, Text_18678B, Text_1867C1 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAC96 @@ -5847,12 +5848,12 @@ Route15_EventScript_1AAC6F:: @ 81AAC6F end EventScript_1AAC96:: @ 81AAC96 - trainerbattle 5, TRAINER_BEAUTY_GRACE, 0, Text_1C2753, Text_1867C1 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BEAUTY_GRACE, 0, Text_1C2753, Text_1867C1 msgbox Text_1867DA, 6 end Route15_EventScript_1AACAD:: @ 81AACAD - trainerbattle 0, TRAINER_BEAUTY_OLIVIA, 0, Text_18680C, Text_186841 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_OLIVIA, 0, Text_18680C, Text_186841 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AACD4 @@ -5860,12 +5861,12 @@ Route15_EventScript_1AACAD:: @ 81AACAD end EventScript_1AACD4:: @ 81AACD4 - trainerbattle 5, TRAINER_BEAUTY_OLIVIA, 0, Text_1C279D, Text_186841 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BEAUTY_OLIVIA, 0, Text_1C279D, Text_186841 msgbox Text_18686F, 6 end Route15_EventScript_1AACEB:: @ 81AACEB - trainerbattle 0, TRAINER_BIRD_KEEPER_EDWIN, 0, Text_18664F, Text_18667A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_EDWIN, 0, Text_18664F, Text_18667A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAD12 @@ -5873,12 +5874,12 @@ Route15_EventScript_1AACEB:: @ 81AACEB end EventScript_1AAD12:: @ 81AAD12 - trainerbattle 5, TRAINER_BIRD_KEEPER_EDWIN, 0, Text_1C26D3, Text_18667A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_EDWIN, 0, Text_1C26D3, Text_18667A msgbox Text_18668D, 6 end Route15_EventScript_1AAD29:: @ 81AAD29 - trainerbattle 0, TRAINER_BIRD_KEEPER_CHESTER, 0, Text_1866D1, Text_186707 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_CHESTER, 0, Text_1866D1, Text_186707 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAD50 @@ -5886,12 +5887,12 @@ Route15_EventScript_1AAD29:: @ 81AAD29 end EventScript_1AAD50:: @ 81AAD50 - trainerbattle 5, TRAINER_BIRD_KEEPER_CHESTER, 0, Text_1C2717, Text_186707 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_CHESTER, 0, Text_1C2717, Text_186707 msgbox Text_18671A, 6 end Route15_EventScript_1AAD67:: @ 81AAD67 - trainerbattle 0, TRAINER_PICNICKER_YAZMIN, 0, Text_186A22, Text_186A40 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_YAZMIN, 0, Text_186A22, Text_186A40 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAD8E @@ -5899,12 +5900,12 @@ Route15_EventScript_1AAD67:: @ 81AAD67 end EventScript_1AAD8E:: @ 81AAD8E - trainerbattle 5, TRAINER_PICNICKER_YAZMIN, 0, Text_1C287D, Text_186A40 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_YAZMIN, 0, Text_1C287D, Text_186A40 msgbox Text_186A55, 6 end Route15_EventScript_1AADA5:: @ 81AADA5 - trainerbattle 0, TRAINER_PICNICKER_KINDRA, 0, Text_18650B, Text_186549 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_KINDRA, 0, Text_18650B, Text_186549 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AADCC @@ -5912,12 +5913,12 @@ Route15_EventScript_1AADA5:: @ 81AADA5 end EventScript_1AADCC:: @ 81AADCC - trainerbattle 5, TRAINER_PICNICKER_KINDRA, 0, Text_1C2650, Text_186549 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_KINDRA, 0, Text_1C2650, Text_186549 msgbox Text_18655A, 6 end Route15_EventScript_1AADE3:: @ 81AADE3 - trainerbattle 0, TRAINER_PICNICKER_BECKY, 0, Text_1865D3, Text_186612 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_BECKY, 0, Text_1865D3, Text_186612 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAE0A @@ -5925,12 +5926,12 @@ Route15_EventScript_1AADE3:: @ 81AADE3 end EventScript_1AAE0A:: @ 81AAE0A - trainerbattle 5, TRAINER_PICNICKER_BECKY, 0, Text_1C268D, Text_186612 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_BECKY, 0, Text_1C268D, Text_186612 msgbox Text_18661D, 6 end Route15_EventScript_1AAE21:: @ 81AAE21 - trainerbattle 0, TRAINER_PICNICKER_CELIA, 0, Text_1869BA, Text_1869E6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_CELIA, 0, Text_1869BA, Text_1869E6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAE48 @@ -5938,12 +5939,12 @@ Route15_EventScript_1AAE21:: @ 81AAE21 end EventScript_1AAE48:: @ 81AAE48 - trainerbattle 5, TRAINER_PICNICKER_CELIA, 0, Text_1C2846, Text_1869E6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_CELIA, 0, Text_1C2846, Text_1869E6 msgbox Text_1869F4, 6 end Route15_EventScript_1AAE5F:: @ 81AAE5F - trainerbattle 4, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_186A95, Text_186ACB, Text_186B46 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_186A95, Text_186ACB, Text_186B46 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAE8A @@ -5951,12 +5952,12 @@ Route15_EventScript_1AAE5F:: @ 81AAE5F end EventScript_1AAE8A:: @ 81AAE8A - trainerbattle 7, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_1C28A1, Text_186ACB, Text_186B46 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_1C28A1, Text_186ACB, Text_186B46 msgbox Text_186B0A, 6 end Route15_EventScript_1AAEA5:: @ 81AAEA5 - trainerbattle 4, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_186B89, Text_186BB1, Text_186BFE + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_186B89, Text_186BB1, Text_186BFE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAED0 @@ -5964,12 +5965,12 @@ Route15_EventScript_1AAEA5:: @ 81AAEA5 end EventScript_1AAED0:: @ 81AAED0 - trainerbattle 7, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_1C28EC, Text_186BB1, Text_186BFE + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_CRUSH_KIN_RON_MYA, 0, Text_1C28EC, Text_186BB1, Text_186BFE msgbox Text_186BD2, 6 end Route16_EventScript_1AAEEB:: @ 81AAEEB - trainerbattle 0, TRAINER_BIKER_LAO, 0, Text_186C4D, Text_186C5F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_LAO, 0, Text_186C4D, Text_186C5F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAF12 @@ -5977,12 +5978,12 @@ Route16_EventScript_1AAEEB:: @ 81AAEEB end EventScript_1AAF12:: @ 81AAF12 - trainerbattle 5, TRAINER_BIKER_LAO, 0, Text_1C2913, Text_186C5F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_LAO, 0, Text_1C2913, Text_186C5F msgbox Text_186C75, 6 end Route16_EventScript_1AAF29:: @ 81AAF29 - trainerbattle 0, TRAINER_BIKER_HIDEO, 0, Text_186D39, Text_186D52 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_HIDEO, 0, Text_186D39, Text_186D52 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAF50 @@ -5990,12 +5991,12 @@ Route16_EventScript_1AAF29:: @ 81AAF29 end EventScript_1AAF50:: @ 81AAF50 - trainerbattle 5, TRAINER_BIKER_HIDEO, 0, Text_1C297B, Text_186D52 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_HIDEO, 0, Text_1C297B, Text_186D52 msgbox Text_186D5A, 6 end Route16_EventScript_1AAF67:: @ 81AAF67 - trainerbattle 0, TRAINER_BIKER_RUBEN, 0, Text_186E86, Text_186EB4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_RUBEN, 0, Text_186E86, Text_186EB4 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAF8E @@ -6003,12 +6004,12 @@ Route16_EventScript_1AAF67:: @ 81AAF67 end EventScript_1AAF8E:: @ 81AAF8E - trainerbattle 5, TRAINER_BIKER_RUBEN, 0, Text_1C29EB, Text_186EB4 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_RUBEN, 0, Text_1C29EB, Text_186EB4 msgbox Text_186EC7, 6 end Route16_EventScript_1AAFA5:: @ 81AAFA5 - trainerbattle 0, TRAINER_CUE_BALL_KOJI, 0, Text_186CA2, Text_186CBB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_KOJI, 0, Text_186CA2, Text_186CBB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AAFCC @@ -6016,12 +6017,12 @@ Route16_EventScript_1AAFA5:: @ 81AAFA5 end EventScript_1AAFCC:: @ 81AAFCC - trainerbattle 5, TRAINER_CUE_BALL_KOJI, 0, Text_1C2925, Text_186CBB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_KOJI, 0, Text_1C2925, Text_186CBB msgbox Text_186CC5, 6 end Route16_EventScript_1AAFE3:: @ 81AAFE3 - trainerbattle 0, TRAINER_CUE_BALL_LUKE, 0, Text_186CE5, Text_186D06 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_LUKE, 0, Text_186CE5, Text_186D06 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB00A @@ -6029,12 +6030,12 @@ Route16_EventScript_1AAFE3:: @ 81AAFE3 end EventScript_1AB00A:: @ 81AB00A - trainerbattle 5, TRAINER_CUE_BALL_LUKE, 0, Text_1C2944, Text_186D06 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_LUKE, 0, Text_1C2944, Text_186D06 msgbox Text_186D16, 6 end Route16_EventScript_1AB021:: @ 81AB021 - trainerbattle 0, TRAINER_CUE_BALL_CAMRON, 0, Text_186DD9, Text_186E0D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_CAMRON, 0, Text_186DD9, Text_186E0D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB048 @@ -6042,12 +6043,12 @@ Route16_EventScript_1AB021:: @ 81AB021 end EventScript_1AB048:: @ 81AB048 - trainerbattle 5, TRAINER_CUE_BALL_CAMRON, 0, Text_1C29B0, Text_186E0D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_CAMRON, 0, Text_1C29B0, Text_186E0D msgbox Text_186E1C, 6 end Route16_EventScript_1AB05F:: @ 81AB05F - trainerbattle 4, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_186FBD, Text_186FFA, Text_187057 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_186FBD, Text_186FFA, Text_187057 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB08A @@ -6055,12 +6056,12 @@ Route16_EventScript_1AB05F:: @ 81AB05F end EventScript_1AB08A:: @ 81AB08A - trainerbattle 7, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_1C2A19, Text_186FFA, Text_187057 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_1C2A19, Text_186FFA, Text_187057 msgbox Text_187027, 6 end Route16_EventScript_1AB0A5:: @ 81AB0A5 - trainerbattle 4, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_187097, Text_1870CC, Text_187120 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_187097, Text_1870CC, Text_187120 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB0D0 @@ -6068,12 +6069,12 @@ Route16_EventScript_1AB0A5:: @ 81AB0A5 end EventScript_1AB0D0:: @ 81AB0D0 - trainerbattle 7, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_1C2A53, Text_1870CC, Text_187120 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_LEA_JED, 0, Text_1C2A53, Text_1870CC, Text_187120 msgbox Text_1870F9, 6 end Route17_EventScript_1AB0EB:: @ 81AB0EB - trainerbattle 0, TRAINER_BIKER_BILLY, 0, Text_1872BD, Text_1872E3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_BILLY, 0, Text_1872BD, Text_1872E3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB112 @@ -6081,12 +6082,12 @@ Route17_EventScript_1AB0EB:: @ 81AB0EB end EventScript_1AB112:: @ 81AB112 - trainerbattle 5, TRAINER_BIKER_BILLY, 0, Text_1C2B06, Text_1872E3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_BILLY, 0, Text_1C2B06, Text_1872E3 msgbox Text_1872EB, 6 end Route17_EventScript_1AB129:: @ 81AB129 - trainerbattle 0, TRAINER_BIKER_NIKOLAS, 0, Text_18730A, Text_187325 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_NIKOLAS, 0, Text_18730A, Text_187325 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB150 @@ -6094,12 +6095,12 @@ Route17_EventScript_1AB129:: @ 81AB129 end EventScript_1AB150:: @ 81AB150 - trainerbattle 5, TRAINER_BIKER_NIKOLAS, 0, Text_1C2B2C, Text_187325 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_NIKOLAS, 0, Text_1C2B2C, Text_187325 msgbox Text_187333, 6 end Route17_EventScript_1AB167:: @ 81AB167 - trainerbattle 0, TRAINER_BIKER_JAXON, 0, Text_187456, Text_187472 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_JAXON, 0, Text_187456, Text_187472 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB18E @@ -6107,12 +6108,12 @@ Route17_EventScript_1AB167:: @ 81AB167 end EventScript_1AB18E:: @ 81AB18E - trainerbattle 5, TRAINER_BIKER_JAXON, 0, Text_1C2BE6, Text_187472 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_JAXON, 0, Text_1C2BE6, Text_187472 msgbox Text_187479, 6 end Route17_EventScript_1AB1A5:: @ 81AB1A5 - trainerbattle 0, TRAINER_BIKER_WILLIAM, 0, Text_18749B, Text_1874B6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_WILLIAM, 0, Text_18749B, Text_1874B6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB1CC @@ -6120,12 +6121,12 @@ Route17_EventScript_1AB1A5:: @ 81AB1A5 end EventScript_1AB1CC:: @ 81AB1CC - trainerbattle 5, TRAINER_BIKER_WILLIAM, 0, Text_1C2C10, Text_1874B6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_WILLIAM, 0, Text_1C2C10, Text_1874B6 msgbox Text_1874C9, 6 end Route17_EventScript_1AB1E3:: @ 81AB1E3 - trainerbattle 0, TRAINER_CUE_BALL_RAUL, 0, Text_18717E, Text_1871AE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_RAUL, 0, Text_18717E, Text_1871AE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB20A @@ -6133,12 +6134,12 @@ Route17_EventScript_1AB1E3:: @ 81AB1E3 end EventScript_1AB20A:: @ 81AB20A - trainerbattle 5, TRAINER_CUE_BALL_RAUL, 0, Text_1C2A88, Text_1871AE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_RAUL, 0, Text_1C2A88, Text_1871AE msgbox Text_1871BA, 6 end Route17_EventScript_1AB221:: @ 81AB221 - trainerbattle 0, TRAINER_CUE_BALL_ISAIAH, 0, Text_187228, Text_187254 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_ISAIAH, 0, Text_187228, Text_187254 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB248 @@ -6146,12 +6147,12 @@ Route17_EventScript_1AB221:: @ 81AB221 end EventScript_1AB248:: @ 81AB248 - trainerbattle 5, TRAINER_CUE_BALL_ISAIAH, 0, Text_1C2AC4, Text_187254 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_ISAIAH, 0, Text_1C2AC4, Text_187254 msgbox Text_18725A, 6 end Route17_EventScript_1AB25F:: @ 81AB25F - trainerbattle 0, TRAINER_CUE_BALL_ZEEK, 0, Text_187362, Text_187395 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_ZEEK, 0, Text_187362, Text_187395 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB286 @@ -6159,12 +6160,12 @@ Route17_EventScript_1AB25F:: @ 81AB25F end EventScript_1AB286:: @ 81AB286 - trainerbattle 5, TRAINER_CUE_BALL_ZEEK, 0, Text_1C2B5E, Text_187395 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_ZEEK, 0, Text_1C2B5E, Text_187395 msgbox Text_18739F, 6 end Route17_EventScript_1AB29D:: @ 81AB29D - trainerbattle 0, TRAINER_CUE_BALL_JAMAL, 0, Text_1873D1, Text_1873EB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_JAMAL, 0, Text_1873D1, Text_1873EB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB2C4 @@ -6172,12 +6173,12 @@ Route17_EventScript_1AB29D:: @ 81AB29D end EventScript_1AB2C4:: @ 81AB2C4 - trainerbattle 5, TRAINER_CUE_BALL_JAMAL, 0, Text_1C2B9C, Text_1873EB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_JAMAL, 0, Text_1C2B9C, Text_1873EB msgbox Text_1873FF, 6 end Route17_EventScript_1AB2DB:: @ 81AB2DB - trainerbattle 0, TRAINER_CUE_BALL_COREY, 0, Text_18741D, Text_187429 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CUE_BALL_COREY, 0, Text_18741D, Text_187429 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB302 @@ -6185,12 +6186,12 @@ Route17_EventScript_1AB2DB:: @ 81AB2DB end EventScript_1AB302:: @ 81AB302 - trainerbattle 5, TRAINER_CUE_BALL_COREY, 0, Text_1C2BDA, Text_187429 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CUE_BALL_COREY, 0, Text_1C2BDA, Text_187429 msgbox Text_187432, 6 end Route17_EventScript_1AB319:: @ 81AB319 - trainerbattle 0, TRAINER_BIKER_VIRGIL, 0, Text_18727D, Text_187295 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIKER_VIRGIL, 0, Text_18727D, Text_187295 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB340 @@ -6198,12 +6199,12 @@ Route17_EventScript_1AB319:: @ 81AB319 end EventScript_1AB340:: @ 81AB340 - trainerbattle 5, TRAINER_BIKER_VIRGIL, 0, Text_1C2AF0, Text_187295 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIKER_VIRGIL, 0, Text_1C2AF0, Text_187295 msgbox Text_1872A5, 6 end Route18_EventScript_1AB357:: @ 81AB357 - trainerbattle 0, TRAINER_BIRD_KEEPER_WILTON, 0, Text_187640, Text_187672 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_WILTON, 0, Text_187640, Text_187672 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB37E @@ -6211,12 +6212,12 @@ Route18_EventScript_1AB357:: @ 81AB357 end EventScript_1AB37E:: @ 81AB37E - trainerbattle 5, TRAINER_BIRD_KEEPER_WILTON, 0, Text_1C2C2B, Text_187672 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_WILTON, 0, Text_1C2C2B, Text_187672 msgbox Text_187677, 6 end Route18_EventScript_1AB395:: @ 81AB395 - trainerbattle 0, TRAINER_BIRD_KEEPER_RAMIRO, 0, Text_18768C, Text_1876B3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_RAMIRO, 0, Text_18768C, Text_1876B3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB3BC @@ -6224,12 +6225,12 @@ Route18_EventScript_1AB395:: @ 81AB395 end EventScript_1AB3BC:: @ 81AB3BC - trainerbattle 5, TRAINER_BIRD_KEEPER_RAMIRO, 0, Text_1C2C7B, Text_1876B3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_RAMIRO, 0, Text_1C2C7B, Text_1876B3 msgbox Text_1876C5, 6 end Route18_EventScript_1AB3D3:: @ 81AB3D3 - trainerbattle 0, TRAINER_BIRD_KEEPER_JACOB, 0, Text_187704, Text_187726 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_JACOB, 0, Text_187704, Text_187726 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB3FA @@ -6237,12 +6238,12 @@ Route18_EventScript_1AB3D3:: @ 81AB3D3 end EventScript_1AB3FA:: @ 81AB3FA - trainerbattle 5, TRAINER_BIRD_KEEPER_JACOB, 0, Text_1C2CA8, Text_187726 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_JACOB, 0, Text_1C2CA8, Text_187726 msgbox Text_18772C, 6 end Route19_EventScript_1AB411:: @ 81AB411 - trainerbattle 0, TRAINER_SWIMMER_MALE_RICHARD, 0, Text_1877A3, Text_1877DF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_RICHARD, 0, Text_1877A3, Text_1877DF specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB438 @@ -6250,12 +6251,12 @@ Route19_EventScript_1AB411:: @ 81AB411 end EventScript_1AB438:: @ 81AB438 - trainerbattle 5, TRAINER_SWIMMER_MALE_RICHARD, 0, Text_1C2CEE, Text_1877DF + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_RICHARD, 0, Text_1C2CEE, Text_1877DF msgbox Text_1877EE, 6 end Route19_EventScript_1AB44F:: @ 81AB44F - trainerbattle 0, TRAINER_SWIMMER_MALE_REECE, 0, Text_187811, Text_18783E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_REECE, 0, Text_187811, Text_18783E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB476 @@ -6263,12 +6264,12 @@ Route19_EventScript_1AB44F:: @ 81AB44F end EventScript_1AB476:: @ 81AB476 - trainerbattle 5, TRAINER_SWIMMER_MALE_REECE, 0, Text_1C2D19, Text_18783E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_REECE, 0, Text_1C2D19, Text_18783E msgbox Text_187852, 6 end Route19_EventScript_1AB48D:: @ 81AB48D - trainerbattle 0, TRAINER_SWIMMER_MALE_MATTHEW, 0, Text_187884, Text_1878A5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_MATTHEW, 0, Text_187884, Text_1878A5 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB4B4 @@ -6276,12 +6277,12 @@ Route19_EventScript_1AB48D:: @ 81AB48D end EventScript_1AB4B4:: @ 81AB4B4 - trainerbattle 5, TRAINER_SWIMMER_MALE_MATTHEW, 0, Text_1C2D4B, Text_1878A5 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_MATTHEW, 0, Text_1C2D4B, Text_1878A5 msgbox Text_1878B1, 6 end Route19_EventScript_1AB4CB:: @ 81AB4CB - trainerbattle 0, TRAINER_SWIMMER_MALE_DOUGLAS, 0, Text_1878DD, Text_1878F8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_DOUGLAS, 0, Text_1878DD, Text_1878F8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB4F2 @@ -6289,12 +6290,12 @@ Route19_EventScript_1AB4CB:: @ 81AB4CB end EventScript_1AB4F2:: @ 81AB4F2 - trainerbattle 5, TRAINER_SWIMMER_MALE_DOUGLAS, 0, Text_1C2D7D, Text_1878F8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_DOUGLAS, 0, Text_1C2D7D, Text_1878F8 msgbox Text_1878FE, 6 end Route19_EventScript_1AB509:: @ 81AB509 - trainerbattle 0, TRAINER_SWIMMER_MALE_DAVID, 0, Text_187925, Text_187955 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_DAVID, 0, Text_187925, Text_187955 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB530 @@ -6302,12 +6303,12 @@ Route19_EventScript_1AB509:: @ 81AB509 end EventScript_1AB530:: @ 81AB530 - trainerbattle 5, TRAINER_SWIMMER_MALE_DAVID, 0, Text_1C2DA7, Text_187955 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_DAVID, 0, Text_1C2DA7, Text_187955 msgbox Text_18795B, 6 end Route19_EventScript_1AB547:: @ 81AB547 - trainerbattle 0, TRAINER_SWIMMER_MALE_TONY, 0, Text_187985, Text_1879C3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_TONY, 0, Text_187985, Text_1879C3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB56E @@ -6315,12 +6316,12 @@ Route19_EventScript_1AB547:: @ 81AB547 end EventScript_1AB56E:: @ 81AB56E - trainerbattle 5, TRAINER_SWIMMER_MALE_TONY, 0, Text_1C2DE9, Text_1879C3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_TONY, 0, Text_1C2DE9, Text_1879C3 msgbox Text_1879D3, 6 end Route19_EventScript_1AB585:: @ 81AB585 - trainerbattle 0, TRAINER_SWIMMER_MALE_AXLE, 0, Text_187AFA, Text_187B25 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_AXLE, 0, Text_187AFA, Text_187B25 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB5AC @@ -6328,12 +6329,12 @@ Route19_EventScript_1AB585:: @ 81AB585 end EventScript_1AB5AC:: @ 81AB5AC - trainerbattle 5, TRAINER_SWIMMER_MALE_AXLE, 0, Text_1C2EC0, Text_187B25 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_AXLE, 0, Text_1C2EC0, Text_187B25 msgbox Text_187B35, 6 end Route19_EventScript_1AB5C3:: @ 81AB5C3 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_ANYA, 0, Text_187A11, Text_187A44 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_ANYA, 0, Text_187A11, Text_187A44 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB5EA @@ -6341,12 +6342,12 @@ Route19_EventScript_1AB5C3:: @ 81AB5C3 end EventScript_1AB5EA:: @ 81AB5EA - trainerbattle 5, TRAINER_SWIMMER_FEMALE_ANYA, 0, Text_1C2E4A, Text_187A44 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_ANYA, 0, Text_1C2E4A, Text_187A44 msgbox Text_187A50, 6 end Route19_EventScript_1AB601:: @ 81AB601 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_ALICE, 0, Text_187A9E, Text_187AC1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_ALICE, 0, Text_187A9E, Text_187AC1 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB628 @@ -6354,12 +6355,12 @@ Route19_EventScript_1AB601:: @ 81AB601 end EventScript_1AB628:: @ 81AB628 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_ALICE, 0, Text_1C2E9D, Text_187AC1 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_ALICE, 0, Text_1C2E9D, Text_187AC1 msgbox Text_187ACA, 6 end Route19_EventScript_1AB63F:: @ 81AB63F - trainerbattle 0, TRAINER_SWIMMER_FEMALE_CONNIE, 0, Text_187B5D, Text_187B85 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_CONNIE, 0, Text_187B5D, Text_187B85 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB666 @@ -6367,12 +6368,12 @@ Route19_EventScript_1AB63F:: @ 81AB63F end EventScript_1AB666:: @ 81AB666 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_CONNIE, 0, Text_1C2EFC, Text_187B85 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_CONNIE, 0, Text_1C2EFC, Text_187B85 msgbox Text_187B94, 6 end Route19_EventScript_1AB67D:: @ 81AB67D - trainerbattle 4, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_187C32, Text_187C6F, Text_187CF2 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_187C32, Text_187C6F, Text_187CF2 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB6A8 @@ -6380,12 +6381,12 @@ Route19_EventScript_1AB67D:: @ 81AB67D end EventScript_1AB6A8:: @ 81AB6A8 - trainerbattle 7, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_1C2F41, Text_187C6F, Text_187CF2 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_1C2F41, Text_187C6F, Text_187CF2 msgbox Text_187C9E, 6 end Route19_EventScript_1AB6C3:: @ 81AB6C3 - trainerbattle 4, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_187D45, Text_187D7E, Text_187DE8 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_187D45, Text_187D7E, Text_187DE8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB6EE @@ -6393,12 +6394,12 @@ Route19_EventScript_1AB6C3:: @ 81AB6C3 end EventScript_1AB6EE:: @ 81AB6EE - trainerbattle 7, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_1C2FAE, Text_187D7E, Text_187DE8 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_LIA_LUC, 0, Text_1C2FAE, Text_187D7E, Text_187DE8 msgbox Text_187DAD, 6 end Route20_EventScript_1AB709:: @ 81AB709 - trainerbattle 0, TRAINER_SWIMMER_MALE_BARRY, 0, Text_187E40, Text_187E7B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_BARRY, 0, Text_187E40, Text_187E7B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB730 @@ -6406,12 +6407,12 @@ Route20_EventScript_1AB709:: @ 81AB709 end EventScript_1AB730:: @ 81AB730 - trainerbattle 5, TRAINER_SWIMMER_MALE_BARRY, 0, Text_1C2FF3, Text_187E7B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_BARRY, 0, Text_1C2FF3, Text_187E7B msgbox Text_187E83, 6 end Route20_EventScript_1AB747:: @ 81AB747 - trainerbattle 0, TRAINER_SWIMMER_MALE_DEAN, 0, Text_187FDB, Text_187FF7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_DEAN, 0, Text_187FDB, Text_187FF7 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB76E @@ -6419,12 +6420,12 @@ Route20_EventScript_1AB747:: @ 81AB747 end EventScript_1AB76E:: @ 81AB76E - trainerbattle 5, TRAINER_SWIMMER_MALE_DEAN, 0, Text_1C30B0, Text_187FF7 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_DEAN, 0, Text_1C30B0, Text_187FF7 msgbox Text_187FFE, 6 end Route20_EventScript_1AB785:: @ 81AB785 - trainerbattle 0, TRAINER_SWIMMER_MALE_DARRIN, 0, Text_18802E, Text_18805C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_DARRIN, 0, Text_18802E, Text_18805C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB7AC @@ -6432,12 +6433,12 @@ Route20_EventScript_1AB785:: @ 81AB785 end EventScript_1AB7AC:: @ 81AB7AC - trainerbattle 5, TRAINER_SWIMMER_MALE_DARRIN, 0, Text_1C30ED, Text_18805C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_DARRIN, 0, Text_1C30ED, Text_18805C msgbox Text_18806D, 6 end Route20_EventScript_1AB7C3:: @ 81AB7C3 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_TIFFANY, 0, Text_187F24, Text_187F5A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_TIFFANY, 0, Text_187F24, Text_187F5A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB7EA @@ -6445,12 +6446,12 @@ Route20_EventScript_1AB7C3:: @ 81AB7C3 end EventScript_1AB7EA:: @ 81AB7EA - trainerbattle 5, TRAINER_SWIMMER_FEMALE_TIFFANY, 0, Text_1C305F, Text_187F5A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_TIFFANY, 0, Text_1C305F, Text_187F5A msgbox Text_187F61, 6 end Route20_EventScript_1AB801:: @ 81AB801 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_NORA, 0, Text_1880F8, Text_188119 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_NORA, 0, Text_1880F8, Text_188119 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB828 @@ -6458,12 +6459,12 @@ Route20_EventScript_1AB801:: @ 81AB801 end EventScript_1AB828:: @ 81AB828 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_NORA, 0, Text_1C3149, Text_188119 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_NORA, 0, Text_1C3149, Text_188119 msgbox Text_188139, 6 end Route20_EventScript_1AB83F:: @ 81AB83F - trainerbattle 0, TRAINER_SWIMMER_FEMALE_MELISSA, 0, Text_188218, Text_18825C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_MELISSA, 0, Text_188218, Text_18825C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB866 @@ -6471,12 +6472,12 @@ Route20_EventScript_1AB83F:: @ 81AB83F end EventScript_1AB866:: @ 81AB866 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_MELISSA, 0, Text_1C31C4, Text_18825C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_MELISSA, 0, Text_1C31C4, Text_18825C msgbox Text_18827B, 6 end Route20_EventScript_1AB87D:: @ 81AB87D - trainerbattle 0, TRAINER_SWIMMER_FEMALE_SHIRLEY, 0, Text_187EBB, Text_187EED + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_SHIRLEY, 0, Text_187EBB, Text_187EED specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB8A4 @@ -6484,12 +6485,12 @@ Route20_EventScript_1AB87D:: @ 81AB87D end EventScript_1AB8A4:: @ 81AB8A4 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_SHIRLEY, 0, Text_1C302E, Text_187EED + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_SHIRLEY, 0, Text_1C302E, Text_187EED msgbox Text_187EF6, 6 end Route20_EventScript_1AB8BB:: @ 81AB8BB - trainerbattle 0, TRAINER_BIRD_KEEPER_ROGER, 0, Text_18808E, Text_1880AB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_ROGER, 0, Text_18808E, Text_1880AB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB8E2 @@ -6497,12 +6498,12 @@ Route20_EventScript_1AB8BB:: @ 81AB8BB end EventScript_1AB8E2:: @ 81AB8E2 - trainerbattle 5, TRAINER_BIRD_KEEPER_ROGER, 0, Text_1C312C, Text_1880AB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_ROGER, 0, Text_1C312C, Text_1880AB msgbox Text_1880C8, 6 end Route20_EventScript_1AB8F9:: @ 81AB8F9 - trainerbattle 0, TRAINER_PICNICKER_MISSY, 0, Text_188165, Text_1881A3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_MISSY, 0, Text_188165, Text_1881A3 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB920 @@ -6510,12 +6511,12 @@ Route20_EventScript_1AB8F9:: @ 81AB8F9 end EventScript_1AB920:: @ 81AB920 - trainerbattle 5, TRAINER_PICNICKER_MISSY, 0, Text_1C3185, Text_1881A3 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_MISSY, 0, Text_1C3185, Text_1881A3 msgbox Text_1881B8, 6 end Route20_EventScript_1AB937:: @ 81AB937 - trainerbattle 0, TRAINER_PICNICKER_IRENE, 0, Text_187F78, Text_187F92 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_IRENE, 0, Text_187F78, Text_187F92 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB95E @@ -6523,12 +6524,12 @@ Route20_EventScript_1AB937:: @ 81AB937 end EventScript_1AB95E:: @ 81AB95E - trainerbattle 5, TRAINER_PICNICKER_IRENE, 0, Text_1C3095, Text_187F92 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_IRENE, 0, Text_1C3095, Text_187F92 msgbox Text_187FA3, 6 end Route21_North_EventScript_1AB975:: @ 81AB975 - trainerbattle 0, TRAINER_FISHERMAN_RONALD, 0, Text_18835A, Text_188383 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_RONALD, 0, Text_18835A, Text_188383 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB99C @@ -6536,12 +6537,12 @@ Route21_North_EventScript_1AB975:: @ 81AB975 end EventScript_1AB99C:: @ 81AB99C - trainerbattle 5, TRAINER_FISHERMAN_RONALD, 0, Text_1C3208, Text_188383 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_RONALD, 0, Text_1C3208, Text_188383 msgbox Text_188389, 6 end Route21_South_EventScript_1AB9B3:: @ 81AB9B3 - trainerbattle 0, TRAINER_FISHERMAN_CLAUDE, 0, Text_1885D8, Text_1885F8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_CLAUDE, 0, Text_1885D8, Text_1885F8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AB9DA @@ -6549,12 +6550,12 @@ Route21_South_EventScript_1AB9B3:: @ 81AB9B3 end EventScript_1AB9DA:: @ 81AB9DA - trainerbattle 5, TRAINER_FISHERMAN_CLAUDE, 0, Text_1C331D, Text_1885F8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_CLAUDE, 0, Text_1C331D, Text_1885F8 msgbox Text_188632, 6 end Route21_North_EventScript_1AB9F1:: @ 81AB9F1 - trainerbattle 0, TRAINER_FISHERMAN_WADE, 0, Text_1883C6, Text_1883E9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_WADE, 0, Text_1883C6, Text_1883E9 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABA18 @@ -6562,12 +6563,12 @@ Route21_North_EventScript_1AB9F1:: @ 81AB9F1 end EventScript_1ABA18:: @ 81ABA18 - trainerbattle 5, TRAINER_FISHERMAN_WADE, 0, Text_1C3231, Text_1883E9 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_WADE, 0, Text_1C3231, Text_1883E9 msgbox Text_18841D, 6 end Route21_South_EventScript_1ABA2F:: @ 81ABA2F - trainerbattle 0, TRAINER_FISHERMAN_NOLAN, 0, Text_18868C, Text_1886AE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_NOLAN, 0, Text_18868C, Text_1886AE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABA56 @@ -6575,12 +6576,12 @@ Route21_South_EventScript_1ABA2F:: @ 81ABA2F end EventScript_1ABA56:: @ 81ABA56 - trainerbattle 5, TRAINER_FISHERMAN_NOLAN, 0, Text_1C3356, Text_1886AE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_NOLAN, 0, Text_1C3356, Text_1886AE msgbox Text_1886C5, 6 end Route21_North_EventScript_1ABA6D:: @ 81ABA6D - trainerbattle 0, TRAINER_SWIMMER_MALE_SPENCER, 0, Text_18843C, Text_18845F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_SPENCER, 0, Text_18843C, Text_18845F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABA94 @@ -6588,12 +6589,12 @@ Route21_North_EventScript_1ABA6D:: @ 81ABA6D end EventScript_1ABA94:: @ 81ABA94 - trainerbattle 5, TRAINER_SWIMMER_MALE_SPENCER, 0, Text_1C3264, Text_18845F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_SPENCER, 0, Text_1C3264, Text_18845F msgbox Text_188465, 6 end Route21_South_EventScript_1ABAAB:: @ 81ABAAB - trainerbattle 0, TRAINER_SWIMMER_MALE_JACK, 0, Text_1884D4, Text_1884F0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_JACK, 0, Text_1884D4, Text_1884F0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABAD2 @@ -6601,12 +6602,12 @@ Route21_South_EventScript_1ABAAB:: @ 81ABAAB end EventScript_1ABAD2:: @ 81ABAD2 - trainerbattle 5, TRAINER_SWIMMER_MALE_JACK, 0, Text_1C3298, Text_1884F0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_JACK, 0, Text_1C3298, Text_1884F0 msgbox Text_1884FF, 6 end Route21_South_EventScript_1ABAE9:: @ 81ABAE9 - trainerbattle 0, TRAINER_SWIMMER_MALE_JEROME, 0, Text_18851F, Text_188543 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_JEROME, 0, Text_18851F, Text_188543 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABB10 @@ -6614,12 +6615,12 @@ Route21_South_EventScript_1ABAE9:: @ 81ABAE9 end EventScript_1ABB10:: @ 81ABB10 - trainerbattle 5, TRAINER_SWIMMER_MALE_JEROME, 0, Text_1C32D3, Text_188543 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_JEROME, 0, Text_1C32D3, Text_188543 msgbox Text_188555, 6 end Route21_South_EventScript_1ABB27:: @ 81ABB27 - trainerbattle 0, TRAINER_SWIMMER_MALE_ROLAND, 0, Text_188592, Text_1885B2 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_ROLAND, 0, Text_188592, Text_1885B2 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABB4E @@ -6627,12 +6628,12 @@ Route21_South_EventScript_1ABB27:: @ 81ABB27 end EventScript_1ABB4E:: @ 81ABB4E - trainerbattle 5, TRAINER_SWIMMER_MALE_ROLAND, 0, Text_1C32FD, Text_1885B2 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_ROLAND, 0, Text_1C32FD, Text_1885B2 msgbox Text_1885BF, 6 end Route21_North_EventScript_1ABB65:: @ 81ABB65 - trainerbattle 4, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1886E2, Text_188712, Text_18875E + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1886E2, Text_188712, Text_18875E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABB90 @@ -6640,12 +6641,12 @@ Route21_North_EventScript_1ABB65:: @ 81ABB65 end EventScript_1ABB90:: @ 81ABB90 - trainerbattle 7, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1C3378, Text_188712, Text_18875E + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1C3378, Text_188712, Text_18875E msgbox Text_188734, 6 end Route21_North_EventScript_1ABBAB:: @ 81ABBAB - trainerbattle 4, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1887B4, Text_1887F1, Text_188850 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1887B4, Text_1887F1, Text_188850 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABBD6 @@ -6653,12 +6654,12 @@ Route21_North_EventScript_1ABBAB:: @ 81ABBAB end EventScript_1ABBD6:: @ 81ABBD6 - trainerbattle 7, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1C33AE, Text_1887F1, Text_188850 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_LIL_IAN, 0, Text_1C33AE, Text_1887F1, Text_188850 msgbox Text_188812, 6 end OneIsland_KindleRoad_EventScript_1ABBF1:: @ 81ABBF1 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_MARIA, 0, Text_18961F, Text_18964D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_MARIA, 0, Text_18961F, Text_18964D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABC18 @@ -6666,12 +6667,12 @@ OneIsland_KindleRoad_EventScript_1ABBF1:: @ 81ABBF1 end EventScript_1ABC18:: @ 81ABC18 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_MARIA, 0, Text_1C37B5, Text_18964D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_MARIA, 0, Text_1C37B5, Text_18964D msgbox Text_189657, 6 end OneIsland_KindleRoad_EventScript_1ABC2F:: @ 81ABC2F - trainerbattle 0, TRAINER_SWIMMER_FEMALE_ABIGAIL, 0, Text_18968C, Text_1896AC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_ABIGAIL, 0, Text_18968C, Text_1896AC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABC56 @@ -6679,12 +6680,12 @@ OneIsland_KindleRoad_EventScript_1ABC2F:: @ 81ABC2F end EventScript_1ABC56:: @ 81ABC56 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_ABIGAIL, 0, Text_1C37E7, Text_1896AC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_ABIGAIL, 0, Text_1C37E7, Text_1896AC msgbox Text_1896C1, 6 end OneIsland_KindleRoad_EventScript_1ABC6D:: @ 81ABC6D - trainerbattle 0, TRAINER_SWIMMER_MALE_FINN, 0, Text_1896F9, Text_189728 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_FINN, 0, Text_1896F9, Text_189728 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABC94 @@ -6692,12 +6693,12 @@ OneIsland_KindleRoad_EventScript_1ABC6D:: @ 81ABC6D end EventScript_1ABC94:: @ 81ABC94 - trainerbattle 5, TRAINER_SWIMMER_MALE_FINN, 0, Text_1C3807, Text_189728 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_FINN, 0, Text_1C3807, Text_189728 msgbox Text_189740, 6 end OneIsland_KindleRoad_EventScript_1ABCAB:: @ 81ABCAB - trainerbattle 0, TRAINER_SWIMMER_MALE_GARRETT, 0, Text_189767, Text_1897A4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_GARRETT, 0, Text_189767, Text_1897A4 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABCD2 @@ -6705,12 +6706,12 @@ OneIsland_KindleRoad_EventScript_1ABCAB:: @ 81ABCAB end EventScript_1ABCD2:: @ 81ABCD2 - trainerbattle 5, TRAINER_SWIMMER_MALE_GARRETT, 0, Text_1C3835, Text_1897A4 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_GARRETT, 0, Text_1C3835, Text_1897A4 msgbox Text_1897C5, 6 end OneIsland_KindleRoad_EventScript_1ABCE9:: @ 81ABCE9 - trainerbattle 0, TRAINER_FISHERMAN_TOMMY, 0, Text_1897FF, Text_189833 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_TOMMY, 0, Text_1897FF, Text_189833 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABD10 @@ -6718,12 +6719,12 @@ OneIsland_KindleRoad_EventScript_1ABCE9:: @ 81ABCE9 end EventScript_1ABD10:: @ 81ABD10 - trainerbattle 5, TRAINER_FISHERMAN_TOMMY, 0, Text_1C386A, Text_189833 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_TOMMY, 0, Text_1C386A, Text_189833 msgbox Text_18984B, 6 end OneIsland_KindleRoad_EventScript_1ABD27:: @ 81ABD27 - trainerbattle 0, TRAINER_CRUSH_GIRL_SHARON, 0, Text_189883, Text_1898AB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CRUSH_GIRL_SHARON, 0, Text_189883, Text_1898AB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABD4E @@ -6731,12 +6732,12 @@ OneIsland_KindleRoad_EventScript_1ABD27:: @ 81ABD27 end EventScript_1ABD4E:: @ 81ABD4E - trainerbattle 5, TRAINER_CRUSH_GIRL_SHARON, 0, Text_1C389F, Text_1898AB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CRUSH_GIRL_SHARON, 0, Text_1C389F, Text_1898AB msgbox Text_1898C4, 6 end OneIsland_KindleRoad_EventScript_1ABD65:: @ 81ABD65 - trainerbattle 0, TRAINER_CRUSH_GIRL_TANYA, 0, Text_1898F0, Text_18991B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CRUSH_GIRL_TANYA, 0, Text_1898F0, Text_18991B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABD8C @@ -6744,12 +6745,12 @@ OneIsland_KindleRoad_EventScript_1ABD65:: @ 81ABD65 end EventScript_1ABD8C:: @ 81ABD8C - trainerbattle 5, TRAINER_CRUSH_GIRL_TANYA, 0, Text_1C38CA, Text_18991B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CRUSH_GIRL_TANYA, 0, Text_1C38CA, Text_18991B msgbox Text_18992C, 6 end OneIsland_KindleRoad_EventScript_1ABDA3:: @ 81ABDA3 - trainerbattle 0, TRAINER_BLACK_BELT_SHEA, 0, Text_189950, Text_18998C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_SHEA, 0, Text_189950, Text_18998C specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABDCA @@ -6757,12 +6758,12 @@ OneIsland_KindleRoad_EventScript_1ABDA3:: @ 81ABDA3 end EventScript_1ABDCA:: @ 81ABDCA - trainerbattle 5, TRAINER_BLACK_BELT_SHEA, 0, Text_1C38FA, Text_18998C + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BLACK_BELT_SHEA, 0, Text_1C38FA, Text_18998C msgbox Text_189998, 6 end OneIsland_KindleRoad_EventScript_1ABDE1:: @ 81ABDE1 - trainerbattle 0, TRAINER_BLACK_BELT_HUGH, 0, Text_1899CE, Text_189A0A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_HUGH, 0, Text_1899CE, Text_189A0A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABE08 @@ -6770,12 +6771,12 @@ OneIsland_KindleRoad_EventScript_1ABDE1:: @ 81ABDE1 end EventScript_1ABE08:: @ 81ABE08 - trainerbattle 5, TRAINER_BLACK_BELT_HUGH, 0, Text_1C3943, Text_189A0A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BLACK_BELT_HUGH, 0, Text_1C3943, Text_189A0A msgbox Text_189A13, 6 end OneIsland_KindleRoad_EventScript_1ABE1F:: @ 81ABE1F - trainerbattle 0, TRAINER_CAMPER_BRYCE, 0, Text_189A53, Text_189A92 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_BRYCE, 0, Text_189A53, Text_189A92 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABE46 @@ -6783,12 +6784,12 @@ OneIsland_KindleRoad_EventScript_1ABE1F:: @ 81ABE1F end EventScript_1ABE46:: @ 81ABE46 - trainerbattle 5, TRAINER_CAMPER_BRYCE, 0, Text_1C3987, Text_189A92 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CAMPER_BRYCE, 0, Text_1C3987, Text_189A92 msgbox Text_189A9F, 6 end OneIsland_KindleRoad_EventScript_1ABE5D:: @ 81ABE5D - trainerbattle 0, TRAINER_PICNICKER_CLAIRE, 0, Text_189ACB, Text_189B0B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_CLAIRE, 0, Text_189ACB, Text_189B0B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABE84 @@ -6796,12 +6797,12 @@ OneIsland_KindleRoad_EventScript_1ABE5D:: @ 81ABE5D end EventScript_1ABE84:: @ 81ABE84 - trainerbattle 5, TRAINER_PICNICKER_CLAIRE, 0, Text_1C39C6, Text_189B0B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PICNICKER_CLAIRE, 0, Text_1C39C6, Text_189B0B msgbox Text_189B24, 6 end OneIsland_KindleRoad_EventScript_1ABE9B:: @ 81ABE9B - trainerbattle 4, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_189B4D, Text_189B84, Text_189BDE + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_189B4D, Text_189B84, Text_189BDE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABEC6 @@ -6809,12 +6810,12 @@ OneIsland_KindleRoad_EventScript_1ABE9B:: @ 81ABE9B end EventScript_1ABEC6:: @ 81ABEC6 - trainerbattle 7, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_1C3A05, Text_189B84, Text_189BDE + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_1C3A05, Text_189B84, Text_189BDE msgbox Text_189BA3, 6 end OneIsland_KindleRoad_EventScript_1ABEE1:: @ 81ABEE1 - trainerbattle 4, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_189C33, Text_189C62, Text_189CAB + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_189C33, Text_189C62, Text_189CAB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABF0C @@ -6822,12 +6823,12 @@ OneIsland_KindleRoad_EventScript_1ABEE1:: @ 81ABEE1 end EventScript_1ABF0C:: @ 81ABF0C - trainerbattle 7, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_1C3A55, Text_189C62, Text_189CAB + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_CRUSH_KIN_MIK_KIA, 0, Text_1C3A55, Text_189C62, Text_189CAB msgbox Text_189C7E, 6 end OneIsland_TreasureBeach_EventScript_1ABF27:: @ 81ABF27 - trainerbattle 0, TRAINER_SWIMMER_FEMALE_AMARA, 0, Text_189D5A, Text_189D8B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_AMARA, 0, Text_189D5A, Text_189D8B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABF4E @@ -6835,12 +6836,12 @@ OneIsland_TreasureBeach_EventScript_1ABF27:: @ 81ABF27 end EventScript_1ABF4E:: @ 81ABF4E - trainerbattle 5, TRAINER_SWIMMER_FEMALE_AMARA, 0, Text_1C3773, Text_189D8B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_AMARA, 0, Text_1C3773, Text_189D8B msgbox Text_189DA3, 6 end ThreeIsland_BondBridge_EventScript_1ABF65:: @ 81ABF65 - trainerbattle 0, TRAINER_AROMA_LADY_NIKKI, 0, Text_189E42, Text_189E72 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_AROMA_LADY_NIKKI, 0, Text_189E42, Text_189E72 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABF8C @@ -6848,12 +6849,12 @@ ThreeIsland_BondBridge_EventScript_1ABF65:: @ 81ABF65 end EventScript_1ABF8C:: @ 81ABF8C - trainerbattle 5, TRAINER_AROMA_LADY_NIKKI, 0, Text_1C3AA7, Text_189E72 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_AROMA_LADY_NIKKI, 0, Text_1C3AA7, Text_189E72 msgbox Text_189E9E, 6 end ThreeIsland_BondBridge_EventScript_1ABFA3:: @ 81ABFA3 - trainerbattle 0, TRAINER_AROMA_LADY_VIOLET, 0, Text_189ED4, Text_189EFA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_AROMA_LADY_VIOLET, 0, Text_189ED4, Text_189EFA specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ABFCA @@ -6861,12 +6862,12 @@ ThreeIsland_BondBridge_EventScript_1ABFA3:: @ 81ABFA3 end EventScript_1ABFCA:: @ 81ABFCA - trainerbattle 5, TRAINER_AROMA_LADY_VIOLET, 0, Text_1C3ABF, Text_189EFA + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_AROMA_LADY_VIOLET, 0, Text_1C3ABF, Text_189EFA msgbox Text_189F21, 6 end ThreeIsland_BondBridge_EventScript_1ABFE1:: @ 81ABFE1 - trainerbattle 0, TRAINER_TUBER_AMIRA, 0, Text_189F63, Text_189F9A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TUBER_AMIRA, 0, Text_189F63, Text_189F9A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC008 @@ -6874,12 +6875,12 @@ ThreeIsland_BondBridge_EventScript_1ABFE1:: @ 81ABFE1 end EventScript_1AC008:: @ 81AC008 - trainerbattle 5, TRAINER_TUBER_AMIRA, 0, Text_1C3AF2, Text_189F9A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_TUBER_AMIRA, 0, Text_1C3AF2, Text_189F9A msgbox Text_189FA8, 6 end ThreeIsland_BondBridge_EventScript_1AC01F:: @ 81AC01F - trainerbattle 0, TRAINER_TUBER_ALEXIS, 0, Text_189FDB, Text_189FEE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TUBER_ALEXIS, 0, Text_189FDB, Text_189FEE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC046 @@ -6887,12 +6888,12 @@ ThreeIsland_BondBridge_EventScript_1AC01F:: @ 81AC01F end EventScript_1AC046:: @ 81AC046 - trainerbattle 5, TRAINER_TUBER_ALEXIS, 0, Text_1C3B1D, Text_189FEE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_TUBER_ALEXIS, 0, Text_1C3B1D, Text_189FEE msgbox Text_18A000, 6 end ThreeIsland_BondBridge_EventScript_1AC05D:: @ 81AC05D - trainerbattle 0, TRAINER_SWIMMER_FEMALE_TISHA, 0, Text_18A01F, Text_18A053 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_TISHA, 0, Text_18A01F, Text_18A053 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC084 @@ -6900,12 +6901,12 @@ ThreeIsland_BondBridge_EventScript_1AC05D:: @ 81AC05D end EventScript_1AC084:: @ 81AC084 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_TISHA, 0, Text_1C3B30, Text_18A053 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_TISHA, 0, Text_1C3B30, Text_18A053 msgbox Text_18A082, 6 end ThreeIsland_BondBridge_EventScript_1AC09B:: @ 81AC09B - trainerbattle 4, TRAINER_TWINS_JOY_MEG, 0, Text_18A0C4, Text_18A0F7, Text_18A138 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_JOY_MEG, 0, Text_18A0C4, Text_18A0F7, Text_18A138 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC0C6 @@ -6913,12 +6914,12 @@ ThreeIsland_BondBridge_EventScript_1AC09B:: @ 81AC09B end EventScript_1AC0C6:: @ 81AC0C6 - trainerbattle 7, TRAINER_TWINS_JOY_MEG, 0, Text_1C3B6E, Text_18A0F7, Text_18A138 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_JOY_MEG, 0, Text_1C3B6E, Text_18A0F7, Text_18A138 msgbox Text_18A106, 6 end ThreeIsland_BondBridge_EventScript_1AC0E1:: @ 81AC0E1 - trainerbattle 4, TRAINER_TWINS_JOY_MEG, 0, Text_18A179, Text_18A1A3, Text_18A1CD + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_JOY_MEG, 0, Text_18A179, Text_18A1A3, Text_18A1CD specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC10C @@ -6926,12 +6927,12 @@ ThreeIsland_BondBridge_EventScript_1AC0E1:: @ 81AC0E1 end EventScript_1AC10C:: @ 81AC10C - trainerbattle 7, TRAINER_TWINS_JOY_MEG, 0, Text_1C3B99, Text_18A1A3, Text_18A1CD + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_JOY_MEG, 0, Text_1C3B99, Text_18A1A3, Text_18A1CD msgbox Text_18A1B2, 6 end FiveIsland_ResortGorgeous_EventScript_1AC127:: @ 81AC127 - trainerbattle 0, TRAINER_PAINTER_DAISY, 0, Text_18A3E2, Text_18A40E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PAINTER_DAISY, 0, Text_18A3E2, Text_18A40E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC14E @@ -6939,12 +6940,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC127:: @ 81AC127 end EventScript_1AC14E:: @ 81AC14E - trainerbattle 5, TRAINER_PAINTER_DAISY, 0, Text_1C3BF6, Text_18A40E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PAINTER_DAISY, 0, Text_1C3BF6, Text_18A40E msgbox Text_18A430, 6 end FiveIsland_ResortGorgeous_EventScript_1AC165:: @ 81AC165 - trainerbattle 0, TRAINER_PAINTER_CELINA, 0, Text_18A461, Text_18A49E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PAINTER_CELINA, 0, Text_18A461, Text_18A49E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC18C @@ -6952,12 +6953,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC165:: @ 81AC165 end EventScript_1AC18C:: @ 81AC18C - trainerbattle 5, TRAINER_PAINTER_CELINA, 0, Text_1C3C28, Text_18A49E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PAINTER_CELINA, 0, Text_1C3C28, Text_18A49E msgbox Text_18A4C6, 6 end FiveIsland_ResortGorgeous_EventScript_1AC1A3:: @ 81AC1A3 - trainerbattle 0, TRAINER_PAINTER_RAYNA, 0, Text_18A50E, Text_18A535 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PAINTER_RAYNA, 0, Text_18A50E, Text_18A535 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC1CA @@ -6965,12 +6966,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC1A3:: @ 81AC1A3 end EventScript_1AC1CA:: @ 81AC1CA - trainerbattle 5, TRAINER_PAINTER_RAYNA, 0, Text_1C3C70, Text_18A535 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PAINTER_RAYNA, 0, Text_1C3C70, Text_18A535 msgbox Text_18A555, 6 end FiveIsland_ResortGorgeous_EventScript_1AC1E1:: @ 81AC1E1 - trainerbattle 0, TRAINER_LADY_JACKI, 0, Text_18A5B9, Text_18A5EE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LADY_JACKI, 0, Text_18A5B9, Text_18A5EE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC208 @@ -6978,12 +6979,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC1E1:: @ 81AC1E1 end EventScript_1AC208:: @ 81AC208 - trainerbattle 5, TRAINER_LADY_JACKI, 0, Text_1C3CB0, Text_18A5EE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LADY_JACKI, 0, Text_1C3CB0, Text_18A5EE msgbox Text_18A601, 6 end FiveIsland_ResortGorgeous_EventScript_1AC21F:: @ 81AC21F - trainerbattle 0, TRAINER_LADY_GILLIAN, 0, Text_18A645, Text_18A67F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LADY_GILLIAN, 0, Text_18A645, Text_18A67F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC246 @@ -6991,12 +6992,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC21F:: @ 81AC21F end EventScript_1AC246:: @ 81AC246 - trainerbattle 5, TRAINER_LADY_GILLIAN, 0, Text_1C3CF1, Text_18A67F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_LADY_GILLIAN, 0, Text_1C3CF1, Text_18A67F msgbox Text_18A699, 6 end FiveIsland_ResortGorgeous_EventScript_1AC25D:: @ 81AC25D - trainerbattle 0, TRAINER_YOUNGSTER_DESTIN, 0, Text_18A6DA, Text_18A6FE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_DESTIN, 0, Text_18A6DA, Text_18A6FE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC284 @@ -7004,12 +7005,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC25D:: @ 81AC25D end EventScript_1AC284:: @ 81AC284 - trainerbattle 5, TRAINER_YOUNGSTER_DESTIN, 0, Text_1C3D47, Text_18A6FE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_YOUNGSTER_DESTIN, 0, Text_1C3D47, Text_18A6FE msgbox Text_18A715, 6 end FiveIsland_ResortGorgeous_EventScript_1AC29B:: @ 81AC29B - trainerbattle 0, TRAINER_SWIMMER_MALE_TOBY, 0, Text_18A74A, Text_18A786 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_TOBY, 0, Text_18A74A, Text_18A786 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC2C2 @@ -7017,12 +7018,12 @@ FiveIsland_ResortGorgeous_EventScript_1AC29B:: @ 81AC29B end EventScript_1AC2C2:: @ 81AC2C2 - trainerbattle 5, TRAINER_SWIMMER_MALE_TOBY, 0, Text_1C3D73, Text_18A786 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_TOBY, 0, Text_1C3D73, Text_18A786 msgbox Text_18A7AC, 6 end FiveIsland_WaterLabyrinth_EventScript_1AC2D9:: @ 81AC2D9 - trainerbattle 0, TRAINER_PKMN_BREEDER_ALIZE, 0, Text_18AAD5, Text_18AB0B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_BREEDER_ALIZE, 0, Text_18AAD5, Text_18AB0B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC300 @@ -7030,12 +7031,12 @@ FiveIsland_WaterLabyrinth_EventScript_1AC2D9:: @ 81AC2D9 end EventScript_1AC300:: @ 81AC300 - trainerbattle 5, TRAINER_PKMN_BREEDER_ALIZE, 0, Text_1C3BB7, Text_18AB0B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PKMN_BREEDER_ALIZE, 0, Text_1C3BB7, Text_18AB0B msgbox Text_18AB37, 6 end FiveIsland_MemorialPillar_EventScript_1AC317:: @ 81AC317 - trainerbattle 0, TRAINER_BIRD_KEEPER_MILO, 0, Text_18AE50, Text_18AEA8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_MILO, 0, Text_18AE50, Text_18AEA8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC33E @@ -7043,12 +7044,12 @@ FiveIsland_MemorialPillar_EventScript_1AC317:: @ 81AC317 end EventScript_1AC33E:: @ 81AC33E - trainerbattle 5, TRAINER_BIRD_KEEPER_MILO, 0, Text_1C3DA2, Text_18AEA8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_MILO, 0, Text_1C3DA2, Text_18AEA8 msgbox Text_18AEB6, 6 end FiveIsland_MemorialPillar_EventScript_1AC355:: @ 81AC355 - trainerbattle 0, TRAINER_BIRD_KEEPER_CHAZ, 0, Text_18AEDC, Text_18AF39 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_CHAZ, 0, Text_18AEDC, Text_18AF39 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC37C @@ -7056,12 +7057,12 @@ FiveIsland_MemorialPillar_EventScript_1AC355:: @ 81AC355 end EventScript_1AC37C:: @ 81AC37C - trainerbattle 5, TRAINER_BIRD_KEEPER_CHAZ, 0, Text_1C3E0F, Text_18AF39 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_CHAZ, 0, Text_1C3E0F, Text_18AF39 msgbox Text_18AF45, 6 end FiveIsland_MemorialPillar_EventScript_1AC393:: @ 81AC393 - trainerbattle 0, TRAINER_BIRD_KEEPER_HAROLD, 0, Text_18AF72, Text_18AFCC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BIRD_KEEPER_HAROLD, 0, Text_18AF72, Text_18AFCC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC3BA @@ -7069,12 +7070,12 @@ FiveIsland_MemorialPillar_EventScript_1AC393:: @ 81AC393 end EventScript_1AC3BA:: @ 81AC3BA - trainerbattle 5, TRAINER_BIRD_KEEPER_HAROLD, 0, Text_1C3E6A, Text_18AFCC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_BIRD_KEEPER_HAROLD, 0, Text_1C3E6A, Text_18AFCC msgbox Text_18AFF2, 6 end SixIsland_OutcastIsland_EventScript_1AC3D1:: @ 81AC3D1 - trainerbattle 0, TRAINER_FISHERMAN_TYLOR, 0, Text_18B400, Text_18B43B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_TYLOR, 0, Text_18B400, Text_18B43B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC3F8 @@ -7082,12 +7083,12 @@ SixIsland_OutcastIsland_EventScript_1AC3D1:: @ 81AC3D1 end EventScript_1AC3F8:: @ 81AC3F8 - trainerbattle 5, TRAINER_FISHERMAN_TYLOR, 0, Text_1C3ED0, Text_18B43B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_FISHERMAN_TYLOR, 0, Text_1C3ED0, Text_18B43B msgbox Text_18B451, 6 end SixIsland_OutcastIsland_EventScript_1AC40F:: @ 81AC40F - trainerbattle 0, TRAINER_SWIMMER_MALE_MYMO, 0, Text_18B48F, Text_18B4C5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_MYMO, 0, Text_18B48F, Text_18B4C5 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC436 @@ -7095,12 +7096,12 @@ SixIsland_OutcastIsland_EventScript_1AC40F:: @ 81AC40F end EventScript_1AC436:: @ 81AC436 - trainerbattle 5, TRAINER_SWIMMER_MALE_MYMO, 0, Text_1C3F11, Text_18B4C5 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_MYMO, 0, Text_1C3F11, Text_18B4C5 msgbox Text_18B4D1, 6 end SixIsland_OutcastIsland_EventScript_1AC44D:: @ 81AC44D - trainerbattle 0, TRAINER_SWIMMER_FEMALE_NICOLE, 0, Text_18B4FA, Text_18B539 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_NICOLE, 0, Text_18B4FA, Text_18B539 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC474 @@ -7108,12 +7109,12 @@ SixIsland_OutcastIsland_EventScript_1AC44D:: @ 81AC44D end EventScript_1AC474:: @ 81AC474 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_NICOLE, 0, Text_1C3F51, Text_18B539 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_NICOLE, 0, Text_1C3F51, Text_18B539 msgbox Text_18B573, 6 end SixIsland_OutcastIsland_EventScript_1AC48B:: @ 81AC48B - trainerbattle 4, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_18B5C8, Text_18B5F4, Text_18B660 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_18B5C8, Text_18B5F4, Text_18B660 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC4B6 @@ -7121,12 +7122,12 @@ SixIsland_OutcastIsland_EventScript_1AC48B:: @ 81AC48B end EventScript_1AC4B6:: @ 81AC4B6 - trainerbattle 7, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_1C3F7B, Text_18B5F4, Text_18B660 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_1C3F7B, Text_18B5F4, Text_18B660 msgbox Text_18B62E, 6 end SixIsland_OutcastIsland_EventScript_1AC4D1:: @ 81AC4D1 - trainerbattle 4, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_18B6C1, Text_18B6EF, Text_18B762 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_18B6C1, Text_18B6EF, Text_18B762 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC4FC @@ -7134,12 +7135,12 @@ SixIsland_OutcastIsland_EventScript_1AC4D1:: @ 81AC4D1 end EventScript_1AC4FC:: @ 81AC4FC - trainerbattle 7, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_1C3FB3, Text_18B6EF, Text_18B762 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_SIS_AND_BRO_AVA_GEB, 0, Text_1C3FB3, Text_18B6EF, Text_18B762 msgbox Text_18B720, 6 end SixIsland_GreenPath_EventScript_1AC517:: @ 81AC517 - trainerbattle 0, TRAINER_PSYCHIC_JACLYN, 0, Text_18B7B0, Text_18B7F0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_JACLYN, 0, Text_18B7B0, Text_18B7F0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC53E @@ -7147,12 +7148,12 @@ SixIsland_GreenPath_EventScript_1AC517:: @ 81AC517 end EventScript_1AC53E:: @ 81AC53E - trainerbattle 5, TRAINER_PSYCHIC_JACLYN, 0, Text_1C3FE9, Text_18B7F0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PSYCHIC_JACLYN, 0, Text_1C3FE9, Text_18B7F0 msgbox Text_18B7FD, 6 end SixIsland_WaterPath_EventScript_1AC555:: @ 81AC555 - trainerbattle 0, TRAINER_AROMA_LADY_ROSE, 0, Text_18B896, Text_18B8C8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_AROMA_LADY_ROSE, 0, Text_18B896, Text_18B8C8 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC57C @@ -7160,12 +7161,12 @@ SixIsland_WaterPath_EventScript_1AC555:: @ 81AC555 end EventScript_1AC57C:: @ 81AC57C - trainerbattle 5, TRAINER_AROMA_LADY_ROSE, 0, Text_1C4028, Text_18B8C8 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_AROMA_LADY_ROSE, 0, Text_1C4028, Text_18B8C8 msgbox Text_18B8F7, 6 end SixIsland_WaterPath_EventScript_1AC593:: @ 81AC593 - trainerbattle 0, TRAINER_JUGGLER_EDWARD, 0, Text_18B959, Text_18B988 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_EDWARD, 0, Text_18B959, Text_18B988 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC5BA @@ -7173,12 +7174,12 @@ SixIsland_WaterPath_EventScript_1AC593:: @ 81AC593 end EventScript_1AC5BA:: @ 81AC5BA - trainerbattle 5, TRAINER_JUGGLER_EDWARD, 0, Text_1C4057, Text_18B988 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_JUGGLER_EDWARD, 0, Text_1C4057, Text_18B988 msgbox Text_18B9A5, 6 end SixIsland_WaterPath_EventScript_1AC5D1:: @ 81AC5D1 - trainerbattle 0, TRAINER_SWIMMER_MALE_SAMIR, 0, Text_18B9EC, Text_18BA47 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_SAMIR, 0, Text_18B9EC, Text_18BA47 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC5F8 @@ -7186,12 +7187,12 @@ SixIsland_WaterPath_EventScript_1AC5D1:: @ 81AC5D1 end EventScript_1AC5F8:: @ 81AC5F8 - trainerbattle 5, TRAINER_SWIMMER_MALE_SAMIR, 0, Text_1C407F, Text_18BA47 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_MALE_SAMIR, 0, Text_1C407F, Text_18BA47 msgbox Text_18BA57, 6 end SixIsland_WaterPath_EventScript_1AC60F:: @ 81AC60F - trainerbattle 0, TRAINER_SWIMMER_FEMALE_DENISE, 0, Text_18BA86, Text_18BAC0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_FEMALE_DENISE, 0, Text_18BA86, Text_18BAC0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC636 @@ -7199,12 +7200,12 @@ SixIsland_WaterPath_EventScript_1AC60F:: @ 81AC60F end EventScript_1AC636:: @ 81AC636 - trainerbattle 5, TRAINER_SWIMMER_FEMALE_DENISE, 0, Text_1C40D9, Text_18BAC0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_SWIMMER_FEMALE_DENISE, 0, Text_1C40D9, Text_18BAC0 msgbox Text_18BAE0, 6 end SixIsland_WaterPath_EventScript_1AC64D:: @ 81AC64D - trainerbattle 4, TRAINER_TWINS_MIU_MIA, 0, Text_18BBBA, Text_18BBE2, Text_18BC24 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_MIU_MIA, 0, Text_18BBBA, Text_18BBE2, Text_18BC24 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC678 @@ -7212,12 +7213,12 @@ SixIsland_WaterPath_EventScript_1AC64D:: @ 81AC64D end EventScript_1AC678:: @ 81AC678 - trainerbattle 7, TRAINER_TWINS_MIU_MIA, 0, Text_1C4138, Text_18BBE2, Text_18BC24 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_MIU_MIA, 0, Text_1C4138, Text_18BBE2, Text_18BC24 msgbox Text_18BBF6, 6 end SixIsland_WaterPath_EventScript_1AC693:: @ 81AC693 - trainerbattle 4, TRAINER_TWINS_MIU_MIA, 0, Text_18BC5A, Text_18BC84, Text_18BCCF + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_TWINS_MIU_MIA, 0, Text_18BC5A, Text_18BC84, Text_18BCCF specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC6BE @@ -7225,12 +7226,12 @@ SixIsland_WaterPath_EventScript_1AC693:: @ 81AC693 end EventScript_1AC6BE:: @ 81AC6BE - trainerbattle 7, TRAINER_TWINS_MIU_MIA, 0, Text_1C4166, Text_18BC84, Text_18BCCF + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_TWINS_MIU_MIA, 0, Text_1C4166, Text_18BC84, Text_18BCCF msgbox Text_18BCAE, 6 end SixIsland_WaterPath_EventScript_1AC6D9:: @ 81AC6D9 - trainerbattle 0, TRAINER_HIKER_EARL, 0, Text_18BB2D, Text_18BB62 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_EARL, 0, Text_18BB2D, Text_18BB62 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC700 @@ -7238,12 +7239,12 @@ SixIsland_WaterPath_EventScript_1AC6D9:: @ 81AC6D9 end EventScript_1AC700:: @ 81AC700 - trainerbattle 5, TRAINER_HIKER_EARL, 0, Text_1C40FA, Text_18BB62 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_EARL, 0, Text_1C40FA, Text_18BB62 msgbox Text_18BB8B, 6 end SixIsland_RuinValley_EventScript_1AC717:: @ 81AC717 - trainerbattle 0, TRAINER_RUIN_MANIAC_STANLY, 0, Text_18BE5D, Text_18BE9B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_STANLY, 0, Text_18BE5D, Text_18BE9B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC73E @@ -7251,12 +7252,12 @@ SixIsland_RuinValley_EventScript_1AC717:: @ 81AC717 end EventScript_1AC73E:: @ 81AC73E - trainerbattle 5, TRAINER_RUIN_MANIAC_STANLY, 0, Text_1C4196, Text_18BE9B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_RUIN_MANIAC_STANLY, 0, Text_1C4196, Text_18BE9B msgbox Text_18BEA0, 6 end SixIsland_RuinValley_EventScript_1AC755:: @ 81AC755 - trainerbattle 0, TRAINER_RUIN_MANIAC_FOSTER, 0, Text_18BF05, Text_18BF33 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_FOSTER, 0, Text_18BF05, Text_18BF33 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC77C @@ -7264,12 +7265,12 @@ SixIsland_RuinValley_EventScript_1AC755:: @ 81AC755 end EventScript_1AC77C:: @ 81AC77C - trainerbattle 5, TRAINER_RUIN_MANIAC_FOSTER, 0, Text_1C41D4, Text_18BF33 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_RUIN_MANIAC_FOSTER, 0, Text_1C41D4, Text_18BF33 msgbox Text_18BF6C, 6 end SixIsland_RuinValley_EventScript_1AC793:: @ 81AC793 - trainerbattle 0, TRAINER_RUIN_MANIAC_LARRY, 0, Text_18BFC5, Text_18C03B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_LARRY, 0, Text_18BFC5, Text_18C03B specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC7BA @@ -7277,12 +7278,12 @@ SixIsland_RuinValley_EventScript_1AC793:: @ 81AC793 end EventScript_1AC7BA:: @ 81AC7BA - trainerbattle 5, TRAINER_RUIN_MANIAC_LARRY, 0, Text_1C4210, Text_18C03B + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_RUIN_MANIAC_LARRY, 0, Text_1C4210, Text_18C03B msgbox Text_18C04C, 6 end SixIsland_RuinValley_EventScript_1AC7D1:: @ 81AC7D1 - trainerbattle 0, TRAINER_HIKER_DARYL, 0, Text_18C09C, Text_18C0BB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_DARYL, 0, Text_18C09C, Text_18C0BB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC7F8 @@ -7290,12 +7291,12 @@ SixIsland_RuinValley_EventScript_1AC7D1:: @ 81AC7D1 end EventScript_1AC7F8:: @ 81AC7F8 - trainerbattle 5, TRAINER_HIKER_DARYL, 0, Text_1C4280, Text_18C0BB + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_HIKER_DARYL, 0, Text_1C4280, Text_18C0BB msgbox Text_18C0EA, 6 end SixIsland_RuinValley_EventScript_1AC80F:: @ 81AC80F - trainerbattle 0, TRAINER_POKEMANIAC_HECTOR, 0, Text_18C10A, Text_18C140 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_HECTOR, 0, Text_18C10A, Text_18C140 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC836 @@ -7303,12 +7304,12 @@ SixIsland_RuinValley_EventScript_1AC80F:: @ 81AC80F end EventScript_1AC836:: @ 81AC836 - trainerbattle 5, TRAINER_POKEMANIAC_HECTOR, 0, Text_1C42A0, Text_18C140 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_POKEMANIAC_HECTOR, 0, Text_1C42A0, Text_18C140 msgbox Text_18C17A, 6 end SevenIsland_TrainerTower_EventScript_1AC84D:: @ 81AC84D - trainerbattle 0, TRAINER_PSYCHIC_DARIO, 0, Text_18C1ED, Text_18C205 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_DARIO, 0, Text_18C1ED, Text_18C205 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC874 @@ -7316,12 +7317,12 @@ SevenIsland_TrainerTower_EventScript_1AC84D:: @ 81AC84D end EventScript_1AC874:: @ 81AC874 - trainerbattle 5, TRAINER_PSYCHIC_DARIO, 0, Text_1C42D6, Text_18C205 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PSYCHIC_DARIO, 0, Text_1C42D6, Text_18C205 msgbox Text_18C20E, 6 end SevenIsland_TrainerTower_EventScript_1AC88B:: @ 81AC88B - trainerbattle 0, TRAINER_PSYCHIC_RODETTE, 0, Text_18C283, Text_18C2BC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_RODETTE, 0, Text_18C283, Text_18C2BC specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC8B2 @@ -7329,12 +7330,12 @@ SevenIsland_TrainerTower_EventScript_1AC88B:: @ 81AC88B end EventScript_1AC8B2:: @ 81AC8B2 - trainerbattle 5, TRAINER_PSYCHIC_RODETTE, 0, Text_1C42EE, Text_18C2BC + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PSYCHIC_RODETTE, 0, Text_1C42EE, Text_18C2BC msgbox Text_18C2D5, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1AC8C9:: @ 81AC8C9 - trainerbattle 0, TRAINER_AROMA_LADY_MIAH, 0, Text_18C3BC, Text_18C3E7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_AROMA_LADY_MIAH, 0, Text_18C3BC, Text_18C3E7 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC8F0 @@ -7342,12 +7343,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1AC8C9:: @ 81AC8C9 end EventScript_1AC8F0:: @ 81AC8F0 - trainerbattle 5, TRAINER_AROMA_LADY_MIAH, 0, Text_1C4327, Text_18C3E7 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_AROMA_LADY_MIAH, 0, Text_1C4327, Text_18C3E7 msgbox Text_18C3FF, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1AC907:: @ 81AC907 - trainerbattle 4, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_18C632, Text_18C662, Text_18C6AB + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_18C632, Text_18C662, Text_18C6AB specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC932 @@ -7355,12 +7356,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1AC907:: @ 81AC907 end EventScript_1AC932:: @ 81AC932 - trainerbattle 7, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_1C4416, Text_18C662, Text_18C6AB + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_1C4416, Text_18C662, Text_18C6AB msgbox Text_18C683, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1AC94D:: @ 81AC94D - trainerbattle 4, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_18C700, Text_18C73B, Text_18C7BD + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_18C700, Text_18C73B, Text_18C7BD specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC978 @@ -7368,12 +7369,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1AC94D:: @ 81AC94D end EventScript_1AC978:: @ 81AC978 - trainerbattle 7, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_1C444C, Text_18C73B, Text_18C7BD + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_YOUNG_COUPLE_EVE_JON, 0, Text_1C444C, Text_18C73B, Text_18C7BD msgbox Text_18C773, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1AC993:: @ 81AC993 - trainerbattle 0, TRAINER_JUGGLER_MASON, 0, Text_18C44B, Text_18C473 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_MASON, 0, Text_18C44B, Text_18C473 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC9BA @@ -7381,12 +7382,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1AC993:: @ 81AC993 end EventScript_1AC9BA:: @ 81AC9BA - trainerbattle 5, TRAINER_JUGGLER_MASON, 0, Text_1C4374, Text_18C473 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_JUGGLER_MASON, 0, Text_1C4374, Text_18C473 msgbox Text_18C4BA, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1AC9D1:: @ 81AC9D1 - trainerbattle 0, TRAINER_PKMN_RANGER_NICOLAS, 0, Text_18C500, Text_18C543 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_NICOLAS, 0, Text_18C500, Text_18C543 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1AC9F8 @@ -7394,12 +7395,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1AC9D1:: @ 81AC9D1 end EventScript_1AC9F8:: @ 81AC9F8 - trainerbattle 5, TRAINER_PKMN_RANGER_NICOLAS, 0, Text_1C43AD, Text_18C543 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PKMN_RANGER_NICOLAS, 0, Text_1C43AD, Text_18C543 msgbox Text_18C54B, 6 end SevenIsland_SevaultCanyon_Entrance_EventScript_1ACA0F:: @ 81ACA0F - trainerbattle 0, TRAINER_PKMN_RANGER_MADELINE, 0, Text_18C5AA, Text_18C5CD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_MADELINE, 0, Text_18C5AA, Text_18C5CD specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACA36 @@ -7407,12 +7408,12 @@ SevenIsland_SevaultCanyon_Entrance_EventScript_1ACA0F:: @ 81ACA0F end EventScript_1ACA36:: @ 81ACA36 - trainerbattle 5, TRAINER_PKMN_RANGER_MADELINE, 0, Text_1C43EC, Text_18C5CD + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PKMN_RANGER_MADELINE, 0, Text_1C43EC, Text_18C5CD msgbox Text_18C5F5, 6 end SevenIsland_SevaultCanyon_EventScript_1ACA4D:: @ 81ACA4D - trainerbattle 0, TRAINER_CRUSH_GIRL_CYNDY, 0, Text_18C887, Text_18C8A6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CRUSH_GIRL_CYNDY, 0, Text_18C887, Text_18C8A6 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACA74 @@ -7420,12 +7421,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACA4D:: @ 81ACA4D end EventScript_1ACA74:: @ 81ACA74 - trainerbattle 5, TRAINER_CRUSH_GIRL_CYNDY, 0, Text_1C4491, Text_18C8A6 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_CRUSH_GIRL_CYNDY, 0, Text_1C4491, Text_18C8A6 msgbox Text_18C8C2, 6 end SevenIsland_SevaultCanyon_EventScript_1ACA8B:: @ 81ACA8B - trainerbattle 0, TRAINER_TAMER_EVAN, 0, Text_18C8FD, Text_18C980 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_EVAN, 0, Text_18C8FD, Text_18C980 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACAB2 @@ -7433,12 +7434,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACA8B:: @ 81ACA8B end EventScript_1ACAB2:: @ 81ACAB2 - trainerbattle 5, TRAINER_TAMER_EVAN, 0, Text_1C44CB, Text_18C980 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_TAMER_EVAN, 0, Text_1C44CB, Text_18C980 msgbox Text_18C999, 6 end SevenIsland_SevaultCanyon_EventScript_1ACAC9:: @ 81ACAC9 - trainerbattle 0, TRAINER_PKMN_RANGER_JACKSON, 0, Text_18CA2F, Text_18CA6F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_JACKSON, 0, Text_18CA2F, Text_18CA6F specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACAF0 @@ -7446,12 +7447,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACAC9:: @ 81ACAC9 end EventScript_1ACAF0:: @ 81ACAF0 - trainerbattle 5, TRAINER_PKMN_RANGER_JACKSON, 0, Text_1C454E, Text_18CA6F + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PKMN_RANGER_JACKSON, 0, Text_1C454E, Text_18CA6F msgbox Text_18CA9C, 6 end SevenIsland_SevaultCanyon_EventScript_1ACB07:: @ 81ACB07 - trainerbattle 0, TRAINER_PKMN_RANGER_KATELYN, 0, Text_18CB16, Text_18CB3E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_KATELYN, 0, Text_18CB16, Text_18CB3E specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACB2E @@ -7459,12 +7460,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACB07:: @ 81ACB07 end EventScript_1ACB2E:: @ 81ACB2E - trainerbattle 5, TRAINER_PKMN_RANGER_KATELYN, 0, Text_1C458E, Text_18CB3E + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PKMN_RANGER_KATELYN, 0, Text_1C458E, Text_18CB3E msgbox Text_18CB6C, 6 end SevenIsland_SevaultCanyon_EventScript_1ACB45:: @ 81ACB45 - trainerbattle 0, TRAINER_COOLTRAINER_LEROY, 0, Text_18CBB4, Text_18CBE0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_LEROY, 0, Text_18CBB4, Text_18CBE0 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACB6C @@ -7472,12 +7473,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACB45:: @ 81ACB45 end EventScript_1ACB6C:: @ 81ACB6C - trainerbattle 5, TRAINER_COOLTRAINER_LEROY, 0, Text_1C45C2, Text_18CBE0 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_COOLTRAINER_LEROY, 0, Text_1C45C2, Text_18CBE0 msgbox Text_18CC09, 6 end SevenIsland_SevaultCanyon_EventScript_1ACB83:: @ 81ACB83 - trainerbattle 0, TRAINER_COOLTRAINER_MICHELLE, 0, Text_18CC4F, Text_18CCAE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_MICHELLE, 0, Text_18CC4F, Text_18CCAE specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACBAA @@ -7485,12 +7486,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACB83:: @ 81ACB83 end EventScript_1ACBAA:: @ 81ACBAA - trainerbattle 5, TRAINER_COOLTRAINER_MICHELLE, 0, Text_1C45FB, Text_18CCAE + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_COOLTRAINER_MICHELLE, 0, Text_1C45FB, Text_18CCAE msgbox Text_18CCEA, 6 end SevenIsland_SevaultCanyon_EventScript_1ACBC1:: @ 81ACBC1 - trainerbattle 4, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_18CD49, Text_18CD75, Text_18CDE2 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_18CD49, Text_18CD75, Text_18CDE2 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACBEC @@ -7498,12 +7499,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACBC1:: @ 81ACBC1 end EventScript_1ACBEC:: @ 81ACBEC - trainerbattle 7, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_1C4662, Text_18CD75, Text_18CDE2 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_1C4662, Text_18CD75, Text_18CDE2 msgbox Text_18CD9C, 6 end SevenIsland_SevaultCanyon_EventScript_1ACC07:: @ 81ACC07 - trainerbattle 4, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_18CE20, Text_18CE5A, Text_18CEF4 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_18CE20, Text_18CE5A, Text_18CEF4 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACC32 @@ -7511,12 +7512,12 @@ SevenIsland_SevaultCanyon_EventScript_1ACC07:: @ 81ACC07 end EventScript_1ACC32:: @ 81ACC32 - trainerbattle 7, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_1C4699, Text_18CE5A, Text_18CEF4 + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, TRAINER_COOL_COUPLE_LEX_NYA, 0, Text_1C4699, Text_18CE5A, Text_18CEF4 msgbox Text_18CE78, 6 end SevenIsland_TanobyRuins_EventScript_1ACC4D:: @ 81ACC4D - trainerbattle 0, TRAINER_RUIN_MANIAC_BRANDON, 0, Text_18CFFB, Text_18D02A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_BRANDON, 0, Text_18CFFB, Text_18D02A specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACC74 @@ -7524,12 +7525,12 @@ SevenIsland_TanobyRuins_EventScript_1ACC4D:: @ 81ACC4D end EventScript_1ACC74:: @ 81ACC74 - trainerbattle 5, TRAINER_RUIN_MANIAC_BRANDON, 0, Text_1C46D3, Text_18D02A + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_RUIN_MANIAC_BRANDON, 0, Text_1C46D3, Text_18D02A msgbox Text_18D061, 6 end SevenIsland_TanobyRuins_EventScript_1ACC8B:: @ 81ACC8B - trainerbattle 0, TRAINER_RUIN_MANIAC_BENJAMIN, 0, Text_18D0D9, Text_18D108 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_BENJAMIN, 0, Text_18D0D9, Text_18D108 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACCB2 @@ -7537,12 +7538,12 @@ SevenIsland_TanobyRuins_EventScript_1ACC8B:: @ 81ACC8B end EventScript_1ACCB2:: @ 81ACCB2 - trainerbattle 5, TRAINER_RUIN_MANIAC_BENJAMIN, 0, Text_1C470A, Text_18D108 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_RUIN_MANIAC_BENJAMIN, 0, Text_1C470A, Text_18D108 msgbox Text_18D125, 6 end SevenIsland_TanobyRuins_EventScript_1ACCC9:: @ 81ACCC9 - trainerbattle 0, TRAINER_PAINTER_EDNA, 0, Text_18D18F, Text_18D1B5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PAINTER_EDNA, 0, Text_18D18F, Text_18D1B5 specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACCF0 @@ -7550,12 +7551,12 @@ SevenIsland_TanobyRuins_EventScript_1ACCC9:: @ 81ACCC9 end EventScript_1ACCF0:: @ 81ACCF0 - trainerbattle 5, TRAINER_PAINTER_EDNA, 0, Text_1C4739, Text_18D1B5 + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_PAINTER_EDNA, 0, Text_1C4739, Text_18D1B5 msgbox Text_18D1E3, 6 end SevenIsland_TanobyRuins_EventScript_1ACD07:: @ 81ACD07 - trainerbattle 0, TRAINER_GENTLEMAN_CLIFFORD, 0, Text_18D22F, Text_18D26D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GENTLEMAN_CLIFFORD, 0, Text_18D22F, Text_18D26D specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_if eq, EventScript_1ACD2E @@ -7563,7 +7564,7 @@ SevenIsland_TanobyRuins_EventScript_1ACD07:: @ 81ACD07 end EventScript_1ACD2E:: @ 81ACD2E - trainerbattle 5, TRAINER_GENTLEMAN_CLIFFORD, 0, Text_1C476A, Text_18D26D + trainerbattle TRAINER_BATTLE_REMATCH, TRAINER_GENTLEMAN_CLIFFORD, 0, Text_1C476A, Text_18D26D msgbox Text_18D284, 6 end diff --git a/data/maps/CeladonCity_GameCorner/scripts.inc b/data/maps/CeladonCity_GameCorner/scripts.inc index 2d433d4ba..487d9fa64 100644 --- a/data/maps/CeladonCity_GameCorner/scripts.inc +++ b/data/maps/CeladonCity_GameCorner/scripts.inc @@ -429,7 +429,7 @@ EventScript_16CABE:: @ 816CABE return CeladonCity_GameCorner_EventScript_16CAF5:: @ 816CAF5 - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_7, 0, Text_196E69, Text_196E95, EventScript_16CB10 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_7, 0, Text_196E69, Text_196E95, EventScript_16CB10 msgbox gUnknown_8196E9B, 6 end diff --git a/data/maps/CeladonCity_Gym/scripts.inc b/data/maps/CeladonCity_Gym/scripts.inc index e0c5c4306..b92e99fe1 100644 --- a/data/maps/CeladonCity_Gym/scripts.inc +++ b/data/maps/CeladonCity_Gym/scripts.inc @@ -3,7 +3,7 @@ CeladonCity_Gym_MapScripts:: @ 816D060 CeladonCity_Gym_EventScript_16D061:: @ 816D061 famechecker FAMECHECKER_ERIKA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_ERIKA, 0, Text_197114, Text_197260, EventScript_16D0A0 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_ERIKA, 0, Text_197114, Text_197260, EventScript_16D0A0 checkflag FLAG_GOT_TM19_FROM_ERIKA goto_if FALSE, EventScript_16D0C6 famechecker FAMECHECKER_ERIKA, 4 @@ -38,39 +38,39 @@ EventScript_16D107:: @ 816D107 end CeladonCity_Gym_EventScript_16D111:: @ 816D111 - trainerbattle 0, TRAINER_LASS_KAY, 0, Text_19747C, Text_1974C4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_KAY, 0, Text_19747C, Text_1974C4 msgbox gUnknown_81974D6, 6 end CeladonCity_Gym_EventScript_16D128:: @ 816D128 - trainerbattle 0, TRAINER_LASS_LISA, 0, Text_1976C5, Text_1976FF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_LISA, 0, Text_1976C5, Text_1976FF famechecker FAMECHECKER_ERIKA, 2 msgbox gUnknown_8197708, 6 end CeladonCity_Gym_EventScript_16D14C:: @ 816D14C - trainerbattle 0, TRAINER_PICNICKER_TINA, 0, Text_197595, Text_1975BB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_TINA, 0, Text_197595, Text_1975BB msgbox gUnknown_81975D1, 6 end CeladonCity_Gym_EventScript_16D163:: @ 816D163 - trainerbattle 0, TRAINER_BEAUTY_BRIDGET, 0, Text_1974FA, Text_19751C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_BRIDGET, 0, Text_1974FA, Text_19751C msgbox gUnknown_8197527, 6 end CeladonCity_Gym_EventScript_16D17A:: @ 816D17A - trainerbattle 0, TRAINER_BEAUTY_TAMIA, 0, Text_19760B, Text_197660 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_TAMIA, 0, Text_19760B, Text_197660 famechecker FAMECHECKER_ERIKA, 3 msgbox gUnknown_8197664, 6 end CeladonCity_Gym_EventScript_16D19E:: @ 816D19E - trainerbattle 0, TRAINER_BEAUTY_LORI, 0, Text_197747, Text_19777A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BEAUTY_LORI, 0, Text_197747, Text_19777A msgbox gUnknown_8197788, 6 end CeladonCity_Gym_EventScript_16D1B5:: @ 816D1B5 - trainerbattle 0, TRAINER_COOLTRAINER_MARY, 0, Text_1977E5, Text_197832 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_MARY, 0, Text_1977E5, Text_197832 msgbox gUnknown_819783E, 6 end diff --git a/data/maps/CeruleanCity/scripts.inc b/data/maps/CeruleanCity/scripts.inc index 588df6ccd..bd660c660 100644 --- a/data/maps/CeruleanCity/scripts.inc +++ b/data/maps/CeruleanCity/scripts.inc @@ -73,15 +73,15 @@ EventScript_1664CC:: @ 81664CC end EventScript_166582:: @ 8166582 - trainerbattle 3, TRAINER_RIVAL_CERULEAN_SQUIRTLE, 0, Text_17EB71 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_CERULEAN_SQUIRTLE, 0, Text_17EB71 return EventScript_16658D:: @ 816658D - trainerbattle 3, TRAINER_RIVAL_CERULEAN_BULBASAUR, 0, Text_17EB71 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_CERULEAN_BULBASAUR, 0, Text_17EB71 return EventScript_166598:: @ 8166598 - trainerbattle 3, TRAINER_RIVAL_CERULEAN_CHARMANDER, 0, Text_17EB71 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_CERULEAN_CHARMANDER, 0, Text_17EB71 return EventScript_1665A3:: @ 81665A3 @@ -177,7 +177,7 @@ CeruleanCity_EventScript_166603:: @ 8166603 waitmessage playbgm MUS_ROCKET, 0 waitbuttonpress - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_5, 0, Text_17EE70 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_5, 0, Text_17EE70 setvar VAR_MAP_SCENE_CERULEAN_CITY_ROCKET, 1 goto EventScript_16662E end @@ -228,7 +228,7 @@ EventScript_1666C3:: @ 81666C3 textcolor 0 msgbox Text_17EE0E setvar VAR_LAST_TALKED, 2 - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_5, 0, Text_17EE70 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_5, 0, Text_17EE70 setvar VAR_MAP_SCENE_CERULEAN_CITY_ROCKET, 1 goto EventScript_16662E end diff --git a/data/maps/CeruleanCity_Gym/scripts.inc b/data/maps/CeruleanCity_Gym/scripts.inc index c53c9718b..a37d3435b 100644 --- a/data/maps/CeruleanCity_Gym/scripts.inc +++ b/data/maps/CeruleanCity_Gym/scripts.inc @@ -3,7 +3,7 @@ CeruleanCity_Gym_MapScripts:: @ 816AAA0 CeruleanCity_Gym_EventScript_16AAA1:: @ 816AAA1 famechecker FAMECHECKER_MISTY, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_MISTY, 0, Text_1921EF, Text_19242D, EventScript_16AAD3 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_MISTY, 0, Text_1921EF, Text_19242D, EventScript_16AAD3 checkflag FLAG_GOT_TM03_FROM_MISTY goto_if FALSE, EventScript_16AAF9 msgbox gUnknown_81922BF @@ -37,12 +37,12 @@ EventScript_16AB3A:: @ 816AB3A end CeruleanCity_Gym_EventScript_16AB44:: @ 816AB44 - trainerbattle 0, TRAINER_PICNICKER_DIANA, 0, Text_192481, Text_1924D0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_DIANA, 0, Text_192481, Text_1924D0 msgbox gUnknown_81924E4, 6 end CeruleanCity_Gym_EventScript_16AB5B:: @ 816AB5B - trainerbattle 0, TRAINER_SWIMMER_MALE_LUIS, 0, Text_192524, Text_192547 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SWIMMER_MALE_LUIS, 0, Text_192524, Text_192547 famechecker FAMECHECKER_MISTY, 2 msgbox gUnknown_8192556, 6 end diff --git a/data/maps/CinnabarIsland_Gym/scripts.inc b/data/maps/CinnabarIsland_Gym/scripts.inc index 88df6972a..9e67b156d 100644 --- a/data/maps/CinnabarIsland_Gym/scripts.inc +++ b/data/maps/CinnabarIsland_Gym/scripts.inc @@ -54,7 +54,7 @@ EventScript_16D9CE:: @ 816D9CE CinnabarIsland_Gym_EventScript_16D9D4:: @ 816D9D4 famechecker FAMECHECKER_BLAINE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_BLAINE, 0, Text_199543, Text_1995FA, EventScript_16DA06 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_BLAINE, 0, Text_199543, Text_1995FA, EventScript_16DA06 checkflag FLAG_GOT_TM38_FROM_BLAINE goto_if FALSE, EventScript_16DA34 msgbox gUnknown_819971D @@ -90,12 +90,12 @@ EventScript_16DA75:: @ 816DA75 end CinnabarIsland_Gym_EventScript_16DA7F:: @ 816DA7F - trainerbattle 0, TRAINER_SUPER_NERD_ERIK, 0, Text_1997A5, Text_1997D6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SUPER_NERD_ERIK, 0, Text_1997A5, Text_1997D6 msgbox gUnknown_81997EA, 6 end CinnabarIsland_Gym_EventScript_16DA96:: @ 816DA96 - trainerbattle 2, TRAINER_SUPER_NERD_AVERY, 0, Text_1998BD, Text_1998ED, EventScript_16DAB1 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_SUPER_NERD_AVERY, 0, Text_1998BD, Text_1998ED, EventScript_16DAB1 msgbox gUnknown_8199911, 6 end @@ -110,7 +110,7 @@ EventScript_16DABC:: @ 816DABC return CinnabarIsland_Gym_EventScript_16DAC2:: @ 816DAC2 - trainerbattle 2, TRAINER_SUPER_NERD_DEREK, 0, Text_1999B7, Text_1999DB, EventScript_16DAEA + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_SUPER_NERD_DEREK, 0, Text_1999B7, Text_1999DB, EventScript_16DAEA famechecker FAMECHECKER_BLAINE, 2 msgbox gUnknown_81999DF, 6 end @@ -126,7 +126,7 @@ EventScript_16DAF5:: @ 816DAF5 return CinnabarIsland_Gym_EventScript_16DAFB:: @ 816DAFB - trainerbattle 2, TRAINER_SUPER_NERD_ZAC, 0, Text_199AFC, Text_199B16, EventScript_16DB16 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_SUPER_NERD_ZAC, 0, Text_199AFC, Text_199B16, EventScript_16DB16 msgbox gUnknown_8199B27, 6 end @@ -141,7 +141,7 @@ EventScript_16DB21:: @ 816DB21 return CinnabarIsland_Gym_EventScript_16DB27:: @ 816DB27 - trainerbattle 2, TRAINER_BURGLAR_QUINN, 0, Text_19983F, Text_199870, EventScript_16DB42 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_BURGLAR_QUINN, 0, Text_19983F, Text_199870, EventScript_16DB42 msgbox gUnknown_819987D, 6 end @@ -156,7 +156,7 @@ EventScript_16DB4D:: @ 816DB4D return CinnabarIsland_Gym_EventScript_16DB53:: @ 816DB53 - trainerbattle 2, TRAINER_BURGLAR_RAMON, 0, Text_199948, Text_199973, EventScript_16DB6E + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_BURGLAR_RAMON, 0, Text_199948, Text_199973, EventScript_16DB6E msgbox gUnknown_8199986, 6 end @@ -171,7 +171,7 @@ EventScript_16DB79:: @ 816DB79 return CinnabarIsland_Gym_EventScript_16DB7F:: @ 816DB7F - trainerbattle 2, TRAINER_BURGLAR_DUSTY, 0, Text_199A7F, Text_199AB9, EventScript_16DB9A + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_BURGLAR_DUSTY, 0, Text_199A7F, Text_199AB9, EventScript_16DB9A msgbox gUnknown_8199AC9, 6 end @@ -281,7 +281,7 @@ EventScript_16DC7A:: @ 816DC7A call_if eq, EventScript_16DCC6 textcolor 0 msgbox gUnknown_819983F - trainerbattle 3, TRAINER_BURGLAR_QUINN, 0, Text_199870 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BURGLAR_QUINN, 0, Text_199870 checkflag FLAG_CINNABAR_GYM_QUIZ_1 goto_if TRUE, EventScript_16DC68 call EventScript_16DC58 @@ -360,7 +360,7 @@ EventScript_16DD51:: @ 816DD51 call_if eq, EventScript_16DD9D textcolor 0 msgbox gUnknown_81998BD - trainerbattle 3, TRAINER_SUPER_NERD_AVERY, 0, Text_1998ED + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_SUPER_NERD_AVERY, 0, Text_1998ED checkflag FLAG_CINNABAR_GYM_QUIZ_2 goto_if TRUE, EventScript_16DC68 call EventScript_16DD31 @@ -448,7 +448,7 @@ EventScript_16DE2F:: @ 816DE2F call_if eq, EventScript_16DE7B textcolor 0 msgbox gUnknown_8199948 - trainerbattle 3, TRAINER_BURGLAR_RAMON, 0, Text_199973 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BURGLAR_RAMON, 0, Text_199973 checkflag FLAG_CINNABAR_GYM_QUIZ_3 goto_if TRUE, EventScript_16DC68 call EventScript_16DE0F @@ -527,7 +527,7 @@ EventScript_16DF06:: @ 816DF06 call_if eq, EventScript_16DF52 textcolor 0 msgbox gUnknown_81999B7 - trainerbattle 3, TRAINER_SUPER_NERD_DEREK, 0, Text_1999DB + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_SUPER_NERD_DEREK, 0, Text_1999DB checkflag FLAG_CINNABAR_GYM_QUIZ_4 goto_if TRUE, EventScript_16DC68 call EventScript_16DEE6 @@ -606,7 +606,7 @@ EventScript_16DFDD:: @ 816DFDD call_if eq, EventScript_16E029 textcolor 0 msgbox gUnknown_8199A7F - trainerbattle 3, TRAINER_BURGLAR_DUSTY, 0, Text_199AB9 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BURGLAR_DUSTY, 0, Text_199AB9 checkflag FLAG_CINNABAR_GYM_QUIZ_5 goto_if TRUE, EventScript_16DC68 call EventScript_16DFBD @@ -685,7 +685,7 @@ EventScript_16E0B4:: @ 816E0B4 call_if eq, EventScript_16E100 textcolor 0 msgbox gUnknown_8199AFC - trainerbattle 3, TRAINER_SUPER_NERD_ZAC, 0, Text_199B16 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_SUPER_NERD_ZAC, 0, Text_199B16 checkflag FLAG_CINNABAR_GYM_QUIZ_6 goto_if TRUE, EventScript_16DC68 call EventScript_16E094 diff --git a/data/maps/FiveIsland_LostCave_Room1/scripts.inc b/data/maps/FiveIsland_LostCave_Room1/scripts.inc index a5e25d092..62880594c 100644 --- a/data/maps/FiveIsland_LostCave_Room1/scripts.inc +++ b/data/maps/FiveIsland_LostCave_Room1/scripts.inc @@ -2,6 +2,6 @@ FiveIsland_LostCave_Room1_MapScripts:: @ 8164BF6 .byte 0 FiveIsland_LostCave_Room1_EventScript_164BF7:: @ 8164BF7 - trainerbattle 0, TRAINER_RUIN_MANIAC_LAWSON, 0, Text_17CEF5, Text_17CF42 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_LAWSON, 0, Text_17CEF5, Text_17CF42 msgbox gUnknown_817CF54, 6 end diff --git a/data/maps/FiveIsland_LostCave_Room10/scripts.inc b/data/maps/FiveIsland_LostCave_Room10/scripts.inc index 0829a0273..b214279d1 100644 --- a/data/maps/FiveIsland_LostCave_Room10/scripts.inc +++ b/data/maps/FiveIsland_LostCave_Room10/scripts.inc @@ -28,7 +28,7 @@ EventScript_164C52:: @ 8164C52 special sub_8110AB4 compare_var_to_value VAR_RESULT, 2 goto_if eq, EventScript_164CB6 - trainerbattle 3, TRAINER_LADY_SELPHY, 0, Text_17D086 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_LADY_SELPHY, 0, Text_17D086 msgbox gUnknown_817D0B2 closemessage call EventScript_164CA5 diff --git a/data/maps/FiveIsland_LostCave_Room4/scripts.inc b/data/maps/FiveIsland_LostCave_Room4/scripts.inc index 4b73aecb8..28913bb80 100644 --- a/data/maps/FiveIsland_LostCave_Room4/scripts.inc +++ b/data/maps/FiveIsland_LostCave_Room4/scripts.inc @@ -2,6 +2,6 @@ FiveIsland_LostCave_Room4_MapScripts:: @ 8164C10 .byte 0 FiveIsland_LostCave_Room4_EventScript_164C11:: @ 8164C11 - trainerbattle 0, TRAINER_PSYCHIC_LAURA, 0, Text_17CFC1, Text_17CFFB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_LAURA, 0, Text_17CFC1, Text_17CFFB msgbox gUnknown_817D037, 6 end diff --git a/data/maps/FiveIsland_Meadow/scripts.inc b/data/maps/FiveIsland_Meadow/scripts.inc index 23f3e40f3..51ddd9dd9 100644 --- a/data/maps/FiveIsland_Meadow/scripts.inc +++ b/data/maps/FiveIsland_Meadow/scripts.inc @@ -39,16 +39,16 @@ EventScript_168983:: @ 8168983 return FiveIsland_Meadow_EventScript_16898D:: @ 816898D - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_49, 0, Text_18AC88, Text_18ACB3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_49, 0, Text_18AC88, Text_18ACB3 msgbox gUnknown_818ACC5, 6 end FiveIsland_Meadow_EventScript_1689A4:: @ 81689A4 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_50, 0, Text_18ACF0, Text_18AD39 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_50, 0, Text_18ACF0, Text_18AD39 msgbox gUnknown_818AD59, 6 end FiveIsland_Meadow_EventScript_1689BB:: @ 81689BB - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_51, 0, Text_18ADC6, Text_18ADFB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_51, 0, Text_18ADC6, Text_18ADFB msgbox gUnknown_818AE16, 6 end diff --git a/data/maps/FiveIsland_RocketWarehouse/scripts.inc b/data/maps/FiveIsland_RocketWarehouse/scripts.inc index 25416a6b4..e6fb90088 100644 --- a/data/maps/FiveIsland_RocketWarehouse/scripts.inc +++ b/data/maps/FiveIsland_RocketWarehouse/scripts.inc @@ -43,7 +43,7 @@ FiveIsland_RocketWarehouse_EventScript_163F81:: @ 8163F81 end FiveIsland_RocketWarehouse_EventScript_163F93:: @ 8163F93 - trainerbattle 2, TRAINER_SCIENTIST_GIDEON, 0, Text_17BBAF, Text_17BC55, EventScript_163FCD + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_SCIENTIST_GIDEON, 0, Text_17BBAF, Text_17BC55, EventScript_163FCD checkflag FLAG_SYS_CAN_LINK_WITH_RS goto_if TRUE, EventScript_163FB7 msgbox gUnknown_817BCA3, 6 @@ -62,17 +62,17 @@ EventScript_163FCD:: @ 8163FCD end FiveIsland_RocketWarehouse_EventScript_163FE6:: @ 8163FE6 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_47, 0, Text_17B54D, Text_17B585 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_47, 0, Text_17B54D, Text_17B585 msgbox gUnknown_817B5A6, 6 end FiveIsland_RocketWarehouse_EventScript_163FFD:: @ 8163FFD - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_48, 0, Text_17B677, Text_17B6D9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_48, 0, Text_17B677, Text_17B6D9 msgbox gUnknown_817B6EF, 6 end FiveIsland_RocketWarehouse_EventScript_164014:: @ 8164014 - trainerbattle 2, TRAINER_TEAM_ROCKET_ADMIN_2, 0, Text_17B8DA, Text_17B9FB, EventScript_16402F + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_ADMIN_2, 0, Text_17B8DA, Text_17B9FB, EventScript_16402F msgbox gUnknown_817BA64, 6 end @@ -100,12 +100,12 @@ EventScript_164065:: @ 8164065 return FiveIsland_RocketWarehouse_EventScript_164070:: @ 8164070 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_42, 0, Text_17B5D6, Text_17B62F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_42, 0, Text_17B5D6, Text_17B62F msgbox gUnknown_817B642, 6 end FiveIsland_RocketWarehouse_EventScript_164087:: @ 8164087 - trainerbattle 2, TRAINER_TEAM_ROCKET_ADMIN, 0, Text_17B72D, Text_17B79C, EventScript_1640A2 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_ADMIN, 0, Text_17B72D, Text_17B79C, EventScript_1640A2 msgbox gUnknown_817B7FA, 6 end diff --git a/data/maps/FourIsland_IcefallCave_Back/scripts.inc b/data/maps/FourIsland_IcefallCave_Back/scripts.inc index eadc1f469..684c7506c 100644 --- a/data/maps/FourIsland_IcefallCave_Back/scripts.inc +++ b/data/maps/FourIsland_IcefallCave_Back/scripts.inc @@ -46,7 +46,7 @@ FourIsland_IcefallCave_Back_EventScript_163D98:: @ 8163D98 textcolor 0 msgbox gUnknown_817B20B setvar VAR_LAST_TALKED, 4 - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_45, 0, Text_17B251 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_45, 0, Text_17B251 applymovement 3, Movement_163F1B waitmovement 0 textcolor 1 diff --git a/data/maps/FuchsiaCity_Gym/scripts.inc b/data/maps/FuchsiaCity_Gym/scripts.inc index 57d866f6b..8160e0fb3 100644 --- a/data/maps/FuchsiaCity_Gym/scripts.inc +++ b/data/maps/FuchsiaCity_Gym/scripts.inc @@ -3,7 +3,7 @@ FuchsiaCity_Gym_MapScripts:: @ 816D54D FuchsiaCity_Gym_EventScript_16D54E:: @ 816D54E famechecker FAMECHECKER_KOGA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_KOGA, 0, Text_19832E, Text_198444, EventScript_16D580 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_KOGA, 0, Text_19832E, Text_198444, EventScript_16D580 checkflag FLAG_GOT_TM06_FROM_KOGA goto_if FALSE, EventScript_16D5A6 msgbox gUnknown_8198481 @@ -37,33 +37,33 @@ EventScript_16D5E7:: @ 816D5E7 end FuchsiaCity_Gym_EventScript_16D5F1:: @ 816D5F1 - trainerbattle 0, TRAINER_TAMER_PHIL, 0, Text_198866, Text_1988B6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_PHIL, 0, Text_198866, Text_1988B6 msgbox gUnknown_81988CB, 6 end FuchsiaCity_Gym_EventScript_16D608:: @ 816D608 - trainerbattle 0, TRAINER_TAMER_EDGAR, 0, Text_19891F, Text_19897F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_EDGAR, 0, Text_19891F, Text_19897F msgbox gUnknown_8198985, 6 end FuchsiaCity_Gym_EventScript_16D61F:: @ 816D61F - trainerbattle 0, TRAINER_JUGGLER_KIRK, 0, Text_19871E, Text_198779 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_KIRK, 0, Text_19871E, Text_198779 famechecker FAMECHECKER_KOGA, 2 msgbox gUnknown_8198787, 6 end FuchsiaCity_Gym_EventScript_16D643:: @ 816D643 - trainerbattle 0, TRAINER_JUGGLER_SHAWN, 0, Text_1989A1, Text_1989EA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_SHAWN, 0, Text_1989A1, Text_1989EA msgbox gUnknown_8198A10, 6 end FuchsiaCity_Gym_EventScript_16D65A:: @ 816D65A - trainerbattle 0, TRAINER_JUGGLER_KAYDEN, 0, Text_198629, Text_1986B4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_KAYDEN, 0, Text_198629, Text_1986B4 msgbox gUnknown_81986C9, 6 end FuchsiaCity_Gym_EventScript_16D671:: @ 816D671 - trainerbattle 0, TRAINER_JUGGLER_NATE, 0, Text_1987E8, Text_198812 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_NATE, 0, Text_1987E8, Text_198812 msgbox gUnknown_8198825, 6 end diff --git a/data/maps/MtEmber_Exterior/scripts.inc b/data/maps/MtEmber_Exterior/scripts.inc index cea59adfc..1ee18f696 100644 --- a/data/maps/MtEmber_Exterior/scripts.inc +++ b/data/maps/MtEmber_Exterior/scripts.inc @@ -43,7 +43,7 @@ EventScript_1639A8:: @ 81639A8 waitmovement 0 playbgm MUS_ROCKET, 0 msgbox gUnknown_817AA06 - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_43, 0, Text_17AA34 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_43, 0, Text_17AA34 msgbox gUnknown_817AA3F checktrainerflag TRAINER_TEAM_ROCKET_GRUNT_44 goto_if eq, EventScript_1639DB @@ -82,7 +82,7 @@ EventScript_163A1B:: @ 8163A1B EventScript_163A25:: @ 8163A25 playbgm MUS_ROCKET, 0 msgbox gUnknown_817AA56 - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_44, 0, Text_17AA8A + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_44, 0, Text_17AA8A msgbox gUnknown_817AA99 checktrainerflag TRAINER_TEAM_ROCKET_GRUNT_43 goto_if eq, EventScript_1639DB @@ -116,16 +116,16 @@ MtEmber_Exterior_EventScript_163A4E:: @ 8163A4E end MtEmber_Exterior_EventScript_163AB4:: @ 8163AB4 - trainerbattle 0, TRAINER_PKMN_RANGER_LOGAN, 0, Text_17AB73, Text_17ABAA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_LOGAN, 0, Text_17AB73, Text_17ABAA msgbox gUnknown_817ABD8, 6 end MtEmber_Exterior_EventScript_163ACB:: @ 8163ACB - trainerbattle 0, TRAINER_PKMN_RANGER_BETH, 0, Text_17AC55, Text_17AC82 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_RANGER_BETH, 0, Text_17AC55, Text_17AC82 msgbox gUnknown_817ACA2, 6 end MtEmber_Exterior_EventScript_163AE2:: @ 8163AE2 - trainerbattle 0, TRAINER_CRUSH_GIRL_JOCELYN, 0, Text_17AD06, Text_17AD6B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CRUSH_GIRL_JOCELYN, 0, Text_17AD06, Text_17AD6B msgbox gUnknown_817AD89, 6 end diff --git a/data/maps/MtMoon_1F/scripts.inc b/data/maps/MtMoon_1F/scripts.inc index df67e7c8a..28bc65ec9 100644 --- a/data/maps/MtMoon_1F/scripts.inc +++ b/data/maps/MtMoon_1F/scripts.inc @@ -11,36 +11,36 @@ MtMoon_1F_EventScript_1605EE:: @ 81605EE end MtMoon_1F_EventScript_1605F7:: @ 81605F7 - trainerbattle 0, TRAINER_HIKER_MARCOS, 0, Text_17279D, Text_1727CB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_MARCOS, 0, Text_17279D, Text_1727CB msgbox gUnknown_81727DF, 6 end MtMoon_1F_EventScript_16060E:: @ 816060E - trainerbattle 0, TRAINER_YOUNGSTER_JOSH, 0, Text_17281D, Text_172844 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_JOSH, 0, Text_17281D, Text_172844 msgbox gUnknown_8172863, 6 end MtMoon_1F_EventScript_160625:: @ 8160625 - trainerbattle 0, TRAINER_LASS_MIRIAM, 0, Text_172896, Text_1728C3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_MIRIAM, 0, Text_172896, Text_1728C3 msgbox gUnknown_81728D2, 6 end MtMoon_1F_EventScript_16063C:: @ 816063C - trainerbattle 0, TRAINER_LASS_IRIS, 0, Text_172972, Text_1729A4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_IRIS, 0, Text_172972, Text_1729A4 msgbox gUnknown_81729AC, 6 end MtMoon_1F_EventScript_160653:: @ 8160653 - trainerbattle 0, TRAINER_SUPER_NERD_JOVAN, 0, Text_17290B, Text_172927 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SUPER_NERD_JOVAN, 0, Text_17290B, Text_172927 msgbox gUnknown_817293C, 6 end MtMoon_1F_EventScript_16066A:: @ 816066A - trainerbattle 0, TRAINER_BUG_CATCHER_KENT, 0, Text_1729EA, Text_172A1A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_KENT, 0, Text_1729EA, Text_172A1A msgbox gUnknown_8172A26, 6 end MtMoon_1F_EventScript_160681:: @ 8160681 - trainerbattle 0, TRAINER_BUG_CATCHER_ROBBY, 0, Text_172A55, Text_172A8F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_ROBBY, 0, Text_172A55, Text_172A8F msgbox gUnknown_8172A97, 6 end diff --git a/data/maps/MtMoon_B2F/scripts.inc b/data/maps/MtMoon_B2F/scripts.inc index caf90c005..5c26a3ad1 100644 --- a/data/maps/MtMoon_B2F/scripts.inc +++ b/data/maps/MtMoon_B2F/scripts.inc @@ -38,7 +38,7 @@ EventScript_1606DD:: @ 81606DD playbgm MUS_EXEYE, 0 waitbuttonpress setvar VAR_LAST_TALKED, 3 - trainerbattle 3, TRAINER_SUPER_NERD_MIGUEL, 0, Text_172B99 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_SUPER_NERD_MIGUEL, 0, Text_172B99 setvar VAR_MAP_SCENE_MT_MOON_B2F, 1 msgbox gUnknown_8172BAB return @@ -123,21 +123,21 @@ Movement_1607E0:: @ 81607E0 step_end MtMoon_B2F_EventScript_1607E4:: @ 81607E4 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT, 0, Text_172C5A, Text_172CB8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT, 0, Text_172C5A, Text_172CB8 msgbox gUnknown_8172CCB, 6 end MtMoon_B2F_EventScript_1607FB:: @ 81607FB - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_2, 0, Text_172CFC, Text_172D46 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_2, 0, Text_172CFC, Text_172D46 msgbox gUnknown_8172D51, 6 end MtMoon_B2F_EventScript_160812:: @ 8160812 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_3, 0, Text_172D82, Text_172DAF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_3, 0, Text_172D82, Text_172DAF msgbox gUnknown_8172DC1, 6 end MtMoon_B2F_EventScript_160829:: @ 8160829 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_4, 0, Text_172DF0, Text_172E3E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_4, 0, Text_172DF0, Text_172E3E msgbox gUnknown_8172E4B, 6 end diff --git a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc index 1cdb53ca1..850182c08 100644 --- a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc +++ b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc @@ -347,7 +347,7 @@ EventScript_16939C:: @ 816939C end EventScript_1693AC:: @ 81693AC - trainerbattle 9, TRAINER_RIVAL_OAKS_LAB_SQUIRTLE, 3, Text_18DDEA, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_OAKS_LAB_SQUIRTLE, 3, Text_18DDEA, Text_18DE1A goto EventScript_1694C2 end @@ -403,7 +403,7 @@ EventScript_169414:: @ 8169414 end EventScript_169424:: @ 8169424 - trainerbattle 9, TRAINER_RIVAL_OAKS_LAB_CHARMANDER, 3, Text_18DDEA, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_OAKS_LAB_CHARMANDER, 3, Text_18DDEA, Text_18DE1A goto EventScript_1694C2 end @@ -462,7 +462,7 @@ EventScript_16948F:: @ 816948F end EventScript_16949F:: @ 816949F - trainerbattle 9, TRAINER_RIVAL_OAKS_LAB_BULBASAUR, 3, Text_18DDEA, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_OAKS_LAB_BULBASAUR, 3, Text_18DDEA, Text_18DE1A goto EventScript_1694C2 end diff --git a/data/maps/PewterCity_Gym/scripts.inc b/data/maps/PewterCity_Gym/scripts.inc index e496769c7..39a6be51b 100644 --- a/data/maps/PewterCity_Gym/scripts.inc +++ b/data/maps/PewterCity_Gym/scripts.inc @@ -3,7 +3,7 @@ PewterCity_Gym_MapScripts:: @ 816A592 PewterCity_Gym_EventScript_16A593:: @ 816A593 famechecker FAMECHECKER_BROCK, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_BROCK, 0, Text_190CD4, Text_190E4F, EventScript_16A5C5 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_BROCK, 0, Text_190CD4, Text_190E4F, EventScript_16A5C5 checkflag FLAG_GOT_TM39_FROM_BROCK goto_if FALSE, EventScript_16A5F3 msgbox gUnknown_819110F @@ -39,7 +39,7 @@ EventScript_16A634:: @ 816A634 end PewterCity_Gym_EventScript_16A63E:: @ 816A63E - trainerbattle 0, TRAINER_CAMPER_LIAM, 0, Text_1911EC, Text_191237 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_LIAM, 0, Text_1911EC, Text_191237 msgbox gUnknown_819126B, 6 end diff --git a/data/maps/PokemonLeague_AgathasRoom/scripts.inc b/data/maps/PokemonLeague_AgathasRoom/scripts.inc index 4d4bcee59..260a2acff 100644 --- a/data/maps/PokemonLeague_AgathasRoom/scripts.inc +++ b/data/maps/PokemonLeague_AgathasRoom/scripts.inc @@ -78,11 +78,11 @@ EventScript_1628F2:: @ 81628F2 return EventScript_1628FB:: @ 81628FB - trainerbattle 3, TRAINER_ELITE_FOUR_AGATHA, 0, Text_1786D7 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_AGATHA, 0, Text_1786D7 return EventScript_162906:: @ 8162906 - trainerbattle 3, TRAINER_ELITE_FOUR_AGATHA_2, 0, Text_1786D7 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_AGATHA_2, 0, Text_1786D7 return EventScript_162911:: @ 8162911 diff --git a/data/maps/PokemonLeague_BrunosRoom/scripts.inc b/data/maps/PokemonLeague_BrunosRoom/scripts.inc index 66c688505..afbaad9e6 100644 --- a/data/maps/PokemonLeague_BrunosRoom/scripts.inc +++ b/data/maps/PokemonLeague_BrunosRoom/scripts.inc @@ -77,11 +77,11 @@ EventScript_16275A:: @ 816275A return EventScript_162763:: @ 8162763 - trainerbattle 3, TRAINER_ELITE_FOUR_BRUNO, 0, Text_178409 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_BRUNO, 0, Text_178409 return EventScript_16276E:: @ 816276E - trainerbattle 3, TRAINER_ELITE_FOUR_BRUNO_2, 0, Text_178409 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_BRUNO_2, 0, Text_178409 return EventScript_162779:: @ 8162779 diff --git a/data/maps/PokemonLeague_ChampionsRoom/scripts.inc b/data/maps/PokemonLeague_ChampionsRoom/scripts.inc index f4f2427b4..8b0fff2ce 100644 --- a/data/maps/PokemonLeague_ChampionsRoom/scripts.inc +++ b/data/maps/PokemonLeague_ChampionsRoom/scripts.inc @@ -142,27 +142,27 @@ EventScript_162CBC:: @ 8162CBC return EventScript_162CC5:: @ 8162CC5 - trainerbattle 3, TRAINER_CHAMPION_FIRST_SQUIRTLE, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_FIRST_SQUIRTLE, 0, Text_178E3F return EventScript_162CD0:: @ 8162CD0 - trainerbattle 3, TRAINER_CHAMPION_FIRST_BULBASAUR, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_FIRST_BULBASAUR, 0, Text_178E3F return EventScript_162CDB:: @ 8162CDB - trainerbattle 3, TRAINER_CHAMPION_FIRST_CHARMANDER, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_FIRST_CHARMANDER, 0, Text_178E3F return EventScript_162CE6:: @ 8162CE6 - trainerbattle 3, TRAINER_CHAMPION_REMATCH_SQUIRTLE, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_REMATCH_SQUIRTLE, 0, Text_178E3F return EventScript_162CF1:: @ 8162CF1 - trainerbattle 3, TRAINER_CHAMPION_REMATCH_BULBASAUR, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_REMATCH_BULBASAUR, 0, Text_178E3F return EventScript_162CFC:: @ 8162CFC - trainerbattle 3, TRAINER_CHAMPION_REMATCH_CHARMANDER, 0, Text_178E3F + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CHAMPION_REMATCH_CHARMANDER, 0, Text_178E3F return Movement_162D07:: @ 8162D07 diff --git a/data/maps/PokemonLeague_LancesRoom/scripts.inc b/data/maps/PokemonLeague_LancesRoom/scripts.inc index 09cdb49b8..0ec0cb7e6 100644 --- a/data/maps/PokemonLeague_LancesRoom/scripts.inc +++ b/data/maps/PokemonLeague_LancesRoom/scripts.inc @@ -131,11 +131,11 @@ EventScript_162A82:: @ 8162A82 return EventScript_162A8B:: @ 8162A8B - trainerbattle 3, TRAINER_ELITE_FOUR_LANCE, 0, Text_178A15 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_LANCE, 0, Text_178A15 return EventScript_162A96:: @ 8162A96 - trainerbattle 3, TRAINER_ELITE_FOUR_LANCE_2, 0, Text_178A15 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_LANCE_2, 0, Text_178A15 return EventScript_162AA1:: @ 8162AA1 diff --git a/data/maps/PokemonLeague_LoreleisRoom/scripts.inc b/data/maps/PokemonLeague_LoreleisRoom/scripts.inc index 705308e02..df1cf1579 100644 --- a/data/maps/PokemonLeague_LoreleisRoom/scripts.inc +++ b/data/maps/PokemonLeague_LoreleisRoom/scripts.inc @@ -82,11 +82,11 @@ EventScript_16264A:: @ 816264A return EventScript_162653:: @ 8162653 - trainerbattle 3, TRAINER_ELITE_FOUR_LORELEI, 0, Text_178191 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_LORELEI, 0, Text_178191 return EventScript_16265E:: @ 816265E - trainerbattle 3, TRAINER_ELITE_FOUR_LORELEI_2, 0, Text_178191 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_ELITE_FOUR_LORELEI_2, 0, Text_178191 return EventScript_162669:: @ 8162669 diff --git a/data/maps/PokemonMansion_1F/scripts.inc b/data/maps/PokemonMansion_1F/scripts.inc index 7e934c833..ceb59874a 100644 --- a/data/maps/PokemonMansion_1F/scripts.inc +++ b/data/maps/PokemonMansion_1F/scripts.inc @@ -23,11 +23,11 @@ PokemonMansion_1F_EventScript_162212:: @ 8162212 end PokemonMansion_1F_EventScript_162226:: @ 8162226 - trainerbattle 0, TRAINER_SCIENTIST_TED, 0, Text_177364, Text_177391 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_TED, 0, Text_177364, Text_177391 msgbox gUnknown_8177397, 6 end PokemonMansion_1F_EventScript_16223D:: @ 816223D - trainerbattle 0, TRAINER_YOUNGSTER_JOHNSON, 0, Text_1773C6, Text_1773FD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_JOHNSON, 0, Text_1773C6, Text_1773FD msgbox gUnknown_8177418, 6 end diff --git a/data/maps/PokemonMansion_2F/scripts.inc b/data/maps/PokemonMansion_2F/scripts.inc index aaec8ebfd..c0bdae1e9 100644 --- a/data/maps/PokemonMansion_2F/scripts.inc +++ b/data/maps/PokemonMansion_2F/scripts.inc @@ -26,6 +26,6 @@ PokemonMansion_2F_EventScript_162281:: @ 8162281 end PokemonMansion_2F_EventScript_16228A:: @ 816228A - trainerbattle 0, TRAINER_BURGLAR_ARNIE, 0, Text_177498, Text_1774CB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BURGLAR_ARNIE, 0, Text_177498, Text_1774CB msgbox gUnknown_81774E3, 6 end diff --git a/data/maps/PokemonMansion_3F/scripts.inc b/data/maps/PokemonMansion_3F/scripts.inc index 27da3d538..6546b024e 100644 --- a/data/maps/PokemonMansion_3F/scripts.inc +++ b/data/maps/PokemonMansion_3F/scripts.inc @@ -22,11 +22,11 @@ PokemonMansion_3F_EventScript_1622C5:: @ 81622C5 end PokemonMansion_3F_EventScript_1622CE:: @ 81622CE - trainerbattle 0, TRAINER_BURGLAR_SIMON, 0, Text_1775E7, Text_177602 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BURGLAR_SIMON, 0, Text_1775E7, Text_177602 msgbox gUnknown_8177608, 6 end PokemonMansion_3F_EventScript_1622E5:: @ 81622E5 - trainerbattle 0, TRAINER_SCIENTIST_BRAYDON, 0, Text_177628, Text_177643 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_BRAYDON, 0, Text_177628, Text_177643 msgbox gUnknown_8177657, 6 end diff --git a/data/maps/PokemonMansion_B1F/scripts.inc b/data/maps/PokemonMansion_B1F/scripts.inc index 12f8b79e0..3baba4c34 100644 --- a/data/maps/PokemonMansion_B1F/scripts.inc +++ b/data/maps/PokemonMansion_B1F/scripts.inc @@ -22,11 +22,11 @@ PokemonMansion_B1F_EventScript_162320:: @ 8162320 end PokemonMansion_B1F_EventScript_162329:: @ 8162329 - trainerbattle 0, TRAINER_BURGLAR_LEWIS, 0, Text_1776C0, Text_1776D7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BURGLAR_LEWIS, 0, Text_1776C0, Text_1776D7 msgbox gUnknown_81776DE, 6 end PokemonMansion_B1F_EventScript_162340:: @ 8162340 - trainerbattle 0, TRAINER_SCIENTIST_IVAN, 0, Text_177720, Text_177757 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_IVAN, 0, Text_177720, Text_177757 msgbox gUnknown_817776A, 6 end diff --git a/data/maps/PokemonTower_2F/scripts.inc b/data/maps/PokemonTower_2F/scripts.inc index 4a7eb0efb..ff5fd8b9b 100644 --- a/data/maps/PokemonTower_2F/scripts.inc +++ b/data/maps/PokemonTower_2F/scripts.inc @@ -64,15 +64,15 @@ EventScript_16334B:: @ 816334B return EventScript_16335D:: @ 816335D - trainerbattle 3, TRAINER_RIVAL_POKENON_TOWER_SQUIRTLE, 0, Text_179D73 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_POKENON_TOWER_SQUIRTLE, 0, Text_179D73 return EventScript_163368:: @ 8163368 - trainerbattle 3, TRAINER_RIVAL_POKENON_TOWER_BULBASAUR, 0, Text_179D73 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_POKENON_TOWER_BULBASAUR, 0, Text_179D73 return EventScript_163373:: @ 8163373 - trainerbattle 3, TRAINER_RIVAL_POKENON_TOWER_CHARMANDER, 0, Text_179D73 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_POKENON_TOWER_CHARMANDER, 0, Text_179D73 return EventScript_16337E:: @ 816337E diff --git a/data/maps/PokemonTower_3F/scripts.inc b/data/maps/PokemonTower_3F/scripts.inc index 8549cd256..653a4e434 100644 --- a/data/maps/PokemonTower_3F/scripts.inc +++ b/data/maps/PokemonTower_3F/scripts.inc @@ -2,16 +2,16 @@ PokemonTower_3F_MapScripts:: @ 81633A6 .byte 0 PokemonTower_3F_EventScript_1633A7:: @ 81633A7 - trainerbattle 0, TRAINER_CHANNELER_PATRICIA, 0, Text_179FA0, Text_179FBC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_PATRICIA, 0, Text_179FA0, Text_179FBC msgbox gUnknown_8179FD3, 6 end PokemonTower_3F_EventScript_1633BE:: @ 81633BE - trainerbattle 0, TRAINER_CHANNELER_CARLY, 0, Text_179F62, Text_179F72 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_CARLY, 0, Text_179F62, Text_179F72 msgbox gUnknown_8179F88, 6 end PokemonTower_3F_EventScript_1633D5:: @ 81633D5 - trainerbattle 0, TRAINER_CHANNELER_HOPE, 0, Text_179F09, Text_179F21 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_HOPE, 0, Text_179F09, Text_179F21 msgbox gUnknown_8179F31, 6 end diff --git a/data/maps/PokemonTower_4F/scripts.inc b/data/maps/PokemonTower_4F/scripts.inc index 0047e6060..7aa23fbe8 100644 --- a/data/maps/PokemonTower_4F/scripts.inc +++ b/data/maps/PokemonTower_4F/scripts.inc @@ -2,16 +2,16 @@ PokemonTower_4F_MapScripts:: @ 81633EC .byte 0 PokemonTower_4F_EventScript_1633ED:: @ 81633ED - trainerbattle 0, TRAINER_CHANNELER_PAULA, 0, Text_17A004, Text_17A017 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_PAULA, 0, Text_17A004, Text_17A017 msgbox gUnknown_817A02B, 6 end PokemonTower_4F_EventScript_163404:: @ 8163404 - trainerbattle 0, TRAINER_CHANNELER_LAUREL, 0, Text_17A046, Text_17A061 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_LAUREL, 0, Text_17A046, Text_17A061 msgbox gUnknown_817A067, 6 end PokemonTower_4F_EventScript_16341B:: @ 816341B - trainerbattle 0, TRAINER_CHANNELER_JODY, 0, Text_17A096, Text_17A0AB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_JODY, 0, Text_17A096, Text_17A0AB msgbox gUnknown_817A0BB, 6 end diff --git a/data/maps/PokemonTower_5F/scripts.inc b/data/maps/PokemonTower_5F/scripts.inc index 0e6d48bc4..85517e241 100644 --- a/data/maps/PokemonTower_5F/scripts.inc +++ b/data/maps/PokemonTower_5F/scripts.inc @@ -22,21 +22,21 @@ PokemonTower_5F_EventScript_163453:: @ 8163453 end PokemonTower_5F_EventScript_16345B:: @ 816345B - trainerbattle 0, TRAINER_CHANNELER_TAMMY, 0, Text_17A11F, Text_17A132 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_TAMMY, 0, Text_17A11F, Text_17A132 msgbox gUnknown_817A138, 6 end PokemonTower_5F_EventScript_163472:: @ 8163472 - trainerbattle 0, TRAINER_CHANNELER_RUTH, 0, Text_17A150, Text_17A164 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_RUTH, 0, Text_17A150, Text_17A164 msgbox gUnknown_817A176, 6 end PokemonTower_5F_EventScript_163489:: @ 8163489 - trainerbattle 0, TRAINER_CHANNELER_KARINA, 0, Text_17A187, Text_17A190 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_KARINA, 0, Text_17A187, Text_17A190 msgbox gUnknown_817A194, 6 end PokemonTower_5F_EventScript_1634A0:: @ 81634A0 - trainerbattle 0, TRAINER_CHANNELER_JANAE, 0, Text_17A1AA, Text_17A1B7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_JANAE, 0, Text_17A1AA, Text_17A1B7 msgbox gUnknown_817A1BD, 6 end diff --git a/data/maps/PokemonTower_6F/scripts.inc b/data/maps/PokemonTower_6F/scripts.inc index 086f589de..1f889c052 100644 --- a/data/maps/PokemonTower_6F/scripts.inc +++ b/data/maps/PokemonTower_6F/scripts.inc @@ -36,16 +36,16 @@ Movement_163512:: @ 8163512 step_end PokemonTower_6F_EventScript_163514:: @ 8163514 - trainerbattle 0, TRAINER_CHANNELER_ANGELICA, 0, Text_17A243, Text_17A253 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_ANGELICA, 0, Text_17A243, Text_17A253 msgbox gUnknown_817A25A, 6 end PokemonTower_6F_EventScript_16352B:: @ 816352B - trainerbattle 0, TRAINER_CHANNELER_EMILIA, 0, Text_17A272, Text_17A27F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_EMILIA, 0, Text_17A272, Text_17A27F msgbox gUnknown_817A293, 6 end PokemonTower_6F_EventScript_163542:: @ 8163542 - trainerbattle 0, TRAINER_CHANNELER_JENNIFER, 0, Text_17A2C8, Text_17A2DC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_JENNIFER, 0, Text_17A2C8, Text_17A2DC msgbox gUnknown_817A2E2, 6 end diff --git a/data/maps/PokemonTower_7F/scripts.inc b/data/maps/PokemonTower_7F/scripts.inc index 20fd57e6f..f39d15c7e 100644 --- a/data/maps/PokemonTower_7F/scripts.inc +++ b/data/maps/PokemonTower_7F/scripts.inc @@ -16,7 +16,7 @@ PokemonTower_7F_EventScript_16355A:: @ 816355A end PokemonTower_7F_EventScript_163586:: @ 8163586 - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_19, 0, Text_17A380, Text_17A3A4, EventScript_1635A1 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_19, 0, Text_17A380, Text_17A3A4, EventScript_1635A1 msgbox gUnknown_817A3AF, 6 end @@ -103,7 +103,7 @@ Movement_163633:: @ 8163633 step_end PokemonTower_7F_EventScript_16363D:: @ 816363D - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_20, 0, Text_17A3CD, Text_17A466, EventScript_163658 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_20, 0, Text_17A3CD, Text_17A466, EventScript_163658 msgbox gUnknown_817A477, 6 end @@ -169,7 +169,7 @@ Movement_1636CD:: @ 81636CD step_end PokemonTower_7F_EventScript_1636D6:: @ 81636D6 - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_21, 0, Text_17A4CF, Text_17A4EE, EventScript_1636F1 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_21, 0, Text_17A4CF, Text_17A4EE, EventScript_1636F1 msgbox gUnknown_817A506, 6 end diff --git a/data/maps/RockTunnel_1F/scripts.inc b/data/maps/RockTunnel_1F/scripts.inc index f16127dc0..c2bb38afc 100644 --- a/data/maps/RockTunnel_1F/scripts.inc +++ b/data/maps/RockTunnel_1F/scripts.inc @@ -11,36 +11,36 @@ RockTunnel_1F_EventScript_162DE0:: @ 8162DE0 end RockTunnel_1F_EventScript_162DE9:: @ 8162DE9 - trainerbattle 0, TRAINER_HIKER_LENNY, 0, Text_179366, Text_179388 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_LENNY, 0, Text_179366, Text_179388 msgbox gUnknown_8179396, 6 end RockTunnel_1F_EventScript_162E00:: @ 8162E00 - trainerbattle 0, TRAINER_HIKER_OLIVER, 0, Text_1793F1, Text_17940E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_OLIVER, 0, Text_1793F1, Text_17940E msgbox gUnknown_817943A, 6 end RockTunnel_1F_EventScript_162E17:: @ 8162E17 - trainerbattle 0, TRAINER_HIKER_LUCAS, 0, Text_17947B, Text_1794AC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_LUCAS, 0, Text_17947B, Text_1794AC msgbox gUnknown_81794B4, 6 end RockTunnel_1F_EventScript_162E2E:: @ 8162E2E - trainerbattle 0, TRAINER_POKEMANIAC_ASHTON, 0, Text_1794D4, Text_1794EE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_ASHTON, 0, Text_1794D4, Text_1794EE msgbox gUnknown_81794F9, 6 end RockTunnel_1F_EventScript_162E45:: @ 8162E45 - trainerbattle 0, TRAINER_PICNICKER_LEAH, 0, Text_17951C, Text_179547 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_LEAH, 0, Text_17951C, Text_179547 msgbox gUnknown_8179558, 6 end RockTunnel_1F_EventScript_162E5C:: @ 8162E5C - trainerbattle 0, TRAINER_PICNICKER_ARIANA, 0, Text_1795E5, Text_179604 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_ARIANA, 0, Text_1795E5, Text_179604 msgbox gUnknown_8179613, 6 end RockTunnel_1F_EventScript_162E73:: @ 8162E73 - trainerbattle 0, TRAINER_PICNICKER_DANA, 0, Text_179577, Text_1795A1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_DANA, 0, Text_179577, Text_1795A1 msgbox gUnknown_81795B5, 6 end diff --git a/data/maps/RockTunnel_B1F/scripts.inc b/data/maps/RockTunnel_B1F/scripts.inc index 7ca22dde0..27650f752 100644 --- a/data/maps/RockTunnel_B1F/scripts.inc +++ b/data/maps/RockTunnel_B1F/scripts.inc @@ -2,41 +2,41 @@ RockTunnel_B1F_MapScripts:: @ 8162E8A .byte 0 RockTunnel_B1F_EventScript_162E8B:: @ 8162E8B - trainerbattle 0, TRAINER_PICNICKER_SOFIA, 0, Text_179657, Text_1796B9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_SOFIA, 0, Text_179657, Text_1796B9 msgbox gUnknown_81796CE, 6 end RockTunnel_B1F_EventScript_162EA2:: @ 8162EA2 - trainerbattle 0, TRAINER_PICNICKER_MARTHA, 0, Text_1798AD, Text_1798DD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_MARTHA, 0, Text_1798AD, Text_1798DD msgbox gUnknown_81798E9, 6 end RockTunnel_B1F_EventScript_162EB9:: @ 8162EB9 - trainerbattle 0, TRAINER_HIKER_DUDLEY, 0, Text_1796E1, Text_179700 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_DUDLEY, 0, Text_1796E1, Text_179700 msgbox gUnknown_8179712, 6 end RockTunnel_B1F_EventScript_162ED0:: @ 8162ED0 - trainerbattle 0, TRAINER_HIKER_ALLEN, 0, Text_179829, Text_179856 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_ALLEN, 0, Text_179829, Text_179856 msgbox gUnknown_817987A, 6 end RockTunnel_B1F_EventScript_162EE7:: @ 8162EE7 - trainerbattle 0, TRAINER_HIKER_ERIC, 0, Text_179916, Text_179932 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_HIKER_ERIC, 0, Text_179916, Text_179932 msgbox gUnknown_817993E, 6 end RockTunnel_B1F_EventScript_162EFE:: @ 8162EFE - trainerbattle 0, TRAINER_POKEMANIAC_COOPER, 0, Text_17973A, Text_17975F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_COOPER, 0, Text_17973A, Text_17975F msgbox gUnknown_8179777, 6 end RockTunnel_B1F_EventScript_162F15:: @ 8162F15 - trainerbattle 0, TRAINER_POKEMANIAC_STEVE, 0, Text_1797A4, Text_1797CB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_STEVE, 0, Text_1797A4, Text_1797CB msgbox gUnknown_81797DE, 6 end RockTunnel_B1F_EventScript_162F2C:: @ 8162F2C - trainerbattle 0, TRAINER_POKEMANIAC_WINSTON, 0, Text_179968, Text_179997 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_WINSTON, 0, Text_179968, Text_179997 msgbox gUnknown_81799AC, 6 end diff --git a/data/maps/RocketHideout_B1F/scripts.inc b/data/maps/RocketHideout_B1F/scripts.inc index 1e8f1b9d2..6e2f8eeb3 100644 --- a/data/maps/RocketHideout_B1F/scripts.inc +++ b/data/maps/RocketHideout_B1F/scripts.inc @@ -13,27 +13,27 @@ RocketHideout_B1F_MapScript2_1611AA:: @ 81611AA end RocketHideout_B1F_EventScript_1611AE:: @ 81611AE - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_8, 0, Text_174ECA, Text_174EED + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_8, 0, Text_174ECA, Text_174EED msgbox gUnknown_8174EFA, 6 end RocketHideout_B1F_EventScript_1611C5:: @ 81611C5 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_9, 0, Text_174F2C, Text_174F60 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_9, 0, Text_174F2C, Text_174F60 msgbox gUnknown_8174F66, 6 end RocketHideout_B1F_EventScript_1611DC:: @ 81611DC - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_10, 0, Text_174F94, Text_174FA4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_10, 0, Text_174F94, Text_174FA4 msgbox gUnknown_8174FB3, 6 end RocketHideout_B1F_EventScript_1611F3:: @ 81611F3 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_11, 0, Text_174FE1, Text_174FF8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_11, 0, Text_174FE1, Text_174FF8 msgbox gUnknown_8175007, 6 end RocketHideout_B1F_EventScript_16120A:: @ 816120A - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_12, 0, Text_17503A, Text_17505A, EventScript_161225 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_12, 0, Text_17503A, Text_17505A, EventScript_161225 msgbox gUnknown_8175060, 6 end diff --git a/data/maps/RocketHideout_B2F/scripts.inc b/data/maps/RocketHideout_B2F/scripts.inc index e3ed4b499..6264371b7 100644 --- a/data/maps/RocketHideout_B2F/scripts.inc +++ b/data/maps/RocketHideout_B2F/scripts.inc @@ -2,6 +2,6 @@ RocketHideout_B2F_MapScripts:: @ 81612A1 .byte 0 RocketHideout_B2F_EventScript_1612A2:: @ 81612A2 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_13, 0, Text_17508C, Text_1750BF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_13, 0, Text_17508C, Text_1750BF msgbox gUnknown_81750CC, 6 end diff --git a/data/maps/RocketHideout_B3F/scripts.inc b/data/maps/RocketHideout_B3F/scripts.inc index d322a36fb..5cc7fc7d8 100644 --- a/data/maps/RocketHideout_B3F/scripts.inc +++ b/data/maps/RocketHideout_B3F/scripts.inc @@ -2,11 +2,11 @@ RocketHideout_B3F_MapScripts:: @ 81612B9 .byte 0 RocketHideout_B3F_EventScript_1612BA:: @ 81612BA - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_14, 0, Text_17511A, Text_17514A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_14, 0, Text_17511A, Text_17514A msgbox gUnknown_817515B, 6 end RocketHideout_B3F_EventScript_1612D1:: @ 81612D1 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_15, 0, Text_17519E, Text_1751CE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_15, 0, Text_17519E, Text_1751CE msgbox gUnknown_81751E0, 6 end diff --git a/data/maps/RocketHideout_B4F/scripts.inc b/data/maps/RocketHideout_B4F/scripts.inc index 655ef389a..0ab5b0490 100644 --- a/data/maps/RocketHideout_B4F/scripts.inc +++ b/data/maps/RocketHideout_B4F/scripts.inc @@ -24,7 +24,7 @@ RocketHideout_B4F_EventScript_161317:: @ 8161317 waitmessage playbgm MUS_ROCKET, 0 waitbuttonpress - trainerbattle 3, TRAINER_BOSS_GIOVANNI, 0, Text_175318 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BOSS_GIOVANNI, 0, Text_175318 msgbox gUnknown_817532D fadescreen 1 closemessage @@ -48,7 +48,7 @@ RocketHideout_B4F_EventScript_161363:: @ 8161363 end RocketHideout_B4F_EventScript_161381:: @ 8161381 - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_18, 0, Text_175488, Text_1754B9, EventScript_16139D + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_18, 0, Text_175488, Text_1754B9, EventScript_16139D msgbox gUnknown_81754BD release end @@ -72,7 +72,7 @@ RocketHideout_B4F_EventScript_1613AD:: @ 81613AD end RocketHideout_B4F_EventScript_1613CE:: @ 81613CE - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_16, 0, Text_1753D0, Text_1753FE, EventScript_1613E9 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_16, 0, Text_1753D0, Text_1753FE, EventScript_1613E9 msgbox gUnknown_817540C, 6 end @@ -90,7 +90,7 @@ EventScript_1613E9:: @ 81613E9 end RocketHideout_B4F_EventScript_161418:: @ 8161418 - trainerbattle 2, TRAINER_TEAM_ROCKET_GRUNT_17, 0, Text_175437, Text_175463, EventScript_161433 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_TEAM_ROCKET_GRUNT_17, 0, Text_175437, Text_175463, EventScript_161433 msgbox gUnknown_817546A, 6 end diff --git a/data/maps/Route22/scripts.inc b/data/maps/Route22/scripts.inc index 0996b20a0..8a775e09c 100644 --- a/data/maps/Route22/scripts.inc +++ b/data/maps/Route22/scripts.inc @@ -73,15 +73,15 @@ EventScript_16835B:: @ 816835B return EventScript_16836D:: @ 816836D - trainerbattle 9, TRAINER_RIVAL_ROUTE22_EARLY_SQUIRTLE, 0, Text_188959, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_ROUTE22_EARLY_SQUIRTLE, 0, Text_188959, Text_18DE1A return EventScript_16837C:: @ 816837C - trainerbattle 9, TRAINER_RIVAL_ROUTE22_EARLY_BULBASAUR, 0, Text_188959, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_ROUTE22_EARLY_BULBASAUR, 0, Text_188959, Text_18DE1A return EventScript_16838B:: @ 816838B - trainerbattle 9, TRAINER_RIVAL_ROUTE22_EARLY_CHARMANDER, 0, Text_188959, Text_18DE1A + trainerbattle TRAINER_BATTLE_TUTORIAL, TRAINER_RIVAL_ROUTE22_EARLY_CHARMANDER, 0, Text_188959, Text_18DE1A return EventScript_16839A:: @ 816839A @@ -235,15 +235,15 @@ EventScript_1684A7:: @ 81684A7 return EventScript_1684B9:: @ 81684B9 - trainerbattle 3, TRAINER_RIVAL_ROUTE22_LATE_SQUIRTLE, 0, Text_188B08 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_ROUTE22_LATE_SQUIRTLE, 0, Text_188B08 return EventScript_1684C4:: @ 81684C4 - trainerbattle 3, TRAINER_RIVAL_ROUTE22_LATE_BULBASAUR, 0, Text_188B08 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_ROUTE22_LATE_BULBASAUR, 0, Text_188B08 return EventScript_1684CF:: @ 81684CF - trainerbattle 3, TRAINER_RIVAL_ROUTE22_LATE_CHARMANDER, 0, Text_188B08 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_ROUTE22_LATE_CHARMANDER, 0, Text_188B08 return Movement_1684DA:: @ 81684DA diff --git a/data/maps/Route24/scripts.inc b/data/maps/Route24/scripts.inc index 175cc7210..2760e17a3 100644 --- a/data/maps/Route24/scripts.inc +++ b/data/maps/Route24/scripts.inc @@ -60,7 +60,7 @@ EventScript_1686B9:: @ 81686B9 playbgm MUS_ROCKET, 0 waitbuttonpress setvar VAR_LAST_TALKED, 1 - trainerbattle 3, TRAINER_TEAM_ROCKET_GRUNT_6, 0, Text_188DDC + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_TEAM_ROCKET_GRUNT_6, 0, Text_188DDC msgbox gUnknown_8188DF1 setvar VAR_MAP_SCENE_ROUTE24, 1 return diff --git a/data/maps/SSAnne_1F_Room2/scripts.inc b/data/maps/SSAnne_1F_Room2/scripts.inc index 9e37f8eb8..ef73a522a 100644 --- a/data/maps/SSAnne_1F_Room2/scripts.inc +++ b/data/maps/SSAnne_1F_Room2/scripts.inc @@ -6,11 +6,11 @@ SSAnne_1F_Room2_EventScript_160BE6:: @ 8160BE6 end SSAnne_1F_Room2_EventScript_160BEF:: @ 8160BEF - trainerbattle 0, TRAINER_LASS_ANN, 0, Text_173A1A, Text_173A4F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_ANN, 0, Text_173A1A, Text_173A4F msgbox gUnknown_8173A7A, 6 end SSAnne_1F_Room2_EventScript_160C06:: @ 8160C06 - trainerbattle 0, TRAINER_YOUNGSTER_TYLER, 0, Text_173999, Text_1739B1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_TYLER, 0, Text_173999, Text_1739B1 msgbox gUnknown_81739C5, 6 end diff --git a/data/maps/SSAnne_1F_Room5/scripts.inc b/data/maps/SSAnne_1F_Room5/scripts.inc index 3d42c7860..11040e58f 100644 --- a/data/maps/SSAnne_1F_Room5/scripts.inc +++ b/data/maps/SSAnne_1F_Room5/scripts.inc @@ -2,6 +2,6 @@ SSAnne_1F_Room5_MapScripts:: @ 8160C66 .byte 0 SSAnne_1F_Room5_EventScript_160C67:: @ 8160C67 - trainerbattle 0, TRAINER_GENTLEMAN_ARTHUR, 0, Text_173BD1, Text_173BFA + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GENTLEMAN_ARTHUR, 0, Text_173BD1, Text_173BFA msgbox gUnknown_8173C30, 6 end diff --git a/data/maps/SSAnne_1F_Room7/scripts.inc b/data/maps/SSAnne_1F_Room7/scripts.inc index 560764b08..96b0ae20a 100644 --- a/data/maps/SSAnne_1F_Room7/scripts.inc +++ b/data/maps/SSAnne_1F_Room7/scripts.inc @@ -2,6 +2,6 @@ SSAnne_1F_Room7_MapScripts:: @ 8160C7E .byte 0 SSAnne_1F_Room7_EventScript_160C7F:: @ 8160C7F - trainerbattle 0, TRAINER_GENTLEMAN_THOMAS, 0, Text_173C52, Text_173CB4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GENTLEMAN_THOMAS, 0, Text_173C52, Text_173CB4 msgbox gUnknown_8173CC4, 6 end diff --git a/data/maps/SSAnne_2F_Corridor/scripts.inc b/data/maps/SSAnne_2F_Corridor/scripts.inc index 22916f1be..82d75a686 100644 --- a/data/maps/SSAnne_2F_Corridor/scripts.inc +++ b/data/maps/SSAnne_2F_Corridor/scripts.inc @@ -83,15 +83,15 @@ EventScript_1609CA:: @ 81609CA return EventScript_1609DC:: @ 81609DC - trainerbattle 3, TRAINER_RIVAL_SS_ANNE_SQUIRTLE, 0, Text_173110 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SS_ANNE_SQUIRTLE, 0, Text_173110 return EventScript_1609E7:: @ 81609E7 - trainerbattle 3, TRAINER_RIVAL_SS_ANNE_BULBASAUR, 0, Text_173110 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SS_ANNE_BULBASAUR, 0, Text_173110 return EventScript_1609F2:: @ 81609F2 - trainerbattle 3, TRAINER_RIVAL_SS_ANNE_CHARMANDER, 0, Text_173110 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SS_ANNE_CHARMANDER, 0, Text_173110 return EventScript_1609FD:: @ 81609FD diff --git a/data/maps/SSAnne_2F_Room2/scripts.inc b/data/maps/SSAnne_2F_Room2/scripts.inc index af5c392c2..cabf92f28 100644 --- a/data/maps/SSAnne_2F_Room2/scripts.inc +++ b/data/maps/SSAnne_2F_Room2/scripts.inc @@ -2,11 +2,11 @@ SSAnne_2F_Room2_MapScripts:: @ 8160CB0 .byte 0 SSAnne_2F_Room2_EventScript_160CB1:: @ 8160CB1 - trainerbattle 0, TRAINER_FISHERMAN_DALE, 0, Text_173DDB, Text_173DF7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_DALE, 0, Text_173DDB, Text_173DF7 msgbox gUnknown_8173E04, 6 end SSAnne_2F_Room2_EventScript_160CC8:: @ 8160CC8 - trainerbattle 0, TRAINER_GENTLEMAN_BROOKS, 0, Text_173D63, Text_173D92 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GENTLEMAN_BROOKS, 0, Text_173D63, Text_173D92 msgbox gUnknown_8173DB6, 6 end diff --git a/data/maps/SSAnne_2F_Room4/scripts.inc b/data/maps/SSAnne_2F_Room4/scripts.inc index 506059759..330b18acc 100644 --- a/data/maps/SSAnne_2F_Room4/scripts.inc +++ b/data/maps/SSAnne_2F_Room4/scripts.inc @@ -2,11 +2,11 @@ SSAnne_2F_Room4_MapScripts:: @ 8160CF2 .byte 0 SSAnne_2F_Room4_EventScript_160CF3:: @ 8160CF3 - trainerbattle 0, TRAINER_GENTLEMAN_LAMAR, 0, Text_173F07, Text_173F42 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_GENTLEMAN_LAMAR, 0, Text_173F07, Text_173F42 msgbox gUnknown_8173F55, 6 end SSAnne_2F_Room4_EventScript_160D0A:: @ 8160D0A - trainerbattle 0, TRAINER_LASS_DAWN, 0, Text_173F83, Text_173FAB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_DAWN, 0, Text_173F83, Text_173FAB msgbox gUnknown_8173FB9, 6 end diff --git a/data/maps/SSAnne_B1F_Room1/scripts.inc b/data/maps/SSAnne_B1F_Room1/scripts.inc index 337066e8c..06903353d 100644 --- a/data/maps/SSAnne_B1F_Room1/scripts.inc +++ b/data/maps/SSAnne_B1F_Room1/scripts.inc @@ -2,11 +2,11 @@ SSAnne_B1F_Room1_MapScripts:: @ 8160D47 .byte 0 SSAnne_B1F_Room1_EventScript_160D48:: @ 8160D48 - trainerbattle 0, TRAINER_FISHERMAN_BARNY, 0, Text_174177, Text_1741EF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_FISHERMAN_BARNY, 0, Text_174177, Text_1741EF msgbox gUnknown_817420E, 6 end SSAnne_B1F_Room1_EventScript_160D5F:: @ 8160D5F - trainerbattle 0, TRAINER_SAILOR_PHILLIP, 0, Text_1740F6, Text_174123 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_PHILLIP, 0, Text_1740F6, Text_174123 msgbox gUnknown_817413A, 6 end diff --git a/data/maps/SSAnne_B1F_Room2/scripts.inc b/data/maps/SSAnne_B1F_Room2/scripts.inc index 04c9b1c33..01772cab8 100644 --- a/data/maps/SSAnne_B1F_Room2/scripts.inc +++ b/data/maps/SSAnne_B1F_Room2/scripts.inc @@ -2,6 +2,6 @@ SSAnne_B1F_Room2_MapScripts:: @ 8160D76 .byte 0 SSAnne_B1F_Room2_EventScript_160D77:: @ 8160D77 - trainerbattle 0, TRAINER_SAILOR_HUEY, 0, Text_174239, Text_17425C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_HUEY, 0, Text_174239, Text_17425C msgbox gUnknown_8174272, 6 end diff --git a/data/maps/SSAnne_B1F_Room3/scripts.inc b/data/maps/SSAnne_B1F_Room3/scripts.inc index fcf19823a..da4ed9aaf 100644 --- a/data/maps/SSAnne_B1F_Room3/scripts.inc +++ b/data/maps/SSAnne_B1F_Room3/scripts.inc @@ -2,6 +2,6 @@ SSAnne_B1F_Room3_MapScripts:: @ 8160D8E .byte 0 SSAnne_B1F_Room3_EventScript_160D8F:: @ 8160D8F - trainerbattle 0, TRAINER_SAILOR_DYLAN, 0, Text_1742A6, Text_1742C3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_DYLAN, 0, Text_1742A6, Text_1742C3 msgbox gUnknown_81742D2, 6 end diff --git a/data/maps/SSAnne_B1F_Room4/scripts.inc b/data/maps/SSAnne_B1F_Room4/scripts.inc index 8a6b8fa8c..e9730a19e 100644 --- a/data/maps/SSAnne_B1F_Room4/scripts.inc +++ b/data/maps/SSAnne_B1F_Room4/scripts.inc @@ -2,11 +2,11 @@ SSAnne_B1F_Room4_MapScripts:: @ 8160DA6 .byte 0 SSAnne_B1F_Room4_EventScript_160DA7:: @ 8160DA7 - trainerbattle 0, TRAINER_SAILOR_LEONARD, 0, Text_174315, Text_174348 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_LEONARD, 0, Text_174315, Text_174348 msgbox gUnknown_8174362, 6 end SSAnne_B1F_Room4_EventScript_160DBE:: @ 8160DBE - trainerbattle 0, TRAINER_SAILOR_DUNCAN, 0, Text_174385, Text_1743B3 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_DUNCAN, 0, Text_174385, Text_1743B3 msgbox gUnknown_81743C8, 6 end diff --git a/data/maps/SSAnne_Deck/scripts.inc b/data/maps/SSAnne_Deck/scripts.inc index bf12690af..955625e2e 100644 --- a/data/maps/SSAnne_Deck/scripts.inc +++ b/data/maps/SSAnne_Deck/scripts.inc @@ -14,11 +14,11 @@ SSAnne_Deck_EventScript_160A7B:: @ 8160A7B end SSAnne_Deck_EventScript_160A84:: @ 8160A84 - trainerbattle 0, TRAINER_SAILOR_EDMOND, 0, Text_173308, Text_17332B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_EDMOND, 0, Text_173308, Text_17332B msgbox gUnknown_817333E, 6 end SSAnne_Deck_EventScript_160A9B:: @ 8160A9B - trainerbattle 0, TRAINER_SAILOR_TREVOR, 0, Text_173382, Text_1733A0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_TREVOR, 0, Text_173382, Text_1733A0 msgbox gUnknown_81733B5, 6 end diff --git a/data/maps/SaffronCity_Dojo/scripts.inc b/data/maps/SaffronCity_Dojo/scripts.inc index 9c0f5cba8..8481db66c 100644 --- a/data/maps/SaffronCity_Dojo/scripts.inc +++ b/data/maps/SaffronCity_Dojo/scripts.inc @@ -123,27 +123,27 @@ SaffronCity_Dojo_EventScript_16ED3D:: @ 816ED3D end SaffronCity_Dojo_EventScript_16ED46:: @ 816ED46 - trainerbattle 0, TRAINER_BLACK_BELT_HITOSHI, 0, Text_19B3DF, Text_19B40F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_HITOSHI, 0, Text_19B3DF, Text_19B40F msgbox gUnknown_819B41F, 6 end SaffronCity_Dojo_EventScript_16ED5D:: @ 816ED5D - trainerbattle 0, TRAINER_BLACK_BELT_HIDEKI, 0, Text_19B2E0, Text_19B2FD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_HIDEKI, 0, Text_19B2E0, Text_19B2FD msgbox gUnknown_819B30F, 6 end SaffronCity_Dojo_EventScript_16ED74:: @ 816ED74 - trainerbattle 0, TRAINER_BLACK_BELT_AARON, 0, Text_19B341, Text_19B396 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_AARON, 0, Text_19B341, Text_19B396 msgbox gUnknown_819B3AC, 6 end SaffronCity_Dojo_EventScript_16ED8B:: @ 816ED8B - trainerbattle 0, TRAINER_BLACK_BELT_MIKE, 0, Text_19B275, Text_19B292 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_MIKE, 0, Text_19B275, Text_19B292 msgbox gUnknown_819B29D, 6 end SaffronCity_Dojo_EventScript_16EDA2:: @ 816EDA2 - trainerbattle 2, TRAINER_BLACK_BELT_KOICHI, 0, Text_19B12C, Text_19B193, EventScript_16EDD0 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_BLACK_BELT_KOICHI, 0, Text_19B12C, Text_19B193, EventScript_16EDD0 checkflag FLAG_GOT_HITMON_FROM_DOJO goto_if TRUE, EventScript_16EDC6 msgbox gUnknown_819B1A7, 6 diff --git a/data/maps/SaffronCity_Gym/scripts.inc b/data/maps/SaffronCity_Gym/scripts.inc index ebfc595c7..159cb1729 100644 --- a/data/maps/SaffronCity_Gym/scripts.inc +++ b/data/maps/SaffronCity_Gym/scripts.inc @@ -3,7 +3,7 @@ SaffronCity_Gym_MapScripts:: @ 816EDD7 SaffronCity_Gym_EventScript_16EDD8:: @ 816EDD8 famechecker FAMECHECKER_SABRINA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_SABRINA, 0, Text_19B53C, Text_19B602, EventScript_16EE0A + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_SABRINA, 0, Text_19B53C, Text_19B602, EventScript_16EE0A checkflag FLAG_GOT_TM04_FROM_SABRINA goto_if FALSE, EventScript_16EE3D msgbox gUnknown_819B7F2 @@ -38,38 +38,38 @@ EventScript_16EE7E:: @ 816EE7E end SaffronCity_Gym_EventScript_16EE88:: @ 816EE88 - trainerbattle 0, TRAINER_PSYCHIC_JOHAN, 0, Text_19B936, Text_19B957 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_JOHAN, 0, Text_19B936, Text_19B957 msgbox gUnknown_819B96D, 6 end SaffronCity_Gym_EventScript_16EE9F:: @ 816EE9F - trainerbattle 0, TRAINER_PSYCHIC_TYRON, 0, Text_19BA45, Text_19BA9E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_TYRON, 0, Text_19BA45, Text_19BA9E famechecker FAMECHECKER_SABRINA, 5 msgbox gUnknown_819BAB4, 6 end SaffronCity_Gym_EventScript_16EEC3:: @ 816EEC3 - trainerbattle 0, TRAINER_PSYCHIC_CAMERON, 0, Text_19BB49, Text_19BBA1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_CAMERON, 0, Text_19BB49, Text_19BBA1 msgbox gUnknown_819BBB3, 6 end SaffronCity_Gym_EventScript_16EEDA:: @ 816EEDA - trainerbattle 0, TRAINER_PSYCHIC_PRESTON, 0, Text_19BC57, Text_19BCBC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PSYCHIC_PRESTON, 0, Text_19BC57, Text_19BCBC msgbox gUnknown_819BCC4, 6 end SaffronCity_Gym_EventScript_16EEF1:: @ 816EEF1 - trainerbattle 0, TRAINER_CHANNELER_AMANDA, 0, Text_19B86A, Text_19B8A8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_AMANDA, 0, Text_19B86A, Text_19B8A8 msgbox gUnknown_819B8B9, 6 end SaffronCity_Gym_EventScript_16EF08:: @ 816EF08 - trainerbattle 0, TRAINER_CHANNELER_STACY, 0, Text_19B998, Text_19B9EC + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_STACY, 0, Text_19B998, Text_19B9EC msgbox gUnknown_819B9F7, 6 end SaffronCity_Gym_EventScript_16EF1F:: @ 816EF1F - trainerbattle 0, TRAINER_CHANNELER_TASHA, 0, Text_19BAE8, Text_19BB0D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CHANNELER_TASHA, 0, Text_19BAE8, Text_19BB0D msgbox gUnknown_819BB1F, 6 end diff --git a/data/maps/SilphCo_10F/scripts.inc b/data/maps/SilphCo_10F/scripts.inc index 58f28c644..0b8e0e2cb 100644 --- a/data/maps/SilphCo_10F/scripts.inc +++ b/data/maps/SilphCo_10F/scripts.inc @@ -26,11 +26,11 @@ SilphCo_10F_EventScript_161DB7:: @ 8161DB7 end SilphCo_10F_EventScript_161DC0:: @ 8161DC0 - trainerbattle 0, TRAINER_SCIENTIST_TRAVIS, 0, Text_176D57, Text_176D73 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_TRAVIS, 0, Text_176D57, Text_176D73 msgbox gUnknown_8176D86, 6 end SilphCo_10F_EventScript_161DD7:: @ 8161DD7 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_39, 0, Text_176CED, Text_176D18 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_39, 0, Text_176CED, Text_176D18 msgbox gUnknown_8176D25, 6 end diff --git a/data/maps/SilphCo_11F/scripts.inc b/data/maps/SilphCo_11F/scripts.inc index d418848ea..292498c7b 100644 --- a/data/maps/SilphCo_11F/scripts.inc +++ b/data/maps/SilphCo_11F/scripts.inc @@ -77,7 +77,7 @@ EventScript_161EA0:: @ 8161EA0 compare_var_to_value VAR_0x4001, 1 call_if eq, EventScript_161F12 setvar VAR_LAST_TALKED, 3 - trainerbattle 3, TRAINER_BOSS_GIOVANNI_2, 0, Text_1771AB + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BOSS_GIOVANNI_2, 0, Text_1771AB msgbox gUnknown_81771C2 closemessage fadescreen 1 @@ -134,11 +134,11 @@ SilphCo_11F_EventScript_161F37:: @ 8161F37 end SilphCo_11F_EventScript_161F40:: @ 8161F40 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_40, 0, Text_1772B8, Text_1772E7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_40, 0, Text_1772B8, Text_1772E7 msgbox gUnknown_81772F9, 6 end SilphCo_11F_EventScript_161F57:: @ 8161F57 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_41, 0, Text_17726A, Text_17728C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_41, 0, Text_17726A, Text_17728C msgbox gUnknown_817729B, 6 end diff --git a/data/maps/SilphCo_2F/scripts.inc b/data/maps/SilphCo_2F/scripts.inc index e0ca5906b..1d08e777b 100644 --- a/data/maps/SilphCo_2F/scripts.inc +++ b/data/maps/SilphCo_2F/scripts.inc @@ -20,21 +20,21 @@ SilphCo_2F_EventScript_161660:: @ 8161660 end SilphCo_2F_EventScript_161669:: @ 8161669 - trainerbattle 0, TRAINER_SCIENTIST_CONNOR, 0, Text_175562, Text_17557E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_CONNOR, 0, Text_175562, Text_17557E msgbox gUnknown_817559F, 6 end SilphCo_2F_EventScript_161680:: @ 8161680 - trainerbattle 0, TRAINER_SCIENTIST_JERRY, 0, Text_1755C6, Text_1755E5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_JERRY, 0, Text_1755C6, Text_1755E5 msgbox gUnknown_81755F2, 6 end SilphCo_2F_EventScript_161697:: @ 8161697 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_23, 0, Text_17562D, Text_17564A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_23, 0, Text_17562D, Text_17564A msgbox gUnknown_8175651, 6 end SilphCo_2F_EventScript_1616AE:: @ 81616AE - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_24, 0, Text_1756AD, Text_1756D8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_24, 0, Text_1756AD, Text_1756D8 msgbox gUnknown_81756E2, 6 end diff --git a/data/maps/SilphCo_3F/scripts.inc b/data/maps/SilphCo_3F/scripts.inc index 0ef319f8c..8187e8e45 100644 --- a/data/maps/SilphCo_3F/scripts.inc +++ b/data/maps/SilphCo_3F/scripts.inc @@ -28,11 +28,11 @@ SilphCo_3F_EventScript_1616FF:: @ 81616FF end SilphCo_3F_EventScript_161708:: @ 8161708 - trainerbattle 0, TRAINER_SCIENTIST_JOSE, 0, Text_175948, Text_17597D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_JOSE, 0, Text_175948, Text_17597D msgbox gUnknown_8175990, 6 end SilphCo_3F_EventScript_16171F:: @ 816171F - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_25, 0, Text_1758F6, Text_175911 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_25, 0, Text_1758F6, Text_175911 msgbox gUnknown_817591C, 6 end diff --git a/data/maps/SilphCo_4F/scripts.inc b/data/maps/SilphCo_4F/scripts.inc index f2fadd471..176b6a4d3 100644 --- a/data/maps/SilphCo_4F/scripts.inc +++ b/data/maps/SilphCo_4F/scripts.inc @@ -28,16 +28,16 @@ SilphCo_4F_EventScript_161770:: @ 8161770 end SilphCo_4F_EventScript_161779:: @ 8161779 - trainerbattle 0, TRAINER_SCIENTIST_RODNEY, 0, Text_175A90, Text_175AB0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_RODNEY, 0, Text_175A90, Text_175AB0 msgbox gUnknown_8175AC8, 6 end SilphCo_4F_EventScript_161790:: @ 8161790 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_26, 0, Text_175A2F, Text_175A5B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_26, 0, Text_175A2F, Text_175A5B msgbox gUnknown_8175A62, 6 end SilphCo_4F_EventScript_1617A7:: @ 81617A7 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_27, 0, Text_175B19, Text_175B2B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_27, 0, Text_175B19, Text_175B2B msgbox gUnknown_8175B38, 6 end diff --git a/data/maps/SilphCo_5F/scripts.inc b/data/maps/SilphCo_5F/scripts.inc index 6630007c5..a87e88d33 100644 --- a/data/maps/SilphCo_5F/scripts.inc +++ b/data/maps/SilphCo_5F/scripts.inc @@ -42,21 +42,21 @@ SilphCo_5F_EventScript_16181C:: @ 816181C end SilphCo_5F_EventScript_161825:: @ 8161825 - trainerbattle 0, TRAINER_SCIENTIST_BEAU, 0, Text_175C40, Text_175C6D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_BEAU, 0, Text_175C40, Text_175C6D msgbox gUnknown_8175C7D, 6 end SilphCo_5F_EventScript_16183C:: @ 816183C - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_28, 0, Text_175BE5, Text_175C09 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_28, 0, Text_175BE5, Text_175C09 msgbox gUnknown_8175C0F, 6 end SilphCo_5F_EventScript_161853:: @ 8161853 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_29, 0, Text_175D28, Text_175D4B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_29, 0, Text_175D28, Text_175D4B msgbox gUnknown_8175D59, 6 end SilphCo_5F_EventScript_16186A:: @ 816186A - trainerbattle 0, TRAINER_JUGGLER_DALTON, 0, Text_175CBD, Text_175CEB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_DALTON, 0, Text_175CBD, Text_175CEB msgbox gUnknown_8175CF9, 6 end diff --git a/data/maps/SilphCo_6F/scripts.inc b/data/maps/SilphCo_6F/scripts.inc index 2ac42a2b3..fd4d470eb 100644 --- a/data/maps/SilphCo_6F/scripts.inc +++ b/data/maps/SilphCo_6F/scripts.inc @@ -82,16 +82,16 @@ SilphCo_6F_EventScript_161936:: @ 8161936 end SilphCo_6F_EventScript_16193F:: @ 816193F - trainerbattle 0, TRAINER_SCIENTIST_TAYLOR, 0, Text_176136, Text_1761BD + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_TAYLOR, 0, Text_176136, Text_1761BD msgbox gUnknown_81761C4, 6 end SilphCo_6F_EventScript_161956:: @ 8161956 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_30, 0, Text_1760DE, Text_176104 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_30, 0, Text_1760DE, Text_176104 msgbox gUnknown_817610F, 6 end SilphCo_6F_EventScript_16196D:: @ 816196D - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_31, 0, Text_1761F1, Text_17620E + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_31, 0, Text_1761F1, Text_17620E msgbox gUnknown_817621B, 6 end diff --git a/data/maps/SilphCo_7F/scripts.inc b/data/maps/SilphCo_7F/scripts.inc index c76aac197..8f1fa6648 100644 --- a/data/maps/SilphCo_7F/scripts.inc +++ b/data/maps/SilphCo_7F/scripts.inc @@ -83,15 +83,15 @@ EventScript_161A7F:: @ 8161A7F return EventScript_161A80:: @ 8161A80 - trainerbattle 3, TRAINER_RIVAL_SILPH_SQUIRTLE, 0, Text_1767D0 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SILPH_SQUIRTLE, 0, Text_1767D0 return EventScript_161A8B:: @ 8161A8B - trainerbattle 3, TRAINER_RIVAL_SILPH_BULBASAUR, 0, Text_1767D0 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SILPH_BULBASAUR, 0, Text_1767D0 return EventScript_161A96:: @ 8161A96 - trainerbattle 3, TRAINER_RIVAL_SILPH_CHARMANDER, 0, Text_1767D0 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_RIVAL_SILPH_CHARMANDER, 0, Text_1767D0 return EventScript_161AA1:: @ 8161AA1 @@ -243,21 +243,21 @@ SilphCo_7F_EventScript_161BFA:: @ 8161BFA end SilphCo_7F_EventScript_161C03:: @ 8161C03 - trainerbattle 0, TRAINER_SCIENTIST_JOSHUA, 0, Text_1765E2, Text_17660C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_JOSHUA, 0, Text_1765E2, Text_17660C msgbox gUnknown_8176616, 6 end SilphCo_7F_EventScript_161C1A:: @ 8161C1A - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_33, 0, Text_176643, Text_176669 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_33, 0, Text_176643, Text_176669 msgbox gUnknown_8176681, 6 end SilphCo_7F_EventScript_161C31:: @ 8161C31 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_34, 0, Text_1766B3, Text_1766D7 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_34, 0, Text_1766B3, Text_1766D7 msgbox gUnknown_81766E5, 6 end SilphCo_7F_EventScript_161C48:: @ 8161C48 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_35, 0, Text_176586, Text_1765A5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_35, 0, Text_176586, Text_1765A5 msgbox gUnknown_81765B1, 6 end diff --git a/data/maps/SilphCo_8F/scripts.inc b/data/maps/SilphCo_8F/scripts.inc index 70bc954cc..30b19804b 100644 --- a/data/maps/SilphCo_8F/scripts.inc +++ b/data/maps/SilphCo_8F/scripts.inc @@ -26,16 +26,16 @@ SilphCo_8F_EventScript_161C90:: @ 8161C90 end SilphCo_8F_EventScript_161C99:: @ 8161C99 - trainerbattle 0, TRAINER_SCIENTIST_PARKER, 0, Text_1769FD, Text_176A19 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_PARKER, 0, Text_1769FD, Text_176A19 msgbox gUnknown_8176A26, 6 end SilphCo_8F_EventScript_161CB0:: @ 8161CB0 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_32, 0, Text_1769A2, Text_1769BE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_32, 0, Text_1769A2, Text_1769BE msgbox gUnknown_81769CF, 6 end SilphCo_8F_EventScript_161CC7:: @ 8161CC7 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_36, 0, Text_176A56, Text_176A7C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_36, 0, Text_176A56, Text_176A7C msgbox gUnknown_8176A90, 6 end diff --git a/data/maps/SilphCo_9F/scripts.inc b/data/maps/SilphCo_9F/scripts.inc index 3a69c169a..b19f5a182 100644 --- a/data/maps/SilphCo_9F/scripts.inc +++ b/data/maps/SilphCo_9F/scripts.inc @@ -35,16 +35,16 @@ SilphCo_9F_EventScript_161D38:: @ 8161D38 end SilphCo_9F_EventScript_161D41:: @ 8161D41 - trainerbattle 0, TRAINER_SCIENTIST_ED, 0, Text_176BFB, Text_176C2B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SCIENTIST_ED, 0, Text_176BFB, Text_176C2B msgbox gUnknown_8176C3C, 6 end SilphCo_9F_EventScript_161D58:: @ 8161D58 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_37, 0, Text_176BA3, Text_176BC8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_37, 0, Text_176BA3, Text_176BC8 msgbox gUnknown_8176BD0, 6 end SilphCo_9F_EventScript_161D6F:: @ 8161D6F - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_38, 0, Text_176C7A, Text_176CA0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_38, 0, Text_176C7A, Text_176CA0 msgbox gUnknown_8176CB8, 6 end diff --git a/data/maps/SixIsland_OutcastIsland/scripts.inc b/data/maps/SixIsland_OutcastIsland/scripts.inc index 33d4d315c..3d7069cc8 100644 --- a/data/maps/SixIsland_OutcastIsland/scripts.inc +++ b/data/maps/SixIsland_OutcastIsland/scripts.inc @@ -2,6 +2,6 @@ SixIsland_OutcastIsland_MapScripts:: @ 8168B15 .byte 0 SixIsland_OutcastIsland_EventScript_168B16:: @ 8168B16 - trainerbattle 0, TRAINER_TEAM_ROCKET_GRUNT_46, 0, Text_18B35A, Text_18B3C2 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TEAM_ROCKET_GRUNT_46, 0, Text_18B35A, Text_18B3C2 msgbox gUnknown_818B3C8, 6 end diff --git a/data/maps/SixIsland_PatternBush/scripts.inc b/data/maps/SixIsland_PatternBush/scripts.inc index fb1ee80ad..11192b895 100644 --- a/data/maps/SixIsland_PatternBush/scripts.inc +++ b/data/maps/SixIsland_PatternBush/scripts.inc @@ -20,61 +20,61 @@ EventScript_164587:: @ 8164587 return SixIsland_PatternBush_EventScript_164590:: @ 8164590 - trainerbattle 0, TRAINER_PKMN_BREEDER_BETHANY, 0, Text_17BF3A, Text_17BF66 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_BREEDER_BETHANY, 0, Text_17BF3A, Text_17BF66 msgbox gUnknown_817BF97, 6 end SixIsland_PatternBush_EventScript_1645A7:: @ 81645A7 - trainerbattle 0, TRAINER_PKMN_BREEDER_ALLISON, 0, Text_17BFEB, Text_17C028 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PKMN_BREEDER_ALLISON, 0, Text_17BFEB, Text_17C028 msgbox gUnknown_817C056, 6 end SixIsland_PatternBush_EventScript_1645BE:: @ 81645BE - trainerbattle 0, TRAINER_BUG_CATCHER_GARRET, 0, Text_17C0BE, Text_17C0F2 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_GARRET, 0, Text_17C0BE, Text_17C0F2 msgbox gUnknown_817C113, 6 end SixIsland_PatternBush_EventScript_1645D5:: @ 81645D5 - trainerbattle 0, TRAINER_BUG_CATCHER_JONAH, 0, Text_17C155, Text_17C196 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_JONAH, 0, Text_17C155, Text_17C196 msgbox gUnknown_817C1D0, 6 end SixIsland_PatternBush_EventScript_1645EC:: @ 81645EC - trainerbattle 0, TRAINER_BUG_CATCHER_VANCE, 0, Text_17C246, Text_17C275 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_VANCE, 0, Text_17C246, Text_17C275 msgbox gUnknown_817C2A4, 6 end SixIsland_PatternBush_EventScript_164603:: @ 8164603 - trainerbattle 0, TRAINER_YOUNGSTER_NASH, 0, Text_17C2D9, Text_17C30D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_NASH, 0, Text_17C2D9, Text_17C30D msgbox gUnknown_817C31C, 6 end SixIsland_PatternBush_EventScript_16461A:: @ 816461A - trainerbattle 0, TRAINER_YOUNGSTER_CORDELL, 0, Text_17C373, Text_17C3A5 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_YOUNGSTER_CORDELL, 0, Text_17C373, Text_17C3A5 msgbox gUnknown_817C3CE, 6 end SixIsland_PatternBush_EventScript_164631:: @ 8164631 - trainerbattle 0, TRAINER_LASS_DALIA, 0, Text_17C42B, Text_17C458 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_DALIA, 0, Text_17C42B, Text_17C458 msgbox gUnknown_817C490, 6 end SixIsland_PatternBush_EventScript_164648:: @ 8164648 - trainerbattle 0, TRAINER_LASS_JOANA, 0, Text_17C4FE, Text_17C552 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_LASS_JOANA, 0, Text_17C4FE, Text_17C552 msgbox gUnknown_817C590, 6 end SixIsland_PatternBush_EventScript_16465F:: @ 816465F - trainerbattle 0, TRAINER_CAMPER_RILEY, 0, Text_17C5DB, Text_17C609 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_CAMPER_RILEY, 0, Text_17C5DB, Text_17C609 msgbox gUnknown_817C615, 6 end SixIsland_PatternBush_EventScript_164676:: @ 8164676 - trainerbattle 0, TRAINER_PICNICKER_MARCY, 0, Text_17C63E, Text_17C660 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_PICNICKER_MARCY, 0, Text_17C63E, Text_17C660 msgbox gUnknown_817C68E, 6 end SixIsland_PatternBush_EventScript_16468D:: @ 816468D - trainerbattle 0, TRAINER_RUIN_MANIAC_LAYTON, 0, Text_17C6C9, Text_17C6FB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_RUIN_MANIAC_LAYTON, 0, Text_17C6C9, Text_17C6FB msgbox gUnknown_817C728, 6 end diff --git a/data/maps/ThreeIsland/scripts.inc b/data/maps/ThreeIsland/scripts.inc index b3d27f9a8..93fdc39a5 100644 --- a/data/maps/ThreeIsland/scripts.inc +++ b/data/maps/ThreeIsland/scripts.inc @@ -227,7 +227,7 @@ EventScript_167A59:: @ 8167A59 goto_if eq, EventScript_167C35 msgbox gUnknown_818247D setvar VAR_LAST_TALKED, 5 - trainerbattle 3, TRAINER_BIKER_GOON, 0, Text_1824B7 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BIKER_GOON, 0, Text_1824B7 applymovement 5, Movement_167C5C waitmovement 0 msgbox gUnknown_81824CF @@ -237,7 +237,7 @@ EventScript_167A59:: @ 8167A59 playbgm MUS_SHOUNEN, 0 msgbox gUnknown_81824EF setvar VAR_LAST_TALKED, 7 - trainerbattle 3, TRAINER_BIKER_GOON_2, 0, Text_182521 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BIKER_GOON_2, 0, Text_182521 applymovement 7, Movement_167C5C waitmovement 0 msgbox gUnknown_8182536 @@ -247,7 +247,7 @@ EventScript_167A59:: @ 8167A59 playbgm MUS_SHOUNEN, 0 msgbox gUnknown_8182582 setvar VAR_LAST_TALKED, 4 - trainerbattle 3, TRAINER_BIKER_GOON_3, 0, Text_1825D4 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_BIKER_GOON_3, 0, Text_1825D4 applymovement 4, Movement_1A75E7 waitmovement 0 applymovement 6, Movement_1A75ED @@ -269,7 +269,7 @@ EventScript_167A59:: @ 8167A59 playbgm MUS_SHOUNEN, 0 msgbox gUnknown_8182623 setvar VAR_LAST_TALKED, 3 - trainerbattle 3, TRAINER_CUE_BALL_PAXTON, 0, Text_1826B7 + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, TRAINER_CUE_BALL_PAXTON, 0, Text_1826B7 msgbox gUnknown_818271D closemessage fadescreen 1 diff --git a/data/maps/VermilionCity_Gym/scripts.inc b/data/maps/VermilionCity_Gym/scripts.inc index 48fa76fe0..5d08e2b3a 100644 --- a/data/maps/VermilionCity_Gym/scripts.inc +++ b/data/maps/VermilionCity_Gym/scripts.inc @@ -209,7 +209,7 @@ EventScript_16B8EF:: @ 816B8EF VermilionCity_Gym_EventScript_16B94A:: @ 816B94A famechecker FAMECHECKER_LTSURGE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_LT_SURGE, 0, Text_194BA4, Text_194E03, EventScript_16B97C + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_LT_SURGE, 0, Text_194BA4, Text_194E03, EventScript_16B97C checkflag FLAG_GOT_TM34_FROM_SURGE goto_if FALSE, EventScript_16B9AF msgbox gUnknown_8194C8E @@ -249,18 +249,18 @@ EventScript_16B9F0:: @ 816B9F0 end VermilionCity_Gym_EventScript_16B9FA:: @ 816B9FA - trainerbattle 0, TRAINER_SAILOR_DWAYNE, 0, Text_194FBD, Text_194FF1 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_SAILOR_DWAYNE, 0, Text_194FBD, Text_194FF1 famechecker FAMECHECKER_LTSURGE, 4 msgbox gUnknown_8195004, 6 end VermilionCity_Gym_EventScript_16BA1E:: @ 816BA1E - trainerbattle 0, TRAINER_ENGINEER_BAILY, 0, Text_194F1F, Text_194F6F + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_ENGINEER_BAILY, 0, Text_194F1F, Text_194F6F msgbox gUnknown_8194F76, 6 end VermilionCity_Gym_EventScript_16BA35:: @ 816BA35 - trainerbattle 2, TRAINER_GENTLEMAN_TUCKER, 0, Text_194E57, Text_194EA5, EventScript_16BA5D + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_GENTLEMAN_TUCKER, 0, Text_194E57, Text_194EA5, EventScript_16BA5D famechecker FAMECHECKER_LTSURGE, 3 msgbox gUnknown_8194EBD, 6 end diff --git a/data/maps/VictoryRoad_1F/scripts.inc b/data/maps/VictoryRoad_1F/scripts.inc index a5b2a201d..20759c714 100644 --- a/data/maps/VictoryRoad_1F/scripts.inc +++ b/data/maps/VictoryRoad_1F/scripts.inc @@ -36,11 +36,11 @@ EventScript_160F62:: @ 8160F62 end VictoryRoad_1F_EventScript_160F64:: @ 8160F64 - trainerbattle 0, TRAINER_COOLTRAINER_NAOMI, 0, Text_174710, Text_174738 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_NAOMI, 0, Text_174710, Text_174738 msgbox gUnknown_8174744, 6 end VictoryRoad_1F_EventScript_160F7B:: @ 8160F7B - trainerbattle 0, TRAINER_COOLTRAINER_ROLANDO, 0, Text_174784, Text_1747B8 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_ROLANDO, 0, Text_174784, Text_1747B8 msgbox gUnknown_81747C8, 6 end diff --git a/data/maps/VictoryRoad_2F/scripts.inc b/data/maps/VictoryRoad_2F/scripts.inc index 2118560fd..d2fa2e8b4 100644 --- a/data/maps/VictoryRoad_2F/scripts.inc +++ b/data/maps/VictoryRoad_2F/scripts.inc @@ -56,26 +56,26 @@ EventScript_161035:: @ 8161035 end VictoryRoad_2F_EventScript_161037:: @ 8161037 - trainerbattle 0, TRAINER_POKEMANIAC_DAWSON, 0, Text_1747EF, Text_17482C + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_POKEMANIAC_DAWSON, 0, Text_1747EF, Text_17482C msgbox gUnknown_817483E, 6 end VictoryRoad_2F_EventScript_16104E:: @ 816104E - trainerbattle 0, TRAINER_BLACK_BELT_DAISUKE, 0, Text_174877, Text_1748B4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_DAISUKE, 0, Text_174877, Text_1748B4 msgbox gUnknown_81748BB, 6 end VictoryRoad_2F_EventScript_161065:: @ 8161065 - trainerbattle 0, TRAINER_JUGGLER_NELSON, 0, Text_1748EE, Text_17491B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_NELSON, 0, Text_1748EE, Text_17491B msgbox gUnknown_8174927, 6 end VictoryRoad_2F_EventScript_16107C:: @ 816107C - trainerbattle 0, TRAINER_JUGGLER_GREGORY, 0, Text_174995, Text_1749B0 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_JUGGLER_GREGORY, 0, Text_174995, Text_1749B0 msgbox gUnknown_81749BB, 6 end VictoryRoad_2F_EventScript_161093:: @ 8161093 - trainerbattle 0, TRAINER_TAMER_VINCENT, 0, Text_174942, Text_17495A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_VINCENT, 0, Text_174942, Text_17495A msgbox gUnknown_8174969, 6 end diff --git a/data/maps/VictoryRoad_3F/scripts.inc b/data/maps/VictoryRoad_3F/scripts.inc index 75d60e4d3..fe77da24d 100644 --- a/data/maps/VictoryRoad_3F/scripts.inc +++ b/data/maps/VictoryRoad_3F/scripts.inc @@ -32,31 +32,31 @@ EventScript_161101:: @ 8161101 end VictoryRoad_3F_EventScript_161103:: @ 8161103 - trainerbattle 0, TRAINER_COOLTRAINER_GEORGE, 0, Text_174B60, Text_174B83 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_GEORGE, 0, Text_174B60, Text_174B83 msgbox gUnknown_8174B99, 6 end VictoryRoad_3F_EventScript_16111A:: @ 816111A - trainerbattle 0, TRAINER_COOLTRAINER_COLBY, 0, Text_174C8A, Text_174CA9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_COLBY, 0, Text_174C8A, Text_174CA9 msgbox gUnknown_8174CBD, 6 end VictoryRoad_3F_EventScript_161131:: @ 8161131 - trainerbattle 0, TRAINER_COOLTRAINER_CAROLINE, 0, Text_174C30, Text_174C5A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_CAROLINE, 0, Text_174C30, Text_174C5A msgbox gUnknown_8174C67, 6 end VictoryRoad_3F_EventScript_161148:: @ 8161148 - trainerbattle 0, TRAINER_COOLTRAINER_ALEXA, 0, Text_174BCA, Text_174BF4 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_ALEXA, 0, Text_174BCA, Text_174BF4 msgbox gUnknown_8174C03, 6 end VictoryRoad_3F_EventScript_16115F:: @ 816115F - trainerbattle 4, TRAINER_COOL_COUPLE_RAY_TYRA, 0, Text_174D0C, Text_174D45, Text_174D96 + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_COOL_COUPLE_RAY_TYRA, 0, Text_174D0C, Text_174D45, Text_174D96 msgbox gUnknown_8174D64, 6 end VictoryRoad_3F_EventScript_16117A:: @ 816117A - trainerbattle 4, TRAINER_COOL_COUPLE_RAY_TYRA, 0, Text_174E08, Text_174E39, Text_174E8D + trainerbattle TRAINER_BATTLE_DOUBLE, TRAINER_COOL_COUPLE_RAY_TYRA, 0, Text_174E08, Text_174E39, Text_174E8D msgbox gUnknown_8174E48, 6 end diff --git a/data/maps/ViridianCity_Gym/scripts.inc b/data/maps/ViridianCity_Gym/scripts.inc index 197a38b74..f3d9bfe10 100644 --- a/data/maps/ViridianCity_Gym/scripts.inc +++ b/data/maps/ViridianCity_Gym/scripts.inc @@ -3,7 +3,7 @@ ViridianCity_Gym_MapScripts:: @ 8169EC9 ViridianCity_Gym_EventScript_169ECA:: @ 8169ECA famechecker FAMECHECKER_GIOVANNI, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005 - trainerbattle 1, TRAINER_LEADER_GIOVANNI, 0, Text_18F352, Text_18F43F, EventScript_169F04 + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, TRAINER_LEADER_GIOVANNI, 0, Text_18F352, Text_18F43F, EventScript_169F04 checkflag FLAG_GOT_TM26_FROM_GIOVANNI goto_if FALSE, EventScript_169F2F msgbox gUnknown_818F4A2 @@ -42,42 +42,42 @@ EventScript_169F70:: @ 8169F70 end ViridianCity_Gym_EventScript_169F7A:: @ 8169F7A - trainerbattle 0, TRAINER_TAMER_JASON, 0, Text_18F7F3, Text_18F824 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_JASON, 0, Text_18F7F3, Text_18F824 msgbox gUnknown_818F840, 6 end ViridianCity_Gym_EventScript_169F91:: @ 8169F91 - trainerbattle 0, TRAINER_TAMER_COLE, 0, Text_18F98A, Text_18F9BB + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_TAMER_COLE, 0, Text_18F98A, Text_18F9BB msgbox gUnknown_818F9CC, 6 end ViridianCity_Gym_EventScript_169FA8:: @ 8169FA8 - trainerbattle 0, TRAINER_BLACK_BELT_ATSUSHI, 0, Text_18F7AD, Text_18F7D6 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_ATSUSHI, 0, Text_18F7AD, Text_18F7D6 msgbox gUnknown_818F7DD, 6 end ViridianCity_Gym_EventScript_169FBF:: @ 8169FBF - trainerbattle 0, TRAINER_BLACK_BELT_KIYO, 0, Text_18F86C, Text_18F899 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_KIYO, 0, Text_18F86C, Text_18F899 msgbox gUnknown_818F8A0, 6 end ViridianCity_Gym_EventScript_169FD6:: @ 8169FD6 - trainerbattle 0, TRAINER_BLACK_BELT_TAKASHI, 0, Text_18F92C, Text_18F95A + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BLACK_BELT_TAKASHI, 0, Text_18F92C, Text_18F95A msgbox gUnknown_818F960, 6 end ViridianCity_Gym_EventScript_169FED:: @ 8169FED - trainerbattle 0, TRAINER_COOLTRAINER_SAMUEL, 0, Text_18F9E7, Text_18FA2D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_SAMUEL, 0, Text_18F9E7, Text_18FA2D msgbox gUnknown_818FA3B, 6 end ViridianCity_Gym_EventScript_16A004:: @ 816A004 - trainerbattle 0, TRAINER_COOLTRAINER_YUJI, 0, Text_18F73B, Text_18F769 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_YUJI, 0, Text_18F73B, Text_18F769 msgbox gUnknown_818F77B, 6 end ViridianCity_Gym_EventScript_16A01B:: @ 816A01B - trainerbattle 0, TRAINER_COOLTRAINER_WARREN, 0, Text_18F8CB, Text_18F8EE + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_COOLTRAINER_WARREN, 0, Text_18F8CB, Text_18F8EE msgbox gUnknown_818F8FE, 6 end diff --git a/data/maps/ViridianForest/scripts.inc b/data/maps/ViridianForest/scripts.inc index f4e4ee898..84c22e5fb 100644 --- a/data/maps/ViridianForest/scripts.inc +++ b/data/maps/ViridianForest/scripts.inc @@ -39,26 +39,26 @@ ViridianForest_EventScript_160568:: @ 8160568 end ViridianForest_EventScript_160571:: @ 8160571 - trainerbattle 0, TRAINER_BUG_CATCHER_RICK, 0, Text_1722C7, Text_1722F9 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_RICK, 0, Text_1722C7, Text_1722F9 msgbox gUnknown_8172315, 6 end ViridianForest_EventScript_160588:: @ 8160588 - trainerbattle 0, TRAINER_BUG_CATCHER_DOUG, 0, Text_17234A, Text_17237D + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_DOUG, 0, Text_17234A, Text_17237D msgbox gUnknown_8172398, 6 end ViridianForest_EventScript_16059F:: @ 816059F - trainerbattle 0, TRAINER_BUG_CATCHER_SAMMY, 0, Text_1723D4, Text_172402 + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_SAMMY, 0, Text_1723D4, Text_172402 msgbox gUnknown_817241F, 6 end ViridianForest_EventScript_1605B6:: @ 81605B6 - trainerbattle 0, TRAINER_BUG_CATCHER_ANTHONY, 0, Text_172482, Text_1724BF + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_ANTHONY, 0, Text_172482, Text_1724BF msgbox gUnknown_81724DC, 6 end ViridianForest_EventScript_1605CD:: @ 81605CD - trainerbattle 0, TRAINER_BUG_CATCHER_CHARLIE, 0, Text_1724F9, Text_17251B + trainerbattle TRAINER_BATTLE_SINGLE, TRAINER_BUG_CATCHER_CHARLIE, 0, Text_1724F9, Text_17251B msgbox gUnknown_8172527, 6 end diff --git a/data/specials.inc b/data/specials.inc index 169ea0182..516b5f768 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -322,7 +322,7 @@ gSpecials:: @ 815FD60 def_special Special_StartGroudonKyogreBattle def_special Special_StartLegendaryBattle def_special Special_StartRegiBattle - def_special sub_8080398 + def_special SetUpTrainerMovement def_special nullsub_75 def_special nullsub_75 def_special sub_807B6C0 @@ -407,7 +407,7 @@ gSpecials:: @ 815FD60 def_special Special_CloseMuseumFossilPic def_special sub_812781C def_special sub_8127888 - def_special sub_80803FC + def_special SetBattledTrainerFlag def_special sub_812B35C def_special Special_SSAnneDepartureCutscene def_special sub_8149A18 diff --git a/include/battle.h b/include/battle.h index 7c1528072..40a2eba04 100644 --- a/include/battle.h +++ b/include/battle.h @@ -18,14 +18,6 @@ 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) */ -#define IDENTITY_PLAYER_MON1 0 -#define IDENTITY_OPPONENT_MON1 1 -#define IDENTITY_PLAYER_MON2 2 -#define IDENTITY_OPPONENT_MON2 3 - -#define SIDE_PLAYER 0x0 -#define SIDE_OPPONENT 0x1 - #define GET_BATTLER_POSITION(battler)((gBattlerPositions[battler])) #define GET_BATTLER_SIDE(battler)((GetBattlerPosition(battler) & BIT_SIDE)) #define GET_BATTLER_SIDE2(battler)((GET_BATTLER_POSITION(battler) & BIT_SIDE)) @@ -36,40 +28,6 @@ #define STEVEN_PARTNER_ID 0xC03 #define SECRET_BASE_OPPONENT 0x400 -#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_SAFARI_OUT_OF_BALLS 0x8 -#define BATTLE_FORFEITED 0x9 -#define BATTLE_OPPONENT_TELEPORTED 0xA - -#define OUTCOME_LINK_BATTLE_RUN 0x80 - -#define STATUS_NONE 0x0 -#define STATUS_SLEEP 0x7 -#define STATUS_POISON 0x8 -#define STATUS_BURN 0x10 -#define STATUS_FREEZE 0x20 -#define STATUS_PARALYSIS 0x40 -#define STATUS_TOXIC_POISON 0x80 -#define STATUS_TOXIC_COUNTER 0xF00 - -#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) -#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) - -#define SIDE_STATUS_REFLECT (1 << 0) -#define SIDE_STATUS_LIGHTSCREEN (1 << 1) -#define SIDE_STATUS_X4 (1 << 2) -#define SIDE_STATUS_SPIKES (1 << 4) -#define SIDE_STATUS_SAFEGUARD (1 << 5) -#define SIDE_STATUS_FUTUREATTACK (1 << 6) -#define SIDE_STATUS_MIST (1 << 8) -#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) - #define B_ACTION_USE_MOVE 0 #define B_ACTION_USE_ITEM 1 #define B_ACTION_SWITCH 2 @@ -79,7 +37,7 @@ #define B_ACTION_SAFARI_POKEBLOCK 6 #define B_ACTION_SAFARI_GO_NEAR 7 #define B_ACTION_SAFARI_RUN 8 -#define B_ACTION_9 9 +#define B_ACTION_OLDMAN_THROW 9 #define B_ACTION_EXEC_SCRIPT 10 #define B_ACTION_TRY_FINISH 11 #define B_ACTION_FINISHED 12 @@ -87,31 +45,9 @@ #define B_ACTION_NOTHING_FAINTED 13 // when choosing an action #define B_ACTION_NONE 0xFF -#define MOVESTATUS_MISSED (1 << 0) -#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) -#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) -#define MOVESTATUS_NOTAFFECTED (1 << 3) -#define MOVESTATUS_ONEHITKO (1 << 4) -#define MOVESTATUS_FAILED (1 << 5) -#define MOVESTATUS_ENDURED (1 << 6) -#define MOVESTATUS_HUNGON (1 << 7) - -#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) - #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 -#define BATTLE_TERRAIN_GRASS 0 -#define BATTLE_TERRAIN_LONG_GRASS 1 -#define BATTLE_TERRAIN_SAND 2 -#define BATTLE_TERRAIN_UNDERWATER 3 -#define BATTLE_TERRAIN_WATER 4 -#define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_ROCK 6 -#define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_INSIDE 8 -#define BATTLE_TERRAIN_PLAIN 9 - // array entries for battle communication #define MULTIUSE_STATE 0x0 #define CURSOR_POSITION 0x1 @@ -133,29 +69,6 @@ #define MOVE_TARGET_FOES_AND_ALLY 0x20 #define MOVE_TARGET_OPPONENTS_FIELD 0x40 -// defines for the u8 array gTypeEffectiveness -#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) -#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) -#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) - -// defines for the gTypeEffectiveness multipliers -#define TYPE_MUL_NO_EFFECT 0 -#define TYPE_MUL_NOT_EFFECTIVE 5 -#define TYPE_MUL_NORMAL 10 -#define TYPE_MUL_SUPER_EFFECTIVE 20 - -// special type table Ids -#define TYPE_FORESIGHT 0xFE -#define TYPE_ENDTABLE 0xFF - -// for battle script commands -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - struct TrainerMonNoItemDefaultMoves { u16 iv; @@ -210,13 +123,8 @@ struct Trainer /*0x24*/ const union TrainerMonPtr party; }; -#define PARTY_FLAG_CUSTOM_MOVES 0x1 -#define PARTY_FLAG_HAS_ITEM 0x2 - extern const struct Trainer gTrainers[]; -#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) - struct ResourceFlags { u32 flags[4]; @@ -373,22 +281,6 @@ extern u8 gActiveBattler; extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; -// script's table id to bit -#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) -#define AI_SCRIPT_TRY_TO_FAINT (1 << 1) -#define AI_SCRIPT_CHECK_VIABILITY (1 << 2) -#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3) -#define AI_SCRIPT_RISKY (1 << 4) -#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5) -#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6) -#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7) -#define AI_SCRIPT_HP_AWARE (1 << 8) -#define AI_SCRIPT_UNKNOWN (1 << 9) -// 10 - 28 are not used -#define AI_SCRIPT_ROAMING (1 << 29) -#define AI_SCRIPT_SAFARI (1 << 30) -#define AI_SCRIPT_FIRST_BATTLE (1 << 31) - extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; struct UsedMoves @@ -437,10 +329,6 @@ struct BattleResources extern struct BattleResources *gBattleResources; -#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) -#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) -#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp) - struct BattleResults { u8 playerFaintCounter; // 0x0 @@ -521,22 +409,20 @@ struct BattleStruct u8 expGetterBattlerId; u8 field_90; u8 field_91; - u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; + u8 AI_monToSwitchIntoId[2]; + u8 field_94; + u8 field_95; u8 field_96; u8 field_97; u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; - u8 field_AE; - u8 field_AF; - u8 field_B0; - u8 field_B1; - u8 field_B2; - u8 field_B3; + u16 savedBattleTypeFlags; + void (*savedCallback)(void); u8 synchronizeMoveEffect; - u8 field_B5; - u8 field_B6; + u8 multiplayerId; + u8 overworldWeatherDone; u8 atkCancellerTracker; u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? @@ -556,7 +442,12 @@ struct BattleStruct u8 wishPerishSongBattlerId; u8 field_182; u8 field_183; - u8 field_184[124]; // currently unknown + u8 field_184; + u8 field_185; + u8 field_186; + u8 field_187; + struct BattleEnigmaBerry battleEnigmaBerry; + u8 field_1A4[0x5C]; // currently unknown }; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -579,72 +470,6 @@ extern struct BattleStruct *gBattleStruct; gBattleMons[battlerId].type2 = type; \ } -#define MOVE_EFFECT_SLEEP 0x1 -#define MOVE_EFFECT_POISON 0x2 -#define MOVE_EFFECT_BURN 0x3 -#define MOVE_EFFECT_FREEZE 0x4 -#define MOVE_EFFECT_PARALYSIS 0x5 -#define MOVE_EFFECT_TOXIC 0x6 -#define MOVE_EFFECT_CONFUSION 0x7 -#define MOVE_EFFECT_FLINCH 0x8 -#define MOVE_EFFECT_TRI_ATTACK 0x9 -#define MOVE_EFFECT_UPROAR 0xA -#define MOVE_EFFECT_PAYDAY 0xB -#define MOVE_EFFECT_CHARGING 0xC -#define MOVE_EFFECT_WRAP 0xD -#define MOVE_EFFECT_RECOIL_25 0xE -#define MOVE_EFFECT_ATK_PLUS_1 0xF -#define MOVE_EFFECT_DEF_PLUS_1 0x10 -#define MOVE_EFFECT_SPD_PLUS_1 0x11 -#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12 -#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13 -#define MOVE_EFFECT_ACC_PLUS_1 0x14 -#define MOVE_EFFECT_EVS_PLUS_1 0x15 -#define MOVE_EFFECT_ATK_MINUS_1 0x16 -#define MOVE_EFFECT_DEF_MINUS_1 0x17 -#define MOVE_EFFECT_SPD_MINUS_1 0x18 -#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19 -#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A -#define MOVE_EFFECT_ACC_MINUS_1 0x1B -#define MOVE_EFFECT_EVS_MINUS_1 0x1C -#define MOVE_EFFECT_RECHARGE 0x1D -#define MOVE_EFFECT_RAGE 0x1E -#define MOVE_EFFECT_STEAL_ITEM 0x1F -#define MOVE_EFFECT_PREVENT_ESCAPE 0x20 -#define MOVE_EFFECT_NIGHTMARE 0x21 -#define MOVE_EFFECT_ALL_STATS_UP 0x22 -#define MOVE_EFFECT_RAPIDSPIN 0x23 -#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 -#define MOVE_EFFECT_ATK_DEF_DOWN 0x25 -#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 -#define MOVE_EFFECT_ATK_PLUS_2 0x27 -#define MOVE_EFFECT_DEF_PLUS_2 0x28 -#define MOVE_EFFECT_SPD_PLUS_2 0x29 -#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A -#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B -#define MOVE_EFFECT_ACC_PLUS_2 0x2C -#define MOVE_EFFECT_EVS_PLUS_2 0x2D -#define MOVE_EFFECT_ATK_MINUS_2 0x2E -#define MOVE_EFFECT_DEF_MINUS_2 0x2F -#define MOVE_EFFECT_SPD_MINUS_2 0x30 -#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31 -#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32 -#define MOVE_EFFECT_ACC_MINUS_2 0x33 -#define MOVE_EFFECT_EVS_MINUS_2 0x34 -#define MOVE_EFFECT_THRASH 0x35 -#define MOVE_EFFECT_KNOCK_OFF 0x36 -#define MOVE_EFFECT_NOTHING_37 0x37 -#define MOVE_EFFECT_NOTHING_38 0x38 -#define MOVE_EFFECT_NOTHING_39 0x39 -#define MOVE_EFFECT_NOTHING_3A 0x3A -#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B -#define MOVE_EFFECT_NOTHING_3C 0x3C -#define MOVE_EFFECT_NOTHING_3D 0x3D -#define MOVE_EFFECT_NOTHING_3E 0x3E -#define MOVE_EFFECT_NOTHING_3F 0x3F -#define MOVE_EFFECT_AFFECTS_USER 0x40 -#define MOVE_EFFECT_CERTAIN 0x80 - #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE2(n)((n & 0xF0)) #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 @@ -654,32 +479,6 @@ extern struct BattleStruct *gBattleStruct; #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) -// used in many battle files, it seems as though Hisashi Sogabe wrote -// some sort of macro to replace the use of actually calling memset. -// Perhaps it was thought calling memset was much slower? - -// The compiler wont allow us to locally declare ptr in this macro; some -// functions that invoke this macro will not match without this egregeous -// assumption about the variable names, so in order to avoid this assumption, -// we opt to pass the variables themselves, even though it is likely that -// Sogabe assumed the variables were named src and dest. Trust me: I tried to -// avoid assuming variable names, but the ROM just will not match without the -// assumptions. Therefore, these macros are bad practice, but I'm putting them -// here anyway. -#define MEMSET_ALT(data, c, size, var, dest) \ -{ \ - dest = (u8 *)data; \ - for(var = 0; var < (u32)size; var++) \ - dest[var] = c; \ -} \ - -#define MEMCPY_ALT(data, dest, size, var, src) \ -{ \ - src = (u8 *)data; \ - for(var = 0; var < (u32)size; var++) \ - dest[var] = src[var]; \ -} \ - struct BattleScripting { s32 painSplitHp; @@ -708,17 +507,6 @@ struct BattleScripting u8 field_23; }; -// functions - -// battle_1 -void LoadBattleTextboxAndBackground(void); -void LoadBattleEntryBackground(void); -void ApplyPlayerChosenFrameToBattleMenu(void); -bool8 LoadChosenBattleElement(u8 caseId); -void DrawMainBattleBackground(void); -void task00_0800F6FC(u8 taskId); -void sub_800F324(void); - enum { BACK_PIC_BRENDAN, @@ -731,11 +519,6 @@ enum BACK_PIC_STEVEN }; -// rom_80A5C6C -u8 GetBattlerSide(u8 bank); -u8 GetBattlerPosition(u8 bank); -u8 GetBattlerAtPosition(u8 bank); - struct BattleSpriteInfo { u16 invisible : 1; // 0x1 @@ -929,5 +712,8 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; extern u8 gBattleTerrain; +extern struct UnknownPokemonStruct4 gUnknown_2022B58[3]; +extern u16 *gUnknown_2022BC0; +extern u16 gRandomTurnNumber; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index feaa8816b..9db123f91 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -2,8 +2,9 @@ #define GUARD_BATTLE_ANIM_H #include "battle.h" -#include "constants/battle_anim.h" +#include "data.h" #include "task.h" +#include "constants/battle_anim.h" enum { @@ -166,8 +167,12 @@ void LaunchStatusAnimation(u8 bank, u8 statusAnimId); u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +void sub_80EEFC8(u8 *, u8 *, u8 battlerId); +void sub_80EF0E0(u8 batterId); // battle_anim_mons.c +extern const struct MonCoords gCastformFrontSpriteCoords[]; + u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType); u8 GetBattlerSpriteDefault_Y(u8 battlerId); @@ -237,9 +242,9 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7); u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4); u8 sub_8075D80(u8 a1); -void sub_8075D9C(struct Sprite *sprite); +void AnimSpriteOnMonPos(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); -void sub_8075E80(struct Sprite *sprite); +void AnimThrowProjectile(struct Sprite *sprite); void sub_8075F0C(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); void obj_delete_but_dont_free_vram(struct Sprite *sprite); diff --git a/include/battle_bg.h b/include/battle_bg.h index 6bf90a104..29571b410 100644 --- a/include/battle_bg.h +++ b/include/battle_bg.h @@ -1,6 +1,15 @@ #ifndef GUARD_BATTLE_BG_H #define GUARD_BATTLE_BG_H +#include "bg.h" + +extern const struct BgTemplate gBattleBgTemplates[]; + void sub_800F34C(void); +void DrawBattleEntryBackground(void); +void sub_800F6FC(u8 taskId); +void LoadBattleMenuWindowGfx(void); +void LoadBattleTextboxAndBackground(void); +void sub_800F324(void); #endif // GUARD_BATTLE_BG_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 6da4ca240..96f57c78a 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -260,16 +260,18 @@ void SetControllerToPlayerPartner(void); void SetControllerToSafari(void); // pokedude controller -void SetControllerToPokedude(void); +void SetControllerToPokeDude(void); -// oak controller -void SetControllerToOakOrOldman(void); +// oak and old man controller +void SetControllerToOakOrOldMan(void); bool8 sub_80EB2E0(u8); void sub_80EB2F4(u8); void sub_80E8570(void); void sub_80E85C0(void); void sub_80E8598(void); void sub_80E7988(void); +void sub_80EB30C(void); +void sub_80EB524(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_main.h b/include/battle_main.h index 757ee3468..613171da9 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_MAIN_H #define GUARD_BATTLE_MAIN_H +#include "constants/abilities.h" + struct TrainerMoney { u8 classId; @@ -43,61 +45,54 @@ struct UnknownPokemonStruct4 #define BOUNCE_MON 0x0 #define BOUNCE_HEALTHBOX 0x1 +extern const struct SpriteTemplate gUnknown_824EFF0; +extern const struct OamData gOamData_824F010; +extern const struct OamData gOamData_824F018; +extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; +extern const u8 gStatusConditionString_PoisonJpn[8]; +extern const u8 gStatusConditionString_SleepJpn[8]; +extern const u8 gStatusConditionString_ParalysisJpn[8]; +extern const u8 gStatusConditionString_BurnJpn[8]; +extern const u8 gStatusConditionString_IceJpn[8]; +extern const u8 gStatusConditionString_ConfusionJpn[8]; +extern const u8 gStatusConditionString_LoveJpn[8]; +extern const u8 *const gStatusConditionStringsTable[7][2]; +extern const u8 gTypeEffectiveness[336]; +extern const struct TrainerMoney gTrainerMoneyTable[]; +extern const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT]; +extern const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1]; + void CB2_InitBattle(void); void BattleMainCB2(void); -void CB2_QuitRecordedBattle(void); -void sub_8038528(struct Sprite* sprite); -void sub_8038A04(void); // unused +void FreeRestoreBattleData(void); void VBlankCB_Battle(void); +void nullsub_9(struct Sprite *sprite); void sub_801182C(struct Sprite *sprite); void sub_8011A1C(void); -u32 sub_80391E0(u8 arrayId, u8 caseId); -u32 sub_80397C4(u32 setId, u32 tableId); -void oac_poke_opponent(struct Sprite *sprite); -void SpriteCallbackDummy_2(struct Sprite *sprite); -void sub_8039934(struct Sprite *sprite); -void sub_8012098(struct Sprite *sprite); +u32 sub_8011C44(u8 arrayId, u8 caseId); +void SpriteCB_WildMon(struct Sprite *sprite); +void SpriteCallbackDummy2(struct Sprite *sprite); +void SpriteCB_FaintOpponentMon(struct Sprite *sprite); void sub_8012044(struct Sprite *sprite); -void sub_8039B58(struct Sprite *sprite); -void sub_8039BB4(struct Sprite *sprite); -void sub_80105DC(struct Sprite *sprite); +void sub_8012098(struct Sprite *sprite); +void sub_80120C4(struct Sprite *sprite); +void sub_8012100(struct Sprite *sprite); void sub_8012110(struct Sprite *sprite); -void DoBounceEffect(u8 bank, u8 b, s8 c, s8 d); -void EndBounceEffect(u8 bank, bool8 b); -void sub_8039E44(struct Sprite *sprite); -void sub_8039E60(struct Sprite *sprite); -void sub_8039E84(struct Sprite *sprite); +void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); +void EndBounceEffect(u8 battler, u8 which); +void sub_8012354(struct Sprite *sprite); void sub_801236C(struct Sprite *sprite); +void nullsub_12(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); -void sub_803B3AC(void); // unused -void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_8013F6C(u8 battlerId); +void sub_8013F6C(u8 battler); void SwapTurnOrder(u8 id1, u8 id2); -u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); -bool8 TryRunFromBattle(u8 bank); -void sub_800FD9C(void); -void sub_80120C4(struct Sprite *); -void sub_8012100(struct Sprite *); -void nullsub_12(void); -void SpriteCB_FaintOpponentMon(struct Sprite *sprite); - -extern const u8 gStatusConditionString_PoisonJpn[8]; -extern const u8 gStatusConditionString_SleepJpn[8]; -extern const u8 gStatusConditionString_ParalysisJpn[8]; -extern const u8 gStatusConditionString_BurnJpn[8]; -extern const u8 gStatusConditionString_IceJpn[8]; -extern const u8 gStatusConditionString_ConfusionJpn[8]; -extern const u8 gStatusConditionString_LoveJpn[8]; - -extern const u8 * const gStatusConditionStringsTable[7][2]; - -extern const u8 gTypeEffectiveness[336]; -extern const struct TrainerMoney gTrainerMoneyTable[]; +bool8 TryRunFromBattle(u8 battler); #endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_message.h b/include/battle_message.h index ffc9d5bb7..130dc7ce9 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -238,4 +238,12 @@ extern const u8* const gStatNamesTable2[]; extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; +extern const u8 gText_Sleep[]; +extern const u8 gText_Poison[]; +extern const u8 gText_Burn[]; +extern const u8 gText_Paralysis[]; +extern const u8 gText_Ice[]; +extern const u8 gText_Confusion[]; +extern const u8 gText_Love[]; + #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 3f2699064..983d9fce6 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -7,13 +7,6 @@ #define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF #define ACC_CURR_MOVE 0 -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - #define ATK48_STAT_NEGATIVE 0x1 #define ATK48_STAT_BY_TWO 0x2 #define ATK48_BIT_x4 0x4 diff --git a/include/battle_scripts.h b/include/battle_scripts.h index a13a8c097..184527587 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -227,5 +227,13 @@ extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; extern const u8 BattleScript_GhostBallDodge[]; extern const u8 gUnknown_81D9A88[]; +extern const u8 gUnknown_81D91A1[]; // knizz: silph scope unveil +extern const u8 gUnknown_81D88D7[]; + +extern const u8 *const gBattleScriptsForMoveEffects[]; +extern const u8 *const gBattlescriptsForBallThrow[]; +extern const u8 *const gBattlescriptsForRunningByItem[]; +extern const u8 *const gBattlescriptsForUsingItem[]; +extern const u8 *const gBattlescriptsForSafariActions[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 61395811b..809806e9b 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -3,20 +3,36 @@ #include "global.h" -void BattleSetup_StartScriptedWildBattle(void); -u8 BattleSetup_GetTerrainId(void); -u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); -void BattleSetup_StartBattlePikeWildBattle(void); void BattleSetup_StartWildBattle(void); void BattleSetup_StartRoamerBattle(void); - -u8 HasTrainerAlreadyBeenFought(u16); -void SetTrainerFlag(u16); -void ClearTrainerFlag(u16); -void BattleSetup_StartTrainerBattle(void); -u8 *BattleSetup_GetScriptAddrAfterBattle(void); -u8 *BattleSetup_GetTrainerPostBattleScript(void); -void sub_80803FC(void); +void ScrSpecial_StartOldManTutorialBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +void ScrSpecial_StartMarowakBattle(void); +void ScrSpecial_StartSouthernIslandBattle(void); +void Special_StartLegendaryBattle(void); +void Special_StartGroudonKyogreBattle(void); +void Special_StartRegiBattle(void); +u8 BattleSetup_GetTerrainId(void); u8 sub_8080060(void); +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); +void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript); +bool32 GetTrainerFlagFromScriptPointer(const u8 *data); +void SetUpTrainerMovement(void); +u8 ScrSpecial_GetTrainerBattleMode(void); +u16 sub_80803D8(void); +u16 ScrSpecial_HasTrainerBeenFought(void); +void SetBattledTrainerFlag(void); +bool8 HasTrainerBeenFought(u16 trainerId); +void SetTrainerFlag(u16 trainerId); +void ClearTrainerFlag(u16 trainerId); +void BattleSetup_StartTrainerBattle(void); +void ScrSpecial_StartTrainerEyeRematch(void); +void ScrSpecial_ShowTrainerIntroSpeech(void); +const u8 *BattleSetup_GetScriptAddrAfterBattle(void); +const u8 *BattleSetup_GetTrainerPostBattleScript(void); +void ScrSpecial_ShowTrainerNonBattlingSpeech(void); +void PlayTrainerEncounterMusic(void); +const u8 *GetTrainerALoseText(void); +const u8 *GetTrainerWonSpeech(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/berry.h b/include/berry.h index 0e554a789..d55192301 100644 --- a/include/berry.h +++ b/include/berry.h @@ -63,7 +63,7 @@ void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); void sub_809C794(void); -const struct Berry * sub_809C8A0(u8 berryIdx); +const struct Berry * GetBerryInfo(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/constants/abilities.h b/include/constants/abilities.h index 4e2c4056c..4ad54c86f 100644 --- a/include/constants/abilities.h +++ b/include/constants/abilities.h @@ -80,4 +80,6 @@ #define ABILITY_CACOPHONY 76 #define ABILITY_AIR_LOCK 77 +#define ABILITIES_COUNT 78 + #endif // GUARD_CONSTANTS_ABILITIES_H diff --git a/include/constants/battle.h b/include/constants/battle.h index a0099d23f..910b50562 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -44,38 +44,38 @@ #define BIT_FLANK 2 // Battle Type Flags -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_OLDMAN_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_GHOST 0x8000 -#define BATTLE_TYPE_POKEDUDE 0x10000 -#define BATTLE_TYPE_PALACE 0x20000 -#define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_TRAINER_TOWER 0x80000 -#define BATTLE_TYPE_PIKE 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_TRAINER_HILL 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYOGRE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 +#define BATTLE_TYPE_DOUBLE 0x0001 +#define BATTLE_TYPE_LINK 0x0002 +#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. +#define BATTLE_TYPE_TRAINER 0x0008 +#define BATTLE_TYPE_FIRST_BATTLE 0x0010 +#define BATTLE_TYPE_20 0x0020 +#define BATTLE_TYPE_MULTI 0x0040 +#define BATTLE_TYPE_SAFARI 0x0080 +#define BATTLE_TYPE_BATTLE_TOWER 0x0100 +#define BATTLE_TYPE_OLD_MAN_TUTORIAL 0x0200 +#define BATTLE_TYPE_ROAMER 0x0400 +#define BATTLE_TYPE_EREADER_TRAINER 0x0800 +#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 +#define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_GHOST 0x8000 +#define BATTLE_TYPE_POKEDUDE 0x10000 +#define BATTLE_TYPE_PALACE 0x20000 +#define BATTLE_TYPE_ARENA 0x40000 +#define BATTLE_TYPE_TRAINER_TOWER 0x80000 +#define BATTLE_TYPE_PIKE 0x100000 +#define BATTLE_TYPE_PYRAMID 0x200000 +#define BATTLE_TYPE_INGAME_PARTNER 0x400000 +#define BATTLE_TYPE_x800000 0x800000 +#define BATTLE_TYPE_RECORDED 0x1000000 +#define BATTLE_TYPE_x2000000 0x2000000 +#define BATTLE_TYPE_TRAINER_HILL 0x4000000 +#define BATTLE_TYPE_SECRET_BASE 0x8000000 +#define BATTLE_TYPE_GROUDON 0x10000000 +#define BATTLE_TYPE_KYOGRE 0x20000000 +#define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define BATTLE_TYPE_x80000000 0x80000000 #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) @@ -293,4 +293,9 @@ #define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 +// Return value for IsRunningFromBattleImpossible. +#define BATTLE_RUN_SUCCESS 0 +#define BATTLE_RUN_FORBIDDEN 1 +#define BATTLE_RUN_FAILURE 2 + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_setup.h b/include/constants/battle_setup.h new file mode 100644 index 000000000..8f700dc04 --- /dev/null +++ b/include/constants/battle_setup.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_BATTLE_SETUP_H +#define GUARD_CONSTANTS_BATTLE_SETUP_H + +#define TRAINER_BATTLE_SINGLE 0 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC 1 +#define TRAINER_BATTLE_CONTINUE_SCRIPT 2 +#define TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT 3 +#define TRAINER_BATTLE_DOUBLE 4 +#define TRAINER_BATTLE_REMATCH 5 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE 6 +#define TRAINER_BATTLE_REMATCH_DOUBLE 7 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC 8 +#define TRAINER_BATTLE_TUTORIAL 9 + +#endif // GUARD_CONSTANTS_BATTLE_SETUP_H diff --git a/include/constants/map_types.h b/include/constants/map_types.h new file mode 100644 index 000000000..96ea73702 --- /dev/null +++ b/include/constants/map_types.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_MAP_TYPES_H +#define GUARD_CONSTANTS_MAP_TYPES_H + +#define MAP_TYPE_0 0 +#define MAP_TYPE_TOWN 1 +#define MAP_TYPE_CITY 2 +#define MAP_TYPE_ROUTE 3 +#define MAP_TYPE_UNDERGROUND 4 +#define MAP_TYPE_UNDERWATER 5 +#define MAP_TYPE_OCEAN_ROUTE 6 +#define MAP_TYPE_7 7 +#define MAP_TYPE_INDOOR 8 +#define MAP_TYPE_SECRET_BASE 9 + +#endif // GUARD_CONSTANTS_MAP_TYPES_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 7359e9381..d8c429ed5 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -165,6 +165,8 @@ #define TRAINER_PIC_LADY 146 #define TRAINER_PIC_PAINTER 147 +#define TRAINER_SECRET_BASE 1024 + #define F_TRAINER_FEMALE (1 << 7) #define TRAINER_PIC_AQUA_LEADER_ARCHIE 0 diff --git a/include/data.h b/include/data.h index 99594209b..9ea1f7c96 100644 --- a/include/data.h +++ b/include/data.h @@ -5,6 +5,7 @@ #include "constants/species.h" #define SPECIES_SHINY_TAG 500 +#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) struct MonCoords { @@ -16,8 +17,6 @@ struct MonCoords extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; -extern const u8 gAbilityNames[][13]; -extern const u8 gTypeNames[][7]; extern const u16 gUnknown_8251CB8[]; extern const u16 gUnknown_8251FEE[]; extern const u16 gUnknown_8252324[]; diff --git a/include/event_scripts.h b/include/event_scripts.h index c61e51f04..c0f0300b1 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1155,6 +1155,15 @@ extern const u8 EventScript_SafariOutOfBalls[]; extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; +// battle_setup +extern const u8 EventScript_DoTrainerBattle[]; +extern const u8 EventScript_TryDoDoubleTrainerBattle[]; +extern const u8 EventScript_TryDoNormalTrainerBattle[]; +extern const u8 EventScript_TryDoDoubleRematchBattle[]; +extern const u8 EventScript_TryDoRematchBattle[]; +extern const u8 gUnknown_81A4EB4[]; +extern const u8 EventScript_1C555B[]; + // new_game extern const u8 EventScript_ResetAllMapFlags[]; diff --git a/include/evolution_scene.h b/include/evolution_scene.h index 1d87ceb76..6ceed99c1 100644 --- a/include/evolution_scene.h +++ b/include/evolution_scene.h @@ -3,8 +3,8 @@ #include "global.h" -void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); -void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); extern void (*gCB2_AfterEvolution)(void); diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 0a33138b3..ecb622de5 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -5,4 +5,7 @@ extern u32 gUnknown_3005078; +void RestartWildEncounterImmunitySteps(void); +void ClearPoisonStepCounter(void); + #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 40d7ed933..6177cba1c 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -85,7 +85,7 @@ void sub_8063E28(struct MapObject *, struct Sprite *); void FieldObjectSetHeldMovement(struct MapObject *, u8); void npc_coords_shift_still(struct MapObject *); void sub_805FE7C(struct MapObject *, u8); -void npc_set_running_behaviour_etc(struct MapObject *, u8); +void SetTrainerMovementType(struct MapObject *, u8); u8 sub_80634F0(u8 direction); u8 sub_8063500(u8 a0); void EventObjectSetGraphicsId(struct MapObject *mapObject, u8 a1); @@ -94,6 +94,7 @@ void npc_paltag_set_load(u8 mode); bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); u8 sub_8063F84(u8 direction); +u8 GetTrainerFacingDirectionMovementType(u8 direction); void CameraObjectSetFollowedObjectId(u8 spriteId); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 2c408afc9..1d431771b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -13,8 +13,8 @@ u8 player_get_direction_upper_nybble(void); u8 player_get_x22(void); void sub_808D074(u8); -void sub_805C270(); -void sub_805C780(); +void sub_805C270(void); +void sub_805C780(void); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); u8 sub_805C808(u8); void SetPlayerAvatarStateMask(u8 mask); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a4358081d..c0f25fa93 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -13,35 +13,6 @@ enum CONNECTION_EMERGE }; -// map types -enum -{ - MAP_TYPE_0, - MAP_TYPE_TOWN, - MAP_TYPE_CITY, - MAP_TYPE_ROUTE, - MAP_TYPE_UNDERGROUND, - MAP_TYPE_UNDERWATER, - MAP_TYPE_6, - MAP_TYPE_7, - MAP_TYPE_INDOOR, - MAP_TYPE_SECRET_BASE -}; - -// map battle scenes -enum -{ - MAP_BATTLE_SCENE_NORMAL, // 0 - MAP_BATTLE_SCENE_GYM, // 1 - MAP_BATTLE_SCENE_MAGMA, // 2 - MAP_BATTLE_SCENE_AQUA, // 3 - MAP_BATTLE_SCENE_SIDNEY, // 4 - MAP_BATTLE_SCENE_PHOEBE, // 5 - MAP_BATTLE_SCENE_GLACIA, // 6 - MAP_BATTLE_SCENE_DRAKE, // 7 - MAP_BATTLE_SCENE_BATTLE_TOWER, // 8 -}; - typedef void (*TilesetCB)(void); struct Tileset @@ -242,7 +213,7 @@ struct MapObject /*0x0C*/ struct Coords16 coords1; /*0x10*/ struct Coords16 coords2; /*0x14*/ struct Coords16 coords3; - /*0x18*/ u8 mapobj_unk_18:4; //current direction? + /*0x18*/ u8 facingDirection:4; //current direction? /*0x18*/ u8 placeholder18:4; /*0x19*/ union MapObjectRange range; /*0x1A*/ u8 mapobj_unk_1A; diff --git a/include/global.h b/include/global.h index 5c4501be3..9588deae3 100644 --- a/include/global.h +++ b/include/global.h @@ -32,6 +32,13 @@ // GF's lingo #define NELEMS ARRAY_COUNT +#define SWAP(a, b, temp) \ +{ \ + temp = a; \ + a = b; \ + b = temp; \ +} + // useful math macros // Converts a number to Q8.8 fixed-point format diff --git a/include/item.h b/include/item.h index 69560a0e5..dd6271d13 100644 --- a/include/item.h +++ b/include/item.h @@ -37,7 +37,6 @@ void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 CheckBagHasSpace(u16 itemId, u16 count); -bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); diff --git a/include/item_menu.h b/include/item_menu.h index 166906ebe..d12b9f394 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -36,6 +36,7 @@ void ItemMenu_SetExitCallback(void (*)(void)); void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc); void sub_810A1F8(u8 taskId); void sub_8107ECC(void); +void sub_810AF74(void); void sub_8108DC8(u8 pocketId); void sub_81089F4(u8 pocketId); void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback); diff --git a/include/link_rfu.h b/include/link_rfu.h index 2be9dd3c9..f5aa682e6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -11,7 +11,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); void MG_DrawCheckerboardPattern(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); -bool8 IsRfuTaskFinished(void); +bool8 IsLinkRfuTaskFinished(void); void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); diff --git a/include/map_obj_80688E4.h b/include/map_obj_80688E4.h index bfac00378..bfd5dd3c7 100644 --- a/include/map_obj_80688E4.h +++ b/include/map_obj_80688E4.h @@ -3,7 +3,7 @@ #include "global.h" -void player_bitmagic(void); +void FreezeEventObjects(void); void FreezeMapObject(struct MapObject *); void FreezeMapObjectsExceptOne(u8 mapObjectId); diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 62bcfdd38..df03001bf 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -10,7 +10,7 @@ bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior); bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior); bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior); bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB21OrWaterfallBottom(u8 metatileBehavior); +bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior); bool8 MetatileBehavior_IsReflective(u8 metatileBehavior); bool8 MetatileBehavior_IsIce(u8 metatileBehavior); @@ -53,15 +53,15 @@ bool8 MetatileBehavior_IsPC(u8 metatileBehavior); bool8 MetatileBehavior_IsPondWaterOrPuddle(u8 metatileBehavior); bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior); bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_3(u8 metatileBehavior); +bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_6(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_7(u8 metatileBehavior); +bool8 MetatileBehavior_IsBridge(u8 metatileBehavior); +bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB0C(u8 metatileBehavior); +bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior); +bool8 MetatileBehavior_IsMountain(u8 metatileBehavior); bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior); bool8 MetatileBehavior_IsMB19(u8 metatileBehavior); bool8 MetatileBehavior_IsWaterfallBottom(u8 metatileBehavior); diff --git a/include/overworld.h b/include/overworld.h index a5e975d1d..805ddc8a0 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,7 +62,7 @@ void sub_8084EBC(s16, s16); void player_avatar_init_params_reset(void); void Overworld_SetFlashLevel(s32 a1); -//u8 Overworld_GetFlashLevel(void); +u8 Overworld_GetFlashLevel(void); void sub_8085524(u16); void Overworld_SetSavedMusic(u16); @@ -141,5 +141,6 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd bool32 sub_8058318(void); void CB2_ReturnToStartMenu(void); +void CB2_WhiteOut(void); #endif //GUARD_OVERWORLD_H diff --git a/include/party_menu.h b/include/party_menu.h index 5b9b6e1c4..53731bee6 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -84,5 +84,7 @@ bool8 IsMultiBattle(void); void sub_8126EDC(void); void PartyMenuInit_FromPlayerPc(void); void CB2_PartyMenuFromStartMenu(void); +void sub_8128198(void); +void sub_8127FF4(u8 slot, u8 slot2); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 77c8191f3..79933a22c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -169,35 +169,6 @@ enum EGG_GROUP_UNDISCOVERED }; -enum -{ - NATURE_HARDY, - NATURE_LONELY, - NATURE_BRAVE, - NATURE_ADAMANT, - NATURE_NAUGHTY, - NATURE_BOLD, - NATURE_DOCILE, - NATURE_RELAXED, - NATURE_IMPISH, - NATURE_LAX, - NATURE_TIMID, - NATURE_HASTY, - NATURE_SERIOUS, - NATURE_JOLLY, - NATURE_NAIVE, - NATURE_MODEST, - NATURE_MILD, - NATURE_QUIET, - NATURE_BASHFUL, - NATURE_RASH, - NATURE_CALM, - NATURE_GENTLE, - NATURE_SASSY, - NATURE_CAREFUL, - NATURE_QUIRKY, -}; - struct PokemonSubstruct0 { u16 species; @@ -629,10 +600,10 @@ u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); u16 GetMonEVCount(struct Pokemon *mon); -void sub_8043A68(void); +void RandomlyGivePartyPokerus(struct Pokemon *party); u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); -void sub_8043B40(void); +void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); diff --git a/include/quest_log.h b/include/quest_log.h index adfe27e1b..8165486ce 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -2,6 +2,7 @@ #define GUARD_QUEST_LOG_H #include "global.h" +#include "quest_log_battle.h" struct UnkStruct_3005E90 { @@ -14,6 +15,7 @@ struct UnkStruct_3005E90 u8 unk_2; }; +extern u8 gUnknown_203ADFA; extern u8 gUnknown_3005E88; extern u16 sNumQuestLogs; extern struct UnkStruct_3005E90 gUnknown_3005E90; @@ -40,6 +42,8 @@ void sub_8112450(void); void sub_8112364(void); u8 sub_8112CAC(void); void sub_81138F8(void); +void sub_811231C(void); +void sub_81139BC(void); void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); diff --git a/include/quest_log_battle.h b/include/quest_log_battle.h new file mode 100644 index 000000000..45d656e14 --- /dev/null +++ b/include/quest_log_battle.h @@ -0,0 +1,9 @@ +#ifndef GUARD_QUEST_LOG_BATTLE_H +#define GUARD_QUEST_LOG_BATTLE_H + +#include "global.h" + +void sub_812BFDC(void); +void sub_812C224(void); + +#endif // GUARD_QUEST_LOG_BATTLE_H diff --git a/include/safari_zone.h b/include/safari_zone.h index feaa93ed0..a50351570 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -16,4 +16,6 @@ void ExitSafariMode(void); bool8 SafariZoneTakeStep(void); void SafariZoneRetirePrompt(void); +void CB2_EndSafariBattle(void); + #endif // GUARD_SAFARI_ZONE_H diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h index e1d228589..768e838dd 100644 --- a/include/script_pokemon_util_80A0058.h +++ b/include/script_pokemon_util_80A0058.h @@ -4,5 +4,6 @@ bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3); bool8 ScriptGiveEgg(u16 species); void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot); +void sp000_heal_pokemon(void); #endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H diff --git a/include/strings.h b/include/strings.h index 51396954c..9304b225d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -231,6 +231,18 @@ extern const u8 gText_WhatWillPkmnDo[]; // battle_script_commands extern const u8 gText_BattleYesNoChoice[]; +// battle_controller_oak_old_man +extern const u8 gUnknown_83FDAE2[]; +extern const u8 gUnknown_83FDB92[]; +extern const u8 gUnknown_83FDBEF[]; +extern const u8 gUnknown_83FDC58[]; +extern const u8 gUnknown_83FDC95[]; +extern const u8 gUnknown_83FDD23[]; +extern const u8 gUnknown_83FDD64[]; +extern const u8 gUnknown_83FDDEB[]; +extern const u8 gUnknown_83FDCD2[]; +extern const u8 gUnknown_83FE6FA[]; + // credits extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR diff --git a/include/vs_seeker.h b/include/vs_seeker.h index efc014a4a..fdd6839df 100644 --- a/include/vs_seeker.h +++ b/include/vs_seeker.h @@ -6,9 +6,10 @@ void Task_VsSeeker_0(u8 taskId); void sub_810CB90(void); void sub_810CDE8(void); -int sub_810CE64(u16 a0); +int GetRematchTrainerId(u16 a0); bool8 sub_810CF04(u8 a0); u8 sub_810CF54(); void sub_810D0D0(void); +void sub_810CB90(void); #endif //GUARD_VS_SEEKER_H diff --git a/ld_script.txt b/ld_script.txt index 63c435a2f..676bdc911 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -65,8 +65,8 @@ SECTIONS { src/main_menu.o(.text); src/battle_controllers.o(.text); src/decompress.o(.text); - asm/battle_1.o(.text); - asm/battle_2.o(.text); + asm/battle_bg.o(.text); + src/battle_main.o(.text); src/battle_util.o(.text); src/battle_script_commands.o(.text); src/battle_util2.o(.text); @@ -119,9 +119,9 @@ SECTIONS { src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); - src/field_fadetransition.o(.text);; + src/field_fadetransition.o(.text); asm/field_screen_effect.o(.text); - asm/battle_setup.o(.text); + src/battle_setup.o(.text); asm/cable_club.o(.text); asm/trainer_see.o(.text); asm/wild_encounter.o(.text); @@ -208,7 +208,7 @@ SECTIONS { asm/learn_move.o(.text); src/fldeff_softboiled.o(.text); asm/battle_tower.o(.text); - asm/battle_controller_oak.o(.text); + src/battle_controller_oak_old_man.o(.text); src/player_pc.o(.text); src/intro.o(.text); asm/battle_anim_special.o(.text); @@ -385,6 +385,7 @@ SECTIONS { src/main_menu.o(.rodata); src/data.o(.rodata); data/data.o(.rodata); + src/battle_main.o(.rodata); src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); src/battle_controller_player.o(.rodata); @@ -422,6 +423,8 @@ SECTIONS { src/title_screen.o(.rodata); data/field_weather.o(.rodata); data/data_835B488.o(.rodata); + src/battle_setup.o(.rodata); + data/data_835B488.o(.rodata.83C6AB0); src/pokemon_icon.o(.rodata); data/data_835B488.o(.rodata.83D4100); src/item_menu_icons.o(.rodata); @@ -457,6 +460,7 @@ SECTIONS { data/data_83FECCC.o(.rodata); src/battle_controller_safari.o(.rodata); data/data_83FECCC.o(.rodata.83FEDE4); + src/battle_controller_oak_old_man.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index c57825b4f..e66fdb2af 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1,6 +1,6 @@ #include "global.h" #include "battle.h" -#include "battle_main.h" +#include "battle_anim.h" #include "util.h" #include "item.h" #include "random.h" diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index e871937e7..c19af4cb7 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -28,7 +28,7 @@ static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); static void sub_8075658(struct Sprite *sprite); static void sub_80757E8(struct Sprite *sprite); static bool8 sub_80758DC(void); -static void sub_8075EF0(struct Sprite *sprite); +static void AnimThrowProjectile_Step(struct Sprite *sprite); static void sub_80760D0(u8 taskId); static void AnimTask_BlendMonInAndOutSetup(struct Task *task); static void AnimTask_BlendMonInAndOutStep(u8 taskId); @@ -1336,7 +1336,7 @@ static u8 GetBattlerAtPosition_(u8 position) return GetBattlerAtPosition(position); } -void sub_8075D9C(struct Sprite *sprite) +void AnimSpriteOnMonPos(struct Sprite *sprite) { bool8 var; @@ -1390,7 +1390,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void sub_8075E80(struct Sprite *sprite) +void AnimThrowProjectile(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 1); if (GetBattlerSide(gBattleAnimAttacker)) @@ -1400,10 +1400,10 @@ void sub_8075E80(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - sprite->callback = sub_8075EF0; + sprite->callback = AnimThrowProjectile_Step; } -static void sub_8075EF0(struct Sprite *sprite) +static void AnimThrowProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c new file mode 100644 index 000000000..99391ab3e --- /dev/null +++ b/src/battle_controller_oak_old_man.c @@ -0,0 +1,2295 @@ +#include "global.h" +#include "task.h" +#include "pokemon.h" +#include "pokeball.h" +#include "party_menu.h" +#include "bg.h" +#include "data.h" +#include "palette.h" +#include "util.h" +#include "m4a.h" +#include "link.h" +#include "sound.h" +#include "item.h" +#include "item_menu.h" +#include "text.h" +#include "strings.h" +#include "string_util.h" +#include "window.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "reshow_battle_screen.h" +#include "constants/songs.h" +#include "constants/items.h" + +static void OakOldManHandleGetMonData(void); +static void OakOldManHandleGetRawMonData(void); +static void OakOldManHandleSetMonData(void); +static void OakOldManHandleSetRawMonData(void); +static void OakOldManHandleLoadMonSprite(void); +static void OakOldManHandleSwitchInAnim(void); +static void OakOldManHandleReturnMonToBall(void); +static void OakOldManHandleDrawTrainerPic(void); +static void OakOldManHandleTrainerSlide(void); +static void OakOldManHandleTrainerSlideBack(void); +static void OakOldManHandleFaintAnimation(void); +static void OakOldManHandlePaletteFade(void); +static void OakOldManHandleSuccessBallThrowAnim(void); +static void OakOldManHandleBallThrowAnim(void); +static void OakOldManHandlePause(void); +static void OakOldManHandleMoveAnimation(void); +static void OakOldManHandlePrintString(void); +static void OakOldManHandlePrintSelectionString(void); +static void OakOldManHandleChooseAction(void); +static void OakOldManHandleUnknownYesNoBox(void); +static void OakOldManHandleChooseMove(void); +static void OakOldManHandleChooseItem(void); +static void OakOldManHandleChoosePokemon(void); +static void OakOldManHandleCmd23(void); +static void OakOldManHandleHealthBarUpdate(void); +static void OakOldManHandleExpUpdate(void); +static void OakOldManHandleStatusIconUpdate(void); +static void OakOldManHandleStatusAnimation(void); +static void OakOldManHandleStatusXor(void); +static void OakOldManHandleDataTransfer(void); +static void OakOldManHandleDMA3Transfer(void); +static void OakOldManHandlePlayBGM(void); +static void OakOldManHandleCmd32(void); +static void OakOldManHandleTwoReturnValues(void); +static void OakOldManHandleChosenMonReturnValue(void); +static void OakOldManHandleOneReturnValue(void); +static void OakOldManHandleOneReturnValue_Duplicate(void); +static void OakOldManHandleCmd37(void); +static void OakOldManHandleCmd38(void); +static void OakOldManHandleCmd39(void); +static void OakOldManHandleCmd40(void); +static void OakOldManHandleHitAnimation(void); +static void OakOldManHandleCmd42(void); +static void OakOldManHandlePlaySE(void); +static void OakOldManHandlePlayFanfare(void); +static void OakOldManHandleFaintingCry(void); +static void OakOldManHandleIntroSlide(void); +static void OakOldManHandleIntroTrainerBallThrow(void); +static void OakOldManHandleDrawPartyStatusSummary(void); +static void OakOldManHandleHidePartyStatusSummary(void); +static void OakOldManHandleEndBounceEffect(void); +static void OakOldManHandleSpriteInvisibility(void); +static void OakOldManHandleBattleAnimation(void); +static void OakOldManHandleLinkStandbyMsg(void); +static void OakOldManHandleResetActionMoveSelection(void); +static void OakOldManHandleCmd55(void); +static void OakOldManCmdEnd(void); + +static void OakOldManBufferRunCommand(void); +static void OakOldManBufferExecCompleted(void); +static void WaitForMonSelection(void); +static void CompleteWhenChoseItem(void); +static void sub_80E8704(void); +static void sub_80E7CD8(void); +static void sub_80E835C(void); +static void Task_LaunchLvlUpAnim(u8 taskId); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); +static void CompleteOnInactiveTextPrinter2(void); +static void Task_PrepareToGiveExpWithExpBar(u8 taskId); +static void sub_80E804C(u8 taskId); +static void Task_UpdateLvlInHealthbox(u8 taskId); +static void sub_80E85D4(const u8 *text, u8 a1); +static u32 CopyOakOldManMonData(u8 monId, u8 *dst); +static void SetOakOldManMonData(u8 monId); +static void OakOldManDoMoveAnimation(void); +static void HandleInputChooseAction(void); +static void sub_80EB0A8(u8 taskId); + +static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + OakOldManHandleGetMonData, + OakOldManHandleGetRawMonData, + OakOldManHandleSetMonData, + OakOldManHandleSetRawMonData, + OakOldManHandleLoadMonSprite, + OakOldManHandleSwitchInAnim, + OakOldManHandleReturnMonToBall, + OakOldManHandleDrawTrainerPic, + OakOldManHandleTrainerSlide, + OakOldManHandleTrainerSlideBack, + OakOldManHandleFaintAnimation, + OakOldManHandlePaletteFade, + OakOldManHandleSuccessBallThrowAnim, + OakOldManHandleBallThrowAnim, + OakOldManHandlePause, + OakOldManHandleMoveAnimation, + OakOldManHandlePrintString, + OakOldManHandlePrintSelectionString, + OakOldManHandleChooseAction, + OakOldManHandleUnknownYesNoBox, + OakOldManHandleChooseMove, + OakOldManHandleChooseItem, + OakOldManHandleChoosePokemon, + OakOldManHandleCmd23, + OakOldManHandleHealthBarUpdate, + OakOldManHandleExpUpdate, + OakOldManHandleStatusIconUpdate, + OakOldManHandleStatusAnimation, + OakOldManHandleStatusXor, + OakOldManHandleDataTransfer, + OakOldManHandleDMA3Transfer, + OakOldManHandlePlayBGM, + OakOldManHandleCmd32, + OakOldManHandleTwoReturnValues, + OakOldManHandleChosenMonReturnValue, + OakOldManHandleOneReturnValue, + OakOldManHandleOneReturnValue_Duplicate, + OakOldManHandleCmd37, + OakOldManHandleCmd38, + OakOldManHandleCmd39, + OakOldManHandleCmd40, + OakOldManHandleHitAnimation, + OakOldManHandleCmd42, + OakOldManHandlePlaySE, + OakOldManHandlePlayFanfare, + OakOldManHandleFaintingCry, + OakOldManHandleIntroSlide, + OakOldManHandleIntroTrainerBallThrow, + OakOldManHandleDrawPartyStatusSummary, + OakOldManHandleHidePartyStatusSummary, + OakOldManHandleEndBounceEffect, + OakOldManHandleSpriteInvisibility, + OakOldManHandleBattleAnimation, + OakOldManHandleLinkStandbyMsg, + OakOldManHandleResetActionMoveSelection, + OakOldManHandleCmd55, + OakOldManCmdEnd, +}; + +static void nullsub_81(void) +{ +} + +void SetControllerToOakOrOldMan(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand; + gBattleStruct->field_94 = 0; + gBattleStruct->field_95 = 0; + gBattleStruct->field_96 = 0; + gBattleStruct->field_97 = 0; +} + +static void OakOldManBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOakOldManBufferCommands)) + sOakOldManBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + OakOldManBufferExecCompleted(); + } +} + +static void HandleInputChooseAction(void) +{ + u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); + DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + switch (gActionSelectionCursor[gActiveBattler]) + { + case 0: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); + break; + case 1: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + break; + case 2: + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + break; + case 3: + BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); + break; + } + OakOldManBufferExecCompleted(); + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gActionSelectionCursor[gActiveBattler] & 1) // if is B_ACTION_USE_ITEM or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 1)) // if is B_ACTION_USE_MOVE or B_ACTION_SWITCH + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_UP)) + { + if (gActionSelectionCursor[gActiveBattler] & 2) // if is B_ACTION_SWITCH or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 2)) // if is B_ACTION_USE_MOVE or B_ACTION_USE_ITEM + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(B_BUTTON)) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT + && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBattler][1] == B_ACTION_USE_ITEM) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0); + OakOldManBufferExecCompleted(); + } + } + else if (JOY_NEW(START_BUTTON)) + { + SwapHpBarsWithHpText(); + } +} + +static void sub_80E7844(void) +{ + switch (gBattleStruct->field_94) + { + case 0: + gBattleStruct->field_96 = 64; + ++gBattleStruct->field_94; + // fall through + case 1: + if (--gBattleStruct->field_96 == 0) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(0); + ActionSelectionCreateCursorAt(1, 0); + gBattleStruct->field_96 = 64; + ++gBattleStruct->field_94; + } + break; + case 2: + if (--gBattleStruct->field_96 == 0) + { + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + OakOldManBufferExecCompleted(); + } + break; + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OakOldManBufferExecCompleted(); +} + +static void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + OakOldManBufferExecCompleted(); +} + +static void sub_80E7930(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +static void CompleteOnSpecialAnimDone(void) +{ + if (!gDoingBattleAnim) + OakOldManBufferExecCompleted(); +} + +void sub_80E7988(void) +{ + HandleInputChooseMove(); + if (!(gBattleControllerExecFlags & gBitTable[gActiveBattler])) + OakOldManBufferExecCompleted(); +} + +static void OpenPartyMenuToChooseMon(void) +{ + if (!gPaletteFade.active) + { + u8 caseId; + + gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection; + caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; + DestroyTask(gUnknown_3004FFC[gActiveBattler]); + FreeAllWindowBuffers(); + OpenPartyMenuInBattle(caseId); + } +} + +static void WaitForMonSelection(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (gUnknown_203B0C0 == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + else + BtlController_EmitChosenMonReturnValue(1, 6, NULL); + OakOldManBufferExecCompleted(); + } +} + +static void OpenBagAndChooseItem(void) +{ + if (!gPaletteFade.active) + { + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem; + nullsub_44(); + FreeAllWindowBuffers(); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + sub_8107ECC(); + else + sub_810AF74(); + } +} + +static void CompleteWhenChoseItem(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (!sub_80EB2E0(4) + && gSpecialVar_ItemId == ITEM_POTION + && gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + sub_80EB2F4(4); + gBattlerControllerFuncs[gActiveBattler] = sub_80E8704; + } + else + { + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + OakOldManBufferExecCompleted(); + } + } +} + +static void sub_80E7B4C(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_80E7CD8; + } +} + +static void sub_80E7CD8(void) +{ + bool32 r4 = FALSE; + + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + r4 = TRUE; + if (r4 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_80E835C; + } +} + +#define tExpTask_monId data[0] +#define tExpTask_gainedExp data[1] +#define tExpTask_battler data[2] +#define tExpTask_frames data[10] + +static void Task_GiveExpToMon(u8 taskId) +{ + u32 monId = (u8)(gTasks[taskId].tExpTask_monId); + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + + if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // Give exp without moving the expbar. + { + struct Pokemon *mon = &gPlayerParty[monId]; + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u32 currExp = GetMonData(mon, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBattler; + + SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + CalculateMonStats(mon); + gainedExp -= nextLvlExp - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + if (IsDoubleBattle() == TRUE + && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + gTasks[taskId].func = Task_LaunchLvlUpAnim; + else + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; + } + else + { + currExp += gainedExp; + SetMonData(mon, MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar; + } +} + +static void Task_PrepareToGiveExpWithExpBar(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + s32 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + struct Pokemon *mon = &gPlayerParty[monIndex]; + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 exp = GetMonData(mon, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_80E804C; +} + +static void sub_80E804C(u8 taskId) +{ + if (gTasks[taskId].tExpTask_frames < 13) + { + ++gTasks[taskId].tExpTask_frames; + } + else + { + u8 monId = gTasks[taskId].tExpTask_monId; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 newExpPoints; + + newExpPoints = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]); + if (newExpPoints == -1) // The bar has been filled with given exp points. + { + u8 level; + s32 currExp; + u16 species; + s32 expOnNextLvl; + + m4aSongNumStop(SE_EXP); + level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + if (currExp + gainedExp >= expOnNextLvl) + { + u8 savedActiveBattler; + + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + CalculateMonStats(&gPlayerParty[monId]); + gainedExp -= expOnNextLvl - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + gTasks[taskId].func = Task_LaunchLvlUpAnim; + } + else + { + currExp += gainedExp; + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; + DestroyTask(taskId); + } + } + } +} + +static void Task_LaunchLvlUpAnim(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + u8 monIndex = gTasks[taskId].tExpTask_monId; + + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + battlerId ^= BIT_FLANK; + InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); + gTasks[taskId].func = Task_UpdateLvlInHealthbox; +} + +static void Task_UpdateLvlInHealthbox(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + + if (!gBattleSpritesDataPtr->healthBoxesData[battlerId].specialAnimActive) + { + u8 monIndex = gTasks[taskId].tExpTask_monId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value. + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + else + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; + } +} + +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + u8 battlerId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value + battlerId = gTasks[taskId].tExpTask_battler; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; + DestroyTask(taskId); +} + +static void sub_80E82F4(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +static void sub_80E835C(void) +{ + u32 mask; + + switch (gBattleStruct->field_94) + { + case 0: + if (!gPaletteFade.active) + { + sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 1: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 2: + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDAE2); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 3: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 4: + if (!gPaletteFade.active) + { + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDB92); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 6: + if (!gPaletteFade.active) + { + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDBEF); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + } + break; + case 7: + if (!IsTextPrinterActive(24)) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 8: + if (!gPaletteFade.active) + { + sub_80EF0E0(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + sub_80EB524(); + gBattleStruct->field_94 = 0; + OakOldManBufferExecCompleted(); + } + break; + } +} + +void sub_80E8570(void) +{ + sub_80E85D4(gUnknown_83FDC58, 1); +} + +static void sub_80E8584(void) +{ + sub_80E85D4(gUnknown_83FDC95, 64); +} + +void sub_80E8598(void) +{ + sub_80E85D4(gUnknown_83FDD23, 1); +} + +static void sub_80E85AC(void) +{ + sub_80E85D4(gUnknown_83FDD64, 64); +} + +void sub_80E85C0(void) +{ + sub_80E85D4(gUnknown_83FDDEB, 64); +} + +static void sub_80E85D4(const u8 *text, u8 a2) +{ + switch (gBattleStruct->field_94) + { + case 0: + if (!IsTextPrinterActive(0)) + { + gBattleStruct->field_97 = a2; + ++gBattleStruct->field_94; + } + break; + case 1: + if (--gBattleStruct->field_97 == 0) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 3: + BattleStringExpandPlaceholdersToDisplayedString(text); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 4: + if (!IsTextPrinterActive(24)) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_80EB524(); + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + OakOldManBufferExecCompleted(); + else + OpponentBufferExecCompleted(); + gBattleCommunication[MSG_DISPLAY] = 0; + gBattleStruct->field_94 = 0; + } + break; + } +} + +static void sub_80E8704(void) +{ + u32 mask; + + switch (gBattleStruct->field_94) + { + case 0: + if (!gPaletteFade.active) + { + sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, gActiveBattler); + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 1: + if (!gPaletteFade.active) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 3: + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDCD2); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 4: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!gPaletteFade.active) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80EB524(); + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + OakOldManBufferExecCompleted(); + gBattleStruct->field_94 = 0; + } + break; + } +} + +static void CompleteOnHealthbarDone(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + OakOldManBufferExecCompleted(); + } +} + +static void CompleteOnInactiveTextPrinter2(void) +{ + if (!IsTextPrinterActive(0)) + OakOldManBufferExecCompleted(); +} + +static void DoHitAnimBlinkSpriteEffect(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + OakOldManBufferExecCompleted(); + } + else + { + if ((gSprites[spriteId].data[1] % 4) == 0) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +static void sub_80E89C4(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +static void CompleteOnBattlerSpriteCallbackDummy2(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OakOldManBufferExecCompleted(); +} + +static void CompleteOnFinishedBattleAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + OakOldManBufferExecCompleted(); +} + +static void OakOldManBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +static void CompleteOnFinishedStatusAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + size += CopyOakOldManMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyOakOldManMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + OakOldManBufferExecCompleted(); +} + +static u32 CopyOakOldManMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + src = (u8 *)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +static void OakOldManHandleGetRawMonData(void) +{ + PlayerHandleGetRawMonData(); +} + +static void OakOldManHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + SetOakOldManMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetOakOldManMonData(i); + monToCheck >>= 1; + } + } + OakOldManBufferExecCompleted(); +} + +static void SetOakOldManMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); +} + +static void OakOldManHandleSetRawMonData(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleLoadMonSprite(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleSwitchInAnim(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleReturnMonToBall(void) +{ + if (gBattleBufferA[gActiveBattler][1] == 0) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_80E89C4; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +static void OakOldManHandleDrawTrainerPic(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + 30); + } + else + { + DecompressTrainerBackPalette(5, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[5].size) * 4 + 80, + 30); + } + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void OakOldManHandleTrainerSlide(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + 30); + } + else + { + DecompressTrainerBackPalette(5, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[5].size) * 4 + 80, + 30); + } + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2; +} + +static void OakOldManHandleTrainerSlideBack(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleFaintAnimation(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110; + gBattlerControllerFuncs[gActiveBattler] = sub_80E82F4; + } + } +} + +static void OakOldManHandlePaletteFade(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleSuccessBallThrowAnim(void) +{ + gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void OakOldManHandleBallThrowAnim(void) +{ + u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1]; + + gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void OakOldManHandlePause(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE + { + OakOldManBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = OakOldManDoMoveAnimation; + } +} + +static void OakOldManDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + OakOldManBufferExecCompleted(); + } + break; + } +} + +static void OakOldManHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && *stringId == 1) + { + OakOldManBufferExecCompleted(); + } + else + { + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 64); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + switch (*stringId) + { + case 216: + if (!sub_80EB2E0(2)) + { + sub_80EB2F4(2); + gBattlerControllerFuncs[gActiveBattler] = sub_80E8584; + return; + } + break; + case 30: + gBattlerControllerFuncs[gActiveBattler] = sub_80E85AC; + return; + case 383: + gBattlerControllerFuncs[gActiveBattler] = sub_80E85C0; + return; + case 227: + gBattlerControllerFuncs[gActiveBattler] = sub_80E8598; + return; + } + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; + } +} + +static void OakOldManHandlePrintSelectionString(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + OakOldManHandlePrintString(); + else + OakOldManBufferExecCompleted(); +} + +static void sub_80EA690(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction; + else + gBattlerControllerFuncs[gActiveBattler] = sub_80E7844; + } +} + +static void OakOldManHandleChooseAction(void) +{ + s32 i; + + gBattlerControllerFuncs[gActiveBattler] = sub_80EA690; + BattlePutTextOnWindow(gUnknown_83FDA4C, 0); + BattlePutTextOnWindow(gUnknown_83FE725, 2); + for (i = 0; i < MAX_MON_MOVES; ++i) + ActionSelectionDestroyCursorAt((u8)i); + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); + else + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FE6FA); + BattlePutTextOnWindow(gDisplayedStringBattle, 1); +} + +static void OakOldManHandleUnknownYesNoBox(void) +{ + OakOldManBufferExecCompleted(); +} + +static void sub_80EA798(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; + gBattlerControllerFuncs[gActiveBattler] = sub_80E7988; + } +} + +static void OakOldManHandleChooseMove(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + InitMoveSelectionsVarsAndStrings(); + gBattlerControllerFuncs[gActiveBattler] = sub_80EA798; + } + else + { + switch (gBattleStruct->field_95) + { + case 0: + InitMoveSelectionsVarsAndStrings(); + ++gBattleStruct->field_95; + gBattleStruct->field_97 = 80; + // fall through + case 1: + if (--gBattleStruct->field_97 == 0) + { + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, 10, 0x100); + OakOldManBufferExecCompleted(); + } + break; + } + } +} + +static void OakOldManHandleChooseItem(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; + gBattlerInMenuId = gActiveBattler; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][i + 1]; +} + +static void OakOldManHandleChoosePokemon(void) +{ + s32 i; + + gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF; + *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; + *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; + *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; + gBattlerInMenuId = gActiveBattler; +} + +static void OakOldManHandleCmd23(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void OakOldManHandleExpUpdate(void) +{ + u8 monId = gBattleBufferA[gActiveBattler][1]; + + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) + { + OakOldManBufferExecCompleted(); + } + else + { + s16 expPointsToGive; + u8 taskId; + + LoadBattleBarGfx(1); + GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // Unused return value. + expPointsToGive = T1_READ_16(&gBattleBufferA[gActiveBattler][2]); + taskId = CreateTask(Task_GiveExpToMon, 10); + gTasks[taskId].tExpTask_monId = monId; + gTasks[taskId].tExpTask_gainedExp = expPointsToGive; + gTasks[taskId].tExpTask_battler = gActiveBattler; + gBattlerControllerFuncs[gActiveBattler] = nullsub_81; + } +} + +static void OakOldManHandleStatusIconUpdate(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleStatusAnimation(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleStatusXor(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleDataTransfer(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleDMA3Transfer(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlayBGM(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd32(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleTwoReturnValues(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleChosenMonReturnValue(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleOneReturnValue(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleOneReturnValue_Duplicate(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd37(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd38(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd39(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd40(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + OakOldManBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void OakOldManHandleCmd42(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlaySE(void) +{ + PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry1(species, 25); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + paletteNum = AllocSpritePalette(0xD6F8); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; + taskId = CreateTask(sub_80EB0A8, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_13; + } + else + { + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + OakOldManBufferExecCompleted(); + } +} + +static void sub_80EAF34(u8 battlerId) +{ + u16 species; + + gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE; + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT); +} + +static void sub_80EB0A8(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + ++gTasks[taskId].data[1]; + } + else + { + u8 savedActiveBattler = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_80EAF34(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_80E7B4C; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); + } +} + +static void OakOldManHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] != 0 + && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + OakOldManBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE; + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, + (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], + gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2]); + OakOldManBufferExecCompleted(); + } +} + +static void OakOldManHandleHidePartyStatusSummary(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleEndBounceEffect(void) +{ + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleSpriteInvisibility(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleBattleAnimation(void) +{ + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + OakOldManBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; +} + +static void OakOldManHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBattler][1]) + { + case 0: + case 1: + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + break; + case 2: + break; + } + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleResetActionMoveSelection(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + OakOldManBufferExecCompleted(); + if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK) + gBattlerControllerFuncs[gActiveBattler] = sub_80E7930; +} + +static void OakOldManCmdEnd(void) +{ +} + +bool8 sub_80EB2E0(u8 a1) +{ + return gBattleStruct->field_96 & a1; +} + +void sub_80EB2F4(u8 a1) +{ + gBattleStruct->field_96 |= a1; +} + +void sub_80EB30C(void) +{ + u32 width = 0x1A; + u32 pal = 7; + + FillBgTilemapBufferRect(0, 0x30, 0, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x31, 1, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x32, 2, 0xE, width, 1, pal); + FillBgTilemapBufferRect(0, 0x33, 0x1C, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x34, 0x1D, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x35, 0, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x36, 1, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x38, 0x1C, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x39, 0x1D, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3A, 0, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3B, 1, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3C, 0x1C, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3D, 0x1D, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3A), 0, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3B), 1, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3C), 0x1C, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3D), 0x1D, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x35), 0, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x36), 1, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x38), 0x1C, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x39), 0x1D, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x30), 0, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x31), 1, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x32), 2, 0x13, width, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x33), 0x1C, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x34), 0x1D, 0x13, 1, 1, pal); +} + +void sub_80EB524(void) +{ + u32 pal = 0; + u32 width = 0x1A; + u32 height; + + FillBgTilemapBufferRect(0, 3, 0, 0xE, 1, 1, pal); + height = 4; + FillBgTilemapBufferRect(0, 4, 1, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 5, 2, 0xE, width, 1, pal); + FillBgTilemapBufferRect(0, 6, 0x1C, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 7, 0x1D, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 8, 0, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 9, 1, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xA, 2, 0xF, width, height, pal); + FillBgTilemapBufferRect(0, 0xB, 0x1C, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xC, 0x1D, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xD, 0, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0xE, 1, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0xF, 2, 0x13, width, 1, pal); + FillBgTilemapBufferRect(0, 0x10, 0x1C, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x11, 0x1D, 0x13, 1, 1, pal); +} diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 794b83b73..a9173f1a9 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -45,7 +45,7 @@ static void OpponentHandleTrainerSlideBack(void); static void OpponentHandleFaintAnimation(void); static void OpponentHandlePaletteFade(void); static void OpponentHandleSuccessBallThrowAnim(void); -static void OpponentHandleBallThrow(void); +static void OpponentHandleBallThrowAnim(void); static void OpponentHandlePause(void); static void OpponentHandleMoveAnimation(void); static void OpponentHandlePrintString(void); @@ -116,7 +116,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandleFaintAnimation, OpponentHandlePaletteFade, OpponentHandleSuccessBallThrowAnim, - OpponentHandleBallThrow, + OpponentHandleBallThrowAnim, OpponentHandlePause, OpponentHandleMoveAnimation, OpponentHandlePrintString, @@ -1231,7 +1231,7 @@ static void OpponentHandleSuccessBallThrowAnim(void) OpponentBufferExecCompleted(); } -static void OpponentHandleBallThrow(void) +static void OpponentHandleBallThrowAnim(void) { OpponentBufferExecCompleted(); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a9bb5bc6e..f8d5958ba 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -839,7 +839,7 @@ void sub_802F6A8(void) else { m4aSongNumStop(SE_HINSI); - gMain.inBattle = 0; + gMain.inBattle = FALSE; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); } @@ -1318,7 +1318,6 @@ static void WaitForMonSelection(void) BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); - if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) PrintLinkStandbyMsg(); PlayerBufferExecCompleted(); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 544af1006..f3530fc4b 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -85,9 +85,9 @@ static void InitSinglePlayerBtlControllers(void) gBattleMainFunc = BeginBattleIntro; if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { - gBattlerControllerFuncs[0] = SetControllerToPokedude; + gBattlerControllerFuncs[0] = SetControllerToPokeDude; gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; - gBattlerControllerFuncs[1] = SetControllerToPokedude; + gBattlerControllerFuncs[1] = SetControllerToPokeDude; gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; gBattlersCount = 2; } @@ -95,8 +95,8 @@ static void InitSinglePlayerBtlControllers(void) { if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) gBattlerControllerFuncs[0] = SetControllerToSafari; - else if (gBattleTypeFlags & (BATTLE_TYPE_OLDMAN_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) - gBattlerControllerFuncs[0] = SetControllerToOakOrOldman; + else if (gBattleTypeFlags & (BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) + gBattlerControllerFuncs[0] = SetControllerToOakOrOldMan; else gBattlerControllerFuncs[0] = SetControllerToPlayer; gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; @@ -110,13 +110,13 @@ static void InitSinglePlayerBtlControllers(void) gBattleMainFunc = BeginBattleIntro; if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { - gBattlerControllerFuncs[0] = SetControllerToPokedude; + gBattlerControllerFuncs[0] = SetControllerToPokeDude; gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; - gBattlerControllerFuncs[1] = SetControllerToPokedude; + gBattlerControllerFuncs[1] = SetControllerToPokeDude; gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; - gBattlerControllerFuncs[2] = SetControllerToPokedude; + gBattlerControllerFuncs[2] = SetControllerToPokeDude; gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT; - gBattlerControllerFuncs[3] = SetControllerToPokedude; + gBattlerControllerFuncs[3] = SetControllerToPokeDude; gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT; gBattlersCount = MAX_BATTLERS_COUNT; } @@ -774,7 +774,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID) sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; sBattleBuffersTransferData[2] = stringID; sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; - stringInfo = (struct BattleMsgData*)(&sBattleBuffersTransferData[4]); + stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; stringInfo->originallyUsedMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; diff --git a/src/battle_main.c b/src/battle_main.c new file mode 100644 index 000000000..1b1614a5a --- /dev/null +++ b/src/battle_main.c @@ -0,0 +1,4412 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_ai_script_commands.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_main.h" +#include "battle_message.h" +#include "battle_scripts.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "battle_string_ids.h" +#include "berry.h" +#include "bg.h" +#include "data.h" +#include "decompress.h" +#include "dma3.h" +#include "event_data.h" +#include "evolution_scene.h" +#include "graphics.h" +#include "gpu_regs.h" +#include "help_system.h" +#include "international_string_util.h" +#include "item.h" +#include "link.h" +#include "link_rfu.h" +#include "load_save.h" +#include "main.h" +#include "malloc.h" +#include "m4a.h" +#include "palette.h" +#include "party_menu.h" +#include "pokeball.h" +#include "pokedex.h" +#include "pokemon.h" +#include "quest_log.h" +#include "random.h" +#include "roamer.h" +#include "safari_zone.h" +#include "scanline_effect.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "trig.h" +#include "vs_seeker.h" +#include "util.h" +#include "window.h" +#include "cable_club.h" +#include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/pokemon.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/trainers.h" +#include "constants/trainer_classes.h" + +static void sub_80111EC(struct Sprite *sprite); +static void HandleAction_UseMove(void); +static void HandleAction_Switch(void); +static void HandleAction_UseItem(void); +static void HandleAction_Run(void); +static void HandleAction_WatchesCarefully(void); +static void HandleAction_SafariZoneBallThrow(void); +static void HandleAction_ThrowPokeblock(void); +static void HandleAction_GoNear(void); +static void HandleAction_SafariZoneRun(void); +static void HandleAction_OldManBallThrow(void); +static void HandleAction_TryFinish(void); +static void HandleAction_NothingIsFainted(void); +static void HandleAction_ActionFinished(void); +static void HandleEndTurn_ContinueBattle(void); +static void HandleEndTurn_BattleWon(void); +static void HandleEndTurn_BattleLost(void); +static void HandleEndTurn_RanFromBattle(void); +static void HandleEndTurn_MonFled(void); +static void HandleEndTurn_FinishBattle(void); +static void CB2_InitBattleInternal(void); +static void CB2_PreInitMultiBattle(void); +static void CB2_HandleStartMultiBattle(void); +static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum); +static void CB2_HandleStartBattle(void); +static void TryCorrectShedinjaLanguage(struct Pokemon *mon); +static void BattleMainCB1(void); +static void CB2_QuitPokeDudeBattle(void); +static void sub_80111FC(struct Sprite *sprite); +static void sub_8011B94(void); +static void sub_8011BB0(void); +static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite); +static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite); +static void sub_8011E3C(struct Sprite *sprite); +static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite); +static void sub_8012060(struct Sprite *sprite); +static void oac_poke_ally_(struct Sprite *sprite); +static void SpriteCallbackDummy3(struct Sprite *sprite); +static void SpriteCB_BounceEffect(struct Sprite *sprite); +static void sub_8012398(struct Sprite *sprite); +static void BattleStartClearSetData(void); +static void BattleIntroGetMonsData(void); +static void TurnValuesCleanUp(bool8 var0); +static void SpecialStatusesClear(void); +static void BattleIntroPrepareBackgroundSlide(void); +static void BattleIntroDrawTrainersOrMonsSprites(void); +static void BattleIntroDrawPartySummaryScreens(void); +static void BattleIntroPrintTrainerWantsToBattle(void); +static void BattleIntroPrintWildMonAttacked(void); +static void BattleIntroPrintOpponentSendsOut(void); +static void BattleIntroPrintPlayerSendsOut(void); +static void BattleIntroRecordMonsToDex(void); +static void BattleIntroOpponentSendsOutMonAnimation(void); +static void BattleIntroPlayerSendsOutMonAnimation(void); +static void TryDoEventsBeforeFirstTurn(void); +static void HandleTurnActionSelectionState(void); +static void RunTurnActionsFunctions(void); +static void SetActionsAndBattlersTurnOrder(void); +static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); +static void HandleEndTurn_FinishBattle(void); +static void FreeResetData_ReturnToOvOrDoEvolutions(void); +static void ReturnFromBattleToOverworld(void); +static void TryEvolvePokemon(void); +static void WaitForEvoSceneToFinish(void); + +EWRAM_DATA u16 gBattle_BG0_X = 0; +EWRAM_DATA u16 gBattle_BG0_Y = 0; +EWRAM_DATA u16 gBattle_BG1_X = 0; +EWRAM_DATA u16 gBattle_BG1_Y = 0; +EWRAM_DATA u16 gBattle_BG2_X = 0; +EWRAM_DATA u16 gBattle_BG2_Y = 0; +EWRAM_DATA u16 gBattle_BG3_X = 0; +EWRAM_DATA u16 gBattle_BG3_Y = 0; +EWRAM_DATA u16 gBattle_WIN0H = 0; +EWRAM_DATA u16 gBattle_WIN0V = 0; +EWRAM_DATA u16 gBattle_WIN1H = 0; +EWRAM_DATA u16 gBattle_WIN1V = 0; +EWRAM_DATA u8 gDisplayedStringBattle[300] = {0}; +EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0}; +EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; +EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0}; +static EWRAM_DATA u32 gUnknown_2022AE8[25] = {0}; +EWRAM_DATA u32 gBattleTypeFlags = 0; +EWRAM_DATA u8 gBattleTerrain = 0; +EWRAM_DATA u32 gUnknown_2022B54 = 0; +EWRAM_DATA struct UnknownPokemonStruct4 gUnknown_2022B58[3] = {0}; +EWRAM_DATA u8 *gUnknown_2022BB8 = NULL; +EWRAM_DATA u8 *gUnknown_2022BBC = NULL; +EWRAM_DATA u16 *gUnknown_2022BC0 = NULL; +EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0}; +EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0}; +EWRAM_DATA u8 gActiveBattler = 0; +EWRAM_DATA u32 gBattleControllerExecFlags = 0; +EWRAM_DATA u8 gBattlersCount = 0; +EWRAM_DATA u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBattlerPositions[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gCurrentTurnActionNumber = 0; +EWRAM_DATA u8 gCurrentActionFuncId = 0; +EWRAM_DATA struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gCurrMovePos = 0; +EWRAM_DATA u8 gChosenMovePos = 0; +EWRAM_DATA u16 gCurrentMove = 0; +EWRAM_DATA u16 gChosenMove = 0; +EWRAM_DATA u16 gCalledMove = 0; +EWRAM_DATA s32 gBattleMoveDamage = 0; +EWRAM_DATA s32 gHpDealt = 0; +EWRAM_DATA s32 gTakenDmg[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastUsedItem = 0; +EWRAM_DATA u8 gLastUsedAbility = 0; +EWRAM_DATA u8 gBattlerAttacker = 0; +EWRAM_DATA u8 gBattlerTarget = 0; +EWRAM_DATA u8 gBattlerFainted = 0; +EWRAM_DATA u8 gEffectBattler = 0; +EWRAM_DATA u8 gPotentialItemEffectBattler = 0; +EWRAM_DATA u8 gAbsentBattlerFlags = 0; +EWRAM_DATA u8 gCritMultiplier = 0; +EWRAM_DATA u8 gMultiHitCounter = 0; +EWRAM_DATA const u8 *gBattlescriptCurrInstr = NULL; +EWRAM_DATA u32 gUnusedBattleMainVar = 0; +EWRAM_DATA u8 gChosenActionByBattler[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT] = {NULL}; +EWRAM_DATA u16 gLastPrintedMoves[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastMoves[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastLandedMoves[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastHitByType[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLastResultingMoves[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gLockedMoves[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gMoveResultFlags = 0; +EWRAM_DATA u32 gHitMarker = 0; +static EWRAM_DATA u8 gUnknown_2023DD4[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gUnknown_2023DDC = 0; +EWRAM_DATA u16 gSideStatuses[2] = {0}; +EWRAM_DATA struct SideTimer gSideTimers[2] = {0}; +EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gPauseCounterBattle = 0; +EWRAM_DATA u16 gPaydayMoney = 0; +EWRAM_DATA u16 gRandomTurnNumber = 0; +EWRAM_DATA u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT] = {0}; +EWRAM_DATA u8 gBattleOutcome = 0; +EWRAM_DATA struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u16 gBattleWeather = 0; +EWRAM_DATA struct WishFutureKnock gWishFutureKnock = {0}; +EWRAM_DATA u16 gIntroSlideFlags = 0; +EWRAM_DATA u8 gSentPokesToOpponent[2] = {0}; +EWRAM_DATA u16 gDynamicBasePower = 0; +EWRAM_DATA u16 gExpShareExp = 0; +EWRAM_DATA struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA struct BattleScripting gBattleScripting = {0}; +EWRAM_DATA struct BattleStruct *gBattleStruct = NULL; +EWRAM_DATA u8 *gLinkBattleSendBuffer = NULL; +EWRAM_DATA u8 *gLinkBattleRecvBuffer = NULL; +EWRAM_DATA struct BattleResources *gBattleResources = NULL; +EWRAM_DATA u8 gActionSelectionCursor[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBattlerInMenuId = 0; +EWRAM_DATA bool8 gDoingBattleAnim = FALSE; +EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL; +EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL; +EWRAM_DATA u16 gBattleMovePower = 0; +EWRAM_DATA u16 gMoveToLearn = 0; +EWRAM_DATA u8 gBattleMonForms[MAX_BATTLERS_COUNT] = {0}; + +void (*gPreBattleCallback1)(void); +void (*gBattleMainFunc)(void); +struct BattleResults gBattleResults; +u8 gLeveledUpInBattle; +void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void); +u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; +u8 gMultiUsePlayerCursor; +u8 gNumberOfMovesToChoose; +u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; + +static const struct ScanlineEffectParams sIntroScanlineParams16Bit = +{ + ®_BG3HOFS, SCANLINE_EFFECT_DMACNT_16BIT, 1 +}; + +const struct SpriteTemplate gUnknown_824EFF0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80111EC, +}; + +static const u8 sText_ShedinjaJpnName[] = _("ヌケニン"); // Nukenin + +const struct OamData gOamData_824F010 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_824F018 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 2, + .affineParam = 0, +}; + +// not used +static const union AnimCmd gUnknown_824F020[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0), +}; + +// not used +static const union AnimCmd *const gUnknown_824F028[] = +{ + gUnknown_824F020, +}; + +// not used +static const union AffineAnimCmd gUnknown_824F02C[] = +{ + AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 0x3C), + AFFINEANIMCMD_JUMP(1), +}; + +// not used +static const union AffineAnimCmd *const gUnknown_824F044[] = +{ + gUnknown_824F02C, +}; + +static const s8 gUnknown_824F048[] = { -32, -16, -16, -32, -32, 0, 0, 0 }; + +// format: attacking type, defending type, damage multiplier +// the multiplier is a (decimal) fixed-point number: +// 20 is ×2.0 TYPE_MUL_SUPER_EFFECTIVE +// 10 is ×1.0 TYPE_MUL_NORMAL +// 05 is ×0.5 TYPE_MUL_NOT_EFFECTIVE +// 00 is ×0.0 TYPE_MUL_NO_EFFECT +const u8 gTypeEffectiveness[336] = +{ + TYPE_NORMAL, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_NORMAL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIRE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIRE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIRE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIRE, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIRE, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIRE, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIRE, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIRE, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_WATER, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_WATER, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE, + TYPE_WATER, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE, + TYPE_WATER, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_WATER, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_WATER, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ELECTRIC, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ELECTRIC, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ELECTRIC, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ELECTRIC, TYPE_GROUND, TYPE_MUL_NO_EFFECT, + TYPE_ELECTRIC, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ELECTRIC, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GRASS, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GRASS, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GRASS, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GRASS, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ICE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ICE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ICE, TYPE_ICE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ICE, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ICE, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ICE, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ICE, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ICE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIGHTING, TYPE_NORMAL, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIGHTING, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIGHTING, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIGHTING, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIGHTING, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIGHTING, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FIGHTING, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIGHTING, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FIGHTING, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_POISON, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_POISON, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_POISON, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE, + TYPE_POISON, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_POISON, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE, + TYPE_POISON, TYPE_STEEL, TYPE_MUL_NO_EFFECT, + TYPE_GROUND, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GROUND, TYPE_ELECTRIC, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GROUND, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GROUND, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GROUND, TYPE_FLYING, TYPE_MUL_NO_EFFECT, + TYPE_GROUND, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GROUND, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GROUND, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FLYING, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FLYING, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FLYING, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FLYING, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_FLYING, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FLYING, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_PSYCHIC, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_PSYCHIC, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_PSYCHIC, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE, + TYPE_PSYCHIC, TYPE_DARK, TYPE_MUL_NO_EFFECT, + TYPE_PSYCHIC, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_BUG, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_BUG, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE, + TYPE_BUG, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_BUG, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ROCK, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ROCK, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ROCK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ROCK, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE, + TYPE_ROCK, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ROCK, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_ROCK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GHOST, TYPE_NORMAL, TYPE_MUL_NO_EFFECT, + TYPE_GHOST, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_GHOST, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GHOST, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_GHOST, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_DRAGON, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_DRAGON, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_DARK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE, + TYPE_DARK, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_DARK, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_DARK, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE, + TYPE_DARK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_STEEL, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE, + TYPE_STEEL, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE, + TYPE_STEEL, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE, + TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE, + TYPE_STEEL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE, + TYPE_FORESIGHT, TYPE_FORESIGHT, TYPE_MUL_NO_EFFECT, + TYPE_NORMAL, TYPE_GHOST, TYPE_MUL_NO_EFFECT, + TYPE_FIGHTING, TYPE_GHOST, TYPE_MUL_NO_EFFECT, + TYPE_ENDTABLE, TYPE_ENDTABLE, TYPE_MUL_NO_EFFECT +}; + +const u8 gTypeNames[][TYPE_NAME_LENGTH + 1] = +{ + _("NORMAL"), + _("FIGHT"), + _("FLYING"), + _("POISON"), + _("GROUND"), + _("ROCK"), + _("BUG"), + _("GHOST"), + _("STEEL"), + _("???"), + _("FIRE"), + _("WATER"), + _("GRASS"), + _("ELECTR"), + _("PSYCHC"), + _("ICE"), + _("DRAGON"), + _("DARK"), +}; + +// This is a factor in how much money you get for beating a trainer. +const struct TrainerMoney gTrainerMoneyTable[] = +{ + { CLASS_LEADER_2, 25 }, + { CLASS_ELITE_FOUR_2, 25 }, + { CLASS_PKMN_PROF, 25 }, + { CLASS_RIVAL, 4 }, + { CLASS_RIVAL_2, 9 }, + { CLASS_CHAMPION_2, 25 }, + { CLASS_YOUNGSTER_2, 4 }, + { CLASS_BUG_CATCHER_2, 3 }, + { CLASS_HIKER_2, 9 }, + { CLASS_BIRD_KEEPER_2, 6 }, + { CLASS_PICNICKER_2, 5 }, + { CLASS_SUPER_NERD, 6 }, + { CLASS_FISHERMAN_2, 9 }, + { CLASS_TEAM_ROCKET, 8 }, + { CLASS_LASS_2, 4 }, + { CLASS_BEAUTY_2, 18 }, + { CLASS_BLACK_BELT_2, 6 }, + { CLASS_CUE_BALL, 6 }, + { CLASS_CHANNELER, 8 }, + { CLASS_ROCKER, 6 }, + { CLASS_GENTLEMAN_2, 18 }, + { CLASS_BURGLAR, 22 }, + { CLASS_SWIMMER_MALE_2, 1 }, + { CLASS_ENGINEER, 12 }, + { CLASS_JUGGLER, 10 }, + { CLASS_SAILOR_2, 8 }, + { CLASS_COOLTRAINER_2, 9 }, + { CLASS_POKEMANIAC_2, 12 }, + { CLASS_TAMER, 10 }, + { CLASS_CAMPER_2, 5 }, + { CLASS_PSYCHIC_2, 5 }, + { CLASS_BIKER, 5 }, + { CLASS_GAMER, 18 }, + { CLASS_SCIENTIST, 12 }, + { CLASS_CRUSH_GIRL, 6 }, + { CLASS_TUBER_3, 1 }, + { CLASS_PKMN_BREEDER_2, 7 }, + { CLASS_PKMN_RANGER_2, 9 }, + { CLASS_AROMA_LADY_2, 7 }, + { CLASS_RUIN_MANIAC_2, 12 }, + { CLASS_LADY_2, 50 }, + { CLASS_PAINTER, 4 }, + { CLASS_TWINS_2, 3 }, + { CLASS_YOUNG_COUPLE_2, 7 }, + { CLASS_SIS_AND_BRO_2, 1 }, + { CLASS_COOL_COUPLE, 6 }, + { CLASS_CRUSH_KIN, 6 }, + { CLASS_SWIMMER_FEMALE_2, 1 }, + { CLASS_PLAYER, 1 }, + { CLASS_LEADER, 25 }, + { CLASS_ELITE_FOUR, 25 }, + { CLASS_LASS, 4 }, + { CLASS_YOUNGSTER, 4 }, + { CLASS_PKMN_TRAINER_3, 15 }, + { CLASS_HIKER, 10 }, + { CLASS_BEAUTY, 20 }, + { CLASS_FISHERMAN, 10 }, + { CLASS_LADY, 50 }, + { CLASS_TRIATHLETE, 10 }, + { CLASS_TEAM_AQUA, 5 }, + { CLASS_TWINS, 3 }, + { CLASS_SWIMMER_FEMALE, 2 }, + { CLASS_BUG_CATCHER, 4 }, + { CLASS_SCHOOL_KID, 5 }, + { CLASS_RICH_BOY, 50 }, + { CLASS_SR_AND_JR, 4 }, + { CLASS_BLACK_BELT, 8 }, + { CLASS_TUBER, 1 }, + { CLASS_HEX_MANIAC, 6 }, + { CLASS_PKMN_BREEDER, 10 }, + { CLASS_TEAM_MAGMA, 5 }, + { CLASS_INTERVIEWER, 12 }, + { CLASS_TUBER_2, 1 }, + { CLASS_YOUNG_COUPLE, 8 }, + { CLASS_GUITARIST, 8 }, + { CLASS_GENTLEMAN, 20 }, + { CLASS_CHAMPION, 50 }, + { CLASS_MAGMA_LEADER, 20 }, + { CLASS_BATTLE_GIRL, 6 }, + { CLASS_SWIMMER_MALE, 2 }, + { CLASS_POKEFAN, 20 }, + { CLASS_EXPERT, 10 }, + { CLASS_DRAGON_TAMER, 12 }, + { CLASS_BIRD_KEEPER, 8 }, + { CLASS_NINJA_BOY, 3 }, + { CLASS_PARASOL_LADY, 10 }, + { CLASS_BUG_MANIAC, 15 }, + { CLASS_SAILOR, 8 }, + { CLASS_COLLECTOR, 15 }, + { CLASS_PKMN_RANGER, 12 }, + { CLASS_MAGMA_ADMIN, 10 }, + { CLASS_AROMA_LADY, 10 }, + { CLASS_RUIN_MANIAC, 15 }, + { CLASS_COOLTRAINER, 12 }, + { CLASS_POKEMANIAC, 15 }, + { CLASS_KINDLER, 8 }, + { CLASS_CAMPER, 4 }, + { CLASS_PICNICKER, 4 }, + { CLASS_PSYCHIC, 6 }, + { CLASS_SIS_AND_BRO, 3 }, + { CLASS_OLD_COUPLE, 10 }, + { CLASS_AQUA_ADMIN, 10 }, + { CLASS_AQUA_LEADER, 20 }, + { CLASS_BOSS, 25 }, + { 0xFF, 5 }, +}; + +#include "data/text/abilities.h" + +static void (*const sTurnActionsFuncsTable[])(void) = +{ + [B_ACTION_USE_MOVE] = HandleAction_UseMove, + [B_ACTION_USE_ITEM] = HandleAction_UseItem, + [B_ACTION_SWITCH] = HandleAction_Switch, + [B_ACTION_RUN] = HandleAction_Run, + [B_ACTION_SAFARI_WATCH_CAREFULLY] = HandleAction_WatchesCarefully, + [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow, + [B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowPokeblock, + [B_ACTION_SAFARI_GO_NEAR] = HandleAction_GoNear, + [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun, + [B_ACTION_OLDMAN_THROW] = HandleAction_OldManBallThrow, + [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript, + [B_ACTION_TRY_FINISH] = HandleAction_TryFinish, + [B_ACTION_FINISHED] = HandleAction_ActionFinished, + [B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted, +}; + +static void (*const sEndTurnFuncsTable[])(void) = +{ + [0] = HandleEndTurn_ContinueBattle, //B_OUTCOME_NONE? + [B_OUTCOME_WON] = HandleEndTurn_BattleWon, + [B_OUTCOME_LOST] = HandleEndTurn_BattleLost, + [B_OUTCOME_DREW] = HandleEndTurn_BattleLost, + [B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle, + [B_OUTCOME_PLAYER_TELEPORTED] = HandleEndTurn_FinishBattle, + [B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled, + [B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle, + [B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle, +}; + +const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$"); +const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$"); +const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$"); +const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$"); +const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$"); +const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$"); +const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$"); + +const u8 *const gStatusConditionStringsTable[7][2] = +{ + { gStatusConditionString_PoisonJpn, gText_Poison }, + { gStatusConditionString_SleepJpn, gText_Sleep }, + { gStatusConditionString_ParalysisJpn, gText_Paralysis }, + { gStatusConditionString_BurnJpn, gText_Burn }, + { gStatusConditionString_IceJpn, gText_Ice }, + { gStatusConditionString_ConfusionJpn, gText_Confusion }, + { gStatusConditionString_LoveJpn, gText_Love } +}; + +void CB2_InitBattle(void) +{ + MoveSaveBlocks_ResetHeap(); + AllocateBattleResources(); + AllocateBattleSpritesData(); + AllocateMonSpritesGfx(); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + HandleLinkBattleSetup(); + SetMainCallback2(CB2_PreInitMultiBattle); + gBattleCommunication[MULTIUSE_STATE] = 0; + } + else + { + CB2_InitBattleInternal(); + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + HelpSystem_SetSomeVariable2(0x19); + else + HelpSystem_SetSomeVariable2(0x18); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + HelpSystem_SetSomeVariable2(0x1A); + } + else + { + HelpSystem_SetSomeVariable2(0x17); + } + } + } +} + +static void CB2_InitBattleInternal(void) +{ + s32 i; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0xF0)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0x50, 0x51)); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + gBattle_WIN0H = WIN_RANGE(0, 0xF0); + gBattle_WIN0V = WIN_RANGE(0x50, 0x51); + ScanlineEffect_Clear(); + for (i = 0; i < 80; ++i) + { + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; + } + for (; i < 160; ++i) + { + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; + } + ScanlineEffect_SetParams(sIntroScanlineParams16Bit); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + gBattleTerrain = BattleSetup_GetTerrainId(); + sub_800F34C(); + LoadBattleTextboxAndBackground(); + ResetSpriteData(); + ResetTasks(); + DrawBattleEntryBackground(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(VBlankCB_Battle); + SetUpBattleVars(); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + SetMainCallback2(CB2_HandleStartMultiBattle); + else + SetMainCallback2(CB2_HandleStartBattle); + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + CreateNPCTrainerParty(&gEnemyParty[0], gTrainerBattleOpponent_A); + SetWildMonHeldItem(); + } + gMain.inBattle = TRUE; + for (i = 0; i < PARTY_SIZE; ++i) + AdjustFriendship(&gPlayerParty[i], 3); + gBattleCommunication[MULTIUSE_STATE] = 0; +} + +static void sub_800FFEC(void) +{ + u16 r6 = 0; + u16 species = SPECIES_NONE; + u16 hp = 0; + u32 status = 0; + s32 i; + + for (i = 0; i < PARTY_SIZE; ++i) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r6 |= 1 << i * 2; + if (species == SPECIES_NONE) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r6 |= 2 << i * 2; + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp == 0) + r6 |= 3 << i * 2; + } + gBattleStruct->field_186 = r6; + *(&gBattleStruct->field_187) = r6 >> 8; +} + +static void SetPlayerBerryDataInBattleStruct(void) +{ + s32 i; + struct BattleStruct *battleStruct = gBattleStruct; + struct BattleEnigmaBerry *battleBerry = &battleStruct->battleEnigmaBerry; + + if (IsEnigmaBerryValid() == TRUE) + { + for (i = 0; i < BERRY_NAME_LENGTH; ++i) + battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + battleBerry->name[i] = EOS; + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + battleBerry->itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + battleBerry->holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + battleBerry->holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + } + else + { + const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); + + for (i = 0; i < BERRY_NAME_LENGTH; ++i) + battleBerry->name[i] = berryData->name[i]; + battleBerry->name[i] = EOS; + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + battleBerry->itemEffect[i] = 0; + battleBerry->holdEffect = HOLD_EFFECT_NONE; + battleBerry->holdEffectParam = 0; + } +} + +static void SetAllPlayersBerryData(void) +{ + s32 i, j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + if (IsEnigmaBerryValid() == TRUE) + { + for (i = 0; i < BERRY_NAME_LENGTH; ++i) + { + gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + gEnigmaBerries[2].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; + } + gEnigmaBerries[0].name[i] = EOS; + gEnigmaBerries[2].name[i] = EOS; + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + { + gEnigmaBerries[0].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + gEnigmaBerries[2].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; + } + gEnigmaBerries[0].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + gEnigmaBerries[2].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + gEnigmaBerries[0].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + gEnigmaBerries[2].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; + } + else + { + const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); + + for (i = 0; i < BERRY_NAME_LENGTH; ++i) + { + gEnigmaBerries[0].name[i] = berryData->name[i]; + gEnigmaBerries[2].name[i] = berryData->name[i]; + } + gEnigmaBerries[0].name[i] = EOS; + gEnigmaBerries[2].name[i] = EOS; + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + { + gEnigmaBerries[0].itemEffect[i] = 0; + gEnigmaBerries[2].itemEffect[i] = 0; + } + gEnigmaBerries[0].holdEffect = HOLD_EFFECT_NONE; + gEnigmaBerries[2].holdEffect = HOLD_EFFECT_NONE; + gEnigmaBerries[0].holdEffectParam = 0; + gEnigmaBerries[2].holdEffectParam = 0; + } + } + else + { + s32 numPlayers; + struct BattleEnigmaBerry *src; + u8 battlerId; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + for (i = 0; i < 4; ++i) + { + src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); + battlerId = gLinkPlayers[i].id; + for (j = 0; j < BERRY_NAME_LENGTH; ++j) + gEnigmaBerries[battlerId].name[j] = src->name[j]; + gEnigmaBerries[battlerId].name[j] = EOS; + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; ++j) + gEnigmaBerries[battlerId].itemEffect[j] = src->itemEffect[j]; + gEnigmaBerries[battlerId].holdEffect = src->holdEffect; + gEnigmaBerries[battlerId].holdEffectParam = src->holdEffectParam; + } + } + else + { + for (i = 0; i < 2; ++i) + { + src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); + for (j = 0; j < BERRY_NAME_LENGTH; ++j) + { + gEnigmaBerries[i].name[j] = src->name[j]; + gEnigmaBerries[i + 2].name[j] = src->name[j]; + } + gEnigmaBerries[i].name[j] = EOS; + gEnigmaBerries[i + 2].name[j] = EOS; + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; ++j) + { + gEnigmaBerries[i].itemEffect[j] = src->itemEffect[j]; + gEnigmaBerries[i + 2].itemEffect[j] = src->itemEffect[j]; + } + gEnigmaBerries[i].holdEffect = src->holdEffect; + gEnigmaBerries[i + 2].holdEffect = src->holdEffect; + gEnigmaBerries[i].holdEffectParam = src->holdEffectParam; + gEnigmaBerries[i + 2].holdEffectParam = src->holdEffectParam; + } + } + } +} + +static void sub_8010414(u8 arg0, u8 arg1) +{ + u8 var = 0; + + if (gBlockRecvBuffer[0][0] == 256) + { + if (arg1 == 0) + gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + ++var; + } + if (var == 0) + { + s32 i; + + for (i = 0; i < arg0; ++i) + if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) + break; + if (i == arg0) + { + if (arg1 == 0) + gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + ++var; + } + if (var == 0) + { + for (i = 0; i < arg0; ++i) + { + if (gBlockRecvBuffer[i][0] == 0x201) + if (i != arg1 && i < arg1) + break; + if (gBlockRecvBuffer[i][0] > 0x201 && i != arg1) + break; + } + if (i == arg0) + gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; + else + gBattleTypeFlags |= BATTLE_TYPE_TRAINER; + } + } +} + +static void CB2_HandleStartBattle(void) +{ + u8 playerMultiplayerId; + u8 enemyMultiplayerId; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + playerMultiplayerId = GetMultiplayerId(); + gBattleStruct->multiplayerId = playerMultiplayerId; + enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE; + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_80357C8(); + gBattleCommunication[MULTIUSE_STATE] = 1; + } + if (gWirelessCommType) + LoadWirelessStatusIndicatorSpriteGfx(); + break; + case 1: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0) + { + if (IsLinkTaskFinished()) + { + *(&gBattleStruct->field_184) = 1; + *(&gBattleStruct->field_185) = 2; + sub_800FFEC(); + SetPlayerBerryDataInBattleStruct(); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, 32); + gBattleCommunication[MULTIUSE_STATE] = 2; + } + if (gWirelessCommType != 0) + CreateWirelessStatusIndicatorSprite(0, 0); + } + } + else + { + gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER; + gBattleCommunication[MULTIUSE_STATE] = 15; + SetAllPlayersBerryData(); + } + break; + case 2: + if ((GetBlockReceivedStatus() & 3) == 3) + { + u8 taskId; + + ResetBlockReceivedFlags(); + sub_8010414(2, playerMultiplayerId); + SetAllPlayersBerryData(); + taskId = CreateTask(sub_800F6FC, 0); + gTasks[taskId].data[1] = 270; + gTasks[taskId].data[2] = 90; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = gBattleStruct->field_186 | (gBattleStruct->field_187 << 8); + gTasks[taskId].data[4] = gBlockRecvBuffer[enemyMultiplayerId][1]; + SetDeoxysStats(); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 3: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 4: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 7: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 8: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 11: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 12: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); + TryCorrectShedinjaLanguage(&gEnemyParty[0]); + TryCorrectShedinjaLanguage(&gEnemyParty[1]); + TryCorrectShedinjaLanguage(&gEnemyParty[2]); + TryCorrectShedinjaLanguage(&gEnemyParty[3]); + TryCorrectShedinjaLanguage(&gEnemyParty[4]); + TryCorrectShedinjaLanguage(&gEnemyParty[5]); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 15: + sub_800D30C(); + ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + gBattleCommunication[SPRITES_INIT_STATE2] = 0; + break; + case 16: + if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) + { + gPreBattleCallback1 = gMain.callback1; + gMain.callback1 = BattleMainCB1; + SetMainCallback2(BattleMainCB2); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; + case 5: + case 9: + case 13: + ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[1] = 1; + case 6: + case 10: + case 14: + if (--gBattleCommunication[1] == 0) + ++gBattleCommunication[MULTIUSE_STATE]; + break; + } +} + +static void sub_80108C4(void) +{ + s32 i, j; + u8 *nick, *cur; + + for (i = 0; i < 3; ++i) + { + gUnknown_2022B58[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); + gUnknown_2022B58[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + nick = gUnknown_2022B58[i].nickname; + GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); + gUnknown_2022B58[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + gUnknown_2022B58[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + gUnknown_2022B58[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gUnknown_2022B58[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + gUnknown_2022B58[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + gUnknown_2022B58[i].gender = GetMonGender(&gPlayerParty[i]); + StripExtCtrlCodes(nick); + if (GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) + { + for (cur = nick, j = 0; cur[j] != EOS; ++j) + ; + while (j < 6) + cur[j++] = 0; + cur[j] = EOS; + } + } + memcpy(&gBattleStruct->field_184, gUnknown_2022B58, sizeof(gUnknown_2022B58)); +} + +static void CB2_PreInitMultiBattle(void) +{ + s32 i; + u8 playerMultiplierId; + u8 r4 = 0xF; + u16 *savedBattleTypeFlags; + void (**savedCallback)(void); + + playerMultiplierId = GetMultiplayerId(); + gBattleStruct->multiplayerId = playerMultiplierId; + savedCallback = &gBattleStruct->savedCallback; + savedBattleTypeFlags = &gBattleStruct->savedBattleTypeFlags; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) + { + sub_80108C4(); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, sizeof(gUnknown_2022B58)); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 1: + if ((GetBlockReceivedStatus() & r4) == r4) + { + ResetBlockReceivedFlags(); + for (i = 0; i < 4; ++i) + { + if (i == playerMultiplierId) + continue; + if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1)) + || (gLinkPlayers[i].id & 1 && gLinkPlayers[playerMultiplierId].id & 1)) + memcpy(gUnknown_2022B58, gBlockRecvBuffer[i], sizeof(gUnknown_2022B58)); + } + ++gBattleCommunication[MULTIUSE_STATE]; + *savedCallback = gMain.savedCallback; + *savedBattleTypeFlags = gBattleTypeFlags; + gMain.savedCallback = CB2_PreInitMultiBattle; + sub_8128198(); + } + break; + case 2: + if (!gPaletteFade.active) + { + ++gBattleCommunication[MULTIUSE_STATE]; + if (gWirelessCommType) + sub_800AB9C(); + else + sub_800AAC0(); + } + break; + case 3: + if (gWirelessCommType) + { + if (IsLinkRfuTaskFinished()) + { + gBattleTypeFlags = *savedBattleTypeFlags; + gMain.savedCallback = *savedCallback; + SetMainCallback2(CB2_InitBattleInternal); + } + } + else if (gReceivedRemoteLinkPlayers == 0) + { + gBattleTypeFlags = *savedBattleTypeFlags; + gMain.savedCallback = *savedCallback; + SetMainCallback2(CB2_InitBattleInternal); + } + break; + } +} + +static void CB2_HandleStartMultiBattle(void) +{ + u8 playerMultiplayerId; + s32 id; + u8 taskId; + + playerMultiplayerId = GetMultiplayerId(); + gBattleStruct->multiplayerId = playerMultiplayerId; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_80357C8(); + gBattleCommunication[MULTIUSE_STATE] = 1; + } + if (gWirelessCommType) + LoadWirelessStatusIndicatorSpriteGfx(); + break; + case 1: + if (gReceivedRemoteLinkPlayers != 0) + { + if (IsLinkTaskFinished()) + { + *(&gBattleStruct->field_184) = 1; + *(&gBattleStruct->field_185) = 2; + sub_800FFEC(); + SetPlayerBerryDataInBattleStruct(); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, 32); + ++gBattleCommunication[MULTIUSE_STATE]; + } + if (gWirelessCommType) + CreateWirelessStatusIndicatorSprite(0, 0); + } + break; + case 2: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + sub_8010414(4, playerMultiplayerId); + SetAllPlayersBerryData(); + SetDeoxysStats(); + memcpy(gDecompressionBuffer, gPlayerParty, sizeof(struct Pokemon) * 3); + taskId = CreateTask(sub_800F6FC, 0); + gTasks[taskId].data[1] = 270; + gTasks[taskId].data[2] = 90; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + for (id = 0; id < MAX_LINK_PLAYERS; ++id) + { + switch (gLinkPlayers[id].id) + { + case 0: + gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 1: + gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 2: + gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + case 3: + gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + } + } + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + ++gBattleCommunication[MULTIUSE_STATE]; + } + else + { + break; + } + // fall through + case 3: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, sizeof(struct Pokemon) * 2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 4: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; ++id) + { + if (id == playerMultiplayerId) + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + if ((!(gLinkPlayers[id].id & 1) && !(gLinkPlayers[playerMultiplayerId].id & 1)) + || ((gLinkPlayers[id].id & 1) && (gLinkPlayers[playerMultiplayerId].id & 1))) + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + } + } + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 7: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon)); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 8: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; ++id) + { + if (id == playerMultiplayerId) + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + if ((!(gLinkPlayers[id].id & 1) && !(gLinkPlayers[playerMultiplayerId].id & 1)) + || ((gLinkPlayers[id].id & 1) && (gLinkPlayers[playerMultiplayerId].id & 1))) + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + switch (gLinkPlayers[id].id) + { + case 0: + case 3: + memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + } + } + TryCorrectShedinjaLanguage(&gPlayerParty[0]); + TryCorrectShedinjaLanguage(&gPlayerParty[1]); + TryCorrectShedinjaLanguage(&gPlayerParty[2]); + TryCorrectShedinjaLanguage(&gPlayerParty[3]); + TryCorrectShedinjaLanguage(&gPlayerParty[4]); + TryCorrectShedinjaLanguage(&gPlayerParty[5]); + TryCorrectShedinjaLanguage(&gEnemyParty[0]); + TryCorrectShedinjaLanguage(&gEnemyParty[1]); + TryCorrectShedinjaLanguage(&gEnemyParty[2]); + TryCorrectShedinjaLanguage(&gEnemyParty[3]); + TryCorrectShedinjaLanguage(&gEnemyParty[4]); + TryCorrectShedinjaLanguage(&gEnemyParty[5]); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 11: + sub_800D30C(); + ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + gBattleCommunication[SPRITES_INIT_STATE2] = 0; + break; + case 12: + if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) + { + gPreBattleCallback1 = gMain.callback1; + gMain.callback1 = BattleMainCB1; + SetMainCallback2(BattleMainCB2); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + gBattleTypeFlags |= BATTLE_TYPE_20; + } + break; + case 5: + case 9: + ++gBattleCommunication[0]; + gBattleCommunication[SPRITES_INIT_STATE1] = 1; + // fall through + case 6: + case 10: + if (--gBattleCommunication[SPRITES_INIT_STATE1] == 0) + ++gBattleCommunication[0]; + break; + } +} + +void BattleMainCB2(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); + if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + gSpecialVar_Result = gBattleOutcome = B_OUTCOME_DREW; + ResetPaletteFadeControl(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + SetMainCallback2(CB2_QuitPokeDudeBattle); + } +} + +void FreeRestoreBattleData(void) +{ + gMain.callback1 = gPreBattleCallback1; + gScanlineEffect.state = 3; + gMain.inBattle = FALSE; + ZeroEnemyPartyMons(); + m4aSongNumStop(SE_HINSI); + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); +} + +static void CB2_QuitPokeDudeBattle(void) +{ + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + FreeRestoreBattleData(); + FreeAllWindowBuffers(); + SetMainCallback2(gMain.savedCallback); + } +} + +static void sub_80111EC(struct Sprite *sprite) +{ + sprite->data[0] = 0; + sprite->callback = sub_80111FC; +} + +static void sub_80111FC(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + gUnknown_2022BC0 = AllocZeroed(0x1000); + ++sprite->data[0]; + sprite->data[1] = 0; + sprite->data[2] = 0x281; + sprite->data[3] = 0; + sprite->data[4] = 1; + // fall through + case 1: + if (--sprite->data[4] == 0) + { + s32 i, r2, r0; + + sprite->data[4] = 2; + r2 = sprite->data[1] + sprite->data[3] * 32; + r0 = sprite->data[2] - sprite->data[3] * 32; + for (i = 0; i <= 29; i += 2) + { + *(&gUnknown_2022BC0[r2] + i) = 0x3D; + *(&gUnknown_2022BC0[r0] + i) = 0x3D; + } + if (++sprite->data[3] == 21) + { + ++sprite->data[0]; + sprite->data[1] = 32; + } + } + break; + case 2: + if (--sprite->data[1] == 20) + { + if (gUnknown_2022BC0 != NULL) + { + memset(gUnknown_2022BC0, 0, 0x1000); + FREE_AND_SET_NULL(gUnknown_2022BC0); + } + SetMainCallback2(CB2_InitBattle); + } + break; + } +} + +static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) +{ + u32 nameHash = 0; + u32 personalityValue; + u8 fixedIV; + s32 i, j; + + if (trainerNum == TRAINER_SECRET_BASE) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + && !(gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_TOWER))) + { + ZeroEnemyPartyMons(); + for (i = 0; i < gTrainers[trainerNum].partySize; ++i) + { + + if (gTrainers[trainerNum].doubleBattle == TRUE) + personalityValue = 0x80; + else if (gTrainers[trainerNum].encounterMusic_gender & 0x80) + personalityValue = 0x78; + else + personalityValue = 0x88; + for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; ++j) + nameHash += gTrainers[trainerNum].trainerName[j]; + switch (gTrainers[trainerNum].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); + break; + } + case F_TRAINER_PARTY_CUSTOM_MOVESET: + { + const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); + for (j = 0; j < MAX_MON_MOVES; ++j) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + case F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); + + SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + break; + } + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); + SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); + for (j = 0; j < MAX_MON_MOVES; ++j) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + } + } + gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; + } + return gTrainers[trainerNum].partySize; +} + +// not used +static void sub_80116CC(void) +{ + if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F) + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x512; +} + +void VBlankCB_Battle(void) +{ + // Change gRngSeed every vblank. + Random(); + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +void nullsub_9(struct Sprite *sprite) +{ +} + +static void sub_80117BC(struct Sprite *sprite) +{ + if (sprite->data[0] != 0) + sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8); + else + sprite->pos1.x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8); + sprite->data[2] += 0x180; + if (sprite->affineAnimEnded) + { + FreeSpriteTilesByTag(ANIM_SPRITES_START); + FreeSpritePaletteByTag(ANIM_SPRITES_START); + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +void sub_801182C(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80117BC; + PlaySE(SE_BT_START); +} + +static void sub_801184C(u8 taskId) +{ + struct Pokemon *party1 = NULL; + struct Pokemon *party2 = NULL; + u8 multiplayerId = gBattleStruct->multiplayerId; + u32 r7; + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gLinkPlayers[multiplayerId].id) + { + case 0: + case 2: + party1 = gPlayerParty; + party2 = gEnemyParty; + break; + case 1: + case 3: + party1 = gEnemyParty; + party2 = gPlayerParty; + break; + } + } + else + { + party1 = gPlayerParty; + party2 = gEnemyParty; + } + r7 = 0; + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species = GetMonData(&party1[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&party1[i], MON_DATA_HP); + u32 status = GetMonData(&party1[i], MON_DATA_STATUS); + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r7 |= 1 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r7 |= 2 << i * 2; + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp == 0) + r7 |= 3 << i * 2; + } + gTasks[taskId].data[3] = r7; + r7 = 0; + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species = GetMonData(&party2[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&party2[i], MON_DATA_HP); + u32 status = GetMonData(&party2[i], MON_DATA_STATUS); + + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r7 |= 1 << i * 2; + if (species == SPECIES_NONE) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r7 |= 2 << i * 2; + if (species == SPECIES_NONE) + continue; + if (species != SPECIES_EGG && hp == 0) + r7 |= 3 << i * 2; + } + gTasks[taskId].data[4] = r7; +} + +void sub_8011A1C(void) +{ + s32 i; + u8 taskId; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0xF0)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0x50, 0x51)); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + gBattle_WIN0H = WIN_RANGE(0, 0xF0); + gBattle_WIN0V = WIN_RANGE(0x50, 0x51); + ScanlineEffect_Clear(); + for (i = 0; i < 80; ++i) + { + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; + } + + for (; i < 160; ++i) + { + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; + } + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_800F34C(); + LoadCompressedPalette(gBattleTextboxPalette, 0, 64); + LoadBattleMenuWindowGfx(); + ResetSpriteData(); + ResetTasks(); + DrawBattleEntryBackground(); + SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(VBlankCB_Battle); + taskId = CreateTask(sub_800F6FC, 0); + gTasks[taskId].data[1] = 270; + gTasks[taskId].data[2] = 90; + gTasks[taskId].data[5] = 1; + sub_801184C(taskId); + SetMainCallback2(sub_8011B94); + gBattleCommunication[MULTIUSE_STATE] = 0; +} + +static void sub_8011B94(void) +{ + sub_8011BB0(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + RunTasks(); +} + +static void sub_8011BB0(void) +{ + s32 i; + + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + ShowBg(0); + ShowBg(1); + ShowBg(2); + gBattleCommunication[1] = 0xFF; + ++gBattleCommunication[MULTIUSE_STATE]; + break; + case 1: + if (--gBattleCommunication[1] == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 2: + if (!gPaletteFade.active) + { + SetMainCallback2(gMain.savedCallback); + sub_812C224(); + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); + } + break; + } +} + +u32 sub_8011C44(u8 arrayId, u8 caseId) +{ + u32 ret = 0; + + switch (caseId) + { + case 0: + ret = gBattleBgTemplates[arrayId].bg; + break; + case 1: + ret = gBattleBgTemplates[arrayId].charBaseIndex; + break; + case 2: + ret = gBattleBgTemplates[arrayId].mapBaseIndex; + break; + case 3: + ret = gBattleBgTemplates[arrayId].screenSize; + break; + case 4: + ret = gBattleBgTemplates[arrayId].paletteMode; + break; + case 5: + ret = gBattleBgTemplates[arrayId].priority; + break; + case 6: + ret = gBattleBgTemplates[arrayId].baseTile; + break; + } + return ret; +} + +static void TryCorrectShedinjaLanguage(struct Pokemon *mon) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 language = LANGUAGE_JAPANESE; + + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(mon, MON_DATA_LANGUAGE) != language) + { + GetMonData(mon, MON_DATA_NICKNAME, nickname); + if (StringCompareWithoutExtCtrlCodes(nickname, sText_ShedinjaJpnName) == 0) + SetMonData(mon, MON_DATA_LANGUAGE, &language); + } +} + +#define sBattler data[0] +#define sSpeciesId data[2] + +void SpriteCB_WildMon(struct Sprite *sprite) +{ + sprite->callback = SpriteCB_MoveWildMonToRight; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x20000, 0, 10, 10, RGB(8, 8, 8)); +} + +static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite) +{ + if ((gIntroSlideFlags & 1) == 0) + { + sprite->pos2.x += 2; + if (sprite->pos2.x == 0) + { + sprite->callback = SpriteCB_WildMonShowHealthbox; + PlayCry1(sprite->data[2], 25); + } + } +} + +static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sub_804BD94(sprite->sBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[sprite->sBattler]); + sprite->callback = SpriteCallbackDummy2; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x20000, 0, 10, 0, RGB(8, 8, 8)); + } +} + +void SpriteCallbackDummy2(struct Sprite *sprite) +{ +} + +// not used +static void sub_8011E28(struct Sprite *sprite) +{ + sprite->data[3] = 6; + sprite->data[4] = 1; + sprite->callback = sub_8011E3C; +} + +// not used +static void sub_8011E3C(struct Sprite *sprite) +{ + --sprite->data[4]; + if (sprite->data[4] == 0) + { + sprite->data[4] = 8; + sprite->invisible ^= 1; + --sprite->data[3]; + if (sprite->data[3] == 0) + { + sprite->invisible = FALSE; + sprite->callback = SpriteCallbackDummy2; + gUnknown_2022AE8[0] = 0; + } + } +} + +void SpriteCB_FaintOpponentMon(struct Sprite *sprite) +{ + u8 battler = sprite->sBattler; + u16 species; + u8 yOffset; + + if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != 0) + species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; + else + species = sprite->sSpeciesId; + GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); // Unused return value. + if (species == SPECIES_UNOWN) + { + u32 personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); + u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); + u16 unownSpecies; + + if (unownForm == 0) + unownSpecies = SPECIES_UNOWN; // Use the A Unown form. + else + unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters. + yOffset = gMonFrontPicCoords[unownSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + yOffset = gCastformFrontSpriteCoords[gBattleMonForms[battler]].y_offset; + } + else if (species > NUM_SPECIES) + { + yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset; + } + else + { + yOffset = gMonFrontPicCoords[species].y_offset; + } + sprite->data[3] = 8 - yOffset / 8; + sprite->data[4] = 1; + sprite->callback = SpriteCB_AnimFaintOpponent; +} + +static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite) +{ + s32 i; + + if (--sprite->data[4] == 0) + { + sprite->data[4] = 2; + sprite->pos2.y += 8; // Move the sprite down. + if (--sprite->data[3] < 0) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + else // Erase bottom part of the sprite to create a smooth illusion of mon falling down. + { + u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8); + + for (i = 0; i < 0x100; ++i) + *(dst++) = 0; + StartSpriteAnim(sprite, gBattleMonForms[sprite->sBattler]); + } + } +} + +void sub_8012044(struct Sprite *sprite) +{ + sprite->data[3] = 8; + sprite->data[4] = sprite->invisible; + sprite->callback = sub_8012060; +} + +static void sub_8012060(struct Sprite *sprite) +{ + --sprite->data[3]; + if (sprite->data[3] == 0) + { + sprite->invisible ^= 1; + sprite->data[3] = 8; + } +} + +void sub_8012098(struct Sprite *sprite) +{ + sprite->invisible = sprite->data[4]; + sprite->data[4] = FALSE; + sprite->callback = SpriteCallbackDummy2; +} + +void sub_80120C4(struct Sprite *sprite) +{ + sprite->callback = oac_poke_ally_; +} + +static void oac_poke_ally_(struct Sprite *sprite) +{ + if (!(gIntroSlideFlags & 1)) + { + sprite->pos2.x -= 2; + if (sprite->pos2.x == 0) + { + sprite->callback = SpriteCallbackDummy3; + sprite->data[1] = 0; + } + } +} + +void sub_8012100(struct Sprite *sprite) +{ + sprite->callback = SpriteCallbackDummy3; +} + +static void SpriteCallbackDummy3(struct Sprite *sprite) +{ +} + +void sub_8012110(struct Sprite *sprite) +{ + if (!(gIntroSlideFlags & 1)) + { + sprite->pos2.x += sprite->data[1]; + sprite->pos2.y += sprite->data[2]; + } +} + +#define sSinIndex data[0] +#define sDelta data[1] +#define sAmplitude data[2] +#define sBouncerSpriteId data[3] +#define sWhich data[4] + +void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude) +{ + u8 invisibleSpriteId; + u8 bouncerSpriteId; + + switch (which) + { + case BOUNCE_HEALTHBOX: + default: + if (gBattleSpritesDataPtr->healthBoxesData[battler].healthboxIsBouncing) + return; + break; + case BOUNCE_MON: + if (gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing) + return; + break; + } + invisibleSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_BounceEffect); + if (which == BOUNCE_HEALTHBOX) + { + bouncerSpriteId = gHealthboxSpriteIds[battler]; + gBattleSpritesDataPtr->healthBoxesData[battler].healthboxBounceSpriteId = invisibleSpriteId; + gBattleSpritesDataPtr->healthBoxesData[battler].healthboxIsBouncing = 1; + gSprites[invisibleSpriteId].sSinIndex = 128; // 0 + } + else + { + bouncerSpriteId = gBattlerSpriteIds[battler]; + gBattleSpritesDataPtr->healthBoxesData[battler].battlerBounceSpriteId = invisibleSpriteId; + gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing = 1; + gSprites[invisibleSpriteId].sSinIndex = 192; // -1 + } + gSprites[invisibleSpriteId].sDelta = delta; + gSprites[invisibleSpriteId].sAmplitude = amplitude; + gSprites[invisibleSpriteId].sBouncerSpriteId = bouncerSpriteId; + gSprites[invisibleSpriteId].sWhich = which; + gSprites[bouncerSpriteId].pos2.x = 0; + gSprites[bouncerSpriteId].pos2.y = 0; +} + +void EndBounceEffect(u8 battler, u8 which) +{ + u8 bouncerSpriteId; + + if (which == BOUNCE_HEALTHBOX) + { + if (!gBattleSpritesDataPtr->healthBoxesData[battler].healthboxIsBouncing) + return; + + bouncerSpriteId = gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].healthboxBounceSpriteId].sBouncerSpriteId; + DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].healthboxBounceSpriteId]); + gBattleSpritesDataPtr->healthBoxesData[battler].healthboxIsBouncing = 0; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing) + return; + + bouncerSpriteId = gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].battlerBounceSpriteId].sBouncerSpriteId; + DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].battlerBounceSpriteId]); + gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing = 0; + } + gSprites[bouncerSpriteId].pos2.x = 0; + gSprites[bouncerSpriteId].pos2.y = 0; +} + +static void SpriteCB_BounceEffect(struct Sprite *sprite) +{ + u8 bouncerSpriteId = sprite->sBouncerSpriteId; + s32 index; + + if (sprite->sWhich == BOUNCE_HEALTHBOX) + index = sprite->sSinIndex; + else + index = sprite->sSinIndex; + gSprites[bouncerSpriteId].pos2.y = Sin(index, sprite->sAmplitude) + sprite->sAmplitude; + sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF; +} + +void sub_8012354(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 1); + sprite->callback = sub_8012398; +} + +void sub_801236C(struct Sprite *sprite) +{ + if (sprite->animDelayCounter == 0) + sprite->centerToCornerVecX = gUnknown_824F048[sprite->animCmdIndex]; +} + +static void sub_8012398(struct Sprite *sprite) +{ + sub_801236C(sprite); + if (sprite->animEnded) + sprite->callback = SpriteCallbackDummy3; +} + +void nullsub_12(void) +{ +} + +void BeginBattleIntro(void) +{ + BattleStartClearSetData(); + gBattleCommunication[1] = 0; + gBattleMainFunc = BattleIntroGetMonsData; +} + +static void BattleMainCB1(void) +{ + gBattleMainFunc(); + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + gBattlerControllerFuncs[gActiveBattler](); +} + +static void BattleStartClearSetData(void) +{ + s32 i; + u32 j; + u8 *dataPtr; + + TurnValuesCleanUp(FALSE); + SpecialStatusesClear(); + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + gStatuses3[i] = 0; + dataPtr = (u8 *)&gDisableStructs[i]; + for (j = 0; j < sizeof(struct DisableStruct); ++j) + dataPtr[j] = 0; + gDisableStructs[i].isFirstTurn = 2; + gUnknown_2023DD4[i] = 0; + gLastMoves[i] = MOVE_NONE; + gLastLandedMoves[i] = MOVE_NONE; + gLastHitByType[i] = 0; + gLastResultingMoves[i] = MOVE_NONE; + gLastHitBy[i] = 0xFF; + gLockedMoves[i] = MOVE_NONE; + gLastPrintedMoves[i] = MOVE_NONE; + gBattleResources->flags->flags[i] = 0; + } + for (i = 0; i < 2; ++i) + { + gSideStatuses[i] = 0; + dataPtr = (u8 *)&gSideTimers[i]; + for (j = 0; j < sizeof(struct SideTimer); ++j) + dataPtr[j] = 0; + } + gBattlerAttacker = 0; + gBattlerTarget = 0; + gBattleWeather = 0; + dataPtr = (u8 *)&gWishFutureKnock; + for (i = 0; i < sizeof(struct WishFutureKnock); ++i) + dataPtr[i] = 0; + gHitMarker = 0; + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_POKEDUDE)) && gSaveBlock2Ptr->optionsBattleSceneOff) + gHitMarker |= HITMARKER_NO_ANIMATIONS; + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gMultiHitCounter = 0; + gBattleOutcome = 0; + gBattleControllerExecFlags = 0; + gPaydayMoney = 0; + gBattleResources->battleScriptsStack->size = 0; + gBattleResources->battleCallbackStack->size = 0; + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) + gBattleCommunication[i] = 0; + gPauseCounterBattle = 0; + gBattleMoveDamage = 0; + gIntroSlideFlags = 0; + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gLeveledUpInBattle = 0; + gAbsentBattlerFlags = 0; + gBattleStruct->runTries = 0; + gBattleStruct->safariGoNearCounter = 0; + gBattleStruct->safariPkblThrowCounter = 0; + *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; + *(&gBattleStruct->safariEscapeFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].safariZoneFleeRate * 100 / 1275; + if (gBattleStruct->safariEscapeFactor <= 1) + gBattleStruct->safariEscapeFactor = 2; + gBattleStruct->wildVictorySong = 0; + gBattleStruct->moneyMultiplier = 1; + for (i = 0; i < 8; ++i) + { + *((u8 *)gBattleStruct->lastTakenMove + i) = MOVE_NONE; + *((u8 *)gBattleStruct->usedHeldItems + i) = ITEM_NONE; + *((u8 *)gBattleStruct->choicedMove + i) = MOVE_NONE; + *((u8 *)gBattleStruct->changedItems + i) = ITEM_NONE; + *(i + 0 * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(i + 1 * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(i + 2 * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(i + 3 * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + } + *(gBattleStruct->AI_monToSwitchIntoId + 0) = PARTY_SIZE; + *(gBattleStruct->AI_monToSwitchIntoId + 1) = PARTY_SIZE; + *(&gBattleStruct->givenExpMons) = 0; + for (i = 0; i < 11; ++i) + gBattleResults.catchAttempts[i] = 0; + gBattleResults.battleTurnCounter = 0; + gBattleResults.playerFaintCounter = 0; + gBattleResults.opponentFaintCounter = 0; + gBattleResults.playerSwitchesCounter = 0; + gBattleResults.numHealingItemsUsed = 0; + gBattleResults.numRevivesUsed = 0; + gBattleResults.playerMonWasDamaged = FALSE; + gBattleResults.usedMasterBall = FALSE; + gBattleResults.lastOpponentSpecies = SPECIES_NONE; + gBattleResults.lastUsedMovePlayer = MOVE_NONE; + gBattleResults.lastUsedMoveOpponent = MOVE_NONE; + gBattleResults.playerMon1Species = SPECIES_NONE; + gBattleResults.playerMon2Species = SPECIES_NONE; + gBattleResults.caughtMonSpecies = SPECIES_NONE; + for (i = 0; i < POKEMON_NAME_LENGTH; ++i) + { + gBattleResults.playerMon1Name[i] = 0; + gBattleResults.playerMon2Name[i] = 0; + gBattleResults.caughtMonNick[i] = 0; + } +} + +void SwitchInClearSetData(void) +{ + struct DisableStruct disableStructCopy = gDisableStructs[gActiveBattler]; + s32 i; + u8 *ptr; + + if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS) + { + for (i = 0; i < NUM_BATTLE_STATS; ++i) + gBattleMons[gActiveBattler].statStages[i] = 6; + for (i = 0; i < gBattlersCount; ++i) + { + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler) + gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].battlerWithSureHit == gActiveBattler) + { + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; + gDisableStructs[i].battlerWithSureHit = 0; + } + } + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); + gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i) + && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 + && (gDisableStructs[i].battlerWithSureHit == gActiveBattler)) + { + gStatuses3[i] &= ~(STATUS3_ALWAYS_HITS); + gStatuses3[i] |= 0x10; + } + } + } + else + { + gBattleMons[gActiveBattler].status2 = 0; + gStatuses3[gActiveBattler] = 0; + } + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler)) + gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler)); + if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler) + gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + } + gActionSelectionCursor[gActiveBattler] = 0; + gMoveSelectionCursor[gActiveBattler] = 0; + ptr = (u8 *)&gDisableStructs[gActiveBattler]; + for (i = 0; i < sizeof(struct DisableStruct); ++i) + ptr[i] = 0; + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + gDisableStructs[gActiveBattler].substituteHP = disableStructCopy.substituteHP; + gDisableStructs[gActiveBattler].battlerWithSureHit = disableStructCopy.battlerWithSureHit; + gDisableStructs[gActiveBattler].perishSongTimer = disableStructCopy.perishSongTimer; + gDisableStructs[gActiveBattler].perishSongTimerStartValue = disableStructCopy.perishSongTimerStartValue; + gDisableStructs[gActiveBattler].battlerPreventingEscape = disableStructCopy.battlerPreventingEscape; + } + gMoveResultFlags = 0; + gDisableStructs[gActiveBattler].isFirstTurn = 2; + gLastMoves[gActiveBattler] = MOVE_NONE; + gLastLandedMoves[gActiveBattler] = MOVE_NONE; + gLastHitByType[gActiveBattler] = 0; + gLastResultingMoves[gActiveBattler] = MOVE_NONE; + gLastPrintedMoves[gActiveBattler] = MOVE_NONE; + gLastHitBy[gActiveBattler] = 0xFF; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 0) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 1) = MOVE_NONE; + *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(1 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(1 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + for (i = 0; i < gBattlersCount; ++i) + { + if (i != gActiveBattler) + { + *(gBattleStruct->lastTakenMove + i * 2 + 0) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + i * 2 + 1) = MOVE_NONE; + } + *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + } + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = MOVE_NONE; + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = MOVE_NONE; + gBattleResources->flags->flags[gActiveBattler] = 0; + gCurrentMove = MOVE_NONE; +} + +void FaintClearSetData(void) +{ + s32 i; + u8 *ptr; + + for (i = 0; i < NUM_BATTLE_STATS; ++i) + gBattleMons[gActiveBattler].statStages[i] = 6; + gBattleMons[gActiveBattler].status2 = 0; + gStatuses3[gActiveBattler] = 0; + for (i = 0; i < gBattlersCount; ++i) + { + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler) + gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; + if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler)) + gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler)); + if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler) + gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + } + gActionSelectionCursor[gActiveBattler] = 0; + gMoveSelectionCursor[gActiveBattler] = 0; + ptr = (u8 *)&gDisableStructs[gActiveBattler]; + for (i = 0; i < sizeof(struct DisableStruct); ++i) + ptr[i] = 0; + gProtectStructs[gActiveBattler].protected = FALSE; + gProtectStructs[gActiveBattler].endured = FALSE; + gProtectStructs[gActiveBattler].noValidMoves = FALSE; + gProtectStructs[gActiveBattler].helpingHand = FALSE; + gProtectStructs[gActiveBattler].bounceMove = FALSE; + gProtectStructs[gActiveBattler].stealMove = FALSE; + gProtectStructs[gActiveBattler].flag0Unknown = FALSE; + gProtectStructs[gActiveBattler].prlzImmobility = FALSE; + gProtectStructs[gActiveBattler].confusionSelfDmg = FALSE; + gProtectStructs[gActiveBattler].targetNotAffected = FALSE; + gProtectStructs[gActiveBattler].chargingTurn = FALSE; + gProtectStructs[gActiveBattler].fleeFlag = 0; + gProtectStructs[gActiveBattler].usedImprisonedMove = FALSE; + gProtectStructs[gActiveBattler].loveImmobility = FALSE; + gProtectStructs[gActiveBattler].usedDisabledMove = FALSE; + gProtectStructs[gActiveBattler].usedTauntedMove = FALSE; + gProtectStructs[gActiveBattler].flag2Unknown = FALSE; + gProtectStructs[gActiveBattler].flinchImmobility = FALSE; + gProtectStructs[gActiveBattler].notFirstStrike = FALSE; + gDisableStructs[gActiveBattler].isFirstTurn = 2; + gLastMoves[gActiveBattler] = MOVE_NONE; + gLastLandedMoves[gActiveBattler] = MOVE_NONE; + gLastHitByType[gActiveBattler] = MOVE_NONE; + gLastResultingMoves[gActiveBattler] = MOVE_NONE; + gLastPrintedMoves[gActiveBattler] = MOVE_NONE; + gLastHitBy[gActiveBattler] = 0xFF; + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = MOVE_NONE; + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 0) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 1) = MOVE_NONE; + *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(1 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(1 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + for (i = 0; i < gBattlersCount; ++i) + { + if (i != gActiveBattler) + { + *(gBattleStruct->lastTakenMove + i * 2 + 0) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + i * 2 + 1) = MOVE_NONE; + } + *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; + *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; + } + gBattleResources->flags->flags[gActiveBattler] = 0; + gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; +} + +static void BattleIntroGetMonsData(void) +{ + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + gActiveBattler = gBattleCommunication[1]; + BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattleCommunication[MULTIUSE_STATE]; + break; + case 1: + if (gBattleControllerExecFlags == 0) + { + ++gBattleCommunication[1]; + if (gBattleCommunication[1] == gBattlersCount) + gBattleMainFunc = BattleIntroPrepareBackgroundSlide; + else + gBattleCommunication[MULTIUSE_STATE] = 0; + } + break; + } +} + +static void BattleIntroPrepareBackgroundSlide(void) +{ + if (gBattleControllerExecFlags == 0) + { + gActiveBattler = GetBattlerAtPosition(0); + BtlController_EmitIntroSlide(0, gBattleTerrain); + MarkBattlerForControllerExec(gActiveBattler); + gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites; + gBattleCommunication[MULTIUSE_STATE] = 0; + gBattleCommunication[SPRITES_INIT_STATE1] = 0; + } +} + +static void BattleIntroDrawTrainersOrMonsSprites(void) +{ + u8 *ptr; + s32 i; + + if (!gBattleControllerExecFlags) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) + && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + ptr = (u8 *)&gBattleMons[gActiveBattler]; + for (i = 0; i < sizeof(struct BattlePokemon); ++i) + ptr[i] = 0; + } + else + { + u16 *hpOnSwitchout; + + ptr = (u8 *)&gBattleMons[gActiveBattler]; + for (i = 0; i < sizeof(struct BattlePokemon); ++i) + ptr[i] = gBattleBufferB[gActiveBattler][4 + i]; + gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); + hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)]; + *hpOnSwitchout = gBattleMons[gActiveBattler].hp; + for (i = 0; i < NUM_BATTLE_STATS; ++i) + gBattleMons[gActiveBattler].statStages[i] = 6; + gBattleMons[gActiveBattler].status2 = 0; + } + if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) + { + BtlController_EmitDrawTrainerPic(0); + MarkBattlerForControllerExec(gActiveBattler); + } + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) + { + BtlController_EmitDrawTrainerPic(0); + MarkBattlerForControllerExec(gActiveBattler); + } + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_LINK + | BATTLE_TYPE_GHOST + | BATTLE_TYPE_OLD_MAN_TUTORIAL + | BATTLE_TYPE_LEGENDARY))) + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + } + else + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) + { + if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) != BATTLE_TYPE_GHOST) + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + } + else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_LINK + | BATTLE_TYPE_GHOST + | BATTLE_TYPE_OLD_MAN_TUTORIAL + | BATTLE_TYPE_LEGENDARY))) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + } + BtlController_EmitLoadMonSprite(0); + MarkBattlerForControllerExec(gActiveBattler); + } + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI + && (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT || GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)) + { + BtlController_EmitDrawTrainerPic(0); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattleMainFunc = BattleIntroDrawPartySummaryScreens; + } +} + +static void BattleIntroDrawPartySummaryScreens(void) +{ + s32 i; + struct HpAndStatus hpStatus[PARTY_SIZE]; + + if (!gBattleControllerExecFlags) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); + } + } + gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80); + MarkBattlerForControllerExec(gActiveBattler); + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80); + MarkBattlerForControllerExec(gActiveBattler); + + gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle; + } + else + { + // The struct gets set here, but nothing is ever done with it since + // wild battles don't show the party summary. + // Still, there's no point in having dead code. + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = 0xFFFF; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + gBattleMainFunc = BattleIntroPrintWildMonAttacked; + } + } +} + +static void BattleIntroPrintTrainerWantsToBattle(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + PrepareStringBattle(STRINGID_INTROMSG, gActiveBattler); + gBattleMainFunc = BattleIntroPrintOpponentSendsOut; + } +} + +static void BattleIntroPrintWildMonAttacked(void) +{ + if (!gBattleControllerExecFlags) + { + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; + PrepareStringBattle(STRINGID_INTROMSG, 0); + if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) + { + gBattleScripting.battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + BattleScriptExecute(gUnknown_81D91A1); + } + } +} + +static void BattleIntroPrintOpponentSendsOut(void) +{ + if (!gBattleControllerExecFlags) + { + PrepareStringBattle(STRINGID_INTROSENDOUT, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + gBattleMainFunc = BattleIntroOpponentSendsOutMonAnimation; + } +} + +static void BattleIntroOpponentSendsOutMonAnimation(void) +{ + if (!gBattleControllerExecFlags) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) + { + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT) + { + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattleMainFunc = BattleIntroRecordMonsToDex; + } +} + +static void BattleIntroRecordMonsToDex(void) +{ + if (!gBattleControllerExecFlags) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_LINK + | BATTLE_TYPE_GHOST + | BATTLE_TYPE_OLD_MAN_TUTORIAL + | BATTLE_TYPE_LEGENDARY))) + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; + } +} + +// not used +static void sub_80136C4(void) +{ + if (!gBattleControllerExecFlags) + gBattleMainFunc = BattleIntroPrintPlayerSendsOut; +} + +void BattleIntroPrintPlayerSendsOut(void) +{ + if (!gBattleControllerExecFlags) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + PrepareStringBattle(STRINGID_INTROSENDOUT, GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)); + gBattleMainFunc = BattleIntroPlayerSendsOutMonAnimation; + } +} + +static void BattleIntroPlayerSendsOutMonAnimation(void) +{ + u32 position; + + if (!gBattleControllerExecFlags) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) + { + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT) + { + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + gBattleMainFunc = TryDoEventsBeforeFirstTurn; + } +} + +// not used +static void sub_80137D0(void) +{ + if (!gBattleControllerExecFlags) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], FALSE); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + gBattleMainFunc = TryDoEventsBeforeFirstTurn; + } +} + +static void TryDoEventsBeforeFirstTurn(void) +{ + s32 i, j; + u8 effect = 0; + + if (!gBattleControllerExecFlags) + { + + if (gBattleStruct->switchInAbilitiesCounter == 0) + { + for (i = 0; i < gBattlersCount; ++i) + gBattlerByTurnOrder[i] = i; + for (i = 0; i < gBattlersCount - 1; ++i) + for (j = i + 1; j < gBattlersCount; ++j) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], TRUE) != 0) + SwapTurnOrder(i, j); + } + if (!gBattleStruct->overworldWeatherDone + && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_WEATHER, 0) != 0) + { + gBattleStruct->overworldWeatherDone = TRUE; + return; + } + // Check all switch in abilities happening from the fastest mon to slowest. + while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount) + { + if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) + ++effect; + ++gBattleStruct->switchInAbilitiesCounter; + if (effect) + return; + } + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0) + return; + if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0) + return; + // Check all switch in items having effect from the fastest mon to slowest. + while (gBattleStruct->switchInItemsCounter < gBattlersCount) + { + if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter], FALSE)) + ++effect; + ++gBattleStruct->switchInItemsCounter; + if (effect) + return; + } + for (i = 0; i < gBattlersCount; ++i) // pointless, ruby leftover + ; + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; + gChosenActionByBattler[i] = B_ACTION_NONE; + gChosenMoveByBattler[i] = MOVE_NONE; + } + TurnValuesCleanUp(FALSE); + SpecialStatusesClear(); + *(&gBattleStruct->field_91) = gAbsentBattlerFlags; + gBattleMainFunc = HandleTurnActionSelectionState; + ResetSentPokesToOpponentValue(); + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) + gBattleCommunication[i] = 0; + for (i = 0; i < gBattlersCount; ++i) + gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); + *(&gBattleStruct->turnEffectsTracker) = 0; + *(&gBattleStruct->turnEffectsBattlerId) = 0; + *(&gBattleStruct->wishPerishSongState) = 0; + *(&gBattleStruct->wishPerishSongBattlerId) = 0; + gBattleScripting.atk49_state = 0; + gBattleStruct->faintedActionsState = 0; + gBattleStruct->turnCountersTracker = 0; + gMoveResultFlags = 0; + gRandomTurnNumber = Random(); + } +} + +static void HandleEndTurn_ContinueBattle(void) +{ + s32 i; + + if (!gBattleControllerExecFlags) + { + gBattleMainFunc = BattleTurnPassed; + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) + gBattleCommunication[i] = 0; + for (i = 0; i < gBattlersCount; ++i) + { + gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); + if ((gBattleMons[i].status1 & STATUS1_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS)) + CancelMultiTurnMoves(i); + } + gBattleStruct->turnEffectsTracker = 0; + gBattleStruct->turnEffectsBattlerId = 0; + gBattleStruct->wishPerishSongState = 0; + gBattleStruct->wishPerishSongBattlerId = 0; + gBattleStruct->turnCountersTracker = 0; + gMoveResultFlags = 0; + } +} + +void BattleTurnPassed(void) +{ + s32 i; + + TurnValuesCleanUp(TRUE); + if (gBattleOutcome == 0) + { + if (DoFieldEndTurnEffects()) + return; + if (DoBattlerEndTurnEffects()) + return; + } + if (HandleFaintedMonActions()) + return; + gBattleStruct->faintedActionsState = 0; + if (HandleWishPerishSongOnTurnEnd()) + return; + TurnValuesCleanUp(FALSE); + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); + gHitMarker &= ~(HITMARKER_x400000); + gHitMarker &= ~(HITMARKER_x100000); + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gBattleScripting.atk49_state = 0; + gBattleMoveDamage = 0; + gMoveResultFlags = 0; + for (i = 0; i < 5; ++i) + gBattleCommunication[i] = 0; + if (gBattleOutcome != 0) + { + gCurrentActionFuncId = B_ACTION_FINISHED; + gBattleMainFunc = RunTurnActionsFunctions; + return; + } + if (gBattleResults.battleTurnCounter < 0xFF) + ++gBattleResults.battleTurnCounter; + for (i = 0; i < gBattlersCount; ++i) + { + gChosenActionByBattler[i] = B_ACTION_NONE; + gChosenMoveByBattler[i] = MOVE_NONE; + } + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; + *(&gBattleStruct->field_91) = gAbsentBattlerFlags; + gBattleMainFunc = HandleTurnActionSelectionState; + gRandomTurnNumber = Random(); +} + +u8 IsRunningFromBattleImpossible(void) +{ + u8 holdEffect; + u8 side; + s32 i; + + if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBattler].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item); + gPotentialItemEffectBattler = gActiveBattler; + if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN + || (gBattleTypeFlags & BATTLE_TYPE_LINK) + || gBattleMons[gActiveBattler].ability == ABILITY_RUN_AWAY) + return BATTLE_RUN_SUCCESS; + side = GetBattlerSide(gActiveBattler); + for (i = 0; i < gBattlersCount; ++i) + { + if (side != GetBattlerSide(i) + && gBattleMons[i].ability == ABILITY_SHADOW_TAG) + { + gBattleScripting.battler = i; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return BATTLE_RUN_FAILURE; + } + if (side != GetBattlerSide(i) + && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE + && !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_FLYING) + && gBattleMons[i].ability == ABILITY_ARENA_TRAP) + { + gBattleScripting.battler = i; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return BATTLE_RUN_FAILURE; + } + } + i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0); + if (i != 0 && IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)) + { + gBattleScripting.battler = i - 1; + gLastUsedAbility = gBattleMons[i - 1].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return BATTLE_RUN_FAILURE; + } + if ((gBattleMons[gActiveBattler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) + || (gStatuses3[gActiveBattler] & STATUS3_ROOTED)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + return BATTLE_RUN_FORBIDDEN; + } + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + return BATTLE_RUN_FORBIDDEN; + } + return BATTLE_RUN_SUCCESS; +} + +void sub_8013F6C(u8 battler) +{ + s32 i; + u8 r4, r1; + + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)); + r4 = pokemon_order_func(gBattlerPartyIndexes[battler]); + r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler)); + sub_8127FF4(r4, r1); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (i = 0; i < 3; ++i) + { + *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; + *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; + } + } + else + { + for (i = 0; i < 3; ++i) + *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; + } +} + +enum +{ + STATE_BEFORE_ACTION_CHOSEN, + STATE_WAIT_ACTION_CHOSEN, + STATE_WAIT_ACTION_CASE_CHOSEN, + STATE_WAIT_ACTION_CONFIRMED_STANDBY, + STATE_WAIT_ACTION_CONFIRMED, + STATE_SELECTION_SCRIPT, + STATE_WAIT_SET_BEFORE_ACTION, +}; + +static void HandleTurnActionSelectionState(void) +{ + s32 i; + + gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0; + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + u8 position = GetBattlerPosition(gActiveBattler); + + switch (gBattleCommunication[gActiveBattler]) + { + case STATE_BEFORE_ACTION_CHOSEN: // Choose an action. + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI + || (position & BIT_FLANK) == B_FLANK_LEFT + || gBattleStruct->field_91 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))] + || gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] == STATE_WAIT_ACTION_CONFIRMED) + { + if (gBattleStruct->field_91 & gBitTable[gActiveBattler]) + { + gChosenActionByBattler[gActiveBattler] = B_ACTION_NOTHING_FAINTED; + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED; + else + gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; + } + else + { + if (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS + || gBattleMons[gActiveBattler].status2 & STATUS2_RECHARGE) + { + gChosenActionByBattler[gActiveBattler] = B_ACTION_USE_MOVE; + gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; + } + else + { + BtlController_EmitChooseAction(0, gChosenActionByBattler[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattleCommunication[gActiveBattler]; + } + } + } + break; + case STATE_WAIT_ACTION_CHOSEN: // Try to perform an action. + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + { + gChosenActionByBattler[gActiveBattler] = gBattleBufferB[gActiveBattler][1]; + switch (gBattleBufferB[gActiveBattler][1]) + { + case B_ACTION_USE_MOVE: + if (AreAllMovesUnusable()) + { + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_WAIT_ACTION_CONFIRMED_STANDBY; + *(gBattleStruct->moveTarget + gActiveBattler) = gBattleBufferB[gActiveBattler][3]; + return; + } + else if (gDisableStructs[gActiveBattler].encoredMove != MOVE_NONE) + { + gChosenMoveByBattler[gActiveBattler] = gDisableStructs[gActiveBattler].encoredMove; + *(gBattleStruct->chosenMovePositions + gActiveBattler) = gDisableStructs[gActiveBattler].encoredMovePos; + gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; + return; + } + else + { + struct ChooseMoveStruct moveInfo; + + moveInfo.species = gBattleMons[gActiveBattler].species; + moveInfo.monType1 = gBattleMons[gActiveBattler].type1; + moveInfo.monType2 = gBattleMons[gActiveBattler].type2; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i]; + moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i]; + moveInfo.maxPp[i] = CalculatePPWithBonus(gBattleMons[gActiveBattler].moves[i], + gBattleMons[gActiveBattler].ppBonuses, + i); + } + BtlController_EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo); + MarkBattlerForControllerExec(gActiveBattler); + } + break; + case B_ACTION_USE_ITEM: + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) + { + gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; + return; + } + else + { + BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]); + MarkBattlerForControllerExec(gActiveBattler); + } + break; + case B_ACTION_SWITCH: + *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler]; + if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION) || gStatuses3[gActiveBattler] & STATUS3_ROOTED) + { + BtlController_EmitChoosePokemon(0, PARTY_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + } + else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG)) + || ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP)) + && !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_FLYING) + && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE) + || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0)) + && IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL))) + { + BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]); + } + else + { + if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH) + BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH) + BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + else + BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + } + MarkBattlerForControllerExec(gActiveBattler); + break; + case B_ACTION_SAFARI_BALL: + if (IsPlayerPartyAndPokemonStorageFull()) + { + gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintFullBox; + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; + return; + } + break; + case B_ACTION_CANCEL_PARTNER: + gBattleCommunication[gActiveBattler] = STATE_WAIT_SET_BEFORE_ACTION; + gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] = STATE_BEFORE_ACTION_CHOSEN; + BtlController_EmitEndBounceEffect(0); + MarkBattlerForControllerExec(gActiveBattler); + return; + } + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + && !(gBattleTypeFlags & BATTLE_TYPE_LINK) + && gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN) + { + BattleScriptExecute(BattleScript_PrintCantRunFromTrainer); + gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; + } + else if (IsRunningFromBattleImpossible() != BATTLE_RUN_SUCCESS + && gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN) + { + gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintCantEscapeFromBattle; + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; + return; + } + else + { + ++gBattleCommunication[gActiveBattler]; + } + } + break; + case STATE_WAIT_ACTION_CASE_CHOSEN: + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + { + switch (gChosenActionByBattler[gActiveBattler]) + { + case B_ACTION_USE_MOVE: + switch (gBattleBufferB[gActiveBattler][1]) + { + case 3 ... 9: + gChosenActionByBattler[gActiveBattler] = gBattleBufferB[gActiveBattler][1]; + return; + default: + if ((gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)) == 0xFFFF) + { + gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; + } + else if (TrySetCantSelectMoveBattleScript()) + { + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + gBattleBufferB[gActiveBattler][1] = 0; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_WAIT_ACTION_CHOSEN; + return; + } + else + { + *(gBattleStruct->chosenMovePositions + gActiveBattler) = gBattleBufferB[gActiveBattler][2]; + gChosenMoveByBattler[gActiveBattler] = gBattleMons[gActiveBattler].moves[*(gBattleStruct->chosenMovePositions + gActiveBattler)]; + *(gBattleStruct->moveTarget + gActiveBattler) = gBattleBufferB[gActiveBattler][3]; + ++gBattleCommunication[gActiveBattler]; + } + break; + } + break; + case B_ACTION_USE_ITEM: + if ((gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)) == 0) + { + gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; + } + else + { + gLastUsedItem = (gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)); + ++gBattleCommunication[gActiveBattler]; + } + break; + case B_ACTION_SWITCH: + if (gBattleBufferB[gActiveBattler][1] == PARTY_SIZE) + { + gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; + } + else + { + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1]; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= 0xF; + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0); + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3]; + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= (0xF0); + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3]; + } + ++gBattleCommunication[gActiveBattler]; + } + break; + case B_ACTION_RUN: + gHitMarker |= HITMARKER_RUN; + ++gBattleCommunication[gActiveBattler]; + break; + case B_ACTION_SAFARI_WATCH_CAREFULLY: + ++gBattleCommunication[gActiveBattler]; + break; + case B_ACTION_SAFARI_BALL: + ++gBattleCommunication[gActiveBattler]; + break; + case B_ACTION_SAFARI_POKEBLOCK: + case B_ACTION_SAFARI_GO_NEAR: + ++gBattleCommunication[gActiveBattler]; + break; + case B_ACTION_SAFARI_RUN: + gHitMarker |= HITMARKER_RUN; + ++gBattleCommunication[gActiveBattler]; + break; + case B_ACTION_OLDMAN_THROW: + ++gBattleCommunication[gActiveBattler]; + break; + } + } + break; + case STATE_WAIT_ACTION_CONFIRMED_STANDBY: + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + { + if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE) + || (position & BIT_FLANK) != B_FLANK_LEFT + || (*(&gBattleStruct->field_91) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)])) + BtlController_EmitLinkStandbyMsg(0, 0); + else + BtlController_EmitLinkStandbyMsg(0, 1); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattleCommunication[gActiveBattler]; + } + break; + case STATE_WAIT_ACTION_CONFIRMED: + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + ++gBattleCommunication[ACTIONS_CONFIRMED_COUNT]; + break; + case STATE_SELECTION_SCRIPT: + if (*(gBattleStruct->selectionScriptFinished + gActiveBattler)) + { + gBattleCommunication[gActiveBattler] = *(gBattleStruct->stateIdAfterSelScript + gActiveBattler); + } + else + { + gBattlerAttacker = gActiveBattler; + gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBattler]; + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + gSelectionBattleScripts[gActiveBattler] = gBattlescriptCurrInstr; + } + break; + case STATE_WAIT_SET_BEFORE_ACTION: + if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC)))) + gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; + break; + } + } + // Check if everyone chose actions. + if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gBattlersCount) + gBattleMainFunc = SetActionsAndBattlersTurnOrder; +} + +void SwapTurnOrder(u8 id1, u8 id2) +{ + u32 temp; + + SWAP(gActionsByTurnOrder[id1], gActionsByTurnOrder[id2], temp); + SWAP(gBattlerByTurnOrder[id1], gBattlerByTurnOrder[id2], temp); +} + +u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) +{ + u8 strikesFirst = 0; + u8 speedMultiplierBattler1 = 0, speedMultiplierBattler2 = 0; + u32 speedBattler1 = 0, speedBattler2 = 0; + u8 holdEffect = 0; + u8 holdEffectParam = 0; + u16 moveBattler1 = 0, moveBattler2 = 0; + + if (WEATHER_HAS_EFFECT) + { + if ((gBattleMons[battler1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY) + || (gBattleMons[battler1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY)) + speedMultiplierBattler1 = 2; + else + speedMultiplierBattler1 = 1; + if ((gBattleMons[battler2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY) + || (gBattleMons[battler2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY)) + speedMultiplierBattler2 = 2; + else + speedMultiplierBattler2 = 1; + } + else + { + speedMultiplierBattler1 = 1; + speedMultiplierBattler2 = 1; + } + speedBattler1 = (gBattleMons[battler1].speed * speedMultiplierBattler1) + * (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][0]) + / (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][1]); + if (gBattleMons[battler1].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[battler1].holdEffect; + holdEffectParam = gEnigmaBerries[battler1].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[battler1].item); + holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler1].item); + } + // badge boost + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) + && FlagGet(FLAG_BADGE03_GET) + && GetBattlerSide(battler1) == B_SIDE_PLAYER) + speedBattler1 = (speedBattler1 * 110) / 100; + if (holdEffect == HOLD_EFFECT_MACHO_BRACE) + speedBattler1 /= 2; + if (gBattleMons[battler1].status1 & STATUS1_PARALYSIS) + speedBattler1 /= 4; + if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100) + speedBattler1 = UINT_MAX; + // check second battlerId's speed + speedBattler2 = (gBattleMons[battler2].speed * speedMultiplierBattler2) + * (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][0]) + / (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][1]); + if (gBattleMons[battler2].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[battler2].holdEffect; + holdEffectParam = gEnigmaBerries[battler2].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[battler2].item); + holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler2].item); + } + // badge boost + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) + && FlagGet(FLAG_BADGE03_GET) + && GetBattlerSide(battler2) == B_SIDE_PLAYER) + speedBattler2 = (speedBattler2 * 110) / 100; + if (holdEffect == HOLD_EFFECT_MACHO_BRACE) + speedBattler2 /= 2; + if (gBattleMons[battler2].status1 & STATUS1_PARALYSIS) + speedBattler2 /= 4; + if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100) + speedBattler2 = UINT_MAX; + if (ignoreChosenMoves) + { + moveBattler1 = MOVE_NONE; + moveBattler2 = MOVE_NONE; + } + else + { + if (gChosenActionByBattler[battler1] == B_ACTION_USE_MOVE) + { + if (gProtectStructs[battler1].noValidMoves) + moveBattler1 = MOVE_STRUGGLE; + else + moveBattler1 = gBattleMons[battler1].moves[*(gBattleStruct->chosenMovePositions + battler1)]; + } + else + moveBattler1 = MOVE_NONE; + if (gChosenActionByBattler[battler2] == B_ACTION_USE_MOVE) + { + if (gProtectStructs[battler2].noValidMoves) + moveBattler2 = MOVE_STRUGGLE; + else + moveBattler2 = gBattleMons[battler2].moves[*(gBattleStruct->chosenMovePositions + battler2)]; + } + else + moveBattler2 = MOVE_NONE; + } + // both move priorities are different than 0 + if (gBattleMoves[moveBattler1].priority != 0 || gBattleMoves[moveBattler2].priority != 0) + { + // both priorities are the same + if (gBattleMoves[moveBattler1].priority == gBattleMoves[moveBattler2].priority) + { + if (speedBattler1 == speedBattler2 && Random() & 1) + strikesFirst = 2; // same speeds, same priorities + else if (speedBattler1 < speedBattler2) + strikesFirst = 1; // battler2 has more speed + // else battler1 has more speed + } + else if (gBattleMoves[moveBattler1].priority < gBattleMoves[moveBattler2].priority) + strikesFirst = 1; // battler2's move has greater priority + // else battler1's move has greater priority + } + // both priorities are equal to 0 + else + { + if (speedBattler1 == speedBattler2 && Random() & 1) + strikesFirst = 2; // same speeds, same priorities + else if (speedBattler1 < speedBattler2) + strikesFirst = 1; // battler2 has more speed + // else battler1 has more speed + } + return strikesFirst; +} + +static void SetActionsAndBattlersTurnOrder(void) +{ + s32 turnOrderId = 0; + s32 i, j; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[turnOrderId] = gActiveBattler; + ++turnOrderId; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN) + { + turnOrderId = 5; + break; + } + } + } + else if (gChosenActionByBattler[0] == B_ACTION_RUN) + { + gActiveBattler = 0; + turnOrderId = 5; + } + if (turnOrderId == 5) // One of battlers wants to run. + { + gActionsByTurnOrder[0] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[0] = gActiveBattler; + turnOrderId = 1; + for (i = 0; i < gBattlersCount; ++i) + { + if (i != gActiveBattler) + { + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[i]; + gBattlerByTurnOrder[turnOrderId] = i; + ++turnOrderId; + } + } + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + gBattleStruct->focusPunchBattlerId = 0; + return; + } + else + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH) + { + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[turnOrderId] = gActiveBattler; + ++turnOrderId; + } + } + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH) + { + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[turnOrderId] = gActiveBattler; + ++turnOrderId; + } + } + for (i = 0; i < gBattlersCount - 1; ++i) + { + for (j = i + 1; j < gBattlersCount; ++j) + { + u8 battler1 = gBattlerByTurnOrder[i]; + u8 battler2 = gBattlerByTurnOrder[j]; + + if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM + && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM + && gActionsByTurnOrder[i] != B_ACTION_SWITCH + && gActionsByTurnOrder[j] != B_ACTION_SWITCH) + if (GetWhoStrikesFirst(battler1, battler2, FALSE)) + SwapTurnOrder(i, j); + } + } + } + } + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + gBattleStruct->focusPunchBattlerId = 0; +} + +static void TurnValuesCleanUp(bool8 var0) +{ + s32 i; + u8 *dataPtr; + + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (var0) + { + gProtectStructs[gActiveBattler].protected = FALSE; + gProtectStructs[gActiveBattler].endured = FALSE; + } + else + { + dataPtr = (u8 *)(&gProtectStructs[gActiveBattler]); + for (i = 0; i < sizeof(struct ProtectStruct); ++i) + dataPtr[i] = 0; + if (gDisableStructs[gActiveBattler].isFirstTurn) + --gDisableStructs[gActiveBattler].isFirstTurn; + if (gDisableStructs[gActiveBattler].rechargeTimer) + { + --gDisableStructs[gActiveBattler].rechargeTimer; + if (gDisableStructs[gActiveBattler].rechargeTimer == 0) + gBattleMons[gActiveBattler].status2 &= ~(STATUS2_RECHARGE); + } + } + + if (gDisableStructs[gActiveBattler].substituteHP == 0) + gBattleMons[gActiveBattler].status2 &= ~(STATUS2_SUBSTITUTE); + } + gSideTimers[0].followmeTimer = 0; + gSideTimers[1].followmeTimer = 0; +} + +static void SpecialStatusesClear(void) +{ + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + s32 i; + u8 *dataPtr = (u8 *)(&gSpecialStatuses[gActiveBattler]); + + for (i = 0; i < sizeof(struct SpecialStatus); ++i) + dataPtr[i] = 0; + } +} + +static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) +{ + if (!(gHitMarker & HITMARKER_RUN)) + { + while (gBattleStruct->focusPunchBattlerId < gBattlersCount) + { + gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBattlerId; + ++gBattleStruct->focusPunchBattlerId; + if (gChosenMoveByBattler[gActiveBattler] == MOVE_FOCUS_PUNCH + && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) + && !(gDisableStructs[gBattlerAttacker].truantCounter) + && !(gProtectStructs[gActiveBattler].noValidMoves)) + { + BattleScriptExecute(BattleScript_FocusPunchSetUp); + return; + } + } + } + TryClearRageStatuses(); + gCurrentTurnActionNumber = 0; + { + // something stupid needed to match + u8 zero; + + gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)]; + } + gDynamicBasePower = 0; + gBattleStruct->dynamicMoveType = 0; + gBattleMainFunc = RunTurnActionsFunctions; + gBattleCommunication[3] = 0; + gBattleCommunication[4] = 0; + gBattleScripting.multihitMoveEffect = 0; + gBattleResources->battleScriptsStack->size = 0; +} + +static void RunTurnActionsFunctions(void) +{ + if (gBattleOutcome != 0) + gCurrentActionFuncId = B_ACTION_FINISHED; + *(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber; + sTurnActionsFuncsTable[gCurrentActionFuncId](); + + if (gCurrentTurnActionNumber >= gBattlersCount) // everyone did their actions, turn finished + { + gHitMarker &= ~(HITMARKER_x100000); + gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F]; + } + else + { + if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId + { + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); + } + } +} + +static void HandleEndTurn_BattleWon(void) +{ + gCurrentActionFuncId = 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTextBuff1[0] = gBattleOutcome; + gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); + } + else if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) + { + BattleStopLowHpSound(); + PlayBGM(MUS_WIN_TRE); + gBattlescriptCurrInstr = gUnknown_81D88D7; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + BattleStopLowHpSound(); + gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon; + switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) + { + case CLASS_LEADER_2: + case CLASS_CHAMPION_2: + PlayBGM(MUS_WIN_GYM); + break; + case CLASS_BOSS: + case CLASS_TEAM_ROCKET: + case CLASS_COOLTRAINER_2: + case CLASS_ELITE_FOUR_2: + case CLASS_GENTLEMAN_2: + default: + PlayBGM(MUS_WIN_TRE); + break; + } + } + else + { + gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems; + } + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +static void HandleEndTurn_BattleLost(void) +{ + gCurrentActionFuncId = 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTextBuff1[0] = gBattleOutcome; + gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && ScrSpecial_GetTrainerBattleMode() == 9) + { + if (sub_80803D8() & 1) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattlerAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + gBattlescriptCurrInstr = BattleScript_LocalBattleLost; + } + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +static void HandleEndTurn_RanFromBattle(void) +{ + gCurrentActionFuncId = 0; + switch (gProtectStructs[gBattlerAttacker].fleeFlag) + { + default: + gBattlescriptCurrInstr = BattleScript_GotAwaySafely; + break; + case 1: + gBattlescriptCurrInstr = BattleScript_SmokeBallEscape; + break; + case 2: + gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility; + break; + } + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +static void HandleEndTurn_MonFled(void) +{ + gCurrentActionFuncId = 0; + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]); + gBattlescriptCurrInstr = BattleScript_WildMonFled; + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +static void HandleEndTurn_FinishBattle(void) +{ + if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED) + { + if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_LINK))) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + if (gBattleResults.playerMon1Species == SPECIES_NONE) + { + gBattleResults.playerMon1Species = gBattleMons[gActiveBattler].species; + StringCopy(gBattleResults.playerMon1Name, gBattleMons[gActiveBattler].nickname); + } + else + { + gBattleResults.playerMon2Species = gBattleMons[gActiveBattler].species; + StringCopy(gBattleResults.playerMon2Name, gBattleMons[gActiveBattler].nickname); + } + } + } + } + sub_812BFDC(); + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + sub_810CB90(); + BeginFastPaletteFade(3); + FadeOutMapMusic(5); + gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions; + gCB2_AfterEvolution = BattleMainCB2; + } + else if (!gBattleControllerExecFlags) + { + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +static void FreeResetData_ReturnToOvOrDoEvolutions(void) +{ + if (!gPaletteFade.active) + { + ResetSpriteData(); + if (gLeveledUpInBattle == 0 || gBattleOutcome != B_OUTCOME_WON) + gBattleMainFunc = ReturnFromBattleToOverworld; + else + gBattleMainFunc = TryEvolvePokemon; + FreeAllWindowBuffers(); + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); + } + } +} + +static void TryEvolvePokemon(void) +{ + s32 i; + + while (gLeveledUpInBattle != 0) + { + for (i = 0; i < PARTY_SIZE; ++i) + { + if (gLeveledUpInBattle & gBitTable[i]) + { + u16 species; + u8 levelUpBits = gLeveledUpInBattle; + + levelUpBits &= ~(gBitTable[i]); + gLeveledUpInBattle = levelUpBits; + species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits); + if (species != SPECIES_NONE) + { + gBattleMainFunc = WaitForEvoSceneToFinish; + EvolutionScene(&gPlayerParty[i], species, 0x81, i); + return; + } + } + } + } + gBattleMainFunc = ReturnFromBattleToOverworld; +} + +static void WaitForEvoSceneToFinish(void) +{ + if (gMain.callback2 == BattleMainCB2) + gBattleMainFunc = TryEvolvePokemon; +} + +static void ReturnFromBattleToOverworld(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + RandomlyGivePartyPokerus(gPlayerParty); + PartySpreadPokerus(gPlayerParty); + } + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) || gReceivedRemoteLinkPlayers == 0) + { + gSpecialVar_Result = gBattleOutcome; + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) + { + UpdateRoamerHPStatus(&gEnemyParty[0]); + if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT) + SetRoamerInactive(); + } + m4aSongNumStop(SE_HINSI); + SetMainCallback2(gMain.savedCallback); + } +} + +void RunBattleScriptCommands_PopCallbacksStack(void) +{ + if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED) + { + if (gBattleResources->battleCallbackStack->size != 0) + --gBattleResources->battleCallbackStack->size; + gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size]; + } + else + { + if (!gBattleControllerExecFlags) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +void RunBattleScriptCommands(void) +{ + if (!gBattleControllerExecFlags) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); +} + +static void HandleAction_UseMove(void) +{ + u8 side; + u8 var = 4; + + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker]) + { + gCurrentActionFuncId = B_ACTION_FINISHED; + return; + } + gCritMultiplier = 1; + gBattleScripting.dmgMultiplier = 1; + gBattleStruct->atkCancellerTracker = 0; + gMoveResultFlags = 0; + gMultiHitCounter = 0; + gBattleCommunication[6] = 0; + gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerAttacker); + // choose move + if (gProtectStructs[gBattlerAttacker].noValidMoves) + { + gProtectStructs[gBattlerAttacker].noValidMoves = 0; + gCurrentMove = gChosenMove = MOVE_STRUGGLE; + gHitMarker |= HITMARKER_NO_PPDEDUCT; + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); + } + else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE) + { + gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker]; + } + // encore forces you to use the same move + else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos]) + { + gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove; + gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos; + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + } + // check if the encored move wasn't overwritten + else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos]) + { + gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos; + gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; + gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE; + gDisableStructs[gBattlerAttacker].encoredMovePos = 0; + gDisableStructs[gBattlerAttacker].encoreTimer = 0; + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker]) + { + gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else + { + gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; + } + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + gBattleResults.lastUsedMovePlayer = gCurrentMove; + else + gBattleResults.lastUsedMoveOpponent = gCurrentMove; + // choose target + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer != 0 + && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget) + && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + { + gBattlerTarget = gSideTimers[side].followmeTarget; + } + else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && gSideTimers[side].followmeTimer == 0 + && (gBattleMoves[gCurrentMove].power != 0 + || gBattleMoves[gCurrentMove].target != MOVE_TARGET_USER) + && gBattleMons[*(gBattleStruct->moveTarget + gBattlerAttacker)].ability != ABILITY_LIGHTNING_ROD + && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + { + side = GetBattlerSide(gBattlerAttacker); + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + if (side != GetBattlerSide(gActiveBattler) + && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler + && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD + && GetBattlerTurnOrderNum(gActiveBattler) < var) + var = GetBattlerTurnOrderNum(gActiveBattler); + if (var == 4) + { + if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + { + if (Random() & 1) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + else + { + if (Random() & 1) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + } + else + { + gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); + } + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + { + if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + { + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + } + else + { + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + } + } + } + else + { + gActiveBattler = gBattlerByTurnOrder[var]; + RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); + gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1; + gBattlerTarget = gActiveBattler; + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + { + if (Random() & 1) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + else + { + if (Random() & 1) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget] + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + } + else + { + gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + { + if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + { + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + } + else + { + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + } + } + } + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +static void HandleAction_Switch(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gActionSelectionCursor[gBattlerAttacker] = 0; + gMoveSelectionCursor[gBattlerAttacker] = 0; + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker)); + gBattleScripting.battler = gBattlerAttacker; + gBattlescriptCurrInstr = BattleScript_ActionSwitch; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; + if (gBattleResults.playerSwitchesCounter < 255) + ++gBattleResults.playerSwitchesCounter; +} + +static void HandleAction_UseItem(void) +{ + gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + ClearFuryCutterDestinyBondGrudge(gBattlerAttacker); + gLastUsedItem = gBattleBufferB[gBattlerAttacker][1] | (gBattleBufferB[gBattlerAttacker][2] << 8); + if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball + { + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem]; + } + else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL) + { + gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0]; + } + else if (gLastUsedItem == ITEM_POKE_FLUTE) + { + gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[1]; + } + else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + { + gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0]; + } + else + { + gBattleScripting.battler = gBattlerAttacker; + switch (*(gBattleStruct->AI_itemType + (gBattlerAttacker >> 1))) + { + case AI_ITEM_FULL_RESTORE: + case AI_ITEM_HEAL_HP: + break; + case AI_ITEM_CURE_CONDITION: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1) + { + if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E) + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)) + { + *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1; + ++gBattleCommunication[MULTISTRING_CHOOSER]; + } + } + break; + case AI_ITEM_X_STAT: + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & 0x80) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); + PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X); + while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1)) + { + *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1; + ++gBattleTextBuff1[2]; + } + gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14; + gBattleScripting.animArg2 = 0; + } + break; + case AI_ITEM_GUARD_SPECS: + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + } + + gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBattlerAttacker / 2)]; + } + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +bool8 TryRunFromBattle(u8 battler) +{ + bool8 effect = FALSE; + u8 holdEffect; + u8 pyramidMultiplier; + u8 speedVar; + + if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[battler].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item); + gPotentialItemEffectBattler = battler; + if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) + { + gLastUsedItem = gBattleMons[battler].item; + gProtectStructs[battler].fleeFlag = 1; + ++effect; + } + else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY) + { + gLastUsedAbility = ABILITY_RUN_AWAY; + gProtectStructs[battler].fleeFlag = 2; + ++effect; + } + else if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + { + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + ++effect; + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleMons[battler].speed < gBattleMons[BATTLE_OPPOSITE(battler)].speed) + { + speedVar = (gBattleMons[battler].speed * 128) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30); + if (speedVar > (Random() & 0xFF)) + ++effect; + } + else // same speed or faster + { + ++effect; + } + } + + ++gBattleStruct->runTries; + } + if (effect) + { + gCurrentTurnActionNumber = gBattlersCount; + gBattleOutcome = B_OUTCOME_RAN; + } + return effect; +} + +static void HandleAction_Run(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gCurrentTurnActionNumber = gBattlersCount; + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN) + gBattleOutcome |= B_OUTCOME_LOST; + } + else + { + if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN) + gBattleOutcome |= B_OUTCOME_WON; + } + } + gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN; + } + else + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + { + if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away + { + ClearFuryCutterDestinyBondGrudge(gBattlerAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; + } + } + else + { + if (gBattleMons[gBattlerAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; + } + else + { + gCurrentTurnActionNumber = gBattlersCount; + gBattleOutcome = B_OUTCOME_MON_FLED; + } + } + } +} + +static void HandleAction_WatchesCarefully(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + if (gBattleStruct->safariGoNearCounter != 0) + { + --gBattleStruct->safariGoNearCounter; + if (gBattleStruct->safariGoNearCounter == 0) + { + *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(gEnemyParty, MON_DATA_SPECIES)].catchRate * 100 / 1275; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + } + else + { + if (gBattleStruct->safariPkblThrowCounter != 0) + { + --gBattleStruct->safariPkblThrowCounter; + if (gBattleStruct->safariPkblThrowCounter == 0) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[5] = 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + } + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +static void HandleAction_SafariZoneBallThrow(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + --gNumSafariBalls; + gLastUsedItem = ITEM_SAFARI_BALL; + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +static void HandleAction_ThrowPokeblock(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattleStruct->safariPkblThrowCounter += Random() % 5 + 2; + if (gBattleStruct->safariPkblThrowCounter > 6) + gBattleStruct->safariPkblThrowCounter = 6; + gBattleStruct->safariGoNearCounter = 0; + gBattleStruct->safariCatchFactor >>= 1; + if (gBattleStruct->safariCatchFactor <= 2) + gBattleStruct->safariCatchFactor = 3; + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +static void HandleAction_GoNear(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattleStruct->safariGoNearCounter += Random() % 5 + 2; + if (gBattleStruct->safariGoNearCounter > 6) + gBattleStruct->safariGoNearCounter = 6; + gBattleStruct->safariPkblThrowCounter = 0; + gBattleStruct->safariCatchFactor <<= 1; + if (gBattleStruct->safariCatchFactor > 20) + gBattleStruct->safariCatchFactor = 20; + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; +} + +static void HandleAction_SafariZoneRun(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + PlaySE(SE_NIGERU); + gCurrentTurnActionNumber = gBattlersCount; + gBattleOutcome = B_OUTCOME_RAN; +} + +static void HandleAction_OldManBallThrow(void) +{ + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]) + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3]; + gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; + gActionsByTurnOrder[1] = B_ACTION_FINISHED; +} + +static void HandleAction_TryFinish(void) +{ + if (!HandleFaintedMonActions()) + { + gBattleStruct->faintedActionsState = 0; + gCurrentActionFuncId = B_ACTION_FINISHED; + } +} + +static void HandleAction_NothingIsFainted(void) +{ + ++gCurrentTurnActionNumber; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_CHARGING | HITMARKER_x4000000); +} + +static void HandleAction_ActionFinished(void) +{ + ++gCurrentTurnActionNumber; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + SpecialStatusesClear(); + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_CHARGING | HITMARKER_x4000000); + gCurrentMove = MOVE_NONE; + gBattleMoveDamage = 0; + gMoveResultFlags = 0; + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + gLastLandedMoves[gBattlerAttacker] = 0; + gLastHitByType[gBattlerAttacker] = 0; + gBattleStruct->dynamicMoveType = 0; + gDynamicBasePower = 0; + gBattleScripting.atk49_state = 0; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0; + gBattleScripting.multihitMoveEffect = 0; + gBattleResources->battleScriptsStack->size = 0; +} diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3de2a6dea..a7d8cb6fa 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -48,6 +48,7 @@ #include "constants/abilities.h" #include "constants/pokemon.h" #include "constants/trainers.h" +#include "constants/map_types.h" #define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) @@ -1222,7 +1223,7 @@ static void atk04_critcalc(void) critChance = NELEMS(sCriticalHitChance) - 1; if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR) && !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT) - && !(gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL) + && !(gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL) && !(Random() % sCriticalHitChance[critChance]) && (!(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) || sub_80EB2E0(1)) && !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)) @@ -4414,7 +4415,7 @@ static void atk4E_switchinanim(void) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_LEGENDARY - | BATTLE_TYPE_OLDMAN_TUTORIAL + | BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_GHOST))) @@ -9436,7 +9437,7 @@ static void atkEF_handleballthrow(void) MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr = BattleScript_TrainerBallBlock; } - else if (gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_OLDMAN_TUTORIAL)) + else if (gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_OLD_MAN_TUTORIAL)) { BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS); MarkBattlerForControllerExec(gActiveBattler); @@ -9451,7 +9452,6 @@ static void atkEF_handleballthrow(void) catchRate = gBattleStruct->safariCatchFactor * 1275 / 100; else catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate; - if (gLastUsedItem > ITEM_SAFARI_BALL) { switch (gLastUsedItem) @@ -9515,7 +9515,7 @@ static void atkEF_handleballthrow(void) else { if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF) - gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++; + ++gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]; } } if (odds > 254) // mon caught diff --git a/src/battle_setup.c b/src/battle_setup.c new file mode 100644 index 000000000..98437e279 --- /dev/null +++ b/src/battle_setup.c @@ -0,0 +1,1060 @@ +#include "global.h" +#include "task.h" +#include "help_system.h" +#include "overworld.h" +#include "item.h" +#include "sound.h" +#include "pokemon.h" +#include "load_save.h" +#include "safari_zone.h" +#include "quest_log.h" +#include "script.h" +#include "script_pokemon_util_80A0058.h" +#include "strings.h" +#include "string_util.h" +#include "event_data.h" +#include "unk_8159F40.h" +#include "map_obj_80688E4.h" +#include "metatile_behavior.h" +#include "event_scripts.h" +#include "fldeff.h" +#include "fieldmap.h" +#include "field_control_avatar.h" +#include "field_player_avatar.h" +#include "field_screen_effect.h" +#include "field_message_box.h" +#include "field_map_obj.h" +#include "vs_seeker.h" +#include "battle.h" +#include "battle_setup.h" +#include "battle_transition.h" +#include "constants/battle_setup.h" +#include "constants/flags.h" +#include "constants/items.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/pokemon.h" +#include "constants/trainers.h" +#include "constants/trainer_classes.h" +#include "constants/map_types.h" + +enum +{ + TRAINER_PARAM_LOAD_VAL_8BIT, + TRAINER_PARAM_LOAD_VAL_16BIT, + TRAINER_PARAM_LOAD_VAL_32BIT, + TRAINER_PARAM_CLEAR_VAL_8BIT, + TRAINER_PARAM_CLEAR_VAL_16BIT, + TRAINER_PARAM_CLEAR_VAL_32BIT, + TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR, +}; + +struct TrainerBattleParameter +{ + void *varPtr; + u8 ptrType; +}; + +static void DoSafariBattle(void); +static void DoGhostBattle(void); +static void DoStandardWildBattle(void); +static void CB2_EndWildBattle(void); +static u8 GetWildBattleTransition(void); +static u8 GetTrainerBattleTransition(void); +static void CB2_EndScriptedWildBattle(void); +static void CB2_EndMarowakBattle(void); +static bool32 IsPlayerDefeated(u32 battleOutcome); +static void CB2_EndTrainerBattle(void); +static const u8 *GetIntroSpeechOfApproachingTrainer(void); +static const u8 *GetTrainerCantBattleSpeech(void); + +static EWRAM_DATA u16 sTrainerBattleMode = 0; +EWRAM_DATA u16 gTrainerBattleOpponent_A = 0; +static EWRAM_DATA u16 sTrainerEventObjectLocalId = 0; +static EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL; +static EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL; +static EWRAM_DATA u8 *sTrainerVictorySpeech = NULL; +static EWRAM_DATA u8 *sTrainerCannotBattleSpeech = NULL; +static EWRAM_DATA u8 *sTrainerBattleEndScript = NULL; +static EWRAM_DATA u8 *sTrainerABattleScriptRetAddr = NULL; +static EWRAM_DATA u16 gUnknown_20386CC = 0; + +static const u8 sBattleTransitionTable_Wild[][2] = +{ + B_TRANSITION_SLICED_SCREEN, B_TRANSITION_WHITEFADE_IN_STRIPES, + B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES, + B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES, + B_TRANSITION_BLACK_WAVE_TO_RIGHT, B_TRANSITION_FULLSCREEN_WAVE, +}; + +static const u8 sBattleTransitionTable_Trainer[][2] = +{ + B_TRANSITION_SLIDING_POKEBALLS, B_TRANSITION_BLACK_DOODLES, + B_TRANSITION_HORIZONTAL_CORRUGATE, B_TRANSITION_BIG_POKEBALL, + B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES, + B_TRANSITION_DISTORTED_WAVE, B_TRANSITION_FULLSCREEN_WAVE, +}; + +static const struct TrainerBattleParameter sOrdinaryBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sContinueScriptBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sDoubleBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sTutorialBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&gUnknown_20386CC, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + + +#define tState data[0] +#define tTransition data[1] + +static void Task_BattleStart(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + if (!FldEffPoison_IsActive()) + { + HelpSystem_Disable(); + BT_StartOnField(tTransition); + ++tState; + } + break; + case 1: + if (BT_IsDone() == TRUE) + { + HelpSystem_Enable(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_InitBattle); + RestartWildEncounterImmunitySteps(); + ClearPoisonStepCounter(); + DestroyTask(taskId); + } + break; + } +} + +static void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means default music for current map +{ + u8 taskId = CreateTask(Task_BattleStart, 1); + + gTasks[taskId].tTransition = transition; + PlayMapChosenOrBattleBGM(song); +} + +static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum) +{ + if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F) + && ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6) + && !(CheckBagHasItem(ITEM_SILPH_SCOPE, 1))) + return TRUE; + else + return FALSE; +} + +void BattleSetup_StartWildBattle(void) +{ + if (GetSafariZoneFlag()) + DoSafariBattle(); + else if (CheckSilphScopeInPokemonTower(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + DoGhostBattle(); + else + DoStandardWildBattle(); +} + +static void DoStandardWildBattle(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_805C780(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = 0; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void BattleSetup_StartRoamerBattle(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_805C780(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = BATTLE_TYPE_ROAMER; + CreateBattleStartTask(GetWildBattleTransition(), MUS_VS_DEN); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +static void DoSafariBattle(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_805C780(); + gMain.savedCallback = CB2_EndSafariBattle; + gBattleTypeFlags = BATTLE_TYPE_SAFARI; + CreateBattleStartTask(GetWildBattleTransition(), 0); +} + +static void DoGhostBattle(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_805C780(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = BATTLE_TYPE_GHOST; + CreateBattleStartTask(GetWildBattleTransition(), 0); + SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, gUnknown_841D148); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +static void DoTrainerBattle(void) +{ + CreateBattleStartTask(GetTrainerBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_TRAINER_BATTLES); +} + +void ScrSpecial_StartOldManTutorialBattle(void) +{ + CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5); + ScriptContext2_Enable(); + gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; + gBattleTypeFlags = BATTLE_TYPE_OLD_MAN_TUTORIAL; + CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0); +} + +void BattleSetup_StartScriptedWildBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_PALACE; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void ScrSpecial_StartMarowakBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndMarowakBattle; + if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1)) + { + gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY; + CreateMonWithGenderNatureLetter(gEnemyParty, SPECIES_MAROWAK, 30, 31, MON_FEMALE, NATURE_SERIOUS, 0); + } + else + { + gBattleTypeFlags = BATTLE_TYPE_GHOST; + } + CreateBattleStartTask(GetWildBattleTransition(), 0); + SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, gUnknown_841D148); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void ScrSpecial_StartSouthernIslandBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void Special_StartLegendaryBattle(void) +{ + u16 species; + + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_ARENA; + species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); + switch (species) + { + case SPECIES_MEWTWO: + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_MYU2); + break; + case SPECIES_DEOXYS: + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_DEO); + break; + case SPECIES_MOLTRES: + case SPECIES_ARTICUNO: + case SPECIES_ZAPDOS: + case SPECIES_HO_OH: + case SPECIES_LUGIA: + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_DEN); + break; + default: + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE20); + break; + } + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void Special_StartGroudonKyogreBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; + if (gGameVersion == VERSION_FIRE_RED) + CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_BATTLE20); + else // pointless, exactly the same + CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_BATTLE20); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +void Special_StartRegiBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE20); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); +} + +// not used +static void sub_807FAF8(void) +{ + LoadPlayerParty(); + CB2_EndWildBattle(); +} + +// not used +static void sub_807FB08(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_805C780(); + gMain.savedCallback = sub_807FAF8; + SavePlayerParty(); + InitPokedudePartyAndOpponent(); + CreateBattleStartTask(GetWildBattleTransition(), 0); +} + +static void CB2_EndWildBattle(void) +{ + CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); + ResetOamRange(0, 128); + if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(CB2_ReturnToField); + gFieldCallback = sub_807E3EC; + } +} + +static void CB2_EndScriptedWildBattle(void) +{ + CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); + ResetOamRange(0, 128); + if (IsPlayerDefeated(gBattleOutcome) == TRUE) + SetMainCallback2(CB2_WhiteOut); + else + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +static void CB2_EndMarowakBattle(void) +{ + CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); + ResetOamRange(0, 128); + if (IsPlayerDefeated(gBattleOutcome)) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + if (gBattleOutcome == B_OUTCOME_WON) + gSpecialVar_Result = 0; + else + gSpecialVar_Result = 1; + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + } +} + +u8 BattleSetup_GetTerrainId(void) +{ + u16 tileBehavior; + s16 x, y; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsTallGrass_2(tileBehavior)) + return BATTLE_TERRAIN_GRASS; + if (MetatileBehavior_IsLongGrass(tileBehavior)) + return BATTLE_TERRAIN_LONG_GRASS; + if (MetatileBehavior_IsSandOrDeepSand(tileBehavior)) + return BATTLE_TERRAIN_SAND; + switch (gMapHeader.mapType) + { + case MAP_TYPE_TOWN: + case MAP_TYPE_CITY: + case MAP_TYPE_ROUTE: + break; + case MAP_TYPE_UNDERGROUND: + if (MetatileBehavior_IsIndoorEncounter(tileBehavior)) + return BATTLE_TERRAIN_BUILDING; + if (MetatileBehavior_IsSurfable(tileBehavior)) + return BATTLE_TERRAIN_POND; + return BATTLE_TERRAIN_CAVE; + case MAP_TYPE_INDOOR: + case MAP_TYPE_SECRET_BASE: + return BATTLE_TERRAIN_BUILDING; + case MAP_TYPE_UNDERWATER: + return BATTLE_TERRAIN_UNDERWATER; + case MAP_TYPE_OCEAN_ROUTE: + if (MetatileBehavior_IsSurfable(tileBehavior)) + return BATTLE_TERRAIN_WATER; + return BATTLE_TERRAIN_PLAIN; + } + if (MetatileBehavior_IsDeepSemiDeepOrSplashingWater(tileBehavior)) + return BATTLE_TERRAIN_WATER; + if (MetatileBehavior_IsSurfable(tileBehavior)) + return BATTLE_TERRAIN_POND; + if (MetatileBehavior_IsMountain(tileBehavior)) + return BATTLE_TERRAIN_MOUNTAIN; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + if (MetatileBehavior_GetBridgeType(tileBehavior)) + return BATTLE_TERRAIN_POND; + if (MetatileBehavior_IsBridge(tileBehavior) == TRUE) + return BATTLE_TERRAIN_WATER; + } + return BATTLE_TERRAIN_PLAIN; +} + +static u8 GetBattleTransitionTypeByMap(void) +{ + u16 tileBehavior; + s16 x, y; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + if (Overworld_GetFlashLevel()) + return B_TRANSITION_HORIZONTAL_CORRUGATE; + if (!MetatileBehavior_IsSurfable(tileBehavior)) + { + switch (gMapHeader.mapType) + { + case MAP_TYPE_UNDERGROUND: + return B_TRANSITION_DISTORTED_WAVE; + case MAP_TYPE_UNDERWATER: + return B_TRANSITION_BIG_POKEBALL; + default: + return B_TRANSITION_BLUR; + } + } + return B_TRANSITION_BIG_POKEBALL; +} + +static u16 GetSumOfPlayerPartyLevel(u8 numMons) +{ + u8 sum = 0; + s32 i; + + for (i = 0; i < PARTY_SIZE; ++i) + { + u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + + if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) + { + sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + if (--numMons == 0) + break; + } + } + return sum; +} + +static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) +{ + u8 i; + u8 sum; + u32 count = numMons; + + if (gTrainers[opponentId].partySize < count) + count = gTrainers[opponentId].partySize; + sum = 0; + switch (gTrainers[opponentId].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *party; + + party = gTrainers[opponentId].party.NoItemDefaultMoves; + for (i = 0; i < count; ++i) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET: + { + const struct TrainerMonNoItemCustomMoves *party; + + party = gTrainers[opponentId].party.NoItemCustomMoves; + for (i = 0; i < count; ++i) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemDefaultMoves *party; + + party = gTrainers[opponentId].party.ItemDefaultMoves; + for (i = 0; i < count; ++i) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemCustomMoves *party; + + party = gTrainers[opponentId].party.ItemCustomMoves; + for (i = 0; i < count; ++i) + sum += party[i].lvl; + } + break; + } + return sum; +} + +static u8 GetWildBattleTransition(void) +{ + u8 transitionType = GetBattleTransitionTypeByMap(); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); + + if (enemyLevel < playerLevel) + return sBattleTransitionTable_Wild[transitionType][0]; + else + return sBattleTransitionTable_Wild[transitionType][1]; +} + +static u8 GetTrainerBattleTransition(void) +{ + u8 minPartyCount; + u8 transitionType; + u8 enemyLevel; + u8 playerLevel; + + if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) + return B_TRANSITION_BLUE; + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR_2) + { + if (gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_LORELEI || gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_LORELEI_2) + return B_TRANSITION_LORELEI; + if (gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_BRUNO || gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_BRUNO_2) + return B_TRANSITION_BRUNO; + if (gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_AGATHA || gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_AGATHA_2) + return B_TRANSITION_AGATHA; + if (gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_LANCE || gTrainerBattleOpponent_A == TRAINER_ELITE_FOUR_LANCE_2) + return B_TRANSITION_LANCE; + return B_TRANSITION_BLUE; + } + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2) + return B_TRANSITION_BLUE; + if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE) + minPartyCount = 2; // double battles always at least have 2 pokemon. + else + minPartyCount = 1; + transitionType = GetBattleTransitionTypeByMap(); + enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent_A, minPartyCount); + playerLevel = GetSumOfPlayerPartyLevel(minPartyCount); + if (enemyLevel < playerLevel) + return sBattleTransitionTable_Trainer[transitionType][0]; + else + return sBattleTransitionTable_Trainer[transitionType][1]; +} + +u8 sub_8080060(void) +{ + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); + + if (enemyLevel < playerLevel) + return 4; + else + return 3; +} + +static u32 TrainerBattleLoadArg32(const u8 *ptr) +{ + return T1_READ_32(ptr); +} + +static u16 TrainerBattleLoadArg16(const u8 *ptr) +{ + return T1_READ_16(ptr); +} + +static u8 TrainerBattleLoadArg8(const u8 *ptr) +{ + return T1_READ_8(ptr); +} + +static u16 GetTrainerAFlag(void) +{ + return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A; +} + +static bool32 IsPlayerDefeated(u32 battleOutcome) +{ + switch (battleOutcome) + { + case B_OUTCOME_LOST: + case B_OUTCOME_DREW: + return TRUE; + case B_OUTCOME_WON: + case B_OUTCOME_RAN: + case B_OUTCOME_PLAYER_TELEPORTED: + case B_OUTCOME_MON_FLED: + case B_OUTCOME_CAUGHT: + return FALSE; + default: + return FALSE; + } +} + +static void InitTrainerBattleVariables(void) +{ + sTrainerBattleMode = 0; + gTrainerBattleOpponent_A = 0; + sTrainerEventObjectLocalId = 0; + sTrainerAIntroSpeech = NULL; + sTrainerADefeatSpeech = NULL; + sTrainerVictorySpeech = NULL; + sTrainerCannotBattleSpeech = NULL; + sTrainerBattleEndScript = NULL; + sTrainerABattleScriptRetAddr = NULL; + gUnknown_20386CC = 0; +} + +static inline void SetU8(void *ptr, u8 value) +{ + *(u8 *)(ptr) = value; +} + +static inline void SetU16(void *ptr, u16 value) +{ + *(u16 *)(ptr) = value; +} + +static inline void SetU32(void *ptr, u32 value) +{ + *(u32 *)(ptr) = value; +} + +static inline void SetPtr(const void *ptr, const void *value) +{ + *(const void **)(ptr) = value; +} + +static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data) +{ + while (1) + { + switch (specs->ptrType) + { + case TRAINER_PARAM_LOAD_VAL_8BIT: + SetU8(specs->varPtr, TrainerBattleLoadArg8(data)); + data += 1; + break; + case TRAINER_PARAM_LOAD_VAL_16BIT: + SetU16(specs->varPtr, TrainerBattleLoadArg16(data)); + data += 2; + break; + case TRAINER_PARAM_LOAD_VAL_32BIT: + SetU32(specs->varPtr, TrainerBattleLoadArg32(data)); + data += 4; + break; + case TRAINER_PARAM_CLEAR_VAL_8BIT: + SetU8(specs->varPtr, 0); + break; + case TRAINER_PARAM_CLEAR_VAL_16BIT: + SetU16(specs->varPtr, 0); + break; + case TRAINER_PARAM_CLEAR_VAL_32BIT: + SetU32(specs->varPtr, 0); + break; + case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR: + SetPtr(specs->varPtr, data); + return; + } + ++specs; + } +} + +static void SetMapVarsToTrainer(void) +{ + if (sTrainerEventObjectLocalId != 0) + { + gSpecialVar_LastTalked = sTrainerEventObjectLocalId; + gSelectedEventObject = GetFieldObjectIdByLocalIdAndMap(sTrainerEventObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + } +} + +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) +{ + InitTrainerBattleVariables(); + sTrainerBattleMode = TrainerBattleLoadArg8(data); + switch (sTrainerBattleMode) + { + case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT: + TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data); + return EventScript_DoTrainerBattle; + case TRAINER_BATTLE_DOUBLE: + TrainerBattleLoadArgs(sDoubleBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoDoubleTrainerBattle; + case TRAINER_BATTLE_CONTINUE_SCRIPT: + case TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC: + TrainerBattleLoadArgs(sContinueScriptBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoNormalTrainerBattle; + case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE: + case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC: + TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoDoubleTrainerBattle; + case TRAINER_BATTLE_REMATCH_DOUBLE: + sub_811231C(); + TrainerBattleLoadArgs(sDoubleBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A); + return EventScript_TryDoDoubleRematchBattle; + case TRAINER_BATTLE_REMATCH: + sub_811231C(); + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A); + return EventScript_TryDoRematchBattle; + case TRAINER_BATTLE_TUTORIAL: + TrainerBattleLoadArgs(sTutorialBattleParams, data); + return EventScript_DoTrainerBattle; + default: + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoNormalTrainerBattle; + } +} + +void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript) +{ + gSelectedEventObject = trainerEventObjId; + gSpecialVar_LastTalked = gMapObjects[trainerEventObjId].localId; + BattleSetup_ConfigureTrainerBattle(trainerScript + 1); + ScriptContext1_SetupScript(gUnknown_81A4EB4); + ScriptContext2_Enable(); +} + +bool32 GetTrainerFlagFromScriptPointer(const u8 *data) +{ + u32 flag = TrainerBattleLoadArg16(data + 2); + + return FlagGet(FLAG_TRAINER_FLAG_START + flag); +} + +void SetUpTrainerMovement(void) +{ + struct MapObject *eventObject = &gMapObjects[gSelectedEventObject]; + + SetTrainerMovementType(eventObject, GetTrainerFacingDirectionMovementType(eventObject->facingDirection)); +} + +u8 ScrSpecial_GetTrainerBattleMode(void) +{ + return sTrainerBattleMode; +} + +u16 sub_80803D8(void) +{ + return gUnknown_20386CC; +} + +u16 ScrSpecial_HasTrainerBeenFought(void) +{ + return FlagGet(GetTrainerAFlag()); +} + +void SetBattledTrainerFlag(void) +{ + FlagSet(GetTrainerAFlag()); +} + +// not used +static void SetBattledTrainerFlag2(void) +{ + FlagSet(GetTrainerAFlag()); +} + +bool8 HasTrainerBeenFought(u16 trainerId) +{ + return FlagGet(FLAG_TRAINER_FLAG_START + trainerId); +} + +void SetTrainerFlag(u16 trainerId) +{ + FlagSet(FLAG_TRAINER_FLAG_START + trainerId); +} + +void ClearTrainerFlag(u16 trainerId) +{ + FlagClear(FLAG_TRAINER_FLAG_START + trainerId); +} + +void BattleSetup_StartTrainerBattle(void) +{ + gBattleTypeFlags = BATTLE_TYPE_TRAINER; + if (ScrSpecial_GetTrainerBattleMode() == TRAINER_BATTLE_TUTORIAL + && sub_80803D8() & 3) + gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE; + gMain.savedCallback = CB2_EndTrainerBattle; + DoTrainerBattle(); + ScriptContext1_Stop(); +} + +static void CB2_EndTrainerBattle(void) +{ + if (sTrainerBattleMode == TRAINER_BATTLE_TUTORIAL) + { + if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + gSpecialVar_Result = 1; + if (gUnknown_20386CC & 1) + { + sp000_heal_pokemon(); + } + else + { + SetMainCallback2(CB2_WhiteOut); + return; + } + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + SetBattledTrainerFlag(); + sub_81139BC(); + } + else + { + gSpecialVar_Result = 0; + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + SetBattledTrainerFlag(); + sub_81139BC(); + } + + } + else + { + if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + SetBattledTrainerFlag(); + sub_81139BC(); + } + } +} + +static void CB2_EndRematchBattle(void) +{ + if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + SetBattledTrainerFlag(); + sub_810CDE8(); + sub_81138F8(); + } +} + +void ScrSpecial_StartTrainerEyeRematch(void) +{ + gBattleTypeFlags = BATTLE_TYPE_TRAINER; + gMain.savedCallback = CB2_EndRematchBattle; + DoTrainerBattle(); + ScriptContext1_Stop(); +} + +void ScrSpecial_ShowTrainerIntroSpeech(void) +{ + ShowFieldMessage(GetIntroSpeechOfApproachingTrainer()); +} + +const u8 *BattleSetup_GetScriptAddrAfterBattle(void) +{ + if (sTrainerBattleEndScript != NULL) + return sTrainerBattleEndScript; + else + return EventScript_1C555B; +} + +const u8 *BattleSetup_GetTrainerPostBattleScript(void) +{ + if (sTrainerABattleScriptRetAddr != NULL) + return sTrainerABattleScriptRetAddr; + else + return EventScript_1C555B; +} + +void ScrSpecial_ShowTrainerNonBattlingSpeech(void) +{ + ShowFieldMessage(GetTrainerCantBattleSpeech()); +} + +void PlayTrainerEncounterMusic(void) +{ + u16 music; + + if (gUnknown_203ADFA != 2 + && gUnknown_203ADFA != 3 + && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC + && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC) + { + switch (GetTrainerEncounterMusicId(gTrainerBattleOpponent_A)) + { + case TRAINER_ENCOUNTER_MUSIC_FEMALE: + case TRAINER_ENCOUNTER_MUSIC_GIRL: + case TRAINER_ENCOUNTER_MUSIC_TWINS: + music = MUS_SHOUJO; + break; + case TRAINER_ENCOUNTER_MUSIC_MALE: + case TRAINER_ENCOUNTER_MUSIC_INTENSE: + case TRAINER_ENCOUNTER_MUSIC_COOL: + case TRAINER_ENCOUNTER_MUSIC_SWIMMER: + case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR: + case TRAINER_ENCOUNTER_MUSIC_HIKER: + case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER: + case TRAINER_ENCOUNTER_MUSIC_RICH: + music = MUS_SHOUNEN; + break; + default: + music = MUS_ROCKET; + break; + } + PlayNewMapMusic(music); + } +} + +static const u8 *ReturnEmptyStringIfNull(const u8 *string) +{ + if (string == NULL) + return gString_Dummy; + else + return string; +} + +static const u8 *GetIntroSpeechOfApproachingTrainer(void) +{ + return ReturnEmptyStringIfNull(sTrainerAIntroSpeech); +} + +const u8 *GetTrainerALoseText(void) +{ + const u8 *string = sTrainerADefeatSpeech; + + StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(string)); + return gStringVar4; +} + +const u8 *GetTrainerWonSpeech(void) +{ + StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerVictorySpeech)); + return gStringVar4; +} + +static const u8 *GetTrainerCantBattleSpeech(void) +{ + return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech); +} diff --git a/src/battle_transition.c b/src/battle_transition.c index 19d76fed1..1dbfe3aed 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -27,7 +27,7 @@ struct TransitionData u16 winOut; u16 win0H; u16 win0V; - u16 unused_A; + u16 win1H; // not used u16 win1V; u16 bldCnt; u16 bldAlpha; @@ -3175,7 +3175,7 @@ static bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task) DmaStop(0); SetVBlankCallback(NULL); SetHBlankCallback(NULL); - sTransitionStructPtr->win0H = 240; + sTransitionStructPtr->win0H = WIN_RANGE(0, 240); sTransitionStructPtr->bldY = 0; sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; sTransitionStructPtr->winIn = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WININ_WIN0_CLR; diff --git a/src/battle_util2.c b/src/battle_util2.c index d940d8508..a3a748767 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -1,6 +1,7 @@ #include "global.h" #include "bg.h" #include "battle.h" +#include "battle_anim.h" #include "pokemon.h" #include "malloc.h" #include "trainer_tower.h" diff --git a/src/berry.c b/src/berry.c index 91d83f40c..d349109d2 100644 --- a/src/berry.c +++ b/src/berry.c @@ -134,7 +134,7 @@ bool32 IsEnigmaBerryValid(void) return TRUE; } -const struct Berry * sub_809C8A0(u8 berryIdx) +const struct Berry * GetBerryInfo(u8 berryIdx) { if (berryIdx == ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return (struct Berry *)&gSaveBlock1Ptr->enigmaBerry.berry; @@ -163,7 +163,7 @@ u16 BerryTypeToItemId(u16 berryType) void GetBerryNameByBerryType(u8 berryType, u8 * dest) { - const struct Berry * berry = sub_809C8A0(berryType); + const struct Berry * berry = GetBerryInfo(berryType); memcpy(dest, berry->name, 6); dest[6] = EOS; } diff --git a/src/dark.c b/src/dark.c index cb34b991e..b6d13afe3 100644 --- a/src/dark.c +++ b/src/dark.c @@ -613,7 +613,7 @@ static void sub_80B82C0(u8 taskId) { case 0: task->data[5] += 8; - if (task->data[5] >= task->data[7]) + if (task->data[5] >= task->data[7]) task->data[5] = task->data[7]; sub_80B843C(task); if (task->data[5] == task->data[7]) diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h new file mode 100644 index 000000000..c2002bed7 --- /dev/null +++ b/src/data/text/abilities.h @@ -0,0 +1,242 @@ +static const u8 sNoneDescription[] = _("No special ability."); +static const u8 sStenchDescription[] = _("Helps repel wild POKéMON."); +static const u8 sDrizzleDescription[] = _("Summons rain in battle."); +static const u8 sSpeedBoostDescription[] = _("Gradually boosts SPEED."); +static const u8 sBattleArmorDescription[] = _("Blocks critical hits."); +static const u8 sSturdyDescription[] = _("Negates 1-hit KO attacks."); +static const u8 sDampDescription[] = _("Prevents self-destruction."); +static const u8 sLimberDescription[] = _("Prevents paralysis."); +static const u8 sSandVeilDescription[] = _("Ups evasion in a sandstorm."); +static const u8 sStaticDescription[] = _("Paralyzes on contact."); +static const u8 sVoltAbsorbDescription[] = _("Turns electricity into HP."); +static const u8 sWaterAbsorbDescription[] = _("Changes water into HP."); +static const u8 sObliviousDescription[] = _("Prevents attraction."); +static const u8 sCloudNineDescription[] = _("Negates weather effects."); +static const u8 sCompoundEyesDescription[] = _("Raises accuracy."); +static const u8 sInsomniaDescription[] = _("Prevents sleep."); +static const u8 sColorChangeDescription[] = _("Changes type to foe's move."); +static const u8 sImmunityDescription[] = _("Prevents poisoning."); +static const u8 sFlashFireDescription[] = _("Powers up if hit by fire."); +static const u8 sShieldDustDescription[] = _("Prevents added effects."); +static const u8 sOwnTempoDescription[] = _("Prevents confusion."); +static const u8 sSuctionCupsDescription[] = _("Firmly anchors the body."); +static const u8 sIntimidateDescription[] = _("Lowers the foe's ATTACK."); +static const u8 sShadowTagDescription[] = _("Prevents the foe's escape."); +static const u8 sRoughSkinDescription[] = _("Hurts to touch."); +static const u8 sWonderGuardDescription[] = _("“Super effective” hits."); +static const u8 sLevitateDescription[] = _("Not hit by GROUND attacks."); +static const u8 sEffectSporeDescription[] = _("Leaves spores on contact."); +static const u8 sSynchronizeDescription[] = _("Passes on status problems."); +static const u8 sClearBodyDescription[] = _("Prevents ability reduction."); +static const u8 sNaturalCureDescription[] = _("Heals upon switching out."); +static const u8 sLightningRodDescription[] = _("Draws electrical moves."); +static const u8 sSereneGraceDescription[] = _("Promotes added effects."); +static const u8 sSwiftSwimDescription[] = _("Raises SPEED in rain."); +static const u8 sChlorophyllDescription[] = _("Raises SPEED in sunshine."); +static const u8 sIlluminateDescription[] = _("Encounter rate increases."); +static const u8 sTraceDescription[] = _("Copies special ability."); +static const u8 sHugePowerDescription[] = _("Raises ATTACK."); +static const u8 sPoisonPointDescription[] = _("Poisons foe on contact."); +static const u8 sInnerFocusDescription[] = _("Prevents flinching."); +static const u8 sMagmaArmorDescription[] = _("Prevents freezing."); +static const u8 sWaterVeilDescription[] = _("Prevents burns."); +static const u8 sMagnetPullDescription[] = _("Traps STEEL-type POKéMON."); +static const u8 sSoundproofDescription[] = _("Avoids sound-based moves."); +static const u8 sRainDishDescription[] = _("Slight HP recovery in rain."); +static const u8 sSandStreamDescription[] = _("Summons a sandstorm."); +static const u8 sPressureDescription[] = _("Raises foe's PP usage."); +static const u8 sThickFatDescription[] = _("Heat-and-cold protection."); +static const u8 sEarlyBirdDescription[] = _("Awakens quickly from sleep."); +static const u8 sFlameBodyDescription[] = _("Burns the foe on contact."); +static const u8 sRunAwayDescription[] = _("Makes escaping easier."); +static const u8 sKeenEyeDescription[] = _("Prevents loss of accuracy."); +static const u8 sHyperCutterDescription[] = _("Prevents ATTACK reduction."); +static const u8 sPickupDescription[] = _("May pick up items."); +static const u8 sTruantDescription[] = _("Moves only every two turns."); +static const u8 sHustleDescription[] = _("Trades accuracy for power."); +static const u8 sCuteCharmDescription[] = _("Infatuates on contact."); +static const u8 sPlusDescription[] = _("Powers up with MINUS."); +static const u8 sMinusDescription[] = _("Powers up with PLUS."); +static const u8 sForecastDescription[] = _("Changes with the weather."); +static const u8 sStickyHoldDescription[] = _("Prevents item theft."); +static const u8 sShedSkinDescription[] = _("Heals the body by shedding."); +static const u8 sGutsDescription[] = _("Ups ATTACK if suffering."); +static const u8 sMarvelScaleDescription[] = _("Ups DEFENSE if suffering."); +static const u8 sLiquidOozeDescription[] = _("Draining causes injury."); +static const u8 sOvergrowDescription[] = _("Ups GRASS moves in a pinch."); +static const u8 sBlazeDescription[] = _("Ups FIRE moves in a pinch."); +static const u8 sTorrentDescription[] = _("Ups WATER moves in a pinch."); +static const u8 sSwarmDescription[] = _("Ups BUG moves in a pinch."); +static const u8 sRockHeadDescription[] = _("Prevents recoil damage."); +static const u8 sDroughtDescription[] = _("Summons sunlight in battle."); +static const u8 sArenaTrapDescription[] = _("Prevents fleeing."); +static const u8 sVitalSpiritDescription[] = _("Prevents sleep."); +static const u8 sWhiteSmokeDescription[] = _("Prevents ability reduction."); +static const u8 sPurePowerDescription[] = _("Raises ATTACK."); +static const u8 sShellArmorDescription[] = _("Blocks critical hits."); +static const u8 sCacophonyDescription[] = _("Avoids sound-based moves."); +static const u8 sAirLockDescription[] = _("Negates weather effects."); + +const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] = +{ + [ABILITY_NONE] = sNoneDescription, + [ABILITY_STENCH] = sStenchDescription, + [ABILITY_DRIZZLE] = sDrizzleDescription, + [ABILITY_SPEED_BOOST] = sSpeedBoostDescription, + [ABILITY_BATTLE_ARMOR] = sBattleArmorDescription, + [ABILITY_STURDY] = sSturdyDescription, + [ABILITY_DAMP] = sDampDescription, + [ABILITY_LIMBER] = sLimberDescription, + [ABILITY_SAND_VEIL] = sSandVeilDescription, + [ABILITY_STATIC] = sStaticDescription, + [ABILITY_VOLT_ABSORB] = sVoltAbsorbDescription, + [ABILITY_WATER_ABSORB] = sWaterAbsorbDescription, + [ABILITY_OBLIVIOUS] = sObliviousDescription, + [ABILITY_CLOUD_NINE] = sCloudNineDescription, + [ABILITY_COMPOUND_EYES] = sCompoundEyesDescription, + [ABILITY_INSOMNIA] = sInsomniaDescription, + [ABILITY_COLOR_CHANGE] = sColorChangeDescription, + [ABILITY_IMMUNITY] = sImmunityDescription, + [ABILITY_FLASH_FIRE] = sFlashFireDescription, + [ABILITY_SHIELD_DUST] = sShieldDustDescription, + [ABILITY_OWN_TEMPO] = sOwnTempoDescription, + [ABILITY_SUCTION_CUPS] = sSuctionCupsDescription, + [ABILITY_INTIMIDATE] = sIntimidateDescription, + [ABILITY_SHADOW_TAG] = sShadowTagDescription, + [ABILITY_ROUGH_SKIN] = sRoughSkinDescription, + [ABILITY_WONDER_GUARD] = sWonderGuardDescription, + [ABILITY_LEVITATE] = sLevitateDescription, + [ABILITY_EFFECT_SPORE] = sEffectSporeDescription, + [ABILITY_SYNCHRONIZE] = sSynchronizeDescription, + [ABILITY_CLEAR_BODY] = sClearBodyDescription, + [ABILITY_NATURAL_CURE] = sNaturalCureDescription, + [ABILITY_LIGHTNING_ROD] = sLightningRodDescription, + [ABILITY_SERENE_GRACE] = sSereneGraceDescription, + [ABILITY_SWIFT_SWIM] = sSwiftSwimDescription, + [ABILITY_CHLOROPHYLL] = sChlorophyllDescription, + [ABILITY_ILLUMINATE] = sIlluminateDescription, + [ABILITY_TRACE] = sTraceDescription, + [ABILITY_HUGE_POWER] = sHugePowerDescription, + [ABILITY_POISON_POINT] = sPoisonPointDescription, + [ABILITY_INNER_FOCUS] = sInnerFocusDescription, + [ABILITY_MAGMA_ARMOR] = sMagmaArmorDescription, + [ABILITY_WATER_VEIL] = sWaterVeilDescription, + [ABILITY_MAGNET_PULL] = sMagnetPullDescription, + [ABILITY_SOUNDPROOF] = sSoundproofDescription, + [ABILITY_RAIN_DISH] = sRainDishDescription, + [ABILITY_SAND_STREAM] = sSandStreamDescription, + [ABILITY_PRESSURE] = sPressureDescription, + [ABILITY_THICK_FAT] = sThickFatDescription, + [ABILITY_EARLY_BIRD] = sEarlyBirdDescription, + [ABILITY_FLAME_BODY] = sFlameBodyDescription, + [ABILITY_RUN_AWAY] = sRunAwayDescription, + [ABILITY_KEEN_EYE] = sKeenEyeDescription, + [ABILITY_HYPER_CUTTER] = sHyperCutterDescription, + [ABILITY_PICKUP] = sPickupDescription, + [ABILITY_TRUANT] = sTruantDescription, + [ABILITY_HUSTLE] = sHustleDescription, + [ABILITY_CUTE_CHARM] = sCuteCharmDescription, + [ABILITY_PLUS] = sPlusDescription, + [ABILITY_MINUS] = sMinusDescription, + [ABILITY_FORECAST] = sForecastDescription, + [ABILITY_STICKY_HOLD] = sStickyHoldDescription, + [ABILITY_SHED_SKIN] = sShedSkinDescription, + [ABILITY_GUTS] = sGutsDescription, + [ABILITY_MARVEL_SCALE] = sMarvelScaleDescription, + [ABILITY_LIQUID_OOZE] = sLiquidOozeDescription, + [ABILITY_OVERGROW] = sOvergrowDescription, + [ABILITY_BLAZE] = sBlazeDescription, + [ABILITY_TORRENT] = sTorrentDescription, + [ABILITY_SWARM] = sSwarmDescription, + [ABILITY_ROCK_HEAD] = sRockHeadDescription, + [ABILITY_DROUGHT] = sDroughtDescription, + [ABILITY_ARENA_TRAP] = sArenaTrapDescription, + [ABILITY_VITAL_SPIRIT] = sVitalSpiritDescription, + [ABILITY_WHITE_SMOKE] = sWhiteSmokeDescription, + [ABILITY_PURE_POWER] = sPurePowerDescription, + [ABILITY_SHELL_ARMOR] = sShellArmorDescription, + [ABILITY_CACOPHONY] = sCacophonyDescription, + [ABILITY_AIR_LOCK] = sAirLockDescription, +}; + +const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = +{ + [ABILITY_NONE] = _("-------"), + [ABILITY_STENCH] = _("STENCH"), + [ABILITY_DRIZZLE] = _("DRIZZLE"), + [ABILITY_SPEED_BOOST] = _("SPEED BOOST"), + [ABILITY_BATTLE_ARMOR] = _("BATTLE ARMOR"), + [ABILITY_STURDY] = _("STURDY"), + [ABILITY_DAMP] = _("DAMP"), + [ABILITY_LIMBER] = _("LIMBER"), + [ABILITY_SAND_VEIL] = _("SAND VEIL"), + [ABILITY_STATIC] = _("STATIC"), + [ABILITY_VOLT_ABSORB] = _("VOLT ABSORB"), + [ABILITY_WATER_ABSORB] = _("WATER ABSORB"), + [ABILITY_OBLIVIOUS] = _("OBLIVIOUS"), + [ABILITY_CLOUD_NINE] = _("CLOUD NINE"), + [ABILITY_COMPOUND_EYES] = _("COMPOUNDEYES"), + [ABILITY_INSOMNIA] = _("INSOMNIA"), + [ABILITY_COLOR_CHANGE] = _("COLOR CHANGE"), + [ABILITY_IMMUNITY] = _("IMMUNITY"), + [ABILITY_FLASH_FIRE] = _("FLASH FIRE"), + [ABILITY_SHIELD_DUST] = _("SHIELD DUST"), + [ABILITY_OWN_TEMPO] = _("OWN TEMPO"), + [ABILITY_SUCTION_CUPS] = _("SUCTION CUPS"), + [ABILITY_INTIMIDATE] = _("INTIMIDATE"), + [ABILITY_SHADOW_TAG] = _("SHADOW TAG"), + [ABILITY_ROUGH_SKIN] = _("ROUGH SKIN"), + [ABILITY_WONDER_GUARD] = _("WONDER GUARD"), + [ABILITY_LEVITATE] = _("LEVITATE"), + [ABILITY_EFFECT_SPORE] = _("EFFECT SPORE"), + [ABILITY_SYNCHRONIZE] = _("SYNCHRONIZE"), + [ABILITY_CLEAR_BODY] = _("CLEAR BODY"), + [ABILITY_NATURAL_CURE] = _("NATURAL CURE"), + [ABILITY_LIGHTNING_ROD] = _("LIGHTNINGROD"), + [ABILITY_SERENE_GRACE] = _("SERENE GRACE"), + [ABILITY_SWIFT_SWIM] = _("SWIFT SWIM"), + [ABILITY_CHLOROPHYLL] = _("CHLOROPHYLL"), + [ABILITY_ILLUMINATE] = _("ILLUMINATE"), + [ABILITY_TRACE] = _("TRACE"), + [ABILITY_HUGE_POWER] = _("HUGE POWER"), + [ABILITY_POISON_POINT] = _("POISON POINT"), + [ABILITY_INNER_FOCUS] = _("INNER FOCUS"), + [ABILITY_MAGMA_ARMOR] = _("MAGMA ARMOR"), + [ABILITY_WATER_VEIL] = _("WATER VEIL"), + [ABILITY_MAGNET_PULL] = _("MAGNET PULL"), + [ABILITY_SOUNDPROOF] = _("SOUNDPROOF"), + [ABILITY_RAIN_DISH] = _("RAIN DISH"), + [ABILITY_SAND_STREAM] = _("SAND STREAM"), + [ABILITY_PRESSURE] = _("PRESSURE"), + [ABILITY_THICK_FAT] = _("THICK FAT"), + [ABILITY_EARLY_BIRD] = _("EARLY BIRD"), + [ABILITY_FLAME_BODY] = _("FLAME BODY"), + [ABILITY_RUN_AWAY] = _("RUN AWAY"), + [ABILITY_KEEN_EYE] = _("KEEN EYE"), + [ABILITY_HYPER_CUTTER] = _("HYPER CUTTER"), + [ABILITY_PICKUP] = _("PICKUP"), + [ABILITY_TRUANT] = _("TRUANT"), + [ABILITY_HUSTLE] = _("HUSTLE"), + [ABILITY_CUTE_CHARM] = _("CUTE CHARM"), + [ABILITY_PLUS] = _("PLUS"), + [ABILITY_MINUS] = _("MINUS"), + [ABILITY_FORECAST] = _("FORECAST"), + [ABILITY_STICKY_HOLD] = _("STICKY HOLD"), + [ABILITY_SHED_SKIN] = _("SHED SKIN"), + [ABILITY_GUTS] = _("GUTS"), + [ABILITY_MARVEL_SCALE] = _("MARVEL SCALE"), + [ABILITY_LIQUID_OOZE] = _("LIQUID OOZE"), + [ABILITY_OVERGROW] = _("OVERGROW"), + [ABILITY_BLAZE] = _("BLAZE"), + [ABILITY_TORRENT] = _("TORRENT"), + [ABILITY_SWARM] = _("SWARM"), + [ABILITY_ROCK_HEAD] = _("ROCK HEAD"), + [ABILITY_DROUGHT] = _("DROUGHT"), + [ABILITY_ARENA_TRAP] = _("ARENA TRAP"), + [ABILITY_VITAL_SPIRIT] = _("VITAL SPIRIT"), + [ABILITY_WHITE_SMOKE] = _("WHITE SMOKE"), + [ABILITY_PURE_POWER] = _("PURE POWER"), + [ABILITY_SHELL_ARMOR] = _("SHELL ARMOR"), + [ABILITY_CACOPHONY] = _("CACOPHONY"), + [ABILITY_AIR_LOCK] = _("AIR LOCK"), +}; diff --git a/src/fame_checker.c b/src/fame_checker.c index de555b682..8c8f5b4ea 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -27,6 +27,7 @@ #include "text_window.h" #include "fame_checker.h" #include "strings.h" +#include "constants/trainers.h" #define SPRITETAG_SELECTOR_CURSOR 1000 #define SPRITETAG_QUESTION_MARK 1001 @@ -867,7 +868,7 @@ static void FC_DestroyWindow(u8 windowId) static u8 AdjustGiovanniIndexIfBeatenInGym(u8 a0) { - if (HasTrainerAlreadyBeenFought(0x15e) == TRUE) + if (HasTrainerBeenFought(TRAINER_LEADER_GIOVANNI) == TRUE) { if (a0 == 9) return FAMECHECKER_GIOVANNI; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index de9f09ff0..58caad509 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -323,14 +323,14 @@ static void sub_807DFBC(u8 taskId) { case 0: // Never reached sub_807DCB0(0); - player_bitmagic(); + FreezeEventObjects(); PlayerGetDestCoords(x, y); FieldSetDoorOpened(*x, *y); task->data[0] = 1; break; case 5: sub_807DCB0(0); - player_bitmagic(); + FreezeEventObjects(); sub_807F114(); sub_807DBAC(); task->data[0] = 6; @@ -408,7 +408,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId) { case 0: sub_807DCB0(0); - player_bitmagic(); + FreezeEventObjects(); PlayerGetDestCoords(x, y); task->data[0] = 1; break; @@ -439,7 +439,7 @@ static void task_map_chg_seq_0807E2CC(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); gTasks[taskId].data[0]++; break; @@ -459,7 +459,7 @@ static void sub_807E31C(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); sub_805DC04(); gTasks[taskId].data[0]++; @@ -689,7 +689,7 @@ static void sub_807E718(u8 taskId) switch (task->data[0]) { case 0: - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); task->data[0]++; break; @@ -711,7 +711,7 @@ static void sub_807E784(u8 taskId) switch (task->data[0]) { case 0: - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); PlaySE(SE_TK_WARPIN); sub_805DAB0(); @@ -744,7 +744,7 @@ static void sub_807E80C(u8 taskId) switch (task->data[0]) { case 0: - player_bitmagic(); + FreezeEventObjects(); PlayerGetDestCoords(xp, yp); PlaySE(GetDoorSoundEffect(*xp, *yp - 1)); task->data[1] = FieldAnimateDoorOpen(*xp, *yp - 1); @@ -798,7 +798,7 @@ static void sub_807E980(u8 taskId) { case 0: ScriptContext2_Enable(); - player_bitmagic(); + FreezeEventObjects(); CameraObjectReset2(); data[0]++; break; diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 56a607fff..90abda81f 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -16,6 +16,7 @@ #include "field_map_obj.h" #include "constants/songs.h" #include "constants/map_objects.h" +#include "constants/map_types.h" static void task08_080C9820(u8 taskId); static void sub_80C98FC(u8 taskId); diff --git a/src/ground.c b/src/ground.c index 4ae4d8370..97f42e5c5 100644 --- a/src/ground.c +++ b/src/ground.c @@ -416,8 +416,7 @@ static void sub_80B91B0(u8 taskId) task->data[12] = gBattle_BG1_X; else task->data[12] = gBattle_BG2_X; - - var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); + var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); task->data[14] = var0 - 32; task->data[15] = var0 + 32; ++task->data[0]; diff --git a/src/item.c b/src/item.c index e76cb10d3..677c13ad7 100644 --- a/src/item.c +++ b/src/item.c @@ -73,7 +73,7 @@ void CopyItemName(u16 itemId, u8 * dest) { if (itemId == ITEM_ENIGMA_BERRY) { - StringCopy(dest, sub_809C8A0(43)->name); + StringCopy(dest, GetBerryInfo(ITEM_TO_BERRY(ITEM_ENIGMA_BERRY))->name); StringAppend(dest, gUnknown_84162BD); } else diff --git a/src/item_use.c b/src/item_use.c index 679a3b8cc..873ce4ab4 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -42,6 +42,7 @@ #include "constants/maps.h" #include "constants/moves.h" #include "constants/songs.h" +#include "constants/map_types.h" EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL; @@ -162,7 +163,7 @@ void sub_80A1184(void) bool8 sub_80A1194(void) { - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); sub_807DC00(); CreateTask(sub_80A11C0, 10); @@ -259,7 +260,7 @@ bool8 ItemUseCheckFunc_Rod(void) { if (MetatileBehavior_IsSurfable(behavior) && !MapGridIsImpassableAt(x, y)) return TRUE; - if (MetatileBehavior_ReturnFalse_6(behavior) == TRUE) + if (MetatileBehavior_IsBridge(behavior) == TRUE) return TRUE; } return FALSE; diff --git a/src/link.c b/src/link.c index c8c7932df..ac9cf9cfe 100644 --- a/src/link.c +++ b/src/link.c @@ -1025,7 +1025,7 @@ bool8 IsLinkTaskFinished(void) { if (gWirelessCommType == 1) { - return IsRfuTaskFinished(); + return IsLinkRfuTaskFinished(); } return gLinkCallback == NULL; } diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c index f89819647..e28872fd4 100644 --- a/src/map_obj_lock.c +++ b/src/map_obj_lock.c @@ -38,7 +38,7 @@ bool8 sub_8069590(void) void ScriptFreezeMapObjects(void) { - player_bitmagic(); + FreezeEventObjects(); CreateTask(sub_8069570, 80); } diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 62a102a09..bca99d38f 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -69,7 +69,7 @@ bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsMB21OrWaterfallBottom(u8 metatileBehavior) +bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior) { if(metatileBehavior == MB_21 || metatileBehavior == MB_WATERFALL_BOTTOM) return TRUE; @@ -428,11 +428,11 @@ bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_ReturnFalse_3(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_6(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_7(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsBridge(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior) { @@ -450,7 +450,7 @@ bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior) +bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior) { if(metatileBehavior == MB_0B) return TRUE; @@ -458,7 +458,7 @@ bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsMB0C(u8 metatileBehavior) +bool8 MetatileBehavior_IsMountain(u8 metatileBehavior) { if(metatileBehavior == MB_0C) return TRUE; diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index f76d70c04..13a6d37e2 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -1374,7 +1374,7 @@ void task00_mystery_gift(u8 taskId) } break; case 13: - if (IsRfuTaskFinished()) + if (IsLinkRfuTaskFinished()) { DestroyWirelessStatusIndicatorSprite(); data->state = 14; @@ -1650,7 +1650,7 @@ void task00_mystery_gift(u8 taskId) data->state = 34; break; case 34: - if (IsRfuTaskFinished()) + if (IsLinkRfuTaskFinished()) { DestroyWirelessStatusIndicatorSprite(); data->state = 35; diff --git a/src/pokemon.c b/src/pokemon.c index f9fe72007..17f28c7a6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8,7 +8,7 @@ #include "data.h" #include "string_util.h" #include "battle.h" -#include "battle_main.h" +#include "battle_anim.h" #include "item.h" #include "event_data.h" #include "util.h" @@ -1467,7 +1467,7 @@ const struct SpriteTemplate gUnknown_825DEF0[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gUnknown_8234698, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1476,16 +1476,16 @@ const struct SpriteTemplate gUnknown_825DEF0[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F010, + .oam = &gOamData_824F010, .anims = NULL, .images = gUnknown_82346B8, .affineAnims = gSpriteAffineAnimTable_8234944, - .callback = oac_poke_opponent, + .callback = SpriteCB_WildMon, }, { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gUnknown_82346D8, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1494,11 +1494,11 @@ const struct SpriteTemplate gUnknown_825DEF0[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F010, + .oam = &gOamData_824F010, .anims = NULL, .images = gUnknown_82346F8, .affineAnims = gSpriteAffineAnimTable_8234944, - .callback = oac_poke_opponent, + .callback = SpriteCB_WildMon, }, }; @@ -1507,7 +1507,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_Red, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1516,7 +1516,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_Leaf, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1525,7 +1525,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_RSBrendan, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1534,7 +1534,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_RSMay, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1543,7 +1543,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_PokeDude, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -1552,7 +1552,7 @@ const struct SpriteTemplate gUnknown_825DF50[] = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0, - .oam = &gUnknown_824F018, + .oam = &gOamData_824F018, .anims = NULL, .images = gTrainerBackPicTable_OldMan, .affineAnims = gSpriteAffineAnimTable_82348C8, @@ -4652,8 +4652,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo sp18 = itemEffect[r10]; r10++; break; - case 7:\ - + case 7: if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == FALSE && sp18 == 0) @@ -5406,7 +5405,7 @@ u16 GetMonEVCount(struct Pokemon *mon) return count; } -void sub_8043A68(void) +void RandomlyGivePartyPokerus(struct Pokemon *party) { u8 foo[4]; // huh? } @@ -5472,7 +5471,7 @@ static void sub_8043B38(void) u8 foo[4]; // huh? } -void sub_8043B40(void) +void PartySpreadPokerus(struct Pokemon *party) { u8 foo[4]; // huh? } diff --git a/src/psychic.c b/src/psychic.c index 662320a2b..a8108c55a 100644 --- a/src/psychic.c +++ b/src/psychic.c @@ -47,7 +47,7 @@ const struct SpriteTemplate gUnknown_83E6DF8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6DF4, - .callback = sub_8075D9C, + .callback = AnimSpriteOnMonPos, }; const struct SpriteTemplate gUnknown_83E6E10 = @@ -376,7 +376,7 @@ const struct SpriteTemplate gUnknown_83E7148 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7144, - .callback = sub_8075D9C, + .callback = AnimSpriteOnMonPos, }; static const union AffineAnimCmd gUnknown_83E7160[] = diff --git a/src/quest_log.c b/src/quest_log.c index 14485ca46..896a44d17 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1514,7 +1514,7 @@ static void sub_8111F8C(u8 taskId) if (ScriptContext2_IsEnabled() != TRUE) { - player_bitmagic(); + FreezeEventObjects(); sub_805C270(); sub_805C780(); ScriptContext2_Enable(); @@ -1537,7 +1537,7 @@ static void sub_8111FCC(u8 taskId) task->data[0] = 0; task->data[1] = 0; task->func = sub_8112044; - player_bitmagic(); + FreezeEventObjects(); ScriptContext2_Enable(); } } @@ -4911,7 +4911,6 @@ static const u16 gUnknown_8456C50[] = { 0x08a1 }; -#ifdef NONMATCHING void sub_8115748(u16 a0) { s32 i; @@ -4919,60 +4918,22 @@ void sub_8115748(u16 a0) return; for (i = 0; i < 17; i++) { - if (a0 != gUnknown_8456C50[i]) - continue; - if (!FlagGet(a0)) - gUnknown_203B049 = TRUE; - else - gUnknown_203B049 = FALSE; - break; + if (a0 == gUnknown_8456C50[i]) + { + if (!FlagGet(a0)) + { + gUnknown_203B049 = TRUE; + break; + } + else + { + gUnknown_203B049 += 0; + gUnknown_203B049 = FALSE; + break; + } + } } } -#else -NAKED -void sub_8115748(u16 a0) -{ - asm_unified("\tpush {r4,lr}\n" - "\tlsls r0, 16\n" - "\tlsrs r2, r0, 16\n" - "\tldr r0, =gUnknown_203ADFA\n" - "\tldrb r0, [r0]\n" - "\tsubs r0, 0x2\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbls _08115792\n" - "\tmovs r1, 0\n" - "\tldr r4, =gUnknown_203B049\n" - "\tldr r0, =gUnknown_8456C50\n" - "\tb _08115778\n" - "\t.pool\n" - "_08115770:\n" - "\tmovs r0, 0\n" - "\tb _08115790\n" - "_08115774:\n" - "\tadds r0, 0x2\n" - "\tadds r1, 0x1\n" - "_08115778:\n" - "\tcmp r1, 0x10\n" - "\tbgt _08115792\n" - "\tldrh r3, [r0]\n" - "\tcmp r2, r3\n" - "\tbne _08115774\n" - "\tadds r0, r2, 0\n" - "\tbl FlagGet\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _08115770\n" - "\tmovs r0, 0x1\n" - "_08115790:\n" - "\tstrb r0, [r4]\n" - "_08115792:\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif // NONMATCHING void sub_8115798(void) { diff --git a/src/quest_log_8150454.c b/src/quest_log_8150454.c index 3d61dee72..fbd3b4487 100644 --- a/src/quest_log_8150454.c +++ b/src/quest_log_8150454.c @@ -88,7 +88,7 @@ void sub_8150530(void) else { sub_81507BC(mapObject, sub_805C808(4)); - StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18)); + StartSpriteAnim(sprite, sub_80634F0(mapObject->facingDirection)); } } @@ -103,7 +103,7 @@ void sub_81505C4(u8 taskId) FieldObjectClearAnimIfSpecialAnimActive(mapObject); mapObject->mapobj_bit_11 = TRUE; sub_81507BC(mapObject, sub_805C808(4)); - StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18)); + StartSpriteAnim(sprite, sub_80634F0(mapObject->facingDirection)); gTasks[taskId].data[0]++; gTasks[taskId].data[1] = 0; break; diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index 2687e4ea5..efe866dea 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -2,6 +2,7 @@ #include "constants/species.h" #include "malloc.h" #include "battle.h" +#include "battle_anim.h" #include "link.h" #include "overworld.h" #include "quest_log.h" @@ -22,11 +23,11 @@ struct QuestLogStruct_WildBattleRecord u8 v4; }; -void sub_812C334(s32 *, s32 *); +static void sub_812C334(s32 *, s32 *); void sub_812BFDC(void) { - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_OLDMAN_TUTORIAL | BATTLE_TYPE_POKEDUDE)) && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_POKEDUDE)) && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) { struct QuestLogStruct_TrainerBattleRecord * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_TrainerBattleRecord)); struct QuestLogStruct_WildBattleRecord * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_WildBattleRecord)); @@ -38,18 +39,18 @@ void sub_812BFDC(void) { switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) { - case 0x54: - questLogMessageType = 30; - break; - case 0x5a: - questLogMessageType = 33; - break; - case 0x57: - questLogMessageType = 32; - break; - default: - questLogMessageType = 34; - break; + case 0x54: + questLogMessageType = 30; + break; + case 0x5a: + questLogMessageType = 33; + break; + case 0x57: + questLogMessageType = 32; + break; + default: + questLogMessageType = 34; + break; } questLogTrainerBattleRecord->v0 = gTrainerBattleOpponent_A; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -141,7 +142,7 @@ void sub_812C224(void) } for (r3 = 0; r3 < 7; r3++) { - r5->v1[0][r3] = gLinkPlayers[gBattleStruct->field_B5 ^ 1].name[r3]; + r5->v1[0][r3] = gLinkPlayers[gBattleStruct->multiplayerId ^ 1].name[r3]; } } sub_8113550(r8, (const u16 *)r5); @@ -149,16 +150,16 @@ void sub_812C224(void) } } -void sub_812C334(s32 * a0, s32 * a1) +static void sub_812C334(s32 * a0, s32 * a1) { s32 r5; s32 _optimized_out = 0; - u8 r2 = gLinkPlayers[gBattleStruct->field_B5].id ^ 2; + u8 r2 = gLinkPlayers[gBattleStruct->multiplayerId].id ^ 2; for (r5 = 0; r5 < 4; r5++) { if (r2 == gLinkPlayers[r5].id) a0[0] = r5; - else if (r5 != gBattleStruct->field_B5) + else if (r5 != gBattleStruct->multiplayerId) a1[_optimized_out++] = r5; } } diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 6dd743176..5ab38e461 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -211,7 +211,7 @@ static bool8 LoadBattlerSpriteGfx(u8 battler) } else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, battler); - else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. + else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. DecompressTrainerBackPalette(5, battler); else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); @@ -256,7 +256,7 @@ static void CreateBattlerSprite(u8 battler) gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; } - else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) + else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) { SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(0)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, @@ -292,7 +292,7 @@ static void CreateHealthboxSprite(u8 battler) if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) healthboxSpriteId = CreateSafariPlayerHealthboxSprites(); - else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) + else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) return; else healthboxSpriteId = CreateBattlerHealthboxSprites(battler); diff --git a/src/scrcmd.c b/src/scrcmd.c index be8e328db..9675a132e 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1916,7 +1916,7 @@ bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); + ctx->comparisonResult = HasTrainerBeenFought(index); return FALSE; } diff --git a/src/start_menu.c b/src/start_menu.c index 221ae1f1f..dddb5f44e 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -392,7 +392,7 @@ void ShowStartMenu(void) { if (!IsUpdateLinkStateCBActive()) { - player_bitmagic(); + FreezeEventObjects(); sub_805C270(); sub_805C780(); } diff --git a/src/teachy_tv.c b/src/teachy_tv.c index c1d6dc6c8..e33cb9d2e 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -1214,7 +1214,7 @@ static void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId) case 1: if (BT_IsDone()) { - SetMainCallback2(sub_800FD9C); + SetMainCallback2(CB2_InitBattle); DestroyTask(taskId); } break; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 5acac299f..cd796bf3a 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -940,7 +940,7 @@ static void sub_815E124(u8 taskId) { gMain.savedCallback = sub_815E114; CleanupOverworldWindowsAndTilemaps(); - SetMainCallback2(sub_800FD9C); + SetMainCallback2(CB2_InitBattle); DestroyTask(taskId); } } diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c index f2cb1764f..ef21d19d0 100644 --- a/src/unk_8159F40.c +++ b/src/unk_8159F40.c @@ -177,7 +177,7 @@ void sub_815A008(struct QuestLog * questLog) questLog->unk_008[i].mapobj_bit_24 = gMapObjects[i].mapobj_bit_24; questLog->unk_008[i].mapobj_bit_25 = gMapObjects[i].mapobj_bit_25; questLog->unk_008[i].mapobj_bit_26 = gMapObjects[i].mapobj_bit_26; - questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].mapobj_unk_18; + questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].facingDirection; questLog->unk_008[i].mapobj_unk_0B_0 = gMapObjects[i].mapobj_unk_0B_0; questLog->unk_008[i].elevation = gMapObjects[i].elevation; questLog->unk_008[i].graphicsId = gMapObjects[i].graphicsId; @@ -222,7 +222,7 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct MapObjectTemplat gMapObjects[i].mapobj_bit_24 = questLogMapObjects[i].mapobj_bit_24; gMapObjects[i].mapobj_bit_25 = questLogMapObjects[i].mapobj_bit_25; gMapObjects[i].mapobj_bit_26 = questLogMapObjects[i].mapobj_bit_26; - gMapObjects[i].mapobj_unk_18 = questLogMapObjects[i].mapobj_unk_18; + gMapObjects[i].facingDirection = questLogMapObjects[i].mapobj_unk_18; gMapObjects[i].mapobj_unk_0B_0 = questLogMapObjects[i].mapobj_unk_0B_0; gMapObjects[i].elevation = questLogMapObjects[i].elevation; gMapObjects[i].graphicsId = questLogMapObjects[i].graphicsId; diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 6ae92236f..9a8ff5dd6 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -628,7 +628,7 @@ void sub_810C444(void) mapObject = &gMapObjects[sp0]; if (sub_810CF04(sp0) == TRUE) { - npc_set_running_behaviour_etc(mapObject, r6); + SetTrainerMovementType(mapObject, r6); } templates[i].movementType = r6; } @@ -766,7 +766,7 @@ static void sub_810C594(void) { gSprites[mapObject->spriteId].pos2.x = 0; gSprites[mapObject->spriteId].pos2.y = 0; - npc_set_running_behaviour_etc(mapObject, r3); + SetTrainerMovementType(mapObject, r3); } } } @@ -931,7 +931,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0) if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[vsSeekerIdx]) == 1) { r8 = sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx; - if (!HasTrainerAlreadyBeenFought(r8)) + if (!HasTrainerBeenFought(r8)) { StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], gUnknown_8453F60); sVsSeeker->trainerHasNotYetBeenFought = 1; @@ -1027,7 +1027,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0) "\tadds r0, r5\n" "\tldrh r0, [r0, 0x4]\n" "\tmov r8, r0\n" - "\tbl HasTrainerAlreadyBeenFought\n" + "\tbl HasTrainerBeenFought\n" "\tlsls r0, 24\n" "\tcmp r0, 0\n" "\tbne _0810CA20\n" @@ -1239,10 +1239,10 @@ void sub_810CB90(void) TryGetFieldObjectIdByLocalIdAndMap(r4[r8].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0); r4_2 = &gMapObjects[sp0]; sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual. - sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->mapobj_unk_18]); + sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->facingDirection]); gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0; if (gSelectedEventObject == sp0) - r4_2->animPattern = gUnknown_8453F67[r4_2->mapobj_unk_18]; + r4_2->animPattern = gUnknown_8453F67[r4_2->facingDirection]; else r4_2->animPattern = 0x08; } @@ -1319,7 +1319,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData if (rematchIdx == -1) return FALSE; - if (!HasTrainerAlreadyBeenFought(vsSeekerData[rematchIdx].trainerIdxs[0])) + if (!HasTrainerBeenFought(vsSeekerData[rematchIdx].trainerIdxs[0])) return FALSE; return TRUE; } @@ -1327,7 +1327,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData void sub_810CDE8(void) { gSaveBlock1Ptr->trainerRematches[gSpecialVar_LastTalked] = 0; - sub_80803FC(); + SetBattledTrainerFlag(); } static s32 sub_810CE10(const VsSeekerData * a0, u16 a1) @@ -1353,7 +1353,7 @@ static s32 sub_810CE10(const VsSeekerData * a0, u16 a1) return -1; } -s32 sub_810CE64(u16 a0) +s32 GetRematchTrainerId(u16 a0) { u8 i; u8 j; @@ -1529,7 +1529,7 @@ static u8 GetNextAvailableRematchTrainer(const VsSeekerData * vsSeekerData, u16 return j - 1; if (vsSeekerData[i].trainerIdxs[j] == 0xffff) continue; - if (HasTrainerAlreadyBeenFought(vsSeekerData[i].trainerIdxs[j])) + if (HasTrainerBeenFought(vsSeekerData[i].trainerIdxs[j])) continue; return j; } @@ -1550,7 +1550,7 @@ static u8 GetRematchableTrainerLocalId(void) { if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1) { - if (HasTrainerAlreadyBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[i].trainerIdx, &idx)) + if (HasTrainerBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[i].trainerIdx, &idx)) return sVsSeeker->trainerInfo[i].localId; } } @@ -1599,7 +1599,7 @@ static void StartAllRespondantIdleMovements(void) struct MapObject *r4 = &gMapObjects[sVsSeeker->trainerInfo[j].fieldObjectId]; if (sub_810CF04(sVsSeeker->trainerInfo[j].fieldObjectId) == 1) - npc_set_running_behaviour_etc(r4, sVsSeeker->runningBehaviourEtcArray[i]); + SetTrainerMovementType(r4, sVsSeeker->runningBehaviourEtcArray[i]); sub_805FE7C(r4, sVsSeeker->runningBehaviourEtcArray[i]); gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[j].trainerIdx, &dummy); } diff --git a/sym_common.txt b/sym_common.txt index d9f2b1586..79ccc190d 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -5,35 +5,8 @@ .include "text.o" .include "sprite.o" .include "link.o" - .align 4 -gPreBattleCallback1: @ 3004F80 - .space 0x4 - -gBattleMainFunc: @ 3004F84 - .space 0xC - -gBattleResults: @ 3004F90 - .space 0x44 - -gLeveledUpInBattle: @ 3004FD4 - .space 0xC - -gBattlerControllerFuncs: @ 3004FE0 - .space 0x10 - -gHealthboxSpriteIds: @ 3004FF0 - .space 0x4 - -gMultiUsePlayerCursor: @ 3004FF4 - .space 0x4 - -gNumberOfMovesToChoose: @ 3004FF8 - .space 0x4 - -gUnknown_3004FFC: @ 3004FFC - .space 0x4 - + .include "battle_main.o" .include "random.o" .include "load_save.o" @@ -122,7 +95,7 @@ gUnknown_3005354: @ 3005354 .align 2 .include "field_specials.o" -gUnknown_300537C: @ 300537C +gCB2_AfterEvolution: @ 300537C .space 0x4 .include "save.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 55df8793e..77acf5657 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -19,357 +19,7 @@ @ .include "src/link_rfu.o" .include "src/battle_controllers.o" - -gBattle_BG0_X: @ 2022974 - .space 0x2 - -gBattle_BG0_Y: @ 2022976 - .space 0x2 - -gBattle_BG1_X: @ 2022978 - .space 0x2 - -gBattle_BG1_Y: @ 202297A - .space 0x2 - -gBattle_BG2_X: @ 202297C - .space 0x2 - -gBattle_BG2_Y: @ 202297E - .space 0x2 - -gBattle_BG3_X: @ 2022980 - .space 0x2 - -gBattle_BG3_Y: @ 2022982 - .space 0x2 - -gBattle_WIN0H: @ 2022984 - .space 0x2 - -gBattle_WIN0V: @ 2022986 - .space 0x2 - -gUnknown_2022988: @ 2022988 - .space 0x2 - -gUnknown_202298A: @ 202298A - .space 0x2 - -gDisplayedStringBattle: @ 202298C - .space 0x12C - -gBattleTextBuff1: @ 2022AB8 - .space 0x10 - -gBattleTextBuff2: @ 2022AC8 - .space 0x10 - -gBattleTextBuff3: @ 2022AD8 - .space 0x10 - -gUnknown_2022AE8: @ 2022AE8 - .space 0x64 - -gBattleTypeFlags: @ 2022B4C - .space 0x4 - -gBattleTerrain: @ 2022B50 - .space 0x4 - -gUnknown_2022B54: @ 2022B54 - .space 0x4 - -gUnknown_2022B58: @ 2022B58 - .space 0x60 - -gUnknown_2022BB8: @ 2022BB8 - .space 0x4 - -gUnknown_2022BBC: @ 2022BBC - .space 0x4 - -gUnknown_2022BC0: @ 2022BC0 - .space 0x4 - -gBattleBufferA: @ 2022BC4 - .space 0x2 - -gUnknown_2022BC6: @ 2022BC6 - .space 0x1 - -gUnknown_2022BC7: @ 2022BC7 - .space 0x1 - -gUnknown_2022BC8: @ 2022BC8 - .space 0x7FC - -gBattleBufferB: @ 20233C4 - .space 0x4 - -gUnknown_20233C8: @ 20233C8 - .space 0x7FC - -gActiveBattler: @ 2023BC4 - .space 0x4 - -gBattleControllerExecFlags: @ 2023BC8 - .space 0x4 - -gBattlersCount: @ 2023BCC - .space 0x2 - -gBattlerPartyIndexes: @ 2023BCE - .space 0x8 - -gBattlerPositions: @ 2023BD6 - .space 0x4 - -gActionsByTurnOrder: @ 2023BDA - .space 0x4 - -gBattlerByTurnOrder: @ 2023BDE - .space 0x4 - -gCurrentTurnActionNumber: @ 2023BE2 - .space 0x1 - -gCurrentActionFuncId: @ 2023BE3 - .space 0x1 - -gBattleMons: @ 2023BE4 - .space 0xC - -gUnknown_2023BF0: @ 2023BF0 - .space 0xC - -gUnknown_2023BFC: @ 2023BFC - .space 0xC - -gUnknown_2023C08: @ 2023C08 - .space 0x4 - -gUnknown_2023C0C: @ 2023C0C - .space 0x24 - -gUnknown_2023C30: @ 2023C30 - .space 0x4 - -gUnknown_2023C34: @ 2023C34 - .space 0x110 - -gBattlerSpriteIds: @ 2023D44 - .space 0x4 - -gCurrMovePos: @ 2023D48 - .space 0x1 - -gChosenMovePos: @ 2023D49 - .space 0x1 - -gCurrentMove: @ 2023D4A - .space 0x2 - -gChosenMove: @ 2023D4C - .space 0x2 - -gCalledMove: @ 2023D4E - .space 0x2 - -gBattleMoveDamage: @ 2023D50 - .space 0x4 - -gHpDealt: @ 2023D54 - .space 0x4 - -gTakenDmg: @ 2023D58 - .space 0x10 - -gLastUsedItem: @ 2023D68 - .space 0x2 - -gLastUsedAbility: @ 2023D6A - .space 0x1 - -gBattlerAttacker: @ 2023D6B - .space 0x1 - -gBattlerTarget: @ 2023D6C - .space 0x1 - -gBattlerFainted: @ 2023D6D - .space 0x1 - -gEffectBattler: @ 2023D6E - .space 0x1 - -gPotentialItemEffectBattler: @ 2023D6F - .space 0x1 - -gAbsentBattlerFlags: @ 2023D70 - .space 0x1 - -gCritMultiplier: @ 2023D71 - .space 0x1 - -gMultiHitCounter: @ 2023D72 - .space 0x2 - -gBattlescriptCurrInstr: @ 2023D74 - .space 0x8 - -gChosenActionByBattler: @ 2023D7C - .space 0x4 - -gSelectionBattleScripts: @ 2023D80 - .space 0x10 - -gLastPrintedMoves: @ 2023D90 - .space 0x8 - -gLastMoves: @ 2023D98 - .space 0x8 - -gLastLandedMoves: @ 2023DA0 - .space 0x8 - -gLastHitByType: @ 2023DA8 - .space 0x8 - -gLastResultingMoves: @ 2023DB0 - .space 0x8 - -gLockedMoves: @ 2023DB8 - .space 0x8 - -gLastHitBy: @ 2023DC0 - .space 0x4 - -gChosenMoveByBattler: @ 2023DC4 - .space 0x8 - -gMoveResultFlags: @ 2023DCC - .space 0x4 - -gHitMarker: @ 2023DD0 - .space 0x4 - -gUnknown_2023DD4: @ 2023DD4 - .space 0x4 - -gTakenDmgByBattler: @ 2023DD8 - .space 0x4 - -gUnknown_2023DDC: @ 2023DDC - .space 0x2 - -gSideStatuses: @ 2023DDE - .space 0x6 - -gSideTimers: @ 2023DE4 - .space 0x18 - -gStatuses3: @ 2023DFC - .space 0x10 - -gDisableStructs: @ 2023E0C - .space 0x70 - -gPauseCounterBattle: @ 2023E7C - .space 0x2 - -gPaydayMoney: @ 2023E7E - .space 0x2 - -gUnknown_2023E80: @ 2023E80 - .space 0x2 - -gBattleCommunication: @ 2023E82 - .space 0x1 - -gUnknown_2023E83: @ 2023E83 - .space 0x7 - -gBattleOutcome: @ 2023E8A - .space 0x2 - -gProtectStructs: @ 2023E8C - .space 0x40 - -gSpecialStatuses: @ 2023ECC - .space 0x50 - -gBattleWeather: @ 2023F1C - .space 0x4 - -gWishFutureKnock: @ 2023F20 - .space 0x2C - -gIntroSlideFlags: @ 2023F4C - .space 0x2 - -gSentPokesToOpponent: @ 2023F4E - .space 0x2 - -gDynamicBasePower: @ 2023F50 - .space 0x2 - -gExpShareExp: @ 2023F52 - .space 0x2 - -gEnigmaBerries: @ 2023F54 - .space 0x70 - -gBattleScripting: @ 2023FC4 - .space 0x4 - -gUnknown_2023FC8: @ 2023FC8 - .space 0x20 - -gBattleStruct: @ 2023FE8 - .space 0x4 - -gLinkBattleSendBuffer: @ 2023FEC - .space 0x4 - -gLinkBattleRecvBuffer: @ 2023FF0 - .space 0x4 - -gBattleResources: @ 2023FF4 - .space 0x4 - -gActionSelectionCursor: @ 2023FF8 - .space 0x4 - -gMoveSelectionCursor: @ 2023FFC - .space 0x4 - -gBattlerStatusSummaryTaskId: @ 2024000 - .space 0x4 - -gBattlerInMenuId: @ 2024004 - .space 0x1 - -gDoingBattleAnim: @ 2024005 - .space 0x3 - -gTransformedPersonalities: @ 2024008 - .space 0x10 - -gBattleSpritesDataPtr: @ 2024018 - .space 0x4 - -gMonSpritesGfxPtr: @ 202401C - .space 0x4 - -gBattleMovePower: @ 2024020 - .space 0x2 - -gMoveToLearn: @ 2024022 - .space 0x2 - -gBattleMonForms: @ 2024024 - .space 0x4 + .include "src/battle_main.o" sLearningMoveTableID: @ 2024028 .space 0x1 @@ -616,35 +266,8 @@ gUnknown_20386A4: @ 20386A4 gUnknown_20386A8: @ 20386A8 .space 0x4 -gUnknown_20386AC: @ 20386AC - .space 0x2 - -gTrainerBattleOpponent_A: @ 20386AE - .space 0x2 - -gUnknown_20386B0: @ 20386B0 - .space 0x4 - -gUnknown_20386B4: @ 20386B4 - .space 0x4 - -gUnknown_20386B8: @ 20386B8 - .space 0x4 - -gUnknown_20386BC: @ 20386BC - .space 0x4 - -gUnknown_20386C0: @ 20386C0 - .space 0x4 - -gUnknown_20386C4: @ 20386C4 - .space 0x4 - -gUnknown_20386C8: @ 20386C8 - .space 0x4 - -gUnknown_20386CC: @ 20386CC - .space 0x4 + .include "src/battle_setup.o" + .align 2 gUnknown_20386D0: @ 20386D0 .space 0xC |